diff --git a/.editorconfig b/.editorconfig new file mode 100755 index 0000000..d6a08a1 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,15 @@ +# top-most EditorConfig file +root = true + +# Unix-style newlines with a newline ending every file +[*] +end_of_line = lf +insert_final_newline = true + +# Matches multiple files with brace expansion notation +# Set default charset +[*] +charset = utf-8 + +# Tab indentation (no size specified) +indent_style = tab diff --git a/.gitignore b/.gitignore new file mode 100755 index 0000000..e9a3b23 --- /dev/null +++ b/.gitignore @@ -0,0 +1,32 @@ +.DS_Store + +application/cache/* +!application/cache/index.html + +application/logs/* +!application/logs/index.html + +!application/*/.htaccess + +composer.lock +tests/mocks/database/ci_test.sqlite + +user_guide_src/build/* +user_guide_src/cilexer/build/* +user_guide_src/cilexer/dist/* +user_guide_src/cilexer/pycilexer.egg-info/* +/vendor/ + +# IDE Files +#------------------------- +/nbproject/ +.idea/* + +## Sublime Text cache files +*.tmlanguage.cache +*.tmPreferences.cache +*.stTheme.cache +*.sublime-workspace +*.sublime-project +/tests/tests/ +/tests/results/ diff --git a/.htaccess b/.htaccess new file mode 100755 index 0000000..eedac10 --- /dev/null +++ b/.htaccess @@ -0,0 +1,15 @@ + + + RewriteEngine on + RewriteCond %{REQUEST_FILENAME} !-f + RewriteCond %{REQUEST_FILENAME} !-d + + + RewriteRule ^(.*)$ index.php/$1 [L] + + + + RewriteRule ^(.*)$ index.php?/$1 [L] + + + \ No newline at end of file diff --git a/application/.htaccess b/application/.htaccess new file mode 100755 index 0000000..83097d2 --- /dev/null +++ b/application/.htaccess @@ -0,0 +1,6 @@ + + Require all denied + + + Deny from all + \ No newline at end of file diff --git a/application/cache/index.html b/application/cache/index.html new file mode 100755 index 0000000..b48b490 --- /dev/null +++ b/application/cache/index.html @@ -0,0 +1,11 @@ + + + + 403 Forbidden + + + +

Directory access is forbidden.

+ + + diff --git a/application/config/autoload.php b/application/config/autoload.php new file mode 100755 index 0000000..dd4098c --- /dev/null +++ b/application/config/autoload.php @@ -0,0 +1,135 @@ + 'ua'); +*/ +$autoload['libraries'] = array(); + +/* +| ------------------------------------------------------------------- +| Auto-load Drivers +| ------------------------------------------------------------------- +| These classes are located in system/libraries/ or in your +| application/libraries/ directory, but are also placed inside their +| own subdirectory and they extend the CI_Driver_Library class. They +| offer multiple interchangeable driver options. +| +| Prototype: +| +| $autoload['drivers'] = array('cache'); +| +| You can also supply an alternative property name to be assigned in +| the controller: +| +| $autoload['drivers'] = array('cache' => 'cch'); +| +*/ +$autoload['drivers'] = array(); + +/* +| ------------------------------------------------------------------- +| Auto-load Helper Files +| ------------------------------------------------------------------- +| Prototype: +| +| $autoload['helper'] = array('url', 'file'); +*/ +$autoload['helper'] = array(); + +/* +| ------------------------------------------------------------------- +| Auto-load Config files +| ------------------------------------------------------------------- +| Prototype: +| +| $autoload['config'] = array('config1', 'config2'); +| +| NOTE: This item is intended for use ONLY if you have created custom +| config files. Otherwise, leave it blank. +| +*/ +$autoload['config'] = array(); + +/* +| ------------------------------------------------------------------- +| Auto-load Language files +| ------------------------------------------------------------------- +| Prototype: +| +| $autoload['language'] = array('lang1', 'lang2'); +| +| NOTE: Do not include the "_lang" part of your file. For example +| "codeigniter_lang.php" would be referenced as array('codeigniter'); +| +*/ +$autoload['language'] = array(); + +/* +| ------------------------------------------------------------------- +| Auto-load Models +| ------------------------------------------------------------------- +| Prototype: +| +| $autoload['model'] = array('first_model', 'second_model'); +| +| You can also supply an alternative model name to be assigned +| in the controller: +| +| $autoload['model'] = array('first_model' => 'first'); +*/ +$autoload['model'] = array(); diff --git a/application/config/config.php b/application/config/config.php new file mode 100755 index 0000000..bb2aeec --- /dev/null +++ b/application/config/config.php @@ -0,0 +1,537 @@ +]+$/i +| +| DO NOT CHANGE THIS UNLESS YOU FULLY UNDERSTAND THE REPERCUSSIONS!! +| +*/ +$config['permitted_uri_chars'] = 'a-z 0-9~%.:_\-'; + +/* +|-------------------------------------------------------------------------- +| Enable Query Strings +|-------------------------------------------------------------------------- +| +| By default CodeIgniter uses search-engine friendly segment based URLs: +| example.com/who/what/where/ +| +| You can optionally enable standard query string based URLs: +| example.com?who=me&what=something&where=here +| +| Options are: TRUE or FALSE (boolean) +| +| The other items let you set the query string 'words' that will +| invoke your controllers and its functions: +| example.com/index.php?c=controller&m=function +| +| Please note that some of the helpers won't work as expected when +| this feature is enabled, since CodeIgniter is designed primarily to +| use segment based URLs. +| +*/ +$config['enable_query_strings'] = FALSE; +$config['controller_trigger'] = 'c'; +$config['function_trigger'] = 'm'; +$config['directory_trigger'] = 'd'; + +/* +|-------------------------------------------------------------------------- +| Allow $_GET array +|-------------------------------------------------------------------------- +| +| By default CodeIgniter enables access to the $_GET array. If for some +| reason you would like to disable it, set 'allow_get_array' to FALSE. +| +| WARNING: This feature is DEPRECATED and currently available only +| for backwards compatibility purposes! +| +*/ +$config['allow_get_array'] = TRUE; + +/* +|-------------------------------------------------------------------------- +| Error Logging Threshold +|-------------------------------------------------------------------------- +| +| You can enable error logging by setting a threshold over zero. The +| threshold determines what gets logged. Threshold options are: +| +| 0 = Disables logging, Error logging TURNED OFF +| 1 = Error Messages (including PHP errors) +| 2 = Debug Messages +| 3 = Informational Messages +| 4 = All Messages +| +| You can also pass an array with threshold levels to show individual error types +| +| array(2) = Debug Messages, without Error Messages +| +| For a live site you'll usually only enable Errors (1) to be logged otherwise +| your log files will fill up very fast. +| +*/ +$config['log_threshold'] = 1; + +/* +|-------------------------------------------------------------------------- +| Error Logging Directory Path +|-------------------------------------------------------------------------- +| +| Leave this BLANK unless you would like to set something other than the default +| application/logs/ directory. Use a full server path with trailing slash. +| +*/ +$config['log_path'] = ''; + +/* +|-------------------------------------------------------------------------- +| Log File Extension +|-------------------------------------------------------------------------- +| +| The default filename extension for log files. The default 'php' allows for +| protecting the log files via basic scripting, when they are to be stored +| under a publicly accessible directory. +| +| Note: Leaving it blank will default to 'php'. +| +*/ +$config['log_file_extension'] = ''; + +/* +|-------------------------------------------------------------------------- +| Log File Permissions +|-------------------------------------------------------------------------- +| +| The file system permissions to be applied on newly created log files. +| +| IMPORTANT: This MUST be an integer (no quotes) and you MUST use octal +| integer notation (i.e. 0700, 0644, etc.) +*/ +$config['log_file_permissions'] = 0644; + +/* +|-------------------------------------------------------------------------- +| Date Format for Logs +|-------------------------------------------------------------------------- +| +| Each item that is logged has an associated date. You can use PHP date +| codes to set your own date formatting +| +*/ +$config['log_date_format'] = 'Y-m-d H:i:s'; + +/* +|-------------------------------------------------------------------------- +| Error Views Directory Path +|-------------------------------------------------------------------------- +| +| Leave this BLANK unless you would like to set something other than the default +| application/views/errors/ directory. Use a full server path with trailing slash. +| +*/ +$config['error_views_path'] = ''; + +/* +|-------------------------------------------------------------------------- +| Cache Directory Path +|-------------------------------------------------------------------------- +| +| Leave this BLANK unless you would like to set something other than the default +| application/cache/ directory. Use a full server path with trailing slash. +| +*/ +$config['cache_path'] = ''; + +/* +|-------------------------------------------------------------------------- +| Cache Include Query String +|-------------------------------------------------------------------------- +| +| Whether to take the URL query string into consideration when generating +| output cache files. Valid options are: +| +| FALSE = Disabled +| TRUE = Enabled, take all query parameters into account. +| Please be aware that this may result in numerous cache +| files generated for the same page over and over again. +| array('q') = Enabled, but only take into account the specified list +| of query parameters. +| +*/ +$config['cache_query_string'] = FALSE; + +/* +|-------------------------------------------------------------------------- +| Encryption Key +|-------------------------------------------------------------------------- +| +| If you use the Encryption class, you must set an encryption key. +| See the user guide for more info. +| +| https://codeigniter.com/userguide3/libraries/encryption.html +| +*/ +$config['encryption_key'] = ''; + +/* +|-------------------------------------------------------------------------- +| Session Variables +|-------------------------------------------------------------------------- +| +| 'sess_driver' +| +| The storage driver to use: files, database, redis, memcached +| +| 'sess_cookie_name' +| +| The session cookie name, must contain only [0-9a-z_-] characters +| +| 'sess_samesite' +| +| Session cookie SameSite attribute: Lax (default), Strict or None +| +| 'sess_expiration' +| +| The number of SECONDS you want the session to last. +| Setting to 0 (zero) means expire when the browser is closed. +| +| 'sess_save_path' +| +| The location to save sessions to, driver dependent. +| +| For the 'files' driver, it's a path to a writable directory. +| WARNING: Only absolute paths are supported! +| +| For the 'database' driver, it's a table name. +| Please read up the manual for the format with other session drivers. +| +| IMPORTANT: You are REQUIRED to set a valid save path! +| +| 'sess_match_ip' +| +| Whether to match the user's IP address when reading the session data. +| +| WARNING: If you're using the database driver, don't forget to update +| your session table's PRIMARY KEY when changing this setting. +| +| 'sess_time_to_update' +| +| How many seconds between CI regenerating the session ID. +| +| 'sess_regenerate_destroy' +| +| Whether to destroy session data associated with the old session ID +| when auto-regenerating the session ID. When set to FALSE, the data +| will be later deleted by the garbage collector. +| +| Other session cookie settings are shared with the rest of the application, +| except for 'cookie_prefix' and 'cookie_httponly', which are ignored here. +| +*/ +$config['sess_driver'] = 'files'; +$config['sess_cookie_name'] = 'ci_session'; +$config['sess_samesite'] = 'Lax'; +$config['sess_expiration'] = 7200; +$config['sess_save_path'] = NULL; +$config['sess_match_ip'] = FALSE; +$config['sess_time_to_update'] = 300; +$config['sess_regenerate_destroy'] = FALSE; + +/* +|-------------------------------------------------------------------------- +| Cookie Related Variables +|-------------------------------------------------------------------------- +| +| 'cookie_prefix' = Set a cookie name prefix if you need to avoid collisions +| 'cookie_domain' = Set to .your-domain.com for site-wide cookies +| 'cookie_path' = Typically will be a forward slash +| 'cookie_secure' = Cookie will only be set if a secure HTTPS connection exists. +| 'cookie_httponly' = Cookie will only be accessible via HTTP(S) (no javascript) +| 'cookie_samesite' = Cookie's samesite attribute (Lax, Strict or None) +| +| Note: These settings (with the exception of 'cookie_prefix' and +| 'cookie_httponly') will also affect sessions. +| +*/ +$config['cookie_prefix'] = ''; +$config['cookie_domain'] = ''; +$config['cookie_path'] = '/'; +$config['cookie_secure'] = FALSE; +$config['cookie_httponly'] = FALSE; +$config['cookie_samesite'] = 'Lax'; + +/* +|-------------------------------------------------------------------------- +| Standardize newlines +|-------------------------------------------------------------------------- +| +| Determines whether to standardize newline characters in input data, +| meaning to replace \r\n, \r, \n occurrences with the PHP_EOL value. +| +| WARNING: This feature is DEPRECATED and currently available only +| for backwards compatibility purposes! +| +*/ +$config['standardize_newlines'] = FALSE; + +/* +|-------------------------------------------------------------------------- +| Global XSS Filtering +|-------------------------------------------------------------------------- +| +| Determines whether the XSS filter is always active when GET, POST or +| COOKIE data is encountered +| +| WARNING: This feature is DEPRECATED and currently available only +| for backwards compatibility purposes! +| +*/ +$config['global_xss_filtering'] = TRUE; + +/* +|-------------------------------------------------------------------------- +| Cross Site Request Forgery +|-------------------------------------------------------------------------- +| Enables a CSRF cookie token to be set. When set to TRUE, token will be +| checked on a submitted form. If you are accepting user data, it is strongly +| recommended CSRF protection be enabled. +| +| 'csrf_token_name' = The token name +| 'csrf_cookie_name' = The cookie name +| 'csrf_expire' = The number in seconds the token should expire. +| 'csrf_regenerate' = Regenerate token on every submission +| 'csrf_exclude_uris' = Array of URIs which ignore CSRF checks +*/ +$config['csrf_protection'] = FALSE; +$config['csrf_token_name'] = 'csrf_test_name'; +$config['csrf_cookie_name'] = 'csrf_cookie_name'; +$config['csrf_expire'] = 7200; +$config['csrf_regenerate'] = TRUE; +$config['csrf_exclude_uris'] = array(); + +/* +|-------------------------------------------------------------------------- +| Output Compression +|-------------------------------------------------------------------------- +| +| Enables Gzip output compression for faster page loads. When enabled, +| the output class will test whether your server supports Gzip. +| Even if it does, however, not all browsers support compression +| so enable only if you are reasonably sure your visitors can handle it. +| +| Only used if zlib.output_compression is turned off in your php.ini. +| Please do not use it together with httpd-level output compression. +| +| VERY IMPORTANT: If you are getting a blank page when compression is enabled it +| means you are prematurely outputting something to your browser. It could +| even be a line of whitespace at the end of one of your scripts. For +| compression to work, nothing can be sent before the output buffer is called +| by the output class. Do not 'echo' any values with compression enabled. +| +*/ +$config['compress_output'] = FALSE; + +/* +|-------------------------------------------------------------------------- +| Master Time Reference +|-------------------------------------------------------------------------- +| +| Options are 'local' or any PHP supported timezone. This preference tells +| the system whether to use your server's local time as the master 'now' +| reference, or convert it to the configured one timezone. See the 'date +| helper' page of the user guide for information regarding date handling. +| +*/ +$config['time_reference'] = 'local'; + +/* +|-------------------------------------------------------------------------- +| Rewrite PHP Short Tags +|-------------------------------------------------------------------------- +| +| If your PHP installation does not have short tag support enabled CI +| can rewrite the tags on-the-fly, enabling you to utilize that syntax +| in your view files. Options are TRUE or FALSE (boolean) +| +| Note: You need to have eval() enabled for this to work. +| +*/ +$config['rewrite_short_tags'] = FALSE; + +/* +|-------------------------------------------------------------------------- +| Reverse Proxy IPs +|-------------------------------------------------------------------------- +| +| If your server is behind a reverse proxy, you must whitelist the proxy +| IP addresses from which CodeIgniter should trust headers such as +| HTTP_X_FORWARDED_FOR and HTTP_CLIENT_IP in order to properly identify +| the visitor's IP address. +| +| You can use both an array or a comma-separated list of proxy addresses, +| as well as specifying whole subnets. Here are a few examples: +| +| Comma-separated: '10.0.1.200,192.168.5.0/24' +| Array: array('10.0.1.200', '192.168.5.0/24') +*/ +$config['proxy_ips'] = ''; diff --git a/application/config/constants.php b/application/config/constants.php new file mode 100755 index 0000000..9b667b0 --- /dev/null +++ b/application/config/constants.php @@ -0,0 +1,85 @@ +db->last_query() and profiling of DB queries. +| When you run a query, with this setting set to TRUE (default), +| CodeIgniter will store the SQL statement for debugging purposes. +| However, this may cause high memory usage, especially if you run +| a lot of SQL queries ... disable this to avoid that problem. +| +| The $active_group variable lets you choose which connection group to +| make active. By default there is only one group (the 'default' group). +| +| The $query_builder variables lets you determine whether or not to load +| the query builder class. +*/ +$active_group = 'default'; +$query_builder = TRUE; + +$db['default'] = array( + 'dsn' => '', + 'hostname' => 'localhost', + //'username' => 'root', + 'username' => 'gzsgtetc_beve', + //'password' => '', + 'password' => 'v6B5YzhHDks#', + //'database' => 'studiobeve', + 'database' => 'gzsgtetc_studiobeve', + 'dbdriver' => 'mysqli', + 'dbprefix' => '', + 'pconnect' => FALSE, + 'db_debug' => (ENVIRONMENT !== 'production'), + 'cache_on' => FALSE, + 'cachedir' => '', + 'char_set' => 'utf8', + 'dbcollat' => 'utf8_general_ci', + 'swap_pre' => '', + 'encrypt' => FALSE, + 'compress' => FALSE, + 'stricton' => FALSE, + 'failover' => array(), + 'save_queries' => TRUE +); diff --git a/application/config/doctypes.php b/application/config/doctypes.php new file mode 100755 index 0000000..f95451b --- /dev/null +++ b/application/config/doctypes.php @@ -0,0 +1,24 @@ + '', + 'xhtml1-strict' => '', + 'xhtml1-trans' => '', + 'xhtml1-frame' => '', + 'xhtml-basic11' => '', + 'html5' => '', + 'html4-strict' => '', + 'html4-trans' => '', + 'html4-frame' => '', + 'mathml1' => '', + 'mathml2' => '', + 'svg10' => '', + 'svg11' => '', + 'svg11-basic' => '', + 'svg11-tiny' => '', + 'xhtml-math-svg-xh' => '', + 'xhtml-math-svg-sh' => '', + 'xhtml-rdfa-1' => '', + 'xhtml-rdfa-2' => '' +); diff --git a/application/config/foreign_chars.php b/application/config/foreign_chars.php new file mode 100755 index 0000000..520f35d --- /dev/null +++ b/application/config/foreign_chars.php @@ -0,0 +1,114 @@ + 'ae', + '/ö|œ/' => 'oe', + '/ü/' => 'ue', + '/Ä/' => 'Ae', + '/Ü/' => 'Ue', + '/Ö/' => 'Oe', + '/À|Á|Â|Ã|Ä|Å|Ǻ|Ā|Ă|Ą|Ǎ|Α|Ά|Ả|Ạ|Ầ|Ẫ|Ẩ|Ậ|Ằ|Ắ|Ẵ|Ẳ|Ặ|А/' => 'A', + '/à|á|â|ã|å|ǻ|ā|ă|ą|ǎ|ª|α|ά|ả|ạ|ầ|ấ|ẫ|ẩ|ậ|ằ|ắ|ẵ|ẳ|ặ|а/' => 'a', + '/Б/' => 'B', + '/б/' => 'b', + '/Ç|Ć|Ĉ|Ċ|Č/' => 'C', + '/ç|ć|ĉ|ċ|č/' => 'c', + '/Д|Δ/' => 'D', + '/д|δ/' => 'd', + '/Ð|Ď|Đ/' => 'Dj', + '/ð|ď|đ/' => 'dj', + '/È|É|Ê|Ë|Ē|Ĕ|Ė|Ę|Ě|Ε|Έ|Ẽ|Ẻ|Ẹ|Ề|Ế|Ễ|Ể|Ệ|Е|Э/' => 'E', + '/è|é|ê|ë|ē|ĕ|ė|ę|ě|έ|ε|ẽ|ẻ|ẹ|ề|ế|ễ|ể|ệ|е|э/' => 'e', + '/Ф/' => 'F', + '/ф/' => 'f', + '/Ĝ|Ğ|Ġ|Ģ|Γ|Г|Ґ/' => 'G', + '/ĝ|ğ|ġ|ģ|γ|г|ґ/' => 'g', + '/Ĥ|Ħ/' => 'H', + '/ĥ|ħ/' => 'h', + '/Ì|Í|Î|Ï|Ĩ|Ī|Ĭ|Ǐ|Į|İ|Η|Ή|Ί|Ι|Ϊ|Ỉ|Ị|И|Ы/' => 'I', + '/ì|í|î|ï|ĩ|ī|ĭ|ǐ|į|ı|η|ή|ί|ι|ϊ|ỉ|ị|и|ы|ї/' => 'i', + '/Ĵ/' => 'J', + '/ĵ/' => 'j', + '/Θ/' => 'TH', + '/θ/' => 'th', + '/Ķ|Κ|К/' => 'K', + '/ķ|κ|к/' => 'k', + '/Ĺ|Ļ|Ľ|Ŀ|Ł|Λ|Л/' => 'L', + '/ĺ|ļ|ľ|ŀ|ł|λ|л/' => 'l', + '/М/' => 'M', + '/м/' => 'm', + '/Ñ|Ń|Ņ|Ň|Ν|Н/' => 'N', + '/ñ|ń|ņ|ň|ʼn|ν|н/' => 'n', + '/Ò|Ó|Ô|Õ|Ō|Ŏ|Ǒ|Ő|Ơ|Ø|Ǿ|Ο|Ό|Ω|Ώ|Ỏ|Ọ|Ồ|Ố|Ỗ|Ổ|Ộ|Ờ|Ớ|Ỡ|Ở|Ợ|О/' => 'O', + '/ò|ó|ô|õ|ō|ŏ|ǒ|ő|ơ|ø|ǿ|º|ο|ό|ω|ώ|ỏ|ọ|ồ|ố|ỗ|ổ|ộ|ờ|ớ|ỡ|ở|ợ|о/' => 'o', + '/П/' => 'P', + '/п/' => 'p', + '/Ŕ|Ŗ|Ř|Ρ|Р/' => 'R', + '/ŕ|ŗ|ř|ρ|р/' => 'r', + '/Ś|Ŝ|Ş|Ș|Š|Σ|С/' => 'S', + '/ś|ŝ|ş|ș|š|ſ|σ|ς|с/' => 's', + '/Ț|Ţ|Ť|Ŧ|Τ|Т/' => 'T', + '/ț|ţ|ť|ŧ|τ|т/' => 't', + '/Þ|þ/' => 'th', + '/Ù|Ú|Û|Ũ|Ū|Ŭ|Ů|Ű|Ų|Ư|Ǔ|Ǖ|Ǘ|Ǚ|Ǜ|Ũ|Ủ|Ụ|Ừ|Ứ|Ữ|Ử|Ự|У/' => 'U', + '/ù|ú|û|ũ|ū|ŭ|ů|ű|ų|ư|ǔ|ǖ|ǘ|ǚ|ǜ|υ|ύ|ϋ|ủ|ụ|ừ|ứ|ữ|ử|ự|у/' => 'u', + '/Ƴ|Ɏ|Ỵ|Ẏ|Ӳ|Ӯ|Ў|Ý|Ÿ|Ŷ|Υ|Ύ|Ϋ|Ỳ|Ỹ|Ỷ|Ỵ|Й/' => 'Y', + '/ẙ|ʏ|ƴ|ɏ|ỵ|ẏ|ӳ|ӯ|ў|ý|ÿ|ŷ|ỳ|ỹ|ỷ|ỵ|й/' => 'y', + '/В/' => 'V', + '/в/' => 'v', + '/Ŵ/' => 'W', + '/ŵ/' => 'w', + '/Φ/' => 'F', + '/φ/' => 'f', + '/Χ/' => 'CH', + '/χ/' => 'ch', + '/Ź|Ż|Ž|Ζ|З/' => 'Z', + '/ź|ż|ž|ζ|з/' => 'z', + '/Æ|Ǽ/' => 'AE', + '/ß/' => 'ss', + '/IJ/' => 'IJ', + '/ij/' => 'ij', + '/Œ/' => 'OE', + '/ƒ/' => 'f', + '/Ξ/' => 'KS', + '/ξ/' => 'ks', + '/Π/' => 'P', + '/π/' => 'p', + '/Β/' => 'V', + '/β/' => 'v', + '/Μ/' => 'M', + '/μ/' => 'm', + '/Ψ/' => 'PS', + '/ψ/' => 'ps', + '/Ё/' => 'Yo', + '/ё/' => 'yo', + '/Є/' => 'Ye', + '/є/' => 'ye', + '/Ї/' => 'Yi', + '/Ж/' => 'Zh', + '/ж/' => 'zh', + '/Х/' => 'Kh', + '/х/' => 'kh', + '/Ц/' => 'Ts', + '/ц/' => 'ts', + '/Ч/' => 'Ch', + '/ч/' => 'ch', + '/Ш/' => 'Sh', + '/ш/' => 'sh', + '/Щ/' => 'Shch', + '/щ/' => 'shch', + '/Ъ|ъ|Ь|ь/' => '', + '/Ю/' => 'Yu', + '/ю/' => 'yu', + '/Я/' => 'Ya', + '/я/' => 'ya' +); diff --git a/application/config/hooks.php b/application/config/hooks.php new file mode 100755 index 0000000..7bde890 --- /dev/null +++ b/application/config/hooks.php @@ -0,0 +1,13 @@ + + + + 403 Forbidden + + + +

Directory access is forbidden.

+ + + diff --git a/application/config/memcached.php b/application/config/memcached.php new file mode 100755 index 0000000..e710b17 --- /dev/null +++ b/application/config/memcached.php @@ -0,0 +1,19 @@ + array( + 'hostname' => '127.0.0.1', + 'port' => '11211', + 'weight' => '1', + ), +); diff --git a/application/config/migration.php b/application/config/migration.php new file mode 100755 index 0000000..e26f361 --- /dev/null +++ b/application/config/migration.php @@ -0,0 +1,84 @@ +migration->current() this is the version that schema will +| be upgraded / downgraded to. +| +*/ +$config['migration_version'] = 0; + +/* +|-------------------------------------------------------------------------- +| Migrations Path +|-------------------------------------------------------------------------- +| +| Path to your migrations folder. +| Typically, it will be within your application path. +| Also, writing permission is required within the migrations path. +| +*/ +$config['migration_path'] = APPPATH.'migrations/'; diff --git a/application/config/mimes.php b/application/config/mimes.php new file mode 100755 index 0000000..43e8630 --- /dev/null +++ b/application/config/mimes.php @@ -0,0 +1,186 @@ + array('application/mac-binhex40', 'application/mac-binhex', 'application/x-binhex40', 'application/x-mac-binhex40'), + 'cpt' => 'application/mac-compactpro', + 'csv' => array('text/x-comma-separated-values', 'text/comma-separated-values', 'application/octet-stream', 'application/vnd.ms-excel', 'application/x-csv', 'text/x-csv', 'text/csv', 'application/csv', 'application/excel', 'application/vnd.msexcel', 'text/plain'), + 'bin' => array('application/macbinary', 'application/mac-binary', 'application/octet-stream', 'application/x-binary', 'application/x-macbinary'), + 'dms' => 'application/octet-stream', + 'lha' => 'application/octet-stream', + 'lzh' => 'application/octet-stream', + 'exe' => array('application/octet-stream', 'application/x-msdownload'), + 'class' => 'application/octet-stream', + 'psd' => array('application/x-photoshop', 'image/vnd.adobe.photoshop'), + 'so' => 'application/octet-stream', + 'sea' => 'application/octet-stream', + 'dll' => 'application/octet-stream', + 'oda' => 'application/oda', + 'pdf' => array('application/pdf', 'application/force-download', 'application/x-download', 'binary/octet-stream'), + 'ai' => array('application/pdf', 'application/postscript'), + 'eps' => 'application/postscript', + 'ps' => 'application/postscript', + 'smi' => 'application/smil', + 'smil' => 'application/smil', + 'mif' => 'application/vnd.mif', + 'xls' => array('application/vnd.ms-excel', 'application/msexcel', 'application/x-msexcel', 'application/x-ms-excel', 'application/x-excel', 'application/x-dos_ms_excel', 'application/xls', 'application/x-xls', 'application/excel', 'application/download', 'application/vnd.ms-office', 'application/msword'), + 'ppt' => array('application/powerpoint', 'application/vnd.ms-powerpoint', 'application/vnd.ms-office', 'application/msword'), + 'pptx' => array('application/vnd.openxmlformats-officedocument.presentationml.presentation', 'application/x-zip', 'application/zip'), + 'wbxml' => 'application/wbxml', + 'wmlc' => 'application/wmlc', + 'dcr' => 'application/x-director', + 'dir' => 'application/x-director', + 'dxr' => 'application/x-director', + 'dvi' => 'application/x-dvi', + 'gtar' => 'application/x-gtar', + 'gz' => 'application/x-gzip', + 'gzip' => 'application/x-gzip', + 'php' => array('application/x-httpd-php', 'application/php', 'application/x-php', 'text/php', 'text/x-php', 'application/x-httpd-php-source'), + 'php4' => 'application/x-httpd-php', + 'php3' => 'application/x-httpd-php', + 'phtml' => 'application/x-httpd-php', + 'phps' => 'application/x-httpd-php-source', + 'js' => array('application/x-javascript', 'text/plain'), + 'swf' => 'application/x-shockwave-flash', + 'sit' => 'application/x-stuffit', + 'tar' => 'application/x-tar', + 'tgz' => array('application/x-tar', 'application/x-gzip-compressed'), + 'z' => 'application/x-compress', + 'xhtml' => 'application/xhtml+xml', + 'xht' => 'application/xhtml+xml', + 'zip' => array('application/x-zip', 'application/zip', 'application/x-zip-compressed', 'application/s-compressed', 'multipart/x-zip'), + 'rar' => array('application/x-rar', 'application/rar', 'application/x-rar-compressed'), + 'mid' => 'audio/midi', + 'midi' => 'audio/midi', + 'mpga' => 'audio/mpeg', + 'mp2' => 'audio/mpeg', + 'mp3' => array('audio/mpeg', 'audio/mpg', 'audio/mpeg3', 'audio/mp3'), + 'aif' => array('audio/x-aiff', 'audio/aiff'), + 'aiff' => array('audio/x-aiff', 'audio/aiff'), + 'aifc' => 'audio/x-aiff', + 'ram' => 'audio/x-pn-realaudio', + 'rm' => 'audio/x-pn-realaudio', + 'rpm' => 'audio/x-pn-realaudio-plugin', + 'ra' => 'audio/x-realaudio', + 'rv' => 'video/vnd.rn-realvideo', + 'wav' => array('audio/x-wav', 'audio/wave', 'audio/wav'), + 'bmp' => array('image/bmp', 'image/x-bmp', 'image/x-bitmap', 'image/x-xbitmap', 'image/x-win-bitmap', 'image/x-windows-bmp', 'image/ms-bmp', 'image/x-ms-bmp', 'application/bmp', 'application/x-bmp', 'application/x-win-bitmap'), + 'gif' => 'image/gif', + 'jpeg' => array('image/jpeg', 'image/pjpeg'), + 'jpg' => array('image/jpeg', 'image/pjpeg'), + 'jpe' => array('image/jpeg', 'image/pjpeg'), + 'jp2' => array('image/jp2', 'video/mj2', 'image/jpx', 'image/jpm'), + 'j2k' => array('image/jp2', 'video/mj2', 'image/jpx', 'image/jpm'), + 'jpf' => array('image/jp2', 'video/mj2', 'image/jpx', 'image/jpm'), + 'jpg2' => array('image/jp2', 'video/mj2', 'image/jpx', 'image/jpm'), + 'jpx' => array('image/jp2', 'video/mj2', 'image/jpx', 'image/jpm'), + 'jpm' => array('image/jp2', 'video/mj2', 'image/jpx', 'image/jpm'), + 'mj2' => array('image/jp2', 'video/mj2', 'image/jpx', 'image/jpm'), + 'mjp2' => array('image/jp2', 'video/mj2', 'image/jpx', 'image/jpm'), + 'png' => array('image/png', 'image/x-png'), + 'tiff' => 'image/tiff', + 'tif' => 'image/tiff', + 'heic' => 'image/heic', + 'heif' => 'image/heif', + 'css' => array('text/css', 'text/plain'), + 'html' => array('text/html', 'text/plain'), + 'htm' => array('text/html', 'text/plain'), + 'shtml' => array('text/html', 'text/plain'), + 'txt' => 'text/plain', + 'text' => 'text/plain', + 'log' => array('text/plain', 'text/x-log'), + 'rtx' => 'text/richtext', + 'rtf' => 'text/rtf', + 'xml' => array('application/xml', 'text/xml', 'text/plain'), + 'xsl' => array('application/xml', 'text/xsl', 'text/xml'), + 'mpeg' => 'video/mpeg', + 'mpg' => 'video/mpeg', + 'mpe' => 'video/mpeg', + 'qt' => 'video/quicktime', + 'mov' => 'video/quicktime', + 'avi' => array('video/x-msvideo', 'video/msvideo', 'video/avi', 'application/x-troff-msvideo'), + 'movie' => 'video/x-sgi-movie', + 'doc' => array('application/msword', 'application/vnd.ms-office'), + 'docx' => array('application/vnd.openxmlformats-officedocument.wordprocessingml.document', 'application/zip', 'application/msword', 'application/x-zip'), + 'dot' => array('application/msword', 'application/vnd.ms-office'), + 'dotx' => array('application/vnd.openxmlformats-officedocument.wordprocessingml.document', 'application/zip', 'application/msword'), + 'xlsx' => array('application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', 'application/zip', 'application/vnd.ms-excel', 'application/msword', 'application/x-zip'), + 'word' => array('application/msword', 'application/octet-stream'), + 'xl' => 'application/excel', + 'eml' => 'message/rfc822', + 'json' => array('application/json', 'text/json'), + 'pem' => array('application/x-x509-user-cert', 'application/x-pem-file', 'application/octet-stream'), + 'p10' => array('application/x-pkcs10', 'application/pkcs10'), + 'p12' => 'application/x-pkcs12', + 'p7a' => 'application/x-pkcs7-signature', + 'p7c' => array('application/pkcs7-mime', 'application/x-pkcs7-mime'), + 'p7m' => array('application/pkcs7-mime', 'application/x-pkcs7-mime'), + 'p7r' => 'application/x-pkcs7-certreqresp', + 'p7s' => 'application/pkcs7-signature', + 'crt' => array('application/x-x509-ca-cert', 'application/x-x509-user-cert', 'application/pkix-cert'), + 'crl' => array('application/pkix-crl', 'application/pkcs-crl'), + 'der' => 'application/x-x509-ca-cert', + 'kdb' => 'application/octet-stream', + 'pgp' => 'application/pgp', + 'gpg' => 'application/gpg-keys', + 'sst' => 'application/octet-stream', + 'csr' => 'application/octet-stream', + 'rsa' => 'application/x-pkcs7', + 'cer' => array('application/pkix-cert', 'application/x-x509-ca-cert'), + '3g2' => 'video/3gpp2', + '3gp' => array('video/3gp', 'video/3gpp'), + 'mp4' => 'video/mp4', + 'm4a' => 'audio/x-m4a', + 'f4v' => array('video/mp4', 'video/x-f4v'), + 'flv' => 'video/x-flv', + 'webm' => 'video/webm', + 'aac' => array('audio/x-aac', 'audio/aac'), + 'm4u' => 'application/vnd.mpegurl', + 'm3u' => 'text/plain', + 'xspf' => 'application/xspf+xml', + 'vlc' => 'application/videolan', + 'wmv' => array('video/x-ms-wmv', 'video/x-ms-asf'), + 'au' => 'audio/x-au', + 'ac3' => 'audio/ac3', + 'flac' => 'audio/x-flac', + 'ogg' => array('audio/ogg', 'video/ogg', 'application/ogg'), + 'kmz' => array('application/vnd.google-earth.kmz', 'application/zip', 'application/x-zip'), + 'kml' => array('application/vnd.google-earth.kml+xml', 'application/xml', 'text/xml'), + 'ics' => 'text/calendar', + 'ical' => 'text/calendar', + 'zsh' => 'text/x-scriptzsh', + '7z' => array('application/x-7z-compressed', 'application/x-compressed', 'application/x-zip-compressed', 'application/zip', 'multipart/x-zip'), + '7zip' => array('application/x-7z-compressed', 'application/x-compressed', 'application/x-zip-compressed', 'application/zip', 'multipart/x-zip'), + 'cdr' => array('application/cdr', 'application/coreldraw', 'application/x-cdr', 'application/x-coreldraw', 'image/cdr', 'image/x-cdr', 'zz-application/zz-winassoc-cdr'), + 'wma' => array('audio/x-ms-wma', 'video/x-ms-asf'), + 'jar' => array('application/java-archive', 'application/x-java-application', 'application/x-jar', 'application/x-compressed'), + 'svg' => array('image/svg+xml', 'image/svg', 'application/xml', 'text/xml'), + 'vcf' => 'text/x-vcard', + 'srt' => array('text/srt', 'text/plain'), + 'vtt' => array('text/vtt', 'text/plain'), + 'ico' => array('image/x-icon', 'image/x-ico', 'image/vnd.microsoft.icon'), + 'odc' => 'application/vnd.oasis.opendocument.chart', + 'otc' => 'application/vnd.oasis.opendocument.chart-template', + 'odf' => 'application/vnd.oasis.opendocument.formula', + 'otf' => 'application/vnd.oasis.opendocument.formula-template', + 'odg' => 'application/vnd.oasis.opendocument.graphics', + 'otg' => 'application/vnd.oasis.opendocument.graphics-template', + 'odi' => 'application/vnd.oasis.opendocument.image', + 'oti' => 'application/vnd.oasis.opendocument.image-template', + 'odp' => 'application/vnd.oasis.opendocument.presentation', + 'otp' => 'application/vnd.oasis.opendocument.presentation-template', + 'ods' => 'application/vnd.oasis.opendocument.spreadsheet', + 'ots' => 'application/vnd.oasis.opendocument.spreadsheet-template', + 'odt' => 'application/vnd.oasis.opendocument.text', + 'odm' => 'application/vnd.oasis.opendocument.text-master', + 'ott' => 'application/vnd.oasis.opendocument.text-template', + 'oth' => 'application/vnd.oasis.opendocument.text-web' +); diff --git a/application/config/profiler.php b/application/config/profiler.php new file mode 100755 index 0000000..121c46f --- /dev/null +++ b/application/config/profiler.php @@ -0,0 +1,14 @@ + my_controller/index +| my-controller/my-method -> my_controller/my_method +*/ +//public pages +$route['default_controller'] = 'pages/index'; +$route['404_override'] = ''; +$route['translate_uri_dashes'] = FALSE; + +$route['home'] = 'pages/index'; +$route['dashboard'] = 'admin/dashboard'; +$route['profile'] = 'pages/profile'; +$route['log-monitor'] = 'Pages/log_monitor'; +$route['(:any)/barber'] = 'pages/barber/$1'; +$route['(:any)/beauty'] = 'pages/beauty/$1'; +$route['(:any)/booking/(:any)'] = 'pages/booking/$1/$2'; +$route['(:any)/booking-finished/(:any)'] = 'pages/booking_finished/$1/$2'; +$route['email-verification'] = 'pages/email_verification'; +$route['ajax'] = 'pages/ajax'; +$route['module-management'] = 'ModuleManagement/index'; +$route['booking-process'] = 'pages/booking_process'; + +//admin portal +$route['login'] = 'Login/index'; +$route['users'] = 'admin/users'; +$route['user-management'] = 'UserManagement/index'; +$route['add-new-user'] = 'UserManagement/add_new_user'; +$route['modify-user/(:any)'] = 'UserManagement/modify_user/$1'; +$route['user-process'] = 'UserManagement/user_process'; + +$route['services'] = 'admin/services'; +$route['services/add-service'] = 'admin/add_service'; +$route['services/update-service/(:any)'] = 'admin/update_service/$1'; +$route['services/service-process'] = 'admin/service_process'; + +$route['service-categories'] = 'admin/service_categories'; +$route['services/add-service-category'] = 'admin/add_service_category'; +$route['services/update-service-category/(:any)'] = 'admin/update_service_category/$1'; +$route['services/service-category-process'] = 'admin/service_category_process'; + +$route['workers'] = 'admin/workers'; +$route['workers/add-worker'] = 'admin/add_worker'; +$route['workers/update-worker/(:any)'] = 'admin/update_worker/$1'; +$route['workers/worker-process'] = 'admin/worker_process'; + +$route['bookings'] = 'admin/bookings'; +$route['bookings/add-booking'] = 'admin/add_booking'; +$route['bookings/update-booking/(:any)'] = 'admin/update_booking/$1'; +$route['bookings/booking-process'] = 'admin/booking_process'; + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/application/config/routes_20240401.php b/application/config/routes_20240401.php new file mode 100755 index 0000000..ac766ee --- /dev/null +++ b/application/config/routes_20240401.php @@ -0,0 +1,109 @@ + my_controller/index +| my-controller/my-method -> my_controller/my_method +*/ +//public pages +$route['default_controller'] = 'pages/index'; +$route['404_override'] = ''; +$route['translate_uri_dashes'] = FALSE; + +$route['home'] = 'pages/index'; +$route['(:any)/barber'] = 'pages/barber/$1'; +$route['(:any)/beauty'] = 'pages/beauty/$1'; +$route['(:any)/booking/(:any)'] = 'pages/booking/$1/$2'; +$route['(:any)/booking-finished/(:any)'] = 'pages/booking_finished/$1/$2'; +$route['email-verification'] = 'pages/email_verification'; +$route['ajax'] = 'pages/ajax'; + +//admin portal +$route['login'] = 'admin/login'; +$route['users'] = 'admin/users'; +$route['create-user'] = 'admin/create_user'; +$route['update-user'] = 'admin/update_user'; +$route['user-process'] = 'admin/user_process'; + +$route['services'] = 'admin/services'; +$route['add-service'] = 'admin/add_service'; +$route['update-service'] = 'admin/update_service'; +$route['service-process'] = 'admin/service_process'; + +$route['workers'] = 'admin/workers'; +$route['add-worker'] = 'admin/add_worker'; +$route['update-worker'] = 'admin/update_worker'; +$route['worker-process'] = 'admin/worker_process'; + +$route['booking-process'] = 'pages/booking_process'; + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/application/config/routes_20250312.php b/application/config/routes_20250312.php new file mode 100755 index 0000000..3b3fc3a --- /dev/null +++ b/application/config/routes_20250312.php @@ -0,0 +1,118 @@ + my_controller/index +| my-controller/my-method -> my_controller/my_method +*/ +//public pages +$route['default_controller'] = 'pages/index'; +$route['404_override'] = ''; +$route['translate_uri_dashes'] = FALSE; + +$route['home'] = 'pages/index'; +$route['dashboard'] = 'admin/dashboard'; +$route['profile'] = 'pages/profile'; +$route['log-monitor'] = 'Pages/log_monitor'; +$route['(:any)/barber'] = 'pages/barber/$1'; +$route['(:any)/beauty'] = 'pages/beauty/$1'; +$route['(:any)/booking/(:any)'] = 'pages/booking/$1/$2'; +$route['(:any)/booking-finished/(:any)'] = 'pages/booking_finished/$1/$2'; +$route['email-verification'] = 'pages/email_verification'; +$route['ajax'] = 'pages/ajax'; +$route['module-management'] = 'ModuleManagement/index'; +$route['booking-process'] = 'pages/booking_process'; + +//admin portal +$route['login'] = 'Login/index'; +$route['users'] = 'admin/users'; +$route['user-management'] = 'UserManagement/index'; +$route['add-new-user'] = 'UserManagement/add_new_user'; +$route['modify-user/(:any)'] = 'UserManagement/modify_user/$1'; +$route['user-process'] = 'UserManagement/user_process'; + +$route['services'] = 'admin/services'; +$route['services/add-service'] = 'admin/add_service'; +$route['services/update-service/(:any)'] = 'admin/update_service/$1'; +$route['services/service-process'] = 'admin/service_process'; + +$route['workers'] = 'admin/workers'; +$route['workers/add-worker'] = 'admin/add_worker'; +$route['workers/update-worker/(:any)'] = 'admin/update_worker/$1'; +$route['workers/worker-process'] = 'admin/worker_process'; + +$route['bookings'] = 'admin/bookings'; +$route['bookings/add-booking'] = 'admin/add_booking'; +$route['bookings/update-booking/(:any)'] = 'admin/update_booking/$1'; +$route['bookings/booking-process'] = 'admin/booking_process'; + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/application/config/smileys.php b/application/config/smileys.php new file mode 100755 index 0000000..7ae311a --- /dev/null +++ b/application/config/smileys.php @@ -0,0 +1,64 @@ + array('grin.gif', '19', '19', 'grin'), + ':lol:' => array('lol.gif', '19', '19', 'LOL'), + ':cheese:' => array('cheese.gif', '19', '19', 'cheese'), + ':)' => array('smile.gif', '19', '19', 'smile'), + ';-)' => array('wink.gif', '19', '19', 'wink'), + ';)' => array('wink.gif', '19', '19', 'wink'), + ':smirk:' => array('smirk.gif', '19', '19', 'smirk'), + ':roll:' => array('rolleyes.gif', '19', '19', 'rolleyes'), + ':-S' => array('confused.gif', '19', '19', 'confused'), + ':wow:' => array('surprise.gif', '19', '19', 'surprised'), + ':bug:' => array('bigsurprise.gif', '19', '19', 'big surprise'), + ':-P' => array('tongue_laugh.gif', '19', '19', 'tongue laugh'), + '%-P' => array('tongue_rolleye.gif', '19', '19', 'tongue rolleye'), + ';-P' => array('tongue_wink.gif', '19', '19', 'tongue wink'), + ':P' => array('raspberry.gif', '19', '19', 'raspberry'), + ':blank:' => array('blank.gif', '19', '19', 'blank stare'), + ':long:' => array('longface.gif', '19', '19', 'long face'), + ':ohh:' => array('ohh.gif', '19', '19', 'ohh'), + ':grrr:' => array('grrr.gif', '19', '19', 'grrr'), + ':gulp:' => array('gulp.gif', '19', '19', 'gulp'), + '8-/' => array('ohoh.gif', '19', '19', 'oh oh'), + ':down:' => array('downer.gif', '19', '19', 'downer'), + ':red:' => array('embarrassed.gif', '19', '19', 'red face'), + ':sick:' => array('sick.gif', '19', '19', 'sick'), + ':shut:' => array('shuteye.gif', '19', '19', 'shut eye'), + ':-/' => array('hmm.gif', '19', '19', 'hmmm'), + '>:(' => array('mad.gif', '19', '19', 'mad'), + ':mad:' => array('mad.gif', '19', '19', 'mad'), + '>:-(' => array('angry.gif', '19', '19', 'angry'), + ':angry:' => array('angry.gif', '19', '19', 'angry'), + ':zip:' => array('zip.gif', '19', '19', 'zipper'), + ':kiss:' => array('kiss.gif', '19', '19', 'kiss'), + ':ahhh:' => array('shock.gif', '19', '19', 'shock'), + ':coolsmile:' => array('shade_smile.gif', '19', '19', 'cool smile'), + ':coolsmirk:' => array('shade_smirk.gif', '19', '19', 'cool smirk'), + ':coolgrin:' => array('shade_grin.gif', '19', '19', 'cool grin'), + ':coolhmm:' => array('shade_hmm.gif', '19', '19', 'cool hmm'), + ':coolmad:' => array('shade_mad.gif', '19', '19', 'cool mad'), + ':coolcheese:' => array('shade_cheese.gif', '19', '19', 'cool cheese'), + ':vampire:' => array('vampire.gif', '19', '19', 'vampire'), + ':snake:' => array('snake.gif', '19', '19', 'snake'), + ':exclaim:' => array('exclaim.gif', '19', '19', 'exclaim'), + ':question:' => array('question.gif', '19', '19', 'question') + +); diff --git a/application/config/user_agents.php b/application/config/user_agents.php new file mode 100755 index 0000000..32e1cd4 --- /dev/null +++ b/application/config/user_agents.php @@ -0,0 +1,222 @@ + 'Windows 10', + 'windows nt 6.3' => 'Windows 8.1', + 'windows nt 6.2' => 'Windows 8', + 'windows nt 6.1' => 'Windows 7', + 'windows nt 6.0' => 'Windows Vista', + 'windows nt 5.2' => 'Windows 2003', + 'windows nt 5.1' => 'Windows XP', + 'windows nt 5.0' => 'Windows 2000', + 'windows nt 4.0' => 'Windows NT 4.0', + 'winnt4.0' => 'Windows NT 4.0', + 'winnt 4.0' => 'Windows NT', + 'winnt' => 'Windows NT', + 'windows 98' => 'Windows 98', + 'win98' => 'Windows 98', + 'windows 95' => 'Windows 95', + 'win95' => 'Windows 95', + 'windows phone' => 'Windows Phone', + 'windows' => 'Unknown Windows OS', + 'android' => 'Android', + 'blackberry' => 'BlackBerry', + 'iphone' => 'iOS', + 'ipad' => 'iOS', + 'ipod' => 'iOS', + 'os x' => 'Mac OS X', + 'ppc mac' => 'Power PC Mac', + 'freebsd' => 'FreeBSD', + 'ppc' => 'Macintosh', + 'linux' => 'Linux', + 'debian' => 'Debian', + 'sunos' => 'Sun Solaris', + 'beos' => 'BeOS', + 'apachebench' => 'ApacheBench', + 'aix' => 'AIX', + 'irix' => 'Irix', + 'osf' => 'DEC OSF', + 'hp-ux' => 'HP-UX', + 'netbsd' => 'NetBSD', + 'bsdi' => 'BSDi', + 'openbsd' => 'OpenBSD', + 'gnu' => 'GNU/Linux', + 'unix' => 'Unknown Unix OS', + 'symbian' => 'Symbian OS' +); + + +// The order of this array should NOT be changed. Many browsers return +// multiple browser types so we want to identify the sub-type first. +$browsers = array( + 'OPR' => 'Opera', + 'Flock' => 'Flock', + 'Edge' => 'Edge', + 'Chrome' => 'Chrome', + // Opera 10+ always reports Opera/9.80 and appends Version/ to the user agent string + 'Opera.*?Version' => 'Opera', + 'Opera' => 'Opera', + 'MSIE' => 'Internet Explorer', + 'Internet Explorer' => 'Internet Explorer', + 'Trident.* rv' => 'Internet Explorer', + 'Shiira' => 'Shiira', + 'Firefox' => 'Firefox', + 'Chimera' => 'Chimera', + 'Phoenix' => 'Phoenix', + 'Firebird' => 'Firebird', + 'Camino' => 'Camino', + 'Netscape' => 'Netscape', + 'OmniWeb' => 'OmniWeb', + 'Safari' => 'Safari', + 'Mozilla' => 'Mozilla', + 'Konqueror' => 'Konqueror', + 'icab' => 'iCab', + 'Lynx' => 'Lynx', + 'Links' => 'Links', + 'hotjava' => 'HotJava', + 'amaya' => 'Amaya', + 'IBrowse' => 'IBrowse', + 'Maxthon' => 'Maxthon', + 'Ubuntu' => 'Ubuntu Web Browser' +); + +$mobiles = array( + // legacy array, old values commented out + 'mobileexplorer' => 'Mobile Explorer', +// 'openwave' => 'Open Wave', +// 'opera mini' => 'Opera Mini', +// 'operamini' => 'Opera Mini', +// 'elaine' => 'Palm', + 'palmsource' => 'Palm', +// 'digital paths' => 'Palm', +// 'avantgo' => 'Avantgo', +// 'xiino' => 'Xiino', + 'palmscape' => 'Palmscape', +// 'nokia' => 'Nokia', +// 'ericsson' => 'Ericsson', +// 'blackberry' => 'BlackBerry', +// 'motorola' => 'Motorola' + + // Phones and Manufacturers + 'motorola' => 'Motorola', + 'nokia' => 'Nokia', + 'nexus' => 'Nexus', + 'palm' => 'Palm', + 'iphone' => 'Apple iPhone', + 'ipad' => 'iPad', + 'ipod' => 'Apple iPod Touch', + 'sony' => 'Sony Ericsson', + 'ericsson' => 'Sony Ericsson', + 'blackberry' => 'BlackBerry', + 'cocoon' => 'O2 Cocoon', + 'blazer' => 'Treo', + 'lg' => 'LG', + 'amoi' => 'Amoi', + 'xda' => 'XDA', + 'mda' => 'MDA', + 'vario' => 'Vario', + 'htc' => 'HTC', + 'samsung' => 'Samsung', + 'sharp' => 'Sharp', + 'sie-' => 'Siemens', + 'alcatel' => 'Alcatel', + 'benq' => 'BenQ', + 'ipaq' => 'HP iPaq', + 'mot-' => 'Motorola', + 'playstation portable' => 'PlayStation Portable', + 'playstation 3' => 'PlayStation 3', + 'playstation vita' => 'PlayStation Vita', + 'hiptop' => 'Danger Hiptop', + 'nec-' => 'NEC', + 'panasonic' => 'Panasonic', + 'philips' => 'Philips', + 'sagem' => 'Sagem', + 'sanyo' => 'Sanyo', + 'spv' => 'SPV', + 'zte' => 'ZTE', + 'sendo' => 'Sendo', + 'nintendo dsi' => 'Nintendo DSi', + 'nintendo ds' => 'Nintendo DS', + 'nintendo 3ds' => 'Nintendo 3DS', + 'wii' => 'Nintendo Wii', + 'open web' => 'Open Web', + 'openweb' => 'OpenWeb', + 'meizu' => 'Meizu', + 'huawei' => 'Huawei', + 'xiaomi' => 'Xiaomi', + 'oppo' => 'Oppo', + 'vivo' => 'Vivo', + 'infinix' => 'Infinix', + + // Operating Systems + 'android' => 'Android', + 'symbian' => 'Symbian', + 'SymbianOS' => 'SymbianOS', + 'elaine' => 'Palm', + 'series60' => 'Symbian S60', + 'windows ce' => 'Windows CE', + + // Browsers + 'obigo' => 'Obigo', + 'netfront' => 'Netfront Browser', + 'openwave' => 'Openwave Browser', + 'mobilexplorer' => 'Mobile Explorer', + 'operamini' => 'Opera Mini', + 'opera mini' => 'Opera Mini', + 'opera mobi' => 'Opera Mobile', + 'fennec' => 'Firefox Mobile', + + // Other + 'digital paths' => 'Digital Paths', + 'avantgo' => 'AvantGo', + 'xiino' => 'Xiino', + 'novarra' => 'Novarra Transcoder', + 'vodafone' => 'Vodafone', + 'docomo' => 'NTT DoCoMo', + 'o2' => 'O2', + + // Fallback + 'mobile' => 'Generic Mobile', + 'wireless' => 'Generic Mobile', + 'j2me' => 'Generic Mobile', + 'midp' => 'Generic Mobile', + 'cldc' => 'Generic Mobile', + 'up.link' => 'Generic Mobile', + 'up.browser' => 'Generic Mobile', + 'smartphone' => 'Generic Mobile', + 'cellphone' => 'Generic Mobile' +); + +// There are hundreds of bots but these are the most common. +$robots = array( + 'googlebot' => 'Googlebot', + 'msnbot' => 'MSNBot', + 'baiduspider' => 'Baiduspider', + 'bingbot' => 'Bing', + 'slurp' => 'Inktomi Slurp', + 'yahoo' => 'Yahoo', + 'ask jeeves' => 'Ask Jeeves', + 'fastcrawler' => 'FastCrawler', + 'infoseek' => 'InfoSeek Robot 1.0', + 'lycos' => 'Lycos', + 'yandex' => 'YandexBot', + 'mediapartners-google' => 'MediaPartners Google', + 'CRAZYWEBCRAWLER' => 'Crazy Webcrawler', + 'adsbot-google' => 'AdsBot Google', + 'feedfetcher-google' => 'Feedfetcher Google', + 'curious george' => 'Curious George', + 'ia_archiver' => 'Alexa Crawler', + 'MJ12bot' => 'Majestic-12', + 'Uptimebot' => 'Uptimebot', + 'UptimeRobot' => 'UptimeRobot' +); diff --git a/application/controllers/Admin.php b/application/controllers/Admin.php new file mode 100755 index 0000000..8107ff0 --- /dev/null +++ b/application/controllers/Admin.php @@ -0,0 +1,1149 @@ + + * @see https://codeigniter.com/userguide3/general/urls.html + */ + public function dashboard(){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + $this->load->model('Module_model'); + + if(isset($_SESSION['username'])){ + $data['currentUser'] = $this->User_model->getUserByUsername($_SESSION['username']); + $data['pageTitle'] = 'Vezérlőpult'; + $data['message'] = ''; + $data['message_class'] = ''; + if($this->User_model->is_user_admin($_SESSION['username'])){ + $data['activeModules'] = $this->Module_model->getAllModule(); + } + else{ + $data['activeModules'] = $this->Module_model->getUserModules($data['currentUser']->user_id); + } + + $this->load->view('admin/dashboard', $data); + } + else{ + header("Location:".SITEURL."login"); + } + } + + public function services(){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + $this->load->model('Module_model'); + + if(isset($_SESSION['username'])){ + $data['currentUser'] = $this->User_model->getUserByUsername($_SESSION['username']); + $data['pageTitle'] = 'Szolgáltatások'; + $data['message'] = ''; + $data['message_class'] = ''; + if($this->User_model->is_user_admin($_SESSION['username'])){ + $data['activeModules'] = $this->Module_model->getAllModule(); + } + else{ + $data['activeModules'] = $this->Module_model->getUserModules($data['currentUser']->user_id); + } + + $data['results'] = $this->Service_model->getAllServices(); + + $this->load->view('admin/services', $data); + } + else{ + header("Location:".SITEURL."login"); + } + } + + public function add_service(){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + $this->load->model('Module_model'); + + if(isset($_SESSION['username'])){ + $data['currentUser'] = $this->User_model->getUserByUsername($_SESSION['username']); + $data['pageTitle'] = 'Szolgáltatás hozzáadás'; + $data['message'] = ''; + $data['message_class'] = ''; + if($this->User_model->is_user_admin($_SESSION['username'])){ + $data['activeModules'] = $this->Module_model->getAllModule(); + } + else{ + $data['activeModules'] = $this->Module_model->getUserModules($data['currentUser']->user_id); + } + + $data['serviceCategories'] = $this->Service_model->getAllServiceCategories(); + $this->load->view('admin/add-service', $data); + } + else{ + header("Location:".SITEURL."login"); + } + } + + public function worker_schedule() { + $this->load->helper('url'); + $this->load->model('Service_model'); + $this->load->model('User_model'); + $this->load->model('Module_model'); + + if (!isset($_SESSION['username'])) { + header("Location:".SITEURL."login"); + exit; + } + + $data['currentUser'] = $this->User_model->getUserByUsername($_SESSION['username']); + + if ($this->User_model->is_user_admin($_SESSION['username'])) { + $data['activeModules'] = $this->Module_model->getAllModule(); + } else { + $data['activeModules'] = $this->Module_model->getUserModules($data['currentUser']->user_id); + } + + $data['workers'] = $this->Service_model->getAllWorkers(); + + $worker_id = $this->input->get('worker_id'); + if ($worker_id) { + $data['selectedWorkerId'] = $worker_id; + $data['schedule'] = $this->Service_model->getWorkerSchedule($worker_id); + } else { + $data['selectedWorkerId'] = null; + $data['schedule'] = []; + } + + $this->load->view('admin/worker_schedule', $data); + } + + public function worker_schedule_overrides() { + $this->load->model('Service_model'); + $data['currentUser'] = $this->User_model->getUserByUsername($_SESSION['username']); + $data['workerSchedules'] = $this->Service_model->getWorkerScheduleOverrides(); + $data['workers'] = $this->Service_model->getAllWorkers(); + $data['pageTitle'] = 'Dolgozói egyedi munkaidők'; + $this->load->view('admin/worker_schedule_overrides', $data); + } + + public function admin_worker_schedule() { + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + + $data['pageTitle'] = 'Munkarend beállítása'; + $data['workers'] = $this->Service_model->getAllWorkers(); + + if ($this->input->post('storeSchedule')) { + $this->load->database(); + $this->db->where('worker_id', $_POST['worker_id']); + $this->db->delete('worker_schedule'); + + foreach ($_POST['weekday'] as $i => $day) { + $insert = [ + 'worker_id' => $_POST['worker_id'], + 'weekday' => $day, + 'start_time' => $_POST['start_time'][$i], + 'end_time' => $_POST['end_time'][$i], + 'is_alternate_week' => isset($_POST['is_alternate_week'][$i]) ? 1 : 0 + ]; + $this->db->insert('worker_schedule', $insert); + } + } + + if (!empty($_GET['worker_id'])) { + $this->load->database(); + $worker_id = $_GET['worker_id']; + $data['selectedWorkerId'] = $worker_id; + $data['schedule'] = $this->db->query("SELECT * FROM worker_schedule WHERE worker_id = '$worker_id'")->result(); + } + + $this->load->view('admin/worker_schedule', $data); + } + + public function store_worker_schedule() { + $this->load->model('Service_model'); + $this->load->helper('url'); + + $worker_id = $this->input->post('worker_id'); + + if (!$worker_id) { + show_error('Dolgozó nincs kiválasztva.'); + return; + } + + // Clear existing schedule + $this->Service_model->clearWorkerSchedule($worker_id); + + // Loop through submitted times + for ($i = 0; $i <= 6; $i++) { + $start = $this->input->post("start_time[$i]"); + $end = $this->input->post("end_time[$i]"); + $alt = $this->input->post("alternate_week[$i]") ? 1 : 0; + + if (!empty($start) && !empty($end)) { + $this->Service_model->addWorkerSchedule([ + 'worker_id' => $worker_id, + 'weekday' => $i, + 'start_time' => $start, + 'end_time' => $end, + 'is_alternate_week' => $alt + ]); + } + } + + redirect('admin/worker_schedule'); + } + + + + public function admin_worker_override() { + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + + $data['pageTitle'] = 'Egyedi napok kezelése'; + $data['workers'] = $this->Service_model->getAllWorkers(); + + if ($this->input->post('storeOverride')) { + $this->load->database(); + $insert = [ + 'worker_id' => $_POST['worker_id'], + 'date' => $_POST['date'], + 'is_day_off' => isset($_POST['is_day_off']) ? 1 : 0, + 'start_time' => $_POST['start_time'], + 'end_time' => $_POST['end_time'] + ]; + + $existing = $this->db->query("SELECT * FROM worker_schedule_overrides WHERE worker_id = '{$insert['worker_id']}' AND date = '{$insert['date']}'")->row(); + if ($existing) { + $this->db->where('id', $existing->id)->update('worker_schedule_overrides', $insert); + } else { + $this->db->insert('worker_schedule_overrides', $insert); + } + } + + if (!empty($_GET['worker_id'])) { + $this->load->database(); + $worker_id = $_GET['worker_id']; + $data['selectedWorkerId'] = $worker_id; + $data['overrides'] = $this->db->query("SELECT * FROM worker_schedule_overrides WHERE worker_id = '$worker_id' ORDER BY date ASC")->result(); + } + + $this->load->view('admin/worker_override', $data); + } + + + public function manage_worker_schedule($worker_id = null) { + $this->load->model('Service_model'); + $data['workers'] = $this->Service_model->getAllWorkers(); + $data['selectedWorker'] = null; + $data['schedule'] = []; + + if ($worker_id) { + $data['selectedWorker'] = $this->Service_model->getWorkerById($worker_id); + $data['schedule'] = $this->Service_model->getWorkerSchedule($worker_id); + } + + $this->load->view('admin/manage_worker_schedule', $data); + } + + public function save_worker_schedule() { + $this->load->model('Service_model'); + + $worker_id = $this->input->post('worker_id'); + $this->Service_model->clearWorkerSchedule($worker_id); + + foreach ($_POST['weekday'] as $index => $day) { + if (!empty($_POST['start_time'][$index]) && !empty($_POST['end_time'][$index])) { + $this->Service_model->addWorkerSchedule([ + 'worker_id' => $worker_id, + 'weekday' => $day, + 'start_time' => $_POST['start_time'][$index], + 'end_time' => $_POST['end_time'][$index], + 'is_alternate_week' => isset($_POST['is_alternate_week'][$index]) ? 1 : 0 + ]); + } + } + + redirect('admin/manage_worker_schedule/' . $worker_id); + } + + + public function update_service($service_id){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + $this->load->model('Module_model'); + + if(isset($_SESSION['username'])){ + $data['currentUser'] = $this->User_model->getUserByUsername($_SESSION['username']); + $data['pageTitle'] = 'Szolgáltatás módosítása (#'.$service_id.')'; + $data['message'] = ''; + $data['message_class'] = ''; + if($this->User_model->is_user_admin($_SESSION['username'])){ + $data['activeModules'] = $this->Module_model->getAllModule(); + } + else{ + $data['activeModules'] = $this->Module_model->getUserModules($data['currentUser']->user_id); + } + + $data['selectedItem'] = $this->Service_model->getServiceById($service_id); + $data['serviceCategories'] = $this->Service_model->getAllServiceCategories(); + $this->load->view('admin/update-service', $data); + } + else{ + header("Location:".SITEURL."login"); + } + } + + public function service_process(){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + $this->load->model('Log_model'); + + if(isset($_SESSION['username'])){ + $data['currentUser'] = $this->User_model->getUserByUsername($_SESSION['username']); + $data['pageTitle'] = ''; + $data['message'] = ''; + $data['message_class'] = ''; + + if(isset($_GET['delete-service'])){ + $selected_service = $this->Service_model->getServiceById($_GET['delete-service']); + $serviceArray = array( + 'is_deleted' => '1' + ); + + $this->Service_model->updateService($_GET['delete-service'], $serviceArray); + $this->Log_model->addLog('services', $data['currentUser']->username.' törölte a(z) '.$_GET['delete-service'].' számú szolgáltatást ('.$selected_service->service_name_hu.')', $data['currentUser']->username); + + } + + if(isset($_POST['addNewService'])){ + $serviceArray = array( + 'service_type' => $_POST['service_type'], + 'service_category_no' => $_POST['service_category_no'], + 'service_category_en' => $_POST['service_category_en'], + 'service_category_hu' => $_POST['service_category_hu'], + 'service_name_no' => $_POST['service_name_no'], + 'service_name_en' => $_POST['service_name_en'], + 'service_name_hu' => $_POST['service_name_hu'], + 'service_description_no' => $_POST['service_description_no'], + 'service_description_en' => $_POST['service_description_en'], + 'service_description_hu' => $_POST['service_description_hu'], + 'service_price' => $_POST['service_price'], + 'service_time' => $_POST['service_time'], + 'service_category_id' => $_POST['service_category_id'], + 'is_enabled' => $_POST['is_enabled'] + ); + + $this->Log_model->addLog('services', $data['currentUser']->username.' hozzáadta a(z) '.$_POST['service_name_hu'].' szolgáltatást ('.implode(',',$serviceArray).')', $data['currentUser']->username); + $this->Service_model->createService($serviceArray); + } + + if(isset($_POST['updateService'])){ + $serviceArray = array( + 'service_type' => $_POST['service_type'], + 'service_category_no' => $_POST['service_category_no'], + 'service_category_en' => $_POST['service_category_en'], + 'service_category_hu' => $_POST['service_category_hu'], + 'service_name_no' => $_POST['service_name_no'], + 'service_name_en' => $_POST['service_name_en'], + 'service_name_hu' => $_POST['service_name_hu'], + 'service_description_no' => $_POST['service_description_no'], + 'service_description_en' => $_POST['service_description_en'], + 'service_description_hu' => $_POST['service_description_hu'], + 'service_price' => $_POST['service_price'], + 'service_time' => $_POST['service_time'], + 'service_category_id' => $_POST['service_category_id'], + 'is_enabled' => $_POST['is_enabled'] + ); + + $this->Log_model->addLog('services', $data['currentUser']->username.' módosította a(z) '.$_POST['service_name_hu'].' szolgáltatást ('.implode(',',$serviceArray).')', $data['currentUser']->username); + $this->Service_model->updateService($_POST['service_id'], $serviceArray); + } + + header('Location:'.SITEURL.'services'); + $this->load->view('admin/service-process', $data); + } + } + + public function service_categories(){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + $this->load->model('Module_model'); + + if(isset($_SESSION['username'])){ + $data['currentUser'] = $this->User_model->getUserByUsername($_SESSION['username']); + $data['pageTitle'] = 'Szolgáltatás kategóriák'; + $data['message'] = ''; + $data['message_class'] = ''; + if($this->User_model->is_user_admin($_SESSION['username'])){ + $data['activeModules'] = $this->Module_model->getAllModule(); + } + else{ + $data['activeModules'] = $this->Module_model->getUserModules($data['currentUser']->user_id); + } + + $data['results'] = $this->Service_model->getAllServiceCategories(); + + $this->load->view('admin/service-categories', $data); + } + else{ + header("Location:".SITEURL."login"); + } + } + + public function add_service_category(){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + $this->load->model('Module_model'); + + if(isset($_SESSION['username'])){ + $data['currentUser'] = $this->User_model->getUserByUsername($_SESSION['username']); + $data['pageTitle'] = 'Szolgáltatás kategória hozzáadása'; + $data['message'] = ''; + $data['message_class'] = ''; + if($this->User_model->is_user_admin($_SESSION['username'])){ + $data['activeModules'] = $this->Module_model->getAllModule(); + } + else{ + $data['activeModules'] = $this->Module_model->getUserModules($data['currentUser']->user_id); + } + + + $this->load->view('admin/add-service-category', $data); + } + else{ + header("Location:".SITEURL."login"); + } + } + + public function update_service_category($service_category_id){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + $this->load->model('Module_model'); + + if(isset($_SESSION['username'])){ + $data['currentUser'] = $this->User_model->getUserByUsername($_SESSION['username']); + $data['pageTitle'] = 'Szolgáltatás módosítása (#'.$service_category_id.')'; + $data['message'] = ''; + $data['message_class'] = ''; + if($this->User_model->is_user_admin($_SESSION['username'])){ + $data['activeModules'] = $this->Module_model->getAllModule(); + } + else{ + $data['activeModules'] = $this->Module_model->getUserModules($data['currentUser']->user_id); + } + + $data['selectedItem'] = $this->Service_model->getServiceCategoryById($service_category_id); + $this->load->view('admin/update-service-category', $data); + } + else{ + header("Location:".SITEURL."login"); + } + } + + public function service_category_process(){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + $this->load->model('Log_model'); + + if(isset($_SESSION['username'])){ + $data['currentUser'] = $this->User_model->getUserByUsername($_SESSION['username']); + $data['pageTitle'] = ''; + $data['message'] = ''; + $data['message_class'] = ''; + + if(isset($_GET['delete-service-category'])){ + $selected_service = $this->Service_model->getServiceCategoryById($_GET['delete-service-category']); + $serviceArray = array( + 'is_deleted' => '1' + ); + + $this->Service_model->updateServiceCategory($_GET['delete-service-category'], $serviceArray); + + } + + if(isset($_POST['addNewServiceCategory'])){ + $serviceCategoryArray = array( + 'serv_cat_slug' => $_POST['serv_cat_slug'], + 'serv_cat_name' => $_POST['serv_cat_name'] + ); + + $this->Service_model->createServiceCategory($serviceCategoryArray); + } + + if(isset($_POST['updateServiceCategory'])){ + $serviceCategoryArray = array( + 'serv_cat_slug' => $_POST['serv_cat_slug'], + 'serv_cat_name' => $_POST['serv_cat_name'] + ); + + $this->Service_model->updateServiceCategory($_POST['service_category_id'], $serviceCategoryArray); + } + + header('Location:'.SITEURL.'service-categories'); + $this->load->view('admin/service-category-process', $data); + } + } + public function workers(){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + $this->load->model('Module_model'); + + if(isset($_SESSION['username'])){ + $data['currentUser'] = $this->User_model->getUserByUsername($_SESSION['username']); + $data['pageTitle'] = 'Dolgozók'; + $data['message'] = ''; + $data['message_class'] = ''; + if($this->User_model->is_user_admin($_SESSION['username'])){ + $data['activeModules'] = $this->Module_model->getAllModule(); + } + else{ + $data['activeModules'] = $this->Module_model->getUserModules($data['currentUser']->user_id); + } + + $data['results'] = $this->Service_model->getAllWorkers(); + + $this->load->view('admin/workers', $data); + } + else{ + header("Location:".SITEURL."login"); + } + } + + public function add_worker(){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + $this->load->model('Module_model'); + + if(isset($_SESSION['username'])){ + $data['currentUser'] = $this->User_model->getUserByUsername($_SESSION['username']); + $data['pageTitle'] = 'Dolgozó hozzáadása'; + $data['message'] = ''; + $data['message_class'] = ''; + if($this->User_model->is_user_admin($_SESSION['username'])){ + $data['activeModules'] = $this->Module_model->getAllModule(); + } + else{ + $data['activeModules'] = $this->Module_model->getUserModules($data['currentUser']->user_id); + } + + $data['serviceCategories'] = $this->Service_model->getAllServiceCategories(); + $this->load->view('admin/add-worker', $data); + } + else{ + header("Location:".SITEURL."login"); + } + } + + public function update_worker($worker_id){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + $this->load->model('Module_model'); + + if(isset($_SESSION['username'])){ + $data['currentUser'] = $this->User_model->getUserByUsername($_SESSION['username']); + $data['pageTitle'] = 'Dolgozó módosítása (#'.$worker_id.')'; + $data['message'] = ''; + $data['message_class'] = ''; + if($this->User_model->is_user_admin($_SESSION['username'])){ + $data['activeModules'] = $this->Module_model->getAllModule(); + } + else{ + $data['activeModules'] = $this->Module_model->getUserModules($data['currentUser']->user_id); + } + + $data['serviceCategories'] = $this->Service_model->getAllServiceCategories(); + $data['selectedItem'] = $this->Service_model->getWorkerById($worker_id); + $this->load->view('admin/update-worker', $data); + } + else{ + header("Location:".SITEURL."login"); + } + } + + public function worker_process(){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + $this->load->model('Log_model'); + + if(isset($_SESSION['username'])){ + $data['currentUser'] = $this->User_model->getUserByUsername($_SESSION['username']); + $data['pageTitle'] = ''; + $data['message'] = ''; + $data['message_class'] = ''; + + if(isset($_GET['delete-worker'])){ + $selected_worker = $this->Service_model->getWorkerById($_GET['delete-worker']); + $workerArray = array( + 'is_deleted' => '1' + ); + + $this->Service_model->updateWorker($_GET['delete-worker'], $workerArray); + $this->Log_model->addLog('workers', $data['currentUser']->username.' törölte a(z) '.$_GET['delete-worker'].' számú dolgozót ('.$selected_worker->worker_name.')', $data['currentUser']->username); + } + + + if(isset($_POST['addNewWorker'])){ + + $data['worker_img'] = ''; + + if($_FILES["worker_img"]["tmp_name"] != ''){ + $target_dir = getcwd()."/assets/img/"; + $target_file = $target_dir . 'worker_'.str_replace(' ','_', $_POST['worker_name']); + $imageFileType = strtolower(pathinfo(basename($_FILES["worker_img"]["name"]),PATHINFO_EXTENSION)); + + if (move_uploaded_file($_FILES["worker_img"]["tmp_name"], $target_file.'.'.$imageFileType)) { + $data['message'] = 'A profilkép sikeresen feltöltve!'; + $data['message_class'] = 'successMessage'; + $data['worker_img'] = 'worker_'.str_replace(' ','_', $_POST['worker_name']).'.'.$imageFileType; + + } else { + $data['message'] = 'Hiba a feltöltés közben!'; + $data['message_class'] = 'errorMessage'; + } + + } + + $workerArray = array( + 'worker_name' => $_POST['worker_name'], + 'worker_info' => $_POST['worker_info'], + 'is_beauty' => $_POST['is_beauty'], + 'is_barber' => $_POST['is_barber'], + 'worker_profile_img' => $data['worker_img'], + 'service_category_id' => $data['service_category_id'], + 'is_active' => $_POST['is_active'] + ); + + $this->Log_model->addLog('workers', $data['currentUser']->username.' létrehozta a(z) '.$_POST['worker_name'].' nevű dolgozót ('.implode(',',$workerArray).')', $data['currentUser']->username); + $this->Service_model->createWorker($workerArray); + } + + if(isset($_POST['updateWorker'])){ + $workerArray = array( + 'worker_name' => $_POST['worker_name'], + 'worker_info' => $_POST['worker_info'], + 'is_beauty' => $_POST['is_beauty'], + 'is_barber' => $_POST['is_barber'], + 'service_category_id' => $_POST['service_category_id'], + 'is_active' => $_POST['is_active'] + ); + $this->Service_model->updateWorker($_POST['worker_id'], $workerArray); + $this->Log_model->addLog('workers', $data['currentUser']->username.' módosította a(z) '.$_POST['worker_name'].' nevű dolgozót ('.implode(',',$workerArray).')', $data['currentUser']->username); + + if($_FILES["worker_img"]["tmp_name"] != ''){ + $target_dir = getcwd()."/assets/img/"; + $target_file = $target_dir . 'worker_'.str_replace(' ','_', $_POST['worker_name']); + $imageFileType = strtolower(pathinfo(basename($_FILES["worker_img"]["name"]),PATHINFO_EXTENSION)); + + if (move_uploaded_file($_FILES["worker_img"]["tmp_name"], $target_file.'.'.$imageFileType)) { + $data['message'] = 'A profilkép sikeresen feltöltve!'; + $data['message_class'] = 'successMessage'; + $data['worker_img'] = 'worker_'.str_replace(' ','_', $_POST['worker_name']).'.'.$imageFileType; + $workerArray = array( + 'worker_profile_img' => $data['worker_img'] + ); + + $this->Log_model->addLog('workers', $data['currentUser']->username.' profilképet állított be a(z) '.$_POST['worker_name'].' nevű dolgozóhoz', $data['currentUser']->username); + $this->Service_model->updateWorker($_POST['worker_id'], $workerArray); + + } else { + $data['message'] = 'Hiba a feltöltés közben!'; + $data['message_class'] = 'errorMessage'; + } + + } + } + header("Location:".SITEURL."workers"); + $this->load->view('admin/worker-process', $data); + } + } + + public function bookings(){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + $this->load->model('Module_model'); + + if(isset($_SESSION['username'])){ + $data['currentUser'] = $this->User_model->getUserByUsername($_SESSION['username']); + $data['pageTitle'] = 'Foglalások'; + $data['message'] = ''; + $data['message_class'] = ''; + if($this->User_model->is_user_admin($_SESSION['username'])){ + $data['activeModules'] = $this->Module_model->getAllModule(); + } + else{ + $data['activeModules'] = $this->Module_model->getUserModules($data['currentUser']->user_id); + } + + $data['workers'] = $this->Service_model->getActiveWorkers(); + + if(isset($_GET['worker'])){ + $data['results'] = $this->Service_model->getActualBookingsByWorkerID($_GET['worker']); + } + else{ + $data['results'] = $this->Service_model->getActualBookings(); + } + + + $this->load->view('admin/bookings', $data); + } + else{ + header("Location:".SITEURL."login"); + } + } + + public function add_booking(){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + $this->load->model('Module_model'); + + if(isset($_SESSION['username'])){ + $data['currentUser'] = $this->User_model->getUserByUsername($_SESSION['username']); + $data['pageTitle'] = 'Foglalás hozzáadása'; + $data['message'] = ''; + $data['message_class'] = ''; + if($this->User_model->is_user_admin($_SESSION['username'])){ + $data['activeModules'] = $this->Module_model->getAllModule(); + } + else{ + $data['activeModules'] = $this->Module_model->getUserModules($data['currentUser']->user_id); + } + + $available_services = $this->Service_model->getAvailableServices(); + + $serviceFile = fopen("load_services.json", "w") or die("Unable to open file!"); + fwrite($serviceFile, json_encode($available_services)); + fclose($serviceFile); + + $data['workers'] = $this->Service_model->getAllWorkers(); + $this->load->view('admin/add-booking', $data); + } + else{ + header("Location:".SITEURL."login"); + } + } + + public function update_booking($booking_id){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + $this->load->model('Module_model'); + + if(isset($_SESSION['username'])){ + $data['currentUser'] = $this->User_model->getUserByUsername($_SESSION['username']); + $data['pageTitle'] = 'Foglalás módosítása (#'.$booking_id.')'; + $data['message'] = ''; + $data['message_class'] = ''; + if($this->User_model->is_user_admin($_SESSION['username'])){ + $data['activeModules'] = $this->Module_model->getAllModule(); + } + else{ + $data['activeModules'] = $this->Module_model->getUserModules($data['currentUser']->user_id); + } + + $available_services = $this->Service_model->getAvailableServices(); + + $serviceFile = fopen("load_services.json", "w") or die("Unable to open file!"); + fwrite($serviceFile, json_encode($available_services)); + fclose($serviceFile); + + $data['workers'] = $this->Service_model->getAllWorkers(); + $data['selectedItem'] = $this->Service_model->getBookingById($booking_id); + $this->load->view('admin/update-booking', $data); + } + else{ + header("Location:".SITEURL."login"); + } + } + + public function booking_process(){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + $this->load->model('Log_model'); + + if(isset($_SESSION['username'])){ + $data['currentUser'] = $this->User_model->getUserByUsername($_SESSION['username']); + $data['pageTitle'] = ''; + $data['message'] = ''; + $data['message_class'] = ''; + + if(isset($_GET['delete-booking'])){ + $selectedBooking = $this->Service_model->getBookingById($_GET['delete-booking']); + $this->Service_model->deleteBooking($_GET['delete-booking']); + $this->Log_model->addLog('bookings', $data['currentUser']->username.' törölte a(z) '.$_GET['delete-booking'].' számú foglalást ('.$selectedBooking->guest_name.', '.$selectedBooking->guest_email.', '.$selectedBooking->guest_phone.', '.$selectedBooking->booking_date.', '.$selectedBooking->booking_start_time.', '.$selectedBooking->booking_finish_time.', '.$selectedBooking->service_ids.')', $data['currentUser']->username); + header('Location:'.SITEURL.'bookings'); + } + + if(isset($_POST['addNewBookingManual'])){ + $booking_date = new DateTime(date('Y-m-d', strtotime($_POST['booking_date']))); + $end_booking_date = new DateTime(date('Y-m-d', strtotime($_POST['end_booking_date']))); + $diff = $booking_date->diff($end_booking_date); + + $selectedServiceArray = array(); + + if($_POST['service_ids'] != ''){ + $selectedServiceArray = explode(',', $_POST['service_ids']); + + } + + if($_POST['booking_date'] != $_POST['end_booking_date'] && $booking_date <= $end_booking_date){ + for($index = 0; $index <= $diff->days; $index++){ + $selectedDate = date('Y-m-d', strtotime($_POST['booking_date']. ' + '.$index.' days')); + + + $bookingArray = array( + 'guest_name' => $_POST['guest_name'], + 'guest_email' => $_POST['guest_email'], + 'guest_phone' => $_POST['guest_phone'], + 'worker_id' => $_POST['worker_id'], + 'booking_date' => $selectedDate, + 'booking_start_time' => $_POST['booking_start_time'], + 'booking_finish_time' => $_POST['booking_finish_time'], + 'service_ids' => serialize($selectedServiceArray), + 'guest_confirmed' => '0', + 'guest_confirm_code' => '1234', + ); + + $this->Service_model->createBooking($bookingArray); + } + } + else{ + $bookingArray = array( + 'guest_name' => $_POST['guest_name'], + 'guest_email' => $_POST['guest_email'], + 'guest_phone' => $_POST['guest_phone'], + 'worker_id' => $_POST['worker_id'], + 'booking_date' => $_POST['booking_date'], + 'booking_start_time' => $_POST['booking_start_time'], + 'booking_finish_time' => $_POST['booking_finish_time'], + 'service_ids' => serialize($selectedServiceArray), + 'guest_confirmed' => '0', + 'guest_confirm_code' => '1234', + ); + $this->Log_model->addLog('bookings', $data['currentUser']->username.' létrehoza a(z) '.$_POST['guest_name'].' nevű vendég foglalást ('.implode(', ', $bookingArray).')', $data['currentUser']->username); + $this->Service_model->createBooking($bookingArray); + } + + if($_POST['send_notification']){ + $worker = $this->Service_model->getWorkerById($bookingArray['worker_id']); + + $services = unserialize($bookingArray['service_ids']); + $serviceArray = array(); + $emailArray = array(); + + if(is_array($services)){ + foreach($services as $serviceItem){ + $selectedService = $this->Service_model->getServiceById($serviceItem); + if(is_object($selectedService)){ + $serviceArray[] = $selectedService; + } + } + } + + $content = ''; + + switch($_POST['lang']){ + case 'no': + $content = 'Kjære gjest,
'; + $content .= 'Takk for din bestilling!
'; + $content .= '
'; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= '
Navn: '.$bookingArray['guest_name'].'
E-post: '.$bookingArray['guest_email'].'
Telefon: '.$bookingArray['guest_phone'].'
Arbeider: '.$worker->worker_name.'
Dato: '.$bookingArray['booking_date'].'
Tid: '.$bookingArray['booking_start_time'].' - '.$bookingArray['booking_finish_time'].'
Tjenester: '; + $totalServicePrice = 0; + foreach($serviceArray as $serviceArrayItem){ + $totalServicePrice += $serviceArrayItem->service_price; + $content .= ''; + } + $content .= '
'.$serviceArrayItem->service_name_no.''.$serviceArrayItem->service_price.' kr
Totalpris: '.$totalServicePrice.' kr
'; + $content .= '
STUDIOBEVE'; + $this->Log_model->addLog('bookings', $data['currentUser']->username.' új foglalásról norvég nyelvű értesítést küldött a(z) '.$bookingArray['guest_email'].' email címre ('.implode(', ', $bookingArray).')', $data['currentUser']->username); + break; + case 'en': + $content = 'Dear Guest,
'; + $content .= 'Thank you for your booking!
'; + $content .= '
'; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= '
Name: '.$bookingArray['guest_name'].'
Email: '.$bookingArray['guest_email'].'
Phone: '.$bookingArray['guest_phone'].'
Worker: '.$worker->worker_name.'
Date: '.$bookingArray['booking_date'].'
Time: '.$bookingArray['booking_start_time'].' - '.$bookingArray['booking_finish_time'].'
Services: '; + $totalServicePrice = 0; + foreach($serviceArray as $serviceArrayItem){ + $totalServicePrice += $serviceArrayItem->service_price; + $content .= ''; + } + $content .= '
'.$serviceArrayItem->service_name_en.''.$serviceArrayItem->service_price.' kr
Total price: '.$totalServicePrice.' kr
'; + $content .= '
STUDIOBEVE'; + $this->Log_model->addLog('bookings', $data['currentUser']->username.' új foglalásról angol nyelvű értesítést küldött a(z) '.$bookingArray['guest_email'].' email címre ('.implode(', ', $bookingArray).')', $data['currentUser']->username); + break; + case 'hu': + $content = 'Kedves Vendégünk,
'; + $content .= 'Köszönettel fogadtuk a foglalását!
'; + $content .= '
'; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= '
Név: '.$bookingArray['guest_name'].'
Email: '.$bookingArray['guest_email'].'
Telefon: '.$bookingArray['guest_phone'].'
Dolgozó: '.$worker->worker_name.'
Dátum: '.$bookingArray['booking_date'].'
Időpont: '.$bookingArray['booking_start_time'].' - '.$bookingArray['booking_finish_time'].'
Szolgáltatás(ok): '; + $totalServicePrice = 0; + foreach($serviceArray as $serviceArrayItem){ + $totalServicePrice += $serviceArrayItem->service_price; + $content .= ''; + } + $content .= '
'.$serviceArrayItem->service_name_hu.''.$serviceArrayItem->service_price.' kr
Összesen fizetendő: '.$totalServicePrice.' kr
'; + $content .= '
STUDIOBEVE'; + $this->Log_model->addLog('bookings', $data['currentUser']->username.' új foglalásról magyar nyelvű értesítést küldött a(z) '.$bookingArray['guest_email'].' email címre ('.implode(', ', $bookingArray).')', $data['currentUser']->username); + break; + } + + $data['selectedLang'] = $_POST['lang']; + + $emailItem = array( + 'addressee_email' => $bookingArray['guest_email'], + 'addressee_name' => $bookingArray['guest_name'], + 'subject' => '[studiobeve] Your booking has arrived', + 'content' => $content, + 'attachments' => array() + ); + $emailArray[] = $emailItem; + + + $this->User_model->sendEmail($emailArray, $_POST['lang'], ''); + } + header('Location:'.SITEURL.'bookings'); + } + + if(isset($_POST['updateBookingManual'])){ + $booking_date = new DateTime(date('Y-m-d', strtotime($_POST['booking_date']))); + $end_booking_date = new DateTime(date('Y-m-d', strtotime($_POST['end_booking_date']))); + $diff = $booking_date->diff($end_booking_date); + + $selectedServiceArray = array(); + + if($_POST['service_ids'] != ''){ + $selectedServiceArray = explode(',', $_POST['service_ids']); + + } + + if($_POST['booking_date'] != $_POST['end_booking_date'] && $booking_date <= $end_booking_date){ + for($index = 0; $index <= $diff->days; $index++){ + $selectedDate = date('Y-m-d', strtotime($_POST['booking_date']. ' + '.$index.' days')); + + + $bookingArray = array( + 'guest_name' => $_POST['guest_name'], + 'guest_email' => $_POST['guest_email'], + 'guest_phone' => $_POST['guest_phone'], + 'worker_id' => $_POST['worker_id'], + 'booking_date' => $selectedDate, + 'booking_start_time' => $_POST['booking_start_time'], + 'booking_finish_time' => $_POST['booking_finish_time'], + 'service_ids' => serialize($selectedServiceArray), + 'guest_confirmed' => '0', + 'guest_confirm_code' => '1234' + ); + + $this->Service_model->createBooking($bookingArray); + } + } + else{ + $bookingArray = array( + 'guest_name' => $_POST['guest_name'], + 'guest_email' => $_POST['guest_email'], + 'guest_phone' => $_POST['guest_phone'], + 'worker_id' => $_POST['worker_id'], + 'booking_date' => $_POST['booking_date'], + 'booking_start_time' => $_POST['booking_start_time'], + 'booking_finish_time' => $_POST['booking_finish_time'], + 'service_ids' => serialize($selectedServiceArray), + 'guest_confirmed' => '0', + 'guest_confirm_code' => '1234' + ); + + $this->Service_model->updateBooking($_POST['booking_id'], $bookingArray); + $this->Log_model->addLog('bookings', $data['currentUser']->username.' módosította a foglalását a(z) '.$bookingArray['guest_name'].' nevű vendégnek ('.implode(', ', $bookingArray).')', $data['currentUser']->username); + } + + if($_POST['send_notification']){ + $worker = $this->Service_model->getWorkerById($bookingArray['worker_id']); + + $services = unserialize($bookingArray['service_ids']); + $serviceArray = array(); + $emailArray = array(); + + if(is_array($services)){ + foreach($services as $serviceItem){ + $selectedService = $this->Service_model->getServiceById($serviceItem); + if(is_object($selectedService)){ + $serviceArray[] = $selectedService; + } + } + } + + $content = ''; + + $email_subject =''; + + switch($_POST['lang']){ + case 'no': + $email_subject ='[studiobeve] Din reservasjon er endret'; + $content = 'Kjære gjest,
'; + $content .= 'Vi vil gjerne informere deg om at din reservasjon er endret.
'; + $content .= '
'; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= '
Navn: '.$bookingArray['guest_name'].'
E-post: '.$bookingArray['guest_email'].'
Telefon: '.$bookingArray['guest_phone'].'
Arbeider: '.$worker->worker_name.'
Dato: '.$bookingArray['booking_date'].'
Tid: '.$bookingArray['booking_start_time'].' - '.$bookingArray['booking_finish_time'].'
Tjenester: '; + $totalServicePrice = 0; + foreach($serviceArray as $serviceArrayItem){ + $totalServicePrice += $serviceArrayItem->service_price; + $content .= ''; + } + $content .= '
'.$serviceArrayItem->service_name_no.''.$serviceArrayItem->service_price.' kr
Totalpris: '.$totalServicePrice.' kr
'; + $content .= '
STUDIOBEVE'; + $this->Log_model->addLog('bookings', $data['currentUser']->username.' foglalás módosításról norvég nyelvű értesítést küldött a(z) '.$bookingArray['guest_email'].' email címre ('.implode(', ', $bookingArray).')', $data['currentUser']->username); + break; + case 'en': + $email_subject ='[studiobeve] Your booking has changed'; + $content = 'Dear Guest,
'; + $content .= 'We inform you that your booking has changed.
'; + $content .= '
'; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= '
Name: '.$bookingArray['guest_name'].'
Email: '.$bookingArray['guest_email'].'
Phone: '.$bookingArray['guest_phone'].'
Worker: '.$worker->worker_name.'
Date: '.$bookingArray['booking_date'].'
Time: '.$bookingArray['booking_start_time'].' - '.$bookingArray['booking_finish_time'].'
Services: '; + $totalServicePrice = 0; + foreach($serviceArray as $serviceArrayItem){ + $totalServicePrice += $serviceArrayItem->service_price; + $content .= ''; + } + $content .= '
'.$serviceArrayItem->service_name_en.''.$serviceArrayItem->service_price.' kr
Total price: '.$totalServicePrice.' kr
'; + $content .= '
STUDIOBEVE'; + $this->Log_model->addLog('bookings', $data['currentUser']->username.' foglalás módosításról angol nyelvű értesítést küldött a(z) '.$bookingArray['guest_email'].' email címre ('.implode(', ', $bookingArray).')', $data['currentUser']->username); + break; + case 'hu': + $email_subject ='[studiobeve] A foglalása módosult'; + $content = 'Kedves Vendégünk,
'; + $content .= 'Tájékoztatjuk, hogy a foglalása módosult.
'; + $content .= '
'; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= '
Név: '.$bookingArray['guest_name'].'
Email: '.$bookingArray['guest_email'].'
Telefon: '.$bookingArray['guest_phone'].'
Dolgozó: '.$worker->worker_name.'
Dátum: '.$bookingArray['booking_date'].'
Időpont: '.$bookingArray['booking_start_time'].' - '.$bookingArray['booking_finish_time'].'
Szolgáltatás(ok): '; + $totalServicePrice = 0; + foreach($serviceArray as $serviceArrayItem){ + $totalServicePrice += $serviceArrayItem->service_price; + $content .= ''; + } + $content .= '
'.$serviceArrayItem->service_name_hu.''.$serviceArrayItem->service_price.' kr
Összesen fizetendő: '.$totalServicePrice.' kr
'; + $content .= '
STUDIOBEVE'; + $this->Log_model->addLog('bookings', $data['currentUser']->username.' foglalás módosításról magyar nyelvű értesítést küldött a(z) '.$bookingArray['guest_email'].' email címre ('.implode(', ', $bookingArray).')', $data['currentUser']->username); + break; + } + + $data['selectedLang'] = $_POST['lang']; + + $emailItem = array( + 'addressee_email' => $bookingArray['guest_email'], + 'addressee_name' => $bookingArray['guest_name'], + 'subject' => $email_subject, + 'content' => $content, + 'attachments' => array() + ); + $emailArray[] = $emailItem; + + $this->User_model->sendEmail($emailArray, $_POST['lang'], ''); + } + header('Location:'.SITEURL.'bookings'); + } + + $this->load->view('admin/booking-process', $data); + } + } + + + + + + + + + + + + + + + + + + + + + + + +} diff --git a/application/controllers/Admin_20250312.php b/application/controllers/Admin_20250312.php new file mode 100755 index 0000000..c87a394 --- /dev/null +++ b/application/controllers/Admin_20250312.php @@ -0,0 +1,822 @@ + + * @see https://codeigniter.com/userguide3/general/urls.html + */ + public function dashboard(){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + $this->load->model('Module_model'); + + if(isset($_SESSION['username'])){ + $data['currentUser'] = $this->User_model->getUserByUsername($_SESSION['username']); + $data['pageTitle'] = 'Vezérlőpult'; + $data['message'] = ''; + $data['message_class'] = ''; + if($this->User_model->is_user_admin($_SESSION['username'])){ + $data['activeModules'] = $this->Module_model->getAllModule(); + } + else{ + $data['activeModules'] = $this->Module_model->getUserModules($data['currentUser']->user_id); + } + + $this->load->view('admin/dashboard', $data); + } + else{ + header("Location:".SITEURL."login"); + } + } + + public function services(){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + $this->load->model('Module_model'); + + if(isset($_SESSION['username'])){ + $data['currentUser'] = $this->User_model->getUserByUsername($_SESSION['username']); + $data['pageTitle'] = 'Szolgáltatások'; + $data['message'] = ''; + $data['message_class'] = ''; + if($this->User_model->is_user_admin($_SESSION['username'])){ + $data['activeModules'] = $this->Module_model->getAllModule(); + } + else{ + $data['activeModules'] = $this->Module_model->getUserModules($data['currentUser']->user_id); + } + + $data['results'] = $this->Service_model->getAllServices(); + + $this->load->view('admin/services', $data); + } + else{ + header("Location:".SITEURL."login"); + } + } + + public function add_service(){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + $this->load->model('Module_model'); + + if(isset($_SESSION['username'])){ + $data['currentUser'] = $this->User_model->getUserByUsername($_SESSION['username']); + $data['pageTitle'] = 'Szolgáltatás hozzáadás'; + $data['message'] = ''; + $data['message_class'] = ''; + if($this->User_model->is_user_admin($_SESSION['username'])){ + $data['activeModules'] = $this->Module_model->getAllModule(); + } + else{ + $data['activeModules'] = $this->Module_model->getUserModules($data['currentUser']->user_id); + } + + + $this->load->view('admin/add-service', $data); + } + else{ + header("Location:".SITEURL."login"); + } + } + + public function update_service($service_id){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + $this->load->model('Module_model'); + + if(isset($_SESSION['username'])){ + $data['currentUser'] = $this->User_model->getUserByUsername($_SESSION['username']); + $data['pageTitle'] = 'Szolgáltatás módosítása (#'.$service_id.')'; + $data['message'] = ''; + $data['message_class'] = ''; + if($this->User_model->is_user_admin($_SESSION['username'])){ + $data['activeModules'] = $this->Module_model->getAllModule(); + } + else{ + $data['activeModules'] = $this->Module_model->getUserModules($data['currentUser']->user_id); + } + + $data['selectedItem'] = $this->Service_model->getServiceById($service_id); + $this->load->view('admin/update-service', $data); + } + else{ + header("Location:".SITEURL."login"); + } + } + + public function service_process(){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + $this->load->model('Log_model'); + + if(isset($_SESSION['username'])){ + $data['currentUser'] = $this->User_model->getUserByUsername($_SESSION['username']); + $data['pageTitle'] = ''; + $data['message'] = ''; + $data['message_class'] = ''; + + if(isset($_GET['delete-service'])){ + $selected_service = $this->Service_model->getServiceById($_GET['delete-service']); + $serviceArray = array( + 'is_deleted' => '1' + ); + + $this->Service_model->updateService($_GET['delete-service'], $serviceArray); + $this->Log_model->addLog('services', $data['currentUser']->username.' törölte a(z) '.$_GET['delete-service'].' számú szolgáltatást ('.$selected_service->service_name_hu.')', $data['currentUser']->username); + + } + + if(isset($_POST['addNewService'])){ + $serviceArray = array( + 'service_type' => $_POST['service_type'], + 'service_category_no' => $_POST['service_category_no'], + 'service_category_en' => $_POST['service_category_en'], + 'service_category_hu' => $_POST['service_category_hu'], + 'service_name_no' => $_POST['service_name_no'], + 'service_name_en' => $_POST['service_name_en'], + 'service_name_hu' => $_POST['service_name_hu'], + 'service_description_no' => $_POST['service_description_no'], + 'service_description_en' => $_POST['service_description_en'], + 'service_description_hu' => $_POST['service_description_hu'], + 'service_price' => $_POST['service_price'], + 'service_time' => $_POST['service_time'], + 'is_enabled' => $_POST['is_enabled'] + ); + + $this->Log_model->addLog('services', $data['currentUser']->username.' hozzáadta a(z) '.$_POST['service_name_hu'].' szolgáltatást ('.implode(',',$serviceArray).')', $data['currentUser']->username); + $this->Service_model->createService($serviceArray); + } + + if(isset($_POST['updateService'])){ + $serviceArray = array( + 'service_type' => $_POST['service_type'], + 'service_category_no' => $_POST['service_category_no'], + 'service_category_en' => $_POST['service_category_en'], + 'service_category_hu' => $_POST['service_category_hu'], + 'service_name_no' => $_POST['service_name_no'], + 'service_name_en' => $_POST['service_name_en'], + 'service_name_hu' => $_POST['service_name_hu'], + 'service_description_no' => $_POST['service_description_no'], + 'service_description_en' => $_POST['service_description_en'], + 'service_description_hu' => $_POST['service_description_hu'], + 'service_price' => $_POST['service_price'], + 'service_time' => $_POST['service_time'], + 'is_enabled' => $_POST['is_enabled'] + ); + + $this->Log_model->addLog('services', $data['currentUser']->username.' módosította a(z) '.$_POST['service_name_hu'].' szolgáltatást ('.implode(',',$serviceArray).')', $data['currentUser']->username); + $this->Service_model->updateService($_POST['service_id'], $serviceArray); + } + + header('Location:'.SITEURL.'services'); + $this->load->view('admin/service-process', $data); + } + } + + public function workers(){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + $this->load->model('Module_model'); + + if(isset($_SESSION['username'])){ + $data['currentUser'] = $this->User_model->getUserByUsername($_SESSION['username']); + $data['pageTitle'] = 'Dolgozók'; + $data['message'] = ''; + $data['message_class'] = ''; + if($this->User_model->is_user_admin($_SESSION['username'])){ + $data['activeModules'] = $this->Module_model->getAllModule(); + } + else{ + $data['activeModules'] = $this->Module_model->getUserModules($data['currentUser']->user_id); + } + + $data['results'] = $this->Service_model->getAllWorkers(); + + $this->load->view('admin/workers', $data); + } + else{ + header("Location:".SITEURL."login"); + } + } + + public function add_worker(){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + $this->load->model('Module_model'); + + if(isset($_SESSION['username'])){ + $data['currentUser'] = $this->User_model->getUserByUsername($_SESSION['username']); + $data['pageTitle'] = 'Dolgozó hozzáadása'; + $data['message'] = ''; + $data['message_class'] = ''; + if($this->User_model->is_user_admin($_SESSION['username'])){ + $data['activeModules'] = $this->Module_model->getAllModule(); + } + else{ + $data['activeModules'] = $this->Module_model->getUserModules($data['currentUser']->user_id); + } + + + $this->load->view('admin/add-worker', $data); + } + else{ + header("Location:".SITEURL."login"); + } + } + + public function update_worker($worker_id){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + $this->load->model('Module_model'); + + if(isset($_SESSION['username'])){ + $data['currentUser'] = $this->User_model->getUserByUsername($_SESSION['username']); + $data['pageTitle'] = 'Dolgozó módosítása (#'.$worker_id.')'; + $data['message'] = ''; + $data['message_class'] = ''; + if($this->User_model->is_user_admin($_SESSION['username'])){ + $data['activeModules'] = $this->Module_model->getAllModule(); + } + else{ + $data['activeModules'] = $this->Module_model->getUserModules($data['currentUser']->user_id); + } + + $data['selectedItem'] = $this->Service_model->getWorkerById($worker_id); + $this->load->view('admin/update-worker', $data); + } + else{ + header("Location:".SITEURL."login"); + } + } + + public function worker_process(){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + $this->load->model('Log_model'); + + if(isset($_SESSION['username'])){ + $data['currentUser'] = $this->User_model->getUserByUsername($_SESSION['username']); + $data['pageTitle'] = ''; + $data['message'] = ''; + $data['message_class'] = ''; + + if(isset($_GET['delete-worker'])){ + $selected_worker = $this->Service_model->getWorkerById($_GET['delete-worker']); + $workerArray = array( + 'is_deleted' => '1' + ); + + $this->Service_model->updateWorker($_GET['delete-worker'], $workerArray); + $this->Log_model->addLog('workers', $data['currentUser']->username.' törölte a(z) '.$_GET['delete-worker'].' számú dolgozót ('.$selected_worker->worker_name.')', $data['currentUser']->username); + } + + + if(isset($_POST['addNewWorker'])){ + + $data['worker_img'] = ''; + + if($_FILES["worker_img"]["tmp_name"] != ''){ + $target_dir = getcwd()."/assets/img/"; + $target_file = $target_dir . 'worker_'.str_replace(' ','_', $_POST['worker_name']); + $imageFileType = strtolower(pathinfo(basename($_FILES["worker_img"]["name"]),PATHINFO_EXTENSION)); + + if (move_uploaded_file($_FILES["worker_img"]["tmp_name"], $target_file.'.'.$imageFileType)) { + $data['message'] = 'A profilkép sikeresen feltöltve!'; + $data['message_class'] = 'successMessage'; + $data['worker_img'] = 'worker_'.str_replace(' ','_', $_POST['worker_name']).'.'.$imageFileType; + + } else { + $data['message'] = 'Hiba a feltöltés közben!'; + $data['message_class'] = 'errorMessage'; + } + + } + + $workerArray = array( + 'worker_name' => $_POST['worker_name'], + 'worker_info' => $_POST['worker_info'], + 'worker_profile_img' => $data['worker_img'], + 'is_active' => $_POST['is_active'] + ); + + $this->Log_model->addLog('workers', $data['currentUser']->username.' létrehozta a(z) '.$_POST['worker_name'].' nevű dolgozót ('.implode(',',$workerArray).')', $data['currentUser']->username); + $this->Service_model->createWorker($workerArray); + } + + if(isset($_POST['updateWorker'])){ + $workerArray = array( + 'worker_name' => $_POST['worker_name'], + 'worker_info' => $_POST['worker_info'], + 'is_active' => $_POST['is_active'] + ); + $this->Service_model->updateWorker($_POST['worker_id'], $workerArray); + $this->Log_model->addLog('workers', $data['currentUser']->username.' módosította a(z) '.$_POST['worker_name'].' nevű dolgozót ('.implode(',',$workerArray).')', $data['currentUser']->username); + + if($_FILES["worker_img"]["tmp_name"] != ''){ + $target_dir = getcwd()."/assets/img/"; + $target_file = $target_dir . 'worker_'.str_replace(' ','_', $_POST['worker_name']); + $imageFileType = strtolower(pathinfo(basename($_FILES["worker_img"]["name"]),PATHINFO_EXTENSION)); + + if (move_uploaded_file($_FILES["worker_img"]["tmp_name"], $target_file.'.'.$imageFileType)) { + $data['message'] = 'A profilkép sikeresen feltöltve!'; + $data['message_class'] = 'successMessage'; + $data['worker_img'] = 'worker_'.str_replace(' ','_', $_POST['worker_name']).'.'.$imageFileType; + $workerArray = array( + 'worker_profile_img' => $data['worker_img'] + ); + + $this->Log_model->addLog('workers', $data['currentUser']->username.' profilképet állított be a(z) '.$_POST['worker_name'].' nevű dolgozóhoz', $data['currentUser']->username); + $this->Service_model->updateWorker($_POST['worker_id'], $workerArray); + + } else { + $data['message'] = 'Hiba a feltöltés közben!'; + $data['message_class'] = 'errorMessage'; + } + + } + } + header("Location:".SITEURL."workers"); + $this->load->view('admin/worker-process', $data); + } + } + + public function bookings(){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + $this->load->model('Module_model'); + + if(isset($_SESSION['username'])){ + $data['currentUser'] = $this->User_model->getUserByUsername($_SESSION['username']); + $data['pageTitle'] = 'Foglalások'; + $data['message'] = ''; + $data['message_class'] = ''; + if($this->User_model->is_user_admin($_SESSION['username'])){ + $data['activeModules'] = $this->Module_model->getAllModule(); + } + else{ + $data['activeModules'] = $this->Module_model->getUserModules($data['currentUser']->user_id); + } + + $data['results'] = $this->Service_model->getActualBookings(); + + $this->load->view('admin/bookings', $data); + } + else{ + header("Location:".SITEURL."login"); + } + } + + public function add_booking(){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + $this->load->model('Module_model'); + + if(isset($_SESSION['username'])){ + $data['currentUser'] = $this->User_model->getUserByUsername($_SESSION['username']); + $data['pageTitle'] = 'Foglalás hozzáadása'; + $data['message'] = ''; + $data['message_class'] = ''; + if($this->User_model->is_user_admin($_SESSION['username'])){ + $data['activeModules'] = $this->Module_model->getAllModule(); + } + else{ + $data['activeModules'] = $this->Module_model->getUserModules($data['currentUser']->user_id); + } + + $available_services = $this->Service_model->getAvailableServices(); + + $serviceFile = fopen("load_services.json", "w") or die("Unable to open file!"); + fwrite($serviceFile, json_encode($available_services)); + fclose($serviceFile); + + $data['workers'] = $this->Service_model->getAllWorkers(); + $this->load->view('admin/add-booking', $data); + } + else{ + header("Location:".SITEURL."login"); + } + } + + public function update_booking($booking_id){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + $this->load->model('Module_model'); + + if(isset($_SESSION['username'])){ + $data['currentUser'] = $this->User_model->getUserByUsername($_SESSION['username']); + $data['pageTitle'] = 'Foglalás módosítása (#'.$booking_id.')'; + $data['message'] = ''; + $data['message_class'] = ''; + if($this->User_model->is_user_admin($_SESSION['username'])){ + $data['activeModules'] = $this->Module_model->getAllModule(); + } + else{ + $data['activeModules'] = $this->Module_model->getUserModules($data['currentUser']->user_id); + } + + $available_services = $this->Service_model->getAvailableServices(); + + $serviceFile = fopen("load_services.json", "w") or die("Unable to open file!"); + fwrite($serviceFile, json_encode($available_services)); + fclose($serviceFile); + + $data['workers'] = $this->Service_model->getAllWorkers(); + $data['selectedItem'] = $this->Service_model->getBookingById($booking_id); + $this->load->view('admin/update-booking', $data); + } + else{ + header("Location:".SITEURL."login"); + } + } + + public function booking_process(){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + $this->load->model('Log_model'); + + if(isset($_SESSION['username'])){ + $data['currentUser'] = $this->User_model->getUserByUsername($_SESSION['username']); + $data['pageTitle'] = ''; + $data['message'] = ''; + $data['message_class'] = ''; + + if(isset($_GET['delete-booking'])){ + $selectedBooking = $this->Service_model->getBookingById($_GET['delete-booking']); + $this->Service_model->deleteBooking($_GET['delete-booking']); + $this->Log_model->addLog('bookings', $data['currentUser']->username.' törölte a(z) '.$_GET['delete-booking'].' számú foglalást ('.$selectedBooking->guest_name.', '.$selectedBooking->guest_email.', '.$selectedBooking->guest_phone.', '.$selectedBooking->booking_date.', '.$selectedBooking->booking_start_time.', '.$selectedBooking->booking_finish_time.', '.$selectedBooking->service_ids.')', $data['currentUser']->username); + header('Location:'.SITEURL.'bookings'); + } + + if(isset($_POST['addNewBookingManual'])){ + $booking_date = new DateTime(date('Y-m-d', strtotime($_POST['booking_date']))); + $end_booking_date = new DateTime(date('Y-m-d', strtotime($_POST['end_booking_date']))); + $diff = $booking_date->diff($end_booking_date); + + $selectedServiceArray = array(); + + if($_POST['service_ids'] != ''){ + $selectedServiceArray = explode(',', $_POST['service_ids']); + + } + + if($_POST['booking_date'] != $_POST['end_booking_date'] && $booking_date <= $end_booking_date){ + for($index = 0; $index <= $diff->days; $index++){ + $selectedDate = date('Y-m-d', strtotime($_POST['booking_date']. ' + '.$index.' days')); + + + $bookingArray = array( + 'guest_name' => $_POST['guest_name'], + 'guest_email' => $_POST['guest_email'], + 'guest_phone' => $_POST['guest_phone'], + 'worker_id' => $_POST['worker_id'], + 'booking_date' => $selectedDate, + 'booking_start_time' => $_POST['booking_start_time'], + 'booking_finish_time' => $_POST['booking_finish_time'], + 'service_ids' => serialize($selectedServiceArray), + 'guest_confirmed' => '0', + 'guest_confirm_code' => '1234', + ); + + $this->Service_model->createBooking($bookingArray); + } + } + else{ + $bookingArray = array( + 'guest_name' => $_POST['guest_name'], + 'guest_email' => $_POST['guest_email'], + 'guest_phone' => $_POST['guest_phone'], + 'worker_id' => $_POST['worker_id'], + 'booking_date' => $_POST['booking_date'], + 'booking_start_time' => $_POST['booking_start_time'], + 'booking_finish_time' => $_POST['booking_finish_time'], + 'service_ids' => serialize($selectedServiceArray), + 'guest_confirmed' => '0', + 'guest_confirm_code' => '1234', + ); + $this->Log_model->addLog('bookings', $data['currentUser']->username.' létrehoza a(z) '.$_POST['guest_name'].' nevű vendég foglalást ('.implode(', ', $bookingArray).')', $data['currentUser']->username); + $this->Service_model->createBooking($bookingArray); + } + + if($_POST['send_notification']){ + $worker = $this->Service_model->getWorkerById($bookingArray['worker_id']); + + $services = unserialize($bookingArray['service_ids']); + $serviceArray = array(); + $emailArray = array(); + + if(is_array($services)){ + foreach($services as $serviceItem){ + $selectedService = $this->Service_model->getServiceById($serviceItem); + if(is_object($selectedService)){ + $serviceArray[] = $selectedService; + } + } + } + + $content = ''; + + switch($_POST['lang']){ + case 'no': + $content = 'Kjære gjest,
'; + $content .= 'Takk for din bestilling!
'; + $content .= '
'; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= '
Navn: '.$bookingArray['guest_name'].'
E-post: '.$bookingArray['guest_email'].'
Telefon: '.$bookingArray['guest_phone'].'
Arbeider: '.$worker->worker_name.'
Dato: '.$bookingArray['booking_date'].'
Tid: '.$bookingArray['booking_start_time'].' - '.$bookingArray['booking_finish_time'].'
Tjenester: '; + $totalServicePrice = 0; + foreach($serviceArray as $serviceArrayItem){ + $totalServicePrice += $serviceArrayItem->service_price; + $content .= ''; + } + $content .= '
'.$serviceArrayItem->service_name_no.''.$serviceArrayItem->service_price.' kr
Totalpris: '.$totalServicePrice.' kr
'; + $content .= '
STUDIOBEVE'; + $this->Log_model->addLog('bookings', $data['currentUser']->username.' új foglalásról norvég nyelvű értesítést küldött a(z) '.$bookingArray['guest_email'].' email címre ('.implode(', ', $bookingArray).')', $data['currentUser']->username); + break; + case 'en': + $content = 'Dear Guest,
'; + $content .= 'Thank you for your booking!
'; + $content .= '
'; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= '
Name: '.$bookingArray['guest_name'].'
Email: '.$bookingArray['guest_email'].'
Phone: '.$bookingArray['guest_phone'].'
Worker: '.$worker->worker_name.'
Date: '.$bookingArray['booking_date'].'
Time: '.$bookingArray['booking_start_time'].' - '.$bookingArray['booking_finish_time'].'
Services: '; + $totalServicePrice = 0; + foreach($serviceArray as $serviceArrayItem){ + $totalServicePrice += $serviceArrayItem->service_price; + $content .= ''; + } + $content .= '
'.$serviceArrayItem->service_name_en.''.$serviceArrayItem->service_price.' kr
Total price: '.$totalServicePrice.' kr
'; + $content .= '
STUDIOBEVE'; + $this->Log_model->addLog('bookings', $data['currentUser']->username.' új foglalásról angol nyelvű értesítést küldött a(z) '.$bookingArray['guest_email'].' email címre ('.implode(', ', $bookingArray).')', $data['currentUser']->username); + break; + case 'hu': + $content = 'Kedves Vendégünk,
'; + $content .= 'Köszönettel fogadtuk a foglalását!
'; + $content .= '
'; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= '
Név: '.$bookingArray['guest_name'].'
Email: '.$bookingArray['guest_email'].'
Telefon: '.$bookingArray['guest_phone'].'
Dolgozó: '.$worker->worker_name.'
Dátum: '.$bookingArray['booking_date'].'
Időpont: '.$bookingArray['booking_start_time'].' - '.$bookingArray['booking_finish_time'].'
Szolgáltatás(ok): '; + $totalServicePrice = 0; + foreach($serviceArray as $serviceArrayItem){ + $totalServicePrice += $serviceArrayItem->service_price; + $content .= ''; + } + $content .= '
'.$serviceArrayItem->service_name_hu.''.$serviceArrayItem->service_price.' kr
Összesen fizetendő: '.$totalServicePrice.' kr
'; + $content .= '
STUDIOBEVE'; + $this->Log_model->addLog('bookings', $data['currentUser']->username.' új foglalásról magyar nyelvű értesítést küldött a(z) '.$bookingArray['guest_email'].' email címre ('.implode(', ', $bookingArray).')', $data['currentUser']->username); + break; + } + + $data['selectedLang'] = $_POST['lang']; + + $emailItem = array( + 'addressee_email' => $bookingArray['guest_email'], + 'addressee_name' => $bookingArray['guest_name'], + 'subject' => '[studiobeve] Your booking has arrived', + 'content' => $content, + 'attachments' => array() + ); + $emailArray[] = $emailItem; + + + $this->User_model->sendEmail($emailArray, $_POST['lang'], ''); + } + header('Location:'.SITEURL.'bookings'); + } + + if(isset($_POST['updateBookingManual'])){ + $booking_date = new DateTime(date('Y-m-d', strtotime($_POST['booking_date']))); + $end_booking_date = new DateTime(date('Y-m-d', strtotime($_POST['end_booking_date']))); + $diff = $booking_date->diff($end_booking_date); + + $selectedServiceArray = array(); + + if($_POST['service_ids'] != ''){ + $selectedServiceArray = explode(',', $_POST['service_ids']); + + } + + if($_POST['booking_date'] != $_POST['end_booking_date'] && $booking_date <= $end_booking_date){ + for($index = 0; $index <= $diff->days; $index++){ + $selectedDate = date('Y-m-d', strtotime($_POST['booking_date']. ' + '.$index.' days')); + + + $bookingArray = array( + 'guest_name' => $_POST['guest_name'], + 'guest_email' => $_POST['guest_email'], + 'guest_phone' => $_POST['guest_phone'], + 'worker_id' => $_POST['worker_id'], + 'booking_date' => $selectedDate, + 'booking_start_time' => $_POST['booking_start_time'], + 'booking_finish_time' => $_POST['booking_finish_time'], + 'service_ids' => serialize($selectedServiceArray), + 'guest_confirmed' => '0', + 'guest_confirm_code' => '1234' + ); + + $this->Service_model->createBooking($bookingArray); + } + } + else{ + $bookingArray = array( + 'guest_name' => $_POST['guest_name'], + 'guest_email' => $_POST['guest_email'], + 'guest_phone' => $_POST['guest_phone'], + 'worker_id' => $_POST['worker_id'], + 'booking_date' => $_POST['booking_date'], + 'booking_start_time' => $_POST['booking_start_time'], + 'booking_finish_time' => $_POST['booking_finish_time'], + 'service_ids' => serialize($selectedServiceArray), + 'guest_confirmed' => '0', + 'guest_confirm_code' => '1234' + ); + + $this->Service_model->updateBooking($_POST['booking_id'], $bookingArray); + $this->Log_model->addLog('bookings', $data['currentUser']->username.' módosította a foglalását a(z) '.$bookingArray['guest_name'].' nevű vendégnek ('.implode(', ', $bookingArray).')', $data['currentUser']->username); + } + + if($_POST['send_notification']){ + $worker = $this->Service_model->getWorkerById($bookingArray['worker_id']); + + $services = unserialize($bookingArray['service_ids']); + $serviceArray = array(); + $emailArray = array(); + + if(is_array($services)){ + foreach($services as $serviceItem){ + $selectedService = $this->Service_model->getServiceById($serviceItem); + if(is_object($selectedService)){ + $serviceArray[] = $selectedService; + } + } + } + + $content = ''; + + $email_subject =''; + + switch($_POST['lang']){ + case 'no': + $email_subject ='[studiobeve] Din reservasjon er endret'; + $content = 'Kjære gjest,
'; + $content .= 'Vi vil gjerne informere deg om at din reservasjon er endret.
'; + $content .= '
'; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= '
Navn: '.$bookingArray['guest_name'].'
E-post: '.$bookingArray['guest_email'].'
Telefon: '.$bookingArray['guest_phone'].'
Arbeider: '.$worker->worker_name.'
Dato: '.$bookingArray['booking_date'].'
Tid: '.$bookingArray['booking_start_time'].' - '.$bookingArray['booking_finish_time'].'
Tjenester: '; + $totalServicePrice = 0; + foreach($serviceArray as $serviceArrayItem){ + $totalServicePrice += $serviceArrayItem->service_price; + $content .= ''; + } + $content .= '
'.$serviceArrayItem->service_name_no.''.$serviceArrayItem->service_price.' kr
Totalpris: '.$totalServicePrice.' kr
'; + $content .= '
STUDIOBEVE'; + $this->Log_model->addLog('bookings', $data['currentUser']->username.' foglalás módosításról norvég nyelvű értesítést küldött a(z) '.$bookingArray['guest_email'].' email címre ('.implode(', ', $bookingArray).')', $data['currentUser']->username); + break; + case 'en': + $email_subject ='[studiobeve] Your booking has changed'; + $content = 'Dear Guest,
'; + $content .= 'We inform you that your booking has changed.
'; + $content .= '
'; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= '
Name: '.$bookingArray['guest_name'].'
Email: '.$bookingArray['guest_email'].'
Phone: '.$bookingArray['guest_phone'].'
Worker: '.$worker->worker_name.'
Date: '.$bookingArray['booking_date'].'
Time: '.$bookingArray['booking_start_time'].' - '.$bookingArray['booking_finish_time'].'
Services: '; + $totalServicePrice = 0; + foreach($serviceArray as $serviceArrayItem){ + $totalServicePrice += $serviceArrayItem->service_price; + $content .= ''; + } + $content .= '
'.$serviceArrayItem->service_name_en.''.$serviceArrayItem->service_price.' kr
Total price: '.$totalServicePrice.' kr
'; + $content .= '
STUDIOBEVE'; + $this->Log_model->addLog('bookings', $data['currentUser']->username.' foglalás módosításról angol nyelvű értesítést küldött a(z) '.$bookingArray['guest_email'].' email címre ('.implode(', ', $bookingArray).')', $data['currentUser']->username); + break; + case 'hu': + $email_subject ='[studiobeve] A foglalása módosult'; + $content = 'Kedves Vendégünk,
'; + $content .= 'Tájékoztatjuk, hogy a foglalása módosult.
'; + $content .= '
'; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= '
Név: '.$bookingArray['guest_name'].'
Email: '.$bookingArray['guest_email'].'
Telefon: '.$bookingArray['guest_phone'].'
Dolgozó: '.$worker->worker_name.'
Dátum: '.$bookingArray['booking_date'].'
Időpont: '.$bookingArray['booking_start_time'].' - '.$bookingArray['booking_finish_time'].'
Szolgáltatás(ok): '; + $totalServicePrice = 0; + foreach($serviceArray as $serviceArrayItem){ + $totalServicePrice += $serviceArrayItem->service_price; + $content .= ''; + } + $content .= '
'.$serviceArrayItem->service_name_hu.''.$serviceArrayItem->service_price.' kr
Összesen fizetendő: '.$totalServicePrice.' kr
'; + $content .= '
STUDIOBEVE'; + $this->Log_model->addLog('bookings', $data['currentUser']->username.' foglalás módosításról magyar nyelvű értesítést küldött a(z) '.$bookingArray['guest_email'].' email címre ('.implode(', ', $bookingArray).')', $data['currentUser']->username); + break; + } + + $data['selectedLang'] = $_POST['lang']; + + $emailItem = array( + 'addressee_email' => $bookingArray['guest_email'], + 'addressee_name' => $bookingArray['guest_name'], + 'subject' => $email_subject, + 'content' => $content, + 'attachments' => array() + ); + $emailArray[] = $emailItem; + + $this->User_model->sendEmail($emailArray, $_POST['lang'], ''); + } + header('Location:'.SITEURL.'bookings'); + } + + $this->load->view('admin/booking-process', $data); + } + } + + + + + + + + + + + + + + + + + + + + + + + +} diff --git a/application/controllers/Admin_20250524.php b/application/controllers/Admin_20250524.php new file mode 100755 index 0000000..bf200b2 --- /dev/null +++ b/application/controllers/Admin_20250524.php @@ -0,0 +1,963 @@ + + * @see https://codeigniter.com/userguide3/general/urls.html + */ + public function dashboard(){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + $this->load->model('Module_model'); + + if(isset($_SESSION['username'])){ + $data['currentUser'] = $this->User_model->getUserByUsername($_SESSION['username']); + $data['pageTitle'] = 'Vezérlőpult'; + $data['message'] = ''; + $data['message_class'] = ''; + if($this->User_model->is_user_admin($_SESSION['username'])){ + $data['activeModules'] = $this->Module_model->getAllModule(); + } + else{ + $data['activeModules'] = $this->Module_model->getUserModules($data['currentUser']->user_id); + } + + $this->load->view('admin/dashboard', $data); + } + else{ + header("Location:".SITEURL."login"); + } + } + + public function services(){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + $this->load->model('Module_model'); + + if(isset($_SESSION['username'])){ + $data['currentUser'] = $this->User_model->getUserByUsername($_SESSION['username']); + $data['pageTitle'] = 'Szolgáltatások'; + $data['message'] = ''; + $data['message_class'] = ''; + if($this->User_model->is_user_admin($_SESSION['username'])){ + $data['activeModules'] = $this->Module_model->getAllModule(); + } + else{ + $data['activeModules'] = $this->Module_model->getUserModules($data['currentUser']->user_id); + } + + $data['results'] = $this->Service_model->getAllServices(); + + $this->load->view('admin/services', $data); + } + else{ + header("Location:".SITEURL."login"); + } + } + + public function add_service(){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + $this->load->model('Module_model'); + + if(isset($_SESSION['username'])){ + $data['currentUser'] = $this->User_model->getUserByUsername($_SESSION['username']); + $data['pageTitle'] = 'Szolgáltatás hozzáadás'; + $data['message'] = ''; + $data['message_class'] = ''; + if($this->User_model->is_user_admin($_SESSION['username'])){ + $data['activeModules'] = $this->Module_model->getAllModule(); + } + else{ + $data['activeModules'] = $this->Module_model->getUserModules($data['currentUser']->user_id); + } + + $data['serviceCategories'] = $this->Service_model->getAllServiceCategories(); + $this->load->view('admin/add-service', $data); + } + else{ + header("Location:".SITEURL."login"); + } + } + + public function update_service($service_id){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + $this->load->model('Module_model'); + + if(isset($_SESSION['username'])){ + $data['currentUser'] = $this->User_model->getUserByUsername($_SESSION['username']); + $data['pageTitle'] = 'Szolgáltatás módosítása (#'.$service_id.')'; + $data['message'] = ''; + $data['message_class'] = ''; + if($this->User_model->is_user_admin($_SESSION['username'])){ + $data['activeModules'] = $this->Module_model->getAllModule(); + } + else{ + $data['activeModules'] = $this->Module_model->getUserModules($data['currentUser']->user_id); + } + + $data['selectedItem'] = $this->Service_model->getServiceById($service_id); + $data['serviceCategories'] = $this->Service_model->getAllServiceCategories(); + $this->load->view('admin/update-service', $data); + } + else{ + header("Location:".SITEURL."login"); + } + } + + public function service_process(){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + $this->load->model('Log_model'); + + if(isset($_SESSION['username'])){ + $data['currentUser'] = $this->User_model->getUserByUsername($_SESSION['username']); + $data['pageTitle'] = ''; + $data['message'] = ''; + $data['message_class'] = ''; + + if(isset($_GET['delete-service'])){ + $selected_service = $this->Service_model->getServiceById($_GET['delete-service']); + $serviceArray = array( + 'is_deleted' => '1' + ); + + $this->Service_model->updateService($_GET['delete-service'], $serviceArray); + $this->Log_model->addLog('services', $data['currentUser']->username.' törölte a(z) '.$_GET['delete-service'].' számú szolgáltatást ('.$selected_service->service_name_hu.')', $data['currentUser']->username); + + } + + if(isset($_POST['addNewService'])){ + $serviceArray = array( + 'service_type' => $_POST['service_type'], + 'service_category_no' => $_POST['service_category_no'], + 'service_category_en' => $_POST['service_category_en'], + 'service_category_hu' => $_POST['service_category_hu'], + 'service_name_no' => $_POST['service_name_no'], + 'service_name_en' => $_POST['service_name_en'], + 'service_name_hu' => $_POST['service_name_hu'], + 'service_description_no' => $_POST['service_description_no'], + 'service_description_en' => $_POST['service_description_en'], + 'service_description_hu' => $_POST['service_description_hu'], + 'service_price' => $_POST['service_price'], + 'service_time' => $_POST['service_time'], + 'service_category_id' => $_POST['service_category_id'], + 'is_enabled' => $_POST['is_enabled'] + ); + + $this->Log_model->addLog('services', $data['currentUser']->username.' hozzáadta a(z) '.$_POST['service_name_hu'].' szolgáltatást ('.implode(',',$serviceArray).')', $data['currentUser']->username); + $this->Service_model->createService($serviceArray); + } + + if(isset($_POST['updateService'])){ + $serviceArray = array( + 'service_type' => $_POST['service_type'], + 'service_category_no' => $_POST['service_category_no'], + 'service_category_en' => $_POST['service_category_en'], + 'service_category_hu' => $_POST['service_category_hu'], + 'service_name_no' => $_POST['service_name_no'], + 'service_name_en' => $_POST['service_name_en'], + 'service_name_hu' => $_POST['service_name_hu'], + 'service_description_no' => $_POST['service_description_no'], + 'service_description_en' => $_POST['service_description_en'], + 'service_description_hu' => $_POST['service_description_hu'], + 'service_price' => $_POST['service_price'], + 'service_time' => $_POST['service_time'], + 'service_category_id' => $_POST['service_category_id'], + 'is_enabled' => $_POST['is_enabled'] + ); + + $this->Log_model->addLog('services', $data['currentUser']->username.' módosította a(z) '.$_POST['service_name_hu'].' szolgáltatást ('.implode(',',$serviceArray).')', $data['currentUser']->username); + $this->Service_model->updateService($_POST['service_id'], $serviceArray); + } + + header('Location:'.SITEURL.'services'); + $this->load->view('admin/service-process', $data); + } + } + + public function service_categories(){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + $this->load->model('Module_model'); + + if(isset($_SESSION['username'])){ + $data['currentUser'] = $this->User_model->getUserByUsername($_SESSION['username']); + $data['pageTitle'] = 'Szolgáltatás kategóriák'; + $data['message'] = ''; + $data['message_class'] = ''; + if($this->User_model->is_user_admin($_SESSION['username'])){ + $data['activeModules'] = $this->Module_model->getAllModule(); + } + else{ + $data['activeModules'] = $this->Module_model->getUserModules($data['currentUser']->user_id); + } + + $data['results'] = $this->Service_model->getAllServiceCategories(); + + $this->load->view('admin/service-categories', $data); + } + else{ + header("Location:".SITEURL."login"); + } + } + + public function add_service_category(){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + $this->load->model('Module_model'); + + if(isset($_SESSION['username'])){ + $data['currentUser'] = $this->User_model->getUserByUsername($_SESSION['username']); + $data['pageTitle'] = 'Szolgáltatás kategória hozzáadása'; + $data['message'] = ''; + $data['message_class'] = ''; + if($this->User_model->is_user_admin($_SESSION['username'])){ + $data['activeModules'] = $this->Module_model->getAllModule(); + } + else{ + $data['activeModules'] = $this->Module_model->getUserModules($data['currentUser']->user_id); + } + + + $this->load->view('admin/add-service-category', $data); + } + else{ + header("Location:".SITEURL."login"); + } + } + + public function update_service_category($service_category_id){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + $this->load->model('Module_model'); + + if(isset($_SESSION['username'])){ + $data['currentUser'] = $this->User_model->getUserByUsername($_SESSION['username']); + $data['pageTitle'] = 'Szolgáltatás módosítása (#'.$service_category_id.')'; + $data['message'] = ''; + $data['message_class'] = ''; + if($this->User_model->is_user_admin($_SESSION['username'])){ + $data['activeModules'] = $this->Module_model->getAllModule(); + } + else{ + $data['activeModules'] = $this->Module_model->getUserModules($data['currentUser']->user_id); + } + + $data['selectedItem'] = $this->Service_model->getServiceCategoryById($service_category_id); + $this->load->view('admin/update-service-category', $data); + } + else{ + header("Location:".SITEURL."login"); + } + } + + public function service_category_process(){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + $this->load->model('Log_model'); + + if(isset($_SESSION['username'])){ + $data['currentUser'] = $this->User_model->getUserByUsername($_SESSION['username']); + $data['pageTitle'] = ''; + $data['message'] = ''; + $data['message_class'] = ''; + + if(isset($_GET['delete-service-category'])){ + $selected_service = $this->Service_model->getServiceCategoryById($_GET['delete-service-category']); + $serviceArray = array( + 'is_deleted' => '1' + ); + + $this->Service_model->updateServiceCategory($_GET['delete-service-category'], $serviceArray); + + } + + if(isset($_POST['addNewServiceCategory'])){ + $serviceCategoryArray = array( + 'serv_cat_slug' => $_POST['serv_cat_slug'], + 'serv_cat_name' => $_POST['serv_cat_name'] + ); + + $this->Service_model->createServiceCategory($serviceCategoryArray); + } + + if(isset($_POST['updateServiceCategory'])){ + $serviceCategoryArray = array( + 'serv_cat_slug' => $_POST['serv_cat_slug'], + 'serv_cat_name' => $_POST['serv_cat_name'] + ); + + $this->Service_model->updateServiceCategory($_POST['service_category_id'], $serviceCategoryArray); + } + + header('Location:'.SITEURL.'service-categories'); + $this->load->view('admin/service-category-process', $data); + } + } + public function workers(){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + $this->load->model('Module_model'); + + if(isset($_SESSION['username'])){ + $data['currentUser'] = $this->User_model->getUserByUsername($_SESSION['username']); + $data['pageTitle'] = 'Dolgozók'; + $data['message'] = ''; + $data['message_class'] = ''; + if($this->User_model->is_user_admin($_SESSION['username'])){ + $data['activeModules'] = $this->Module_model->getAllModule(); + } + else{ + $data['activeModules'] = $this->Module_model->getUserModules($data['currentUser']->user_id); + } + + $data['results'] = $this->Service_model->getAllWorkers(); + + $this->load->view('admin/workers', $data); + } + else{ + header("Location:".SITEURL."login"); + } + } + + public function add_worker(){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + $this->load->model('Module_model'); + + if(isset($_SESSION['username'])){ + $data['currentUser'] = $this->User_model->getUserByUsername($_SESSION['username']); + $data['pageTitle'] = 'Dolgozó hozzáadása'; + $data['message'] = ''; + $data['message_class'] = ''; + if($this->User_model->is_user_admin($_SESSION['username'])){ + $data['activeModules'] = $this->Module_model->getAllModule(); + } + else{ + $data['activeModules'] = $this->Module_model->getUserModules($data['currentUser']->user_id); + } + + $data['serviceCategories'] = $this->Service_model->getAllServiceCategories(); + $this->load->view('admin/add-worker', $data); + } + else{ + header("Location:".SITEURL."login"); + } + } + + public function update_worker($worker_id){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + $this->load->model('Module_model'); + + if(isset($_SESSION['username'])){ + $data['currentUser'] = $this->User_model->getUserByUsername($_SESSION['username']); + $data['pageTitle'] = 'Dolgozó módosítása (#'.$worker_id.')'; + $data['message'] = ''; + $data['message_class'] = ''; + if($this->User_model->is_user_admin($_SESSION['username'])){ + $data['activeModules'] = $this->Module_model->getAllModule(); + } + else{ + $data['activeModules'] = $this->Module_model->getUserModules($data['currentUser']->user_id); + } + + $data['serviceCategories'] = $this->Service_model->getAllServiceCategories(); + $data['selectedItem'] = $this->Service_model->getWorkerById($worker_id); + $this->load->view('admin/update-worker', $data); + } + else{ + header("Location:".SITEURL."login"); + } + } + + public function worker_process(){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + $this->load->model('Log_model'); + + if(isset($_SESSION['username'])){ + $data['currentUser'] = $this->User_model->getUserByUsername($_SESSION['username']); + $data['pageTitle'] = ''; + $data['message'] = ''; + $data['message_class'] = ''; + + if(isset($_GET['delete-worker'])){ + $selected_worker = $this->Service_model->getWorkerById($_GET['delete-worker']); + $workerArray = array( + 'is_deleted' => '1' + ); + + $this->Service_model->updateWorker($_GET['delete-worker'], $workerArray); + $this->Log_model->addLog('workers', $data['currentUser']->username.' törölte a(z) '.$_GET['delete-worker'].' számú dolgozót ('.$selected_worker->worker_name.')', $data['currentUser']->username); + } + + + if(isset($_POST['addNewWorker'])){ + + $data['worker_img'] = ''; + + if($_FILES["worker_img"]["tmp_name"] != ''){ + $target_dir = getcwd()."/assets/img/"; + $target_file = $target_dir . 'worker_'.str_replace(' ','_', $_POST['worker_name']); + $imageFileType = strtolower(pathinfo(basename($_FILES["worker_img"]["name"]),PATHINFO_EXTENSION)); + + if (move_uploaded_file($_FILES["worker_img"]["tmp_name"], $target_file.'.'.$imageFileType)) { + $data['message'] = 'A profilkép sikeresen feltöltve!'; + $data['message_class'] = 'successMessage'; + $data['worker_img'] = 'worker_'.str_replace(' ','_', $_POST['worker_name']).'.'.$imageFileType; + + } else { + $data['message'] = 'Hiba a feltöltés közben!'; + $data['message_class'] = 'errorMessage'; + } + + } + + $workerArray = array( + 'worker_name' => $_POST['worker_name'], + 'worker_info' => $_POST['worker_info'], + 'is_beauty' => $_POST['is_beauty'], + 'is_barber' => $_POST['is_barber'], + 'worker_profile_img' => $data['worker_img'], + 'service_category_id' => $data['service_category_id'], + 'is_active' => $_POST['is_active'] + ); + + $this->Log_model->addLog('workers', $data['currentUser']->username.' létrehozta a(z) '.$_POST['worker_name'].' nevű dolgozót ('.implode(',',$workerArray).')', $data['currentUser']->username); + $this->Service_model->createWorker($workerArray); + } + + if(isset($_POST['updateWorker'])){ + $workerArray = array( + 'worker_name' => $_POST['worker_name'], + 'worker_info' => $_POST['worker_info'], + 'is_beauty' => $_POST['is_beauty'], + 'is_barber' => $_POST['is_barber'], + 'service_category_id' => $_POST['service_category_id'], + 'is_active' => $_POST['is_active'] + ); + $this->Service_model->updateWorker($_POST['worker_id'], $workerArray); + $this->Log_model->addLog('workers', $data['currentUser']->username.' módosította a(z) '.$_POST['worker_name'].' nevű dolgozót ('.implode(',',$workerArray).')', $data['currentUser']->username); + + if($_FILES["worker_img"]["tmp_name"] != ''){ + $target_dir = getcwd()."/assets/img/"; + $target_file = $target_dir . 'worker_'.str_replace(' ','_', $_POST['worker_name']); + $imageFileType = strtolower(pathinfo(basename($_FILES["worker_img"]["name"]),PATHINFO_EXTENSION)); + + if (move_uploaded_file($_FILES["worker_img"]["tmp_name"], $target_file.'.'.$imageFileType)) { + $data['message'] = 'A profilkép sikeresen feltöltve!'; + $data['message_class'] = 'successMessage'; + $data['worker_img'] = 'worker_'.str_replace(' ','_', $_POST['worker_name']).'.'.$imageFileType; + $workerArray = array( + 'worker_profile_img' => $data['worker_img'] + ); + + $this->Log_model->addLog('workers', $data['currentUser']->username.' profilképet állított be a(z) '.$_POST['worker_name'].' nevű dolgozóhoz', $data['currentUser']->username); + $this->Service_model->updateWorker($_POST['worker_id'], $workerArray); + + } else { + $data['message'] = 'Hiba a feltöltés közben!'; + $data['message_class'] = 'errorMessage'; + } + + } + } + header("Location:".SITEURL."workers"); + $this->load->view('admin/worker-process', $data); + } + } + + public function bookings(){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + $this->load->model('Module_model'); + + if(isset($_SESSION['username'])){ + $data['currentUser'] = $this->User_model->getUserByUsername($_SESSION['username']); + $data['pageTitle'] = 'Foglalások'; + $data['message'] = ''; + $data['message_class'] = ''; + if($this->User_model->is_user_admin($_SESSION['username'])){ + $data['activeModules'] = $this->Module_model->getAllModule(); + } + else{ + $data['activeModules'] = $this->Module_model->getUserModules($data['currentUser']->user_id); + } + + $data['workers'] = $this->Service_model->getActiveWorkers(); + + if(isset($_GET['worker'])){ + $data['results'] = $this->Service_model->getActualBookingsByWorkerID($_GET['worker']); + } + else{ + $data['results'] = $this->Service_model->getActualBookings(); + } + + + $this->load->view('admin/bookings', $data); + } + else{ + header("Location:".SITEURL."login"); + } + } + + public function add_booking(){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + $this->load->model('Module_model'); + + if(isset($_SESSION['username'])){ + $data['currentUser'] = $this->User_model->getUserByUsername($_SESSION['username']); + $data['pageTitle'] = 'Foglalás hozzáadása'; + $data['message'] = ''; + $data['message_class'] = ''; + if($this->User_model->is_user_admin($_SESSION['username'])){ + $data['activeModules'] = $this->Module_model->getAllModule(); + } + else{ + $data['activeModules'] = $this->Module_model->getUserModules($data['currentUser']->user_id); + } + + $available_services = $this->Service_model->getAvailableServices(); + + $serviceFile = fopen("load_services.json", "w") or die("Unable to open file!"); + fwrite($serviceFile, json_encode($available_services)); + fclose($serviceFile); + + $data['workers'] = $this->Service_model->getAllWorkers(); + $this->load->view('admin/add-booking', $data); + } + else{ + header("Location:".SITEURL."login"); + } + } + + public function update_booking($booking_id){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + $this->load->model('Module_model'); + + if(isset($_SESSION['username'])){ + $data['currentUser'] = $this->User_model->getUserByUsername($_SESSION['username']); + $data['pageTitle'] = 'Foglalás módosítása (#'.$booking_id.')'; + $data['message'] = ''; + $data['message_class'] = ''; + if($this->User_model->is_user_admin($_SESSION['username'])){ + $data['activeModules'] = $this->Module_model->getAllModule(); + } + else{ + $data['activeModules'] = $this->Module_model->getUserModules($data['currentUser']->user_id); + } + + $available_services = $this->Service_model->getAvailableServices(); + + $serviceFile = fopen("load_services.json", "w") or die("Unable to open file!"); + fwrite($serviceFile, json_encode($available_services)); + fclose($serviceFile); + + $data['workers'] = $this->Service_model->getAllWorkers(); + $data['selectedItem'] = $this->Service_model->getBookingById($booking_id); + $this->load->view('admin/update-booking', $data); + } + else{ + header("Location:".SITEURL."login"); + } + } + + public function booking_process(){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + $this->load->model('Log_model'); + + if(isset($_SESSION['username'])){ + $data['currentUser'] = $this->User_model->getUserByUsername($_SESSION['username']); + $data['pageTitle'] = ''; + $data['message'] = ''; + $data['message_class'] = ''; + + if(isset($_GET['delete-booking'])){ + $selectedBooking = $this->Service_model->getBookingById($_GET['delete-booking']); + $this->Service_model->deleteBooking($_GET['delete-booking']); + $this->Log_model->addLog('bookings', $data['currentUser']->username.' törölte a(z) '.$_GET['delete-booking'].' számú foglalást ('.$selectedBooking->guest_name.', '.$selectedBooking->guest_email.', '.$selectedBooking->guest_phone.', '.$selectedBooking->booking_date.', '.$selectedBooking->booking_start_time.', '.$selectedBooking->booking_finish_time.', '.$selectedBooking->service_ids.')', $data['currentUser']->username); + header('Location:'.SITEURL.'bookings'); + } + + if(isset($_POST['addNewBookingManual'])){ + $booking_date = new DateTime(date('Y-m-d', strtotime($_POST['booking_date']))); + $end_booking_date = new DateTime(date('Y-m-d', strtotime($_POST['end_booking_date']))); + $diff = $booking_date->diff($end_booking_date); + + $selectedServiceArray = array(); + + if($_POST['service_ids'] != ''){ + $selectedServiceArray = explode(',', $_POST['service_ids']); + + } + + if($_POST['booking_date'] != $_POST['end_booking_date'] && $booking_date <= $end_booking_date){ + for($index = 0; $index <= $diff->days; $index++){ + $selectedDate = date('Y-m-d', strtotime($_POST['booking_date']. ' + '.$index.' days')); + + + $bookingArray = array( + 'guest_name' => $_POST['guest_name'], + 'guest_email' => $_POST['guest_email'], + 'guest_phone' => $_POST['guest_phone'], + 'worker_id' => $_POST['worker_id'], + 'booking_date' => $selectedDate, + 'booking_start_time' => $_POST['booking_start_time'], + 'booking_finish_time' => $_POST['booking_finish_time'], + 'service_ids' => serialize($selectedServiceArray), + 'guest_confirmed' => '0', + 'guest_confirm_code' => '1234', + ); + + $this->Service_model->createBooking($bookingArray); + } + } + else{ + $bookingArray = array( + 'guest_name' => $_POST['guest_name'], + 'guest_email' => $_POST['guest_email'], + 'guest_phone' => $_POST['guest_phone'], + 'worker_id' => $_POST['worker_id'], + 'booking_date' => $_POST['booking_date'], + 'booking_start_time' => $_POST['booking_start_time'], + 'booking_finish_time' => $_POST['booking_finish_time'], + 'service_ids' => serialize($selectedServiceArray), + 'guest_confirmed' => '0', + 'guest_confirm_code' => '1234', + ); + $this->Log_model->addLog('bookings', $data['currentUser']->username.' létrehoza a(z) '.$_POST['guest_name'].' nevű vendég foglalást ('.implode(', ', $bookingArray).')', $data['currentUser']->username); + $this->Service_model->createBooking($bookingArray); + } + + if($_POST['send_notification']){ + $worker = $this->Service_model->getWorkerById($bookingArray['worker_id']); + + $services = unserialize($bookingArray['service_ids']); + $serviceArray = array(); + $emailArray = array(); + + if(is_array($services)){ + foreach($services as $serviceItem){ + $selectedService = $this->Service_model->getServiceById($serviceItem); + if(is_object($selectedService)){ + $serviceArray[] = $selectedService; + } + } + } + + $content = ''; + + switch($_POST['lang']){ + case 'no': + $content = 'Kjære gjest,
'; + $content .= 'Takk for din bestilling!
'; + $content .= '
'; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= '
Navn: '.$bookingArray['guest_name'].'
E-post: '.$bookingArray['guest_email'].'
Telefon: '.$bookingArray['guest_phone'].'
Arbeider: '.$worker->worker_name.'
Dato: '.$bookingArray['booking_date'].'
Tid: '.$bookingArray['booking_start_time'].' - '.$bookingArray['booking_finish_time'].'
Tjenester: '; + $totalServicePrice = 0; + foreach($serviceArray as $serviceArrayItem){ + $totalServicePrice += $serviceArrayItem->service_price; + $content .= ''; + } + $content .= '
'.$serviceArrayItem->service_name_no.''.$serviceArrayItem->service_price.' kr
Totalpris: '.$totalServicePrice.' kr
'; + $content .= '
STUDIOBEVE'; + $this->Log_model->addLog('bookings', $data['currentUser']->username.' új foglalásról norvég nyelvű értesítést küldött a(z) '.$bookingArray['guest_email'].' email címre ('.implode(', ', $bookingArray).')', $data['currentUser']->username); + break; + case 'en': + $content = 'Dear Guest,
'; + $content .= 'Thank you for your booking!
'; + $content .= '
'; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= '
Name: '.$bookingArray['guest_name'].'
Email: '.$bookingArray['guest_email'].'
Phone: '.$bookingArray['guest_phone'].'
Worker: '.$worker->worker_name.'
Date: '.$bookingArray['booking_date'].'
Time: '.$bookingArray['booking_start_time'].' - '.$bookingArray['booking_finish_time'].'
Services: '; + $totalServicePrice = 0; + foreach($serviceArray as $serviceArrayItem){ + $totalServicePrice += $serviceArrayItem->service_price; + $content .= ''; + } + $content .= '
'.$serviceArrayItem->service_name_en.''.$serviceArrayItem->service_price.' kr
Total price: '.$totalServicePrice.' kr
'; + $content .= '
STUDIOBEVE'; + $this->Log_model->addLog('bookings', $data['currentUser']->username.' új foglalásról angol nyelvű értesítést küldött a(z) '.$bookingArray['guest_email'].' email címre ('.implode(', ', $bookingArray).')', $data['currentUser']->username); + break; + case 'hu': + $content = 'Kedves Vendégünk,
'; + $content .= 'Köszönettel fogadtuk a foglalását!
'; + $content .= '
'; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= '
Név: '.$bookingArray['guest_name'].'
Email: '.$bookingArray['guest_email'].'
Telefon: '.$bookingArray['guest_phone'].'
Dolgozó: '.$worker->worker_name.'
Dátum: '.$bookingArray['booking_date'].'
Időpont: '.$bookingArray['booking_start_time'].' - '.$bookingArray['booking_finish_time'].'
Szolgáltatás(ok): '; + $totalServicePrice = 0; + foreach($serviceArray as $serviceArrayItem){ + $totalServicePrice += $serviceArrayItem->service_price; + $content .= ''; + } + $content .= '
'.$serviceArrayItem->service_name_hu.''.$serviceArrayItem->service_price.' kr
Összesen fizetendő: '.$totalServicePrice.' kr
'; + $content .= '
STUDIOBEVE'; + $this->Log_model->addLog('bookings', $data['currentUser']->username.' új foglalásról magyar nyelvű értesítést küldött a(z) '.$bookingArray['guest_email'].' email címre ('.implode(', ', $bookingArray).')', $data['currentUser']->username); + break; + } + + $data['selectedLang'] = $_POST['lang']; + + $emailItem = array( + 'addressee_email' => $bookingArray['guest_email'], + 'addressee_name' => $bookingArray['guest_name'], + 'subject' => '[studiobeve] Your booking has arrived', + 'content' => $content, + 'attachments' => array() + ); + $emailArray[] = $emailItem; + + + $this->User_model->sendEmail($emailArray, $_POST['lang'], ''); + } + header('Location:'.SITEURL.'bookings'); + } + + if(isset($_POST['updateBookingManual'])){ + $booking_date = new DateTime(date('Y-m-d', strtotime($_POST['booking_date']))); + $end_booking_date = new DateTime(date('Y-m-d', strtotime($_POST['end_booking_date']))); + $diff = $booking_date->diff($end_booking_date); + + $selectedServiceArray = array(); + + if($_POST['service_ids'] != ''){ + $selectedServiceArray = explode(',', $_POST['service_ids']); + + } + + if($_POST['booking_date'] != $_POST['end_booking_date'] && $booking_date <= $end_booking_date){ + for($index = 0; $index <= $diff->days; $index++){ + $selectedDate = date('Y-m-d', strtotime($_POST['booking_date']. ' + '.$index.' days')); + + + $bookingArray = array( + 'guest_name' => $_POST['guest_name'], + 'guest_email' => $_POST['guest_email'], + 'guest_phone' => $_POST['guest_phone'], + 'worker_id' => $_POST['worker_id'], + 'booking_date' => $selectedDate, + 'booking_start_time' => $_POST['booking_start_time'], + 'booking_finish_time' => $_POST['booking_finish_time'], + 'service_ids' => serialize($selectedServiceArray), + 'guest_confirmed' => '0', + 'guest_confirm_code' => '1234' + ); + + $this->Service_model->createBooking($bookingArray); + } + } + else{ + $bookingArray = array( + 'guest_name' => $_POST['guest_name'], + 'guest_email' => $_POST['guest_email'], + 'guest_phone' => $_POST['guest_phone'], + 'worker_id' => $_POST['worker_id'], + 'booking_date' => $_POST['booking_date'], + 'booking_start_time' => $_POST['booking_start_time'], + 'booking_finish_time' => $_POST['booking_finish_time'], + 'service_ids' => serialize($selectedServiceArray), + 'guest_confirmed' => '0', + 'guest_confirm_code' => '1234' + ); + + $this->Service_model->updateBooking($_POST['booking_id'], $bookingArray); + $this->Log_model->addLog('bookings', $data['currentUser']->username.' módosította a foglalását a(z) '.$bookingArray['guest_name'].' nevű vendégnek ('.implode(', ', $bookingArray).')', $data['currentUser']->username); + } + + if($_POST['send_notification']){ + $worker = $this->Service_model->getWorkerById($bookingArray['worker_id']); + + $services = unserialize($bookingArray['service_ids']); + $serviceArray = array(); + $emailArray = array(); + + if(is_array($services)){ + foreach($services as $serviceItem){ + $selectedService = $this->Service_model->getServiceById($serviceItem); + if(is_object($selectedService)){ + $serviceArray[] = $selectedService; + } + } + } + + $content = ''; + + $email_subject =''; + + switch($_POST['lang']){ + case 'no': + $email_subject ='[studiobeve] Din reservasjon er endret'; + $content = 'Kjære gjest,
'; + $content .= 'Vi vil gjerne informere deg om at din reservasjon er endret.
'; + $content .= '
'; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= '
Navn: '.$bookingArray['guest_name'].'
E-post: '.$bookingArray['guest_email'].'
Telefon: '.$bookingArray['guest_phone'].'
Arbeider: '.$worker->worker_name.'
Dato: '.$bookingArray['booking_date'].'
Tid: '.$bookingArray['booking_start_time'].' - '.$bookingArray['booking_finish_time'].'
Tjenester: '; + $totalServicePrice = 0; + foreach($serviceArray as $serviceArrayItem){ + $totalServicePrice += $serviceArrayItem->service_price; + $content .= ''; + } + $content .= '
'.$serviceArrayItem->service_name_no.''.$serviceArrayItem->service_price.' kr
Totalpris: '.$totalServicePrice.' kr
'; + $content .= '
STUDIOBEVE'; + $this->Log_model->addLog('bookings', $data['currentUser']->username.' foglalás módosításról norvég nyelvű értesítést küldött a(z) '.$bookingArray['guest_email'].' email címre ('.implode(', ', $bookingArray).')', $data['currentUser']->username); + break; + case 'en': + $email_subject ='[studiobeve] Your booking has changed'; + $content = 'Dear Guest,
'; + $content .= 'We inform you that your booking has changed.
'; + $content .= '
'; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= '
Name: '.$bookingArray['guest_name'].'
Email: '.$bookingArray['guest_email'].'
Phone: '.$bookingArray['guest_phone'].'
Worker: '.$worker->worker_name.'
Date: '.$bookingArray['booking_date'].'
Time: '.$bookingArray['booking_start_time'].' - '.$bookingArray['booking_finish_time'].'
Services: '; + $totalServicePrice = 0; + foreach($serviceArray as $serviceArrayItem){ + $totalServicePrice += $serviceArrayItem->service_price; + $content .= ''; + } + $content .= '
'.$serviceArrayItem->service_name_en.''.$serviceArrayItem->service_price.' kr
Total price: '.$totalServicePrice.' kr
'; + $content .= '
STUDIOBEVE'; + $this->Log_model->addLog('bookings', $data['currentUser']->username.' foglalás módosításról angol nyelvű értesítést küldött a(z) '.$bookingArray['guest_email'].' email címre ('.implode(', ', $bookingArray).')', $data['currentUser']->username); + break; + case 'hu': + $email_subject ='[studiobeve] A foglalása módosult'; + $content = 'Kedves Vendégünk,
'; + $content .= 'Tájékoztatjuk, hogy a foglalása módosult.
'; + $content .= '
'; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= '
Név: '.$bookingArray['guest_name'].'
Email: '.$bookingArray['guest_email'].'
Telefon: '.$bookingArray['guest_phone'].'
Dolgozó: '.$worker->worker_name.'
Dátum: '.$bookingArray['booking_date'].'
Időpont: '.$bookingArray['booking_start_time'].' - '.$bookingArray['booking_finish_time'].'
Szolgáltatás(ok): '; + $totalServicePrice = 0; + foreach($serviceArray as $serviceArrayItem){ + $totalServicePrice += $serviceArrayItem->service_price; + $content .= ''; + } + $content .= '
'.$serviceArrayItem->service_name_hu.''.$serviceArrayItem->service_price.' kr
Összesen fizetendő: '.$totalServicePrice.' kr
'; + $content .= '
STUDIOBEVE'; + $this->Log_model->addLog('bookings', $data['currentUser']->username.' foglalás módosításról magyar nyelvű értesítést küldött a(z) '.$bookingArray['guest_email'].' email címre ('.implode(', ', $bookingArray).')', $data['currentUser']->username); + break; + } + + $data['selectedLang'] = $_POST['lang']; + + $emailItem = array( + 'addressee_email' => $bookingArray['guest_email'], + 'addressee_name' => $bookingArray['guest_name'], + 'subject' => $email_subject, + 'content' => $content, + 'attachments' => array() + ); + $emailArray[] = $emailItem; + + $this->User_model->sendEmail($emailArray, $_POST['lang'], ''); + } + header('Location:'.SITEURL.'bookings'); + } + + $this->load->view('admin/booking-process', $data); + } + } + + + + + + + + + + + + + + + + + + + + + + + +} diff --git a/application/controllers/Login.php b/application/controllers/Login.php new file mode 100755 index 0000000..1aef59c --- /dev/null +++ b/application/controllers/Login.php @@ -0,0 +1,95 @@ + + * @see https://codeigniter.com/user_guide/general/urls.html + */ + public function index(){ + $this->load->helper('url'); + $this->load->helper('cookie'); + $this->load->model('User_model'); + $this->load->model('Log_model'); + + $data['message'] = ''; + $data['message_class'] = ''; + + $data['username'] = ''; + $data['password'] = ''; + + if(isset($_GET['logout']) && isset($_SESSION['username'])){ + $this->Log_model->addLog('logout', 'Sikeres kijelentkezés - '.$_SESSION['username'],$_SESSION['username']); + unset($_SESSION['username']); + unset($_SESSION['password']); + $data['message'] = 'Sikeres kijelentkezés!'; + $data['message_class'] = 'success'; + } + + elseif(isset($_POST['sendLogin'])){ + if($this->User_model->userCanLogin($_POST['username'], $_POST['password'])){ + if($_POST['remember'] == 'on'){ + $cookie = array( + 'name' => 'username', + 'value' => $_POST['username'], + 'expire' => '300', + 'secure' => TRUE + ); + $this->input->set_cookie($cookie); + + $cookie = array( + 'name' => 'password', + 'value' => $_POST['password'], + 'expire' => '300', + 'secure' => TRUE + ); + $this->input->set_cookie($cookie); + + } + else{ + delete_cookie("username"); + delete_cookie("password"); + } + + $this->Log_model->addLog('login', 'Sikeres bejelentkezés - '.$_POST['username'],$_POST['username']); + $_SESSION['username'] = $_POST['username']; + $_SESSION['password'] = $_POST['password']; + $data['currentUser'] = $this->User_model->getUserByUsername($_SESSION['username']); + + header('location:'.base_url().'dashboard'); + + } + else{ + $this->Log_model->addLog('login', 'Sikertelen bejelentkezési kísérlet - '.$_POST['username'].' / '.$_POST['password'],$_POST['username']); + $data['message'] = 'Sikertelen bejelentkezés!'; + $data['message_class'] = 'error'; + } + } + + $data['username'] = get_cookie('username'); + $data['password'] = get_cookie('password'); + + $data['pageTitle'] = 'Bejelentkezés'; + $this->load->view('login',$data); + } + + + + +} + + + +?> diff --git a/application/controllers/ModuleManagement.php b/application/controllers/ModuleManagement.php new file mode 100755 index 0000000..8787004 --- /dev/null +++ b/application/controllers/ModuleManagement.php @@ -0,0 +1,182 @@ + + * @see https://codeigniter.com/user_guide/general/urls.html + */ + public function index() + { + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Log_model'); + $this->load->model('Module_model'); + + if(isset($_SESSION['username'])){ + $data['currentUser'] = $this->User_model->getUserByUsername($_SESSION['username']); + + //check module is available for user + $currentModule = $this->Module_model->getModuleBySlug('module-management'); + + if($this->User_model->is_user_admin($_SESSION['username']) || $this->Module_model->is_module_available($currentModule->module_id, $data['currentUser']->user_id)){ + $data['users'] = $this->User_model->getAllUser(); + $data['modules'] = $this->Module_model->getAllModule(); + $data['privileges'] = $this->User_model->getAllUserGroup(); + + if(isset($_POST['updatePermission'])){ + + //set user privileges + foreach($data['modules'] as $moduleItem){ + $moduleUserArray = array(); + foreach($data['users'] as $userItem){ + if($_POST['module_'.$moduleItem->module_id.'_user_'.$userItem->user_id]){ + $moduleUserArray[] = $userItem->user_id; + } + } + + if(is_array($moduleUserArray)){ + $this->Module_model->updateModule('permission_ids', $moduleItem->module_id, $moduleUserArray); + $usernames = array(); + foreach($moduleUserArray as $moduleUserItem){ + $usernames[] = $this->User_model->getUserById($moduleUserItem)->username; + } + + if(!empty($usernames)){ + $this->Log_model->addLog('change_module_privileges', 'Módosult a '.$moduleItem->module_name.' felhasználó szintű jogosultság kiosztás('.implode(', ', $usernames).') felhasználókra', $_SESSION['username']); + } + else{ + $this->Log_model->addLog('change_module_privileges', 'Módosult a '.$moduleItem->module_name.' felhasználó szintű jogosultság kiosztása, jelenleg nincs megosztva', $_SESSION['username']); + } + } + + } + + //set group privilegies + foreach($data['modules'] as $moduleItem){ + $moduleGroupArray = array(); + foreach($data['privileges'] as $groupItem){ + + if($_POST['module_'.$moduleItem->module_id.'_group_'.$groupItem->permission_id]){ + $moduleGroupArray[] = $groupItem->permission_id; + } + } + + if(is_array($moduleGroupArray)){ + $this->Module_model->updateModule('permission_group_ids',$moduleItem->module_id, $moduleGroupArray); + $groupNames = array(); + foreach($moduleGroupArray as $moduleGroupItem){ + $groupNames[] = $this->User_model->getpermissionById($moduleGroupItem)->permission_name; + } + if(!empty($groupNames)){ + $this->Log_model->addLog('change_module_privileges', 'Módosult a '.$moduleItem->module_name.' csoport szintű jogosultság kiosztás ('.(implode(', ',$groupNames)).') csoportokra', $_SESSION['username']); + } + else{ + $this->Log_model->addLog('change_module_privileges', 'Módosult a '.$moduleItem->module_name.' csoport szintű jogosultság kiosztása, jelenleg nincs megosztva', $_SESSION['username']); + } + } + + } + } + + //usersPrivilegesView + $userIndex = 1; + if(is_array($data['users'])){ + $data['usersPrivilegesView'] = ''; + foreach($data['users'] as $userItem){ + + $data['usersPrivilegesView'] .= ''; + $data['usersPrivilegesView'] .= ''.$userIndex.'.'; + $data['usersPrivilegesView'] .= ''.$userItem->fullname.''; + $data['usersPrivilegesView'] .= ''.$userItem->username.''; + + if(is_array($data['modules'])){ + foreach($data['modules'] as $moduleItem){ + if($userItem->permission_slug == 'admin'){ + $data['usersPrivilegesView'] .= ''; + + } + else{ + $data['usersPrivilegesView'] .= 'Module_model->is_userId_available_in_module($moduleItem->module_id, $userItem->user_id)?'checked':''; + $data['usersPrivilegesView'] .= '/>'; + + } + } + } + $userIndex++; + $data['usersPrivilegesView'] .= ''; + + } + } + + + //groupModuleView + $groupIndex = 1; + foreach($data['privileges'] as $privilegeItem){ + if($privilegeItem->permission_slug == 'admin'){ + $data['groupModuleView'] = ''; + $data['groupModuleView'] .= ''.$groupIndex.'.'; + $data['groupModuleView'] .= ''.$privilegeItem->permission_name.''; + + if(is_array($data['modules'])){ + foreach($data['modules'] as $moduleItem){ + $data['groupModuleView'] .= ''; + } + } + $groupIndex++; + $data['groupModuleView'] .= ''; + } + else{ + $data['groupModuleView'] .= ''; + $data['groupModuleView'] .= ''.$groupIndex.'.'; + $data['groupModuleView'] .= ''.$privilegeItem->permission_name.''; + if(is_array($data['modules'])){ + foreach($data['modules'] as $moduleItem){ + $data['groupModuleView'] .= 'Module_model->is_groupId_available_in_module($moduleItem->module_id,$privilegeItem->permission_id)?' checked':''; + $data['groupModuleView'] .= '/>'; + } + } + $groupIndex++; + $data['groupModuleView'] .= ''; + } + + } + + + //get available modules for menu + if($this->User_model->is_user_admin($_SESSION['username'])){ + $data['activeModules'] = $this->Module_model->getAllModule(); + } + else{ + $data['activeModules'] = $this->Module_model->getUserModules($data['currentUser']->user_id); + } + + $this->load->view('modules/module-management/module-management', $data); + } + else{ + header('Location:'.site_url().'404-page-not-found'); + } + + + } + else{ + header("Location:".SITEURL."login"); + + } + } + +} diff --git a/application/controllers/Pages.php b/application/controllers/Pages.php new file mode 100755 index 0000000..05be793 --- /dev/null +++ b/application/controllers/Pages.php @@ -0,0 +1,682 @@ + + * @see https://codeigniter.com/userguide3/general/urls.html + */ + public function index(){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + + $data['pageTitle'] = ''; + $this->load->view('pages/home', $data); + } + + public function barber($lang){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + $data['pageTitle'] = ''; + $data['selectedLang'] = $lang; + + $data['services'] = $this->Service_model->getAllServiceByServiceType('barber', $lang); + $this->load->view('pages/barber', $data); + } + + public function beauty($lang){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + $data['pageTitle'] = ''; + $data['selectedLang'] = $lang; + + $data['services'] = $this->Service_model->getAllServiceByServiceType('beauty', $lang); + $this->load->view('pages/beauty', $data); + } + + public function booking($lang, $subpage){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + + $data['pageTitle'] = ''; + $data['selectedLang'] = $lang; + $data['subpage'] = $subpage; + + $data['services'] = $this->Service_model->getAllServiceByServiceType($subpage, $lang); + $data['workers'] = $this->Service_model->getActiveWorkers($subpage); + + switch($subpage){ + case 'barber': + $this->load->view('pages/barber-booking', $data); + break; + case 'beauty': + $this->load->view('pages/beauty-booking', $data); + break; + default: + header('Location:'.SITEURL); + } + } + + public function booking_finished($lang, $subpage){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + $data['pageTitle'] = ''; + $data['selectedLang'] = $lang; + + switch($subpage){ + case 'barber': + $this->load->view('pages/barber-booking-finished', $data); + break; + case 'beauty': + $this->load->view('pages/beauty-booking-finished', $data); + break; + default: + header('Location:'.SITEURL); + } + } + + public function email_verification(){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + $this->load->model('Log_model'); + + $data['pageTitle'] = ''; + $this->load->view('pages/email-verification', $data); + } + + public function ajax(){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + $this->load->model('Log_model'); + + $data['pageTitle'] = ''; + + if(isset($_POST['action']) && $_POST['action'] == 'getAvailableWorkersByServiceCategory' && isset($_POST['serv_cat_slug'])){ + $workers = $this->Service_model->getWorkersByCategorySlug($_POST['serv_cat_slug']); + $returnedWorkers = ''; + $workerIndex = 0; + $workerListShow = ''; + + if(is_array($workers)){ + foreach($workers as $workerItem){ + $workerListShow .= ''; + /* + ?> + + $workers, + 'workerListShow' => $workerListShow + ); + + echo json_encode($responseArray); + } + + if(isset($_POST['action']) && $_POST['action'] == 'calculate_service_length' && isset($_POST['service_ids'])){ + if($_POST['service_ids'] != ''){ + $explodedServiceIds = explode(',', $_POST['service_ids']); + $totalLength = '00:00:00'; + if(!empty($explodedServiceIds)){ + foreach($explodedServiceIds as $explodedServiceIdItem){ + $currentService = $this->Service_model->getServiceById($explodedServiceIdItem); + $time = $totalLength; + $time2 = $currentService->service_time; + + $secs = strtotime($time2)-strtotime("00:00:00"); + $addedTotal = date("H:i:s",strtotime($time)+$secs); + $totalLength = $addedTotal; + } + + } + echo $totalLength; + } + } + + if(isset($_POST['action']) && $_POST['action'] == 'getAvailableTimeOptions' && isset($_POST['selectedDate'])){ + $results = $this->Service_model->getAvailableTimes($_POST['worker_id'], $_POST['selectedDate'], $_POST['servicelength']); + + $rowIndex = 1; + if(is_array($results)){ + foreach($results as $resultIem){ + ?> + + Service_model->getAvailableTimes($_POST['worker_id'], $_POST['selectedDate'], $_POST['servicelength']); + + $timeIsAvailable = 0; + if(is_array($results)){ + foreach($results as $resultIem){ + if(date('H:i:s', strtotime($resultIem)) == $_POST['selectedTime']){ + $timeIsAvailable = 1; + } + } + + echo $timeIsAvailable; + } + else{ + echo 0; + } + } + + if(isset($_POST['action']) && $_POST['action'] == 'getAvailableTimes' && isset($_POST['selectedDate'])){ + $results = $this->Service_model->getAvailableTimes($_POST['worker_id'], $_POST['selectedDate'], $_POST['servicelength'].':00'); + + $rowIndex = 1; + if(!empty($results)){ + foreach($results as $resultIem){ + ?> +
+ Service_model->getWorkerById($_POST['worker_id']); + + if(is_object($result)){ + ?> +
+
worker_name;?>
+ User_model->getUserById($_POST['user_id']); + $userArray = array( + 'is_enabled' => $_POST['newValue'] + ); + $this->User_model->updateUser($_POST['user_id'], $userArray); + $this->Log_model->addLog('change_user_status', $data['currentUser']->username.' státusza változott - '.($_POST['newValue']?'aktív':'letiltva').' állapotra', $_POST['operator']); + } + + if(isset($_POST['action']) && $_POST['action'] == 'checkUser'){ + echo $this->User_model->isUsernameAvailable($_POST['username']); + } + + if(isset($_POST['action']) && $_POST['action'] == 'refreshLogMonitor'){ + $logInfoArray = $this->Log_model->getAllLoginfo(); + $logrow = ''; + foreach($logInfoArray as $logInfoItem){ + $logDateTime = new datetime($logInfoItem->event_datetime); + $logrow .= date_format($logDateTime,"Y-m-d H:i").'  '.$logInfoItem->username.'  '.$logInfoItem->event_content.' '; + } + echo $logrow; + } + + + + $this->load->view('pages/ajax', $data); + } + + + public function booking_process(){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + + $data['pageTitle'] = ''; + $data['subpage'] = ''; + + if(isset($_POST['sendBooking'])){ + //calculate finish time + $serviceStartTime = date("H:i:s", strtotime($_POST['booking_start_time'])); + $serviceLengthTime = date("H:i:s", strtotime($_POST['servicelength'])); + $secs = strtotime($serviceLengthTime)-strtotime("00:00:00"); + $serviceFinishTime = date("H:i:s",strtotime($serviceStartTime)+$secs); + + $data['services'] = $this->Service_model->getAllServiceByServiceType($_POST['subpage'], $_POST['lang']); + $data['workers'] = $this->Service_model->getAllWorkers(); + $data['selectedLang'] = 'en'; + $selectedServiceArray = array(); + + + //find selected services + if(is_array($data['services'])){ + foreach($data['services'] as $serviceItem){ + if(isset($_POST['service_'.$serviceItem->service_id])){ + if($_POST['service_'.$serviceItem->service_id]){ + $selectedServiceArray[] = $serviceItem->service_id; + } + } + } + } + + // 1. Build selected service array + $selectedServiceArray = array(); + $totalLengthSeconds = 0; + + foreach ($_POST as $key => $value) { + if (strpos($key, 'service_') === 0 && $value == '1') { + $serviceId = str_replace('service_', '', $key); + $selectedServiceArray[] = $serviceId; + + $service = $this->Service_model->getServiceById($serviceId); + if ($service) { + $parts = explode(':', $service->service_time); + $totalLengthSeconds += ($parts[0] * 3600) + ($parts[1] * 60); + } + } + } + + // 2. Convert total time to H:i format + $servicelength = gmdate('H:i:s', $totalLengthSeconds); + + // 3. Build booking array + $bookingArray = array( + 'guest_name' => $_POST['guest_name'], + 'guest_email' => $_POST['guest_email'], + 'guest_phone' => $_POST['guest_phone'], + 'worker_id' => $_POST['worker_id'], + 'booking_date' => $_POST['booking_date'], + 'booking_start_time' => $_POST['booking_start_time'], + 'booking_finish_time' => '', // optional + 'service_ids' => serialize($selectedServiceArray), + 'guest_confirmed' => '0', + 'guest_confirm_code' => '1234', + ); + + $bookingDate = $bookingArray['booking_date']; + $bookingTime = $bookingArray['booking_start_time']; + $weekday = date('w', strtotime($bookingDate)); + $schedule = $this->Service_model->getWorkerScheduleByDay($bookingArray['worker_id'], $weekday); + + if (!$schedule) { + $this->output + ->set_status_header(403) + ->set_content_type('application/json') + ->set_output(json_encode(['error' => 'Worker is not available on this day.'])); + return; + } + + if ($bookingTime < $schedule->start_time || $bookingTime >= $schedule->end_time) { + $this->output + ->set_status_header(403) + ->set_content_type('application/json') + ->set_output(json_encode(['error' => 'Booking time is outside worker schedule.'])); + return; + } + + if (!$this->Service_model->isWorkerAvailableThisWeek($bookingArray['worker_id'], $bookingDate)) { + $this->output + ->set_status_header(403) + ->set_content_type('application/json') + ->set_output(json_encode(['error' => 'Worker only works every second week.'])); + return; + } + + // 4. Validate: available slot with correct length + $available = $this->Service_model->getAvailableTimes( + $bookingArray['worker_id'], + $bookingArray['booking_date'], + $servicelength + ); + + if (!is_array($available) || !in_array($bookingArray['booking_start_time'], $available)) { + $this->output + ->set_status_header(409) + ->set_content_type('application/json') + ->set_output(json_encode([ + 'error' => 'Conflict. Timeslot is taken or does not fit the service.' + ])); + return; + } + + // 5. Validate: booking doesn't go past 18:00 + $bookingStart = new DateTime($bookingArray['booking_start_time']); + $bookingLength = new DateTime($servicelength); + $bookingEnd = clone $bookingStart; + $bookingEnd->add(new DateInterval('PT' . intval($bookingLength->format('H')) . 'H')); + $bookingEnd->add(new DateInterval('PT' . intval($bookingLength->format('i')) . 'M')); + + $bookingArray['booking_finish_time'] = $bookingEnd->format('H:i:s'); + + $closingTime = new DateTime('18:00'); + + if ($bookingEnd > $closingTime) { + $this->output + ->set_status_header(403) + ->set_content_type('application/json') + ->set_output(json_encode([ + 'error' => 'Selected time exceeds business hours.' + ])); + return; + } + + // 6. Create booking + $this->Service_model->createBooking($bookingArray); + + $worker = $this->Service_model->getWorkerById($bookingArray['worker_id']); + + $services = unserialize($bookingArray['service_ids']); + $serviceArray = array(); + $emailArray = array(); + + if(is_array($services)){ + foreach($services as $serviceItem){ + $selectedService = $this->Service_model->getServiceById($serviceItem); + if(is_object($selectedService)){ + $serviceArray[] = $selectedService; + } + } + } + + $content = ''; + + switch($_POST['lang']){ + case 'no': + $content = 'Kjære gjest,
'; + $content .= 'Takk for din bestilling!
'; + $content .= '
'; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= '
Navn: '.$bookingArray['guest_name'].'
E-post: '.$bookingArray['guest_email'].'
Telefon: '.$bookingArray['guest_phone'].'
Arbeider: '.$worker->worker_name.'
Dato: '.$bookingArray['booking_date'].'
Tid: '.$bookingArray['booking_start_time'].' - '.$bookingArray['booking_finish_time'].'
Tjenester: '; + $totalServicePrice = 0; + foreach($serviceArray as $serviceArrayItem){ + $totalServicePrice += $serviceArrayItem->service_price; + $content .= ''; + } + $content .= '
'.$serviceArrayItem->service_name_no.''.$serviceArrayItem->service_price.' kr
Totalpris: '.$totalServicePrice.' kr
'; + $content .= '
STUDIOBEVE'; + break; + case 'en': + $content = 'Dear Guest,
'; + $content .= 'Thank you for your booking!
'; + $content .= '
'; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= '
Name: '.$bookingArray['guest_name'].'
Email: '.$bookingArray['guest_email'].'
Phone: '.$bookingArray['guest_phone'].'
Worker: '.$worker->worker_name.'
Date: '.$bookingArray['booking_date'].'
Time: '.$bookingArray['booking_start_time'].' - '.$bookingArray['booking_finish_time'].'
Services: '; + $totalServicePrice = 0; + foreach($serviceArray as $serviceArrayItem){ + $totalServicePrice += $serviceArrayItem->service_price; + $content .= ''; + } + $content .= '
'.$serviceArrayItem->service_name_en.''.$serviceArrayItem->service_price.' kr
Total price: '.$totalServicePrice.' kr
'; + $content .= '
STUDIOBEVE'; + break; + case 'hu': + $content = 'Kedves Vendégünk,
'; + $content .= 'Köszönettel fogadtuk a foglalását!
'; + $content .= '
'; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= '
Név: '.$bookingArray['guest_name'].'
Email: '.$bookingArray['guest_email'].'
Telefon: '.$bookingArray['guest_phone'].'
Dolgozó: '.$worker->worker_name.'
Dátum: '.$bookingArray['booking_date'].'
Időpont: '.$bookingArray['booking_start_time'].' - '.$bookingArray['booking_finish_time'].'
Szolgáltatás(ok): '; + $totalServicePrice = 0; + foreach($serviceArray as $serviceArrayItem){ + $totalServicePrice += $serviceArrayItem->service_price; + $content .= ''; + } + $content .= '
'.$serviceArrayItem->service_name_hu.''.$serviceArrayItem->service_price.' kr
Összesen fizetendő: '.$totalServicePrice.' kr
'; + $content .= '
STUDIOBEVE'; + break; + } + + $data['selectedLang'] = $_POST['lang']; + + $emailItem = array( + 'addressee_email' => $bookingArray['guest_email'], + 'addressee_name' => $bookingArray['guest_name'], + 'subject' => '[studiobeve] Your booking has arrived', + 'content' => $content, + 'attachments' => array() + ); + $emailArray[] = $emailItem; + header('Location:'.SITEURL.$_POST['lang'].'/booking-finished/'.$_POST['subpage']); + } + + $this->User_model->sendEmail($emailArray, $_POST['lang'], $_POST['subpage']); + $this->load->view('pages/booking-process', $data); + } + + public function profile(){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Log_model'); + $this->load->model('Module_model'); + $data['message'] = ''; + $data['message_class'] = ''; + $data['fullname'] = ''; + $data['password'] = ''; + $data['profile_img_url'] = ''; + + if(isset($_SESSION['username'])){ + $data['currentUser'] = $this->User_model->getUserByUsername($_SESSION['username']); + + $data['message'] = ''; + $data['message_class'] = ''; + $data['pageTitle'] = 'Profil szerkesztése'; + + if($this->User_model->is_user_admin($_SESSION['username'])){ + $data['activeModules'] = $this->Module_model->getAllModule(); + } + else{ + $data['activeModules'] = $this->Module_model->getUserModules($data['currentUser']->user_id); + } + + if(isset($_POST["storeProfile"])) { + + if($_POST['fullname'] != $data['currentUser']->fullname){ + $userArray = array( + 'fullname' => $_POST['fullname'] + ); + $this->User_model->updateUser($data['currentUser']->user_id, $userArray); + $this->Log_model->addLog('profile', 'A felhasználó módosította a teljes nevét: '.$data['currentUser']->fullname.' => '.$_POST['fullname'],$_SESSION['username']); + } + + if($_POST['password'] != ''){ + $userArray = array( + 'password' => hash('sha256', $_POST['password']) + ); + $this->User_model->updateUser($data['currentUser']->user_id, $userArray); + $this->Log_model->addLog('profile', 'A felhasználó módosította a jelszavát',$_SESSION['username']); + } + + + //upload profile image + if($_FILES["profile_img"]["tmp_name"] != ''){ + $target_dir = getcwd()."/assets/img/profiles/"; + $target_file = $target_dir . str_replace('.','_', str_replace('@','_',$_SESSION['username'])); + $imageFileType = strtolower(pathinfo(basename($_FILES["profile_img"]["name"]),PATHINFO_EXTENSION)); + + if (move_uploaded_file($_FILES["profile_img"]["tmp_name"], $target_file.'.'.$imageFileType)) { + $data['message'] = 'A profilkép sikeresen feltöltve!'; + $data['message_class'] = 'successMessage'; + $data['profile_img_url'] = 'assets/img/profiles/'.str_replace('.','_', str_replace('@','_',$_SESSION['username'])).'.'.$imageFileType; + $userArray = array( + 'profile_img_url' => $data['profile_img_url'] + ); + $this->User_model->updateUser($data['currentUser']->user_id, $userArray); + $this->Log_model->addLog('profile', 'A felhasználó lecserélte a profilképét ',$_SESSION['username']); + } else { + $data['message'] = 'Hiba a feltöltés közben!'; + $data['message_class'] = 'errorMessage'; + } + + } + + $data['message'] = 'A profil sikeresen módosítva!'; + $data['message_class'] = 'successMessage'; + } + + + $data['currentUser'] = $this->User_model->getUserByUsername($_SESSION['username']); + $this->load->view('pages/profile', $data); + + } + else{ + header("Location:".SITEURL."login"); + } + } + + public function log_monitor(){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Log_model'); + $this->load->model('Module_model'); + + if(isset($_SESSION['username'])){ + $data['currentUser'] = $this->User_model->getUserByUsername($_SESSION['username']); + $data['message'] = ''; + $data['message_class'] = ''; + $data['pageTitle'] = 'Rendszermonitor'; + $data['logInfoLink'] = ''; + + if($this->User_model->is_user_admin($_SESSION['username'])){ + $data['activeModules'] = $this->Module_model->getAllModule(); + } + else{ + $data['activeModules'] = $this->Module_model->getUserModules($data['currentUser']->user_id); + } + + $selectedModule = $this->Module_model->getModuleBySlug('log-monitor'); + if($this->Module_model->is_module_available($selectedModule->module_id, $data['currentUser']->user_id)){ + + if(isset($_POST['exportToFile'])){ + $logInfoArray = $this->Log_model->getAllLoginfo(); + $logrow = ''; + $logTxt = fopen(getcwd()."/documents/loginfo.csv", "w") or die("Hiba a fájl mentésekor!"); + $row = '"Esemény ideje";'.'"Esemény típusa";'.'"Felhasználónév";"Bejegyzés tartalma";'.PHP_EOL; + $string_encoded = iconv( mb_detect_encoding( $row ), 'ISO-8859-2', $row ); + fwrite($logTxt, $string_encoded); + + foreach($logInfoArray as $logInfoItem){ + $logDateTime = new datetime($logInfoItem->event_datetime); + $row = date_format($logDateTime,"Y-m-d H:i").';"'.$logInfoItem->event_type.'";"'.$logInfoItem->username.'";"'.$logInfoItem->event_content.'";'.PHP_EOL; + $string_encoded = iconv( mb_detect_encoding( $row ), 'ISO-8859-2', $row ); + fwrite($logTxt, $string_encoded); + } + fclose($logTxt); + $data['logInfoLink'] = 'A loginfo.csv fájl letöltése'; + } + + $this->load->view('log-monitor', $data); + + } + else{ + header("Location:".SITEURL."home"); + } + + + } + else{ + header("Location:".SITEURL."login"); + } + + } + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +} diff --git a/application/controllers/Pages_20240706.php b/application/controllers/Pages_20240706.php new file mode 100755 index 0000000..733325b --- /dev/null +++ b/application/controllers/Pages_20240706.php @@ -0,0 +1,529 @@ + + * @see https://codeigniter.com/userguide3/general/urls.html + */ + public function index(){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + + $data['pageTitle'] = ''; + $this->load->view('pages/home', $data); + } + + public function barber($lang){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + $data['pageTitle'] = ''; + $data['selectedLang'] = $lang; + + $data['services'] = $this->Service_model->getAllServiceByServiceType('barber', $lang); + $this->load->view('pages/barber', $data); + } + + public function beauty($lang){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + $data['pageTitle'] = ''; + $data['selectedLang'] = $lang; + + $data['services'] = $this->Service_model->getAllServiceByServiceType('beauty', $lang); + $this->load->view('pages/beauty', $data); + } + + public function booking($lang, $subpage){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + + $data['pageTitle'] = ''; + $data['selectedLang'] = $lang; + $data['subpage'] = $subpage; + + $data['services'] = $this->Service_model->getAllServiceByServiceType($subpage, $lang); + $data['workers'] = $this->Service_model->getActiveWorkers(); + + switch($subpage){ + case 'barber': + $this->load->view('pages/barber-booking', $data); + break; + case 'beauty': + $this->load->view('pages/beauty-booking', $data); + break; + default: + header('Location:'.SITEURL); + } + } + + public function booking_finished($lang, $subpage){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + $data['pageTitle'] = ''; + $data['selectedLang'] = $lang; + + switch($subpage){ + case 'barber': + $this->load->view('pages/barber-booking-finished', $data); + break; + case 'beauty': + $this->load->view('pages/beauty-booking-finished', $data); + break; + default: + header('Location:'.SITEURL); + } + } + + public function email_verification(){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + $this->load->model('Log_model'); + + $data['pageTitle'] = ''; + $this->load->view('pages/email-verification', $data); + } + + public function ajax(){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + $this->load->model('Log_model'); + + $data['pageTitle'] = ''; + + if(isset($_POST['action']) && $_POST['action'] == 'calculate_service_length' && isset($_POST['service_ids'])){ + if($_POST['service_ids'] != ''){ + $explodedServiceIds = explode(',', $_POST['service_ids']); + $totalLength = '00:00:00'; + if(!empty($explodedServiceIds)){ + foreach($explodedServiceIds as $explodedServiceIdItem){ + $currentService = $this->Service_model->getServiceById($explodedServiceIdItem); + $time = $totalLength; + $time2 = $currentService->service_time; + + $secs = strtotime($time2)-strtotime("00:00:00"); + $addedTotal = date("H:i:s",strtotime($time)+$secs); + $totalLength = $addedTotal; + } + + } + echo $totalLength; + } + } + + if(isset($_POST['action']) && $_POST['action'] == 'getAvailableTimeOptions' && isset($_POST['selectedDate'])){ + $results = $this->Service_model->getAvailableTimes($_POST['worker_id'], $_POST['selectedDate'], $_POST['servicelength']); + + $rowIndex = 1; + if(is_array($results)){ + foreach($results as $resultIem){ + ?> + + Service_model->getAvailableTimes($_POST['worker_id'], $_POST['selectedDate'], $_POST['servicelength'].':00'); + + $rowIndex = 1; + if(!empty($results)){ + foreach($results as $resultIem){ + ?> +
+ Service_model->getWorkerById($_POST['worker_id']); + + if(is_object($result)){ + ?> +
+
worker_name;?>
+ User_model->getUserById($_POST['user_id']); + $userArray = array( + 'is_enabled' => $_POST['newValue'] + ); + $this->User_model->updateUser($_POST['user_id'], $userArray); + $this->Log_model->addLog('change_user_status', $data['currentUser']->username.' státusza változott - '.($_POST['newValue']?'aktív':'letiltva').' állapotra', $_POST['operator']); + } + + if(isset($_POST['action']) && $_POST['action'] == 'checkUser'){ + echo $this->User_model->isUsernameAvailable($_POST['username']); + } + + if(isset($_POST['action']) && $_POST['action'] == 'refreshLogMonitor'){ + $logInfoArray = $this->Log_model->getAllLoginfo(); + $logrow = ''; + foreach($logInfoArray as $logInfoItem){ + $logDateTime = new datetime($logInfoItem->event_datetime); + $logrow .= date_format($logDateTime,"Y-m-d H:i").'  '.$logInfoItem->username.'  '.$logInfoItem->event_content.' '; + } + echo $logrow; + } + + + + $this->load->view('pages/ajax', $data); + } + + + public function booking_process(){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + + $data['pageTitle'] = ''; + $data['subpage'] = ''; + + if(isset($_POST['sendBooking'])){ + //calculate finish time + $serviceStartTime = date("H:i:s", strtotime($_POST['booking_start_time'])); + $serviceLengthTime = date("H:i:s", strtotime($_POST['servicelength'])); + $secs = strtotime($serviceLengthTime)-strtotime("00:00:00"); + $serviceFinishTime = date("H:i:s",strtotime($serviceStartTime)+$secs); + + $data['services'] = $this->Service_model->getAllServiceByServiceType($_POST['subpage'], $_POST['lang']); + $data['workers'] = $this->Service_model->getAllWorkers(); + $data['selectedLang'] = 'en'; + $selectedServiceArray = array(); + + //find selected services + if(is_array($data['services'])){ + foreach($data['services'] as $serviceItem){ + if(isset($_POST['service_'.$serviceItem->service_id])){ + if($_POST['service_'.$serviceItem->service_id]){ + $selectedServiceArray[] = $serviceItem->service_id; + } + } + } + } + + $bookingArray = array( + 'guest_name' => $_POST['guest_name'], + 'guest_email' => $_POST['guest_email'], + 'guest_phone' => $_POST['guest_phone'], + 'worker_id' => $_POST['worker_id'], + 'booking_date' => $_POST['booking_date'], + 'booking_start_time' => $_POST['booking_start_time'], + 'booking_finish_time' => $serviceFinishTime, + 'service_ids' => serialize($selectedServiceArray), + 'guest_confirmed' => '0', + 'guest_confirm_code' => '1234', + ); + + $this->Service_model->createBooking($bookingArray); + $worker = $this->Service_model->getWorkerById($bookingArray['worker_id']); + + $services = unserialize($bookingArray['service_ids']); + $serviceArray = array(); + $emailArray = array(); + + if(is_array($services)){ + foreach($services as $serviceItem){ + $selectedService = $this->Service_model->getServiceById($serviceItem); + if(is_object($selectedService)){ + $serviceArray[] = $selectedService; + } + } + } + + $content = ''; + + switch($_POST['lang']){ + case 'no': + $content = 'Kjære gjest,
'; + $content .= 'Takk for din bestilling!
'; + $content .= '
'; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= '
Navn: '.$bookingArray['guest_name'].'
E-post: '.$bookingArray['guest_email'].'
Telefon: '.$bookingArray['guest_phone'].'
Arbeider: '.$worker->worker_name.'
Dato: '.$bookingArray['booking_date'].'
Tid: '.$bookingArray['booking_start_time'].' - '.$bookingArray['booking_finish_time'].'
Tjenester: '; + $totalServicePrice = 0; + foreach($serviceArray as $serviceArrayItem){ + $totalServicePrice += $serviceArrayItem->service_price; + $content .= ''; + } + $content .= '
'.$serviceArrayItem->service_name_no.''.$serviceArrayItem->service_price.' kr
Totalpris: '.$totalServicePrice.' kr
'; + $content .= '
STUDIOBEVE'; + break; + case 'en': + $content = 'Dear Guest,
'; + $content .= 'Thank you for your booking!
'; + $content .= '
'; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= '
Name: '.$bookingArray['guest_name'].'
Email: '.$bookingArray['guest_email'].'
Phone: '.$bookingArray['guest_phone'].'
Worker: '.$worker->worker_name.'
Date: '.$bookingArray['booking_date'].'
Time: '.$bookingArray['booking_start_time'].' - '.$bookingArray['booking_finish_time'].'
Services: '; + $totalServicePrice = 0; + foreach($serviceArray as $serviceArrayItem){ + $totalServicePrice += $serviceArrayItem->service_price; + $content .= ''; + } + $content .= '
'.$serviceArrayItem->service_name_en.''.$serviceArrayItem->service_price.' kr
Total price: '.$totalServicePrice.' kr
'; + $content .= '
STUDIOBEVE'; + break; + case 'hu': + $content = 'Kedves Vendégünk,
'; + $content .= 'Köszönettel fogadtuk a foglalását!
'; + $content .= '
'; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= '
Név: '.$bookingArray['guest_name'].'
Email: '.$bookingArray['guest_email'].'
Telefon: '.$bookingArray['guest_phone'].'
Dolgozó: '.$worker->worker_name.'
Dátum: '.$bookingArray['booking_date'].'
Időpont: '.$bookingArray['booking_start_time'].' - '.$bookingArray['booking_finish_time'].'
Szolgáltatás(ok): '; + $totalServicePrice = 0; + foreach($serviceArray as $serviceArrayItem){ + $totalServicePrice += $serviceArrayItem->service_price; + $content .= ''; + } + $content .= '
'.$serviceArrayItem->service_name_hu.''.$serviceArrayItem->service_price.' kr
Összesen fizetendő: '.$totalServicePrice.' kr
'; + $content .= '
STUDIOBEVE'; + break; + } + + $data['selectedLang'] = $_POST['lang']; + + $emailItem = array( + 'addressee_email' => $bookingArray['guest_email'], + 'addressee_name' => $bookingArray['guest_name'], + 'subject' => '[studiobeve] Your booking has arrived', + 'content' => $content, + 'attachments' => array() + ); + $emailArray[] = $emailItem; + header('Location:'.SITEURL.$_POST['lang'].'/booking-finished/'.$_POST['subpage']); + } + + $this->User_model->sendEmail($emailArray, $_POST['lang'], $_POST['subpage']); + $this->load->view('pages/booking-process', $data); + } + + public function profile(){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Log_model'); + $this->load->model('Module_model'); + $data['message'] = ''; + $data['message_class'] = ''; + $data['fullname'] = ''; + $data['password'] = ''; + $data['profile_img_url'] = ''; + + if(isset($_SESSION['username'])){ + $data['currentUser'] = $this->User_model->getUserByUsername($_SESSION['username']); + + $data['message'] = ''; + $data['message_class'] = ''; + $data['pageTitle'] = 'Profil szerkesztése'; + + if($this->User_model->is_user_admin($_SESSION['username'])){ + $data['activeModules'] = $this->Module_model->getAllModule(); + } + else{ + $data['activeModules'] = $this->Module_model->getUserModules($data['currentUser']->user_id); + } + + if(isset($_POST["storeProfile"])) { + + if($_POST['fullname'] != $data['currentUser']->fullname){ + $userArray = array( + 'fullname' => $_POST['fullname'] + ); + $this->User_model->updateUser($data['currentUser']->user_id, $userArray); + $this->Log_model->addLog('profile', 'A felhasználó módosította a teljes nevét: '.$data['currentUser']->fullname.' => '.$_POST['fullname'],$_SESSION['username']); + } + + if($_POST['password'] != ''){ + $userArray = array( + 'password' => hash('sha256', $_POST['password']) + ); + $this->User_model->updateUser($data['currentUser']->user_id, $userArray); + $this->Log_model->addLog('profile', 'A felhasználó módosította a jelszavát',$_SESSION['username']); + } + + + //upload profile image + if($_FILES["profile_img"]["tmp_name"] != ''){ + $target_dir = getcwd()."/assets/img/profiles/"; + $target_file = $target_dir . str_replace('.','_', str_replace('@','_',$_SESSION['username'])); + $imageFileType = strtolower(pathinfo(basename($_FILES["profile_img"]["name"]),PATHINFO_EXTENSION)); + + if (move_uploaded_file($_FILES["profile_img"]["tmp_name"], $target_file.'.'.$imageFileType)) { + $data['message'] = 'A profilkép sikeresen feltöltve!'; + $data['message_class'] = 'successMessage'; + $data['profile_img_url'] = 'assets/img/profiles/'.str_replace('.','_', str_replace('@','_',$_SESSION['username'])).'.'.$imageFileType; + $userArray = array( + 'profile_img_url' => $data['profile_img_url'] + ); + $this->User_model->updateUser($data['currentUser']->user_id, $userArray); + $this->Log_model->addLog('profile', 'A felhasználó lecserélte a profilképét ',$_SESSION['username']); + } else { + $data['message'] = 'Hiba a feltöltés közben!'; + $data['message_class'] = 'errorMessage'; + } + + } + + $data['message'] = 'A profil sikeresen módosítva!'; + $data['message_class'] = 'successMessage'; + } + + + $data['currentUser'] = $this->User_model->getUserByUsername($_SESSION['username']); + $this->load->view('pages/profile', $data); + + } + else{ + header("Location:".SITEURL."login"); + } + } + + public function log_monitor(){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Log_model'); + $this->load->model('Module_model'); + + if(isset($_SESSION['username'])){ + $data['currentUser'] = $this->User_model->getUserByUsername($_SESSION['username']); + $data['message'] = ''; + $data['message_class'] = ''; + $data['pageTitle'] = 'Rendszermonitor'; + $data['logInfoLink'] = ''; + + if($this->User_model->is_user_admin($_SESSION['username'])){ + $data['activeModules'] = $this->Module_model->getAllModule(); + } + else{ + $data['activeModules'] = $this->Module_model->getUserModules($data['currentUser']->user_id); + } + + $selectedModule = $this->Module_model->getModuleBySlug('log-monitor'); + if($this->Module_model->is_module_available($selectedModule->module_id, $data['currentUser']->user_id)){ + + if(isset($_POST['exportToFile'])){ + $logInfoArray = $this->Log_model->getAllLoginfo(); + $logrow = ''; + $logTxt = fopen(getcwd()."/documents/loginfo.csv", "w") or die("Hiba a fájl mentésekor!"); + $row = '"Esemény ideje";'.'"Esemény típusa";'.'"Felhasználónév";"Bejegyzés tartalma";'.PHP_EOL; + $string_encoded = iconv( mb_detect_encoding( $row ), 'ISO-8859-2', $row ); + fwrite($logTxt, $string_encoded); + + foreach($logInfoArray as $logInfoItem){ + $logDateTime = new datetime($logInfoItem->event_datetime); + $row = date_format($logDateTime,"Y-m-d H:i").';"'.$logInfoItem->event_type.'";"'.$logInfoItem->username.'";"'.$logInfoItem->event_content.'";'.PHP_EOL; + $string_encoded = iconv( mb_detect_encoding( $row ), 'ISO-8859-2', $row ); + fwrite($logTxt, $string_encoded); + } + fclose($logTxt); + $data['logInfoLink'] = 'A loginfo.csv fájl letöltése'; + } + + $this->load->view('log-monitor', $data); + + } + else{ + header("Location:".SITEURL."home"); + } + + + } + else{ + header("Location:".SITEURL."login"); + } + + } + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +} diff --git a/application/controllers/Pages_20250312.php b/application/controllers/Pages_20250312.php new file mode 100755 index 0000000..27aa31f --- /dev/null +++ b/application/controllers/Pages_20250312.php @@ -0,0 +1,547 @@ + + * @see https://codeigniter.com/userguide3/general/urls.html + */ + public function index(){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + + $data['pageTitle'] = ''; + $this->load->view('pages/home', $data); + } + + public function barber($lang){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + $data['pageTitle'] = ''; + $data['selectedLang'] = $lang; + + $data['services'] = $this->Service_model->getAllServiceByServiceType('barber', $lang); + $this->load->view('pages/barber', $data); + } + + public function beauty($lang){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + $data['pageTitle'] = ''; + $data['selectedLang'] = $lang; + + $data['services'] = $this->Service_model->getAllServiceByServiceType('beauty', $lang); + $this->load->view('pages/beauty', $data); + } + + public function booking($lang, $subpage){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + + $data['pageTitle'] = ''; + $data['selectedLang'] = $lang; + $data['subpage'] = $subpage; + + $data['services'] = $this->Service_model->getAllServiceByServiceType($subpage, $lang); + $data['workers'] = $this->Service_model->getActiveWorkers(); + + switch($subpage){ + case 'barber': + $this->load->view('pages/barber-booking', $data); + break; + case 'beauty': + $this->load->view('pages/beauty-booking', $data); + break; + default: + header('Location:'.SITEURL); + } + } + + public function booking_finished($lang, $subpage){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + $data['pageTitle'] = ''; + $data['selectedLang'] = $lang; + + switch($subpage){ + case 'barber': + $this->load->view('pages/barber-booking-finished', $data); + break; + case 'beauty': + $this->load->view('pages/beauty-booking-finished', $data); + break; + default: + header('Location:'.SITEURL); + } + } + + public function email_verification(){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + $this->load->model('Log_model'); + + $data['pageTitle'] = ''; + $this->load->view('pages/email-verification', $data); + } + + public function ajax(){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + $this->load->model('Log_model'); + + $data['pageTitle'] = ''; + + if(isset($_POST['action']) && $_POST['action'] == 'calculate_service_length' && isset($_POST['service_ids'])){ + if($_POST['service_ids'] != ''){ + $explodedServiceIds = explode(',', $_POST['service_ids']); + $totalLength = '00:00:00'; + if(!empty($explodedServiceIds)){ + foreach($explodedServiceIds as $explodedServiceIdItem){ + $currentService = $this->Service_model->getServiceById($explodedServiceIdItem); + $time = $totalLength; + $time2 = $currentService->service_time; + + $secs = strtotime($time2)-strtotime("00:00:00"); + $addedTotal = date("H:i:s",strtotime($time)+$secs); + $totalLength = $addedTotal; + } + + } + echo $totalLength; + } + } + + if(isset($_POST['action']) && $_POST['action'] == 'getAvailableTimeOptions' && isset($_POST['selectedDate'])){ + $results = $this->Service_model->getAvailableTimes($_POST['worker_id'], $_POST['selectedDate'], $_POST['servicelength']); + + $rowIndex = 1; + if(is_array($results)){ + foreach($results as $resultIem){ + ?> + + Service_model->getAvailableTimes($_POST['worker_id'], $_POST['selectedDate'], $_POST['servicelength']); + + $timeIsAvailable = 0; + if(is_array($results)){ + foreach($results as $resultIem){ + if(date('H:i:s', strtotime($resultIem)) == $_POST['selectedTime']){ + $timeIsAvailable = 1; + } + } + + echo $timeIsAvailable; + } + else{ + echo 0; + } + } + + if(isset($_POST['action']) && $_POST['action'] == 'getAvailableTimes' && isset($_POST['selectedDate'])){ + $results = $this->Service_model->getAvailableTimes($_POST['worker_id'], $_POST['selectedDate'], $_POST['servicelength'].':00'); + + $rowIndex = 1; + if(!empty($results)){ + foreach($results as $resultIem){ + ?> +
+ Service_model->getWorkerById($_POST['worker_id']); + + if(is_object($result)){ + ?> +
+
worker_name;?>
+ User_model->getUserById($_POST['user_id']); + $userArray = array( + 'is_enabled' => $_POST['newValue'] + ); + $this->User_model->updateUser($_POST['user_id'], $userArray); + $this->Log_model->addLog('change_user_status', $data['currentUser']->username.' státusza változott - '.($_POST['newValue']?'aktív':'letiltva').' állapotra', $_POST['operator']); + } + + if(isset($_POST['action']) && $_POST['action'] == 'checkUser'){ + echo $this->User_model->isUsernameAvailable($_POST['username']); + } + + if(isset($_POST['action']) && $_POST['action'] == 'refreshLogMonitor'){ + $logInfoArray = $this->Log_model->getAllLoginfo(); + $logrow = ''; + foreach($logInfoArray as $logInfoItem){ + $logDateTime = new datetime($logInfoItem->event_datetime); + $logrow .= date_format($logDateTime,"Y-m-d H:i").'  '.$logInfoItem->username.'  '.$logInfoItem->event_content.' '; + } + echo $logrow; + } + + + + $this->load->view('pages/ajax', $data); + } + + + public function booking_process(){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + + $data['pageTitle'] = ''; + $data['subpage'] = ''; + + if(isset($_POST['sendBooking'])){ + //calculate finish time + $serviceStartTime = date("H:i:s", strtotime($_POST['booking_start_time'])); + $serviceLengthTime = date("H:i:s", strtotime($_POST['servicelength'])); + $secs = strtotime($serviceLengthTime)-strtotime("00:00:00"); + $serviceFinishTime = date("H:i:s",strtotime($serviceStartTime)+$secs); + + $data['services'] = $this->Service_model->getAllServiceByServiceType($_POST['subpage'], $_POST['lang']); + $data['workers'] = $this->Service_model->getAllWorkers(); + $data['selectedLang'] = 'en'; + $selectedServiceArray = array(); + + //find selected services + if(is_array($data['services'])){ + foreach($data['services'] as $serviceItem){ + if(isset($_POST['service_'.$serviceItem->service_id])){ + if($_POST['service_'.$serviceItem->service_id]){ + $selectedServiceArray[] = $serviceItem->service_id; + } + } + } + } + + $bookingArray = array( + 'guest_name' => $_POST['guest_name'], + 'guest_email' => $_POST['guest_email'], + 'guest_phone' => $_POST['guest_phone'], + 'worker_id' => $_POST['worker_id'], + 'booking_date' => $_POST['booking_date'], + 'booking_start_time' => $_POST['booking_start_time'], + 'booking_finish_time' => $serviceFinishTime, + 'service_ids' => serialize($selectedServiceArray), + 'guest_confirmed' => '0', + 'guest_confirm_code' => '1234', + ); + + $this->Service_model->createBooking($bookingArray); + $worker = $this->Service_model->getWorkerById($bookingArray['worker_id']); + + $services = unserialize($bookingArray['service_ids']); + $serviceArray = array(); + $emailArray = array(); + + if(is_array($services)){ + foreach($services as $serviceItem){ + $selectedService = $this->Service_model->getServiceById($serviceItem); + if(is_object($selectedService)){ + $serviceArray[] = $selectedService; + } + } + } + + $content = ''; + + switch($_POST['lang']){ + case 'no': + $content = 'Kjære gjest,
'; + $content .= 'Takk for din bestilling!
'; + $content .= '
'; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= '
Navn: '.$bookingArray['guest_name'].'
E-post: '.$bookingArray['guest_email'].'
Telefon: '.$bookingArray['guest_phone'].'
Arbeider: '.$worker->worker_name.'
Dato: '.$bookingArray['booking_date'].'
Tid: '.$bookingArray['booking_start_time'].' - '.$bookingArray['booking_finish_time'].'
Tjenester: '; + $totalServicePrice = 0; + foreach($serviceArray as $serviceArrayItem){ + $totalServicePrice += $serviceArrayItem->service_price; + $content .= ''; + } + $content .= '
'.$serviceArrayItem->service_name_no.''.$serviceArrayItem->service_price.' kr
Totalpris: '.$totalServicePrice.' kr
'; + $content .= '
STUDIOBEVE'; + break; + case 'en': + $content = 'Dear Guest,
'; + $content .= 'Thank you for your booking!
'; + $content .= '
'; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= '
Name: '.$bookingArray['guest_name'].'
Email: '.$bookingArray['guest_email'].'
Phone: '.$bookingArray['guest_phone'].'
Worker: '.$worker->worker_name.'
Date: '.$bookingArray['booking_date'].'
Time: '.$bookingArray['booking_start_time'].' - '.$bookingArray['booking_finish_time'].'
Services: '; + $totalServicePrice = 0; + foreach($serviceArray as $serviceArrayItem){ + $totalServicePrice += $serviceArrayItem->service_price; + $content .= ''; + } + $content .= '
'.$serviceArrayItem->service_name_en.''.$serviceArrayItem->service_price.' kr
Total price: '.$totalServicePrice.' kr
'; + $content .= '
STUDIOBEVE'; + break; + case 'hu': + $content = 'Kedves Vendégünk,
'; + $content .= 'Köszönettel fogadtuk a foglalását!
'; + $content .= '
'; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= '
Név: '.$bookingArray['guest_name'].'
Email: '.$bookingArray['guest_email'].'
Telefon: '.$bookingArray['guest_phone'].'
Dolgozó: '.$worker->worker_name.'
Dátum: '.$bookingArray['booking_date'].'
Időpont: '.$bookingArray['booking_start_time'].' - '.$bookingArray['booking_finish_time'].'
Szolgáltatás(ok): '; + $totalServicePrice = 0; + foreach($serviceArray as $serviceArrayItem){ + $totalServicePrice += $serviceArrayItem->service_price; + $content .= ''; + } + $content .= '
'.$serviceArrayItem->service_name_hu.''.$serviceArrayItem->service_price.' kr
Összesen fizetendő: '.$totalServicePrice.' kr
'; + $content .= '
STUDIOBEVE'; + break; + } + + $data['selectedLang'] = $_POST['lang']; + + $emailItem = array( + 'addressee_email' => $bookingArray['guest_email'], + 'addressee_name' => $bookingArray['guest_name'], + 'subject' => '[studiobeve] Your booking has arrived', + 'content' => $content, + 'attachments' => array() + ); + $emailArray[] = $emailItem; + header('Location:'.SITEURL.$_POST['lang'].'/booking-finished/'.$_POST['subpage']); + } + + $this->User_model->sendEmail($emailArray, $_POST['lang'], $_POST['subpage']); + $this->load->view('pages/booking-process', $data); + } + + public function profile(){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Log_model'); + $this->load->model('Module_model'); + $data['message'] = ''; + $data['message_class'] = ''; + $data['fullname'] = ''; + $data['password'] = ''; + $data['profile_img_url'] = ''; + + if(isset($_SESSION['username'])){ + $data['currentUser'] = $this->User_model->getUserByUsername($_SESSION['username']); + + $data['message'] = ''; + $data['message_class'] = ''; + $data['pageTitle'] = 'Profil szerkesztése'; + + if($this->User_model->is_user_admin($_SESSION['username'])){ + $data['activeModules'] = $this->Module_model->getAllModule(); + } + else{ + $data['activeModules'] = $this->Module_model->getUserModules($data['currentUser']->user_id); + } + + if(isset($_POST["storeProfile"])) { + + if($_POST['fullname'] != $data['currentUser']->fullname){ + $userArray = array( + 'fullname' => $_POST['fullname'] + ); + $this->User_model->updateUser($data['currentUser']->user_id, $userArray); + $this->Log_model->addLog('profile', 'A felhasználó módosította a teljes nevét: '.$data['currentUser']->fullname.' => '.$_POST['fullname'],$_SESSION['username']); + } + + if($_POST['password'] != ''){ + $userArray = array( + 'password' => hash('sha256', $_POST['password']) + ); + $this->User_model->updateUser($data['currentUser']->user_id, $userArray); + $this->Log_model->addLog('profile', 'A felhasználó módosította a jelszavát',$_SESSION['username']); + } + + + //upload profile image + if($_FILES["profile_img"]["tmp_name"] != ''){ + $target_dir = getcwd()."/assets/img/profiles/"; + $target_file = $target_dir . str_replace('.','_', str_replace('@','_',$_SESSION['username'])); + $imageFileType = strtolower(pathinfo(basename($_FILES["profile_img"]["name"]),PATHINFO_EXTENSION)); + + if (move_uploaded_file($_FILES["profile_img"]["tmp_name"], $target_file.'.'.$imageFileType)) { + $data['message'] = 'A profilkép sikeresen feltöltve!'; + $data['message_class'] = 'successMessage'; + $data['profile_img_url'] = 'assets/img/profiles/'.str_replace('.','_', str_replace('@','_',$_SESSION['username'])).'.'.$imageFileType; + $userArray = array( + 'profile_img_url' => $data['profile_img_url'] + ); + $this->User_model->updateUser($data['currentUser']->user_id, $userArray); + $this->Log_model->addLog('profile', 'A felhasználó lecserélte a profilképét ',$_SESSION['username']); + } else { + $data['message'] = 'Hiba a feltöltés közben!'; + $data['message_class'] = 'errorMessage'; + } + + } + + $data['message'] = 'A profil sikeresen módosítva!'; + $data['message_class'] = 'successMessage'; + } + + + $data['currentUser'] = $this->User_model->getUserByUsername($_SESSION['username']); + $this->load->view('pages/profile', $data); + + } + else{ + header("Location:".SITEURL."login"); + } + } + + public function log_monitor(){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Log_model'); + $this->load->model('Module_model'); + + if(isset($_SESSION['username'])){ + $data['currentUser'] = $this->User_model->getUserByUsername($_SESSION['username']); + $data['message'] = ''; + $data['message_class'] = ''; + $data['pageTitle'] = 'Rendszermonitor'; + $data['logInfoLink'] = ''; + + if($this->User_model->is_user_admin($_SESSION['username'])){ + $data['activeModules'] = $this->Module_model->getAllModule(); + } + else{ + $data['activeModules'] = $this->Module_model->getUserModules($data['currentUser']->user_id); + } + + $selectedModule = $this->Module_model->getModuleBySlug('log-monitor'); + if($this->Module_model->is_module_available($selectedModule->module_id, $data['currentUser']->user_id)){ + + if(isset($_POST['exportToFile'])){ + $logInfoArray = $this->Log_model->getAllLoginfo(); + $logrow = ''; + $logTxt = fopen(getcwd()."/documents/loginfo.csv", "w") or die("Hiba a fájl mentésekor!"); + $row = '"Esemény ideje";'.'"Esemény típusa";'.'"Felhasználónév";"Bejegyzés tartalma";'.PHP_EOL; + $string_encoded = iconv( mb_detect_encoding( $row ), 'ISO-8859-2', $row ); + fwrite($logTxt, $string_encoded); + + foreach($logInfoArray as $logInfoItem){ + $logDateTime = new datetime($logInfoItem->event_datetime); + $row = date_format($logDateTime,"Y-m-d H:i").';"'.$logInfoItem->event_type.'";"'.$logInfoItem->username.'";"'.$logInfoItem->event_content.'";'.PHP_EOL; + $string_encoded = iconv( mb_detect_encoding( $row ), 'ISO-8859-2', $row ); + fwrite($logTxt, $string_encoded); + } + fclose($logTxt); + $data['logInfoLink'] = 'A loginfo.csv fájl letöltése'; + } + + $this->load->view('log-monitor', $data); + + } + else{ + header("Location:".SITEURL."home"); + } + + + } + else{ + header("Location:".SITEURL."login"); + } + + } + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +} diff --git a/application/controllers/Pages_20250523.php b/application/controllers/Pages_20250523.php new file mode 100755 index 0000000..eae23de --- /dev/null +++ b/application/controllers/Pages_20250523.php @@ -0,0 +1,591 @@ + + * @see https://codeigniter.com/userguide3/general/urls.html + */ + public function index(){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + + $data['pageTitle'] = ''; + $this->load->view('pages/home', $data); + } + + public function barber($lang){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + $data['pageTitle'] = ''; + $data['selectedLang'] = $lang; + + $data['services'] = $this->Service_model->getAllServiceByServiceType('barber', $lang); + $this->load->view('pages/barber', $data); + } + + public function beauty($lang){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + $data['pageTitle'] = ''; + $data['selectedLang'] = $lang; + + $data['services'] = $this->Service_model->getAllServiceByServiceType('beauty', $lang); + $this->load->view('pages/beauty', $data); + } + + public function booking($lang, $subpage){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + + $data['pageTitle'] = ''; + $data['selectedLang'] = $lang; + $data['subpage'] = $subpage; + + $data['services'] = $this->Service_model->getAllServiceByServiceType($subpage, $lang); + $data['workers'] = $this->Service_model->getActiveWorkers($subpage); + + switch($subpage){ + case 'barber': + $this->load->view('pages/barber-booking', $data); + break; + case 'beauty': + $this->load->view('pages/beauty-booking', $data); + break; + default: + header('Location:'.SITEURL); + } + } + + public function booking_finished($lang, $subpage){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + $data['pageTitle'] = ''; + $data['selectedLang'] = $lang; + + switch($subpage){ + case 'barber': + $this->load->view('pages/barber-booking-finished', $data); + break; + case 'beauty': + $this->load->view('pages/beauty-booking-finished', $data); + break; + default: + header('Location:'.SITEURL); + } + } + + public function email_verification(){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + $this->load->model('Log_model'); + + $data['pageTitle'] = ''; + $this->load->view('pages/email-verification', $data); + } + + public function ajax(){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + $this->load->model('Log_model'); + + $data['pageTitle'] = ''; + + if(isset($_POST['action']) && $_POST['action'] == 'getAvailableWorkersByServiceCategory' && isset($_POST['serv_cat_slug'])){ + $workers = $this->Service_model->getWorkersByCategorySlug($_POST['serv_cat_slug']); + $returnedWorkers = ''; + $workerIndex = 0; + $workerListShow = ''; + + if(is_array($workers)){ + foreach($workers as $workerItem){ + $workerListShow .= ''; + /* + ?> + + $workers, + 'workerListShow' => $workerListShow + ); + + echo json_encode($responseArray); + } + + if(isset($_POST['action']) && $_POST['action'] == 'calculate_service_length' && isset($_POST['service_ids'])){ + if($_POST['service_ids'] != ''){ + $explodedServiceIds = explode(',', $_POST['service_ids']); + $totalLength = '00:00:00'; + if(!empty($explodedServiceIds)){ + foreach($explodedServiceIds as $explodedServiceIdItem){ + $currentService = $this->Service_model->getServiceById($explodedServiceIdItem); + $time = $totalLength; + $time2 = $currentService->service_time; + + $secs = strtotime($time2)-strtotime("00:00:00"); + $addedTotal = date("H:i:s",strtotime($time)+$secs); + $totalLength = $addedTotal; + } + + } + echo $totalLength; + } + } + + if(isset($_POST['action']) && $_POST['action'] == 'getAvailableTimeOptions' && isset($_POST['selectedDate'])){ + $results = $this->Service_model->getAvailableTimes($_POST['worker_id'], $_POST['selectedDate'], $_POST['servicelength']); + + $rowIndex = 1; + if(is_array($results)){ + foreach($results as $resultIem){ + ?> + + Service_model->getAvailableTimes($_POST['worker_id'], $_POST['selectedDate'], $_POST['servicelength']); + + $timeIsAvailable = 0; + if(is_array($results)){ + foreach($results as $resultIem){ + if(date('H:i:s', strtotime($resultIem)) == $_POST['selectedTime']){ + $timeIsAvailable = 1; + } + } + + echo $timeIsAvailable; + } + else{ + echo 0; + } + } + + if(isset($_POST['action']) && $_POST['action'] == 'getAvailableTimes' && isset($_POST['selectedDate'])){ + $results = $this->Service_model->getAvailableTimes($_POST['worker_id'], $_POST['selectedDate'], $_POST['servicelength'].':00'); + + $rowIndex = 1; + if(!empty($results)){ + foreach($results as $resultIem){ + ?> +
+ Service_model->getWorkerById($_POST['worker_id']); + + if(is_object($result)){ + ?> +
+
worker_name;?>
+ User_model->getUserById($_POST['user_id']); + $userArray = array( + 'is_enabled' => $_POST['newValue'] + ); + $this->User_model->updateUser($_POST['user_id'], $userArray); + $this->Log_model->addLog('change_user_status', $data['currentUser']->username.' státusza változott - '.($_POST['newValue']?'aktív':'letiltva').' állapotra', $_POST['operator']); + } + + if(isset($_POST['action']) && $_POST['action'] == 'checkUser'){ + echo $this->User_model->isUsernameAvailable($_POST['username']); + } + + if(isset($_POST['action']) && $_POST['action'] == 'refreshLogMonitor'){ + $logInfoArray = $this->Log_model->getAllLoginfo(); + $logrow = ''; + foreach($logInfoArray as $logInfoItem){ + $logDateTime = new datetime($logInfoItem->event_datetime); + $logrow .= date_format($logDateTime,"Y-m-d H:i").'  '.$logInfoItem->username.'  '.$logInfoItem->event_content.' '; + } + echo $logrow; + } + + + + $this->load->view('pages/ajax', $data); + } + + + public function booking_process(){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + + $data['pageTitle'] = ''; + $data['subpage'] = ''; + + if(isset($_POST['sendBooking'])){ + //calculate finish time + $serviceStartTime = date("H:i:s", strtotime($_POST['booking_start_time'])); + $serviceLengthTime = date("H:i:s", strtotime($_POST['servicelength'])); + $secs = strtotime($serviceLengthTime)-strtotime("00:00:00"); + $serviceFinishTime = date("H:i:s",strtotime($serviceStartTime)+$secs); + + $data['services'] = $this->Service_model->getAllServiceByServiceType($_POST['subpage'], $_POST['lang']); + $data['workers'] = $this->Service_model->getAllWorkers(); + $data['selectedLang'] = 'en'; + $selectedServiceArray = array(); + + //find selected services + if(is_array($data['services'])){ + foreach($data['services'] as $serviceItem){ + if(isset($_POST['service_'.$serviceItem->service_id])){ + if($_POST['service_'.$serviceItem->service_id]){ + $selectedServiceArray[] = $serviceItem->service_id; + } + } + } + } + + $bookingArray = array( + 'guest_name' => $_POST['guest_name'], + 'guest_email' => $_POST['guest_email'], + 'guest_phone' => $_POST['guest_phone'], + 'worker_id' => $_POST['worker_id'], + 'booking_date' => $_POST['booking_date'], + 'booking_start_time' => $_POST['booking_start_time'], + 'booking_finish_time' => $serviceFinishTime, + 'service_ids' => serialize($selectedServiceArray), + 'guest_confirmed' => '0', + 'guest_confirm_code' => '1234', + ); + + $this->Service_model->createBooking($bookingArray); + $worker = $this->Service_model->getWorkerById($bookingArray['worker_id']); + + $services = unserialize($bookingArray['service_ids']); + $serviceArray = array(); + $emailArray = array(); + + if(is_array($services)){ + foreach($services as $serviceItem){ + $selectedService = $this->Service_model->getServiceById($serviceItem); + if(is_object($selectedService)){ + $serviceArray[] = $selectedService; + } + } + } + + $content = ''; + + switch($_POST['lang']){ + case 'no': + $content = 'Kjære gjest,
'; + $content .= 'Takk for din bestilling!
'; + $content .= '
'; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= '
Navn: '.$bookingArray['guest_name'].'
E-post: '.$bookingArray['guest_email'].'
Telefon: '.$bookingArray['guest_phone'].'
Arbeider: '.$worker->worker_name.'
Dato: '.$bookingArray['booking_date'].'
Tid: '.$bookingArray['booking_start_time'].' - '.$bookingArray['booking_finish_time'].'
Tjenester: '; + $totalServicePrice = 0; + foreach($serviceArray as $serviceArrayItem){ + $totalServicePrice += $serviceArrayItem->service_price; + $content .= ''; + } + $content .= '
'.$serviceArrayItem->service_name_no.''.$serviceArrayItem->service_price.' kr
Totalpris: '.$totalServicePrice.' kr
'; + $content .= '
STUDIOBEVE'; + break; + case 'en': + $content = 'Dear Guest,
'; + $content .= 'Thank you for your booking!
'; + $content .= '
'; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= '
Name: '.$bookingArray['guest_name'].'
Email: '.$bookingArray['guest_email'].'
Phone: '.$bookingArray['guest_phone'].'
Worker: '.$worker->worker_name.'
Date: '.$bookingArray['booking_date'].'
Time: '.$bookingArray['booking_start_time'].' - '.$bookingArray['booking_finish_time'].'
Services: '; + $totalServicePrice = 0; + foreach($serviceArray as $serviceArrayItem){ + $totalServicePrice += $serviceArrayItem->service_price; + $content .= ''; + } + $content .= '
'.$serviceArrayItem->service_name_en.''.$serviceArrayItem->service_price.' kr
Total price: '.$totalServicePrice.' kr
'; + $content .= '
STUDIOBEVE'; + break; + case 'hu': + $content = 'Kedves Vendégünk,
'; + $content .= 'Köszönettel fogadtuk a foglalását!
'; + $content .= '
'; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= '
Név: '.$bookingArray['guest_name'].'
Email: '.$bookingArray['guest_email'].'
Telefon: '.$bookingArray['guest_phone'].'
Dolgozó: '.$worker->worker_name.'
Dátum: '.$bookingArray['booking_date'].'
Időpont: '.$bookingArray['booking_start_time'].' - '.$bookingArray['booking_finish_time'].'
Szolgáltatás(ok): '; + $totalServicePrice = 0; + foreach($serviceArray as $serviceArrayItem){ + $totalServicePrice += $serviceArrayItem->service_price; + $content .= ''; + } + $content .= '
'.$serviceArrayItem->service_name_hu.''.$serviceArrayItem->service_price.' kr
Összesen fizetendő: '.$totalServicePrice.' kr
'; + $content .= '
STUDIOBEVE'; + break; + } + + $data['selectedLang'] = $_POST['lang']; + + $emailItem = array( + 'addressee_email' => $bookingArray['guest_email'], + 'addressee_name' => $bookingArray['guest_name'], + 'subject' => '[studiobeve] Your booking has arrived', + 'content' => $content, + 'attachments' => array() + ); + $emailArray[] = $emailItem; + header('Location:'.SITEURL.$_POST['lang'].'/booking-finished/'.$_POST['subpage']); + } + + $this->User_model->sendEmail($emailArray, $_POST['lang'], $_POST['subpage']); + $this->load->view('pages/booking-process', $data); + } + + public function profile(){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Log_model'); + $this->load->model('Module_model'); + $data['message'] = ''; + $data['message_class'] = ''; + $data['fullname'] = ''; + $data['password'] = ''; + $data['profile_img_url'] = ''; + + if(isset($_SESSION['username'])){ + $data['currentUser'] = $this->User_model->getUserByUsername($_SESSION['username']); + + $data['message'] = ''; + $data['message_class'] = ''; + $data['pageTitle'] = 'Profil szerkesztése'; + + if($this->User_model->is_user_admin($_SESSION['username'])){ + $data['activeModules'] = $this->Module_model->getAllModule(); + } + else{ + $data['activeModules'] = $this->Module_model->getUserModules($data['currentUser']->user_id); + } + + if(isset($_POST["storeProfile"])) { + + if($_POST['fullname'] != $data['currentUser']->fullname){ + $userArray = array( + 'fullname' => $_POST['fullname'] + ); + $this->User_model->updateUser($data['currentUser']->user_id, $userArray); + $this->Log_model->addLog('profile', 'A felhasználó módosította a teljes nevét: '.$data['currentUser']->fullname.' => '.$_POST['fullname'],$_SESSION['username']); + } + + if($_POST['password'] != ''){ + $userArray = array( + 'password' => hash('sha256', $_POST['password']) + ); + $this->User_model->updateUser($data['currentUser']->user_id, $userArray); + $this->Log_model->addLog('profile', 'A felhasználó módosította a jelszavát',$_SESSION['username']); + } + + + //upload profile image + if($_FILES["profile_img"]["tmp_name"] != ''){ + $target_dir = getcwd()."/assets/img/profiles/"; + $target_file = $target_dir . str_replace('.','_', str_replace('@','_',$_SESSION['username'])); + $imageFileType = strtolower(pathinfo(basename($_FILES["profile_img"]["name"]),PATHINFO_EXTENSION)); + + if (move_uploaded_file($_FILES["profile_img"]["tmp_name"], $target_file.'.'.$imageFileType)) { + $data['message'] = 'A profilkép sikeresen feltöltve!'; + $data['message_class'] = 'successMessage'; + $data['profile_img_url'] = 'assets/img/profiles/'.str_replace('.','_', str_replace('@','_',$_SESSION['username'])).'.'.$imageFileType; + $userArray = array( + 'profile_img_url' => $data['profile_img_url'] + ); + $this->User_model->updateUser($data['currentUser']->user_id, $userArray); + $this->Log_model->addLog('profile', 'A felhasználó lecserélte a profilképét ',$_SESSION['username']); + } else { + $data['message'] = 'Hiba a feltöltés közben!'; + $data['message_class'] = 'errorMessage'; + } + + } + + $data['message'] = 'A profil sikeresen módosítva!'; + $data['message_class'] = 'successMessage'; + } + + + $data['currentUser'] = $this->User_model->getUserByUsername($_SESSION['username']); + $this->load->view('pages/profile', $data); + + } + else{ + header("Location:".SITEURL."login"); + } + } + + public function log_monitor(){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Log_model'); + $this->load->model('Module_model'); + + if(isset($_SESSION['username'])){ + $data['currentUser'] = $this->User_model->getUserByUsername($_SESSION['username']); + $data['message'] = ''; + $data['message_class'] = ''; + $data['pageTitle'] = 'Rendszermonitor'; + $data['logInfoLink'] = ''; + + if($this->User_model->is_user_admin($_SESSION['username'])){ + $data['activeModules'] = $this->Module_model->getAllModule(); + } + else{ + $data['activeModules'] = $this->Module_model->getUserModules($data['currentUser']->user_id); + } + + $selectedModule = $this->Module_model->getModuleBySlug('log-monitor'); + if($this->Module_model->is_module_available($selectedModule->module_id, $data['currentUser']->user_id)){ + + if(isset($_POST['exportToFile'])){ + $logInfoArray = $this->Log_model->getAllLoginfo(); + $logrow = ''; + $logTxt = fopen(getcwd()."/documents/loginfo.csv", "w") or die("Hiba a fájl mentésekor!"); + $row = '"Esemény ideje";'.'"Esemény típusa";'.'"Felhasználónév";"Bejegyzés tartalma";'.PHP_EOL; + $string_encoded = iconv( mb_detect_encoding( $row ), 'ISO-8859-2', $row ); + fwrite($logTxt, $string_encoded); + + foreach($logInfoArray as $logInfoItem){ + $logDateTime = new datetime($logInfoItem->event_datetime); + $row = date_format($logDateTime,"Y-m-d H:i").';"'.$logInfoItem->event_type.'";"'.$logInfoItem->username.'";"'.$logInfoItem->event_content.'";'.PHP_EOL; + $string_encoded = iconv( mb_detect_encoding( $row ), 'ISO-8859-2', $row ); + fwrite($logTxt, $string_encoded); + } + fclose($logTxt); + $data['logInfoLink'] = 'A loginfo.csv fájl letöltése'; + } + + $this->load->view('log-monitor', $data); + + } + else{ + header("Location:".SITEURL."home"); + } + + + } + else{ + header("Location:".SITEURL."login"); + } + + } + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +} diff --git a/application/controllers/Pages_20250524.php b/application/controllers/Pages_20250524.php new file mode 100755 index 0000000..721333f --- /dev/null +++ b/application/controllers/Pages_20250524.php @@ -0,0 +1,652 @@ + + * @see https://codeigniter.com/userguide3/general/urls.html + */ + public function index(){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + + $data['pageTitle'] = ''; + $this->load->view('pages/home', $data); + } + + public function barber($lang){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + $data['pageTitle'] = ''; + $data['selectedLang'] = $lang; + + $data['services'] = $this->Service_model->getAllServiceByServiceType('barber', $lang); + $this->load->view('pages/barber', $data); + } + + public function beauty($lang){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + $data['pageTitle'] = ''; + $data['selectedLang'] = $lang; + + $data['services'] = $this->Service_model->getAllServiceByServiceType('beauty', $lang); + $this->load->view('pages/beauty', $data); + } + + public function booking($lang, $subpage){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + + $data['pageTitle'] = ''; + $data['selectedLang'] = $lang; + $data['subpage'] = $subpage; + + $data['services'] = $this->Service_model->getAllServiceByServiceType($subpage, $lang); + $data['workers'] = $this->Service_model->getActiveWorkers($subpage); + + switch($subpage){ + case 'barber': + $this->load->view('pages/barber-booking', $data); + break; + case 'beauty': + $this->load->view('pages/beauty-booking', $data); + break; + default: + header('Location:'.SITEURL); + } + } + + public function booking_finished($lang, $subpage){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + $data['pageTitle'] = ''; + $data['selectedLang'] = $lang; + + switch($subpage){ + case 'barber': + $this->load->view('pages/barber-booking-finished', $data); + break; + case 'beauty': + $this->load->view('pages/beauty-booking-finished', $data); + break; + default: + header('Location:'.SITEURL); + } + } + + public function email_verification(){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + $this->load->model('Log_model'); + + $data['pageTitle'] = ''; + $this->load->view('pages/email-verification', $data); + } + + public function ajax(){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + $this->load->model('Log_model'); + + $data['pageTitle'] = ''; + + if(isset($_POST['action']) && $_POST['action'] == 'getAvailableWorkersByServiceCategory' && isset($_POST['serv_cat_slug'])){ + $workers = $this->Service_model->getWorkersByCategorySlug($_POST['serv_cat_slug']); + $returnedWorkers = ''; + $workerIndex = 0; + $workerListShow = ''; + + if(is_array($workers)){ + foreach($workers as $workerItem){ + $workerListShow .= ''; + /* + ?> + + $workers, + 'workerListShow' => $workerListShow + ); + + echo json_encode($responseArray); + } + + if(isset($_POST['action']) && $_POST['action'] == 'calculate_service_length' && isset($_POST['service_ids'])){ + if($_POST['service_ids'] != ''){ + $explodedServiceIds = explode(',', $_POST['service_ids']); + $totalLength = '00:00:00'; + if(!empty($explodedServiceIds)){ + foreach($explodedServiceIds as $explodedServiceIdItem){ + $currentService = $this->Service_model->getServiceById($explodedServiceIdItem); + $time = $totalLength; + $time2 = $currentService->service_time; + + $secs = strtotime($time2)-strtotime("00:00:00"); + $addedTotal = date("H:i:s",strtotime($time)+$secs); + $totalLength = $addedTotal; + } + + } + echo $totalLength; + } + } + + if(isset($_POST['action']) && $_POST['action'] == 'getAvailableTimeOptions' && isset($_POST['selectedDate'])){ + $results = $this->Service_model->getAvailableTimes($_POST['worker_id'], $_POST['selectedDate'], $_POST['servicelength']); + + $rowIndex = 1; + if(is_array($results)){ + foreach($results as $resultIem){ + ?> + + Service_model->getAvailableTimes($_POST['worker_id'], $_POST['selectedDate'], $_POST['servicelength']); + + $timeIsAvailable = 0; + if(is_array($results)){ + foreach($results as $resultIem){ + if(date('H:i:s', strtotime($resultIem)) == $_POST['selectedTime']){ + $timeIsAvailable = 1; + } + } + + echo $timeIsAvailable; + } + else{ + echo 0; + } + } + + if(isset($_POST['action']) && $_POST['action'] == 'getAvailableTimes' && isset($_POST['selectedDate'])){ + $results = $this->Service_model->getAvailableTimes($_POST['worker_id'], $_POST['selectedDate'], $_POST['servicelength'].':00'); + + $rowIndex = 1; + if(!empty($results)){ + foreach($results as $resultIem){ + ?> +
+ Service_model->getWorkerById($_POST['worker_id']); + + if(is_object($result)){ + ?> +
+
worker_name;?>
+ User_model->getUserById($_POST['user_id']); + $userArray = array( + 'is_enabled' => $_POST['newValue'] + ); + $this->User_model->updateUser($_POST['user_id'], $userArray); + $this->Log_model->addLog('change_user_status', $data['currentUser']->username.' státusza változott - '.($_POST['newValue']?'aktív':'letiltva').' állapotra', $_POST['operator']); + } + + if(isset($_POST['action']) && $_POST['action'] == 'checkUser'){ + echo $this->User_model->isUsernameAvailable($_POST['username']); + } + + if(isset($_POST['action']) && $_POST['action'] == 'refreshLogMonitor'){ + $logInfoArray = $this->Log_model->getAllLoginfo(); + $logrow = ''; + foreach($logInfoArray as $logInfoItem){ + $logDateTime = new datetime($logInfoItem->event_datetime); + $logrow .= date_format($logDateTime,"Y-m-d H:i").'  '.$logInfoItem->username.'  '.$logInfoItem->event_content.' '; + } + echo $logrow; + } + + + + $this->load->view('pages/ajax', $data); + } + + + public function booking_process(){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + + $data['pageTitle'] = ''; + $data['subpage'] = ''; + + if(isset($_POST['sendBooking'])){ + //calculate finish time + $serviceStartTime = date("H:i:s", strtotime($_POST['booking_start_time'])); + $serviceLengthTime = date("H:i:s", strtotime($_POST['servicelength'])); + $secs = strtotime($serviceLengthTime)-strtotime("00:00:00"); + $serviceFinishTime = date("H:i:s",strtotime($serviceStartTime)+$secs); + + $data['services'] = $this->Service_model->getAllServiceByServiceType($_POST['subpage'], $_POST['lang']); + $data['workers'] = $this->Service_model->getAllWorkers(); + $data['selectedLang'] = 'en'; + $selectedServiceArray = array(); + + //find selected services + if(is_array($data['services'])){ + foreach($data['services'] as $serviceItem){ + if(isset($_POST['service_'.$serviceItem->service_id])){ + if($_POST['service_'.$serviceItem->service_id]){ + $selectedServiceArray[] = $serviceItem->service_id; + } + } + } + } + + // 1. Build selected service array + $selectedServiceArray = array(); + $totalLengthSeconds = 0; + + foreach ($_POST as $key => $value) { + if (strpos($key, 'service_') === 0 && $value == '1') { + $serviceId = str_replace('service_', '', $key); + $selectedServiceArray[] = $serviceId; + + $service = $this->Service_model->getServiceById($serviceId); + if ($service) { + $parts = explode(':', $service->service_time); + $totalLengthSeconds += ($parts[0] * 3600) + ($parts[1] * 60); + } + } + } + + // 2. Convert total time to H:i format + $servicelength = gmdate('H:i:s', $totalLengthSeconds); + + // 3. Build booking array + $bookingArray = array( + 'guest_name' => $_POST['guest_name'], + 'guest_email' => $_POST['guest_email'], + 'guest_phone' => $_POST['guest_phone'], + 'worker_id' => $_POST['worker_id'], + 'booking_date' => $_POST['booking_date'], + 'booking_start_time' => $_POST['booking_start_time'], + 'booking_finish_time' => '', // optional + 'service_ids' => serialize($selectedServiceArray), + 'guest_confirmed' => '0', + 'guest_confirm_code' => '1234', + ); + + // 4. Validate: available slot with correct length + $available = $this->Service_model->getAvailableTimes( + $bookingArray['worker_id'], + $bookingArray['booking_date'], + $servicelength + ); + + if (!is_array($available) || !in_array($bookingArray['booking_start_time'], $available)) { + $this->output + ->set_status_header(409) + ->set_content_type('application/json') + ->set_output(json_encode([ + 'error' => 'Conflict. Timeslot is taken or does not fit the service.' + ])); + return; + } + + // 5. Validate: booking doesn't go past 18:00 + $bookingStart = new DateTime($bookingArray['booking_start_time']); + $bookingLength = new DateTime($servicelength); + $bookingEnd = clone $bookingStart; + $bookingEnd->add(new DateInterval('PT' . intval($bookingLength->format('H')) . 'H')); + $bookingEnd->add(new DateInterval('PT' . intval($bookingLength->format('i')) . 'M')); + + $bookingArray['booking_finish_time'] = $bookingEnd->format('H:i:s'); + + $closingTime = new DateTime('18:00'); + + if ($bookingEnd > $closingTime) { + $this->output + ->set_status_header(403) + ->set_content_type('application/json') + ->set_output(json_encode([ + 'error' => 'Selected time exceeds business hours.' + ])); + return; + } + + // 6. Create booking + $this->Service_model->createBooking($bookingArray); + + $worker = $this->Service_model->getWorkerById($bookingArray['worker_id']); + + $services = unserialize($bookingArray['service_ids']); + $serviceArray = array(); + $emailArray = array(); + + if(is_array($services)){ + foreach($services as $serviceItem){ + $selectedService = $this->Service_model->getServiceById($serviceItem); + if(is_object($selectedService)){ + $serviceArray[] = $selectedService; + } + } + } + + $content = ''; + + switch($_POST['lang']){ + case 'no': + $content = 'Kjære gjest,
'; + $content .= 'Takk for din bestilling!
'; + $content .= '
'; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= '
Navn: '.$bookingArray['guest_name'].'
E-post: '.$bookingArray['guest_email'].'
Telefon: '.$bookingArray['guest_phone'].'
Arbeider: '.$worker->worker_name.'
Dato: '.$bookingArray['booking_date'].'
Tid: '.$bookingArray['booking_start_time'].' - '.$bookingArray['booking_finish_time'].'
Tjenester: '; + $totalServicePrice = 0; + foreach($serviceArray as $serviceArrayItem){ + $totalServicePrice += $serviceArrayItem->service_price; + $content .= ''; + } + $content .= '
'.$serviceArrayItem->service_name_no.''.$serviceArrayItem->service_price.' kr
Totalpris: '.$totalServicePrice.' kr
'; + $content .= '
STUDIOBEVE'; + break; + case 'en': + $content = 'Dear Guest,
'; + $content .= 'Thank you for your booking!
'; + $content .= '
'; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= '
Name: '.$bookingArray['guest_name'].'
Email: '.$bookingArray['guest_email'].'
Phone: '.$bookingArray['guest_phone'].'
Worker: '.$worker->worker_name.'
Date: '.$bookingArray['booking_date'].'
Time: '.$bookingArray['booking_start_time'].' - '.$bookingArray['booking_finish_time'].'
Services: '; + $totalServicePrice = 0; + foreach($serviceArray as $serviceArrayItem){ + $totalServicePrice += $serviceArrayItem->service_price; + $content .= ''; + } + $content .= '
'.$serviceArrayItem->service_name_en.''.$serviceArrayItem->service_price.' kr
Total price: '.$totalServicePrice.' kr
'; + $content .= '
STUDIOBEVE'; + break; + case 'hu': + $content = 'Kedves Vendégünk,
'; + $content .= 'Köszönettel fogadtuk a foglalását!
'; + $content .= '
'; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= '
Név: '.$bookingArray['guest_name'].'
Email: '.$bookingArray['guest_email'].'
Telefon: '.$bookingArray['guest_phone'].'
Dolgozó: '.$worker->worker_name.'
Dátum: '.$bookingArray['booking_date'].'
Időpont: '.$bookingArray['booking_start_time'].' - '.$bookingArray['booking_finish_time'].'
Szolgáltatás(ok): '; + $totalServicePrice = 0; + foreach($serviceArray as $serviceArrayItem){ + $totalServicePrice += $serviceArrayItem->service_price; + $content .= ''; + } + $content .= '
'.$serviceArrayItem->service_name_hu.''.$serviceArrayItem->service_price.' kr
Összesen fizetendő: '.$totalServicePrice.' kr
'; + $content .= '
STUDIOBEVE'; + break; + } + + $data['selectedLang'] = $_POST['lang']; + + $emailItem = array( + 'addressee_email' => $bookingArray['guest_email'], + 'addressee_name' => $bookingArray['guest_name'], + 'subject' => '[studiobeve] Your booking has arrived', + 'content' => $content, + 'attachments' => array() + ); + $emailArray[] = $emailItem; + header('Location:'.SITEURL.$_POST['lang'].'/booking-finished/'.$_POST['subpage']); + } + + $this->User_model->sendEmail($emailArray, $_POST['lang'], $_POST['subpage']); + $this->load->view('pages/booking-process', $data); + } + + public function profile(){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Log_model'); + $this->load->model('Module_model'); + $data['message'] = ''; + $data['message_class'] = ''; + $data['fullname'] = ''; + $data['password'] = ''; + $data['profile_img_url'] = ''; + + if(isset($_SESSION['username'])){ + $data['currentUser'] = $this->User_model->getUserByUsername($_SESSION['username']); + + $data['message'] = ''; + $data['message_class'] = ''; + $data['pageTitle'] = 'Profil szerkesztése'; + + if($this->User_model->is_user_admin($_SESSION['username'])){ + $data['activeModules'] = $this->Module_model->getAllModule(); + } + else{ + $data['activeModules'] = $this->Module_model->getUserModules($data['currentUser']->user_id); + } + + if(isset($_POST["storeProfile"])) { + + if($_POST['fullname'] != $data['currentUser']->fullname){ + $userArray = array( + 'fullname' => $_POST['fullname'] + ); + $this->User_model->updateUser($data['currentUser']->user_id, $userArray); + $this->Log_model->addLog('profile', 'A felhasználó módosította a teljes nevét: '.$data['currentUser']->fullname.' => '.$_POST['fullname'],$_SESSION['username']); + } + + if($_POST['password'] != ''){ + $userArray = array( + 'password' => hash('sha256', $_POST['password']) + ); + $this->User_model->updateUser($data['currentUser']->user_id, $userArray); + $this->Log_model->addLog('profile', 'A felhasználó módosította a jelszavát',$_SESSION['username']); + } + + + //upload profile image + if($_FILES["profile_img"]["tmp_name"] != ''){ + $target_dir = getcwd()."/assets/img/profiles/"; + $target_file = $target_dir . str_replace('.','_', str_replace('@','_',$_SESSION['username'])); + $imageFileType = strtolower(pathinfo(basename($_FILES["profile_img"]["name"]),PATHINFO_EXTENSION)); + + if (move_uploaded_file($_FILES["profile_img"]["tmp_name"], $target_file.'.'.$imageFileType)) { + $data['message'] = 'A profilkép sikeresen feltöltve!'; + $data['message_class'] = 'successMessage'; + $data['profile_img_url'] = 'assets/img/profiles/'.str_replace('.','_', str_replace('@','_',$_SESSION['username'])).'.'.$imageFileType; + $userArray = array( + 'profile_img_url' => $data['profile_img_url'] + ); + $this->User_model->updateUser($data['currentUser']->user_id, $userArray); + $this->Log_model->addLog('profile', 'A felhasználó lecserélte a profilképét ',$_SESSION['username']); + } else { + $data['message'] = 'Hiba a feltöltés közben!'; + $data['message_class'] = 'errorMessage'; + } + + } + + $data['message'] = 'A profil sikeresen módosítva!'; + $data['message_class'] = 'successMessage'; + } + + + $data['currentUser'] = $this->User_model->getUserByUsername($_SESSION['username']); + $this->load->view('pages/profile', $data); + + } + else{ + header("Location:".SITEURL."login"); + } + } + + public function log_monitor(){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Log_model'); + $this->load->model('Module_model'); + + if(isset($_SESSION['username'])){ + $data['currentUser'] = $this->User_model->getUserByUsername($_SESSION['username']); + $data['message'] = ''; + $data['message_class'] = ''; + $data['pageTitle'] = 'Rendszermonitor'; + $data['logInfoLink'] = ''; + + if($this->User_model->is_user_admin($_SESSION['username'])){ + $data['activeModules'] = $this->Module_model->getAllModule(); + } + else{ + $data['activeModules'] = $this->Module_model->getUserModules($data['currentUser']->user_id); + } + + $selectedModule = $this->Module_model->getModuleBySlug('log-monitor'); + if($this->Module_model->is_module_available($selectedModule->module_id, $data['currentUser']->user_id)){ + + if(isset($_POST['exportToFile'])){ + $logInfoArray = $this->Log_model->getAllLoginfo(); + $logrow = ''; + $logTxt = fopen(getcwd()."/documents/loginfo.csv", "w") or die("Hiba a fájl mentésekor!"); + $row = '"Esemény ideje";'.'"Esemény típusa";'.'"Felhasználónév";"Bejegyzés tartalma";'.PHP_EOL; + $string_encoded = iconv( mb_detect_encoding( $row ), 'ISO-8859-2', $row ); + fwrite($logTxt, $string_encoded); + + foreach($logInfoArray as $logInfoItem){ + $logDateTime = new datetime($logInfoItem->event_datetime); + $row = date_format($logDateTime,"Y-m-d H:i").';"'.$logInfoItem->event_type.'";"'.$logInfoItem->username.'";"'.$logInfoItem->event_content.'";'.PHP_EOL; + $string_encoded = iconv( mb_detect_encoding( $row ), 'ISO-8859-2', $row ); + fwrite($logTxt, $string_encoded); + } + fclose($logTxt); + $data['logInfoLink'] = 'A loginfo.csv fájl letöltése'; + } + + $this->load->view('log-monitor', $data); + + } + else{ + header("Location:".SITEURL."home"); + } + + + } + else{ + header("Location:".SITEURL."login"); + } + + } + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +} diff --git a/application/controllers/Pages_20250617.php b/application/controllers/Pages_20250617.php new file mode 100755 index 0000000..c3e22fb --- /dev/null +++ b/application/controllers/Pages_20250617.php @@ -0,0 +1,685 @@ + + * @see https://codeigniter.com/userguide3/general/urls.html + */ + public function index(){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + + $data['pageTitle'] = ''; + $this->load->view('pages/home', $data); + } + + public function barber($lang){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + $data['pageTitle'] = ''; + $data['selectedLang'] = $lang; + + $data['services'] = $this->Service_model->getAllServiceByServiceType('barber', $lang); + $this->load->view('pages/barber', $data); + } + + public function beauty($lang){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + $data['pageTitle'] = ''; + $data['selectedLang'] = $lang; + + $data['services'] = $this->Service_model->getAllServiceByServiceType('beauty', $lang); + $this->load->view('pages/beauty', $data); + } + + public function booking($lang, $subpage){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + + $data['pageTitle'] = ''; + $data['selectedLang'] = $lang; + $data['subpage'] = $subpage; + + $data['services'] = $this->Service_model->getAllServiceByServiceType($subpage, $lang); + $data['workers'] = $this->Service_model->getActiveWorkers($subpage); + + switch($subpage){ + case 'barber': + $this->load->view('pages/barber-booking', $data); + break; + case 'beauty': + $this->load->view('pages/beauty-booking', $data); + break; + default: + header('Location:'.SITEURL); + } + } + + public function booking_finished($lang, $subpage){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + $data['pageTitle'] = ''; + $data['selectedLang'] = $lang; + + switch($subpage){ + case 'barber': + $this->load->view('pages/barber-booking-finished', $data); + break; + case 'beauty': + $this->load->view('pages/beauty-booking-finished', $data); + break; + default: + header('Location:'.SITEURL); + } + } + + public function email_verification(){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + $this->load->model('Log_model'); + + $data['pageTitle'] = ''; + $this->load->view('pages/email-verification', $data); + } + + public function ajax(){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + $this->load->model('Log_model'); + + $data['pageTitle'] = ''; + + if(isset($_POST['action']) && $_POST['action'] == 'getAvailableWorkersByServiceCategory' && isset($_POST['serv_cat_slug'])){ + $workers = $this->Service_model->getWorkersByCategorySlug($_POST['serv_cat_slug']); + $returnedWorkers = ''; + $workerIndex = 0; + $workerListShow = ''; + + if(is_array($workers)){ + foreach($workers as $workerItem){ + $workerListShow .= ''; + /* + ?> + + $workers, + 'workerListShow' => $workerListShow + ); + + echo json_encode($responseArray); + } + + if(isset($_POST['action']) && $_POST['action'] == 'calculate_service_length' && isset($_POST['service_ids'])){ + if($_POST['service_ids'] != ''){ + $explodedServiceIds = explode(',', $_POST['service_ids']); + $totalLength = '00:00:00'; + if(!empty($explodedServiceIds)){ + foreach($explodedServiceIds as $explodedServiceIdItem){ + $currentService = $this->Service_model->getServiceById($explodedServiceIdItem); + $time = $totalLength; + $time2 = $currentService->service_time; + + $secs = strtotime($time2)-strtotime("00:00:00"); + $addedTotal = date("H:i:s",strtotime($time)+$secs); + $totalLength = $addedTotal; + } + + } + echo $totalLength; + } + } + + if(isset($_POST['action']) && $_POST['action'] == 'getAvailableTimeOptions' && isset($_POST['selectedDate'])){ + $results = $this->Service_model->getAvailableTimes($_POST['worker_id'], $_POST['selectedDate'], $_POST['servicelength']); + + $rowIndex = 1; + if(is_array($results)){ + foreach($results as $resultIem){ + ?> + + Service_model->getAvailableTimes($_POST['worker_id'], $_POST['selectedDate'], $_POST['servicelength']); + + $timeIsAvailable = 0; + if(is_array($results)){ + foreach($results as $resultIem){ + if(date('H:i:s', strtotime($resultIem)) == $_POST['selectedTime']){ + $timeIsAvailable = 1; + } + } + + echo $timeIsAvailable; + } + else{ + echo 0; + } + } + + if(isset($_POST['action']) && $_POST['action'] == 'getAvailableTimes' && isset($_POST['selectedDate'])){ + $results = $this->Service_model->getAvailableTimes($_POST['worker_id'], $_POST['selectedDate'], $_POST['servicelength'].':00'); + + $rowIndex = 1; + if(!empty($results)){ + foreach($results as $resultIem){ + ?> +
+ Service_model->getWorkerById($_POST['worker_id']); + + if(is_object($result)){ + ?> +
+
worker_name;?>
+ User_model->getUserById($_POST['user_id']); + $userArray = array( + 'is_enabled' => $_POST['newValue'] + ); + $this->User_model->updateUser($_POST['user_id'], $userArray); + $this->Log_model->addLog('change_user_status', $data['currentUser']->username.' státusza változott - '.($_POST['newValue']?'aktív':'letiltva').' állapotra', $_POST['operator']); + } + + if(isset($_POST['action']) && $_POST['action'] == 'checkUser'){ + echo $this->User_model->isUsernameAvailable($_POST['username']); + } + + if(isset($_POST['action']) && $_POST['action'] == 'refreshLogMonitor'){ + $logInfoArray = $this->Log_model->getAllLoginfo(); + $logrow = ''; + foreach($logInfoArray as $logInfoItem){ + $logDateTime = new datetime($logInfoItem->event_datetime); + $logrow .= date_format($logDateTime,"Y-m-d H:i").'  '.$logInfoItem->username.'  '.$logInfoItem->event_content.' '; + } + echo $logrow; + } + + + + $this->load->view('pages/ajax', $data); + } + + + public function booking_process(){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + + $data['pageTitle'] = ''; + $data['subpage'] = ''; + + if(isset($_POST['sendBooking'])){ + //calculate finish time + $serviceStartTime = date("H:i:s", strtotime($_POST['booking_start_time'])); + $serviceLengthTime = date("H:i:s", strtotime($_POST['servicelength'])); + $secs = strtotime($serviceLengthTime)-strtotime("00:00:00"); + $serviceFinishTime = date("H:i:s",strtotime($serviceStartTime)+$secs); + + $data['services'] = $this->Service_model->getAllServiceByServiceType($_POST['subpage'], $_POST['lang']); + $data['workers'] = $this->Service_model->getAllWorkers(); + $data['selectedLang'] = 'en'; + $selectedServiceArray = array(); + + + //find selected services + if(is_array($data['services'])){ + foreach($data['services'] as $serviceItem){ + if(isset($_POST['service_'.$serviceItem->service_id])){ + if($_POST['service_'.$serviceItem->service_id]){ + $selectedServiceArray[] = $serviceItem->service_id; + } + } + } + } + + // 1. Build selected service array + $selectedServiceArray = array(); + $totalLengthSeconds = 0; + + foreach ($_POST as $key => $value) { + if (strpos($key, 'service_') === 0 && $value == '1') { + $serviceId = str_replace('service_', '', $key); + $selectedServiceArray[] = $serviceId; + + $service = $this->Service_model->getServiceById($serviceId); + if ($service) { + $parts = explode(':', $service->service_time); + $totalLengthSeconds += ($parts[0] * 3600) + ($parts[1] * 60); + } + } + } + + // 2. Convert total time to H:i format + $servicelength = gmdate('H:i:s', $totalLengthSeconds); + + // 3. Build booking array + $bookingArray = array( + 'guest_name' => $_POST['guest_name'], + 'guest_email' => $_POST['guest_email'], + 'guest_phone' => $_POST['guest_phone'], + 'worker_id' => $_POST['worker_id'], + 'booking_date' => $_POST['booking_date'], + 'booking_start_time' => $_POST['booking_start_time'], + 'booking_finish_time' => '', // optional + 'service_ids' => serialize($selectedServiceArray), + 'guest_confirmed' => '0', + 'guest_confirm_code' => '1234', + ); + + $bookingDate = $bookingArray['booking_date']; + $bookingTime = $bookingArray['booking_start_time']; + $weekday = date('w', strtotime($bookingDate)); + $schedule = $this->Service_model->getWorkerScheduleByDay($bookingArray['worker_id'], $weekday); + + if (!$schedule) { + $this->output + ->set_status_header(403) + ->set_content_type('application/json') + ->set_output(json_encode(['error' => 'Worker is not available on this day.'])); + return; + } + + if ($bookingTime < $schedule->start_time || $bookingTime >= $schedule->end_time) { + $this->output + ->set_status_header(403) + ->set_content_type('application/json') + ->set_output(json_encode(['error' => 'Booking time is outside worker schedule.'])); + return; + } + + if ($schedule->is_alternate_week) { + $weekNum = date('W', strtotime($bookingDate)); + if ($weekNum % 2 !== 0) { + $this->output + ->set_status_header(403) + ->set_content_type('application/json') + ->set_output(json_encode(['error' => 'Worker only works every second week.'])); + return; + } + } + + // 4. Validate: available slot with correct length + $available = $this->Service_model->getAvailableTimes( + $bookingArray['worker_id'], + $bookingArray['booking_date'], + $servicelength + ); + + if (!is_array($available) || !in_array($bookingArray['booking_start_time'], $available)) { + $this->output + ->set_status_header(409) + ->set_content_type('application/json') + ->set_output(json_encode([ + 'error' => 'Conflict. Timeslot is taken or does not fit the service.' + ])); + return; + } + + // 5. Validate: booking doesn't go past 18:00 + $bookingStart = new DateTime($bookingArray['booking_start_time']); + $bookingLength = new DateTime($servicelength); + $bookingEnd = clone $bookingStart; + $bookingEnd->add(new DateInterval('PT' . intval($bookingLength->format('H')) . 'H')); + $bookingEnd->add(new DateInterval('PT' . intval($bookingLength->format('i')) . 'M')); + + $bookingArray['booking_finish_time'] = $bookingEnd->format('H:i:s'); + + $closingTime = new DateTime('18:00'); + + if ($bookingEnd > $closingTime) { + $this->output + ->set_status_header(403) + ->set_content_type('application/json') + ->set_output(json_encode([ + 'error' => 'Selected time exceeds business hours.' + ])); + return; + } + + // 6. Create booking + $this->Service_model->createBooking($bookingArray); + + $worker = $this->Service_model->getWorkerById($bookingArray['worker_id']); + + $services = unserialize($bookingArray['service_ids']); + $serviceArray = array(); + $emailArray = array(); + + if(is_array($services)){ + foreach($services as $serviceItem){ + $selectedService = $this->Service_model->getServiceById($serviceItem); + if(is_object($selectedService)){ + $serviceArray[] = $selectedService; + } + } + } + + $content = ''; + + switch($_POST['lang']){ + case 'no': + $content = 'Kjære gjest,
'; + $content .= 'Takk for din bestilling!
'; + $content .= '
'; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= '
Navn: '.$bookingArray['guest_name'].'
E-post: '.$bookingArray['guest_email'].'
Telefon: '.$bookingArray['guest_phone'].'
Arbeider: '.$worker->worker_name.'
Dato: '.$bookingArray['booking_date'].'
Tid: '.$bookingArray['booking_start_time'].' - '.$bookingArray['booking_finish_time'].'
Tjenester: '; + $totalServicePrice = 0; + foreach($serviceArray as $serviceArrayItem){ + $totalServicePrice += $serviceArrayItem->service_price; + $content .= ''; + } + $content .= '
'.$serviceArrayItem->service_name_no.''.$serviceArrayItem->service_price.' kr
Totalpris: '.$totalServicePrice.' kr
'; + $content .= '
STUDIOBEVE'; + break; + case 'en': + $content = 'Dear Guest,
'; + $content .= 'Thank you for your booking!
'; + $content .= '
'; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= '
Name: '.$bookingArray['guest_name'].'
Email: '.$bookingArray['guest_email'].'
Phone: '.$bookingArray['guest_phone'].'
Worker: '.$worker->worker_name.'
Date: '.$bookingArray['booking_date'].'
Time: '.$bookingArray['booking_start_time'].' - '.$bookingArray['booking_finish_time'].'
Services: '; + $totalServicePrice = 0; + foreach($serviceArray as $serviceArrayItem){ + $totalServicePrice += $serviceArrayItem->service_price; + $content .= ''; + } + $content .= '
'.$serviceArrayItem->service_name_en.''.$serviceArrayItem->service_price.' kr
Total price: '.$totalServicePrice.' kr
'; + $content .= '
STUDIOBEVE'; + break; + case 'hu': + $content = 'Kedves Vendégünk,
'; + $content .= 'Köszönettel fogadtuk a foglalását!
'; + $content .= '
'; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= '
Név: '.$bookingArray['guest_name'].'
Email: '.$bookingArray['guest_email'].'
Telefon: '.$bookingArray['guest_phone'].'
Dolgozó: '.$worker->worker_name.'
Dátum: '.$bookingArray['booking_date'].'
Időpont: '.$bookingArray['booking_start_time'].' - '.$bookingArray['booking_finish_time'].'
Szolgáltatás(ok): '; + $totalServicePrice = 0; + foreach($serviceArray as $serviceArrayItem){ + $totalServicePrice += $serviceArrayItem->service_price; + $content .= ''; + } + $content .= '
'.$serviceArrayItem->service_name_hu.''.$serviceArrayItem->service_price.' kr
Összesen fizetendő: '.$totalServicePrice.' kr
'; + $content .= '
STUDIOBEVE'; + break; + } + + $data['selectedLang'] = $_POST['lang']; + + $emailItem = array( + 'addressee_email' => $bookingArray['guest_email'], + 'addressee_name' => $bookingArray['guest_name'], + 'subject' => '[studiobeve] Your booking has arrived', + 'content' => $content, + 'attachments' => array() + ); + $emailArray[] = $emailItem; + header('Location:'.SITEURL.$_POST['lang'].'/booking-finished/'.$_POST['subpage']); + } + + $this->User_model->sendEmail($emailArray, $_POST['lang'], $_POST['subpage']); + $this->load->view('pages/booking-process', $data); + } + + public function profile(){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Log_model'); + $this->load->model('Module_model'); + $data['message'] = ''; + $data['message_class'] = ''; + $data['fullname'] = ''; + $data['password'] = ''; + $data['profile_img_url'] = ''; + + if(isset($_SESSION['username'])){ + $data['currentUser'] = $this->User_model->getUserByUsername($_SESSION['username']); + + $data['message'] = ''; + $data['message_class'] = ''; + $data['pageTitle'] = 'Profil szerkesztése'; + + if($this->User_model->is_user_admin($_SESSION['username'])){ + $data['activeModules'] = $this->Module_model->getAllModule(); + } + else{ + $data['activeModules'] = $this->Module_model->getUserModules($data['currentUser']->user_id); + } + + if(isset($_POST["storeProfile"])) { + + if($_POST['fullname'] != $data['currentUser']->fullname){ + $userArray = array( + 'fullname' => $_POST['fullname'] + ); + $this->User_model->updateUser($data['currentUser']->user_id, $userArray); + $this->Log_model->addLog('profile', 'A felhasználó módosította a teljes nevét: '.$data['currentUser']->fullname.' => '.$_POST['fullname'],$_SESSION['username']); + } + + if($_POST['password'] != ''){ + $userArray = array( + 'password' => hash('sha256', $_POST['password']) + ); + $this->User_model->updateUser($data['currentUser']->user_id, $userArray); + $this->Log_model->addLog('profile', 'A felhasználó módosította a jelszavát',$_SESSION['username']); + } + + + //upload profile image + if($_FILES["profile_img"]["tmp_name"] != ''){ + $target_dir = getcwd()."/assets/img/profiles/"; + $target_file = $target_dir . str_replace('.','_', str_replace('@','_',$_SESSION['username'])); + $imageFileType = strtolower(pathinfo(basename($_FILES["profile_img"]["name"]),PATHINFO_EXTENSION)); + + if (move_uploaded_file($_FILES["profile_img"]["tmp_name"], $target_file.'.'.$imageFileType)) { + $data['message'] = 'A profilkép sikeresen feltöltve!'; + $data['message_class'] = 'successMessage'; + $data['profile_img_url'] = 'assets/img/profiles/'.str_replace('.','_', str_replace('@','_',$_SESSION['username'])).'.'.$imageFileType; + $userArray = array( + 'profile_img_url' => $data['profile_img_url'] + ); + $this->User_model->updateUser($data['currentUser']->user_id, $userArray); + $this->Log_model->addLog('profile', 'A felhasználó lecserélte a profilképét ',$_SESSION['username']); + } else { + $data['message'] = 'Hiba a feltöltés közben!'; + $data['message_class'] = 'errorMessage'; + } + + } + + $data['message'] = 'A profil sikeresen módosítva!'; + $data['message_class'] = 'successMessage'; + } + + + $data['currentUser'] = $this->User_model->getUserByUsername($_SESSION['username']); + $this->load->view('pages/profile', $data); + + } + else{ + header("Location:".SITEURL."login"); + } + } + + public function log_monitor(){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Log_model'); + $this->load->model('Module_model'); + + if(isset($_SESSION['username'])){ + $data['currentUser'] = $this->User_model->getUserByUsername($_SESSION['username']); + $data['message'] = ''; + $data['message_class'] = ''; + $data['pageTitle'] = 'Rendszermonitor'; + $data['logInfoLink'] = ''; + + if($this->User_model->is_user_admin($_SESSION['username'])){ + $data['activeModules'] = $this->Module_model->getAllModule(); + } + else{ + $data['activeModules'] = $this->Module_model->getUserModules($data['currentUser']->user_id); + } + + $selectedModule = $this->Module_model->getModuleBySlug('log-monitor'); + if($this->Module_model->is_module_available($selectedModule->module_id, $data['currentUser']->user_id)){ + + if(isset($_POST['exportToFile'])){ + $logInfoArray = $this->Log_model->getAllLoginfo(); + $logrow = ''; + $logTxt = fopen(getcwd()."/documents/loginfo.csv", "w") or die("Hiba a fájl mentésekor!"); + $row = '"Esemény ideje";'.'"Esemény típusa";'.'"Felhasználónév";"Bejegyzés tartalma";'.PHP_EOL; + $string_encoded = iconv( mb_detect_encoding( $row ), 'ISO-8859-2', $row ); + fwrite($logTxt, $string_encoded); + + foreach($logInfoArray as $logInfoItem){ + $logDateTime = new datetime($logInfoItem->event_datetime); + $row = date_format($logDateTime,"Y-m-d H:i").';"'.$logInfoItem->event_type.'";"'.$logInfoItem->username.'";"'.$logInfoItem->event_content.'";'.PHP_EOL; + $string_encoded = iconv( mb_detect_encoding( $row ), 'ISO-8859-2', $row ); + fwrite($logTxt, $string_encoded); + } + fclose($logTxt); + $data['logInfoLink'] = 'A loginfo.csv fájl letöltése'; + } + + $this->load->view('log-monitor', $data); + + } + else{ + header("Location:".SITEURL."home"); + } + + + } + else{ + header("Location:".SITEURL."login"); + } + + } + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +} diff --git a/application/controllers/UserManagement.php b/application/controllers/UserManagement.php new file mode 100755 index 0000000..f6e1d07 --- /dev/null +++ b/application/controllers/UserManagement.php @@ -0,0 +1,233 @@ + + * @see https://codeigniter.com/user_guide/general/urls.html + */ + public function index(){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Log_model'); + $this->load->model('Module_model'); + + if(isset($_SESSION['username'])){ + $data['currentUser'] = $this->User_model->getUserByUsername($_SESSION['username']); + $data['activeModules'] = $this->Module_model->getModulesByPermissionSlug($data['currentUser']->permission_slug); + $data['message'] = ''; + $data['message_class'] = ''; + $data['pageTitle'] = 'Felhasználó kezelése'; + + if($this->User_model->is_user_admin($_SESSION['username'])){ + $data['activeModules'] = $this->Module_model->getAllModule(); + } + else{ + $data['activeModules'] = $this->Module_model->getUserModules($data['currentUser']->user_id); + } + + $selectedModule = $this->Module_model->getModuleBySlug('user-management'); + if($this->Module_model->user_can_access_this_module($selectedModule->module_slug, $data['currentUser']->user_id) || $data['currentUser']->permission_slug == 'admin'){ + //delete user + if(isset($_GET['delete-user'])){ + $selectedUser = $this->User_model->getUserById($_GET['delete-user']); + $this->Log_model->addLog('users', $data['currentUser']->username.' törölte a(z) '.$selectedUser->username.' felhasználót', $data['currentUser']->username); + $this->User_model->deleteUser($_GET['delete-user']); + header('Location:'.site_url().'user-management'); + } + $data['users'] = $this->User_model->getAllUser(); + $this->load->view('pages/user-management',$data); + + } + else{ + header("Location:".SITEURL."dashboard"); + } + + + } + else{ + header("Location:".SITEURL."login"); + } + + } + + public function add_new_user(){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Log_model'); + $this->load->model('Module_model'); + + if(isset($_SESSION['username'])){ + $data['currentUser'] = $this->User_model->getUserByUsername($_SESSION['username']); + $data['activeModules'] = $this->Module_model->getModulesByPermissionSlug($data['currentUser']->permission_slug); + $data['message'] = ''; + $data['message_class'] = ''; + $data['pageTitle'] = 'Felhasználó létrehozása'; + + if($this->User_model->is_user_admin($_SESSION['username'])){ + $data['activeModules'] = $this->Module_model->getAllModule(); + } + else{ + $data['activeModules'] = $this->Module_model->getUserModules($data['currentUser']->user_id); + } + + $selectedModule = $this->Module_model->getModuleBySlug('user-management'); + if($this->Module_model->user_can_access_this_module($selectedModule->module_slug, $data['currentUser']->user_id) || $data['currentUser']->permission_slug == 'admin'){ + $data['permissions'] = $this->User_model->getAllUserPermission(); + + + $this->load->view('pages/add-new-user',$data); + } + else{ + header("Location:".SITEURL."home"); + } + + + } + else{ + header("Location:".SITEURL."login"); + } + + } + + public function modify_user($user_id=''){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Log_model'); + $this->load->model('Module_model'); + + if(isset($_SESSION['username'])){ + $data['currentUser'] = $this->User_model->getUserByUsername($_SESSION['username']); + $data['activeModules'] = $this->Module_model->getModulesByPermissionSlug($data['currentUser']->permission_slug); + $data['message'] = ''; + $data['message_class'] = ''; + $data['pageTitle'] = 'Felhasználók'; + + if($this->User_model->is_user_admin($_SESSION['username'])){ + $data['activeModules'] = $this->Module_model->getAllModule(); + } + else{ + $data['activeModules'] = $this->Module_model->getUserModules($data['currentUser']->user_id); + } + + $selectedModule = $this->Module_model->getModuleBySlug('user-management'); + if($this->Module_model->user_can_access_this_module($selectedModule->module_slug, $data['currentUser']->user_id) || $data['currentUser']->permission_slug == 'admin'){ + + $data['selectedUser'] = $this->User_model->getUserById($user_id); + $data['permissions'] = $this->User_model->getAllUserPermission(); + $this->load->view('pages/modify-user',$data); + } + else{ + header("Location:".SITEURL."home"); + } + + + } + else{ + header("Location:".SITEURL."login"); + } + + } + + public function user_process(){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Log_model'); + $this->load->model('Module_model'); + + if(isset($_SESSION['username'])){ + $data['currentUser'] = $this->User_model->getUserByUsername($_SESSION['username']); + $data['activeModules'] = $this->Module_model->getModulesByPermissionSlug($data['currentUser']->permission_slug); + $data['message'] = ''; + $data['message_class'] = ''; + $data['pageTitle'] = 'Felhasználók'; + + $selectedModule = $this->Module_model->getModuleBySlug('user-management'); + if($this->Module_model->user_can_access_this_module($selectedModule->module_slug, $data['currentUser']->user_id) || $data['currentUser']->permission_slug == 'admin'){ + + //update user + if(isset($_POST['updateUser'])){ + $userArray = array( + 'username' => $_POST['username'], + 'fullname' => $_POST['fullname'], + 'permission_slug' => $_POST['permission_slug'], + 'is_enabled' => $_POST['is_enabled'], + 'user_notes' => $_POST['user_notes'] + ); + + if($_POST['password'] != ''){ + $userArray['password'] = $_POST['password']; + } + + $this->User_model->updateUser($_POST['user_id'], $userArray); + + $userArray['permission_slug'] = $this->User_model->getPermissionBySlug($userArray['permission_slug'])->permission_name; + + if($_POST['password'] != ''){ + $userArray['password'] = '****'; + } + + $userArray['is_enabled'] = $userArray['is_enabled']?'aktív':'letiltva'; + $userArray['user_notes'] = $userArray['user_notes'] != ''?$userArray['user_notes']:'nincs megjegyzés'; + + $this->Log_model->addLog('users', $data['currentUser']->username.' módosította a(z) '.$_POST['username'].' adatait ('.implode(', ', $userArray).')', $data['currentUser']->username); + } + + //add new user + if(isset($_POST['addNewUser'])){ + $userArray = array( + 'username' => $_POST['username'], + 'password' => $_POST['password'], + 'fullname' => $_POST['fullname'], + 'permission_slug' => $_POST['permission_slug'], + 'is_enabled' => $_POST['is_enabled'], + 'user_notes' => $_POST['user_notes'] + ); + + $this->User_model->addNewUser($userArray); + $userArray['permission_id'] = $this->User_model->getpermissionBySlug($userArray['permission_slug'])->permission_slug; + $userArray['is_enabled'] = $userArray['is_enabled']?'aktív':'letiltva'; + $userArray['user_notes'] = $userArray['user_notes'] != ''?$userArray['user_notes']:'nincs megjegyzés'; + $userArray['password'] = '****'; + $this->Log_model->addLog('users', $data['currentUser']->username.' létrehoza a(z) '.$_POST['username'].' felhasználót ('.implode(', ', $userArray).')', $data['currentUser']->username); + } + + header("Location:".SITEURL."user-management"); + //$this->load->view('pages/user-process',$data); + + } + else{ + header("Location:".SITEURL."home"); + } + + + } + else{ + header("Location:".SITEURL."login"); + } + + } + + + + + + + + + + + +} diff --git a/application/controllers/index.html b/application/controllers/index.html new file mode 100755 index 0000000..b48b490 --- /dev/null +++ b/application/controllers/index.html @@ -0,0 +1,11 @@ + + + + 403 Forbidden + + + +

Directory access is forbidden.

+ + + diff --git a/application/controllers_20231211/Admin.php b/application/controllers_20231211/Admin.php new file mode 100755 index 0000000..979906a --- /dev/null +++ b/application/controllers_20231211/Admin.php @@ -0,0 +1,240 @@ + + * @see https://codeigniter.com/userguide3/general/urls.html + */ + public function login(){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + + if(isset($_SESSION['username'])){ + $data['currentUser'] = $this->User_model->getUserByUsername($_SESSION['username']); + $data['pageTitle'] = ''; + $data['message'] = ''; + $data['message_class'] = ''; + + $this->load->view('admin/login', $data); + } + } + + public function users(){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + + if(isset($_SESSION['username'])){ + $data['currentUser'] = $this->User_model->getUserByUsername($_SESSION['username']); + $data['pageTitle'] = ''; + $data['message'] = ''; + $data['message_class'] = ''; + + $this->load->view('admin/users', $data); + } + } + + public function create_user(){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + + if(isset($_SESSION['username'])){ + $data['currentUser'] = $this->User_model->getUserByUsername($_SESSION['username']); + $data['pageTitle'] = ''; + $data['message'] = ''; + $data['message_class'] = ''; + + $this->load->view('admin/create-user', $data); + } + } + + public function update_user(){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + + if(isset($_SESSION['username'])){ + $data['currentUser'] = $this->User_model->getUserByUsername($_SESSION['username']); + $data['pageTitle'] = ''; + $data['message'] = ''; + $data['message_class'] = ''; + + $this->load->view('admin/update-user', $data); + } + } + + public function user_process(){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + + if(isset($_SESSION['username'])){ + $data['currentUser'] = $this->User_model->getUserByUsername($_SESSION['username']); + $data['pageTitle'] = ''; + $data['message'] = ''; + $data['message_class'] = ''; + + $this->load->view('admin/user-process', $data); + } + } + + public function services(){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + + if(isset($_SESSION['username'])){ + $data['currentUser'] = $this->User_model->getUserByUsername($_SESSION['username']); + $data['pageTitle'] = ''; + $data['message'] = ''; + $data['message_class'] = ''; + + $this->load->view('admin/services', $data); + } + } + + public function add_service(){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + + if(isset($_SESSION['username'])){ + $data['currentUser'] = $this->User_model->getUserByUsername($_SESSION['username']); + $data['pageTitle'] = ''; + $data['message'] = ''; + $data['message_class'] = ''; + + $this->load->view('admin/add-service', $data); + } + } + + public function update_service(){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + + if(isset($_SESSION['username'])){ + $data['currentUser'] = $this->User_model->getUserByUsername($_SESSION['username']); + $data['pageTitle'] = ''; + $data['message'] = ''; + $data['message_class'] = ''; + + $this->load->view('admin/update-service', $data); + } + } + + public function service_process(){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + + if(isset($_SESSION['username'])){ + $data['currentUser'] = $this->User_model->getUserByUsername($_SESSION['username']); + $data['pageTitle'] = ''; + $data['message'] = ''; + $data['message_class'] = ''; + + $this->load->view('admin/service-process', $data); + } + } + + public function workers(){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + + if(isset($_SESSION['username'])){ + $data['currentUser'] = $this->User_model->getUserByUsername($_SESSION['username']); + $data['pageTitle'] = ''; + $data['message'] = ''; + $data['message_class'] = ''; + + $this->load->view('admin/workers', $data); + } + } + + public function add_worker(){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + + if(isset($_SESSION['username'])){ + $data['currentUser'] = $this->User_model->getUserByUsername($_SESSION['username']); + $data['pageTitle'] = ''; + $data['message'] = ''; + $data['message_class'] = ''; + + $this->load->view('admin/add-worker', $data); + } + } + + public function update_worker(){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + + if(isset($_SESSION['username'])){ + $data['currentUser'] = $this->User_model->getUserByUsername($_SESSION['username']); + $data['pageTitle'] = ''; + $data['message'] = ''; + $data['message_class'] = ''; + + $this->load->view('admin/update-worker', $data); + } + } + + public function worker_process(){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + + if(isset($_SESSION['username'])){ + $data['currentUser'] = $this->User_model->getUserByUsername($_SESSION['username']); + $data['pageTitle'] = ''; + $data['message'] = ''; + $data['message_class'] = ''; + + $this->load->view('admin/worker-process', $data); + } + } + + + + + + + + + + + + + + + + + + + + + + + + + +} diff --git a/application/controllers_20231211/Pages.php b/application/controllers_20231211/Pages.php new file mode 100755 index 0000000..96bfdbd --- /dev/null +++ b/application/controllers_20231211/Pages.php @@ -0,0 +1,315 @@ + + * @see https://codeigniter.com/userguide3/general/urls.html + */ + public function index(){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + + $data['pageTitle'] = ''; + $this->load->view('pages/home', $data); + } + + public function barber($lang){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + $data['pageTitle'] = ''; + $data['selectedLang'] = $lang; + + $data['services'] = $this->Service_model->getAllServiceByServiceType('barber', $lang); + $this->load->view('pages/barber', $data); + } + + public function beauty($lang){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + $data['pageTitle'] = ''; + $data['selectedLang'] = $lang; + + $data['services'] = $this->Service_model->getAllServiceByServiceType('beauty', $lang); + $this->load->view('pages/beauty', $data); + } + + public function booking($lang, $subpage){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + + $data['pageTitle'] = ''; + $data['selectedLang'] = $lang; + $data['subpage'] = $subpage; + + $data['services'] = $this->Service_model->getAllServiceByServiceType($subpage, $lang); + $data['workers'] = $this->Service_model->getAllWorkers(); + + switch($subpage){ + case 'barber': + $this->load->view('pages/barber-booking', $data); + break; + case 'beauty': + $this->load->view('pages/beauty-booking', $data); + break; + default: + header('Location:'.SITEURL); + } + } + + public function booking_finished($lang, $subpage){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + $data['pageTitle'] = ''; + $data['selectedLang'] = $lang; + + switch($subpage){ + case 'barber': + $this->load->view('pages/barber-booking-finished', $data); + break; + case 'beauty': + $this->load->view('pages/beauty-booking-finished', $data); + break; + default: + header('Location:'.SITEURL); + } + } + + public function email_verification(){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + + $data['pageTitle'] = ''; + $this->load->view('pages/email-verification', $data); + } + + public function ajax(){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + + $data['pageTitle'] = ''; + + if(isset($_POST['action']) && $_POST['action'] == 'getAvailableTimes' && isset($_POST['selectedDate'])){ + $results = $this->Service_model->getAvailableTimes($_POST['worker_id'], $_POST['selectedDate'], $_POST['servicelength']); + + if(!empty($results)){ + foreach($results as $resultIem){ + ?> +
+ load->view('pages/ajax', $data); + } + + + public function booking_process(){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + + $data['pageTitle'] = ''; + + //calculate finish time + $serviceStartTime = date("H:i:s", strtotime($_POST['booking_start_time'])); + $serviceLengthTime = date("H:i:s", strtotime($_POST['servicelength'])); + $secs = strtotime($serviceLengthTime)-strtotime("00:00:00"); + $serviceFinishTime = date("H:i:s",strtotime($serviceStartTime)+$secs); + + $data['services'] = $this->Service_model->getAllServiceByServiceType($_POST['subpage'], $_POST['lang']); + $data['workers'] = $this->Service_model->getAllWorkers(); + $data['selectedLang'] = 'en'; + $selectedServiceArray = array(); + + //find selected services + if(is_array($data['services'])){ + foreach($data['services'] as $serviceItem){ + if(isset($_POST['service_'.$serviceItem->service_id])){ + if($_POST['service_'.$serviceItem->service_id]){ + $selectedServiceArray[] = $serviceItem->service_id; + } + } + } + } + + if(isset($_POST['sendBooking'])){ + + $bookingArray = array( + 'guest_name' => $_POST['guest_name'], + 'guest_email' => $_POST['guest_email'], + 'guest_phone' => $_POST['guest_phone'], + 'worker_id' => $_POST['worker_id'], + 'booking_date' => $_POST['booking_date'], + 'booking_start_time' => $_POST['booking_start_time'], + 'booking_finish_time' => $serviceFinishTime, + 'service_ids' => serialize($selectedServiceArray), + 'guest_confirmed' => '0', + 'guest_confirm_code' => '1234', + ); + + $this->Service_model->createBooking($bookingArray); + $worker = $this->Service_model->getWorkerById($bookingArray['worker_id']); + + $services = unserialize($bookingArray['service_ids']); + $serviceArray = array(); + + if(is_array($services)){ + foreach($services as $serviceItem){ + $selectedService = $this->Service_model->getServiceById($serviceItem); + if(is_object($selectedService)){ + $serviceArray[] = $selectedService; + } + } + } + + $content = ''; + + switch($_POST['lang']){ + case 'no': + $content = 'Kjære gjest,
'; + $content .= 'Takk for din bestilling!
'; + $content .= '
'; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= '
Navn: '.$bookingArray['guest_name'].'
E-post: '.$bookingArray['guest_email'].'
Telefon: '.$bookingArray['guest_phone'].'
Arbeider: '.$worker->worker_name.'
Dato: '.$bookingArray['booking_date'].'
Tid: '.$bookingArray['booking_start_time'].' - '.$bookingArray['booking_finish_time'].'
Tjenester: '; + $totalServicePrice = 0; + foreach($serviceArray as $serviceArrayItem){ + $totalServicePrice += $serviceArrayItem->service_price; + $content .= ''; + } + $content .= '
'.$serviceArrayItem->service_name_no.''.$serviceArrayItem->service_price.' kr
Totalpris: '.$totalServicePrice.' kr
'; + $content .= '
STUDIOBEVE'; + break; + case 'en': + $content = 'Dear Guest,
'; + $content .= 'Thank you for your booking!
'; + $content .= '
'; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= '
Name: '.$bookingArray['guest_name'].'
Email: '.$bookingArray['guest_email'].'
Phone: '.$bookingArray['guest_phone'].'
Worker: '.$worker->worker_name.'
Date: '.$bookingArray['booking_date'].'
Time: '.$bookingArray['booking_start_time'].' - '.$bookingArray['booking_finish_time'].'
Services: '; + $totalServicePrice = 0; + foreach($serviceArray as $serviceArrayItem){ + $totalServicePrice += $serviceArrayItem->service_price; + $content .= ''; + } + $content .= '
'.$serviceArrayItem->service_name_en.''.$serviceArrayItem->service_price.' kr
Total price: '.$totalServicePrice.' kr
'; + $content .= '
STUDIOBEVE'; + break; + case 'hu': + $content = 'Kedves Vendégünk,
'; + $content .= 'Köszönettel fogadtuk a foglalását!
'; + $content .= '
'; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= '
Név: '.$bookingArray['guest_name'].'
Email: '.$bookingArray['guest_email'].'
Telefon: '.$bookingArray['guest_phone'].'
Dolgozó: '.$worker->worker_name.'
Dátum: '.$bookingArray['booking_date'].'
Időpont: '.$bookingArray['booking_start_time'].' - '.$bookingArray['booking_finish_time'].'
Szolgáltatás(ok): '; + $totalServicePrice = 0; + foreach($serviceArray as $serviceArrayItem){ + $totalServicePrice += $serviceArrayItem->service_price; + $content .= ''; + } + $content .= '
'.$serviceArrayItem->service_name_hu.''.$serviceArrayItem->service_price.' kr
Összesen fizetendő: '.$totalServicePrice.' kr
'; + $content .= '
STUDIOBEVE'; + break; + } + + $data['selectedLang'] = $_POST['lang']; + $emailArray = array(); + $emailItem = array( + 'addressee_email' => $bookingArray['guest_email'], + 'addressee_name' => $bookingArray['guest_name'], + 'subject' => '[studiobeve] Your booking has arrived', + 'content' => $content, + 'attachments' => array() + ); + $emailArray[] = $emailItem; + $this->User_model->sendEmail($emailArray, $_POST['lang'], $_POST['subpage']); +echo SITEURL.$_POST['lang'].'/booking-finished/'.$_POST['subpage']; + //header('Location:'.SITEURL.$_POST['lang'].'/booking-finished/'.$_POST['subpage']); + } + + $this->load->view('pages/booking-process', $data); + } + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +} diff --git a/application/controllers_20231211/index.html b/application/controllers_20231211/index.html new file mode 100755 index 0000000..b48b490 --- /dev/null +++ b/application/controllers_20231211/index.html @@ -0,0 +1,11 @@ + + + + 403 Forbidden + + + +

Directory access is forbidden.

+ + + diff --git a/application/controllers_20240401/Admin.php b/application/controllers_20240401/Admin.php new file mode 100755 index 0000000..979906a --- /dev/null +++ b/application/controllers_20240401/Admin.php @@ -0,0 +1,240 @@ + + * @see https://codeigniter.com/userguide3/general/urls.html + */ + public function login(){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + + if(isset($_SESSION['username'])){ + $data['currentUser'] = $this->User_model->getUserByUsername($_SESSION['username']); + $data['pageTitle'] = ''; + $data['message'] = ''; + $data['message_class'] = ''; + + $this->load->view('admin/login', $data); + } + } + + public function users(){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + + if(isset($_SESSION['username'])){ + $data['currentUser'] = $this->User_model->getUserByUsername($_SESSION['username']); + $data['pageTitle'] = ''; + $data['message'] = ''; + $data['message_class'] = ''; + + $this->load->view('admin/users', $data); + } + } + + public function create_user(){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + + if(isset($_SESSION['username'])){ + $data['currentUser'] = $this->User_model->getUserByUsername($_SESSION['username']); + $data['pageTitle'] = ''; + $data['message'] = ''; + $data['message_class'] = ''; + + $this->load->view('admin/create-user', $data); + } + } + + public function update_user(){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + + if(isset($_SESSION['username'])){ + $data['currentUser'] = $this->User_model->getUserByUsername($_SESSION['username']); + $data['pageTitle'] = ''; + $data['message'] = ''; + $data['message_class'] = ''; + + $this->load->view('admin/update-user', $data); + } + } + + public function user_process(){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + + if(isset($_SESSION['username'])){ + $data['currentUser'] = $this->User_model->getUserByUsername($_SESSION['username']); + $data['pageTitle'] = ''; + $data['message'] = ''; + $data['message_class'] = ''; + + $this->load->view('admin/user-process', $data); + } + } + + public function services(){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + + if(isset($_SESSION['username'])){ + $data['currentUser'] = $this->User_model->getUserByUsername($_SESSION['username']); + $data['pageTitle'] = ''; + $data['message'] = ''; + $data['message_class'] = ''; + + $this->load->view('admin/services', $data); + } + } + + public function add_service(){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + + if(isset($_SESSION['username'])){ + $data['currentUser'] = $this->User_model->getUserByUsername($_SESSION['username']); + $data['pageTitle'] = ''; + $data['message'] = ''; + $data['message_class'] = ''; + + $this->load->view('admin/add-service', $data); + } + } + + public function update_service(){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + + if(isset($_SESSION['username'])){ + $data['currentUser'] = $this->User_model->getUserByUsername($_SESSION['username']); + $data['pageTitle'] = ''; + $data['message'] = ''; + $data['message_class'] = ''; + + $this->load->view('admin/update-service', $data); + } + } + + public function service_process(){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + + if(isset($_SESSION['username'])){ + $data['currentUser'] = $this->User_model->getUserByUsername($_SESSION['username']); + $data['pageTitle'] = ''; + $data['message'] = ''; + $data['message_class'] = ''; + + $this->load->view('admin/service-process', $data); + } + } + + public function workers(){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + + if(isset($_SESSION['username'])){ + $data['currentUser'] = $this->User_model->getUserByUsername($_SESSION['username']); + $data['pageTitle'] = ''; + $data['message'] = ''; + $data['message_class'] = ''; + + $this->load->view('admin/workers', $data); + } + } + + public function add_worker(){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + + if(isset($_SESSION['username'])){ + $data['currentUser'] = $this->User_model->getUserByUsername($_SESSION['username']); + $data['pageTitle'] = ''; + $data['message'] = ''; + $data['message_class'] = ''; + + $this->load->view('admin/add-worker', $data); + } + } + + public function update_worker(){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + + if(isset($_SESSION['username'])){ + $data['currentUser'] = $this->User_model->getUserByUsername($_SESSION['username']); + $data['pageTitle'] = ''; + $data['message'] = ''; + $data['message_class'] = ''; + + $this->load->view('admin/update-worker', $data); + } + } + + public function worker_process(){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + + if(isset($_SESSION['username'])){ + $data['currentUser'] = $this->User_model->getUserByUsername($_SESSION['username']); + $data['pageTitle'] = ''; + $data['message'] = ''; + $data['message_class'] = ''; + + $this->load->view('admin/worker-process', $data); + } + } + + + + + + + + + + + + + + + + + + + + + + + + + +} diff --git a/application/controllers_20240401/Pages.php b/application/controllers_20240401/Pages.php new file mode 100755 index 0000000..c09afcb --- /dev/null +++ b/application/controllers_20240401/Pages.php @@ -0,0 +1,333 @@ + + * @see https://codeigniter.com/userguide3/general/urls.html + */ + public function index(){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + + $data['pageTitle'] = ''; + $this->load->view('pages/home', $data); + } + + public function barber($lang){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + $data['pageTitle'] = ''; + $data['selectedLang'] = $lang; + + $data['services'] = $this->Service_model->getAllServiceByServiceType('barber', $lang); + $this->load->view('pages/barber', $data); + } + + public function beauty($lang){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + $data['pageTitle'] = ''; + $data['selectedLang'] = $lang; + + $data['services'] = $this->Service_model->getAllServiceByServiceType('beauty', $lang); + $this->load->view('pages/beauty', $data); + } + + public function booking($lang, $subpage){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + + $data['pageTitle'] = ''; + $data['selectedLang'] = $lang; + $data['subpage'] = $subpage; + + $data['services'] = $this->Service_model->getAllServiceByServiceType($subpage, $lang); + $data['workers'] = $this->Service_model->getAllWorkers(); + + switch($subpage){ + case 'barber': + $this->load->view('pages/barber-booking', $data); + break; + case 'beauty': + $this->load->view('pages/beauty-booking', $data); + break; + default: + header('Location:'.SITEURL); + } + } + + public function booking_finished($lang, $subpage){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + $data['pageTitle'] = ''; + $data['selectedLang'] = $lang; + + switch($subpage){ + case 'barber': + $this->load->view('pages/barber-booking-finished', $data); + break; + case 'beauty': + $this->load->view('pages/beauty-booking-finished', $data); + break; + default: + header('Location:'.SITEURL); + } + } + + public function email_verification(){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + + $data['pageTitle'] = ''; + $this->load->view('pages/email-verification', $data); + } + + public function ajax(){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + + $data['pageTitle'] = ''; + + if(isset($_POST['action']) && $_POST['action'] == 'getAvailableTimes' && isset($_POST['selectedDate'])){ + $results = $this->Service_model->getAvailableTimes($_POST['worker_id'], $_POST['selectedDate'], $_POST['servicelength']); + + $rowIndex = 1; + if(!empty($results)){ + foreach($results as $resultIem){ + ?> +
+ Service_model->getWorkerById($_POST['worker_id']); + + if(is_object($result)){ + ?> +
+
worker_name;?>
+ load->view('pages/ajax', $data); + } + + + public function booking_process(){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + + $data['pageTitle'] = ''; + + //calculate finish time + $serviceStartTime = date("H:i:s", strtotime($_POST['booking_start_time'])); + $serviceLengthTime = date("H:i:s", strtotime($_POST['servicelength'])); + $secs = strtotime($serviceLengthTime)-strtotime("00:00:00"); + $serviceFinishTime = date("H:i:s",strtotime($serviceStartTime)+$secs); + + $data['services'] = $this->Service_model->getAllServiceByServiceType($_POST['subpage'], $_POST['lang']); + $data['workers'] = $this->Service_model->getAllWorkers(); + $data['selectedLang'] = 'en'; + $selectedServiceArray = array(); + + //find selected services + if(is_array($data['services'])){ + foreach($data['services'] as $serviceItem){ + if(isset($_POST['service_'.$serviceItem->service_id])){ + if($_POST['service_'.$serviceItem->service_id]){ + $selectedServiceArray[] = $serviceItem->service_id; + } + } + } + } + + if(isset($_POST['sendBooking'])){ + + $bookingArray = array( + 'guest_name' => $_POST['guest_name'], + 'guest_email' => $_POST['guest_email'], + 'guest_phone' => $_POST['guest_phone'], + 'worker_id' => $_POST['worker_id'], + 'booking_date' => $_POST['booking_date'], + 'booking_start_time' => $_POST['booking_start_time'], + 'booking_finish_time' => $serviceFinishTime, + 'service_ids' => serialize($selectedServiceArray), + 'guest_confirmed' => '0', + 'guest_confirm_code' => '1234', + ); + + $this->Service_model->createBooking($bookingArray); + $worker = $this->Service_model->getWorkerById($bookingArray['worker_id']); + + $services = unserialize($bookingArray['service_ids']); + $serviceArray = array(); + $emailArray = array(); + + if(is_array($services)){ + foreach($services as $serviceItem){ + $selectedService = $this->Service_model->getServiceById($serviceItem); + if(is_object($selectedService)){ + $serviceArray[] = $selectedService; + } + } + } + + $content = ''; + + switch($_POST['lang']){ + case 'no': + $content = 'Kjære gjest,
'; + $content .= 'Takk for din bestilling!
'; + $content .= '
'; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= '
Navn: '.$bookingArray['guest_name'].'
E-post: '.$bookingArray['guest_email'].'
Telefon: '.$bookingArray['guest_phone'].'
Arbeider: '.$worker->worker_name.'
Dato: '.$bookingArray['booking_date'].'
Tid: '.$bookingArray['booking_start_time'].' - '.$bookingArray['booking_finish_time'].'
Tjenester: '; + $totalServicePrice = 0; + foreach($serviceArray as $serviceArrayItem){ + $totalServicePrice += $serviceArrayItem->service_price; + $content .= ''; + } + $content .= '
'.$serviceArrayItem->service_name_no.''.$serviceArrayItem->service_price.' kr
Totalpris: '.$totalServicePrice.' kr
'; + $content .= '
STUDIOBEVE'; + break; + case 'en': + $content = 'Dear Guest,
'; + $content .= 'Thank you for your booking!
'; + $content .= '
'; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= '
Name: '.$bookingArray['guest_name'].'
Email: '.$bookingArray['guest_email'].'
Phone: '.$bookingArray['guest_phone'].'
Worker: '.$worker->worker_name.'
Date: '.$bookingArray['booking_date'].'
Time: '.$bookingArray['booking_start_time'].' - '.$bookingArray['booking_finish_time'].'
Services: '; + $totalServicePrice = 0; + foreach($serviceArray as $serviceArrayItem){ + $totalServicePrice += $serviceArrayItem->service_price; + $content .= ''; + } + $content .= '
'.$serviceArrayItem->service_name_en.''.$serviceArrayItem->service_price.' kr
Total price: '.$totalServicePrice.' kr
'; + $content .= '
STUDIOBEVE'; + break; + case 'hu': + $content = 'Kedves Vendégünk,
'; + $content .= 'Köszönettel fogadtuk a foglalását!
'; + $content .= '
'; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= '
Név: '.$bookingArray['guest_name'].'
Email: '.$bookingArray['guest_email'].'
Telefon: '.$bookingArray['guest_phone'].'
Dolgozó: '.$worker->worker_name.'
Dátum: '.$bookingArray['booking_date'].'
Időpont: '.$bookingArray['booking_start_time'].' - '.$bookingArray['booking_finish_time'].'
Szolgáltatás(ok): '; + $totalServicePrice = 0; + foreach($serviceArray as $serviceArrayItem){ + $totalServicePrice += $serviceArrayItem->service_price; + $content .= ''; + } + $content .= '
'.$serviceArrayItem->service_name_hu.''.$serviceArrayItem->service_price.' kr
Összesen fizetendő: '.$totalServicePrice.' kr
'; + $content .= '
STUDIOBEVE'; + break; + } + + $data['selectedLang'] = $_POST['lang']; + + $emailItem = array( + 'addressee_email' => $bookingArray['guest_email'], + 'addressee_name' => $bookingArray['guest_name'], + 'subject' => '[studiobeve] Your booking has arrived', + 'content' => $content, + 'attachments' => array() + ); + $emailArray[] = $emailItem; + //header('Location:'.SITEURL.$_POST['lang'].'/booking-finished/'.$_POST['subpage']); + } + + $this->User_model->sendEmail($emailArray, $_POST['lang'], $_POST['subpage']); + $this->load->view('pages/booking-process', $data); + } + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +} diff --git a/application/controllers_20240401/Pages_20240111.php b/application/controllers_20240401/Pages_20240111.php new file mode 100755 index 0000000..368c90b --- /dev/null +++ b/application/controllers_20240401/Pages_20240111.php @@ -0,0 +1,332 @@ + + * @see https://codeigniter.com/userguide3/general/urls.html + */ + public function index(){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + + $data['pageTitle'] = ''; + $this->load->view('pages/home', $data); + } + + public function barber($lang){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + $data['pageTitle'] = ''; + $data['selectedLang'] = $lang; + + $data['services'] = $this->Service_model->getAllServiceByServiceType('barber', $lang); + $this->load->view('pages/barber', $data); + } + + public function beauty($lang){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + $data['pageTitle'] = ''; + $data['selectedLang'] = $lang; + + $data['services'] = $this->Service_model->getAllServiceByServiceType('beauty', $lang); + $this->load->view('pages/beauty', $data); + } + + public function booking($lang, $subpage){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + + $data['pageTitle'] = ''; + $data['selectedLang'] = $lang; + $data['subpage'] = $subpage; + + $data['services'] = $this->Service_model->getAllServiceByServiceType($subpage, $lang); + $data['workers'] = $this->Service_model->getAllWorkers(); + + switch($subpage){ + case 'barber': + $this->load->view('pages/barber-booking', $data); + break; + case 'beauty': + $this->load->view('pages/beauty-booking', $data); + break; + default: + header('Location:'.SITEURL); + } + } + + public function booking_finished($lang, $subpage){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + $data['pageTitle'] = ''; + $data['selectedLang'] = $lang; + + switch($subpage){ + case 'barber': + $this->load->view('pages/barber-booking-finished', $data); + break; + case 'beauty': + $this->load->view('pages/beauty-booking-finished', $data); + break; + default: + header('Location:'.SITEURL); + } + } + + public function email_verification(){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + + $data['pageTitle'] = ''; + $this->load->view('pages/email-verification', $data); + } + + public function ajax(){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + + $data['pageTitle'] = ''; + + if(isset($_POST['action']) && $_POST['action'] == 'getAvailableTimes' && isset($_POST['selectedDate'])){ + $results = $this->Service_model->getAvailableTimes($_POST['worker_id'], $_POST['selectedDate'], $_POST['servicelength']); + + $rowIndex = 1; + if(!empty($results)){ + foreach($results as $resultIem){ + ?> +
+ Service_model->getWorkerById($_POST['worker_id']); + + if(is_object($result)){ + ?> +
+
worker_name;?>
+ load->view('pages/ajax', $data); + } + + + public function booking_process(){ + $this->load->helper('url'); + $this->load->model('User_model'); + $this->load->model('Service_model'); + + $data['pageTitle'] = ''; + + //calculate finish time + $serviceStartTime = date("H:i:s", strtotime($_POST['booking_start_time'])); + $serviceLengthTime = date("H:i:s", strtotime($_POST['servicelength'])); + $secs = strtotime($serviceLengthTime)-strtotime("00:00:00"); + $serviceFinishTime = date("H:i:s",strtotime($serviceStartTime)+$secs); + + $data['services'] = $this->Service_model->getAllServiceByServiceType($_POST['subpage'], $_POST['lang']); + $data['workers'] = $this->Service_model->getAllWorkers(); + $data['selectedLang'] = 'en'; + $selectedServiceArray = array(); + + //find selected services + if(is_array($data['services'])){ + foreach($data['services'] as $serviceItem){ + if(isset($_POST['service_'.$serviceItem->service_id])){ + if($_POST['service_'.$serviceItem->service_id]){ + $selectedServiceArray[] = $serviceItem->service_id; + } + } + } + } + + if(isset($_POST['sendBooking'])){ + + $bookingArray = array( + 'guest_name' => $_POST['guest_name'], + 'guest_email' => $_POST['guest_email'], + 'guest_phone' => $_POST['guest_phone'], + 'worker_id' => $_POST['worker_id'], + 'booking_date' => $_POST['booking_date'], + 'booking_start_time' => $_POST['booking_start_time'], + 'booking_finish_time' => $serviceFinishTime, + 'service_ids' => serialize($selectedServiceArray), + 'guest_confirmed' => '0', + 'guest_confirm_code' => '1234', + ); + + $this->Service_model->createBooking($bookingArray); + $worker = $this->Service_model->getWorkerById($bookingArray['worker_id']); + + $services = unserialize($bookingArray['service_ids']); + $serviceArray = array(); + + if(is_array($services)){ + foreach($services as $serviceItem){ + $selectedService = $this->Service_model->getServiceById($serviceItem); + if(is_object($selectedService)){ + $serviceArray[] = $selectedService; + } + } + } + + $content = ''; + + switch($_POST['lang']){ + case 'no': + $content = 'Kjære gjest,
'; + $content .= 'Takk for din bestilling!
'; + $content .= '
'; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= '
Navn: '.$bookingArray['guest_name'].'
E-post: '.$bookingArray['guest_email'].'
Telefon: '.$bookingArray['guest_phone'].'
Arbeider: '.$worker->worker_name.'
Dato: '.$bookingArray['booking_date'].'
Tid: '.$bookingArray['booking_start_time'].' - '.$bookingArray['booking_finish_time'].'
Tjenester: '; + $totalServicePrice = 0; + foreach($serviceArray as $serviceArrayItem){ + $totalServicePrice += $serviceArrayItem->service_price; + $content .= ''; + } + $content .= '
'.$serviceArrayItem->service_name_no.''.$serviceArrayItem->service_price.' kr
Totalpris: '.$totalServicePrice.' kr
'; + $content .= '
STUDIOBEVE'; + break; + case 'en': + $content = 'Dear Guest,
'; + $content .= 'Thank you for your booking!
'; + $content .= '
'; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= '
Name: '.$bookingArray['guest_name'].'
Email: '.$bookingArray['guest_email'].'
Phone: '.$bookingArray['guest_phone'].'
Worker: '.$worker->worker_name.'
Date: '.$bookingArray['booking_date'].'
Time: '.$bookingArray['booking_start_time'].' - '.$bookingArray['booking_finish_time'].'
Services: '; + $totalServicePrice = 0; + foreach($serviceArray as $serviceArrayItem){ + $totalServicePrice += $serviceArrayItem->service_price; + $content .= ''; + } + $content .= '
'.$serviceArrayItem->service_name_en.''.$serviceArrayItem->service_price.' kr
Total price: '.$totalServicePrice.' kr
'; + $content .= '
STUDIOBEVE'; + break; + case 'hu': + $content = 'Kedves Vendégünk,
'; + $content .= 'Köszönettel fogadtuk a foglalását!
'; + $content .= '
'; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= ''; + $content .= '
Név: '.$bookingArray['guest_name'].'
Email: '.$bookingArray['guest_email'].'
Telefon: '.$bookingArray['guest_phone'].'
Dolgozó: '.$worker->worker_name.'
Dátum: '.$bookingArray['booking_date'].'
Időpont: '.$bookingArray['booking_start_time'].' - '.$bookingArray['booking_finish_time'].'
Szolgáltatás(ok): '; + $totalServicePrice = 0; + foreach($serviceArray as $serviceArrayItem){ + $totalServicePrice += $serviceArrayItem->service_price; + $content .= ''; + } + $content .= '
'.$serviceArrayItem->service_name_hu.''.$serviceArrayItem->service_price.' kr
Összesen fizetendő: '.$totalServicePrice.' kr
'; + $content .= '
STUDIOBEVE'; + break; + } + + $data['selectedLang'] = $_POST['lang']; + $emailArray = array(); + $emailItem = array( + 'addressee_email' => $bookingArray['guest_email'], + 'addressee_name' => $bookingArray['guest_name'], + 'subject' => '[studiobeve] Your booking has arrived', + 'content' => $content, + 'attachments' => array() + ); + $emailArray[] = $emailItem; + $this->User_model->sendEmail($emailArray, $_POST['lang'], $_POST['subpage']); + //header('Location:'.SITEURL.$_POST['lang'].'/booking-finished/'.$_POST['subpage']); + } + + $this->load->view('pages/booking-process', $data); + } + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +} diff --git a/application/controllers_20240401/index.html b/application/controllers_20240401/index.html new file mode 100755 index 0000000..b48b490 --- /dev/null +++ b/application/controllers_20240401/index.html @@ -0,0 +1,11 @@ + + + + 403 Forbidden + + + +

Directory access is forbidden.

+ + + diff --git a/application/core/index.html b/application/core/index.html new file mode 100755 index 0000000..b48b490 --- /dev/null +++ b/application/core/index.html @@ -0,0 +1,11 @@ + + + + 403 Forbidden + + + +

Directory access is forbidden.

+ + + diff --git a/application/helpers/index.html b/application/helpers/index.html new file mode 100755 index 0000000..b48b490 --- /dev/null +++ b/application/helpers/index.html @@ -0,0 +1,11 @@ + + + + 403 Forbidden + + + +

Directory access is forbidden.

+ + + diff --git a/application/hooks/index.html b/application/hooks/index.html new file mode 100755 index 0000000..b48b490 --- /dev/null +++ b/application/hooks/index.html @@ -0,0 +1,11 @@ + + + + 403 Forbidden + + + +

Directory access is forbidden.

+ + + diff --git a/application/index.html b/application/index.html new file mode 100755 index 0000000..b48b490 --- /dev/null +++ b/application/index.html @@ -0,0 +1,11 @@ + + + + 403 Forbidden + + + +

Directory access is forbidden.

+ + + diff --git a/application/language/english/index.html b/application/language/english/index.html new file mode 100755 index 0000000..b48b490 --- /dev/null +++ b/application/language/english/index.html @@ -0,0 +1,11 @@ + + + + 403 Forbidden + + + +

Directory access is forbidden.

+ + + diff --git a/application/language/index.html b/application/language/index.html new file mode 100755 index 0000000..b48b490 --- /dev/null +++ b/application/language/index.html @@ -0,0 +1,11 @@ + + + + 403 Forbidden + + + +

Directory access is forbidden.

+ + + diff --git a/application/libraries/index.html b/application/libraries/index.html new file mode 100755 index 0000000..b48b490 --- /dev/null +++ b/application/libraries/index.html @@ -0,0 +1,11 @@ + + + + 403 Forbidden + + + +

Directory access is forbidden.

+ + + diff --git a/application/logs/index.html b/application/logs/index.html new file mode 100755 index 0000000..b48b490 --- /dev/null +++ b/application/logs/index.html @@ -0,0 +1,11 @@ + + + + 403 Forbidden + + + +

Directory access is forbidden.

+ + + diff --git a/application/models/Log_model.php b/application/models/Log_model.php new file mode 100755 index 0000000..a1710cb --- /dev/null +++ b/application/models/Log_model.php @@ -0,0 +1,24 @@ +load->database(); + $query = $this->db->query("INSERT INTO system_log(event_type, event_content, username) VALUES('".$eventType."','".$eventContent."','".$username."');"); + } + + public function getAllLoginfo(){ + $this->load->database(); + $query = $this->db->query('SELECT * FROM system_log ORDER BY event_datetime DESC;'); + return $query->result(); + } + + + + +} + +?> \ No newline at end of file diff --git a/application/models/Module_model.php b/application/models/Module_model.php new file mode 100755 index 0000000..2db0283 --- /dev/null +++ b/application/models/Module_model.php @@ -0,0 +1,252 @@ +load->database(); + $query = $this->db->query('SELECT * FROM modules ORDER BY module_name ASC'); + return $query->result(); + } + + public function getModuleById($module_id){ + $this->load->database(); + $query = $this->db->query('SELECT * FROM modules WHERE module_id = "'.$module_id.'" LIMIT 1;'); + return $query->result()[0]; + } + + public function getModuleBySlug($module_slug){ + $this->load->database(); + $query = $this->db->query('SELECT * FROM modules WHERE module_slug = "'.$module_slug.'" LIMIT 1;'); + return $query->result()[0]; + } + + public function getUserModules($userId){ + $this->load->database(); + $this->load->model('User_model'); + + $currentUser = $this->User_model->getUserById($userId); + + $query = $this->db->query('SELECT * FROM modules'); + $all_module = $query->result(); + $activeModules = array(); + $activeModuleIds = array(); + + foreach($all_module as $moduleItem){ + + //check groupmodules + $moduleGroupIds = unserialize($moduleItem->permission_group_ids); + $moduleUserIds = unserialize($moduleItem->permission_ids); + + if(!empty($moduleItem->permission_ids)){ + } + + //check group ids + if(is_array($moduleGroupIds)){ + if(in_array($currentUser->permission_id, $moduleGroupIds)){ + if(!in_array($moduleItem->module_id, $activeModuleIds)){ + + $activeModules[] = $moduleItem; + $activeModuleIds[] = $moduleItem->module_id; + + + } + + } + } + + //check user_ids + + if(is_array($moduleUserIds)){ + if(in_array($currentUser->user_id, $moduleUserIds)){ + + if(!in_array($moduleItem->module_id, $activeModuleIds)){ + $activeModules[] = $moduleItem; + $activeModuleIds[] = $moduleItem->module_id; + } + + } + } + } + return $activeModules; + } + + + public function is_module_available($module_id, $userId){ + $this->load->database(); + $this->load->model('User_model'); + + $currentModule = $this->getModuleById($module_id); + $currentUser = $this->User_model->getUserById($userId); + $moduleGroupIds = unserialize($currentModule->permission_group_ids); + $moduleUserIds = unserialize($currentModule->permission_ids); + $moduleIsOk = 0; + + //if($currentUser->permission_slug == 'admin' && $module_id != '5'){ + if($currentUser->permission_slug == 'admin'){ + $moduleIsOk = 1; + } + + //check groupmodules + if(is_array($moduleGroupIds)){ + if(in_array($currentUser->permission_id, $moduleGroupIds)){ + $moduleIsOk = 1; + } + } + + //check user_ids + if(is_array($moduleUserIds)){ + if(in_array($currentUser->user_id, $moduleUserIds)){ + $moduleIsOk = 1; + } + } + + if($moduleIsOk){ + return 1; + } + else{ + return 0; + } + +} + +public function is_userId_available_in_module($module_id, $userId){ + $this->load->database(); + $this->load->model('User_model'); + + $currentModule = $this->getModuleById($module_id); + $userIds = unserialize($currentModule->permission_ids); + + + if(is_array($userIds)){ + if(in_array($userId, $userIds)){ + return 1; + } + } +} + +public function is_groupId_available_in_module($module_id, $groupId){ + $this->load->database(); + $this->load->model('User_model'); + + $currentModule = $this->getModuleById($module_id); + $moduleGroupIds = unserialize($currentModule->permission_group_ids); + + if(is_array($moduleGroupIds)){ + if(in_array($groupId, $moduleGroupIds)){ + return 1; + } + } +} + + +public function updateModule($fieldName, $module_id, $moduleUserArray){ + $this->load->database(); + + if(!empty($moduleUserArray)){ + $query = $this->db->query("UPDATE modules SET ".$fieldName." ='".serialize($moduleUserArray)."' WHERE module_id = '".$module_id."';"); + } + else{ + $query = $this->db->query("UPDATE modules SET ".$fieldName." ='' WHERE module_id = '".$module_id."';"); + } +} + + +public function getModulesByPermissionSlug($permissionSlug){ + $this->load->database(); + $this->load->model('Module_model'); + $selectedPermission = $this->Module_model->getPermissionBySlug($permissionSlug); + + $query = $this->db->query('SELECT * FROM modules;'); + $results = $query->result(); + $resultArray = array(); + foreach($results as $resultItem){ + $permissionIdsArray = explode(',', $resultItem->permission_ids); + if(in_array($selectedPermission->permission_id, $permissionIdsArray)){ + $resultArray[] = $resultItem; + } + } + return $resultArray; +} + +public function getPermissionBySlug($permissionSlug){ + $this->load->database(); + + $query = $this->db->query('SELECT * FROM permissions WHERE permission_slug = "'.$permissionSlug.'";'); + if($query->num_rows() == 1){ + return $query->result()[0]; + } + else{ + return 0; + } +} + +public function user_can_access_this_module($moduleSlug, $userId){ + $this->load->database(); + $this->load->model('User_model'); + $selectedUser = $this->User_model->getUserById($userId); + + $query = $this->db->query('SELECT * FROM modules WHERE module_slug = "'.$moduleSlug.'" LIMIT 1;'); + + if($query->num_rows() == 1){ + $result = $query->result()[0]; + $permissionArray = explode(',', $result->permission_ids); + if(in_array($selectedUser->permission_id, $permissionArray)){ + return 1; + } + else{ + return 0; + } + + } + else{ + return 0; + } +} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +} + + +?> \ No newline at end of file diff --git a/application/models/Service_model.php b/application/models/Service_model.php new file mode 100755 index 0000000..30099e7 --- /dev/null +++ b/application/models/Service_model.php @@ -0,0 +1,695 @@ +load->database(); + $query = $this->db->query('INSERT INTO services ( + service_type, + service_category_no, + service_category_en, + service_category_hu, + service_name_no, + service_name_en, + service_name_hu, + service_description_no, + service_description_en, + service_description_hu, + service_price, + service_time, + service_category_id, + is_enabled + ) VALUES( + "'.$serviceArray['service_type'].'", + "'.$serviceArray['service_category_no'].'", + "'.$serviceArray['service_category_en'].'", + "'.$serviceArray['service_category_hu'].'", + "'.$serviceArray['service_name_no'].'", + "'.$serviceArray['service_name_en'].'", + "'.$serviceArray['service_name_hu'].'", + "'.$serviceArray['service_description_no'].'", + "'.$serviceArray['service_description_en'].'", + "'.$serviceArray['service_description_hu'].'", + "'.$serviceArray['service_price'].'", + "'.$serviceArray['service_time'].'", + "'.$serviceArray['service_category_id'].'", + "'.$serviceArray['is_enabled'].'" + );'); + } + + public function createServiceCategory($serviceCategoryArray){ + $this->load->database(); + $query = $this->db->query('INSERT INTO service_categories ( + serv_cat_slug, + serv_cat_name + ) VALUES( + "'.$serviceCategoryArray['serv_cat_slug'].'", + "'.$serviceCategoryArray['serv_cat_name'].'" + );'); + } + + public function updateService($service_id, $serviceArray){ + $this->load->database(); + + foreach($serviceArray as $propertyKey => $propertyValue){ + $query = $this->db->query('UPDATE services SET '.$propertyKey.' = "'.$propertyValue.'" WHERE service_id = "'.$service_id.'";'); + } + } + + public function updateServiceCategory($service_category_id, $serviceCategoryArray){ + $this->load->database(); + + foreach($serviceCategoryArray as $propertyKey => $propertyValue){ + $query = $this->db->query('UPDATE service_categories SET '.$propertyKey.' = "'.$propertyValue.'" WHERE service_category_id = "'.$service_category_id.'";'); + } + } + + public function createWorker($workerArray){ + $this->load->database(); + $query = $this->db->query('INSERT INTO workers ( + worker_name, + worker_profile_img, + worker_info, + is_beauty, + is_barber, + service_category_id + ) VALUES( + "'.$workerArray['worker_name'].'", + "'.$workerArray['worker_profile_img'].'", + "'.$workerArray['worker_info'].'", + "'.$workerArray['is_beauty'].'", + "'.$workerArray['is_barber'].'", + "'.$workerArray['service_category_id'].'" + );'); + } + + public function updateWorker($worker_id, $workerArray){ + $this->load->database(); + + foreach($workerArray as $propertyKey => $propertyValue){ + $query = $this->db->query('UPDATE workers SET '.$propertyKey.' = "'.$propertyValue.'" WHERE worker_id = "'.$worker_id.'";'); + } + } + + public function updateBooking($booking_id, $bookingArray){ + $this->load->database(); + + foreach($bookingArray as $propertyKey => $propertyValue){ + $query = $this->db->query("UPDATE bookings SET ".$propertyKey." = '".$propertyValue."' WHERE booking_id = '".$booking_id."';"); + } + } + + public function getAllServiceByServiceType($service_type, $lang){ + $this->load->database(); + $query = $this->db->query('SELECT * FROM services JOIN service_categories ON services.service_category_id = service_categories.service_category_id WHERE service_type = "'.$service_type.'" AND services.is_enabled = "1" AND services.is_deleted != "1" ORDER BY service_id ASC;'); + $serviceArray = array(); + if($query->num_rows() > 0){ + foreach($query->result() as $resultItem){ + + $service_category = ''; + $service_name = ''; + $service_description = ''; + + switch($lang){ + case 'no': + $service_category = $resultItem->service_category_no; + $service_name = $resultItem->service_name_no; + $service_description = $resultItem->service_description_no; + break; + case 'en': + $service_category = $resultItem->service_category_en; + $service_name = $resultItem->service_name_en; + $service_description = $resultItem->service_description_en; + break; + case 'hu': + $service_category = $resultItem->service_category_hu; + $service_name = $resultItem->service_name_hu; + $service_description = $resultItem->service_description_hu; + break; + } + + $resultItemTmp = array( + 'service_id' => $resultItem->service_id, + 'service_type' => $resultItem->service_type, + 'service_category' => $service_category, + 'service_name' => $service_name, + 'service_description' => $service_description, + 'service_price' => $resultItem->service_price, + 'service_time' => $resultItem->service_time, + 'serv_cat_slug' => $resultItem->serv_cat_slug, + 'service_category_id' => $resultItem->service_category_id + ); + + $serviceArray[] = (object)$resultItemTmp; + } + } + return $serviceArray; + } + + public function getServiceById($service_id){ + $this->load->database(); + $query = $this->db->query('SELECT * FROM services WHERE service_id = "'.$service_id.'" LIMIT 1;'); + if($query->num_rows() > 0){ + return $query->result()[0]; + } + else{ + return 0; + } + } + + public function getServiceCategoryById($service_category_id){ + $this->load->database(); + $query = $this->db->query('SELECT * FROM service_categories WHERE service_category_id = "'.$service_category_id.'" LIMIT 1;'); + if($query->num_rows() > 0){ + return $query->result()[0]; + } + else{ + return 0; + } + } + + public function getAllServices(){ + $this->load->database(); + $query = $this->db->query('SELECT * FROM services JOIN service_categories ON services.service_category_id = service_categories.service_category_id WHERE services.is_deleted != "1" ORDER BY service_type ASC, service_name_hu ASC;'); + if($query->num_rows() > 0){ + return $query->result(); + } + else{ + return 0; + } + } + + public function getAllServiceCategories(){ + $this->load->database(); + $query = $this->db->query('SELECT * FROM service_categories WHERE is_deleted != "1" ORDER BY service_category_id;'); + if($query->num_rows() > 0){ + return $query->result(); + } + else{ + return 0; + } + } + + public function getAvailableServices(){ + $this->load->database(); + $query = $this->db->query('SELECT * FROM services WHERE is_enabled = "1" AND is_deleted != "1" ORDER BY service_name_hu ASC;'); + + if($query->num_rows() > 0){ + + $serviceArray = array(); + foreach($query->result() as $resultItem){ + $serviceTmp = array( + 'service_name' => $resultItem->service_name_hu.' ('.$resultItem->service_type.')', + 'service_id' => $resultItem->service_id + ); + + $serviceArray[] = $serviceTmp; + } + return $serviceArray; + } + } + + public function getAllWorkers(){ + $this->load->database(); + $query = $this->db->query('SELECT * FROM workers JOIN service_categories ON workers.service_category_id = service_categories.service_category_id WHERE workers.is_deleted != "1" ORDER BY worker_name ASC;'); + return $query->result(); + } + + public function getWorkersByCategorySlug($serv_cat_slug){ + $this->load->database(); + $query = $this->db->query('SELECT * FROM workers JOIN service_categories ON workers.service_category_id = service_categories.service_category_id WHERE workers.is_deleted != "1" AND serv_cat_slug = "'.$serv_cat_slug.'" ORDER BY worker_name ASC;'); + return $query->result(); + } + + public function getActiveWorkers($subpage = ''){ + $this->load->database(); + $subpageString = ''; + + if($subpage == 'beauty'){ + $subpageString = ' AND is_beauty = "1"'; + } + else if($subpage == 'barber'){ + $subpageString = ' AND is_barber = "1"'; + } + else{ + $subpageString = ''; + } + + $query = $this->db->query('SELECT * FROM workers WHERE is_active = "1" '.$subpageString.' AND is_deleted != "1" ORDER BY worker_name ASC;'); + return $query->result(); + } + + public function deleteBooking($booking_id){ + $this->load->database(); + $query = $this->db->query('DELETE FROM bookings WHERE booking_id = "'.$booking_id.'";'); + } + + public function getAllBookings(){ + $this->load->database(); + $this->load->model('Service_model'); + + $query = $this->db->query('SELECT * FROM bookings JOIN workers ON bookings.worker_id = workers.worker_id ORDER BY booking_date DESC, booking_start_time ASC;'); + + if($query->num_rows() > 0){ + $resultsArray = array(); + foreach($query->result() as $resultItem){ + $resultTmp = (array)$resultItem; + if($resultTmp['service_ids'] != ''){ + $servicesArray = unserialize($resultTmp['service_ids']); + if(is_array($servicesArray)){ + $services = array(); + foreach($servicesArray as $servicesArrayItem){ + $selectedService = $this->Service_model->getServiceById($servicesArrayItem); + $services[] = (object)array( + 'service_type' => $selectedService->service_type, + 'service_name' => $selectedService->service_name_hu, + 'service_price' => $selectedService->service_price, + 'service_time' => $selectedService->service_time + ); + } + $resultTmp['services'] = $services; + } + else{ + $resultTmp['services'] = array(); + } + } + else{ + $resultTmp['services'] = array(); + + } + $resultsArray[] = (object)$resultTmp; + } + + + return $resultsArray; + } + else{ + return 0; + } + } + + public function getActualBookings(){ + $this->load->database(); + $this->load->model('Service_model'); + + $query = $this->db->query('SELECT * FROM bookings JOIN workers ON bookings.worker_id = workers.worker_id WHERE booking_date >= CURDATE() ORDER BY booking_date DESC, booking_start_time ASC;'); + + if($query->num_rows() > 0){ + $resultsArray = array(); + foreach($query->result() as $resultItem){ + $resultTmp = (array)$resultItem; + if($resultTmp['service_ids'] != ''){ + $servicesArray = unserialize($resultTmp['service_ids']); + if(is_array($servicesArray)){ + $services = array(); + foreach($servicesArray as $servicesArrayItem){ + $selectedService = $this->Service_model->getServiceById($servicesArrayItem); + $services[] = (object)array( + 'service_type' => $selectedService->service_type, + 'service_name' => $selectedService->service_name_hu, + 'service_price' => $selectedService->service_price, + 'service_time' => $selectedService->service_time + ); + } + $resultTmp['services'] = $services; + } + else{ + $resultTmp['services'] = array(); + } + } + else{ + $resultTmp['services'] = array(); + + } + $resultsArray[] = (object)$resultTmp; + } + + + return $resultsArray; + } + else{ + return 0; + } + } + + public function getActualBookingsByWorkerID($workerID){ + $this->load->database(); + $this->load->model('Service_model'); + + $query = $this->db->query('SELECT * FROM bookings JOIN workers ON bookings.worker_id = workers.worker_id WHERE booking_date >= CURDATE() AND bookings.worker_id = "'.$workerID.'" ORDER BY booking_date DESC, booking_start_time ASC;'); + + if($query->num_rows() > 0){ + $resultsArray = array(); + foreach($query->result() as $resultItem){ + $resultTmp = (array)$resultItem; + if($resultTmp['service_ids'] != ''){ + $servicesArray = unserialize($resultTmp['service_ids']); + if(is_array($servicesArray)){ + $services = array(); + foreach($servicesArray as $servicesArrayItem){ + $selectedService = $this->Service_model->getServiceById($servicesArrayItem); + $services[] = (object)array( + 'service_type' => $selectedService->service_type, + 'service_name' => $selectedService->service_name_hu, + 'service_price' => $selectedService->service_price, + 'service_time' => $selectedService->service_time + ); + } + $resultTmp['services'] = $services; + } + else{ + $resultTmp['services'] = array(); + } + } + else{ + $resultTmp['services'] = array(); + + } + $resultsArray[] = (object)$resultTmp; + } + + + return $resultsArray; + } + else{ + return 0; + } + } + + public function getBookingById($booking_id){ + $this->load->database(); + $this->load->model('Service_model'); + + $query = $this->db->query('SELECT * FROM bookings WHERE booking_id = "'.$booking_id.'" LIMIT 1;'); + if($query->num_rows() > 0){ + return $query->result()[0]; + } + else{ + return 0; + } + } + + public function getWorkerById($worker_id){ + $this->load->database(); + $query = $this->db->query('SELECT * FROM workers WHERE worker_id = "'.$worker_id.'" LIMIT 1;'); + if($query->num_rows() > 0){ + return $query->result()[0]; + } + else{ + return 0; + } + } + + + public function getAvailableTimes($worker_id, $selectedDate, $servicelength) { + $this->load->database(); + if (strtotime($selectedDate) < strtotime(date('Y-m-d'))) { + return []; + } + $ts = strtotime($selectedDate); + $debugDate = date('Y-m-d (w)', $ts) . ' - ' . date('l', $ts); + log_message('error', "📅 DEBUG DATE CHECK for '{$selectedDate}': {$debugDate}"); + log_message('error', "⏱ Timezone: " . date_default_timezone_get()); + $serviceLengthTime = strtotime($servicelength); + $availableTimeArray = []; + + // Check override first + $overrideQuery = $this->db->query(" + SELECT * FROM worker_schedule_overrides + WHERE worker_id = '$worker_id' AND date = '$selectedDate' + LIMIT 1 + "); + + if ($overrideQuery->num_rows() > 0) { + $override = $overrideQuery->row(); + + if ($override->is_day_off) return []; + + $dayStartTime = new DateTime($selectedDate.' '.$override->start_time); + $finishTime = new DateTime($selectedDate.' '.$override->end_time); + } else { + $weekday = date('w', strtotime($selectedDate)); // 0 = Sunday, 6 = Saturday + $weekNumber = date('W', strtotime($selectedDate)); + $isOddWeek = $weekNumber % 2 !== 0; + + $scheduleQuery = $this->db->query(" + SELECT * FROM worker_schedule + WHERE worker_id = '{$worker_id}' + AND weekday = '{$weekday}' + AND ( + is_alternate_week = 0 + OR (is_alternate_week = 1 AND " . ($isOddWeek ? "1" : "0") . ") + ) + "); + + if ($scheduleQuery->num_rows() == 0) { + return []; + } + + $schedule = $scheduleQuery->row(); + $dayStartTime = new DateTime($selectedDate . ' ' . $schedule->start_time); + $finishTime = new DateTime($selectedDate . ' ' . $schedule->end_time); + } + + $interval = new DateInterval('PT15M'); + list($h, $m) = explode(':', $servicelength); + $serviceDuration = new DateInterval('PT' . (int)$h . 'H' . (int)$m . 'M'); + + for ($current = clone $dayStartTime; $current < $finishTime; $current->add($interval)) { + $slotEnd = clone $current; + $slotEnd->add($serviceDuration); + if ($slotEnd > $finishTime) break; + if ($selectedDate == date('Y-m-d') && $current < new DateTime()) continue; + + $startTimeStr = $current->format('H:i:s'); + $endTimeStr = $slotEnd->format('H:i:s'); + + $bookingQuery = $this->db->query(" + SELECT * FROM bookings + WHERE booking_date = '{$selectedDate}' + AND worker_id = '{$worker_id}' + AND ( + (booking_start_time < '{$endTimeStr}' AND booking_finish_time > '{$startTimeStr}') + ) + "); + + if ($bookingQuery->num_rows() == 0) { + $availableTimeArray[] = $startTimeStr; + } + log_message('debug', 'Selected Date: ' . $selectedDate); + log_message('debug', 'Weekday: ' . $weekday); + log_message('debug', 'Worker ID: ' . $worker_id); + log_message('debug', 'Query: ' . $this->db->last_query()); + } + + return $availableTimeArray; + } + + + + public function createBooking($bookingArray){ + $this->load->database(); + $query = $this->db->query("INSERT INTO bookings ( + guest_name, + guest_email, + guest_phone, + worker_id, + booking_date, + booking_start_time, + booking_finish_time, + service_ids, + guest_confirmed, + guest_confirm_code + ) VALUES( + '".$bookingArray['guest_name']."', + '".$bookingArray['guest_email']."', + '".$bookingArray['guest_phone']."', + '".$bookingArray['worker_id']."', + '".$bookingArray['booking_date']."', + '".$bookingArray['booking_start_time']."', + '".$bookingArray['booking_finish_time']."', + '".$bookingArray['service_ids']."', + '".$bookingArray['guest_confirmed']."', + '".$bookingArray['guest_confirm_code']."' + );"); + } + + public function getWorkerSchedule($worker_id) { + return $this->db + ->where('worker_id', $worker_id) + ->order_by('weekday', 'ASC') + ->get('worker_schedule') + ->result(); + } + + public function clearWorkerSchedule($worker_id) { + $this->load->database(); + $this->db->where('worker_id', $worker_id)->delete('worker_schedule'); + } + + public function addWorkerSchedule($data) { + $this->db->insert('worker_schedule', $data); + } + + public function getAllWorkerSchedules() { + $query = $this->db->query('SELECT * FROM worker_schedule'); + return $query->result(); + } + + public function getAllWorkerOverrides() { + $query = $this->db->query('SELECT * FROM worker_schedule_overrides'); + return $query->result(); + } + + public function getWorkerScheduleOverrides() { + $this->load->database(); + $query = $this->db->query(" + SELECT o.*, w.worker_name + FROM worker_schedule_overrides o + JOIN workers w ON o.worker_id = w.worker_id + ORDER BY o.date DESC + "); + return $query->result(); + } + + public function createWorkerScheduleOverride($override) { + $this->db->insert('worker_schedule_overrides', $override); + } + + public function getWorkerScheduleByDay($worker_id, $weekday) { + $this->db->where('worker_id', $worker_id); + $this->db->where('weekday', $weekday); + $query = $this->db->get('worker_schedule'); + return $query->row(); // null if no row + } + + public function isEvenWeek($date) { + return ((int)date('W', strtotime($date)) % 2) === 0; + } + + public function isWorkerAvailableThisWeek($worker_id, $selectedDate) { + $weekday = date('w', strtotime($selectedDate)); + $weekNumber = date('W', strtotime($selectedDate)); + $isOddWeek = $weekNumber % 2 !== 0; + + $query = $this->db->query(" + SELECT * FROM worker_schedule + WHERE worker_id = '{$worker_id}' + AND weekday = '{$weekday}' + AND ( + is_alternate_week = 0 + OR (is_alternate_week = 1 AND " . ($isOddWeek ? "1" : "0") . ") + ) + "); + + return $query->num_rows() > 0; +} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +} + +?> diff --git a/application/models/Service_model_20250312.php b/application/models/Service_model_20250312.php new file mode 100755 index 0000000..b275dd8 --- /dev/null +++ b/application/models/Service_model_20250312.php @@ -0,0 +1,568 @@ +load->database(); + $query = $this->db->query('INSERT INTO services ( + service_type, + service_category_no, + service_category_en, + service_category_hu, + service_name_no, + service_name_en, + service_name_hu, + service_description_no, + service_description_en, + service_description_hu, + service_price, + service_time, + is_enabled + ) VALUES( + "'.$serviceArray['service_type'].'", + "'.$serviceArray['service_category_no'].'", + "'.$serviceArray['service_category_en'].'", + "'.$serviceArray['service_category_hu'].'", + "'.$serviceArray['service_name_no'].'", + "'.$serviceArray['service_name_en'].'", + "'.$serviceArray['service_name_hu'].'", + "'.$serviceArray['service_description_no'].'", + "'.$serviceArray['service_description_en'].'", + "'.$serviceArray['service_description_hu'].'", + "'.$serviceArray['service_price'].'", + "'.$serviceArray['service_time'].'", + "'.$serviceArray['is_enabled'].'" + );'); + } + + public function updateService($service_id, $serviceArray){ + $this->load->database(); + + foreach($serviceArray as $propertyKey => $propertyValue){ + $query = $this->db->query('UPDATE services SET '.$propertyKey.' = "'.$propertyValue.'" WHERE service_id = "'.$service_id.'";'); + } + } + + public function createWorker($workerArray){ + $this->load->database(); + $query = $this->db->query('INSERT INTO workers ( + worker_name, + worker_profile_img, + worker_info + ) VALUES( + "'.$workerArray['worker_name'].'", + "'.$workerArray['worker_profile_img'].'", + "'.$workerArray['worker_info'].'" + );'); + } + + public function updateWorker($worker_id, $workerArray){ + $this->load->database(); + + foreach($workerArray as $propertyKey => $propertyValue){ + $query = $this->db->query('UPDATE workers SET '.$propertyKey.' = "'.$propertyValue.'" WHERE worker_id = "'.$worker_id.'";'); + } + } + + public function updateBooking($booking_id, $bookingArray){ + $this->load->database(); + + foreach($bookingArray as $propertyKey => $propertyValue){ + $query = $this->db->query("UPDATE bookings SET ".$propertyKey." = '".$propertyValue."' WHERE booking_id = '".$booking_id."';"); + } + } + + public function getAllServiceByServiceType($service_type, $lang){ + $this->load->database(); + $query = $this->db->query('SELECT * FROM services WHERE service_type = "'.$service_type.'" AND is_enabled = "1" AND is_deleted != "1" ORDER BY service_id ASC;'); + $serviceArray = array(); + if($query->num_rows() > 0){ + foreach($query->result() as $resultItem){ + + $service_category = ''; + $service_name = ''; + $service_description = ''; + + switch($lang){ + case 'no': + $service_category = $resultItem->service_category_no; + $service_name = $resultItem->service_name_no; + $service_description = $resultItem->service_description_no; + break; + case 'en': + $service_category = $resultItem->service_category_en; + $service_name = $resultItem->service_name_en; + $service_description = $resultItem->service_description_en; + break; + case 'hu': + $service_category = $resultItem->service_category_hu; + $service_name = $resultItem->service_name_hu; + $service_description = $resultItem->service_description_hu; + break; + } + + $resultItemTmp = array( + 'service_id' => $resultItem->service_id, + 'service_type' => $resultItem->service_type, + 'service_category' => $service_category, + 'service_name' => $service_name, + 'service_description' => $service_description, + 'service_price' => $resultItem->service_price, + 'service_time' => $resultItem->service_time + ); + + $serviceArray[] = (object)$resultItemTmp; + } + } + return $serviceArray; + } + + public function getServiceById($service_id){ + $this->load->database(); + $query = $this->db->query('SELECT * FROM services WHERE service_id = "'.$service_id.'" LIMIT 1;'); + if($query->num_rows() > 0){ + return $query->result()[0]; + } + else{ + return 0; + } + } + + public function getAllServices(){ + $this->load->database(); + $query = $this->db->query('SELECT * FROM services WHERE is_deleted != "1" ORDER BY service_type ASC, service_name_hu ASC;'); + if($query->num_rows() > 0){ + return $query->result(); + } + else{ + return 0; + } + } + + public function getAvailableServices(){ + $this->load->database(); + $query = $this->db->query('SELECT * FROM services WHERE is_enabled = "1" AND is_deleted != "1" ORDER BY service_name_hu ASC;'); + + if($query->num_rows() > 0){ + + $serviceArray = array(); + foreach($query->result() as $resultItem){ + $serviceTmp = array( + 'service_name' => $resultItem->service_name_hu.' ('.$resultItem->service_type.')', + 'service_id' => $resultItem->service_id + ); + + $serviceArray[] = $serviceTmp; + } + return $serviceArray; + } + } + + public function getAllWorkers(){ + $this->load->database(); + $query = $this->db->query('SELECT * FROM workers WHERE is_deleted != "1" ORDER BY worker_name ASC;'); + return $query->result(); + } + + public function getActiveWorkers(){ + $this->load->database(); + $query = $this->db->query('SELECT * FROM workers WHERE is_active = "1" AND is_deleted != "1" ORDER BY worker_name ASC;'); + return $query->result(); + } + + public function deleteBooking($booking_id){ + $this->load->database(); + $query = $this->db->query('DELETE FROM bookings WHERE booking_id = "'.$booking_id.'";'); + } + + public function getAllBookings(){ + $this->load->database(); + $this->load->model('Service_model'); + + $query = $this->db->query('SELECT * FROM bookings JOIN workers ON bookings.worker_id = workers.worker_id ORDER BY booking_date DESC, booking_start_time ASC;'); + + if($query->num_rows() > 0){ + $resultsArray = array(); + foreach($query->result() as $resultItem){ + $resultTmp = (array)$resultItem; + if($resultTmp['service_ids'] != ''){ + $servicesArray = unserialize($resultTmp['service_ids']); + if(is_array($servicesArray)){ + $services = array(); + foreach($servicesArray as $servicesArrayItem){ + $selectedService = $this->Service_model->getServiceById($servicesArrayItem); + $services[] = (object)array( + 'service_type' => $selectedService->service_type, + 'service_name' => $selectedService->service_name_hu, + 'service_price' => $selectedService->service_price, + 'service_time' => $selectedService->service_time + ); + } + $resultTmp['services'] = $services; + } + else{ + $resultTmp['services'] = array(); + } + } + else{ + $resultTmp['services'] = array(); + + } + $resultsArray[] = (object)$resultTmp; + } + + + return $resultsArray; + } + else{ + return 0; + } + } + + public function getActualBookings(){ + $this->load->database(); + $this->load->model('Service_model'); + + $query = $this->db->query('SELECT * FROM bookings JOIN workers ON bookings.worker_id = workers.worker_id WHERE booking_date >= CURDATE() ORDER BY booking_date DESC, booking_start_time ASC;'); + + if($query->num_rows() > 0){ + $resultsArray = array(); + foreach($query->result() as $resultItem){ + $resultTmp = (array)$resultItem; + if($resultTmp['service_ids'] != ''){ + $servicesArray = unserialize($resultTmp['service_ids']); + if(is_array($servicesArray)){ + $services = array(); + foreach($servicesArray as $servicesArrayItem){ + $selectedService = $this->Service_model->getServiceById($servicesArrayItem); + $services[] = (object)array( + 'service_type' => $selectedService->service_type, + 'service_name' => $selectedService->service_name_hu, + 'service_price' => $selectedService->service_price, + 'service_time' => $selectedService->service_time + ); + } + $resultTmp['services'] = $services; + } + else{ + $resultTmp['services'] = array(); + } + } + else{ + $resultTmp['services'] = array(); + + } + $resultsArray[] = (object)$resultTmp; + } + + + return $resultsArray; + } + else{ + return 0; + } + } + + public function getBookingById($booking_id){ + $this->load->database(); + $this->load->model('Service_model'); + + $query = $this->db->query('SELECT * FROM bookings WHERE booking_id = "'.$booking_id.'" LIMIT 1;'); + if($query->num_rows() > 0){ + return $query->result()[0]; + } + else{ + return 0; + } + } + + public function getWorkerById($worker_id){ + $this->load->database(); + $query = $this->db->query('SELECT * FROM workers WHERE worker_id = "'.$worker_id.'" LIMIT 1;'); + if($query->num_rows() > 0){ + return $query->result()[0]; + } + else{ + return 0; + } + } + + public function getAvailableTimes($worker_id, $selectedDate, $servicelength){ + $this->load->database(); + $serviceLengthDateTime = new DateTime($selectedDate.' '.$servicelength); + $service_length_time = strtotime($servicelength); + $availableTimeArray = array(); + $selectedDayName = date('D', strtotime($selectedDate)); + $dayStartTime = new DateTime($selectedDate.' 10:00'); + $finishTime = new DateTime($selectedDate.' 18:00'); + if($selectedDayName == 'Sun'){ + return array(); + } + elseif($selectedDayName == 'Sat'){ + $finishTime = new DateTime($selectedDate.' 16:00'); + } + else{ + //finish time - selected service length + $finishTime = new DateTime($selectedDate.' 18:00'); + + } + + $today=date_create(date('Y-m-d')); + $selectedDay=date_create($selectedDate); + $dateDiff=date_diff($today,$selectedDay); + + $tmpDateStart = date_create(date('2024-02-29')); + $tmpDateEnd = date_create(date('2024-03-07')); + + $datelength = new DateTime($servicelength); + $diff = $datelength->diff($finishTime); + + //max time for start + $maxTime = $diff->h.':'.$diff->i.':00'; + $hours = (intval($diff->h)-10)*4+1; + $mins = floor(intval($diff->i) / 15); + $loopSteps = intval($hours) + intval($mins); + + for($periodIndex = 1; $periodIndex <= $loopSteps; $periodIndex++){ + $minutes_to_add_start = $periodIndex*15; + $minutes_to_add_end = ($periodIndex+1)*15; + $startTime = new DateTime($selectedDate.' 09:45'); + $endTime = new DateTime($selectedDate.' 09:45'); + $startTime->add(new DateInterval('PT' . $minutes_to_add_start . 'M')); + $endTime->add(new DateInterval('PT' . $minutes_to_add_end . 'M')); + $maxTimeObject = new DateTime($maxTime); + + $tz = new DateTimeZone('Europe/Budapest'); + $addStartTimeAndLength = new DateTime($selectedDate.' '.$startTime->format('H:i:00'), $tz); + $addStartTimeAndLength->add(new DateInterval('PT' . intval($serviceLengthDateTime->format('H')) . 'H')); + $addStartTimeAndLength->add(new DateInterval('PT' . intval($serviceLengthDateTime->format('i')) . 'M')); + + $currentStartTime = $startTime->format('H:i:00'); + $currentEndTime = $endTime->format('H:i:00'); + + + + /* + echo '<< '; + print_r($serviceLengthDateTime->format('H:i:00')); + echo ' / '; + print_r($currentStartTime); + echo ' / '; + print_r($addStartTimeAndLength->format('H:i:00')); + echo ' >>'; + */ + /* + $query = $this->db->query('SELECT * FROM bookings WHERE booking_date = "'.$selectedDate.'" AND worker_id = "'.$worker_id.'" AND ( + + (TIME(booking_start_time) >= CAST("'.$currentStartTime.'" AS TIME) AND TIME(booking_finish_time) <= CAST("'.$currentEndTime.'" AS TIME)) OR + + + (TIME(booking_start_time) <= CAST("'.$addStartTimeAndLength->format('H:i:00').'" AS TIME) AND TIME(booking_finish_time) >= CAST("'.$currentEndTime.'" AS TIME)) OR + + + (TIME(booking_start_time) >= CAST("'.$currentStartTime.'" AS TIME) AND TIME(booking_start_time) <= CAST("'.$currentEndTime.'" AS TIME) AND TIME(booking_finish_time) >= CAST("'.$currentEndTime.'" AS TIME)) OR + + + (TIME(booking_start_time) <= CAST("'.$currentStartTime.'" AS TIME) AND TIME(booking_finish_time) >= CAST("'.$currentEndTime.'" AS TIME) + AND TIME(booking_start_time) <= CAST("'.$currentStartTime.'" AS TIME)) OR + + + (TIME(booking_start_time) <= CAST("'.$currentStartTime.'" AS TIME) AND TIME(booking_finish_time) <= CAST("'.$currentEndTime.'" AS TIME) + AND TIME(booking_finish_time) >= CAST("'.$currentStartTime.'" AS TIME)) OR + + + (TIME(booking_start_time) <= CAST("'.$currentStartTime.'" AS TIME) AND TIME(booking_finish_time) >= CAST("'.$currentEndTime.'" AS TIME)) + ); + '); + */ + + + $query = $this->db->query('SELECT * FROM bookings WHERE booking_date = "'.$selectedDate.'" AND worker_id = "'.$worker_id.'" AND ( + /*start later and finish before*/ + (TIME(booking_start_time) > CAST("'.$currentStartTime.'" AS TIME) AND TIME(booking_finish_time) < CAST("'.$currentEndTime.'" AS TIME)) OR + + /*check if not end service until next booking*/ + (TIME(booking_start_time) < CAST("'.$addStartTimeAndLength->format('H:i:00').'" AS TIME) AND TIME(booking_finish_time) >= CAST("'.$currentEndTime.'" AS TIME)) OR + + /*start later and finish later*/ + (TIME(booking_start_time) > CAST("'.$currentStartTime.'" AS TIME) AND TIME(booking_start_time) < CAST("'.$currentEndTime.'" AS TIME) AND TIME(booking_finish_time) >= CAST("'.$currentEndTime.'" AS TIME)) OR + + /*start before and finish before*/ + (TIME(booking_start_time) < CAST("'.$currentStartTime.'" AS TIME) AND TIME(booking_finish_time) >= CAST("'.$currentEndTime.'" AS TIME) + AND TIME(booking_start_time) < CAST("'.$currentStartTime.'" AS TIME)) OR + + /**/ + (TIME(booking_start_time) < CAST("'.$currentStartTime.'" AS TIME) AND TIME(booking_finish_time) < CAST("'.$currentEndTime.'" AS TIME) + AND TIME(booking_finish_time) > CAST("'.$currentStartTime.'" AS TIME)) OR + + /**/ + (TIME(booking_start_time) < CAST("'.$currentStartTime.'" AS TIME) AND TIME(booking_finish_time) >= CAST("'.$currentEndTime.'" AS TIME)) + ); + '); + + $now = strtotime(date('H:i:s')) + 60*60; + $timezone = 'Europe/Budapest'; + $todayStartTime = strtotime($currentStartTime.' '.$timezone); + $minDiff = ($todayStartTime - $now) / 60; + + + if($dateDiff->format("%R%a") == 0 && $minDiff > 0){ + if($query->num_rows() == 0){ + $availableTimeArray[] = $currentStartTime; + } + } + + elseif($dateDiff->format("%R%a") >= 0 && ($selectedDay < $tmpDateStart || $selectedDay > $tmpDateEnd) && $dateDiff->format("%R%a") != 0){ + if($query->num_rows() == 0){ + $availableTimeArray[] = $currentStartTime; + } + + } + + + } + + return $availableTimeArray; + + + } + + public function createBooking($bookingArray){ + $this->load->database(); + $query = $this->db->query("INSERT INTO bookings ( + guest_name, + guest_email, + guest_phone, + worker_id, + booking_date, + booking_start_time, + booking_finish_time, + service_ids, + guest_confirmed, + guest_confirm_code + ) VALUES( + '".$bookingArray['guest_name']."', + '".$bookingArray['guest_email']."', + '".$bookingArray['guest_phone']."', + '".$bookingArray['worker_id']."', + '".$bookingArray['booking_date']."', + '".$bookingArray['booking_start_time']."', + '".$bookingArray['booking_finish_time']."', + '".$bookingArray['service_ids']."', + '".$bookingArray['guest_confirmed']."', + '".$bookingArray['guest_confirm_code']."' + );"); + } + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +} + +?> \ No newline at end of file diff --git a/application/models/Service_model_20250524.php b/application/models/Service_model_20250524.php new file mode 100755 index 0000000..6e61ed8 --- /dev/null +++ b/application/models/Service_model_20250524.php @@ -0,0 +1,685 @@ +load->database(); + $query = $this->db->query('INSERT INTO services ( + service_type, + service_category_no, + service_category_en, + service_category_hu, + service_name_no, + service_name_en, + service_name_hu, + service_description_no, + service_description_en, + service_description_hu, + service_price, + service_time, + service_category_id, + is_enabled + ) VALUES( + "'.$serviceArray['service_type'].'", + "'.$serviceArray['service_category_no'].'", + "'.$serviceArray['service_category_en'].'", + "'.$serviceArray['service_category_hu'].'", + "'.$serviceArray['service_name_no'].'", + "'.$serviceArray['service_name_en'].'", + "'.$serviceArray['service_name_hu'].'", + "'.$serviceArray['service_description_no'].'", + "'.$serviceArray['service_description_en'].'", + "'.$serviceArray['service_description_hu'].'", + "'.$serviceArray['service_price'].'", + "'.$serviceArray['service_time'].'", + "'.$serviceArray['service_category_id'].'", + "'.$serviceArray['is_enabled'].'" + );'); + } + + public function createServiceCategory($serviceCategoryArray){ + $this->load->database(); + $query = $this->db->query('INSERT INTO service_categories ( + serv_cat_slug, + serv_cat_name + ) VALUES( + "'.$serviceCategoryArray['serv_cat_slug'].'", + "'.$serviceCategoryArray['serv_cat_name'].'" + );'); + } + + public function updateService($service_id, $serviceArray){ + $this->load->database(); + + foreach($serviceArray as $propertyKey => $propertyValue){ + $query = $this->db->query('UPDATE services SET '.$propertyKey.' = "'.$propertyValue.'" WHERE service_id = "'.$service_id.'";'); + } + } + + public function updateServiceCategory($service_category_id, $serviceCategoryArray){ + $this->load->database(); + + foreach($serviceCategoryArray as $propertyKey => $propertyValue){ + $query = $this->db->query('UPDATE service_categories SET '.$propertyKey.' = "'.$propertyValue.'" WHERE service_category_id = "'.$service_category_id.'";'); + } + } + + public function createWorker($workerArray){ + $this->load->database(); + $query = $this->db->query('INSERT INTO workers ( + worker_name, + worker_profile_img, + worker_info, + is_beauty, + is_barber, + service_category_id + ) VALUES( + "'.$workerArray['worker_name'].'", + "'.$workerArray['worker_profile_img'].'", + "'.$workerArray['worker_info'].'", + "'.$workerArray['is_beauty'].'", + "'.$workerArray['is_barber'].'", + "'.$workerArray['service_category_id'].'" + );'); + } + + public function updateWorker($worker_id, $workerArray){ + $this->load->database(); + + foreach($workerArray as $propertyKey => $propertyValue){ + $query = $this->db->query('UPDATE workers SET '.$propertyKey.' = "'.$propertyValue.'" WHERE worker_id = "'.$worker_id.'";'); + } + } + + public function updateBooking($booking_id, $bookingArray){ + $this->load->database(); + + foreach($bookingArray as $propertyKey => $propertyValue){ + $query = $this->db->query("UPDATE bookings SET ".$propertyKey." = '".$propertyValue."' WHERE booking_id = '".$booking_id."';"); + } + } + + public function getAllServiceByServiceType($service_type, $lang){ + $this->load->database(); + $query = $this->db->query('SELECT * FROM services JOIN service_categories ON services.service_category_id = service_categories.service_category_id WHERE service_type = "'.$service_type.'" AND services.is_enabled = "1" AND services.is_deleted != "1" ORDER BY service_id ASC;'); + $serviceArray = array(); + if($query->num_rows() > 0){ + foreach($query->result() as $resultItem){ + + $service_category = ''; + $service_name = ''; + $service_description = ''; + + switch($lang){ + case 'no': + $service_category = $resultItem->service_category_no; + $service_name = $resultItem->service_name_no; + $service_description = $resultItem->service_description_no; + break; + case 'en': + $service_category = $resultItem->service_category_en; + $service_name = $resultItem->service_name_en; + $service_description = $resultItem->service_description_en; + break; + case 'hu': + $service_category = $resultItem->service_category_hu; + $service_name = $resultItem->service_name_hu; + $service_description = $resultItem->service_description_hu; + break; + } + + $resultItemTmp = array( + 'service_id' => $resultItem->service_id, + 'service_type' => $resultItem->service_type, + 'service_category' => $service_category, + 'service_name' => $service_name, + 'service_description' => $service_description, + 'service_price' => $resultItem->service_price, + 'service_time' => $resultItem->service_time, + 'serv_cat_slug' => $resultItem->serv_cat_slug, + 'service_category_id' => $resultItem->service_category_id + ); + + $serviceArray[] = (object)$resultItemTmp; + } + } + return $serviceArray; + } + + public function getServiceById($service_id){ + $this->load->database(); + $query = $this->db->query('SELECT * FROM services WHERE service_id = "'.$service_id.'" LIMIT 1;'); + if($query->num_rows() > 0){ + return $query->result()[0]; + } + else{ + return 0; + } + } + + public function getServiceCategoryById($service_category_id){ + $this->load->database(); + $query = $this->db->query('SELECT * FROM service_categories WHERE service_category_id = "'.$service_category_id.'" LIMIT 1;'); + if($query->num_rows() > 0){ + return $query->result()[0]; + } + else{ + return 0; + } + } + + public function getAllServices(){ + $this->load->database(); + $query = $this->db->query('SELECT * FROM services JOIN service_categories ON services.service_category_id = service_categories.service_category_id WHERE services.is_deleted != "1" ORDER BY service_type ASC, service_name_hu ASC;'); + if($query->num_rows() > 0){ + return $query->result(); + } + else{ + return 0; + } + } + + public function getAllServiceCategories(){ + $this->load->database(); + $query = $this->db->query('SELECT * FROM service_categories WHERE is_deleted != "1" ORDER BY service_category_id;'); + if($query->num_rows() > 0){ + return $query->result(); + } + else{ + return 0; + } + } + + public function getAvailableServices(){ + $this->load->database(); + $query = $this->db->query('SELECT * FROM services WHERE is_enabled = "1" AND is_deleted != "1" ORDER BY service_name_hu ASC;'); + + if($query->num_rows() > 0){ + + $serviceArray = array(); + foreach($query->result() as $resultItem){ + $serviceTmp = array( + 'service_name' => $resultItem->service_name_hu.' ('.$resultItem->service_type.')', + 'service_id' => $resultItem->service_id + ); + + $serviceArray[] = $serviceTmp; + } + return $serviceArray; + } + } + + public function getAllWorkers(){ + $this->load->database(); + $query = $this->db->query('SELECT * FROM workers JOIN service_categories ON workers.service_category_id = service_categories.service_category_id WHERE workers.is_deleted != "1" ORDER BY worker_name ASC;'); + return $query->result(); + } + + public function getWorkersByCategorySlug($serv_cat_slug){ + $this->load->database(); + $query = $this->db->query('SELECT * FROM workers JOIN service_categories ON workers.service_category_id = service_categories.service_category_id WHERE workers.is_deleted != "1" AND serv_cat_slug = "'.$serv_cat_slug.'" ORDER BY worker_name ASC;'); + return $query->result(); + } + + public function getActiveWorkers($subpage = ''){ + $this->load->database(); + $subpageString = ''; + + if($subpage == 'beauty'){ + $subpageString = ' AND is_beauty = "1"'; + } + else if($subpage == 'barber'){ + $subpageString = ' AND is_barber = "1"'; + } + else{ + $subpageString = ''; + } + + $query = $this->db->query('SELECT * FROM workers WHERE is_active = "1" '.$subpageString.' AND is_deleted != "1" ORDER BY worker_name ASC;'); + return $query->result(); + } + + public function deleteBooking($booking_id){ + $this->load->database(); + $query = $this->db->query('DELETE FROM bookings WHERE booking_id = "'.$booking_id.'";'); + } + + public function getAllBookings(){ + $this->load->database(); + $this->load->model('Service_model'); + + $query = $this->db->query('SELECT * FROM bookings JOIN workers ON bookings.worker_id = workers.worker_id ORDER BY booking_date DESC, booking_start_time ASC;'); + + if($query->num_rows() > 0){ + $resultsArray = array(); + foreach($query->result() as $resultItem){ + $resultTmp = (array)$resultItem; + if($resultTmp['service_ids'] != ''){ + $servicesArray = unserialize($resultTmp['service_ids']); + if(is_array($servicesArray)){ + $services = array(); + foreach($servicesArray as $servicesArrayItem){ + $selectedService = $this->Service_model->getServiceById($servicesArrayItem); + $services[] = (object)array( + 'service_type' => $selectedService->service_type, + 'service_name' => $selectedService->service_name_hu, + 'service_price' => $selectedService->service_price, + 'service_time' => $selectedService->service_time + ); + } + $resultTmp['services'] = $services; + } + else{ + $resultTmp['services'] = array(); + } + } + else{ + $resultTmp['services'] = array(); + + } + $resultsArray[] = (object)$resultTmp; + } + + + return $resultsArray; + } + else{ + return 0; + } + } + + public function getActualBookings(){ + $this->load->database(); + $this->load->model('Service_model'); + + $query = $this->db->query('SELECT * FROM bookings JOIN workers ON bookings.worker_id = workers.worker_id WHERE booking_date >= CURDATE() ORDER BY booking_date DESC, booking_start_time ASC;'); + + if($query->num_rows() > 0){ + $resultsArray = array(); + foreach($query->result() as $resultItem){ + $resultTmp = (array)$resultItem; + if($resultTmp['service_ids'] != ''){ + $servicesArray = unserialize($resultTmp['service_ids']); + if(is_array($servicesArray)){ + $services = array(); + foreach($servicesArray as $servicesArrayItem){ + $selectedService = $this->Service_model->getServiceById($servicesArrayItem); + $services[] = (object)array( + 'service_type' => $selectedService->service_type, + 'service_name' => $selectedService->service_name_hu, + 'service_price' => $selectedService->service_price, + 'service_time' => $selectedService->service_time + ); + } + $resultTmp['services'] = $services; + } + else{ + $resultTmp['services'] = array(); + } + } + else{ + $resultTmp['services'] = array(); + + } + $resultsArray[] = (object)$resultTmp; + } + + + return $resultsArray; + } + else{ + return 0; + } + } + + public function getActualBookingsByWorkerID($workerID){ + $this->load->database(); + $this->load->model('Service_model'); + + $query = $this->db->query('SELECT * FROM bookings JOIN workers ON bookings.worker_id = workers.worker_id WHERE booking_date >= CURDATE() AND bookings.worker_id = "'.$workerID.'" ORDER BY booking_date DESC, booking_start_time ASC;'); + + if($query->num_rows() > 0){ + $resultsArray = array(); + foreach($query->result() as $resultItem){ + $resultTmp = (array)$resultItem; + if($resultTmp['service_ids'] != ''){ + $servicesArray = unserialize($resultTmp['service_ids']); + if(is_array($servicesArray)){ + $services = array(); + foreach($servicesArray as $servicesArrayItem){ + $selectedService = $this->Service_model->getServiceById($servicesArrayItem); + $services[] = (object)array( + 'service_type' => $selectedService->service_type, + 'service_name' => $selectedService->service_name_hu, + 'service_price' => $selectedService->service_price, + 'service_time' => $selectedService->service_time + ); + } + $resultTmp['services'] = $services; + } + else{ + $resultTmp['services'] = array(); + } + } + else{ + $resultTmp['services'] = array(); + + } + $resultsArray[] = (object)$resultTmp; + } + + + return $resultsArray; + } + else{ + return 0; + } + } + + public function getBookingById($booking_id){ + $this->load->database(); + $this->load->model('Service_model'); + + $query = $this->db->query('SELECT * FROM bookings WHERE booking_id = "'.$booking_id.'" LIMIT 1;'); + if($query->num_rows() > 0){ + return $query->result()[0]; + } + else{ + return 0; + } + } + + public function getWorkerById($worker_id){ + $this->load->database(); + $query = $this->db->query('SELECT * FROM workers WHERE worker_id = "'.$worker_id.'" LIMIT 1;'); + if($query->num_rows() > 0){ + return $query->result()[0]; + } + else{ + return 0; + } + } + + public function getAvailableTimes($worker_id, $selectedDate, $servicelength){ + $this->load->database(); + $serviceLengthDateTime = new DateTime($selectedDate.' '.$servicelength); + $service_length_time = strtotime($servicelength); + $availableTimeArray = array(); + $selectedDayName = date('D', strtotime($selectedDate)); + $dayStartTime = new DateTime($selectedDate.' 10:00'); + $finishTime = new DateTime($selectedDate.' 18:00'); + $lastBookingLimitDate = date('Y-m-d', strtotime("+3 months", strtotime(date('Y-m-d')))); + + if($selectedDayName == 'Sun'){ + return array(); + } + elseif($selectedDayName == 'Sat'){ + $finishTime = new DateTime($selectedDate.' 16:00'); + } + else{ + //finish time - selected service length + $finishTime = new DateTime($selectedDate.' 18:00'); + + } + + $today=date_create(date('Y-m-d')); + $selectedDay=date_create($selectedDate); + $dateDiff=date_diff($today,$selectedDay); + + $tmpDateStart = date_create(date('2024-02-29')); + $tmpDateEnd = date_create(date('2024-03-07')); + + $datelength = new DateTime($servicelength); + $diff = $datelength->diff($finishTime); + + //max time for start + $maxTime = $diff->h.':'.$diff->i.':00'; + $hours = (intval($diff->h)-10)*4+1; + $mins = floor(intval($diff->i) / 15); + $loopSteps = intval($hours) + intval($mins); + + for($periodIndex = 1; $periodIndex <= $loopSteps; $periodIndex++){ + $minutes_to_add_start = $periodIndex*15; + $minutes_to_add_end = ($periodIndex+1)*15; + $startTime = new DateTime($selectedDate.' 09:45'); + $endTime = new DateTime($selectedDate.' 09:45'); + $startTime->add(new DateInterval('PT' . $minutes_to_add_start . 'M')); + $endTime->add(new DateInterval('PT' . $minutes_to_add_end . 'M')); + $maxTimeObject = new DateTime($maxTime); + + $tz = new DateTimeZone('Europe/Budapest'); + $addStartTimeAndLength = new DateTime($selectedDate.' '.$startTime->format('H:i:00'), $tz); + $addStartTimeAndLength->add(new DateInterval('PT' . intval($serviceLengthDateTime->format('H')) . 'H')); + $addStartTimeAndLength->add(new DateInterval('PT' . intval($serviceLengthDateTime->format('i')) . 'M')); + + $currentStartTime = $startTime->format('H:i:00'); + $currentEndTime = $endTime->format('H:i:00'); + + + + /* + echo '<< '; + print_r($serviceLengthDateTime->format('H:i:00')); + echo ' / '; + print_r($currentStartTime); + echo ' / '; + print_r($addStartTimeAndLength->format('H:i:00')); + echo ' >>'; + */ + /* + $query = $this->db->query('SELECT * FROM bookings WHERE booking_date = "'.$selectedDate.'" AND worker_id = "'.$worker_id.'" AND ( + + (TIME(booking_start_time) >= CAST("'.$currentStartTime.'" AS TIME) AND TIME(booking_finish_time) <= CAST("'.$currentEndTime.'" AS TIME)) OR + + + (TIME(booking_start_time) <= CAST("'.$addStartTimeAndLength->format('H:i:00').'" AS TIME) AND TIME(booking_finish_time) >= CAST("'.$currentEndTime.'" AS TIME)) OR + + + (TIME(booking_start_time) >= CAST("'.$currentStartTime.'" AS TIME) AND TIME(booking_start_time) <= CAST("'.$currentEndTime.'" AS TIME) AND TIME(booking_finish_time) >= CAST("'.$currentEndTime.'" AS TIME)) OR + + + (TIME(booking_start_time) <= CAST("'.$currentStartTime.'" AS TIME) AND TIME(booking_finish_time) >= CAST("'.$currentEndTime.'" AS TIME) + AND TIME(booking_start_time) <= CAST("'.$currentStartTime.'" AS TIME)) OR + + + (TIME(booking_start_time) <= CAST("'.$currentStartTime.'" AS TIME) AND TIME(booking_finish_time) <= CAST("'.$currentEndTime.'" AS TIME) + AND TIME(booking_finish_time) >= CAST("'.$currentStartTime.'" AS TIME)) OR + + + (TIME(booking_start_time) <= CAST("'.$currentStartTime.'" AS TIME) AND TIME(booking_finish_time) >= CAST("'.$currentEndTime.'" AS TIME)) + ); + '); + */ + + + $query = $this->db->query('SELECT * FROM bookings WHERE booking_date = "'.$selectedDate.'" AND worker_id = "'.$worker_id.'" AND ( + /*start later and finish before*/ + (TIME(booking_start_time) > CAST("'.$currentStartTime.'" AS TIME) AND TIME(booking_finish_time) < CAST("'.$currentEndTime.'" AS TIME)) OR + + /*check if not end service until next booking*/ + (TIME(booking_start_time) < CAST("'.$addStartTimeAndLength->format('H:i:00').'" AS TIME) AND TIME(booking_finish_time) >= CAST("'.$currentEndTime.'" AS TIME)) OR + + /*start later and finish later*/ + (TIME(booking_start_time) > CAST("'.$currentStartTime.'" AS TIME) AND TIME(booking_start_time) < CAST("'.$currentEndTime.'" AS TIME) AND TIME(booking_finish_time) >= CAST("'.$currentEndTime.'" AS TIME)) OR + + /*start before and finish before*/ + (TIME(booking_start_time) < CAST("'.$currentStartTime.'" AS TIME) AND TIME(booking_finish_time) >= CAST("'.$currentEndTime.'" AS TIME) + AND TIME(booking_start_time) < CAST("'.$currentStartTime.'" AS TIME)) OR + + /**/ + (TIME(booking_start_time) < CAST("'.$currentStartTime.'" AS TIME) AND TIME(booking_finish_time) < CAST("'.$currentEndTime.'" AS TIME) + AND TIME(booking_finish_time) > CAST("'.$currentStartTime.'" AS TIME)) OR + + /**/ + (TIME(booking_start_time) < CAST("'.$currentStartTime.'" AS TIME) AND TIME(booking_finish_time) >= CAST("'.$currentEndTime.'" AS TIME)) + ); + '); + + $now = strtotime(date('H:i:s')) + 60*60; + $timezone = 'Europe/Budapest'; + $todayStartTime = strtotime($currentStartTime.' '.$timezone); + $minDiff = ($todayStartTime - $now) / 60; + + if($lastBookingLimitDate >= $selectedDate){ + if($dateDiff->format("%R%a") == 0 && $minDiff > 0){ + if($query->num_rows() == 0){ + $availableTimeArray[] = $currentStartTime; + } + } + + elseif($dateDiff->format("%R%a") >= 0 && ($selectedDay < $tmpDateStart || $selectedDay > $tmpDateEnd) && $dateDiff->format("%R%a") != 0){ + if($query->num_rows() == 0){ + $availableTimeArray[] = $currentStartTime; + } + + } + } + + + + } + + return $availableTimeArray; + + + } + + public function createBooking($bookingArray){ + $this->load->database(); + $query = $this->db->query("INSERT INTO bookings ( + guest_name, + guest_email, + guest_phone, + worker_id, + booking_date, + booking_start_time, + booking_finish_time, + service_ids, + guest_confirmed, + guest_confirm_code + ) VALUES( + '".$bookingArray['guest_name']."', + '".$bookingArray['guest_email']."', + '".$bookingArray['guest_phone']."', + '".$bookingArray['worker_id']."', + '".$bookingArray['booking_date']."', + '".$bookingArray['booking_start_time']."', + '".$bookingArray['booking_finish_time']."', + '".$bookingArray['service_ids']."', + '".$bookingArray['guest_confirmed']."', + '".$bookingArray['guest_confirm_code']."' + );"); + } + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +} + +?> \ No newline at end of file diff --git a/application/models/Service_model_20250617.php b/application/models/Service_model_20250617.php new file mode 100755 index 0000000..1a9dae8 --- /dev/null +++ b/application/models/Service_model_20250617.php @@ -0,0 +1,677 @@ +load->database(); + $query = $this->db->query('INSERT INTO services ( + service_type, + service_category_no, + service_category_en, + service_category_hu, + service_name_no, + service_name_en, + service_name_hu, + service_description_no, + service_description_en, + service_description_hu, + service_price, + service_time, + service_category_id, + is_enabled + ) VALUES( + "'.$serviceArray['service_type'].'", + "'.$serviceArray['service_category_no'].'", + "'.$serviceArray['service_category_en'].'", + "'.$serviceArray['service_category_hu'].'", + "'.$serviceArray['service_name_no'].'", + "'.$serviceArray['service_name_en'].'", + "'.$serviceArray['service_name_hu'].'", + "'.$serviceArray['service_description_no'].'", + "'.$serviceArray['service_description_en'].'", + "'.$serviceArray['service_description_hu'].'", + "'.$serviceArray['service_price'].'", + "'.$serviceArray['service_time'].'", + "'.$serviceArray['service_category_id'].'", + "'.$serviceArray['is_enabled'].'" + );'); + } + + public function createServiceCategory($serviceCategoryArray){ + $this->load->database(); + $query = $this->db->query('INSERT INTO service_categories ( + serv_cat_slug, + serv_cat_name + ) VALUES( + "'.$serviceCategoryArray['serv_cat_slug'].'", + "'.$serviceCategoryArray['serv_cat_name'].'" + );'); + } + + public function updateService($service_id, $serviceArray){ + $this->load->database(); + + foreach($serviceArray as $propertyKey => $propertyValue){ + $query = $this->db->query('UPDATE services SET '.$propertyKey.' = "'.$propertyValue.'" WHERE service_id = "'.$service_id.'";'); + } + } + + public function updateServiceCategory($service_category_id, $serviceCategoryArray){ + $this->load->database(); + + foreach($serviceCategoryArray as $propertyKey => $propertyValue){ + $query = $this->db->query('UPDATE service_categories SET '.$propertyKey.' = "'.$propertyValue.'" WHERE service_category_id = "'.$service_category_id.'";'); + } + } + + public function createWorker($workerArray){ + $this->load->database(); + $query = $this->db->query('INSERT INTO workers ( + worker_name, + worker_profile_img, + worker_info, + is_beauty, + is_barber, + service_category_id + ) VALUES( + "'.$workerArray['worker_name'].'", + "'.$workerArray['worker_profile_img'].'", + "'.$workerArray['worker_info'].'", + "'.$workerArray['is_beauty'].'", + "'.$workerArray['is_barber'].'", + "'.$workerArray['service_category_id'].'" + );'); + } + + public function updateWorker($worker_id, $workerArray){ + $this->load->database(); + + foreach($workerArray as $propertyKey => $propertyValue){ + $query = $this->db->query('UPDATE workers SET '.$propertyKey.' = "'.$propertyValue.'" WHERE worker_id = "'.$worker_id.'";'); + } + } + + public function updateBooking($booking_id, $bookingArray){ + $this->load->database(); + + foreach($bookingArray as $propertyKey => $propertyValue){ + $query = $this->db->query("UPDATE bookings SET ".$propertyKey." = '".$propertyValue."' WHERE booking_id = '".$booking_id."';"); + } + } + + public function getAllServiceByServiceType($service_type, $lang){ + $this->load->database(); + $query = $this->db->query('SELECT * FROM services JOIN service_categories ON services.service_category_id = service_categories.service_category_id WHERE service_type = "'.$service_type.'" AND services.is_enabled = "1" AND services.is_deleted != "1" ORDER BY service_id ASC;'); + $serviceArray = array(); + if($query->num_rows() > 0){ + foreach($query->result() as $resultItem){ + + $service_category = ''; + $service_name = ''; + $service_description = ''; + + switch($lang){ + case 'no': + $service_category = $resultItem->service_category_no; + $service_name = $resultItem->service_name_no; + $service_description = $resultItem->service_description_no; + break; + case 'en': + $service_category = $resultItem->service_category_en; + $service_name = $resultItem->service_name_en; + $service_description = $resultItem->service_description_en; + break; + case 'hu': + $service_category = $resultItem->service_category_hu; + $service_name = $resultItem->service_name_hu; + $service_description = $resultItem->service_description_hu; + break; + } + + $resultItemTmp = array( + 'service_id' => $resultItem->service_id, + 'service_type' => $resultItem->service_type, + 'service_category' => $service_category, + 'service_name' => $service_name, + 'service_description' => $service_description, + 'service_price' => $resultItem->service_price, + 'service_time' => $resultItem->service_time, + 'serv_cat_slug' => $resultItem->serv_cat_slug, + 'service_category_id' => $resultItem->service_category_id + ); + + $serviceArray[] = (object)$resultItemTmp; + } + } + return $serviceArray; + } + + public function getServiceById($service_id){ + $this->load->database(); + $query = $this->db->query('SELECT * FROM services WHERE service_id = "'.$service_id.'" LIMIT 1;'); + if($query->num_rows() > 0){ + return $query->result()[0]; + } + else{ + return 0; + } + } + + public function getServiceCategoryById($service_category_id){ + $this->load->database(); + $query = $this->db->query('SELECT * FROM service_categories WHERE service_category_id = "'.$service_category_id.'" LIMIT 1;'); + if($query->num_rows() > 0){ + return $query->result()[0]; + } + else{ + return 0; + } + } + + public function getAllServices(){ + $this->load->database(); + $query = $this->db->query('SELECT * FROM services JOIN service_categories ON services.service_category_id = service_categories.service_category_id WHERE services.is_deleted != "1" ORDER BY service_type ASC, service_name_hu ASC;'); + if($query->num_rows() > 0){ + return $query->result(); + } + else{ + return 0; + } + } + + public function getAllServiceCategories(){ + $this->load->database(); + $query = $this->db->query('SELECT * FROM service_categories WHERE is_deleted != "1" ORDER BY service_category_id;'); + if($query->num_rows() > 0){ + return $query->result(); + } + else{ + return 0; + } + } + + public function getAvailableServices(){ + $this->load->database(); + $query = $this->db->query('SELECT * FROM services WHERE is_enabled = "1" AND is_deleted != "1" ORDER BY service_name_hu ASC;'); + + if($query->num_rows() > 0){ + + $serviceArray = array(); + foreach($query->result() as $resultItem){ + $serviceTmp = array( + 'service_name' => $resultItem->service_name_hu.' ('.$resultItem->service_type.')', + 'service_id' => $resultItem->service_id + ); + + $serviceArray[] = $serviceTmp; + } + return $serviceArray; + } + } + + public function getAllWorkers(){ + $this->load->database(); + $query = $this->db->query('SELECT * FROM workers JOIN service_categories ON workers.service_category_id = service_categories.service_category_id WHERE workers.is_deleted != "1" ORDER BY worker_name ASC;'); + return $query->result(); + } + + public function getWorkersByCategorySlug($serv_cat_slug){ + $this->load->database(); + $query = $this->db->query('SELECT * FROM workers JOIN service_categories ON workers.service_category_id = service_categories.service_category_id WHERE workers.is_deleted != "1" AND serv_cat_slug = "'.$serv_cat_slug.'" ORDER BY worker_name ASC;'); + return $query->result(); + } + + public function getActiveWorkers($subpage = ''){ + $this->load->database(); + $subpageString = ''; + + if($subpage == 'beauty'){ + $subpageString = ' AND is_beauty = "1"'; + } + else if($subpage == 'barber'){ + $subpageString = ' AND is_barber = "1"'; + } + else{ + $subpageString = ''; + } + + $query = $this->db->query('SELECT * FROM workers WHERE is_active = "1" '.$subpageString.' AND is_deleted != "1" ORDER BY worker_name ASC;'); + return $query->result(); + } + + public function deleteBooking($booking_id){ + $this->load->database(); + $query = $this->db->query('DELETE FROM bookings WHERE booking_id = "'.$booking_id.'";'); + } + + public function getAllBookings(){ + $this->load->database(); + $this->load->model('Service_model'); + + $query = $this->db->query('SELECT * FROM bookings JOIN workers ON bookings.worker_id = workers.worker_id ORDER BY booking_date DESC, booking_start_time ASC;'); + + if($query->num_rows() > 0){ + $resultsArray = array(); + foreach($query->result() as $resultItem){ + $resultTmp = (array)$resultItem; + if($resultTmp['service_ids'] != ''){ + $servicesArray = unserialize($resultTmp['service_ids']); + if(is_array($servicesArray)){ + $services = array(); + foreach($servicesArray as $servicesArrayItem){ + $selectedService = $this->Service_model->getServiceById($servicesArrayItem); + $services[] = (object)array( + 'service_type' => $selectedService->service_type, + 'service_name' => $selectedService->service_name_hu, + 'service_price' => $selectedService->service_price, + 'service_time' => $selectedService->service_time + ); + } + $resultTmp['services'] = $services; + } + else{ + $resultTmp['services'] = array(); + } + } + else{ + $resultTmp['services'] = array(); + + } + $resultsArray[] = (object)$resultTmp; + } + + + return $resultsArray; + } + else{ + return 0; + } + } + + public function getActualBookings(){ + $this->load->database(); + $this->load->model('Service_model'); + + $query = $this->db->query('SELECT * FROM bookings JOIN workers ON bookings.worker_id = workers.worker_id WHERE booking_date >= CURDATE() ORDER BY booking_date DESC, booking_start_time ASC;'); + + if($query->num_rows() > 0){ + $resultsArray = array(); + foreach($query->result() as $resultItem){ + $resultTmp = (array)$resultItem; + if($resultTmp['service_ids'] != ''){ + $servicesArray = unserialize($resultTmp['service_ids']); + if(is_array($servicesArray)){ + $services = array(); + foreach($servicesArray as $servicesArrayItem){ + $selectedService = $this->Service_model->getServiceById($servicesArrayItem); + $services[] = (object)array( + 'service_type' => $selectedService->service_type, + 'service_name' => $selectedService->service_name_hu, + 'service_price' => $selectedService->service_price, + 'service_time' => $selectedService->service_time + ); + } + $resultTmp['services'] = $services; + } + else{ + $resultTmp['services'] = array(); + } + } + else{ + $resultTmp['services'] = array(); + + } + $resultsArray[] = (object)$resultTmp; + } + + + return $resultsArray; + } + else{ + return 0; + } + } + + public function getActualBookingsByWorkerID($workerID){ + $this->load->database(); + $this->load->model('Service_model'); + + $query = $this->db->query('SELECT * FROM bookings JOIN workers ON bookings.worker_id = workers.worker_id WHERE booking_date >= CURDATE() AND bookings.worker_id = "'.$workerID.'" ORDER BY booking_date DESC, booking_start_time ASC;'); + + if($query->num_rows() > 0){ + $resultsArray = array(); + foreach($query->result() as $resultItem){ + $resultTmp = (array)$resultItem; + if($resultTmp['service_ids'] != ''){ + $servicesArray = unserialize($resultTmp['service_ids']); + if(is_array($servicesArray)){ + $services = array(); + foreach($servicesArray as $servicesArrayItem){ + $selectedService = $this->Service_model->getServiceById($servicesArrayItem); + $services[] = (object)array( + 'service_type' => $selectedService->service_type, + 'service_name' => $selectedService->service_name_hu, + 'service_price' => $selectedService->service_price, + 'service_time' => $selectedService->service_time + ); + } + $resultTmp['services'] = $services; + } + else{ + $resultTmp['services'] = array(); + } + } + else{ + $resultTmp['services'] = array(); + + } + $resultsArray[] = (object)$resultTmp; + } + + + return $resultsArray; + } + else{ + return 0; + } + } + + public function getBookingById($booking_id){ + $this->load->database(); + $this->load->model('Service_model'); + + $query = $this->db->query('SELECT * FROM bookings WHERE booking_id = "'.$booking_id.'" LIMIT 1;'); + if($query->num_rows() > 0){ + return $query->result()[0]; + } + else{ + return 0; + } + } + + public function getWorkerById($worker_id){ + $this->load->database(); + $query = $this->db->query('SELECT * FROM workers WHERE worker_id = "'.$worker_id.'" LIMIT 1;'); + if($query->num_rows() > 0){ + return $query->result()[0]; + } + else{ + return 0; + } + } + + + public function getAvailableTimes($worker_id, $selectedDate, $servicelength) { + $this->load->database(); + if (strtotime($selectedDate) < strtotime(date('Y-m-d'))) { + return []; + } + $ts = strtotime($selectedDate); + $debugDate = date('Y-m-d (w)', $ts) . ' - ' . date('l', $ts); + log_message('error', "📅 DEBUG DATE CHECK for '{$selectedDate}': {$debugDate}"); + log_message('error', "⏱ Timezone: " . date_default_timezone_get()); + $serviceLengthTime = strtotime($servicelength); + $availableTimeArray = []; + + // Check override first + $overrideQuery = $this->db->query(" + SELECT * FROM worker_schedule_overrides + WHERE worker_id = '$worker_id' AND date = '$selectedDate' + LIMIT 1 + "); + + if ($overrideQuery->num_rows() > 0) { + $override = $overrideQuery->row(); + + if ($override->is_day_off) return []; + + $dayStartTime = new DateTime($selectedDate.' '.$override->start_time); + $finishTime = new DateTime($selectedDate.' '.$override->end_time); + } else { + $weekday = date('w', strtotime($selectedDate)); // 0 = Sunday, 6 = Saturday + $weekNumber = date('W', strtotime($selectedDate)); + $isOddWeek = $weekNumber % 2 !== 0; + + $scheduleQuery = $this->db->query(" + SELECT * FROM worker_schedule + WHERE worker_id = '{$worker_id}' + AND weekday = '{$weekday}' + AND ( + is_alternate_week = 0 + OR (is_alternate_week = 1 AND " . ($isOddWeek ? "1" : "0") . ") + ) + "); + + if ($scheduleQuery->num_rows() == 0) { + return []; + } + + $schedule = $scheduleQuery->row(); + $dayStartTime = new DateTime($selectedDate . ' ' . $schedule->start_time); + $finishTime = new DateTime($selectedDate . ' ' . $schedule->end_time); + } + + $interval = new DateInterval('PT15M'); + list($h, $m) = explode(':', $servicelength); + $serviceDuration = new DateInterval('PT' . (int)$h . 'H' . (int)$m . 'M'); + + for ($current = clone $dayStartTime; $current < $finishTime; $current->add($interval)) { + $slotEnd = clone $current; + $slotEnd->add($serviceDuration); + if ($slotEnd > $finishTime) break; + if ($selectedDate == date('Y-m-d') && $current < new DateTime()) continue; + + $startTimeStr = $current->format('H:i:s'); + $endTimeStr = $slotEnd->format('H:i:s'); + + $bookingQuery = $this->db->query(" + SELECT * FROM bookings + WHERE booking_date = '{$selectedDate}' + AND worker_id = '{$worker_id}' + AND ( + (booking_start_time < '{$endTimeStr}' AND booking_finish_time > '{$startTimeStr}') + ) + "); + + if ($bookingQuery->num_rows() == 0) { + $availableTimeArray[] = $startTimeStr; + } + log_message('debug', 'Selected Date: ' . $selectedDate); + log_message('debug', 'Weekday: ' . $weekday); + log_message('debug', 'Worker ID: ' . $worker_id); + log_message('debug', 'Query: ' . $this->db->last_query()); + } + + return $availableTimeArray; + } + + + + public function createBooking($bookingArray){ + $this->load->database(); + $query = $this->db->query("INSERT INTO bookings ( + guest_name, + guest_email, + guest_phone, + worker_id, + booking_date, + booking_start_time, + booking_finish_time, + service_ids, + guest_confirmed, + guest_confirm_code + ) VALUES( + '".$bookingArray['guest_name']."', + '".$bookingArray['guest_email']."', + '".$bookingArray['guest_phone']."', + '".$bookingArray['worker_id']."', + '".$bookingArray['booking_date']."', + '".$bookingArray['booking_start_time']."', + '".$bookingArray['booking_finish_time']."', + '".$bookingArray['service_ids']."', + '".$bookingArray['guest_confirmed']."', + '".$bookingArray['guest_confirm_code']."' + );"); + } + + public function getWorkerSchedule($worker_id) { + return $this->db + ->where('worker_id', $worker_id) + ->order_by('weekday', 'ASC') + ->get('worker_schedule') + ->result(); + } + + public function clearWorkerSchedule($worker_id) { + $this->load->database(); + $this->db->where('worker_id', $worker_id)->delete('worker_schedule'); + } + + public function addWorkerSchedule($data) { + $this->db->insert('worker_schedule', $data); + } + + public function getAllWorkerSchedules() { + $query = $this->db->query('SELECT * FROM worker_schedule'); + return $query->result(); + } + + public function getAllWorkerOverrides() { + $query = $this->db->query('SELECT * FROM worker_schedule_overrides'); + return $query->result(); + } + + public function getWorkerScheduleOverrides() { + $this->load->database(); + $query = $this->db->query(" + SELECT o.*, w.worker_name + FROM worker_schedule_overrides o + JOIN workers w ON o.worker_id = w.worker_id + ORDER BY o.date DESC + "); + return $query->result(); + } + + public function createWorkerScheduleOverride($override) { + $this->db->insert('worker_schedule_overrides', $override); + } + + public function getWorkerScheduleByDay($worker_id, $weekday) { + $this->db->where('worker_id', $worker_id); + $this->db->where('weekday', $weekday); + $query = $this->db->get('worker_schedule'); + return $query->row(); // null if no row + } + + public function isEvenWeek($date) { + return ((int)date('W', strtotime($date)) % 2) === 0; + } + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +} + +?> diff --git a/application/models/User_model.php b/application/models/User_model.php new file mode 100755 index 0000000..5ea5102 --- /dev/null +++ b/application/models/User_model.php @@ -0,0 +1,224 @@ +load->database(); + $query = $this->db->query('SELECT * FROM users WHERE username = "'.$username.'" AND password = "'.hash('sha256', $password).'" AND is_enabled = 1 LIMIT 1'); + + if($query->num_rows() == 1){ + return 1; + } + else{ + return 0; + } + } + + public function getAllUser(){ + $this->load->database(); + $query = $this->db->query('SELECT * FROM users JOIN permissions ON users.permission_slug = permissions.permission_slug ORDER BY fullname ASC'); + $userResults = $query->result(); + + foreach($userResults as $userResultItem){ + if($userResultItem->profile_img_url == ''){ + $userResultItem->profile_img_url = base_url().'img/default_profile.jpg'; + } + } + return $userResults; + } + + public function getUserByUsername($username){ + $this->load->database(); + $query = $this->db->query('SELECT * FROM users JOIN permissions ON users.permission_slug = permissions.permission_slug WHERE username = "'.$username.'" LIMIT 1'); + if($query->num_rows() == 1){ + + if($query->result()[0]->profile_img_url == ''){ + $query->result()[0]->profile_img_url = base_url().'img/default_profile.jpg'; + } + return $query->result()[0]; + } + else{ + return 0; + } + } + + public function getAllUserPermission(){ + $this->load->database(); + $query = $this->db->query('SELECT * FROM permissions;'); + if($query->num_rows() > 0){ + return $query->result(); + } + else{ + return 0; + } + } + public function getUserById($userId){ + $this->load->database(); + $query = $this->db->query('SELECT * FROM users JOIN permissions ON users.permission_slug = permissions.permission_slug WHERE user_id = "'.$userId.'" LIMIT 1'); + if($query->num_rows() == 1){ + if($query->result()[0]->profile_img_url == ''){ + $query->result()[0]->profile_img_url = base_url().'img/default_profile.jpg'; + } + return $query->result()[0]; + } + else{ + return 0; + } + } + + public function deleteUser($userId){ + $this->load->database(); + $query = $this->db->query('DELETE FROM users WHERE user_id = "'.$userId.'";'); + } + + public function isUsernameAvailable($username){ + $this->load->database(); + $query = $this->db->query('SELECT * FROM users WHERE username = "'.$username.'";'); + if($query->num_rows() == 1){ + return 0; + } + else{ + return 1; + } + } + + public function updateUser($userId, $userArray){ + $this->load->database(); + + foreach($userArray as $propertyKey => $propertyValue){ + $query = $this->db->query('UPDATE users SET '.$propertyKey.' = "'.$propertyValue.'" WHERE user_id = "'.$userId.'";'); + } + } + + public function addNewUser($userArray){ + $this->load->database(); + + if(!is_object($this->getUserByUsername($userArray['username']))){ + $query = $this->db->query('INSERT INTO users (username, password, fullname, permission_slug, is_enabled, user_notes) VALUES("'.$userArray['username'].'", "'.hash('sha256', $userArray['password']).'", "'.$userArray['fullname'].'", "'.$userArray['permission_slug'].'", "'.$userArray['is_enabled'].'", "'.$userArray['user_notes'].'");'); + return 1; + } + else{ + return 0; + } + + } + + public function getAllUserGroup(){ + $this->load->database(); + $query = $this->db->query('SELECT * FROM permissions ORDER BY permission_name ASC;'); + return $query->result(); + } + + public function getPermissionById($groupId){ + $this->load->database(); + $query = $this->db->query('SELECT * FROM permissions WHERE permission_id = "'.$groupId.'" LIMIT 1;'); + return $query->result()[0]; + } + + public function getPermissionBySlug($permission_slug){ + $this->load->database(); + $query = $this->db->query('SELECT * FROM permissions WHERE permission_slug = "'.$permission_slug.'" LIMIT 1;'); + return $query->result()[0]; + } + + public function sendEmail($addressList, $lang, $subpage){ + // Import PHPMailer classes into the global namespace + // These must be at the top of your script, not inside a function + echo $lang; + if(!empty($addressList)){ + foreach($addressList as $addressListItem){ + // Instantiation and passing `true` enables exceptions + $mail = new PHPMailer(false); + $mail->SMTPDebug = false; + $mail->do_debug = 1; + try { + //Server settings + $mail->CharSet = 'UTF-8'; + //$mail->SMTPDebug = SMTP::DEBUG_SERVER; // Enable verbose debug output + $mail->isSMTP(); //Send using SMTP + $mail->Host = 'mail.absolutesolution.hu'; //Set the SMTP server to send through + $mail->SMTPAuth = true; //Enable SMTP authentication + $mail->Username = 'reservations@studiobeve.no'; //SMTP username + $mail->Password = 'StudioBeve-1234'; //SMTP password + $mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS; //Enable TLS encryption; `PHPMailer::ENCRYPTION_SMTPS` encouraged + $mail->Port = 465; //TCP port to connect to, use 465 for `PHPMailer::ENCRYPTION_SMTPS` above + + //Recipients + $mail->setFrom('reservations@studiobeve.no', '[studiobeve]'); + $mail->addAddress($addressListItem['addressee_email'], $addressListItem['addressee_name']); // Add a recipient + //$mail->addAddress('ellen@example.com'); // Name is optional + //$mail->addReplyTo('info@example.com', 'Information'); + $mail->addCC('evelin@studiobeve.no'); + //$mail->addBCC('bcc@example.com'); + + // Attachments + if(is_array($addressListItem['attachments'])){ + $attachments = $addressListItem['attachments']; + foreach($attachments as $attachmentsItem){ + $mail->addAttachment(getcwd().'/documents/'.$attachmentsItem); // Add attachments + } + } + //$mail->addAttachment('/tmp/image.jpg', 'new.jpg'); // Optional name + + // Content + $mail->isHTML(true); // Set email format to HTML + $mail->Subject = $addressListItem['subject']; + ob_start(); + $body = ob_get_clean(); + $body .= $addressListItem['content']; + + $mail->Body = $body; + //$mail->AltBody = strip_tags($answer_message); + + $mail->send(); + echo 'Üzenet elküldve'; + if($subpage != ''){ + header('location:'.base_url().$lang.'/booking-finished/'.$subpage); + } + + } catch (Exception $e) { + //header('location:'.base_url().'manage-applicants/?email-sent=false&error='.$mail->ErrorInfo); + echo "Üzenetküldési hiba. Mailer Error: {$mail->ErrorInfo}"; + } + + } + } + + + + } + + + public function is_user_admin($username){ + $this->load->database(); + $query = $this->db->query('SELECT * FROM users JOIN permissions ON users.permission_slug = permissions.permission_slug WHERE username = "'.$username.'" LIMIT 1'); + if($query->num_rows() == 1){ + if($query->result()[0]->permission_slug == 'admin'){ + return 1; + } + else{ + return 0; + } + } + else{ + return 0; + } + } + + + + + +} + +?> \ No newline at end of file diff --git a/application/models/index.html b/application/models/index.html new file mode 100755 index 0000000..b48b490 --- /dev/null +++ b/application/models/index.html @@ -0,0 +1,11 @@ + + + + 403 Forbidden + + + +

Directory access is forbidden.

+ + + diff --git a/application/models_20231211/Service_model.php b/application/models_20231211/Service_model.php new file mode 100755 index 0000000..5b5788e --- /dev/null +++ b/application/models_20231211/Service_model.php @@ -0,0 +1,299 @@ +load->database(); + $query = $this->db->query('INSERT INTO services ( + service_type, + service_category, + service_name, + service_description, + service_price, + service_time, + service_note + ) VALUES( + "'.$serviceArray['service_type'].'", + "'.$serviceArray['service_category'].'", + "'.$serviceArray['service_name'].'", + "'.$serviceArray['service_description'].'", + "'.$serviceArray['service_price'].'", + "'.$serviceArray['service_time'].'", + "'.$serviceArray['service_note'].'" + );'); + } + + public function updateService($service_id, $serviceArray){ + $this->load->database(); + + foreach($serviceArray as $propertyKey => $propertyValue){ + $query = $this->db->query('UPDATE users SET '.$propertyKey.' = "'.$propertyValue.'" WHERE service_id = "'.$service_id.'";'); + } + } + + public function getAllServiceByServiceType($service_type, $lang){ + $this->load->database(); + $query = $this->db->query('SELECT * FROM services WHERE service_type = "'.$service_type.'" ORDER BY service_id ASC;'); + $serviceArray = array(); + if($query->num_rows() > 0){ + foreach($query->result() as $resultItem){ + + $service_category = ''; + $service_name = ''; + $service_description = ''; + + switch($lang){ + case 'no': + $service_category = $resultItem->service_category_no; + $service_name = $resultItem->service_name_no; + $service_description = $resultItem->service_description_no; + break; + case 'en': + $service_category = $resultItem->service_category_en; + $service_name = $resultItem->service_name_en; + $service_description = $resultItem->service_description_en; + break; + case 'hu': + $service_category = $resultItem->service_category_hu; + $service_name = $resultItem->service_name_hu; + $service_description = $resultItem->service_description_hu; + break; + } + + $resultItemTmp = array( + 'service_id' => $resultItem->service_id, + 'service_type' => $resultItem->service_type, + 'service_category' => $service_category, + 'service_name' => $service_name, + 'service_description' => $service_description, + 'service_price' => $resultItem->service_price, + 'service_time' => $resultItem->service_time + ); + + $serviceArray[] = (object)$resultItemTmp; + } + } + return $serviceArray; + } + + public function getServiceById($service_id){ + $this->load->database(); + $query = $this->db->query('SELECT * FROM services WHERE service_id = "'.$service_id.'" LIMIT 1;'); + if($query->num_rows() > 0){ + return $query->result()[0]; + } + else{ + return 0; + } + } + + public function getAllWorkers(){ + $this->load->database(); + $query = $this->db->query('SELECT * FROM workers ORDER BY worker_name ASC;'); + return $query->result(); + } + + public function getWorkerById($worker_id){ + $this->load->database(); + $query = $this->db->query('SELECT * FROM workers WHERE worker_id = "'.$worker_id.'" LIMIT 1;'); + if($query->num_rows() > 0){ + return $query->result()[0]; + } + else{ + return 0; + } + } + + public function getAvailableTimes($worker_id, $selectedDate, $servicelength){ + $this->load->database(); + $service_length_time = strtotime($servicelength); + $availableTimeArray = array(); + + //finish time - selected service length + $finishTime = new DateTime($selectedDate.' 18:00'); + $datelength = new DateTime($servicelength); + $diff = $datelength->diff($finishTime); + + //max time for start + $maxdate = $diff->h.':'.$diff->i.':00'; + $hours = (intval($diff->h)-8)*4+1; + $mins = floor(intval($diff->i) / 15); + $loopSteps = intval($hours) + intval($mins); + + for($periodIndex = 1; $periodIndex <= $loopSteps; $periodIndex++){ + $minutes_to_add_start = $periodIndex*15; + $minutes_to_add_end = ($periodIndex+1)*15; + $startTime = new DateTime($selectedDate.' 07:45'); + $endTime = new DateTime($selectedDate.' 07:45'); + $startTime->add(new DateInterval('PT' . $minutes_to_add_start . 'M')); + $endTime->add(new DateInterval('PT' . $minutes_to_add_end . 'M')); + + $currentStartTime = $startTime->format('H:i:00'); + $currentEndTime = $endTime->format('H:i:00'); + + $query = $this->db->query('SELECT * FROM bookings WHERE booking_date = "'.$selectedDate.'" AND worker_id = "'.$worker_id.'" AND ( + (TIME(booking_start_time) >= CAST("'.$currentStartTime.'" AS TIME) AND TIME(booking_finish_time) <= CAST("'.$currentEndTime.'" AS TIME)) OR + + (TIME(booking_start_time) >= CAST("'.$currentStartTime.'" AS TIME) AND TIME(booking_start_time) <= CAST("'.$currentEndTime.'" AS TIME) AND TIME(booking_finish_time) >= CAST("'.$currentEndTime.'" AS TIME)) OR + + (TIME(booking_start_time) <= CAST("'.$currentStartTime.'" AS TIME) AND TIME(booking_finish_time) >= CAST("'.$currentEndTime.'" AS TIME) + AND TIME(booking_start_time) <= CAST("'.$currentStartTime.'" AS TIME)) OR + + (TIME(booking_start_time) <= CAST("'.$currentStartTime.'" AS TIME) AND TIME(booking_finish_time) <= CAST("'.$currentEndTime.'" AS TIME) + AND TIME(booking_finish_time) >= CAST("'.$currentStartTime.'" AS TIME)) OR + + (TIME(booking_start_time) <= CAST("'.$currentStartTime.'" AS TIME) AND TIME(booking_finish_time) >= CAST("'.$currentEndTime.'" AS TIME)) + ); + '); + + if($query->num_rows() == 0){ + $availableTimeArray[] = $currentStartTime; + } + + } + + + return $availableTimeArray; + + + } + + public function createBooking($bookingArray){ + $this->load->database(); + $query = $this->db->query("INSERT INTO bookings ( + guest_name, + guest_email, + guest_phone, + worker_id, + booking_date, + booking_start_time, + booking_finish_time, + service_ids, + guest_confirmed, + guest_confirm_code + ) VALUES( + '".$bookingArray['guest_name']."', + '".$bookingArray['guest_email']."', + '".$bookingArray['guest_phone']."', + '".$bookingArray['worker_id']."', + '".$bookingArray['booking_date']."', + '".$bookingArray['booking_start_time']."', + '".$bookingArray['booking_finish_time']."', + '".$bookingArray['service_ids']."', + '".$bookingArray['guest_confirmed']."', + '".$bookingArray['guest_confirm_code']."' + );"); + } + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +} + +?> \ No newline at end of file diff --git a/application/models_20231211/User_model.php b/application/models_20231211/User_model.php new file mode 100755 index 0000000..d96d329 --- /dev/null +++ b/application/models_20231211/User_model.php @@ -0,0 +1,182 @@ +load->database(); + $query = $this->db->query('SELECT * FROM users WHERE username = "'.$username.'" AND password = "'.hash('sha256', $password).'" AND is_enabled = 1 LIMIT 1'); + + if($query->num_rows() == 1){ + return 1; + } + else{ + return 0; + } + } + + public function getAllUser(){ + $this->load->database(); + $query = $this->db->query('SELECT * FROM users JOIN privilegies ON users.privilegy_group_id = privilegies.privilegy_group_id ORDER BY fullname ASC'); + $userResults = $query->result(); + + foreach($userResults as $userResultItem){ + if($userResultItem->profile_img_url == ''){ + $userResultItem->profile_img_url = base_url().'img/default_profile.jpg'; + } + } + return $userResults; + } + + public function getUserByUsername($username){ + $this->load->database(); + $query = $this->db->query('SELECT * FROM users JOIN privilegies ON users.privilegy_group_id = privilegies.privilegy_group_id WHERE username = "'.$username.'" LIMIT 1'); + if($query->num_rows() == 1){ + + if($query->result()[0]->profile_img_url == ''){ + $query->result()[0]->profile_img_url = base_url().'img/default_profile.jpg'; + } + return $query->result()[0]; + } + else{ + return 0; + } + } + + public function getUserById($userId){ + $this->load->database(); + $query = $this->db->query('SELECT * FROM users JOIN privilegies ON users.privilegy_group_id = privilegies.privilegy_group_id WHERE user_id = "'.$userId.'" LIMIT 1'); + if($query->num_rows() == 1){ + if($query->result()[0]->profile_img_url == ''){ + $query->result()[0]->profile_img_url = base_url().'img/default_profile.jpg'; + } + return $query->result()[0]; + } + else{ + return 0; + } + } + + public function deleteUser($userId){ + $this->load->database(); + $query = $this->db->query('DELETE FROM users WHERE user_id = "'.$userId.'";'); + } + + public function isUsernameAvailable($username){ + $this->load->database(); + $query = $this->db->query('SELECT * FROM users WHERE username = "'.$username.'";'); + if($query->num_rows() == 1){ + return 0; + } + else{ + return 1; + } + } + + public function updateUser($userId, $userArray){ + $this->load->database(); + + foreach($userArray as $propertyKey => $propertyValue){ + $query = $this->db->query('UPDATE users SET '.$propertyKey.' = "'.hash('sha256',$propertyValue).'" WHERE user_id = "'.$userId.'";'); + } + } + + public function addNewUser($userArray){ + $this->load->database(); + + if(!is_object($this->getUserByUsername($userArray['username']))){ + $query = $this->db->query('INSERT INTO users (username, password, fullname, privilegy_group_id, is_enabled, user_notes) VALUES("'.$userArray['username'].'", "'.hash('sha256', $userArray['password']).'", "'.$userArray['fullname'].'", "'.$userArray['privilegy_group_id'].'", "'.$userArray['is_enabled'].'", "'.$userArray['user_notes'].'");'); + return 1; + } + else{ + return 0; + } + + } + + + + + public function sendEmail($addressList, $lang, $subpage){ + // Import PHPMailer classes into the global namespace + // These must be at the top of your script, not inside a function + + if(!empty($addressList)){ + foreach($addressList as $addressListItem){ + // Instantiation and passing `true` enables exceptions + $mail = new PHPMailer(false); + $mail->SMTPDebug = false; + $mail->do_debug = 1; + try { + //Server settings + $mail->CharSet = 'UTF-8'; + //$mail->SMTPDebug = SMTP::DEBUG_SERVER; // Enable verbose debug output + $mail->isSMTP(); //Send using SMTP + $mail->Host = 'mail.absolutesolution.hu'; //Set the SMTP server to send through + $mail->SMTPAuth = true; //Enable SMTP authentication + $mail->Username = 'reservations@studiobeve.no'; //SMTP username + $mail->Password = 'StudioBeve-1234'; //SMTP password + $mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS; //Enable TLS encryption; `PHPMailer::ENCRYPTION_SMTPS` encouraged + $mail->Port = 465; //TCP port to connect to, use 465 for `PHPMailer::ENCRYPTION_SMTPS` above + + //Recipients + $mail->setFrom('reservations@studiobeve.no', '[studiobeve]'); + $mail->addAddress($addressListItem['addressee_email'], $addressListItem['addressee_name']); // Add a recipient + //$mail->addAddress('ellen@example.com'); // Name is optional + //$mail->addReplyTo('info@example.com', 'Information'); + //$mail->addCC('cc@example.com'); + //$mail->addBCC('bcc@example.com'); + + // Attachments + if(is_array($addressListItem['attachments'])){ + $attachments = $addressListItem['attachments']; + foreach($attachments as $attachmentsItem){ + $mail->addAttachment(getcwd().'/documents/'.$attachmentsItem); // Add attachments + } + } + //$mail->addAttachment('/tmp/image.jpg', 'new.jpg'); // Optional name + + // Content + $mail->isHTML(true); // Set email format to HTML + $mail->Subject = $addressListItem['subject']; + ob_start(); + $body = ob_get_clean(); + $body .= $addressListItem['content']; + + $mail->Body = $body; + //$mail->AltBody = strip_tags($answer_message); + + $mail->send(); + echo 'Üzenet elküldve'; + header('location:'.base_url().$lang.'/booking-finished/'.$subpage); + } catch (Exception $e) { + //header('location:'.base_url().'manage-applicants/?email-sent=false&error='.$mail->ErrorInfo); + echo "Üzenetküldési hiba. Mailer Error: {$mail->ErrorInfo}"; + } + + } + } + + + + } + + + + + + + + +} + +?> \ No newline at end of file diff --git a/application/models_20231211/index.html b/application/models_20231211/index.html new file mode 100755 index 0000000..b48b490 --- /dev/null +++ b/application/models_20231211/index.html @@ -0,0 +1,11 @@ + + + + 403 Forbidden + + + +

Directory access is forbidden.

+ + + diff --git a/application/models_20240401/Service_model-2023-12-20.php b/application/models_20240401/Service_model-2023-12-20.php new file mode 100755 index 0000000..d6798ce --- /dev/null +++ b/application/models_20240401/Service_model-2023-12-20.php @@ -0,0 +1,331 @@ +load->database(); + $query = $this->db->query('INSERT INTO services ( + service_type, + service_category, + service_name, + service_description, + service_price, + service_time, + service_note + ) VALUES( + "'.$serviceArray['service_type'].'", + "'.$serviceArray['service_category'].'", + "'.$serviceArray['service_name'].'", + "'.$serviceArray['service_description'].'", + "'.$serviceArray['service_price'].'", + "'.$serviceArray['service_time'].'", + "'.$serviceArray['service_note'].'" + );'); + } + + public function updateService($service_id, $serviceArray){ + $this->load->database(); + + foreach($serviceArray as $propertyKey => $propertyValue){ + $query = $this->db->query('UPDATE users SET '.$propertyKey.' = "'.$propertyValue.'" WHERE service_id = "'.$service_id.'";'); + } + } + + public function getAllServiceByServiceType($service_type, $lang){ + $this->load->database(); + $query = $this->db->query('SELECT * FROM services WHERE service_type = "'.$service_type.'" ORDER BY service_id ASC;'); + $serviceArray = array(); + if($query->num_rows() > 0){ + foreach($query->result() as $resultItem){ + + $service_category = ''; + $service_name = ''; + $service_description = ''; + + switch($lang){ + case 'no': + $service_category = $resultItem->service_category_no; + $service_name = $resultItem->service_name_no; + $service_description = $resultItem->service_description_no; + break; + case 'en': + $service_category = $resultItem->service_category_en; + $service_name = $resultItem->service_name_en; + $service_description = $resultItem->service_description_en; + break; + case 'hu': + $service_category = $resultItem->service_category_hu; + $service_name = $resultItem->service_name_hu; + $service_description = $resultItem->service_description_hu; + break; + } + + $resultItemTmp = array( + 'service_id' => $resultItem->service_id, + 'service_type' => $resultItem->service_type, + 'service_category' => $service_category, + 'service_name' => $service_name, + 'service_description' => $service_description, + 'service_price' => $resultItem->service_price, + 'service_time' => $resultItem->service_time + ); + + $serviceArray[] = (object)$resultItemTmp; + } + } + return $serviceArray; + } + + public function getServiceById($service_id){ + $this->load->database(); + $query = $this->db->query('SELECT * FROM services WHERE service_id = "'.$service_id.'" LIMIT 1;'); + if($query->num_rows() > 0){ + return $query->result()[0]; + } + else{ + return 0; + } + } + + public function getAllWorkers(){ + $this->load->database(); + $query = $this->db->query('SELECT * FROM workers ORDER BY worker_name ASC;'); + return $query->result(); + } + + public function getWorkerById($worker_id){ + $this->load->database(); + $query = $this->db->query('SELECT * FROM workers WHERE worker_id = "'.$worker_id.'" LIMIT 1;'); + if($query->num_rows() > 0){ + return $query->result()[0]; + } + else{ + return 0; + } + } + + public function getAvailableTimes($worker_id, $selectedDate, $servicelength){ + $this->load->database(); + $service_length_time = strtotime($servicelength); + $availableTimeArray = array(); + $selectedDayName = date('D', strtotime($selectedDate)); + $dayStartTime = new DateTime($selectedDate.' 10:00'); + $finishTime = new DateTime($selectedDate.' 18:00'); + if($selectedDayName == 'Sun'){ + return array(); + } + elseif($selectedDayName == 'Sat'){ + $finishTime = new DateTime($selectedDate.' 16:00'); + } + else{ + //finish time - selected service length + $finishTime = new DateTime($selectedDate.' 18:00'); + + } + + $today=date_create(date('Y-m-d')); + $selectedDay=date_create($selectedDate); + $dateDiff=date_diff($today,$selectedDay); + + $tmpDateStart = date_create(date('2023-12-22')); + $tmpDateEnd = date_create(date('2024-01-06')); + + $datelength = new DateTime($servicelength); + $diff = $datelength->diff($finishTime); + + //max time for start + $maxTime = $diff->h.':'.$diff->i.':00'; + $hours = (intval($diff->h)-10)*4+1; + $mins = floor(intval($diff->i) / 15); + $loopSteps = intval($hours) + intval($mins); + + for($periodIndex = 1; $periodIndex <= $loopSteps; $periodIndex++){ + $minutes_to_add_start = $periodIndex*15; + $minutes_to_add_end = ($periodIndex+1)*15; + $startTime = new DateTime($selectedDate.' 09:45'); + $endTime = new DateTime($selectedDate.' 09:45'); + $startTime->add(new DateInterval('PT' . $minutes_to_add_start . 'M')); + $endTime->add(new DateInterval('PT' . $minutes_to_add_end . 'M')); + $maxTimeObject = new DateTime($maxTime); + + $currentStartTime = $startTime->format('H:i:00'); + $currentEndTime = $endTime->format('H:i:00'); + + $query = $this->db->query('SELECT * FROM bookings WHERE booking_date = "'.$selectedDate.'" AND worker_id = "'.$worker_id.'" AND ( + (TIME(booking_start_time) >= CAST("'.$currentStartTime.'" AS TIME) AND TIME(booking_finish_time) <= CAST("'.$currentEndTime.'" AS TIME)) OR + + (TIME(booking_start_time) >= CAST("'.$currentStartTime.'" AS TIME) AND TIME(booking_start_time) <= CAST("'.$currentEndTime.'" AS TIME) AND TIME(booking_finish_time) >= CAST("'.$currentEndTime.'" AS TIME)) OR + + (TIME(booking_start_time) <= CAST("'.$currentStartTime.'" AS TIME) AND TIME(booking_finish_time) >= CAST("'.$currentEndTime.'" AS TIME) + AND TIME(booking_start_time) <= CAST("'.$currentStartTime.'" AS TIME)) OR + + (TIME(booking_start_time) <= CAST("'.$currentStartTime.'" AS TIME) AND TIME(booking_finish_time) <= CAST("'.$currentEndTime.'" AS TIME) + AND TIME(booking_finish_time) >= CAST("'.$currentStartTime.'" AS TIME)) OR + + (TIME(booking_start_time) <= CAST("'.$currentStartTime.'" AS TIME) AND TIME(booking_finish_time) >= CAST("'.$currentEndTime.'" AS TIME)) + ); + '); + + $now = strtotime(date('H:i:s')) + 60*60; + $timezone = 'Europe/Budapest'; + $todayStartTime = strtotime($currentStartTime.' '.$timezone); + $minDiff = ($todayStartTime - $now) / 60; + + if($dateDiff->format("%R%a") == 0 && $minDiff > 0){ + if($query->num_rows() == 0){ + $availableTimeArray[] = $currentStartTime; + } + } + elseif($dateDiff->format("%R%a") >= 0 && ($selectedDay < $tmpDateStart || $selectedDay > $tmpDateEnd) && $dateDiff->format("%R%a") != 0){ + if($query->num_rows() == 0){ + $availableTimeArray[] = $currentStartTime; + } + + } + + } + + return $availableTimeArray; + + + } + + public function createBooking($bookingArray){ + $this->load->database(); + $query = $this->db->query("INSERT INTO bookings ( + guest_name, + guest_email, + guest_phone, + worker_id, + booking_date, + booking_start_time, + booking_finish_time, + service_ids, + guest_confirmed, + guest_confirm_code + ) VALUES( + '".$bookingArray['guest_name']."', + '".$bookingArray['guest_email']."', + '".$bookingArray['guest_phone']."', + '".$bookingArray['worker_id']."', + '".$bookingArray['booking_date']."', + '".$bookingArray['booking_start_time']."', + '".$bookingArray['booking_finish_time']."', + '".$bookingArray['service_ids']."', + '".$bookingArray['guest_confirmed']."', + '".$bookingArray['guest_confirm_code']."' + );"); + } + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +} + +?> \ No newline at end of file diff --git a/application/models_20240401/Service_model-20231214.php b/application/models_20240401/Service_model-20231214.php new file mode 100755 index 0000000..0bee94f --- /dev/null +++ b/application/models_20240401/Service_model-20231214.php @@ -0,0 +1,321 @@ +load->database(); + $query = $this->db->query('INSERT INTO services ( + service_type, + service_category, + service_name, + service_description, + service_price, + service_time, + service_note + ) VALUES( + "'.$serviceArray['service_type'].'", + "'.$serviceArray['service_category'].'", + "'.$serviceArray['service_name'].'", + "'.$serviceArray['service_description'].'", + "'.$serviceArray['service_price'].'", + "'.$serviceArray['service_time'].'", + "'.$serviceArray['service_note'].'" + );'); + } + + public function updateService($service_id, $serviceArray){ + $this->load->database(); + + foreach($serviceArray as $propertyKey => $propertyValue){ + $query = $this->db->query('UPDATE users SET '.$propertyKey.' = "'.$propertyValue.'" WHERE service_id = "'.$service_id.'";'); + } + } + + public function getAllServiceByServiceType($service_type, $lang){ + $this->load->database(); + $query = $this->db->query('SELECT * FROM services WHERE service_type = "'.$service_type.'" ORDER BY service_id ASC;'); + $serviceArray = array(); + if($query->num_rows() > 0){ + foreach($query->result() as $resultItem){ + + $service_category = ''; + $service_name = ''; + $service_description = ''; + + switch($lang){ + case 'no': + $service_category = $resultItem->service_category_no; + $service_name = $resultItem->service_name_no; + $service_description = $resultItem->service_description_no; + break; + case 'en': + $service_category = $resultItem->service_category_en; + $service_name = $resultItem->service_name_en; + $service_description = $resultItem->service_description_en; + break; + case 'hu': + $service_category = $resultItem->service_category_hu; + $service_name = $resultItem->service_name_hu; + $service_description = $resultItem->service_description_hu; + break; + } + + $resultItemTmp = array( + 'service_id' => $resultItem->service_id, + 'service_type' => $resultItem->service_type, + 'service_category' => $service_category, + 'service_name' => $service_name, + 'service_description' => $service_description, + 'service_price' => $resultItem->service_price, + 'service_time' => $resultItem->service_time + ); + + $serviceArray[] = (object)$resultItemTmp; + } + } + return $serviceArray; + } + + public function getServiceById($service_id){ + $this->load->database(); + $query = $this->db->query('SELECT * FROM services WHERE service_id = "'.$service_id.'" LIMIT 1;'); + if($query->num_rows() > 0){ + return $query->result()[0]; + } + else{ + return 0; + } + } + + public function getAllWorkers(){ + $this->load->database(); + $query = $this->db->query('SELECT * FROM workers ORDER BY worker_name ASC;'); + return $query->result(); + } + + public function getWorkerById($worker_id){ + $this->load->database(); + $query = $this->db->query('SELECT * FROM workers WHERE worker_id = "'.$worker_id.'" LIMIT 1;'); + if($query->num_rows() > 0){ + return $query->result()[0]; + } + else{ + return 0; + } + } + + public function getAvailableTimes($worker_id, $selectedDate, $servicelength){ + $this->load->database(); + $service_length_time = strtotime($servicelength); + $availableTimeArray = array(); + $selectedDayName = date('D', strtotime($selectedDate)); + $dayStartTime = new DateTime($selectedDate.' 10:00'); + $finishTime = new DateTime($selectedDate.' 18:00'); + if($selectedDayName == 'Sun'){ + return array(); + } + elseif($selectedDayName == 'Sat'){ + $finishTime = new DateTime($selectedDate.' 16:00'); + } + else{ + //finish time - selected service length + $finishTime = new DateTime($selectedDate.' 18:00'); + + } + + $today=date_create(date('Y-m-d')); + $selectedDay=date_create($selectedDate); + $dateDiff=date_diff($today,$selectedDay); + + $tmpDateStart = date_create(date('2023-12-22')); + $tmpDateEnd = date_create(date('2024-01-06')); + + $datelength = new DateTime($servicelength); + $diff = $datelength->diff($finishTime); + + //max time for start + $maxTime = $diff->h.':'.$diff->i.':00'; + $hours = (intval($diff->h)-10)*4+1; + $mins = floor(intval($diff->i) / 15); + $loopSteps = intval($hours) + intval($mins); + + for($periodIndex = 1; $periodIndex <= $loopSteps; $periodIndex++){ + $minutes_to_add_start = $periodIndex*15; + $minutes_to_add_end = ($periodIndex+1)*15; + $startTime = new DateTime($selectedDate.' 09:45'); + $endTime = new DateTime($selectedDate.' 09:45'); + $startTime->add(new DateInterval('PT' . $minutes_to_add_start . 'M')); + $endTime->add(new DateInterval('PT' . $minutes_to_add_end . 'M')); + $maxTimeObject = new DateTime($maxTime); + + $currentStartTime = $startTime->format('H:i:00'); + $currentEndTime = $endTime->format('H:i:00'); + + $query = $this->db->query('SELECT * FROM bookings WHERE booking_date = "'.$selectedDate.'" AND worker_id = "'.$worker_id.'" AND ( + (TIME(booking_start_time) >= CAST("'.$currentStartTime.'" AS TIME) AND TIME(booking_finish_time) <= CAST("'.$currentEndTime.'" AS TIME)) OR + + (TIME(booking_start_time) >= CAST("'.$currentStartTime.'" AS TIME) AND TIME(booking_start_time) <= CAST("'.$currentEndTime.'" AS TIME) AND TIME(booking_finish_time) >= CAST("'.$currentEndTime.'" AS TIME)) OR + + (TIME(booking_start_time) <= CAST("'.$currentStartTime.'" AS TIME) AND TIME(booking_finish_time) >= CAST("'.$currentEndTime.'" AS TIME) + AND TIME(booking_start_time) <= CAST("'.$currentStartTime.'" AS TIME)) OR + + (TIME(booking_start_time) <= CAST("'.$currentStartTime.'" AS TIME) AND TIME(booking_finish_time) <= CAST("'.$currentEndTime.'" AS TIME) + AND TIME(booking_finish_time) >= CAST("'.$currentStartTime.'" AS TIME)) OR + + (TIME(booking_start_time) <= CAST("'.$currentStartTime.'" AS TIME) AND TIME(booking_finish_time) >= CAST("'.$currentEndTime.'" AS TIME)) + ); + '); + + if($dateDiff->format("%R%a") >= 0 && ($selectedDay < $tmpDateStart || $selectedDay > $tmpDateEnd) ){ + if($query->num_rows() == 0){ + $availableTimeArray[] = $currentStartTime; + } + + } + + } + + return $availableTimeArray; + + + } + + public function createBooking($bookingArray){ + $this->load->database(); + $query = $this->db->query("INSERT INTO bookings ( + guest_name, + guest_email, + guest_phone, + worker_id, + booking_date, + booking_start_time, + booking_finish_time, + service_ids, + guest_confirmed, + guest_confirm_code + ) VALUES( + '".$bookingArray['guest_name']."', + '".$bookingArray['guest_email']."', + '".$bookingArray['guest_phone']."', + '".$bookingArray['worker_id']."', + '".$bookingArray['booking_date']."', + '".$bookingArray['booking_start_time']."', + '".$bookingArray['booking_finish_time']."', + '".$bookingArray['service_ids']."', + '".$bookingArray['guest_confirmed']."', + '".$bookingArray['guest_confirm_code']."' + );"); + } + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +} + +?> \ No newline at end of file diff --git a/application/models_20240401/Service_model-20240301.php b/application/models_20240401/Service_model-20240301.php new file mode 100755 index 0000000..480fbdf --- /dev/null +++ b/application/models_20240401/Service_model-20240301.php @@ -0,0 +1,356 @@ +load->database(); + $query = $this->db->query('INSERT INTO services ( + service_type, + service_category, + service_name, + service_description, + service_price, + service_time, + service_note + ) VALUES( + "'.$serviceArray['service_type'].'", + "'.$serviceArray['service_category'].'", + "'.$serviceArray['service_name'].'", + "'.$serviceArray['service_description'].'", + "'.$serviceArray['service_price'].'", + "'.$serviceArray['service_time'].'", + "'.$serviceArray['service_note'].'" + );'); + } + + public function updateService($service_id, $serviceArray){ + $this->load->database(); + + foreach($serviceArray as $propertyKey => $propertyValue){ + $query = $this->db->query('UPDATE users SET '.$propertyKey.' = "'.$propertyValue.'" WHERE service_id = "'.$service_id.'";'); + } + } + + public function getAllServiceByServiceType($service_type, $lang){ + $this->load->database(); + $query = $this->db->query('SELECT * FROM services WHERE service_type = "'.$service_type.'" ORDER BY service_id ASC;'); + $serviceArray = array(); + if($query->num_rows() > 0){ + foreach($query->result() as $resultItem){ + + $service_category = ''; + $service_name = ''; + $service_description = ''; + + switch($lang){ + case 'no': + $service_category = $resultItem->service_category_no; + $service_name = $resultItem->service_name_no; + $service_description = $resultItem->service_description_no; + break; + case 'en': + $service_category = $resultItem->service_category_en; + $service_name = $resultItem->service_name_en; + $service_description = $resultItem->service_description_en; + break; + case 'hu': + $service_category = $resultItem->service_category_hu; + $service_name = $resultItem->service_name_hu; + $service_description = $resultItem->service_description_hu; + break; + } + + $resultItemTmp = array( + 'service_id' => $resultItem->service_id, + 'service_type' => $resultItem->service_type, + 'service_category' => $service_category, + 'service_name' => $service_name, + 'service_description' => $service_description, + 'service_price' => $resultItem->service_price, + 'service_time' => $resultItem->service_time + ); + + $serviceArray[] = (object)$resultItemTmp; + } + } + return $serviceArray; + } + + public function getServiceById($service_id){ + $this->load->database(); + $query = $this->db->query('SELECT * FROM services WHERE service_id = "'.$service_id.'" LIMIT 1;'); + if($query->num_rows() > 0){ + return $query->result()[0]; + } + else{ + return 0; + } + } + + public function getAllWorkers(){ + $this->load->database(); + $query = $this->db->query('SELECT * FROM workers ORDER BY worker_name ASC;'); + return $query->result(); + } + + public function getWorkerById($worker_id){ + $this->load->database(); + $query = $this->db->query('SELECT * FROM workers WHERE worker_id = "'.$worker_id.'" LIMIT 1;'); + if($query->num_rows() > 0){ + return $query->result()[0]; + } + else{ + return 0; + } + } + + public function getAvailableTimes($worker_id, $selectedDate, $servicelength){ + $this->load->database(); + $serviceLengthDateTime = new DateTime($selectedDate.' '.$servicelength); + $service_length_time = strtotime($servicelength); + $availableTimeArray = array(); + $selectedDayName = date('D', strtotime($selectedDate)); + $dayStartTime = new DateTime($selectedDate.' 10:00'); + $finishTime = new DateTime($selectedDate.' 18:00'); + if($selectedDayName == 'Sun'){ + return array(); + } + elseif($selectedDayName == 'Sat'){ + $finishTime = new DateTime($selectedDate.' 16:00'); + } + else{ + //finish time - selected service length + $finishTime = new DateTime($selectedDate.' 18:00'); + + } + + $today=date_create(date('Y-m-d')); + $selectedDay=date_create($selectedDate); + $dateDiff=date_diff($today,$selectedDay); + + $tmpDateStart = date_create(date('2024-02-29')); + $tmpDateEnd = date_create(date('2024-03-07')); + + $datelength = new DateTime($servicelength); + $diff = $datelength->diff($finishTime); + + //max time for start + $maxTime = $diff->h.':'.$diff->i.':00'; + $hours = (intval($diff->h)-10)*4+1; + $mins = floor(intval($diff->i) / 15); + $loopSteps = intval($hours) + intval($mins); + + for($periodIndex = 1; $periodIndex <= $loopSteps; $periodIndex++){ + $minutes_to_add_start = $periodIndex*15; + $minutes_to_add_end = ($periodIndex+1)*15; + $startTime = new DateTime($selectedDate.' 09:45'); + $endTime = new DateTime($selectedDate.' 09:45'); + $startTime->add(new DateInterval('PT' . $minutes_to_add_start . 'M')); + $endTime->add(new DateInterval('PT' . $minutes_to_add_end . 'M')); + $maxTimeObject = new DateTime($maxTime); + + $tz = new DateTimeZone('Europe/Budapest'); + $addStartTimeAndLength = new DateTime($selectedDate.' '.$startTime->format('H:i:00'), $tz); + $addStartTimeAndLength->add(new DateInterval('PT' . intval($serviceLengthDateTime->format('H')) . 'H')); + $addStartTimeAndLength->add(new DateInterval('PT' . intval($serviceLengthDateTime->format('i')) . 'M')); + + $currentStartTime = $startTime->format('H:i:00'); + $currentEndTime = $endTime->format('H:i:00'); + + + + /* + echo '<< '; + print_r($serviceLengthDateTime->format('H:i:00')); + echo ' / '; + print_r($currentStartTime); + echo ' / '; + print_r($addStartTimeAndLength->format('H:i:00')); + echo ' >>'; + */ + $query = $this->db->query('SELECT * FROM bookings WHERE booking_date = "'.$selectedDate.'" AND worker_id = "'.$worker_id.'" AND ( + /*start later and finish before*/ + (TIME(booking_start_time) >= CAST("'.$currentStartTime.'" AS TIME) AND TIME(booking_finish_time) <= CAST("'.$currentEndTime.'" AS TIME)) OR + + /*check if not end service until next booking*/ + (TIME(booking_start_time) <= CAST("'.$addStartTimeAndLength->format('H:i:00').'" AS TIME) AND TIME(booking_finish_time) >= CAST("'.$currentEndTime.'" AS TIME)) OR + + /*start later and finish later*/ + (TIME(booking_start_time) >= CAST("'.$currentStartTime.'" AS TIME) AND TIME(booking_start_time) <= CAST("'.$currentEndTime.'" AS TIME) AND TIME(booking_finish_time) >= CAST("'.$currentEndTime.'" AS TIME)) OR + + /*start before and finish before*/ + (TIME(booking_start_time) <= CAST("'.$currentStartTime.'" AS TIME) AND TIME(booking_finish_time) >= CAST("'.$currentEndTime.'" AS TIME) + AND TIME(booking_start_time) <= CAST("'.$currentStartTime.'" AS TIME)) OR + + /**/ + (TIME(booking_start_time) <= CAST("'.$currentStartTime.'" AS TIME) AND TIME(booking_finish_time) <= CAST("'.$currentEndTime.'" AS TIME) + AND TIME(booking_finish_time) >= CAST("'.$currentStartTime.'" AS TIME)) OR + + /**/ + (TIME(booking_start_time) <= CAST("'.$currentStartTime.'" AS TIME) AND TIME(booking_finish_time) >= CAST("'.$currentEndTime.'" AS TIME)) + ); + '); + + $now = strtotime(date('H:i:s')) + 60*60; + $timezone = 'Europe/Budapest'; + $todayStartTime = strtotime($currentStartTime.' '.$timezone); + $minDiff = ($todayStartTime - $now) / 60; + + if($dateDiff->format("%R%a") == 0 && $minDiff > 0){ + if($query->num_rows() == 0){ + $availableTimeArray[] = $currentStartTime; + } + } + elseif($dateDiff->format("%R%a") >= 0 && ($selectedDay < $tmpDateStart || $selectedDay > $tmpDateEnd) && $dateDiff->format("%R%a") != 0){ + if($query->num_rows() == 0){ + $availableTimeArray[] = $currentStartTime; + } + + } + + } + + return $availableTimeArray; + + + } + + public function createBooking($bookingArray){ + $this->load->database(); + $query = $this->db->query("INSERT INTO bookings ( + guest_name, + guest_email, + guest_phone, + worker_id, + booking_date, + booking_start_time, + booking_finish_time, + service_ids, + guest_confirmed, + guest_confirm_code + ) VALUES( + '".$bookingArray['guest_name']."', + '".$bookingArray['guest_email']."', + '".$bookingArray['guest_phone']."', + '".$bookingArray['worker_id']."', + '".$bookingArray['booking_date']."', + '".$bookingArray['booking_start_time']."', + '".$bookingArray['booking_finish_time']."', + '".$bookingArray['service_ids']."', + '".$bookingArray['guest_confirmed']."', + '".$bookingArray['guest_confirm_code']."' + );"); + } + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +} + +?> \ No newline at end of file diff --git a/application/models_20240401/Service_model.php b/application/models_20240401/Service_model.php new file mode 100755 index 0000000..e702e66 --- /dev/null +++ b/application/models_20240401/Service_model.php @@ -0,0 +1,356 @@ +load->database(); + $query = $this->db->query('INSERT INTO services ( + service_type, + service_category, + service_name, + service_description, + service_price, + service_time, + service_note + ) VALUES( + "'.$serviceArray['service_type'].'", + "'.$serviceArray['service_category'].'", + "'.$serviceArray['service_name'].'", + "'.$serviceArray['service_description'].'", + "'.$serviceArray['service_price'].'", + "'.$serviceArray['service_time'].'", + "'.$serviceArray['service_note'].'" + );'); + } + + public function updateService($service_id, $serviceArray){ + $this->load->database(); + + foreach($serviceArray as $propertyKey => $propertyValue){ + $query = $this->db->query('UPDATE users SET '.$propertyKey.' = "'.$propertyValue.'" WHERE service_id = "'.$service_id.'";'); + } + } + + public function getAllServiceByServiceType($service_type, $lang){ + $this->load->database(); + $query = $this->db->query('SELECT * FROM services WHERE service_type = "'.$service_type.'" ORDER BY service_id ASC;'); + $serviceArray = array(); + if($query->num_rows() > 0){ + foreach($query->result() as $resultItem){ + + $service_category = ''; + $service_name = ''; + $service_description = ''; + + switch($lang){ + case 'no': + $service_category = $resultItem->service_category_no; + $service_name = $resultItem->service_name_no; + $service_description = $resultItem->service_description_no; + break; + case 'en': + $service_category = $resultItem->service_category_en; + $service_name = $resultItem->service_name_en; + $service_description = $resultItem->service_description_en; + break; + case 'hu': + $service_category = $resultItem->service_category_hu; + $service_name = $resultItem->service_name_hu; + $service_description = $resultItem->service_description_hu; + break; + } + + $resultItemTmp = array( + 'service_id' => $resultItem->service_id, + 'service_type' => $resultItem->service_type, + 'service_category' => $service_category, + 'service_name' => $service_name, + 'service_description' => $service_description, + 'service_price' => $resultItem->service_price, + 'service_time' => $resultItem->service_time + ); + + $serviceArray[] = (object)$resultItemTmp; + } + } + return $serviceArray; + } + + public function getServiceById($service_id){ + $this->load->database(); + $query = $this->db->query('SELECT * FROM services WHERE service_id = "'.$service_id.'" LIMIT 1;'); + if($query->num_rows() > 0){ + return $query->result()[0]; + } + else{ + return 0; + } + } + + public function getAllWorkers(){ + $this->load->database(); + $query = $this->db->query('SELECT * FROM workers ORDER BY worker_name ASC;'); + return $query->result(); + } + + public function getWorkerById($worker_id){ + $this->load->database(); + $query = $this->db->query('SELECT * FROM workers WHERE worker_id = "'.$worker_id.'" LIMIT 1;'); + if($query->num_rows() > 0){ + return $query->result()[0]; + } + else{ + return 0; + } + } + + public function getAvailableTimes($worker_id, $selectedDate, $servicelength){ + $this->load->database(); + $serviceLengthDateTime = new DateTime($selectedDate.' '.$servicelength); + $service_length_time = strtotime($servicelength); + $availableTimeArray = array(); + $selectedDayName = date('D', strtotime($selectedDate)); + $dayStartTime = new DateTime($selectedDate.' 10:00'); + $finishTime = new DateTime($selectedDate.' 18:00'); + if($selectedDayName == 'Sun'){ + return array(); + } + elseif($selectedDayName == 'Sat'){ + $finishTime = new DateTime($selectedDate.' 16:00'); + } + else{ + //finish time - selected service length + $finishTime = new DateTime($selectedDate.' 18:00'); + + } + + $today=date_create(date('Y-m-d')); + $selectedDay=date_create($selectedDate); + $dateDiff=date_diff($today,$selectedDay); + + $tmpDateStart = date_create(date('2024-03-01')); + $tmpDateEnd = date_create(date('2024-03-07')); + + $datelength = new DateTime($servicelength); + $diff = $datelength->diff($finishTime); + + //max time for start + $maxTime = $diff->h.':'.$diff->i.':00'; + $hours = (intval($diff->h)-10)*4+1; + $mins = floor(intval($diff->i) / 15); + $loopSteps = intval($hours) + intval($mins); + + for($periodIndex = 1; $periodIndex <= $loopSteps; $periodIndex++){ + $minutes_to_add_start = $periodIndex*15; + $minutes_to_add_end = ($periodIndex+1)*15; + $startTime = new DateTime($selectedDate.' 09:45'); + $endTime = new DateTime($selectedDate.' 09:45'); + $startTime->add(new DateInterval('PT' . $minutes_to_add_start . 'M')); + $endTime->add(new DateInterval('PT' . $minutes_to_add_end . 'M')); + $maxTimeObject = new DateTime($maxTime); + + $tz = new DateTimeZone('Europe/Budapest'); + $addStartTimeAndLength = new DateTime($selectedDate.' '.$startTime->format('H:i:00'), $tz); + $addStartTimeAndLength->add(new DateInterval('PT' . intval($serviceLengthDateTime->format('H')) . 'H')); + $addStartTimeAndLength->add(new DateInterval('PT' . intval($serviceLengthDateTime->format('i')) . 'M')); + + $currentStartTime = $startTime->format('H:i:00'); + $currentEndTime = $endTime->format('H:i:00'); + + + + /* + echo '<< '; + print_r($serviceLengthDateTime->format('H:i:00')); + echo ' / '; + print_r($currentStartTime); + echo ' / '; + print_r($addStartTimeAndLength->format('H:i:00')); + echo ' >>'; + */ + $query = $this->db->query('SELECT * FROM bookings WHERE booking_date = "'.$selectedDate.'" AND worker_id = "'.$worker_id.'" AND ( + /*start later and finish before*/ + (TIME(booking_start_time) >= CAST("'.$currentStartTime.'" AS TIME) AND TIME(booking_finish_time) <= CAST("'.$currentEndTime.'" AS TIME)) OR + + /*check if not end service until next booking*/ + (TIME(booking_start_time) <= CAST("'.$addStartTimeAndLength->format('H:i:00').'" AS TIME) AND TIME(booking_finish_time) >= CAST("'.$currentEndTime.'" AS TIME)) OR + + /*start later and finish later*/ + (TIME(booking_start_time) >= CAST("'.$currentStartTime.'" AS TIME) AND TIME(booking_start_time) <= CAST("'.$currentEndTime.'" AS TIME) AND TIME(booking_finish_time) >= CAST("'.$currentEndTime.'" AS TIME)) OR + + /*start before and finish before*/ + (TIME(booking_start_time) <= CAST("'.$currentStartTime.'" AS TIME) AND TIME(booking_finish_time) >= CAST("'.$currentEndTime.'" AS TIME) + AND TIME(booking_start_time) <= CAST("'.$currentStartTime.'" AS TIME)) OR + + /**/ + (TIME(booking_start_time) <= CAST("'.$currentStartTime.'" AS TIME) AND TIME(booking_finish_time) <= CAST("'.$currentEndTime.'" AS TIME) + AND TIME(booking_finish_time) >= CAST("'.$currentStartTime.'" AS TIME)) OR + + /**/ + (TIME(booking_start_time) <= CAST("'.$currentStartTime.'" AS TIME) AND TIME(booking_finish_time) >= CAST("'.$currentEndTime.'" AS TIME)) + ); + '); + + $now = strtotime(date('H:i:s')) + 60*60; + $timezone = 'Europe/Budapest'; + $todayStartTime = strtotime($currentStartTime.' '.$timezone); + $minDiff = ($todayStartTime - $now) / 60; + + if($dateDiff->format("%R%a") == 0 && $minDiff > 0){ + if($query->num_rows() == 0){ + $availableTimeArray[] = $currentStartTime; + } + } + elseif($dateDiff->format("%R%a") >= 0 && ($selectedDay < $tmpDateStart || $selectedDay > $tmpDateEnd) && $dateDiff->format("%R%a") != 0){ + if($query->num_rows() == 0){ + $availableTimeArray[] = $currentStartTime; + } + + } + + } + + return $availableTimeArray; + + + } + + public function createBooking($bookingArray){ + $this->load->database(); + $query = $this->db->query("INSERT INTO bookings ( + guest_name, + guest_email, + guest_phone, + worker_id, + booking_date, + booking_start_time, + booking_finish_time, + service_ids, + guest_confirmed, + guest_confirm_code + ) VALUES( + '".$bookingArray['guest_name']."', + '".$bookingArray['guest_email']."', + '".$bookingArray['guest_phone']."', + '".$bookingArray['worker_id']."', + '".$bookingArray['booking_date']."', + '".$bookingArray['booking_start_time']."', + '".$bookingArray['booking_finish_time']."', + '".$bookingArray['service_ids']."', + '".$bookingArray['guest_confirmed']."', + '".$bookingArray['guest_confirm_code']."' + );"); + } + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +} + +?> \ No newline at end of file diff --git a/application/models_20240401/Service_model_20240206.php b/application/models_20240401/Service_model_20240206.php new file mode 100755 index 0000000..2aa8909 --- /dev/null +++ b/application/models_20240401/Service_model_20240206.php @@ -0,0 +1,356 @@ +load->database(); + $query = $this->db->query('INSERT INTO services ( + service_type, + service_category, + service_name, + service_description, + service_price, + service_time, + service_note + ) VALUES( + "'.$serviceArray['service_type'].'", + "'.$serviceArray['service_category'].'", + "'.$serviceArray['service_name'].'", + "'.$serviceArray['service_description'].'", + "'.$serviceArray['service_price'].'", + "'.$serviceArray['service_time'].'", + "'.$serviceArray['service_note'].'" + );'); + } + + public function updateService($service_id, $serviceArray){ + $this->load->database(); + + foreach($serviceArray as $propertyKey => $propertyValue){ + $query = $this->db->query('UPDATE users SET '.$propertyKey.' = "'.$propertyValue.'" WHERE service_id = "'.$service_id.'";'); + } + } + + public function getAllServiceByServiceType($service_type, $lang){ + $this->load->database(); + $query = $this->db->query('SELECT * FROM services WHERE service_type = "'.$service_type.'" ORDER BY service_id ASC;'); + $serviceArray = array(); + if($query->num_rows() > 0){ + foreach($query->result() as $resultItem){ + + $service_category = ''; + $service_name = ''; + $service_description = ''; + + switch($lang){ + case 'no': + $service_category = $resultItem->service_category_no; + $service_name = $resultItem->service_name_no; + $service_description = $resultItem->service_description_no; + break; + case 'en': + $service_category = $resultItem->service_category_en; + $service_name = $resultItem->service_name_en; + $service_description = $resultItem->service_description_en; + break; + case 'hu': + $service_category = $resultItem->service_category_hu; + $service_name = $resultItem->service_name_hu; + $service_description = $resultItem->service_description_hu; + break; + } + + $resultItemTmp = array( + 'service_id' => $resultItem->service_id, + 'service_type' => $resultItem->service_type, + 'service_category' => $service_category, + 'service_name' => $service_name, + 'service_description' => $service_description, + 'service_price' => $resultItem->service_price, + 'service_time' => $resultItem->service_time + ); + + $serviceArray[] = (object)$resultItemTmp; + } + } + return $serviceArray; + } + + public function getServiceById($service_id){ + $this->load->database(); + $query = $this->db->query('SELECT * FROM services WHERE service_id = "'.$service_id.'" LIMIT 1;'); + if($query->num_rows() > 0){ + return $query->result()[0]; + } + else{ + return 0; + } + } + + public function getAllWorkers(){ + $this->load->database(); + $query = $this->db->query('SELECT * FROM workers ORDER BY worker_name ASC;'); + return $query->result(); + } + + public function getWorkerById($worker_id){ + $this->load->database(); + $query = $this->db->query('SELECT * FROM workers WHERE worker_id = "'.$worker_id.'" LIMIT 1;'); + if($query->num_rows() > 0){ + return $query->result()[0]; + } + else{ + return 0; + } + } + + public function getAvailableTimes($worker_id, $selectedDate, $servicelength){ + $this->load->database(); + $serviceLengthDateTime = new DateTime($selectedDate.' '.$servicelength); + $service_length_time = strtotime($servicelength); + $availableTimeArray = array(); + $selectedDayName = date('D', strtotime($selectedDate)); + $dayStartTime = new DateTime($selectedDate.' 10:00'); + $finishTime = new DateTime($selectedDate.' 18:00'); + if($selectedDayName == 'Sun'){ + return array(); + } + elseif($selectedDayName == 'Sat'){ + $finishTime = new DateTime($selectedDate.' 16:00'); + } + else{ + //finish time - selected service length + $finishTime = new DateTime($selectedDate.' 18:00'); + + } + + $today=date_create(date('Y-m-d')); + $selectedDay=date_create($selectedDate); + $dateDiff=date_diff($today,$selectedDay); + + $tmpDateStart = date_create(date('2023-12-22')); + $tmpDateEnd = date_create(date('2024-01-06')); + + $datelength = new DateTime($servicelength); + $diff = $datelength->diff($finishTime); + + //max time for start + $maxTime = $diff->h.':'.$diff->i.':00'; + $hours = (intval($diff->h)-10)*4+1; + $mins = floor(intval($diff->i) / 15); + $loopSteps = intval($hours) + intval($mins); + + for($periodIndex = 1; $periodIndex <= $loopSteps; $periodIndex++){ + $minutes_to_add_start = $periodIndex*15; + $minutes_to_add_end = ($periodIndex+1)*15; + $startTime = new DateTime($selectedDate.' 09:45'); + $endTime = new DateTime($selectedDate.' 09:45'); + $startTime->add(new DateInterval('PT' . $minutes_to_add_start . 'M')); + $endTime->add(new DateInterval('PT' . $minutes_to_add_end . 'M')); + $maxTimeObject = new DateTime($maxTime); + + $tz = new DateTimeZone('Europe/Budapest'); + $addStartTimeAndLength = new DateTime($selectedDate.' '.$startTime->format('H:i:00'), $tz); + $addStartTimeAndLength->add(new DateInterval('PT' . intval($serviceLengthDateTime->format('H')) . 'H')); + $addStartTimeAndLength->add(new DateInterval('PT' . intval($serviceLengthDateTime->format('i')) . 'M')); + + $currentStartTime = $startTime->format('H:i:00'); + $currentEndTime = $endTime->format('H:i:00'); + + + + /* + echo '<< '; + print_r($serviceLengthDateTime->format('H:i:00')); + echo ' / '; + print_r($currentStartTime); + echo ' / '; + print_r($addStartTimeAndLength->format('H:i:00')); + echo ' >>'; + */ + $query = $this->db->query('SELECT * FROM bookings WHERE booking_date = "'.$selectedDate.'" AND worker_id = "'.$worker_id.'" AND ( + /*start later and finish before*/ + (TIME(booking_start_time) >= CAST("'.$currentStartTime.'" AS TIME) AND TIME(booking_finish_time) <= CAST("'.$currentEndTime.'" AS TIME)) OR + + /*check if not end service until next booking*/ + (TIME(booking_start_time) <= CAST("'.$addStartTimeAndLength->format('H:i:00').'" AS TIME) AND TIME(booking_finish_time) >= CAST("'.$currentEndTime.'" AS TIME)) OR + + /*start later and finish later*/ + (TIME(booking_start_time) >= CAST("'.$currentStartTime.'" AS TIME) AND TIME(booking_start_time) <= CAST("'.$currentEndTime.'" AS TIME) AND TIME(booking_finish_time) >= CAST("'.$currentEndTime.'" AS TIME)) OR + + /*start before and finish before*/ + (TIME(booking_start_time) <= CAST("'.$currentStartTime.'" AS TIME) AND TIME(booking_finish_time) >= CAST("'.$currentEndTime.'" AS TIME) + AND TIME(booking_start_time) <= CAST("'.$currentStartTime.'" AS TIME)) OR + + /**/ + (TIME(booking_start_time) <= CAST("'.$currentStartTime.'" AS TIME) AND TIME(booking_finish_time) <= CAST("'.$currentEndTime.'" AS TIME) + AND TIME(booking_finish_time) >= CAST("'.$currentStartTime.'" AS TIME)) OR + + /**/ + (TIME(booking_start_time) <= CAST("'.$currentStartTime.'" AS TIME) AND TIME(booking_finish_time) >= CAST("'.$currentEndTime.'" AS TIME)) + ); + '); + + $now = strtotime(date('H:i:s')) + 60*60; + $timezone = 'Europe/Budapest'; + $todayStartTime = strtotime($currentStartTime.' '.$timezone); + $minDiff = ($todayStartTime - $now) / 60; + + if($dateDiff->format("%R%a") == 0 && $minDiff > 0){ + if($query->num_rows() == 0){ + $availableTimeArray[] = $currentStartTime; + } + } + elseif($dateDiff->format("%R%a") >= 0 && ($selectedDay < $tmpDateStart || $selectedDay > $tmpDateEnd) && $dateDiff->format("%R%a") != 0){ + if($query->num_rows() == 0){ + $availableTimeArray[] = $currentStartTime; + } + + } + + } + + return $availableTimeArray; + + + } + + public function createBooking($bookingArray){ + $this->load->database(); + $query = $this->db->query("INSERT INTO bookings ( + guest_name, + guest_email, + guest_phone, + worker_id, + booking_date, + booking_start_time, + booking_finish_time, + service_ids, + guest_confirmed, + guest_confirm_code + ) VALUES( + '".$bookingArray['guest_name']."', + '".$bookingArray['guest_email']."', + '".$bookingArray['guest_phone']."', + '".$bookingArray['worker_id']."', + '".$bookingArray['booking_date']."', + '".$bookingArray['booking_start_time']."', + '".$bookingArray['booking_finish_time']."', + '".$bookingArray['service_ids']."', + '".$bookingArray['guest_confirmed']."', + '".$bookingArray['guest_confirm_code']."' + );"); + } + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +} + +?> \ No newline at end of file diff --git a/application/models_20240401/Service_model_20240212.php b/application/models_20240401/Service_model_20240212.php new file mode 100755 index 0000000..2aa8909 --- /dev/null +++ b/application/models_20240401/Service_model_20240212.php @@ -0,0 +1,356 @@ +load->database(); + $query = $this->db->query('INSERT INTO services ( + service_type, + service_category, + service_name, + service_description, + service_price, + service_time, + service_note + ) VALUES( + "'.$serviceArray['service_type'].'", + "'.$serviceArray['service_category'].'", + "'.$serviceArray['service_name'].'", + "'.$serviceArray['service_description'].'", + "'.$serviceArray['service_price'].'", + "'.$serviceArray['service_time'].'", + "'.$serviceArray['service_note'].'" + );'); + } + + public function updateService($service_id, $serviceArray){ + $this->load->database(); + + foreach($serviceArray as $propertyKey => $propertyValue){ + $query = $this->db->query('UPDATE users SET '.$propertyKey.' = "'.$propertyValue.'" WHERE service_id = "'.$service_id.'";'); + } + } + + public function getAllServiceByServiceType($service_type, $lang){ + $this->load->database(); + $query = $this->db->query('SELECT * FROM services WHERE service_type = "'.$service_type.'" ORDER BY service_id ASC;'); + $serviceArray = array(); + if($query->num_rows() > 0){ + foreach($query->result() as $resultItem){ + + $service_category = ''; + $service_name = ''; + $service_description = ''; + + switch($lang){ + case 'no': + $service_category = $resultItem->service_category_no; + $service_name = $resultItem->service_name_no; + $service_description = $resultItem->service_description_no; + break; + case 'en': + $service_category = $resultItem->service_category_en; + $service_name = $resultItem->service_name_en; + $service_description = $resultItem->service_description_en; + break; + case 'hu': + $service_category = $resultItem->service_category_hu; + $service_name = $resultItem->service_name_hu; + $service_description = $resultItem->service_description_hu; + break; + } + + $resultItemTmp = array( + 'service_id' => $resultItem->service_id, + 'service_type' => $resultItem->service_type, + 'service_category' => $service_category, + 'service_name' => $service_name, + 'service_description' => $service_description, + 'service_price' => $resultItem->service_price, + 'service_time' => $resultItem->service_time + ); + + $serviceArray[] = (object)$resultItemTmp; + } + } + return $serviceArray; + } + + public function getServiceById($service_id){ + $this->load->database(); + $query = $this->db->query('SELECT * FROM services WHERE service_id = "'.$service_id.'" LIMIT 1;'); + if($query->num_rows() > 0){ + return $query->result()[0]; + } + else{ + return 0; + } + } + + public function getAllWorkers(){ + $this->load->database(); + $query = $this->db->query('SELECT * FROM workers ORDER BY worker_name ASC;'); + return $query->result(); + } + + public function getWorkerById($worker_id){ + $this->load->database(); + $query = $this->db->query('SELECT * FROM workers WHERE worker_id = "'.$worker_id.'" LIMIT 1;'); + if($query->num_rows() > 0){ + return $query->result()[0]; + } + else{ + return 0; + } + } + + public function getAvailableTimes($worker_id, $selectedDate, $servicelength){ + $this->load->database(); + $serviceLengthDateTime = new DateTime($selectedDate.' '.$servicelength); + $service_length_time = strtotime($servicelength); + $availableTimeArray = array(); + $selectedDayName = date('D', strtotime($selectedDate)); + $dayStartTime = new DateTime($selectedDate.' 10:00'); + $finishTime = new DateTime($selectedDate.' 18:00'); + if($selectedDayName == 'Sun'){ + return array(); + } + elseif($selectedDayName == 'Sat'){ + $finishTime = new DateTime($selectedDate.' 16:00'); + } + else{ + //finish time - selected service length + $finishTime = new DateTime($selectedDate.' 18:00'); + + } + + $today=date_create(date('Y-m-d')); + $selectedDay=date_create($selectedDate); + $dateDiff=date_diff($today,$selectedDay); + + $tmpDateStart = date_create(date('2023-12-22')); + $tmpDateEnd = date_create(date('2024-01-06')); + + $datelength = new DateTime($servicelength); + $diff = $datelength->diff($finishTime); + + //max time for start + $maxTime = $diff->h.':'.$diff->i.':00'; + $hours = (intval($diff->h)-10)*4+1; + $mins = floor(intval($diff->i) / 15); + $loopSteps = intval($hours) + intval($mins); + + for($periodIndex = 1; $periodIndex <= $loopSteps; $periodIndex++){ + $minutes_to_add_start = $periodIndex*15; + $minutes_to_add_end = ($periodIndex+1)*15; + $startTime = new DateTime($selectedDate.' 09:45'); + $endTime = new DateTime($selectedDate.' 09:45'); + $startTime->add(new DateInterval('PT' . $minutes_to_add_start . 'M')); + $endTime->add(new DateInterval('PT' . $minutes_to_add_end . 'M')); + $maxTimeObject = new DateTime($maxTime); + + $tz = new DateTimeZone('Europe/Budapest'); + $addStartTimeAndLength = new DateTime($selectedDate.' '.$startTime->format('H:i:00'), $tz); + $addStartTimeAndLength->add(new DateInterval('PT' . intval($serviceLengthDateTime->format('H')) . 'H')); + $addStartTimeAndLength->add(new DateInterval('PT' . intval($serviceLengthDateTime->format('i')) . 'M')); + + $currentStartTime = $startTime->format('H:i:00'); + $currentEndTime = $endTime->format('H:i:00'); + + + + /* + echo '<< '; + print_r($serviceLengthDateTime->format('H:i:00')); + echo ' / '; + print_r($currentStartTime); + echo ' / '; + print_r($addStartTimeAndLength->format('H:i:00')); + echo ' >>'; + */ + $query = $this->db->query('SELECT * FROM bookings WHERE booking_date = "'.$selectedDate.'" AND worker_id = "'.$worker_id.'" AND ( + /*start later and finish before*/ + (TIME(booking_start_time) >= CAST("'.$currentStartTime.'" AS TIME) AND TIME(booking_finish_time) <= CAST("'.$currentEndTime.'" AS TIME)) OR + + /*check if not end service until next booking*/ + (TIME(booking_start_time) <= CAST("'.$addStartTimeAndLength->format('H:i:00').'" AS TIME) AND TIME(booking_finish_time) >= CAST("'.$currentEndTime.'" AS TIME)) OR + + /*start later and finish later*/ + (TIME(booking_start_time) >= CAST("'.$currentStartTime.'" AS TIME) AND TIME(booking_start_time) <= CAST("'.$currentEndTime.'" AS TIME) AND TIME(booking_finish_time) >= CAST("'.$currentEndTime.'" AS TIME)) OR + + /*start before and finish before*/ + (TIME(booking_start_time) <= CAST("'.$currentStartTime.'" AS TIME) AND TIME(booking_finish_time) >= CAST("'.$currentEndTime.'" AS TIME) + AND TIME(booking_start_time) <= CAST("'.$currentStartTime.'" AS TIME)) OR + + /**/ + (TIME(booking_start_time) <= CAST("'.$currentStartTime.'" AS TIME) AND TIME(booking_finish_time) <= CAST("'.$currentEndTime.'" AS TIME) + AND TIME(booking_finish_time) >= CAST("'.$currentStartTime.'" AS TIME)) OR + + /**/ + (TIME(booking_start_time) <= CAST("'.$currentStartTime.'" AS TIME) AND TIME(booking_finish_time) >= CAST("'.$currentEndTime.'" AS TIME)) + ); + '); + + $now = strtotime(date('H:i:s')) + 60*60; + $timezone = 'Europe/Budapest'; + $todayStartTime = strtotime($currentStartTime.' '.$timezone); + $minDiff = ($todayStartTime - $now) / 60; + + if($dateDiff->format("%R%a") == 0 && $minDiff > 0){ + if($query->num_rows() == 0){ + $availableTimeArray[] = $currentStartTime; + } + } + elseif($dateDiff->format("%R%a") >= 0 && ($selectedDay < $tmpDateStart || $selectedDay > $tmpDateEnd) && $dateDiff->format("%R%a") != 0){ + if($query->num_rows() == 0){ + $availableTimeArray[] = $currentStartTime; + } + + } + + } + + return $availableTimeArray; + + + } + + public function createBooking($bookingArray){ + $this->load->database(); + $query = $this->db->query("INSERT INTO bookings ( + guest_name, + guest_email, + guest_phone, + worker_id, + booking_date, + booking_start_time, + booking_finish_time, + service_ids, + guest_confirmed, + guest_confirm_code + ) VALUES( + '".$bookingArray['guest_name']."', + '".$bookingArray['guest_email']."', + '".$bookingArray['guest_phone']."', + '".$bookingArray['worker_id']."', + '".$bookingArray['booking_date']."', + '".$bookingArray['booking_start_time']."', + '".$bookingArray['booking_finish_time']."', + '".$bookingArray['service_ids']."', + '".$bookingArray['guest_confirmed']."', + '".$bookingArray['guest_confirm_code']."' + );"); + } + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +} + +?> \ No newline at end of file diff --git a/application/models_20240401/User_model.php b/application/models_20240401/User_model.php new file mode 100755 index 0000000..3bf83a0 --- /dev/null +++ b/application/models_20240401/User_model.php @@ -0,0 +1,182 @@ +load->database(); + $query = $this->db->query('SELECT * FROM users WHERE username = "'.$username.'" AND password = "'.hash('sha256', $password).'" AND is_enabled = 1 LIMIT 1'); + + if($query->num_rows() == 1){ + return 1; + } + else{ + return 0; + } + } + + public function getAllUser(){ + $this->load->database(); + $query = $this->db->query('SELECT * FROM users JOIN privilegies ON users.privilegy_group_id = privilegies.privilegy_group_id ORDER BY fullname ASC'); + $userResults = $query->result(); + + foreach($userResults as $userResultItem){ + if($userResultItem->profile_img_url == ''){ + $userResultItem->profile_img_url = base_url().'img/default_profile.jpg'; + } + } + return $userResults; + } + + public function getUserByUsername($username){ + $this->load->database(); + $query = $this->db->query('SELECT * FROM users JOIN privilegies ON users.privilegy_group_id = privilegies.privilegy_group_id WHERE username = "'.$username.'" LIMIT 1'); + if($query->num_rows() == 1){ + + if($query->result()[0]->profile_img_url == ''){ + $query->result()[0]->profile_img_url = base_url().'img/default_profile.jpg'; + } + return $query->result()[0]; + } + else{ + return 0; + } + } + + public function getUserById($userId){ + $this->load->database(); + $query = $this->db->query('SELECT * FROM users JOIN privilegies ON users.privilegy_group_id = privilegies.privilegy_group_id WHERE user_id = "'.$userId.'" LIMIT 1'); + if($query->num_rows() == 1){ + if($query->result()[0]->profile_img_url == ''){ + $query->result()[0]->profile_img_url = base_url().'img/default_profile.jpg'; + } + return $query->result()[0]; + } + else{ + return 0; + } + } + + public function deleteUser($userId){ + $this->load->database(); + $query = $this->db->query('DELETE FROM users WHERE user_id = "'.$userId.'";'); + } + + public function isUsernameAvailable($username){ + $this->load->database(); + $query = $this->db->query('SELECT * FROM users WHERE username = "'.$username.'";'); + if($query->num_rows() == 1){ + return 0; + } + else{ + return 1; + } + } + + public function updateUser($userId, $userArray){ + $this->load->database(); + + foreach($userArray as $propertyKey => $propertyValue){ + $query = $this->db->query('UPDATE users SET '.$propertyKey.' = "'.hash('sha256',$propertyValue).'" WHERE user_id = "'.$userId.'";'); + } + } + + public function addNewUser($userArray){ + $this->load->database(); + + if(!is_object($this->getUserByUsername($userArray['username']))){ + $query = $this->db->query('INSERT INTO users (username, password, fullname, privilegy_group_id, is_enabled, user_notes) VALUES("'.$userArray['username'].'", "'.hash('sha256', $userArray['password']).'", "'.$userArray['fullname'].'", "'.$userArray['privilegy_group_id'].'", "'.$userArray['is_enabled'].'", "'.$userArray['user_notes'].'");'); + return 1; + } + else{ + return 0; + } + + } + + + + + public function sendEmail($addressList, $lang, $subpage){ + // Import PHPMailer classes into the global namespace + // These must be at the top of your script, not inside a function + echo $lang; + if(!empty($addressList)){ + foreach($addressList as $addressListItem){ + // Instantiation and passing `true` enables exceptions + $mail = new PHPMailer(false); + $mail->SMTPDebug = false; + $mail->do_debug = 1; + try { + //Server settings + $mail->CharSet = 'UTF-8'; + //$mail->SMTPDebug = SMTP::DEBUG_SERVER; // Enable verbose debug output + $mail->isSMTP(); //Send using SMTP + $mail->Host = 'mail.absolutesolution.hu'; //Set the SMTP server to send through + $mail->SMTPAuth = true; //Enable SMTP authentication + $mail->Username = 'reservations@studiobeve.no'; //SMTP username + $mail->Password = 'StudioBeve-1234'; //SMTP password + $mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS; //Enable TLS encryption; `PHPMailer::ENCRYPTION_SMTPS` encouraged + $mail->Port = 465; //TCP port to connect to, use 465 for `PHPMailer::ENCRYPTION_SMTPS` above + + //Recipients + $mail->setFrom('reservations@studiobeve.no', '[studiobeve]'); + $mail->addAddress($addressListItem['addressee_email'], $addressListItem['addressee_name']); // Add a recipient + //$mail->addAddress('ellen@example.com'); // Name is optional + //$mail->addReplyTo('info@example.com', 'Information'); + $mail->addCC('evelin@studiobeve.no'); + //$mail->addBCC('bcc@example.com'); + + // Attachments + if(is_array($addressListItem['attachments'])){ + $attachments = $addressListItem['attachments']; + foreach($attachments as $attachmentsItem){ + $mail->addAttachment(getcwd().'/documents/'.$attachmentsItem); // Add attachments + } + } + //$mail->addAttachment('/tmp/image.jpg', 'new.jpg'); // Optional name + + // Content + $mail->isHTML(true); // Set email format to HTML + $mail->Subject = $addressListItem['subject']; + ob_start(); + $body = ob_get_clean(); + $body .= $addressListItem['content']; + + $mail->Body = $body; + //$mail->AltBody = strip_tags($answer_message); + + $mail->send(); + echo 'Üzenet elküldve'; + header('location:'.base_url().$lang.'/booking-finished/'.$subpage); + } catch (Exception $e) { + //header('location:'.base_url().'manage-applicants/?email-sent=false&error='.$mail->ErrorInfo); + echo "Üzenetküldési hiba. Mailer Error: {$mail->ErrorInfo}"; + } + + } + } + + + + } + + + + + + + + +} + +?> \ No newline at end of file diff --git a/application/models_20240401/index.html b/application/models_20240401/index.html new file mode 100755 index 0000000..b48b490 --- /dev/null +++ b/application/models_20240401/index.html @@ -0,0 +1,11 @@ + + + + 403 Forbidden + + + +

Directory access is forbidden.

+ + + diff --git a/application/third_party/index.html b/application/third_party/index.html new file mode 100755 index 0000000..b48b490 --- /dev/null +++ b/application/third_party/index.html @@ -0,0 +1,11 @@ + + + + 403 Forbidden + + + +

Directory access is forbidden.

+ + + diff --git a/application/views/admin/add-booking.php b/application/views/admin/add-booking.php new file mode 100755 index 0000000..ef3a4aa --- /dev/null +++ b/application/views/admin/add-booking.php @@ -0,0 +1,6 @@ + + diff --git a/application/views/admin/add-service-category.php b/application/views/admin/add-service-category.php new file mode 100755 index 0000000..9cde70e --- /dev/null +++ b/application/views/admin/add-service-category.php @@ -0,0 +1,6 @@ + + diff --git a/application/views/admin/add-service.php b/application/views/admin/add-service.php new file mode 100755 index 0000000..ca1cc5b --- /dev/null +++ b/application/views/admin/add-service.php @@ -0,0 +1,6 @@ + + diff --git a/application/views/admin/add-worker.php b/application/views/admin/add-worker.php new file mode 100755 index 0000000..772c159 --- /dev/null +++ b/application/views/admin/add-worker.php @@ -0,0 +1,6 @@ + + diff --git a/application/views/admin/booking-process.php b/application/views/admin/booking-process.php new file mode 100755 index 0000000..e69de29 diff --git a/application/views/admin/bookings.php b/application/views/admin/bookings.php new file mode 100755 index 0000000..782bffc --- /dev/null +++ b/application/views/admin/bookings.php @@ -0,0 +1,5 @@ + \ No newline at end of file diff --git a/application/views/admin/dashboard.php b/application/views/admin/dashboard.php new file mode 100755 index 0000000..a7eb825 --- /dev/null +++ b/application/views/admin/dashboard.php @@ -0,0 +1,6 @@ + + diff --git a/application/views/admin/includes/add-booking-form.php b/application/views/admin/includes/add-booking-form.php new file mode 100755 index 0000000..b6860c6 --- /dev/null +++ b/application/views/admin/includes/add-booking-form.php @@ -0,0 +1,195 @@ +
+
+
+ +
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + Mégsem +
+
+ +
+ + \ No newline at end of file diff --git a/application/views/admin/includes/add-service-category-form.php b/application/views/admin/includes/add-service-category-form.php new file mode 100755 index 0000000..ca11096 --- /dev/null +++ b/application/views/admin/includes/add-service-category-form.php @@ -0,0 +1,20 @@ +
+
+
+ +
+ + +
+
+ + +
+ +
+ + Mégsem +
+
+ +
diff --git a/application/views/admin/includes/add-service-form.php b/application/views/admin/includes/add-service-form.php new file mode 100755 index 0000000..4907fef --- /dev/null +++ b/application/views/admin/includes/add-service-form.php @@ -0,0 +1,82 @@ +
+
+
+ +
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+ +
+ + +
+
+ + Mégsem +
+
+ +
diff --git a/application/views/admin/includes/add-worker-form.php b/application/views/admin/includes/add-worker-form.php new file mode 100755 index 0000000..129e5e1 --- /dev/null +++ b/application/views/admin/includes/add-worker-form.php @@ -0,0 +1,57 @@ +
+
+
+ +
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+ +
+ + Mégsem +
+
+ +
diff --git a/application/views/admin/includes/bookings-form.php b/application/views/admin/includes/bookings-form.php new file mode 100755 index 0000000..40791cb --- /dev/null +++ b/application/views/admin/includes/bookings-form.php @@ -0,0 +1,94 @@ +
+
+ +
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + '; + echo ''; + echo ''; + } + ?> + +
#Vendég neveEmailTelefonDolgozóFoglalási dátumSzolg. kezdeteSzolg. végeSzolgáltatások
+ + | + #booking_id;?>guest_name;?>guest_email;?>guest_phone;?>worker_name;?>booking_date;?>booking_start_time;?>booking_finish_time;?>services)){ + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + foreach($resultItem->services as $serviceItem){ + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + } + echo '
TípusSzolgáltalás neveÁrIdőtartam
'.$serviceItem->service_type.''.$serviceItem->service_name.''.$serviceItem->service_price.''.$serviceItem->service_time.'
'; + } + + ?>
Nincs bejegyzett foglalás
+
+
+ + \ No newline at end of file diff --git a/application/views/admin/includes/dashboard-form.php b/application/views/admin/includes/dashboard-form.php new file mode 100755 index 0000000..9dbee28 --- /dev/null +++ b/application/views/admin/includes/dashboard-form.php @@ -0,0 +1,81 @@ +
+
+ + +
+
+
+ May +
+ +
<
+
+ 2020 + +
>
+
+
+
+ +
+
+
V
+
H
+
K
+
Sze
+
CS
+
P
+
Szo
+
+
+
+
+ +
+
MA
+
+
01:41:20
+
2022 - march - 03
+
+
+
+
+
+
+ + +
+ + \ No newline at end of file diff --git a/application/views/admin/includes/service-categories-form.php b/application/views/admin/includes/service-categories-form.php new file mode 100755 index 0000000..8e6e3fd --- /dev/null +++ b/application/views/admin/includes/service-categories-form.php @@ -0,0 +1,39 @@ +
+
+ +
+ + + + + + + + + + + + + + + '; + echo ''; + echo ''; + } + ?> + +
#Kategória slugKategória név
+ + | + #service_category_id;?>serv_cat_slug;?>serv_cat_name;?>
Nincs találat
+
+
\ No newline at end of file diff --git a/application/views/admin/includes/services-form.php b/application/views/admin/includes/services-form.php new file mode 100755 index 0000000..d7a5fc1 --- /dev/null +++ b/application/views/admin/includes/services-form.php @@ -0,0 +1,63 @@ +
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + '; + echo ''; + echo ''; + } + ?> + +
#TípusKategória (NO)Kategória (EN)Kategória (HU)Megnevezés (NO)Megnevezés (EN)Megnevezés (HU)Leírás (NO)Leírás (EN)Leírás (HU)ÁrIdőtartamKategóriaAktív
+ + | + #service_id;?>service_type;?>service_category_no;?>service_category_en;?>service_category_hu;?>service_name_no;?>service_name_en;?>service_name_hu;?>service_description_no;?>service_description_en;?>service_description_hu;?>service_price;?>service_time;?>serv_cat_name;?>is_enabled?'igen':'nem';?>
Nincs találat
+
+
\ No newline at end of file diff --git a/application/views/admin/includes/update-booking-form.php b/application/views/admin/includes/update-booking-form.php new file mode 100755 index 0000000..40f3932 --- /dev/null +++ b/application/views/admin/includes/update-booking-form.php @@ -0,0 +1,219 @@ +
+
+
+ + +
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + Mégsem +
+
+ +
+ + \ No newline at end of file diff --git a/application/views/admin/includes/update-service-category-form.php b/application/views/admin/includes/update-service-category-form.php new file mode 100755 index 0000000..87bb7f9 --- /dev/null +++ b/application/views/admin/includes/update-service-category-form.php @@ -0,0 +1,20 @@ +
+
+
+ +
+ + +
+
+ + +
+ +
+ + Mégsem +
+
+ +
diff --git a/application/views/admin/includes/update-service-form.php b/application/views/admin/includes/update-service-form.php new file mode 100755 index 0000000..9df60e7 --- /dev/null +++ b/application/views/admin/includes/update-service-form.php @@ -0,0 +1,81 @@ +
+
+
+ +
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + Mégsem +
+
+ +
diff --git a/application/views/admin/includes/update-worker-form.php b/application/views/admin/includes/update-worker-form.php new file mode 100755 index 0000000..51cbd8f --- /dev/null +++ b/application/views/admin/includes/update-worker-form.php @@ -0,0 +1,61 @@ +
+
+
+ +
+ + +
+
+ +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+ +
+ + +
+ +
+ + +
+
+ + Mégsem +
+
+ +
diff --git a/application/views/admin/includes/worker-schedule-overrides-form.php b/application/views/admin/includes/worker-schedule-overrides-form.php new file mode 100755 index 0000000..99641f0 --- /dev/null +++ b/application/views/admin/includes/worker-schedule-overrides-form.php @@ -0,0 +1,113 @@ + + +

Dolgozó munkaidő beállítása

+ + +
+ + +
+ + +

Jelenlegi beállítások

+ + + + + +
+ + +

Munkaidő beállítása

+ weekday] = $entry; + } + + for ($i = 0; $i < 7; $i++): + $start = isset($scheduleMap[$i]) ? $scheduleMap[$i]->start_time : ''; + $end = isset($scheduleMap[$i]) ? $scheduleMap[$i]->end_time : ''; + $checked = isset($scheduleMap[$i]) && $scheduleMap[$i]->is_alternate_week ? 'checked' : ''; + ?> +
+ + + +
+ > + +
+ + +
+ + + +
+ diff --git a/application/views/admin/includes/workers-form.php b/application/views/admin/includes/workers-form.php new file mode 100755 index 0000000..7eda0ad --- /dev/null +++ b/application/views/admin/includes/workers-form.php @@ -0,0 +1,49 @@ +
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + '; + echo ''; + echo ''; + } + ?> + +
#ProfilképNévLeírásBeautyBarberSzerviz kategóriaAktív
+ + | + #worker_id;?>worker_name;?>worker_info;?>is_beauty?'igen':'nem';?>is_barber?'igen':'nem';?>serv_cat_name;?>is_active?'igen':'nem';?>
Nincs találat
+
+
\ No newline at end of file diff --git a/application/views/admin/service-categories.php b/application/views/admin/service-categories.php new file mode 100755 index 0000000..241629b --- /dev/null +++ b/application/views/admin/service-categories.php @@ -0,0 +1,6 @@ + + diff --git a/application/views/admin/service-category-process.php b/application/views/admin/service-category-process.php new file mode 100755 index 0000000..e69de29 diff --git a/application/views/admin/service-process.php b/application/views/admin/service-process.php new file mode 100755 index 0000000..e69de29 diff --git a/application/views/admin/services.php b/application/views/admin/services.php new file mode 100755 index 0000000..7132e1e --- /dev/null +++ b/application/views/admin/services.php @@ -0,0 +1,6 @@ + + diff --git a/application/views/admin/update-booking.php b/application/views/admin/update-booking.php new file mode 100755 index 0000000..ef069ff --- /dev/null +++ b/application/views/admin/update-booking.php @@ -0,0 +1,5 @@ + diff --git a/application/views/admin/update-service-category.php b/application/views/admin/update-service-category.php new file mode 100755 index 0000000..20f036f --- /dev/null +++ b/application/views/admin/update-service-category.php @@ -0,0 +1,6 @@ + + diff --git a/application/views/admin/update-service.php b/application/views/admin/update-service.php new file mode 100755 index 0000000..14273dd --- /dev/null +++ b/application/views/admin/update-service.php @@ -0,0 +1,6 @@ + + diff --git a/application/views/admin/update-worker.php b/application/views/admin/update-worker.php new file mode 100755 index 0000000..f59dae8 --- /dev/null +++ b/application/views/admin/update-worker.php @@ -0,0 +1,6 @@ + + diff --git a/application/views/admin/users.php b/application/views/admin/users.php new file mode 100755 index 0000000..5709d86 --- /dev/null +++ b/application/views/admin/users.php @@ -0,0 +1,33 @@ +
+ +
+
+
+ +
+ + + + +
+
+ + +
\ No newline at end of file diff --git a/application/views/admin/worker-process.php b/application/views/admin/worker-process.php new file mode 100755 index 0000000..e69de29 diff --git a/application/views/admin/worker_schedule.php b/application/views/admin/worker_schedule.php new file mode 100755 index 0000000..f0d953e --- /dev/null +++ b/application/views/admin/worker_schedule.php @@ -0,0 +1,5 @@ + diff --git a/application/views/admin/workers.php b/application/views/admin/workers.php new file mode 100755 index 0000000..85d5917 --- /dev/null +++ b/application/views/admin/workers.php @@ -0,0 +1,6 @@ + + diff --git a/application/views/admin_20240401/add-service.php b/application/views/admin_20240401/add-service.php new file mode 100755 index 0000000..e69de29 diff --git a/application/views/admin_20240401/add-worker.php b/application/views/admin_20240401/add-worker.php new file mode 100755 index 0000000..e69de29 diff --git a/application/views/admin_20240401/create-user.php b/application/views/admin_20240401/create-user.php new file mode 100755 index 0000000..e69de29 diff --git a/application/views/admin_20240401/login.php b/application/views/admin_20240401/login.php new file mode 100755 index 0000000..e69de29 diff --git a/application/views/admin_20240401/service-process.php b/application/views/admin_20240401/service-process.php new file mode 100755 index 0000000..e69de29 diff --git a/application/views/admin_20240401/services.php b/application/views/admin_20240401/services.php new file mode 100755 index 0000000..e69de29 diff --git a/application/views/admin_20240401/update-service.php b/application/views/admin_20240401/update-service.php new file mode 100755 index 0000000..e69de29 diff --git a/application/views/admin_20240401/update-user.php b/application/views/admin_20240401/update-user.php new file mode 100755 index 0000000..e69de29 diff --git a/application/views/admin_20240401/update-worker.php b/application/views/admin_20240401/update-worker.php new file mode 100755 index 0000000..e69de29 diff --git a/application/views/admin_20240401/user-process.php b/application/views/admin_20240401/user-process.php new file mode 100755 index 0000000..e69de29 diff --git a/application/views/admin_20240401/users.php b/application/views/admin_20240401/users.php new file mode 100755 index 0000000..e69de29 diff --git a/application/views/admin_20240401/worker-process.php b/application/views/admin_20240401/worker-process.php new file mode 100755 index 0000000..e69de29 diff --git a/application/views/admin_20240401/workers.php b/application/views/admin_20240401/workers.php new file mode 100755 index 0000000..e69de29 diff --git a/application/views/admin_20250312/add-booking.php b/application/views/admin_20250312/add-booking.php new file mode 100755 index 0000000..ef3a4aa --- /dev/null +++ b/application/views/admin_20250312/add-booking.php @@ -0,0 +1,6 @@ + + diff --git a/application/views/admin_20250312/add-service.php b/application/views/admin_20250312/add-service.php new file mode 100755 index 0000000..ca1cc5b --- /dev/null +++ b/application/views/admin_20250312/add-service.php @@ -0,0 +1,6 @@ + + diff --git a/application/views/admin_20250312/add-worker.php b/application/views/admin_20250312/add-worker.php new file mode 100755 index 0000000..772c159 --- /dev/null +++ b/application/views/admin_20250312/add-worker.php @@ -0,0 +1,6 @@ + + diff --git a/application/views/admin_20250312/booking-process.php b/application/views/admin_20250312/booking-process.php new file mode 100755 index 0000000..e69de29 diff --git a/application/views/admin_20250312/bookings.php b/application/views/admin_20250312/bookings.php new file mode 100755 index 0000000..782bffc --- /dev/null +++ b/application/views/admin_20250312/bookings.php @@ -0,0 +1,5 @@ + \ No newline at end of file diff --git a/application/views/admin_20250312/dashboard.php b/application/views/admin_20250312/dashboard.php new file mode 100755 index 0000000..a7eb825 --- /dev/null +++ b/application/views/admin_20250312/dashboard.php @@ -0,0 +1,6 @@ + + diff --git a/application/views/admin_20250312/includes/add-booking-form.php b/application/views/admin_20250312/includes/add-booking-form.php new file mode 100755 index 0000000..b6860c6 --- /dev/null +++ b/application/views/admin_20250312/includes/add-booking-form.php @@ -0,0 +1,195 @@ +
+
+
+ +
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + Mégsem +
+
+ +
+ + \ No newline at end of file diff --git a/application/views/admin_20250312/includes/add-service-form.php b/application/views/admin_20250312/includes/add-service-form.php new file mode 100755 index 0000000..fd7fa2b --- /dev/null +++ b/application/views/admin_20250312/includes/add-service-form.php @@ -0,0 +1,69 @@ +
+
+
+ +
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + Mégsem +
+
+ +
diff --git a/application/views/admin_20250312/includes/add-worker-form.php b/application/views/admin_20250312/includes/add-worker-form.php new file mode 100755 index 0000000..697e264 --- /dev/null +++ b/application/views/admin_20250312/includes/add-worker-form.php @@ -0,0 +1,30 @@ +
+
+
+ +
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + Mégsem +
+
+ +
diff --git a/application/views/admin_20250312/includes/bookings-form.php b/application/views/admin_20250312/includes/bookings-form.php new file mode 100755 index 0000000..8f5a05f --- /dev/null +++ b/application/views/admin_20250312/includes/bookings-form.php @@ -0,0 +1,71 @@ +
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + '; + echo ''; + echo ''; + } + ?> + +
#Vendég neveEmailTelefonDolgozóFoglalási dátumSzolg. kezdeteSzolg. végeSzolgáltatások
+ + | + #booking_id;?>guest_name;?>guest_email;?>guest_phone;?>worker_name;?>booking_date;?>booking_start_time;?>booking_finish_time;?>services)){ + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + foreach($resultItem->services as $serviceItem){ + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + echo ''; + } + echo '
TípusSzolgáltalás neveÁrIdőtartam
'.$serviceItem->service_type.''.$serviceItem->service_name.''.$serviceItem->service_price.''.$serviceItem->service_time.'
'; + } + + ?>
Nincs bejegyzett foglalás
+
+
\ No newline at end of file diff --git a/application/views/admin_20250312/includes/dashboard-form.php b/application/views/admin_20250312/includes/dashboard-form.php new file mode 100755 index 0000000..9dbee28 --- /dev/null +++ b/application/views/admin_20250312/includes/dashboard-form.php @@ -0,0 +1,81 @@ +
+
+ + +
+
+
+ May +
+ +
<
+
+ 2020 + +
>
+
+
+
+ +
+
+
V
+
H
+
K
+
Sze
+
CS
+
P
+
Szo
+
+
+
+
+ +
+
MA
+
+
01:41:20
+
2022 - march - 03
+
+
+
+
+
+
+ + +
+ + \ No newline at end of file diff --git a/application/views/admin_20250312/includes/services-form.php b/application/views/admin_20250312/includes/services-form.php new file mode 100755 index 0000000..c7f78c1 --- /dev/null +++ b/application/views/admin_20250312/includes/services-form.php @@ -0,0 +1,61 @@ +
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + '; + echo ''; + echo ''; + } + ?> + +
#TípusKategória (NO)Kategória (EN)Kategória (HU)Megnevezés (NO)Megnevezés (EN)Megnevezés (HU)Leírás (NO)Leírás (EN)Leírás (HU)ÁrIdőtartamAktív
+ + | + #service_id;?>service_type;?>service_category_no;?>service_category_en;?>service_category_hu;?>service_name_no;?>service_name_en;?>service_name_hu;?>service_description_no;?>service_description_en;?>service_description_hu;?>service_price;?>service_time;?>is_enabled?'igen':'nem';?>
Nincs találat
+
+
\ No newline at end of file diff --git a/application/views/admin_20250312/includes/update-booking-form.php b/application/views/admin_20250312/includes/update-booking-form.php new file mode 100755 index 0000000..40f3932 --- /dev/null +++ b/application/views/admin_20250312/includes/update-booking-form.php @@ -0,0 +1,219 @@ +
+
+
+ + +
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + Mégsem +
+
+ +
+ + \ No newline at end of file diff --git a/application/views/admin_20250312/includes/update-service-form.php b/application/views/admin_20250312/includes/update-service-form.php new file mode 100755 index 0000000..7da59bf --- /dev/null +++ b/application/views/admin_20250312/includes/update-service-form.php @@ -0,0 +1,69 @@ +
+
+
+ +
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + Mégsem +
+
+ +
diff --git a/application/views/admin_20250312/includes/update-worker-form.php b/application/views/admin_20250312/includes/update-worker-form.php new file mode 100755 index 0000000..cb954be --- /dev/null +++ b/application/views/admin_20250312/includes/update-worker-form.php @@ -0,0 +1,33 @@ +
+
+
+ +
+ + +
+
+ +
+
+ + +
+
+ + +
+
+ + +
+
+ + Mégsem +
+
+ +
diff --git a/application/views/admin_20250312/includes/workers-form.php b/application/views/admin_20250312/includes/workers-form.php new file mode 100755 index 0000000..973a0c7 --- /dev/null +++ b/application/views/admin_20250312/includes/workers-form.php @@ -0,0 +1,43 @@ +
+
+ +
+ + + + + + + + + + + + + + + + + + + '; + echo ''; + echo ''; + } + ?> + +
#ProfilképNévLeírásAktív
+ + | + #worker_id;?>worker_name;?>worker_info;?>is_active?'igen':'nem';?>
Nincs találat
+
+
\ No newline at end of file diff --git a/application/views/admin_20250312/service-process.php b/application/views/admin_20250312/service-process.php new file mode 100755 index 0000000..e69de29 diff --git a/application/views/admin_20250312/services.php b/application/views/admin_20250312/services.php new file mode 100755 index 0000000..7132e1e --- /dev/null +++ b/application/views/admin_20250312/services.php @@ -0,0 +1,6 @@ + + diff --git a/application/views/admin_20250312/update-booking.php b/application/views/admin_20250312/update-booking.php new file mode 100755 index 0000000..ef069ff --- /dev/null +++ b/application/views/admin_20250312/update-booking.php @@ -0,0 +1,5 @@ + diff --git a/application/views/admin_20250312/update-service.php b/application/views/admin_20250312/update-service.php new file mode 100755 index 0000000..14273dd --- /dev/null +++ b/application/views/admin_20250312/update-service.php @@ -0,0 +1,6 @@ + + diff --git a/application/views/admin_20250312/update-worker.php b/application/views/admin_20250312/update-worker.php new file mode 100755 index 0000000..f59dae8 --- /dev/null +++ b/application/views/admin_20250312/update-worker.php @@ -0,0 +1,6 @@ + + diff --git a/application/views/admin_20250312/users.php b/application/views/admin_20250312/users.php new file mode 100755 index 0000000..5709d86 --- /dev/null +++ b/application/views/admin_20250312/users.php @@ -0,0 +1,33 @@ +
+ +
+
+
+ +
+ + + + +
+
+ + +
\ No newline at end of file diff --git a/application/views/admin_20250312/worker-process.php b/application/views/admin_20250312/worker-process.php new file mode 100755 index 0000000..e69de29 diff --git a/application/views/admin_20250312/workers.php b/application/views/admin_20250312/workers.php new file mode 100755 index 0000000..85d5917 --- /dev/null +++ b/application/views/admin_20250312/workers.php @@ -0,0 +1,6 @@ + + diff --git a/application/views/ajax.php b/application/views/ajax.php new file mode 100755 index 0000000..e69de29 diff --git a/application/views/api.php b/application/views/api.php new file mode 100755 index 0000000..e69de29 diff --git a/application/views/errors/cli/error_404.php b/application/views/errors/cli/error_404.php new file mode 100755 index 0000000..af8fecd --- /dev/null +++ b/application/views/errors/cli/error_404.php @@ -0,0 +1,8 @@ + + +An uncaught Exception was encountered + +Type: +Message: +Filename: getFile(), "\n"; ?> +Line Number: getLine(); ?> + + + +Backtrace: +getTrace() as $error): ?> + + File: + Line: + Function: + + + + diff --git a/application/views/errors/cli/error_general.php b/application/views/errors/cli/error_general.php new file mode 100755 index 0000000..af8fecd --- /dev/null +++ b/application/views/errors/cli/error_general.php @@ -0,0 +1,8 @@ + + +A PHP Error was encountered + +Severity: +Message: +Filename: +Line Number: + + + +Backtrace: + + + File: + Line: + Function: + + + + diff --git a/application/views/errors/cli/index.html b/application/views/errors/cli/index.html new file mode 100755 index 0000000..b48b490 --- /dev/null +++ b/application/views/errors/cli/index.html @@ -0,0 +1,11 @@ + + + + 403 Forbidden + + + +

Directory access is forbidden.

+ + + diff --git a/application/views/errors/html/error_404.php b/application/views/errors/html/error_404.php new file mode 100755 index 0000000..38689d7 --- /dev/null +++ b/application/views/errors/html/error_404.php @@ -0,0 +1,64 @@ + + + + +404 Page Not Found + + + +
+

+ +
+ + \ No newline at end of file diff --git a/application/views/errors/html/error_db.php b/application/views/errors/html/error_db.php new file mode 100755 index 0000000..899d072 --- /dev/null +++ b/application/views/errors/html/error_db.php @@ -0,0 +1,64 @@ + + + + +Database Error + + + +
+

+ +
+ + \ No newline at end of file diff --git a/application/views/errors/html/error_exception.php b/application/views/errors/html/error_exception.php new file mode 100755 index 0000000..bde0dc3 --- /dev/null +++ b/application/views/errors/html/error_exception.php @@ -0,0 +1,32 @@ + + +
+ +

An uncaught Exception was encountered

+ +

Type:

+

Message:

+

Filename: getFile(); ?>

+

Line Number: getLine(); ?>

+ + + +

Backtrace:

+ getTrace() as $error): ?> + + + +

+ File:
+ Line:
+ Function: +

+ + + + + + +
\ No newline at end of file diff --git a/application/views/errors/html/error_general.php b/application/views/errors/html/error_general.php new file mode 100755 index 0000000..3a64a4f --- /dev/null +++ b/application/views/errors/html/error_general.php @@ -0,0 +1,64 @@ + + + + +Error + + + +
+

+ +
+ + \ No newline at end of file diff --git a/application/views/errors/html/error_php.php b/application/views/errors/html/error_php.php new file mode 100755 index 0000000..be4d2f1 --- /dev/null +++ b/application/views/errors/html/error_php.php @@ -0,0 +1,33 @@ + + +
+ +

A PHP Error was encountered

+ +

Severity:

+

Message:

+

Filename:

+

Line Number:

+ + + +

Backtrace:

+ + + + +

+ File:
+ Line:
+ Function: +

+ + + + + + + +
\ No newline at end of file diff --git a/application/views/errors/html/index.html b/application/views/errors/html/index.html new file mode 100755 index 0000000..b48b490 --- /dev/null +++ b/application/views/errors/html/index.html @@ -0,0 +1,11 @@ + + + + 403 Forbidden + + + +

Directory access is forbidden.

+ + + diff --git a/application/views/errors/index.html b/application/views/errors/index.html new file mode 100755 index 0000000..b48b490 --- /dev/null +++ b/application/views/errors/index.html @@ -0,0 +1,11 @@ + + + + 403 Forbidden + + + +

Directory access is forbidden.

+ + + diff --git a/application/views/includes/add-new-user-form.php b/application/views/includes/add-new-user-form.php new file mode 100755 index 0000000..a4d35b5 --- /dev/null +++ b/application/views/includes/add-new-user-form.php @@ -0,0 +1,100 @@ +
+
+ +
+
+
+
+
+ + +
+
+ +
+
+
+
+
+ + +
+
+ + +
+
+ + +
+ + + +
+ + Mégsem +
+
+ + \ No newline at end of file diff --git a/application/views/includes/admin-footer.php b/application/views/includes/admin-footer.php new file mode 100755 index 0000000..ab0a4da --- /dev/null +++ b/application/views/includes/admin-footer.php @@ -0,0 +1 @@ +
© 2024. Az alkalmazás szerzői jogvédelem alatt áll.
\ No newline at end of file diff --git a/application/views/includes/barber-footer.php b/application/views/includes/barber-footer.php new file mode 100755 index 0000000..4f5a1d2 --- /dev/null +++ b/application/views/includes/barber-footer.php @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/application/views/includes/barber-head.php b/application/views/includes/barber-head.php new file mode 100755 index 0000000..44fc6b6 --- /dev/null +++ b/application/views/includes/barber-head.php @@ -0,0 +1,49 @@ +load->helper('url'); + + +?> + + + + + + + + Studio Beve - Beauty & Barber Shop + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/application/views/includes/barber-header.php b/application/views/includes/barber-header.php new file mode 100755 index 0000000..a8d72d4 --- /dev/null +++ b/application/views/includes/barber-header.php @@ -0,0 +1,92 @@ + + + + + diff --git a/application/views/includes/barber-skeleton-bottom.php b/application/views/includes/barber-skeleton-bottom.php new file mode 100755 index 0000000..4c823f1 --- /dev/null +++ b/application/views/includes/barber-skeleton-bottom.php @@ -0,0 +1,14 @@ + + + + + + + + + + + + diff --git a/application/views/includes/barber-skeleton-top.php b/application/views/includes/barber-skeleton-top.php new file mode 100755 index 0000000..4c2923c --- /dev/null +++ b/application/views/includes/barber-skeleton-top.php @@ -0,0 +1,22 @@ + + + + + + + + + +
+ + + +
+ +
+ diff --git a/application/views/includes/beauty-footer.php b/application/views/includes/beauty-footer.php new file mode 100755 index 0000000..391973e --- /dev/null +++ b/application/views/includes/beauty-footer.php @@ -0,0 +1,140 @@ + + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + + + + + + + + + diff --git a/application/views/includes/beauty-head.php b/application/views/includes/beauty-head.php new file mode 100755 index 0000000..8704c04 --- /dev/null +++ b/application/views/includes/beauty-head.php @@ -0,0 +1,67 @@ +load->helper('url'); + + +?> + + + + + + + + Studio Beve - Beauty + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/application/views/includes/beauty-header.php b/application/views/includes/beauty-header.php new file mode 100755 index 0000000..977aaa5 --- /dev/null +++ b/application/views/includes/beauty-header.php @@ -0,0 +1,100 @@ + + + + + + + + + + diff --git a/application/views/includes/beauty-skeleton-bottom.php b/application/views/includes/beauty-skeleton-bottom.php new file mode 100755 index 0000000..d8e7e6c --- /dev/null +++ b/application/views/includes/beauty-skeleton-bottom.php @@ -0,0 +1,15 @@ + + + +
+
+
+ + + + + + + diff --git a/application/views/includes/beauty-skeleton-top.php b/application/views/includes/beauty-skeleton-top.php new file mode 100755 index 0000000..c3bbc6d --- /dev/null +++ b/application/views/includes/beauty-skeleton-top.php @@ -0,0 +1,22 @@ + + + + + + + + + +
+ + + +
+ +
+ diff --git a/application/views/includes/footer.php b/application/views/includes/footer.php new file mode 100755 index 0000000..63fdfb4 --- /dev/null +++ b/application/views/includes/footer.php @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + +
+ + + + + +
\ No newline at end of file diff --git a/application/views/includes/head.php b/application/views/includes/head.php new file mode 100755 index 0000000..1af4b14 --- /dev/null +++ b/application/views/includes/head.php @@ -0,0 +1,84 @@ +load->helper('url'); + + +?> + + + + + + + Studio Beve - Beauty & Barber Shop + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/application/views/includes/head_20240401.php b/application/views/includes/head_20240401.php new file mode 100755 index 0000000..09b7191 --- /dev/null +++ b/application/views/includes/head_20240401.php @@ -0,0 +1,80 @@ +load->helper('url'); + + +?> + + + + + + + Studio Beve - Beauty & Barber Shop + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/application/views/includes/header.php b/application/views/includes/header.php new file mode 100755 index 0000000..d74d979 --- /dev/null +++ b/application/views/includes/header.php @@ -0,0 +1,48 @@ +
+
STUDIO BEVE - Adminisztráció
+
+ +
+
+ + +
+ +
username.' - '.$currentUser->fullname.' ['.$currentUser->permission_name.']';?>
+ + +
\ No newline at end of file diff --git a/application/views/includes/header_20240401.php b/application/views/includes/header_20240401.php new file mode 100755 index 0000000..e69de29 diff --git a/application/views/includes/log-monitor-form.php b/application/views/includes/log-monitor-form.php new file mode 100755 index 0000000..74b42a5 --- /dev/null +++ b/application/views/includes/log-monitor-form.php @@ -0,0 +1,41 @@ +
+
+ +
+
+
+
+
+
+
+
+
+
+ + \ No newline at end of file diff --git a/application/views/includes/login-form.php b/application/views/includes/login-form.php new file mode 100755 index 0000000..f731013 --- /dev/null +++ b/application/views/includes/login-form.php @@ -0,0 +1,33 @@ +
+ +
+
+
+ +
+ + + + +
+
+ +
+
\ No newline at end of file diff --git a/application/views/includes/main-footer.php b/application/views/includes/main-footer.php new file mode 100755 index 0000000..e69de29 diff --git a/application/views/includes/main-header.php b/application/views/includes/main-header.php new file mode 100755 index 0000000..b83f7fb --- /dev/null +++ b/application/views/includes/main-header.php @@ -0,0 +1,6 @@ +
+ + +
\ No newline at end of file diff --git a/application/views/includes/main-skeleton-bottom.php b/application/views/includes/main-skeleton-bottom.php new file mode 100755 index 0000000..2c5aa04 --- /dev/null +++ b/application/views/includes/main-skeleton-bottom.php @@ -0,0 +1,14 @@ + + +
+
+ + + + + + + + diff --git a/application/views/includes/main-skeleton-top.php b/application/views/includes/main-skeleton-top.php new file mode 100755 index 0000000..b503d7f --- /dev/null +++ b/application/views/includes/main-skeleton-top.php @@ -0,0 +1,22 @@ + + + + + + + + + +
+ + + +
+
+ + diff --git a/application/views/includes/modify-user-form.php b/application/views/includes/modify-user-form.php new file mode 100755 index 0000000..80b8dd6 --- /dev/null +++ b/application/views/includes/modify-user-form.php @@ -0,0 +1,70 @@ + + +
+ +
+ + +
+
+ + +
+
+ +
+
+
+
+
+ + +
+ +
+ + +
+
+ + +
+ + + +
+ + Mégsem +
+
+ + \ No newline at end of file diff --git a/application/views/includes/module-form.php b/application/views/includes/module-form.php new file mode 100755 index 0000000..b824f83 --- /dev/null +++ b/application/views/includes/module-form.php @@ -0,0 +1,75 @@ +
+
+ +
Felhasználó szintű jogosultságok
+ + + + + + + '.$moduleItem->module_name.''; + } + ?> + + +
#NévFelhasználói név
+ +
Csoport szintű jogosultságok
+ + + + + '.$moduleItem->module_name.''; + } + ?> + + +
#Csoport szint
+ + +
+ + +
+ + \ No newline at end of file diff --git a/application/views/includes/profile-form.php b/application/views/includes/profile-form.php new file mode 100755 index 0000000..cde9aa8 --- /dev/null +++ b/application/views/includes/profile-form.php @@ -0,0 +1,38 @@ + +'; + } + ?> + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + Mégsem +
+
+ \ No newline at end of file diff --git a/application/views/includes/public-header.php b/application/views/includes/public-header.php new file mode 100755 index 0000000..0bf4556 --- /dev/null +++ b/application/views/includes/public-header.php @@ -0,0 +1,18 @@ + \ No newline at end of file diff --git a/application/views/includes/skeleton-bottom.php b/application/views/includes/skeleton-bottom.php new file mode 100755 index 0000000..123fc67 --- /dev/null +++ b/application/views/includes/skeleton-bottom.php @@ -0,0 +1,7 @@ + + + + + diff --git a/application/views/includes/skeleton-top.php b/application/views/includes/skeleton-top.php new file mode 100755 index 0000000..8cf0913 --- /dev/null +++ b/application/views/includes/skeleton-top.php @@ -0,0 +1,10 @@ + + + + + + diff --git a/application/views/includes/user-management-form.php b/application/views/includes/user-management-form.php new file mode 100755 index 0000000..78eb495 --- /dev/null +++ b/application/views/includes/user-management-form.php @@ -0,0 +1,85 @@ + +
+ +
+ + + + + + + + + + + + + + '; + echo ''; + echo ' + '.$userItem->fullname.''; + echo ''; + echo ''; + echo ''; + echo ''; + $userIndex++; + echo ''; + + } + ?> +
#ProfilképNévFelhasználói névJogosultságStátuszMegjegyzés
'.$userIndex.'.'; + ?> +
'.$userItem->username.''.$userItem->permission_name.''; + ?> + + '; + echo ''.$userItem->user_notes.' |
+
+
+ + + \ No newline at end of file diff --git a/application/views/includes_20250312/add-new-user-form.php b/application/views/includes_20250312/add-new-user-form.php new file mode 100755 index 0000000..a4d35b5 --- /dev/null +++ b/application/views/includes_20250312/add-new-user-form.php @@ -0,0 +1,100 @@ +
+
+ +
+
+
+
+
+ + +
+
+ +
+
+
+
+
+ + +
+
+ + +
+
+ + +
+ + + +
+ + Mégsem +
+
+ + \ No newline at end of file diff --git a/application/views/includes_20250312/admin-footer.php b/application/views/includes_20250312/admin-footer.php new file mode 100755 index 0000000..ab0a4da --- /dev/null +++ b/application/views/includes_20250312/admin-footer.php @@ -0,0 +1 @@ +
© 2024. Az alkalmazás szerzői jogvédelem alatt áll.
\ No newline at end of file diff --git a/application/views/includes_20250312/barber-footer.php b/application/views/includes_20250312/barber-footer.php new file mode 100755 index 0000000..4f5a1d2 --- /dev/null +++ b/application/views/includes_20250312/barber-footer.php @@ -0,0 +1,138 @@ + + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + + + + + + + diff --git a/application/views/includes_20250312/barber-head.php b/application/views/includes_20250312/barber-head.php new file mode 100755 index 0000000..44fc6b6 --- /dev/null +++ b/application/views/includes_20250312/barber-head.php @@ -0,0 +1,49 @@ +load->helper('url'); + + +?> + + + + + + + + Studio Beve - Beauty & Barber Shop + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/application/views/includes_20250312/barber-header.php b/application/views/includes_20250312/barber-header.php new file mode 100755 index 0000000..a8d72d4 --- /dev/null +++ b/application/views/includes_20250312/barber-header.php @@ -0,0 +1,92 @@ + + + + + diff --git a/application/views/includes_20250312/barber-skeleton-bottom.php b/application/views/includes_20250312/barber-skeleton-bottom.php new file mode 100755 index 0000000..4c823f1 --- /dev/null +++ b/application/views/includes_20250312/barber-skeleton-bottom.php @@ -0,0 +1,14 @@ + + +
+
+ + + + + + + + diff --git a/application/views/includes_20250312/barber-skeleton-top.php b/application/views/includes_20250312/barber-skeleton-top.php new file mode 100755 index 0000000..4c2923c --- /dev/null +++ b/application/views/includes_20250312/barber-skeleton-top.php @@ -0,0 +1,22 @@ + + + + + + + + + +
+ + + +
+ +
+ diff --git a/application/views/includes_20250312/beauty-footer.php b/application/views/includes_20250312/beauty-footer.php new file mode 100755 index 0000000..391973e --- /dev/null +++ b/application/views/includes_20250312/beauty-footer.php @@ -0,0 +1,140 @@ + + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + + + + + + + + + diff --git a/application/views/includes_20250312/beauty-head.php b/application/views/includes_20250312/beauty-head.php new file mode 100755 index 0000000..8704c04 --- /dev/null +++ b/application/views/includes_20250312/beauty-head.php @@ -0,0 +1,67 @@ +load->helper('url'); + + +?> + + + + + + + + Studio Beve - Beauty + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/application/views/includes_20250312/beauty-header.php b/application/views/includes_20250312/beauty-header.php new file mode 100755 index 0000000..977aaa5 --- /dev/null +++ b/application/views/includes_20250312/beauty-header.php @@ -0,0 +1,100 @@ + + + + + + + + + + diff --git a/application/views/includes_20250312/beauty-skeleton-bottom.php b/application/views/includes_20250312/beauty-skeleton-bottom.php new file mode 100755 index 0000000..d8e7e6c --- /dev/null +++ b/application/views/includes_20250312/beauty-skeleton-bottom.php @@ -0,0 +1,15 @@ + + + +
+
+
+ + + + + + + diff --git a/application/views/includes_20250312/beauty-skeleton-top.php b/application/views/includes_20250312/beauty-skeleton-top.php new file mode 100755 index 0000000..c3bbc6d --- /dev/null +++ b/application/views/includes_20250312/beauty-skeleton-top.php @@ -0,0 +1,22 @@ + + + + + + + + + +
+ + + +
+ +
+ diff --git a/application/views/includes_20250312/footer.php b/application/views/includes_20250312/footer.php new file mode 100755 index 0000000..63fdfb4 --- /dev/null +++ b/application/views/includes_20250312/footer.php @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + +
+ + + + + +
\ No newline at end of file diff --git a/application/views/includes_20250312/head.php b/application/views/includes_20250312/head.php new file mode 100755 index 0000000..1af4b14 --- /dev/null +++ b/application/views/includes_20250312/head.php @@ -0,0 +1,84 @@ +load->helper('url'); + + +?> + + + + + + + Studio Beve - Beauty & Barber Shop + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/application/views/includes_20250312/head_20240401.php b/application/views/includes_20250312/head_20240401.php new file mode 100755 index 0000000..09b7191 --- /dev/null +++ b/application/views/includes_20250312/head_20240401.php @@ -0,0 +1,80 @@ +load->helper('url'); + + +?> + + + + + + + Studio Beve - Beauty & Barber Shop + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/application/views/includes_20250312/header.php b/application/views/includes_20250312/header.php new file mode 100755 index 0000000..d74d979 --- /dev/null +++ b/application/views/includes_20250312/header.php @@ -0,0 +1,48 @@ +
+
STUDIO BEVE - Adminisztráció
+
+ +
+
+ + +
+ +
username.' - '.$currentUser->fullname.' ['.$currentUser->permission_name.']';?>
+ + +
\ No newline at end of file diff --git a/application/views/includes_20250312/header_20240401.php b/application/views/includes_20250312/header_20240401.php new file mode 100755 index 0000000..e69de29 diff --git a/application/views/includes_20250312/log-monitor-form.php b/application/views/includes_20250312/log-monitor-form.php new file mode 100755 index 0000000..74b42a5 --- /dev/null +++ b/application/views/includes_20250312/log-monitor-form.php @@ -0,0 +1,41 @@ +
+
+ +
+
+
+
+
+
+
+
+
+
+ + \ No newline at end of file diff --git a/application/views/includes_20250312/login-form.php b/application/views/includes_20250312/login-form.php new file mode 100755 index 0000000..f731013 --- /dev/null +++ b/application/views/includes_20250312/login-form.php @@ -0,0 +1,33 @@ +
+ +
+
+
+ +
+ + + + +
+
+ +
+
\ No newline at end of file diff --git a/application/views/includes_20250312/main-footer.php b/application/views/includes_20250312/main-footer.php new file mode 100755 index 0000000..e69de29 diff --git a/application/views/includes_20250312/main-header.php b/application/views/includes_20250312/main-header.php new file mode 100755 index 0000000..b83f7fb --- /dev/null +++ b/application/views/includes_20250312/main-header.php @@ -0,0 +1,6 @@ +
+ + +
\ No newline at end of file diff --git a/application/views/includes_20250312/main-skeleton-bottom.php b/application/views/includes_20250312/main-skeleton-bottom.php new file mode 100755 index 0000000..2c5aa04 --- /dev/null +++ b/application/views/includes_20250312/main-skeleton-bottom.php @@ -0,0 +1,14 @@ + + +
+
+ + + + + + + + diff --git a/application/views/includes_20250312/main-skeleton-top.php b/application/views/includes_20250312/main-skeleton-top.php new file mode 100755 index 0000000..b503d7f --- /dev/null +++ b/application/views/includes_20250312/main-skeleton-top.php @@ -0,0 +1,22 @@ + + + + + + + + + +
+ + + +
+
+ + diff --git a/application/views/includes_20250312/modify-user-form.php b/application/views/includes_20250312/modify-user-form.php new file mode 100755 index 0000000..80b8dd6 --- /dev/null +++ b/application/views/includes_20250312/modify-user-form.php @@ -0,0 +1,70 @@ + + +
+ +
+ + +
+
+ + +
+
+ +
+
+
+
+
+ + +
+ +
+ + +
+
+ + +
+ + + +
+ + Mégsem +
+
+ + \ No newline at end of file diff --git a/application/views/includes_20250312/module-form.php b/application/views/includes_20250312/module-form.php new file mode 100755 index 0000000..b824f83 --- /dev/null +++ b/application/views/includes_20250312/module-form.php @@ -0,0 +1,75 @@ +
+
+ +
Felhasználó szintű jogosultságok
+ + + + + + + '.$moduleItem->module_name.''; + } + ?> + + +
#NévFelhasználói név
+ +
Csoport szintű jogosultságok
+ + + + + '.$moduleItem->module_name.''; + } + ?> + + +
#Csoport szint
+ + +
+ + +
+ + \ No newline at end of file diff --git a/application/views/includes_20250312/profile-form.php b/application/views/includes_20250312/profile-form.php new file mode 100755 index 0000000..cde9aa8 --- /dev/null +++ b/application/views/includes_20250312/profile-form.php @@ -0,0 +1,38 @@ + +'; + } + ?> + +
+ +
+ +
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + Mégsem +
+
+ \ No newline at end of file diff --git a/application/views/includes_20250312/public-header.php b/application/views/includes_20250312/public-header.php new file mode 100755 index 0000000..0bf4556 --- /dev/null +++ b/application/views/includes_20250312/public-header.php @@ -0,0 +1,18 @@ + \ No newline at end of file diff --git a/application/views/includes_20250312/skeleton-bottom.php b/application/views/includes_20250312/skeleton-bottom.php new file mode 100755 index 0000000..123fc67 --- /dev/null +++ b/application/views/includes_20250312/skeleton-bottom.php @@ -0,0 +1,7 @@ + + + + + diff --git a/application/views/includes_20250312/skeleton-top.php b/application/views/includes_20250312/skeleton-top.php new file mode 100755 index 0000000..8cf0913 --- /dev/null +++ b/application/views/includes_20250312/skeleton-top.php @@ -0,0 +1,10 @@ + + + + + + diff --git a/application/views/includes_20250312/user-management-form.php b/application/views/includes_20250312/user-management-form.php new file mode 100755 index 0000000..78eb495 --- /dev/null +++ b/application/views/includes_20250312/user-management-form.php @@ -0,0 +1,85 @@ + +
+ +
+ + + + + + + + + + + + + + '; + echo ''; + echo ' + '.$userItem->fullname.''; + echo ''; + echo ''; + echo ''; + echo ''; + $userIndex++; + echo ''; + + } + ?> +
#ProfilképNévFelhasználói névJogosultságStátuszMegjegyzés
'.$userIndex.'.'; + ?> +
'.$userItem->username.''.$userItem->permission_name.''; + ?> + + '; + echo ''.$userItem->user_notes.' |
+
+
+ + + \ No newline at end of file diff --git a/application/views/index.html b/application/views/index.html new file mode 100755 index 0000000..b48b490 --- /dev/null +++ b/application/views/index.html @@ -0,0 +1,11 @@ + + + + 403 Forbidden + + + +

Directory access is forbidden.

+ + + diff --git a/application/views/log-monitor.php b/application/views/log-monitor.php new file mode 100755 index 0000000..4ebb194 --- /dev/null +++ b/application/views/log-monitor.php @@ -0,0 +1,6 @@ +Eseménykezelő
'; + include(getcwd().'/application/views/includes/log-monitor-form.php'); + include(getcwd().'/application/views/includes/skeleton-bottom.php'); +?> diff --git a/application/views/login.php b/application/views/login.php new file mode 100755 index 0000000..8c9ede1 --- /dev/null +++ b/application/views/login.php @@ -0,0 +1,11 @@ + + + + + + + diff --git a/application/views/modules/module-management/module-management.php b/application/views/modules/module-management/module-management.php new file mode 100755 index 0000000..f123f0a --- /dev/null +++ b/application/views/modules/module-management/module-management.php @@ -0,0 +1,7 @@ +Jogosultságok
'; + include(getcwd().'/application/views/includes/module-form.php'); + include(getcwd().'/application/views/includes/skeleton-bottom.php'); +?> diff --git a/application/views/pages/404-page-not-found.php b/application/views/pages/404-page-not-found.php new file mode 100755 index 0000000..d4aa745 --- /dev/null +++ b/application/views/pages/404-page-not-found.php @@ -0,0 +1 @@ +Az oldal nem található \ No newline at end of file diff --git a/application/views/pages/add-new-user.php b/application/views/pages/add-new-user.php new file mode 100755 index 0000000..e465f57 --- /dev/null +++ b/application/views/pages/add-new-user.php @@ -0,0 +1,7 @@ +Új felhasználó létrehozása'; + include(getcwd().'/application/views/includes/add-new-user-form.php'); + include(getcwd().'/application/views/includes/skeleton-bottom.php'); +?> diff --git a/application/views/pages/ajax.php b/application/views/pages/ajax.php new file mode 100755 index 0000000..e69de29 diff --git a/application/views/pages/barber-booking-finished.php b/application/views/pages/barber-booking-finished.php new file mode 100755 index 0000000..6c4ed88 --- /dev/null +++ b/application/views/pages/barber-booking-finished.php @@ -0,0 +1,12 @@ + diff --git a/application/views/pages/barber-booking.php b/application/views/pages/barber-booking.php new file mode 100755 index 0000000..1f10aa6 --- /dev/null +++ b/application/views/pages/barber-booking.php @@ -0,0 +1,12 @@ + diff --git a/application/views/pages/barber.php b/application/views/pages/barber.php new file mode 100755 index 0000000..3e059b7 --- /dev/null +++ b/application/views/pages/barber.php @@ -0,0 +1,11 @@ + diff --git a/application/views/pages/beauty-booking-finished.php b/application/views/pages/beauty-booking-finished.php new file mode 100755 index 0000000..d07d019 --- /dev/null +++ b/application/views/pages/beauty-booking-finished.php @@ -0,0 +1,12 @@ + diff --git a/application/views/pages/beauty-booking.php b/application/views/pages/beauty-booking.php new file mode 100755 index 0000000..e7b3d9f --- /dev/null +++ b/application/views/pages/beauty-booking.php @@ -0,0 +1,13 @@ + diff --git a/application/views/pages/beauty.php b/application/views/pages/beauty.php new file mode 100755 index 0000000..a60e362 --- /dev/null +++ b/application/views/pages/beauty.php @@ -0,0 +1,12 @@ + diff --git a/application/views/pages/booking-process.php b/application/views/pages/booking-process.php new file mode 100755 index 0000000..e69de29 diff --git a/application/views/pages/booking-process_20240401.php b/application/views/pages/booking-process_20240401.php new file mode 100755 index 0000000..e69de29 diff --git a/application/views/pages/email-verification.php b/application/views/pages/email-verification.php new file mode 100755 index 0000000..e69de29 diff --git a/application/views/pages/home.php b/application/views/pages/home.php new file mode 100755 index 0000000..627bee1 --- /dev/null +++ b/application/views/pages/home.php @@ -0,0 +1,5 @@ + diff --git a/application/views/pages/includes/barber-form-en.php b/application/views/pages/includes/barber-form-en.php new file mode 100755 index 0000000..75d9383 --- /dev/null +++ b/application/views/pages/includes/barber-form-en.php @@ -0,0 +1,293 @@ + + + + +
+ +
+ + + +
+
+
+
+ +

About Us

+
+
+
+

+ My name is Evelin Bence, leader and creator of Studio Beve. I consider it + important that our guests during their stay – resting a little from the noise of the + world – recharge their batteries and return to everyday life beautified inside as + well as outside. +

+

+ Quality time, maximum attention, the most professional tools, together with + professionalism and expertise, stand for the basis of our philosophy and + services. +

+

+ I believe that beauty, fashion, and trend are not gender-specific, so we have the + opportunity for everyone to become beautiful in one place, regardless of gender. + And among our Barber and Beauty departments, you can find the right services + for you. +

+

+ With nearly 10 years of experience in the beauty industry, including many years + of international experience, I thought it was time to open my own studio here in + Trondheim at Innheredsveien 92, where guests can park free of charge during + the treatments. +

+

+ It is an extra pleasure for me that I managed to find a traditional place where + there was already a beauty salon in the 50s. Therefore, I now have the + opportunity to carry on this tradition in a modern environment. + Become beautiful with us. We look forward to seeing you. +

+
+
+ +

Evelin Bence
Owner, Studio Beve

+
+
+
+
+ +

EVELIN Bence - Barber

+
+
+
+

+ "I got acquainted with the basics of being a barber at a very young age, as my + mother is also a barber. From her I managed at a very young age to master the + tricks of this wonderful profession. You could say I was born into the profession, + and I've been officially a second-generation barber for a few years now. + I am proud to have learned from the best. My master barber and friend Ruben + Tenkely, owner of "Peaky Barbers – Tenkely Limited Company", European Cup + winner and Hungarian champion, has gained a lot of experience internationally. + Among other things, he worked at one of Norway's most famous traditional + salons, Brødrene Fevangs Barberstue. This allowed me to learn about trends in + Norway. +

+

+ I have been living in Norway since April 2023 and am eager to learn + Norwegian. I feel fortunate to have had the opportunity to work alongside Felipe + Romero in Trondheim, who is also an incredibly knowledgeable barber. More + than one of you may have met and gotten to know me at his salon. + I constantly participate in further trainings because I believe that continuous + development, quality work and dedication help me to become a better + professional day by day." +

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

Treatments

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

Prices

+

The price of all hair treatments include hairwash and styling.
10% student reduction upon showing ID, available from Monday to Thursday.

+
+ service_category != $prevousCategory){ + ?> +
+

service_category;?>

+
+ +
+
+
+ +
service_description;?>
+
+
+
kr service_price;?>
+
+
+
+ service_category; + } + } + ?> + + +
+
+
+ +
service_description;?>
+
+
+
kr service_price;?>
+
+
+
+ + + +
+
+
+ + + + +
+
+
+
+ +

Working Hours

+

Free customer parking during treatments

+
+
+
+
+
+
Weekdays
+
+
+
10:00 - 18:00
+
+
+
+
+
Saturday
+
+
+
10:00 - 16:00
+
+
+
+
+
Sunday
+
+
+
Closed
+
+
+
+
+
\ No newline at end of file diff --git a/application/views/pages/includes/barber-form-en_20240425.php b/application/views/pages/includes/barber-form-en_20240425.php new file mode 100755 index 0000000..0f18a73 --- /dev/null +++ b/application/views/pages/includes/barber-form-en_20240425.php @@ -0,0 +1,261 @@ + + + + +
+ +
+ + + +
+
+
+
+ +

About Us

+
+
+
+

+ My name is Evelin Bence, leader and creator of Studio Beve. I consider it + important that our guests during their stay – resting a little from the noise of the + world – recharge their batteries and return to everyday life beautified inside as + well as outside. +

+

+ Quality time, maximum attention, the most professional tools, together with + professionalism and expertise, stand for the basis of our philosophy and + services. +

+

+ I believe that beauty, fashion, and trend are not gender-specific, so we have the + opportunity for everyone to become beautiful in one place, regardless of gender. + And among our Barber and Beauty departments, you can find the right services + for you. +

+

+ With nearly 10 years of experience in the beauty industry, including many years + of international experience, I thought it was time to open my own studio here in + Trondheim at Innheredsveien 92, where guests can park free of charge during + the treatments. +

+

+ It is an extra pleasure for me that I managed to find a traditional place where + there was already a beauty salon in the 50s. Therefore, I now have the + opportunity to carry on this tradition in a modern environment. + Become beautiful with us. We look forward to seeing you. +

+
+
+ +

Evelin Bence
Owner, Studio Beve

+
+
+
+
+ +

EVELIN Bence - Barber

+
+
+
+

+ "I got acquainted with the basics of being a barber at a very young age, as my + mother is also a barber. From her I managed at a very young age to master the + tricks of this wonderful profession. You could say I was born into the profession, + and I've been officially a second-generation barber for a few years now. + I am proud to have learned from the best. My master barber and friend Ruben + Tenkely, owner of "Peaky Barbers – Tenkely Limited Company", European Cup + winner and Hungarian champion, has gained a lot of experience internationally. + Among other things, he worked at one of Norway's most famous traditional + salons, Brødrene Fevangs Barberstue. This allowed me to learn about trends in + Norway. +

+

+ I have been living in Norway since April 2023 and am eager to learn + Norwegian. I feel fortunate to have had the opportunity to work alongside Felipe + Romero in Trondheim, who is also an incredibly knowledgeable barber. More + than one of you may have met and gotten to know me at his salon. + I constantly participate in further trainings because I believe that continuous + development, quality work and dedication help me to become a better + professional day by day." +

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

Treatments

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

Prices

+

The price of all hair treatments include hairwash and styling.
10% student reduction upon showing ID, available from Monday to Thursday.

+
+ +
+
+
+ +
service_description;?>
+
+
+
kr service_price;?>
+
+
+
+ + + +
+
+
+ + + + +
+
+
+
+ +

Working Hours

+

Free customer parking during treatments

+
+
+
+
+
+
Weekdays
+
+
+
10:00 - 18:00
+
+
+
+
+
Saturday
+
+
+
10:00 - 16:00
+
+
+
+
+
Sunday
+
+
+
Closed
+
+
+
+
+
\ No newline at end of file diff --git a/application/views/pages/includes/barber-form-hu.php b/application/views/pages/includes/barber-form-hu.php new file mode 100755 index 0000000..c978e5d --- /dev/null +++ b/application/views/pages/includes/barber-form-hu.php @@ -0,0 +1,270 @@ + + + +
+ +
+ + +
+
+
+
+ +

Rólunk

+
+
+
+

+ Bence Evelin vagyok a Studio Beve vezetője és megálmodója. Fontosnak tartom, hogy a vendégek a nálunk töltött idő alatt – egy kicsit megpihenve a világ zajától – feltöltődjenek, és kívül-belül megszépülve térjenek vissza a mindennapokhoz. +

+

+ A minőségi idő, a maximális figyelem, a legprofesszionálisabb eszközök, a hivatástudattal és szakértelemmel karöltve jelentik a filozófiánk és szolgáltatásaink alapjait. +

+

+ Hiszem, hogy a szépség, a divat és a trend nem nemhez kötött, így nálunk lehetőség van arra, hogy mindenki egy helyen szépülhessen nemtől függetlenül. A Barber és Beauty részlegeink között pedig megtalálhatjátok a számotokra megfelelő szolgáltatásokat. +

+

+ Közel 10 éves szépségipari, és közte több éves nemzetközi tapasztalattal elérkezettnek láttam az időt, hogy megnyissam saját stúdiómat itt Trondheimben, az Innheredsveien 92 szám alatt, ahol a vendégeknek lehetősége van ingyenes parkolásra is a kezelések időtartama alatt. +

+

+ Extra öröm számomra, hogy egy olyan tradicionális helyet sikerült találnom, ahol az 50-es években már szépségszalon működött, ennek köszönhetően a hagyományt, modern környezetben lehetőségem van tovább vinni. + Szépülj velünk, szeretettel várunk. +

+
+
+ +

Bence Evelin
Tulajdonos, Studio Beve

+
+
+
+
+ +

EVELIN Bence - Barber

+
+
+
+

+ "Már egészen kiskoromban megismerkedtem a borbély lét alapjaival, hiszen édesanyám is borbély. Tőle, egészen fiatalon sikerült elsajátítanom ennek a csodálatos szakmának a fortélyait. Mondhatni beleszülettem a szakmába, és már néhány éve, hivatalosan is második generációs borbély vagyok. +

+

+ Büszke vagyok arra, hogy a legjobbaktól tanulhattam. A fodrászmesterem és barátom Tenkely Ruben, a „Peaky Barbers - Tenkely Limited Company” tulajdonosa, európa kupagyőztes és magyar bajnok, aki nemzetközi szinten is rengeteg tapasztalatot szerzett. Többek között dolgozott norvégia egyik leghíresebb tradicionális szalonjában a Brødrene Fevangs Barberstue-ben. Így általa is megismerhettem a norvégiai trendeket. +

+

+ 2023 áprilisától élek Norvégiában, a norvég nyelvet lelkesen tanulom. Szerencsésnek érzem magam, hogy ez idő alatt lehetőségem volt Felipe Romero mellett dolgozni Trondheimben, aki szintén elképesztően nagy tudással rendelkező borbély. Nála már többen is találkozhattatok velem és megismerhettetek. +

+

+ Folyamatosan veszek részt továbbképzéseken, mert hiszem, hogy a folyamatos fejlődés, a minőségi munka és az odaadás segít, hogy napról-napra jobb szakember lehessek." +

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

Szolgáltatások

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

Árlista

+

Minden hajkezelés ára tartalmazza a hajmosást és a formázást
10%-os diákkedvezmény, igazolvány felmutatásával, ami hétfőtől csütörtökig vehető igénybe.

+
+ service_category != $prevousCategory){ + ?> +
+

service_category;?>

+
+ +
+
+
+ +
service_description;?>
+
+
+
kr service_price;?>
+
+
+
+ service_category; + } + } + ?> + + + +
+
+
+ +
service_description;?>
+
+
+
kr service_price;?>
+
+
+
+ + + +
+
+
+ + + +
+
+
+
+ +

Nyitvatartási idő

+

Ingyenes parkolás a szolgáltatások ideje alatt

+
+
+
+
+
+
Hétköznap
+
+
+
10:00 - 18:00
+
+
+
+
+
Szombat
+
+
+
10:00 - 16:00
+
+
+
+
+
Vasárnap
+
+
+
Zárva
+
+
+
+
+
\ No newline at end of file diff --git a/application/views/pages/includes/barber-form-hu_20240425.php b/application/views/pages/includes/barber-form-hu_20240425.php new file mode 100755 index 0000000..81e6334 --- /dev/null +++ b/application/views/pages/includes/barber-form-hu_20240425.php @@ -0,0 +1,237 @@ + + + +
+ +
+ + +
+
+
+
+ +

Rólunk

+
+
+
+

+ Bence Evelin vagyok a Studio Beve vezetője és megálmodója. Fontosnak tartom, hogy a vendégek a nálunk töltött idő alatt – egy kicsit megpihenve a világ zajától – feltöltődjenek, és kívül-belül megszépülve térjenek vissza a mindennapokhoz. +

+

+ A minőségi idő, a maximális figyelem, a legprofesszionálisabb eszközök, a hivatástudattal és szakértelemmel karöltve jelentik a filozófiánk és szolgáltatásaink alapjait. +

+

+ Hiszem, hogy a szépség, a divat és a trend nem nemhez kötött, így nálunk lehetőség van arra, hogy mindenki egy helyen szépülhessen nemtől függetlenül. A Barber és Beauty részlegeink között pedig megtalálhatjátok a számotokra megfelelő szolgáltatásokat. +

+

+ Közel 10 éves szépségipari, és közte több éves nemzetközi tapasztalattal elérkezettnek láttam az időt, hogy megnyissam saját stúdiómat itt Trondheimben, az Innheredsveien 92 szám alatt, ahol a vendégeknek lehetősége van ingyenes parkolásra is a kezelések időtartama alatt. +

+

+ Extra öröm számomra, hogy egy olyan tradicionális helyet sikerült találnom, ahol az 50-es években már szépségszalon működött, ennek köszönhetően a hagyományt, modern környezetben lehetőségem van tovább vinni. + Szépülj velünk, szeretettel várunk. +

+
+
+ +

Bence Evelin
Tulajdonos, Studio Beve

+
+
+
+
+ +

EVELIN Bence - Barber

+
+
+
+

+ "Már egészen kiskoromban megismerkedtem a borbély lét alapjaival, hiszen édesanyám is borbély. Tőle, egészen fiatalon sikerült elsajátítanom ennek a csodálatos szakmának a fortélyait. Mondhatni beleszülettem a szakmába, és már néhány éve, hivatalosan is második generációs borbély vagyok. +

+

+ Büszke vagyok arra, hogy a legjobbaktól tanulhattam. A fodrászmesterem és barátom Tenkely Ruben, a „Peaky Barbers - Tenkely Limited Company” tulajdonosa, európa kupagyőztes és magyar bajnok, aki nemzetközi szinten is rengeteg tapasztalatot szerzett. Többek között dolgozott norvégia egyik leghíresebb tradicionális szalonjában a Brødrene Fevangs Barberstue-ben. Így általa is megismerhettem a norvégiai trendeket. +

+

+ 2023 áprilisától élek Norvégiában, a norvég nyelvet lelkesen tanulom. Szerencsésnek érzem magam, hogy ez idő alatt lehetőségem volt Felipe Romero mellett dolgozni Trondheimben, aki szintén elképesztően nagy tudással rendelkező borbély. Nála már többen is találkozhattatok velem és megismerhettetek. +

+

+ Folyamatosan veszek részt továbbképzéseken, mert hiszem, hogy a folyamatos fejlődés, a minőségi munka és az odaadás segít, hogy napról-napra jobb szakember lehessek." +

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

Szolgáltatások

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

Árlista

+

Minden hajkezelés ára tartalmazza a hajmosást és a formázást
10%-os diákkedvezmény, igazolvány felmutatásával, ami hétfőtől csütörtökig vehető igénybe.

+
+ +
+
+
+ +
service_description;?>
+
+
+
kr service_price;?>
+
+
+
+ + + +
+
+
+ + + +
+
+
+
+ +

Nyitvatartási idő

+

Ingyenes parkolás a szolgáltatások ideje alatt

+
+
+
+
+
+
Hétköznap
+
+
+
10:00 - 18:00
+
+
+
+
+
Szombat
+
+
+
10:00 - 16:00
+
+
+
+
+
Vasárnap
+
+
+
Zárva
+
+
+
+
+
\ No newline at end of file diff --git a/application/views/pages/includes/barber-form-no.php b/application/views/pages/includes/barber-form-no.php new file mode 100755 index 0000000..2790b81 --- /dev/null +++ b/application/views/pages/includes/barber-form-no.php @@ -0,0 +1,269 @@ + + + + +
+ +
+ + +
+
+
+
+ +

Om oss

+
+
+
+

+ Mitt navn er Evelin Bence, lederen og skaperen av Studio Beve. Jeg anser det som viktig at våre gjester under oppholdet hos oss – mens de stenger ute litt av støyen fra omverdenen – kan lade sine batterier og kan vende tilbake til hverdagen forskjønnet både innvendig og utvendig. +

+

+ Kvalitetstid, maksimal oppmerksomhet, de mest profesjonelle verktøyene, hånd i hånd med profesjonalitet og kompetanse, utgjør grunnlaget for vår filosofi og våre tjenester. +

+

+ Jeg mener at skjønnhet, mote og trend ikke er kjønnsspesifikke, og hos oss har derfor alle mulighet til å bli vakrere på ett sted, uavhengig av kjønn. Hos Studio Beve Barber og Studio Beve Beauty kan dere finne de tjenestene som er riktige for dere. +

+

+ Med nesten 10 års erfaring fra skjønnhetsindustrien, inkludert mange års internasjonal erfaring, tenkte jeg det var på tide å åpne mitt eget studio her i Trondheim i Innheredsveien 92, hvor gjestene har mulighet til å parkere gratis under behandlingene. +

+

+ Det er en ekstra glede for meg at jeg klarte å finne et tradisjonelt sted hvor det allerede var en skjønnhetssalong på 50-tallet. Derfor har jeg nå muligheten til å videreføre denne tradisjonen i et moderne miljø. + Bli vakker hos oss. Vi ser frem til å ønske deg velkommen. +

+
+
+ +

Evelin Bence
Eieren, Studio Beve

+
+
+
+
+ +

EVELIN Bence - Barber

+
+
+
+

+ "Jeg lærte å kjenne det grunnleggende om det å være barber allerede i svært ung alder, siden min mor også er barber. Fra henne klarte jeg i svært ung alder å mestre knepene i dette fantastiske yrket. Man kan si at jeg ble født inn i yrket, og jeg har offisielt vært andregenerasjons barber i noen år nå. +

+

+ Jeg er stolt over å ha lært av de beste. Min mesterbarber og venn Ruben Tenkely, eier av «Peaky Barbers – Tenkely Limited Company», europacupvinner og ungarsk mester, har også skaffet seg mye erfaring internasjonalt. Han har blant annet arbeidet i en av Norges mest kjente tradisjonelle salonger, Brødrene Fevangs Barberstue. Slik lærte jeg om trender i Norge. +

+

+ Jeg har bodd i Norge siden april 2023 og er ivrig etter å lære norsk. Jeg føler meg heldig som har fått muligheten til å jobbe sammen med Felipe Romero i Trondheim, som også er en utrolig kunnskapsrik barber. Hos ham kan flere av dere ha møtt og blitt kjent med meg. +

+

+ Jeg deltar stadig på videreutdanninger fordi jeg tror at kontinuerlig utvikling, kvalitetsarbeid og engasjement hjelper meg til å bli en bedre fagperson dag for dag." +

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

Behandlinger

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

Priser

+

Prisen på alle hårbehandling inkluderer hårvask og styling.
10% studentrabatt ved framvising av ID, kan benyttes fra mandag til torsdag.

+
+ service_category != $prevousCategory){ + ?> +
+

service_category;?>

+
+ +
+
+
+ +
service_description;?>
+
+
+
kr service_price;?>
+
+
+
+ service_category; + } + } + ?> + + +
+
+
+ +
service_description;?>
+
+
+
kr service_price;?>
+
+
+
+ + + +
+
+
+ + + +
+
+
+
+ +

Åpningstider

+

Gratis kundeprarking under behandlingen

+
+
+
+
+
+
Ukedager
+
+
+
10:00 - 18:00
+
+
+
+
+
Lørdag
+
+
+
10:00 - 16:00
+
+
+
+
+
Søndag
+
+
+
Stengt
+
+
+
+
+
\ No newline at end of file diff --git a/application/views/pages/includes/barber-form-no_20240425.php b/application/views/pages/includes/barber-form-no_20240425.php new file mode 100755 index 0000000..2d53f1f --- /dev/null +++ b/application/views/pages/includes/barber-form-no_20240425.php @@ -0,0 +1,237 @@ + + + + +
+ +
+ + +
+
+
+
+ +

Om oss

+
+
+
+

+ Mitt navn er Evelin Bence, lederen og skaperen av Studio Beve. Jeg anser det som viktig at våre gjester under oppholdet hos oss – mens de stenger ute litt av støyen fra omverdenen – kan lade sine batterier og kan vende tilbake til hverdagen forskjønnet både innvendig og utvendig. +

+

+ Kvalitetstid, maksimal oppmerksomhet, de mest profesjonelle verktøyene, hånd i hånd med profesjonalitet og kompetanse, utgjør grunnlaget for vår filosofi og våre tjenester. +

+

+ Jeg mener at skjønnhet, mote og trend ikke er kjønnsspesifikke, og hos oss har derfor alle mulighet til å bli vakrere på ett sted, uavhengig av kjønn. Hos Studio Beve Barber og Studio Beve Beauty kan dere finne de tjenestene som er riktige for dere. +

+

+ Med nesten 10 års erfaring fra skjønnhetsindustrien, inkludert mange års internasjonal erfaring, tenkte jeg det var på tide å åpne mitt eget studio her i Trondheim i Innheredsveien 92, hvor gjestene har mulighet til å parkere gratis under behandlingene. +

+

+ Det er en ekstra glede for meg at jeg klarte å finne et tradisjonelt sted hvor det allerede var en skjønnhetssalong på 50-tallet. Derfor har jeg nå muligheten til å videreføre denne tradisjonen i et moderne miljø. + Bli vakker hos oss. Vi ser frem til å ønske deg velkommen. +

+
+
+ +

Evelin Bence
Eieren, Studio Beve

+
+
+
+
+ +

EVELIN Bence - Barber

+
+
+
+

+ "Jeg lærte å kjenne det grunnleggende om det å være barber allerede i svært ung alder, siden min mor også er barber. Fra henne klarte jeg i svært ung alder å mestre knepene i dette fantastiske yrket. Man kan si at jeg ble født inn i yrket, og jeg har offisielt vært andregenerasjons barber i noen år nå. +

+

+ Jeg er stolt over å ha lært av de beste. Min mesterbarber og venn Ruben Tenkely, eier av «Peaky Barbers – Tenkely Limited Company», europacupvinner og ungarsk mester, har også skaffet seg mye erfaring internasjonalt. Han har blant annet arbeidet i en av Norges mest kjente tradisjonelle salonger, Brødrene Fevangs Barberstue. Slik lærte jeg om trender i Norge. +

+

+ Jeg har bodd i Norge siden april 2023 og er ivrig etter å lære norsk. Jeg føler meg heldig som har fått muligheten til å jobbe sammen med Felipe Romero i Trondheim, som også er en utrolig kunnskapsrik barber. Hos ham kan flere av dere ha møtt og blitt kjent med meg. +

+

+ Jeg deltar stadig på videreutdanninger fordi jeg tror at kontinuerlig utvikling, kvalitetsarbeid og engasjement hjelper meg til å bli en bedre fagperson dag for dag." +

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

Behandlinger

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

Priser

+

Prisen på alle hårbehandling inkluderer hårvask og styling.
10% studentrabatt ved framvising av ID, kan benyttes fra mandag til torsdag.

+
+ +
+
+
+ +
service_description;?>
+
+
+
kr service_price;?>
+
+
+
+ + + +
+
+
+ + + +
+
+
+
+ +

Åpningstider

+

Gratis kundeprarking under behandlingen

+
+
+
+
+
+
Ukedager
+
+
+
10:00 - 18:00
+
+
+
+
+
Lørdag
+
+
+
10:00 - 16:00
+
+
+
+
+
Søndag
+
+
+
Stengt
+
+
+
+
+
\ No newline at end of file diff --git a/application/views/pages/includes/beauty-form-en.php b/application/views/pages/includes/beauty-form-en.php new file mode 100755 index 0000000..2b66c33 --- /dev/null +++ b/application/views/pages/includes/beauty-form-en.php @@ -0,0 +1,293 @@ + + + +
+ +
+ + +
+
+
+
+ +

About Us

+
+
+
+

+ My name is Evelin Bence, leader and creator of Studio Beve. I consider it + important that our guests during their stay – resting a little from the noise of the + world – recharge their batteries and return to everyday life beautified inside as + well as outside. +

+

+ Quality time, maximum attention, the most professional tools, together with + professionalism and expertise, stand for the basis of our philosophy and + services. +

+

+ I believe that beauty, fashion, and trend are not gender-specific, so we have the + opportunity for everyone to become beautiful in one place, regardless of gender. + And among our Barber and Beauty departments, you can find the right services + for you. +

+

+ With nearly 10 years of experience in the beauty industry, including many years + of international experience, I thought it was time to open my own studio here in + Trondheim at Innheredsveien 92, where guests can park free of charge during + the treatments. +

+

+ It is an extra pleasure for me that I managed to find a traditional place where + there was already a beauty salon in the 50s. Therefore, I now have the + opportunity to carry on this tradition in a modern environment. + Become beautiful with us. We look forward to seeing you. +

+
+
+ +

Evelin Bence
Owner, Studio Beve

+
+
+
+
+ +

EVELIN Bence - lash stylist, make up artist, PMU artist

+
+
+
+

+ My attraction and love for the profession was already evident as a child. First, I acquired the basics of makeup on myself, and then on my girlfriends. As an adult, there was no question what my path should be. I finished my studies as a beautician in 2016, and also obtained my eyelash extension qualification in the same year. +

+

+ I have always strived – and still strive – to provide my guests with the fullest possible service. Therefore, I pay special attention to further training. Among my instructors you can find multiple Hungarian champion makeup artists or make-up tattooists. +

+

+ My latest passion is making makeup tattoos. Today, the use of state-of-the-art technology and professional materials allows me to provide my guests with a natural, individualized look. The services in my portfolio reflect the natural direction I represent, be it makeup, makeup tattoos or even eyelashes. +

+

+ I am proud that over the years I have been able to close the happy smiles of satisfied guests in my heart, in my native Ukraine, and then in Hungary. I am also pleased that although I have only been living in Norway since April 2023, I nevertheless manage to establish a good relationship with my guests and spend time with them in a good mood. I also place great emphasis on learning the magical Norwegian language so that I can talk to my guests in their native language. +

+

+ I believe that continuous development, quality work and dedication help me to become a better professional day by day. +

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

RADVILE Karlonaite - Nail artist

+
+
+
+

+ My name is Radvile, and I am a nail technician with a deep passion for nail design. My interest in nails began in 2018, and since then I have spent countless hours developing my skills. I specialize in nail extensions, strengthening, corrections, and creative designs – including 3D effects and the latest trends. +

+

+ I am a perfectionist, but also very friendly and open. It’s important to me that my clients feel relaxed and well taken care of. I love hearing about their ideas and wishes, and I always take the time to make sure the result is exactly what they dream of. +

+

+ I want the visit with me to be not only about beautiful nails, but also about a pleasant experience – a little break from everyday life where you can relax, chat, and feel truly welcome. +

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

Treatments

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

Prices

+
+ + service_category != $prevousCategory){ + ?> +
+

service_category;?>

+
+ +
+
+
+ +
service_description;?>
+
+
+
kr service_price;?>
+
+
+
+ service_category; + } + } + ?> +
+
+ +
+ + + +
+
+
+
+ +

Working Hours

+

Free customer parking during treatments

+
+
+
+
+
+
Weekdays
+
+
+
10:00 - 18:00
+
+
+
+
+
Saturday
+
+
+
10:00 - 16:00
+
+
+
+
+
Sunday
+
+
+
Closed
+
+
+
+
+
diff --git a/application/views/pages/includes/beauty-form-en_20250406.php b/application/views/pages/includes/beauty-form-en_20250406.php new file mode 100755 index 0000000..5341f78 --- /dev/null +++ b/application/views/pages/includes/beauty-form-en_20250406.php @@ -0,0 +1,296 @@ + + + +
+ +
+ + +
+
+
+
+ +

About Us

+
+
+
+

+ My name is Evelin Bence, leader and creator of Studio Beve. I consider it + important that our guests during their stay – resting a little from the noise of the + world – recharge their batteries and return to everyday life beautified inside as + well as outside. +

+

+ Quality time, maximum attention, the most professional tools, together with + professionalism and expertise, stand for the basis of our philosophy and + services. +

+

+ I believe that beauty, fashion, and trend are not gender-specific, so we have the + opportunity for everyone to become beautiful in one place, regardless of gender. + And among our Barber and Beauty departments, you can find the right services + for you. +

+

+ With nearly 10 years of experience in the beauty industry, including many years + of international experience, I thought it was time to open my own studio here in + Trondheim at Innheredsveien 92, where guests can park free of charge during + the treatments. +

+

+ It is an extra pleasure for me that I managed to find a traditional place where + there was already a beauty salon in the 50s. Therefore, I now have the + opportunity to carry on this tradition in a modern environment. + Become beautiful with us. We look forward to seeing you. +

+
+
+ +

Evelin Bence
Owner, Studio Beve

+
+
+
+
+ +

EVELIN Bence - lash stylist, make up artist, PMU artist

+
+
+
+

+ My attraction and love for the profession was already evident as a child. First, I acquired the basics of makeup on myself, and then on my girlfriends. As an adult, there was no question what my path should be. I finished my studies as a beautician in 2016, and also obtained my eyelash extension qualification in the same year. +

+

+ I have always strived – and still strive – to provide my guests with the fullest possible service. Therefore, I pay special attention to further training. Among my instructors you can find multiple Hungarian champion makeup artists or make-up tattooists. +

+

+ My latest passion is making makeup tattoos. Today, the use of state-of-the-art technology and professional materials allows me to provide my guests with a natural, individualized look. The services in my portfolio reflect the natural direction I represent, be it makeup, makeup tattoos or even eyelashes. +

+

+ I am proud that over the years I have been able to close the happy smiles of satisfied guests in my heart, in my native Ukraine, and then in Hungary. I am also pleased that although I have only been living in Norway since April 2023, I nevertheless manage to establish a good relationship with my guests and spend time with them in a good mood. I also place great emphasis on learning the magical Norwegian language so that I can talk to my guests in their native language. +

+

+ I believe that continuous development, quality work and dedication help me to become a better professional day by day. +

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

NGOC Tran - Nail artist

+
+
+
+

+ My name is Ngoc Tran, and I work and study in Norway. With over two years of experience in nail design, my goal is to create unique, durable, and beautiful nails for each client. +

+

+ I received my training at a prestigious center in Vietnam, where I gained high-level expertise in nail design. After completing my studies, I worked there for an extended period, which gave me solid practical experience. I continuously develop my skills to always provide the highest quality for my clients. +

+

+ From clean and natural-looking nails to bold and creative designs, I craft a variety of styles, always focusing on balance, shape, and color harmony. I place special emphasis on the Builder Gel technique, which creates strong yet flexible nails that are not only beautiful but also highly durable. Additionally, I prioritize nail care and protection to ensure that my clients can maintain healthy natural nails even with frequent treatments. +

+

+ I pay great attention to detail and quality because I believe that nails are not just about beauty but also about expressing personality. If you’re looking for nails that are not only stunning but also strong and long-lasting, I look forward to welcoming you to the salon! +

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

Treatments

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

Prices

+
+ + service_category != $prevousCategory){ + ?> +
+

service_category;?>

+
+ +
+
+
+ +
service_description;?>
+
+
+
kr service_price;?>
+
+
+
+ service_category; + } + } + ?> +
+
+ +
+ + + +
+
+
+
+ +

Working Hours

+

Free customer parking during treatments

+
+
+
+
+
+
Weekdays
+
+
+
10:00 - 18:00
+
+
+
+
+
Saturday
+
+
+
10:00 - 16:00
+
+
+
+
+
Sunday
+
+
+
Closed
+
+
+
+
+
\ No newline at end of file diff --git a/application/views/pages/includes/beauty-form-en_20250524.php b/application/views/pages/includes/beauty-form-en_20250524.php new file mode 100755 index 0000000..b69c691 --- /dev/null +++ b/application/views/pages/includes/beauty-form-en_20250524.php @@ -0,0 +1,300 @@ + + + +
+ +
+ + +
+
+
+
+ +

About Us

+
+
+
+

+ My name is Evelin Bence, leader and creator of Studio Beve. I consider it + important that our guests during their stay – resting a little from the noise of the + world – recharge their batteries and return to everyday life beautified inside as + well as outside. +

+

+ Quality time, maximum attention, the most professional tools, together with + professionalism and expertise, stand for the basis of our philosophy and + services. +

+

+ I believe that beauty, fashion, and trend are not gender-specific, so we have the + opportunity for everyone to become beautiful in one place, regardless of gender. + And among our Barber and Beauty departments, you can find the right services + for you. +

+

+ With nearly 10 years of experience in the beauty industry, including many years + of international experience, I thought it was time to open my own studio here in + Trondheim at Innheredsveien 92, where guests can park free of charge during + the treatments. +

+

+ It is an extra pleasure for me that I managed to find a traditional place where + there was already a beauty salon in the 50s. Therefore, I now have the + opportunity to carry on this tradition in a modern environment. + Become beautiful with us. We look forward to seeing you. +

+
+
+ +

Evelin Bence
Owner, Studio Beve

+
+
+
+
+ +

EVELIN Bence - lash stylist, make up artist, PMU artist

+
+
+
+

+ My attraction and love for the profession was already evident as a child. First, I acquired the basics of makeup on myself, and then on my girlfriends. As an adult, there was no question what my path should be. I finished my studies as a beautician in 2016, and also obtained my eyelash extension qualification in the same year. +

+

+ I have always strived – and still strive – to provide my guests with the fullest possible service. Therefore, I pay special attention to further training. Among my instructors you can find multiple Hungarian champion makeup artists or make-up tattooists. +

+

+ My latest passion is making makeup tattoos. Today, the use of state-of-the-art technology and professional materials allows me to provide my guests with a natural, individualized look. The services in my portfolio reflect the natural direction I represent, be it makeup, makeup tattoos or even eyelashes. +

+

+ I am proud that over the years I have been able to close the happy smiles of satisfied guests in my heart, in my native Ukraine, and then in Hungary. I am also pleased that although I have only been living in Norway since April 2023, I nevertheless manage to establish a good relationship with my guests and spend time with them in a good mood. I also place great emphasis on learning the magical Norwegian language so that I can talk to my guests in their native language. +

+

+ I believe that continuous development, quality work and dedication help me to become a better professional day by day. +

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

NGOC Tran - Nail artist

+
+
+
+

+ My name is Ngoc Tran, and I work and study in Norway. With over two years of experience in nail design, my goal is to create unique, durable, and beautiful nails for each client. +

+

+ I received my training at a prestigious center in Vietnam, where I gained high-level expertise in nail design. After completing my studies, I worked there for an extended period, which gave me solid practical experience. I continuously develop my skills to always provide the highest quality for my clients. +

+

+ From clean and natural-looking nails to bold and creative designs, I craft a variety of styles, always focusing on balance, shape, and color harmony. I place special emphasis on the Builder Gel technique, which creates strong yet flexible nails that are not only beautiful but also highly durable. Additionally, I prioritize nail care and protection to ensure that my clients can maintain healthy natural nails even with frequent treatments. +

+

+ I pay great attention to detail and quality because I believe that nails are not just about beauty but also about expressing personality. If you’re looking for nails that are not only stunning but also strong and long-lasting, I look forward to welcoming you to the salon! +

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

Treatments

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

Prices

+
+ + service_category != $prevousCategory){ + ?> +
+

service_category;?>

+
+ +
+
+
+ +
service_description;?>
+
+
+
kr service_price;?>
+
+
+
+ service_category; + } + } + ?> +
+
+ +
+ + + +
+
+
+
+ +

Working Hours

+

Free customer parking during treatments

+
+
+
+
+
+
Weekdays
+
+
+
10:00 - 18:00
+
+
+
+
+
Saturday
+
+
+
10:00 - 16:00
+
+
+
+
+
Sunday
+
+
+
Closed
+
+
+
+
+
\ No newline at end of file diff --git a/application/views/pages/includes/beauty-form-hu.php b/application/views/pages/includes/beauty-form-hu.php new file mode 100755 index 0000000..95451bc --- /dev/null +++ b/application/views/pages/includes/beauty-form-hu.php @@ -0,0 +1,313 @@ + + + +
+ +
+ + +
+
+
+
+ +

Rólunk

+
+
+
+

+ Bence Evelin vagyok a Studio Beve vezetője és megálmodója. Fontosnak + tartom, hogy a vendégek a nálunk töltött idő alatt – egy kicsit megpihenve a világ zajától – feltöltődjenek, és kívül-belül egszépülve térjenek vissza a mindennapokhoz. +

+

+ A minőségi idő, a maximális figyelem, a legprofesszionálisabb eszközök, a + hivatástudattal és szakértelemmel karöltve jelentik a filozófiánk és + szolgáltatásaink alapjait. +

+

+ Hiszem, hogy a szépség, a divat és a trend nem nemhez kötött, így nálunk + lehetőség van arra, hogy mindenki egy helyen szépülhessen nemtől függetlenül. + A Barber és Beauty részlegeink között pedig megtalálhatjátok a számotokra + megfelelő szolgáltatásokat. +

+

+ Közel 10 éves szépségipari, és közte több éves nemzetközi tapasztalattal + elérkezettnek láttam az időt, hogy megnyissam saját stúdiómat itt + Trondheimben, az Innheredsveien 92 szám alatt, ahol a vendégeknek lehetősége + van ingyenes parkolásra is a kezelések időtartama alatt. +

+

+ Extra öröm számomra, hogy egy olyan tradicionális helyet sikerült találnom, + ahol az 50-es években már szépségszalon működött, ennek köszönhetően a + hagyományt, modern környezetben lehetőségem van tovább vinni. + Szépülj velünk, szeretettel várunk. +

+
+
+ +

Bence Evelin
Tulajdonos, Studio Beve

+
+
+
+
+ +

EVELIN Bence - szempilla- és szemöldök stylist, sminkes

+
+
+
+

+ "A szakma iránti vonzalmam, szeretetem már kisgyerekként megmutatkozott. + Először saját magamon, majd később a barátnőimen sajátítottam el a sminkelés + alapjait. Felnőttként pedig nem volt kérdés, hogy mi is az én utam. Kozmetikusi + tanulmányaimat 2016-ban fejeztem be és ugyanebben az évben szempillaépítő + képesítést is szereztem. +

+

+ Mindig törekedtem - és mai napig törekszem - arra, hogy a vendégeimnek minél + teljeskörűbb szolgáltatást tudjak nyújtani. Ezért kiemelt figyelmet fordítok a + továbbképzésekre. Oktatóim között megtalálhatóak többszörös magyar bajnok + sminkmesterek vagy épp sminktetoválók. +

+

+ A legújabb szenvedélyem a sminktetoválások készítése. Ma már a + csúcstechnológia és a professzionális alapanyagok használata lehetővé teszi, + hogy természetes, egyénre szabott megjelenést biztosíthassak a vendégeimnek. + A portfóliómban lévő szolgáltatásoknál a természetes irányt képviselem, legyen + szó sminkről, sminktetoválásról vagy épp műszempilláról. +

+

+ Büszke vagyok arra, hogy az évek alatt elégedett vendégek boldog mosolyát + zárhattam a szívembe, szülőhazámban Ukrajnában, majd Magyarországon. + Szintén örömmel tölt el, hogy noha még csak 2023 áprilisától élek Norvégiában, + mégis sikerül a vendégeimmel jó kapcsolatot kialakítani, a közös időt jó + hangulatban eltölteni. A varázslatos norvég nyelv elsajátítására is nagy + hangsúlyt fektetek, hogy a vendégeimmel, az anyanyelvükön tudjak beszélgetni. +

+

+ Hiszem, hogy a folyamatos fejlődés, a minőségi munka és az odaadás segít, + hogy napról-napra jobb szakember lehessek." +

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

RADVILE Karlonaite - Műkörömépítő

+
+
+
+

+ A nevem Radvile, és szenvedélyesen foglalkozom körömdizájnnal, mint körömtechnikus. Az érdeklődésem a körmök iránt 2018-ban kezdődött, és azóta számtalan órát töltöttem a tudásom fejlesztésével. Körömhosszabbításra, erősítésre, korrekcióra és kreatív dizájnokra specializálódtam – beleértve a 3D hatásokat és a legújabb trendeket is. +

+

+ Perfekcionista vagyok, ugyanakkor nagyon barátságos és nyitott. Számomra fontos, hogy a vendégeim ellazulva és gondoskodva érezzék magukat. Szeretek hallgatni a vendégek ötleteire és kívánságaira, és mindig időt szánok arra, hogy a végeredmény pontosan olyan legyen, amilyet megálmodtak. +

+

+ Azt szeretném, hogy a nálam tett látogatás ne csak a szép körmökről szóljon, hanem egy kellemes élmény is legyen – egy kis szünet a hétköznapokból, ahol az ember lazíthat, beszélgethet, és igazán otthon érezheti magát. +

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

Szolgáltatások

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

Árlista

+
+ + service_category != $prevousCategory){ + ?> +
+

service_category;?>

+
+ +
+
+
+ +
service_description;?>
+
+
+
kr service_price;?>
+
+
+
+ service_category; + } + } + ?> +
+
+ +
+ + + + + +
+
+
+
+ +

Nyitvatartási idő

+

Ingyenes parkolás a szolgáltatások ideje alatt

+
+
+
+
+
+
Hétköznap
+
+
+
10:00 - 18:00
+
+
+
+
+
Szombat
+
+
+
10:00 - 16:00
+
+
+
+
+
Vasárnap
+
+
+
Zárva
+
+
+
+
+
diff --git a/application/views/pages/includes/beauty-form-hu_20250330.php b/application/views/pages/includes/beauty-form-hu_20250330.php new file mode 100755 index 0000000..9c3be91 --- /dev/null +++ b/application/views/pages/includes/beauty-form-hu_20250330.php @@ -0,0 +1,317 @@ +https://www.facebook.com/studiobevebeauty + + +
+ +
+ + +
+
+
+
+ +

Rólunk

+
+
+
+

+ Bence Evelin vagyok a Studio Beve vezetője és megálmodója. Fontosnak + tartom, hogy a vendégek a nálunk töltött idő alatt – egy kicsit megpihenve a világ zajától – feltöltődjenek, és kívül-belül egszépülve térjenek vissza a mindennapokhoz. +

+

+ A minőségi idő, a maximális figyelem, a legprofesszionálisabb eszközök, a + hivatástudattal és szakértelemmel karöltve jelentik a filozófiánk és + szolgáltatásaink alapjait. +

+

+ Hiszem, hogy a szépség, a divat és a trend nem nemhez kötött, így nálunk + lehetőség van arra, hogy mindenki egy helyen szépülhessen nemtől függetlenül. + A Barber és Beauty részlegeink között pedig megtalálhatjátok a számotokra + megfelelő szolgáltatásokat. +

+

+ Közel 10 éves szépségipari, és közte több éves nemzetközi tapasztalattal + elérkezettnek láttam az időt, hogy megnyissam saját stúdiómat itt + Trondheimben, az Innheredsveien 92 szám alatt, ahol a vendégeknek lehetősége + van ingyenes parkolásra is a kezelések időtartama alatt. +

+

+ Extra öröm számomra, hogy egy olyan tradicionális helyet sikerült találnom, + ahol az 50-es években már szépségszalon működött, ennek köszönhetően a + hagyományt, modern környezetben lehetőségem van tovább vinni. + Szépülj velünk, szeretettel várunk. +

+
+
+ +

Bence Evelin
Tulajdonos, Studio Beve

+
+
+
+
+ +

EVELIN Bence - szempilla- és szemöldök stylist, sminkes

+
+
+
+

+ "A szakma iránti vonzalmam, szeretetem már kisgyerekként megmutatkozott. + Először saját magamon, majd később a barátnőimen sajátítottam el a sminkelés + alapjait. Felnőttként pedig nem volt kérdés, hogy mi is az én utam. Kozmetikusi + tanulmányaimat 2016-ban fejeztem be és ugyanebben az évben szempillaépítő + képesítést is szereztem. +

+

+ Mindig törekedtem - és mai napig törekszem - arra, hogy a vendégeimnek minél + teljeskörűbb szolgáltatást tudjak nyújtani. Ezért kiemelt figyelmet fordítok a + továbbképzésekre. Oktatóim között megtalálhatóak többszörös magyar bajnok + sminkmesterek vagy épp sminktetoválók. +

+

+ A legújabb szenvedélyem a sminktetoválások készítése. Ma már a + csúcstechnológia és a professzionális alapanyagok használata lehetővé teszi, + hogy természetes, egyénre szabott megjelenést biztosíthassak a vendégeimnek. + A portfóliómban lévő szolgáltatásoknál a természetes irányt képviselem, legyen + szó sminkről, sminktetoválásról vagy épp műszempilláról. +

+

+ Büszke vagyok arra, hogy az évek alatt elégedett vendégek boldog mosolyát + zárhattam a szívembe, szülőhazámban Ukrajnában, majd Magyarországon. + Szintén örömmel tölt el, hogy noha még csak 2023 áprilisától élek Norvégiában, + mégis sikerül a vendégeimmel jó kapcsolatot kialakítani, a közös időt jó + hangulatban eltölteni. A varázslatos norvég nyelv elsajátítására is nagy + hangsúlyt fektetek, hogy a vendégeimmel, az anyanyelvükön tudjak beszélgetni. +

+

+ Hiszem, hogy a folyamatos fejlődés, a minőségi munka és az odaadás segít, + hogy napról-napra jobb szakember lehessek." +

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

NGOC Tran - Műkörömépítő

+
+
+
+

+ A nevem Ngoc Tran, Norvégiában dolgozom és tanulok. Több mint két év tapasztalattal rendelkezem a műkörömépítés területén, és célom, hogy minden vendég számára egyedi, tartós és gyönyörű körmöket készítsek. +

+

+ Tanulmányaimat Vietnámban egy neves központban végeztem, ahol magas szintű szakmai tudást sajátítottam el a műkörömépítés terén. A képzés befejezése után hosszabb ideig ott is dolgoztam, ami értékes gyakorlati tapasztalatot adott számomra. Folyamatosan fejlesztem magam, hogy mindig a legjobb minőséget nyújthassam ügyfeleimnek. +

+

+ A természetes, letisztult körmöktől a merész és kreatív dizájnokig számos stílust készítek, mindig ügyelve a forma, a színek és az egyensúly harmóniájára. Különösen nagy hangsúlyt fektetek a Builder Gel technikára, amely erős, mégis rugalmas körmöket biztosít, így azok nemcsak szépek, hanem igazán strapabírók is. Emellett kiemelt figyelmet fordítok a körömápolásra és a természetes köröm védelmére, hogy ügyfeleim még rendszeres kezelések mellett is egészséges körmökkel rendelkezzenek. +

+

+ Nagy figyelmet fordítok a részletekre és a minőségre, mert hiszem, hogy a körmök nem csupán a szépségről szólnak, hanem az egyéniség kifejezéséről is. Ha olyan körmöket szeretnél, amelyek nemcsak gyönyörűek, hanem tartósak és erősek is, szeretettel várlak a szalonban! +

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

Szolgáltatások

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

Árlista

+
+ + service_category != $prevousCategory){ + ?> +
+

service_category;?>

+
+ +
+
+
+ +
service_description;?>
+
+
+
kr service_price;?>
+
+
+
+ service_category; + } + } + ?> +
+
+ +
+ + + + + +
+
+
+
+ +

Nyitvatartási idő

+

Ingyenes parkolás a szolgáltatások ideje alatt

+
+
+
+
+
+
Hétköznap
+
+
+
10:00 - 18:00
+
+
+
+
+
Szombat
+
+
+
10:00 - 16:00
+
+
+
+
+
Vasárnap
+
+
+
Zárva
+
+
+
+
+
diff --git a/application/views/pages/includes/beauty-form-hu_20250406.php b/application/views/pages/includes/beauty-form-hu_20250406.php new file mode 100755 index 0000000..b212a7c --- /dev/null +++ b/application/views/pages/includes/beauty-form-hu_20250406.php @@ -0,0 +1,317 @@ + + + +
+ +
+ + +
+
+
+
+ +

Rólunk

+
+
+
+

+ Bence Evelin vagyok a Studio Beve vezetője és megálmodója. Fontosnak + tartom, hogy a vendégek a nálunk töltött idő alatt – egy kicsit megpihenve a világ zajától – feltöltődjenek, és kívül-belül egszépülve térjenek vissza a mindennapokhoz. +

+

+ A minőségi idő, a maximális figyelem, a legprofesszionálisabb eszközök, a + hivatástudattal és szakértelemmel karöltve jelentik a filozófiánk és + szolgáltatásaink alapjait. +

+

+ Hiszem, hogy a szépség, a divat és a trend nem nemhez kötött, így nálunk + lehetőség van arra, hogy mindenki egy helyen szépülhessen nemtől függetlenül. + A Barber és Beauty részlegeink között pedig megtalálhatjátok a számotokra + megfelelő szolgáltatásokat. +

+

+ Közel 10 éves szépségipari, és közte több éves nemzetközi tapasztalattal + elérkezettnek láttam az időt, hogy megnyissam saját stúdiómat itt + Trondheimben, az Innheredsveien 92 szám alatt, ahol a vendégeknek lehetősége + van ingyenes parkolásra is a kezelések időtartama alatt. +

+

+ Extra öröm számomra, hogy egy olyan tradicionális helyet sikerült találnom, + ahol az 50-es években már szépségszalon működött, ennek köszönhetően a + hagyományt, modern környezetben lehetőségem van tovább vinni. + Szépülj velünk, szeretettel várunk. +

+
+
+ +

Bence Evelin
Tulajdonos, Studio Beve

+
+
+
+
+ +

EVELIN Bence - szempilla- és szemöldök stylist, sminkes

+
+
+
+

+ "A szakma iránti vonzalmam, szeretetem már kisgyerekként megmutatkozott. + Először saját magamon, majd később a barátnőimen sajátítottam el a sminkelés + alapjait. Felnőttként pedig nem volt kérdés, hogy mi is az én utam. Kozmetikusi + tanulmányaimat 2016-ban fejeztem be és ugyanebben az évben szempillaépítő + képesítést is szereztem. +

+

+ Mindig törekedtem - és mai napig törekszem - arra, hogy a vendégeimnek minél + teljeskörűbb szolgáltatást tudjak nyújtani. Ezért kiemelt figyelmet fordítok a + továbbképzésekre. Oktatóim között megtalálhatóak többszörös magyar bajnok + sminkmesterek vagy épp sminktetoválók. +

+

+ A legújabb szenvedélyem a sminktetoválások készítése. Ma már a + csúcstechnológia és a professzionális alapanyagok használata lehetővé teszi, + hogy természetes, egyénre szabott megjelenést biztosíthassak a vendégeimnek. + A portfóliómban lévő szolgáltatásoknál a természetes irányt képviselem, legyen + szó sminkről, sminktetoválásról vagy épp műszempilláról. +

+

+ Büszke vagyok arra, hogy az évek alatt elégedett vendégek boldog mosolyát + zárhattam a szívembe, szülőhazámban Ukrajnában, majd Magyarországon. + Szintén örömmel tölt el, hogy noha még csak 2023 áprilisától élek Norvégiában, + mégis sikerül a vendégeimmel jó kapcsolatot kialakítani, a közös időt jó + hangulatban eltölteni. A varázslatos norvég nyelv elsajátítására is nagy + hangsúlyt fektetek, hogy a vendégeimmel, az anyanyelvükön tudjak beszélgetni. +

+

+ Hiszem, hogy a folyamatos fejlődés, a minőségi munka és az odaadás segít, + hogy napról-napra jobb szakember lehessek." +

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

NGOC Tran - Műkörömépítő

+
+
+
+

+ A nevem Ngoc Tran, Norvégiában dolgozom és tanulok. Több mint két év tapasztalattal rendelkezem a műkörömépítés területén, és célom, hogy minden vendég számára egyedi, tartós és gyönyörű körmöket készítsek. +

+

+ Tanulmányaimat Vietnámban egy neves központban végeztem, ahol magas szintű szakmai tudást sajátítottam el a műkörömépítés terén. A képzés befejezése után hosszabb ideig ott is dolgoztam, ami értékes gyakorlati tapasztalatot adott számomra. Folyamatosan fejlesztem magam, hogy mindig a legjobb minőséget nyújthassam ügyfeleimnek. +

+

+ A természetes, letisztult körmöktől a merész és kreatív dizájnokig számos stílust készítek, mindig ügyelve a forma, a színek és az egyensúly harmóniájára. Különösen nagy hangsúlyt fektetek a Builder Gel technikára, amely erős, mégis rugalmas körmöket biztosít, így azok nemcsak szépek, hanem igazán strapabírók is. Emellett kiemelt figyelmet fordítok a körömápolásra és a természetes köröm védelmére, hogy ügyfeleim még rendszeres kezelések mellett is egészséges körmökkel rendelkezzenek. +

+

+ Nagy figyelmet fordítok a részletekre és a minőségre, mert hiszem, hogy a körmök nem csupán a szépségről szólnak, hanem az egyéniség kifejezéséről is. Ha olyan körmöket szeretnél, amelyek nemcsak gyönyörűek, hanem tartósak és erősek is, szeretettel várlak a szalonban! +

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

Szolgáltatások

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

Árlista

+
+ + service_category != $prevousCategory){ + ?> +
+

service_category;?>

+
+ +
+
+
+ +
service_description;?>
+
+
+
kr service_price;?>
+
+
+
+ service_category; + } + } + ?> +
+
+ +
+ + + + + +
+
+
+
+ +

Nyitvatartási idő

+

Ingyenes parkolás a szolgáltatások ideje alatt

+
+
+
+
+
+
Hétköznap
+
+
+
10:00 - 18:00
+
+
+
+
+
Szombat
+
+
+
10:00 - 16:00
+
+
+
+
+
Vasárnap
+
+
+
Zárva
+
+
+
+
+
diff --git a/application/views/pages/includes/beauty-form-hu_20250524.php b/application/views/pages/includes/beauty-form-hu_20250524.php new file mode 100755 index 0000000..0d55269 --- /dev/null +++ b/application/views/pages/includes/beauty-form-hu_20250524.php @@ -0,0 +1,320 @@ + + + +
+ +
+ + +
+
+
+
+ +

Rólunk

+
+
+
+

+ Bence Evelin vagyok a Studio Beve vezetője és megálmodója. Fontosnak + tartom, hogy a vendégek a nálunk töltött idő alatt – egy kicsit megpihenve a világ zajától – feltöltődjenek, és kívül-belül egszépülve térjenek vissza a mindennapokhoz. +

+

+ A minőségi idő, a maximális figyelem, a legprofesszionálisabb eszközök, a + hivatástudattal és szakértelemmel karöltve jelentik a filozófiánk és + szolgáltatásaink alapjait. +

+

+ Hiszem, hogy a szépség, a divat és a trend nem nemhez kötött, így nálunk + lehetőség van arra, hogy mindenki egy helyen szépülhessen nemtől függetlenül. + A Barber és Beauty részlegeink között pedig megtalálhatjátok a számotokra + megfelelő szolgáltatásokat. +

+

+ Közel 10 éves szépségipari, és közte több éves nemzetközi tapasztalattal + elérkezettnek láttam az időt, hogy megnyissam saját stúdiómat itt + Trondheimben, az Innheredsveien 92 szám alatt, ahol a vendégeknek lehetősége + van ingyenes parkolásra is a kezelések időtartama alatt. +

+

+ Extra öröm számomra, hogy egy olyan tradicionális helyet sikerült találnom, + ahol az 50-es években már szépségszalon működött, ennek köszönhetően a + hagyományt, modern környezetben lehetőségem van tovább vinni. + Szépülj velünk, szeretettel várunk. +

+
+
+ +

Bence Evelin
Tulajdonos, Studio Beve

+
+
+
+
+ +

EVELIN Bence - szempilla- és szemöldök stylist, sminkes

+
+
+
+

+ "A szakma iránti vonzalmam, szeretetem már kisgyerekként megmutatkozott. + Először saját magamon, majd később a barátnőimen sajátítottam el a sminkelés + alapjait. Felnőttként pedig nem volt kérdés, hogy mi is az én utam. Kozmetikusi + tanulmányaimat 2016-ban fejeztem be és ugyanebben az évben szempillaépítő + képesítést is szereztem. +

+

+ Mindig törekedtem - és mai napig törekszem - arra, hogy a vendégeimnek minél + teljeskörűbb szolgáltatást tudjak nyújtani. Ezért kiemelt figyelmet fordítok a + továbbképzésekre. Oktatóim között megtalálhatóak többszörös magyar bajnok + sminkmesterek vagy épp sminktetoválók. +

+

+ A legújabb szenvedélyem a sminktetoválások készítése. Ma már a + csúcstechnológia és a professzionális alapanyagok használata lehetővé teszi, + hogy természetes, egyénre szabott megjelenést biztosíthassak a vendégeimnek. + A portfóliómban lévő szolgáltatásoknál a természetes irányt képviselem, legyen + szó sminkről, sminktetoválásról vagy épp műszempilláról. +

+

+ Büszke vagyok arra, hogy az évek alatt elégedett vendégek boldog mosolyát + zárhattam a szívembe, szülőhazámban Ukrajnában, majd Magyarországon. + Szintén örömmel tölt el, hogy noha még csak 2023 áprilisától élek Norvégiában, + mégis sikerül a vendégeimmel jó kapcsolatot kialakítani, a közös időt jó + hangulatban eltölteni. A varázslatos norvég nyelv elsajátítására is nagy + hangsúlyt fektetek, hogy a vendégeimmel, az anyanyelvükön tudjak beszélgetni. +

+

+ Hiszem, hogy a folyamatos fejlődés, a minőségi munka és az odaadás segít, + hogy napról-napra jobb szakember lehessek." +

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

NGOC Tran - Műkörömépítő

+
+
+
+

+ A nevem Ngoc Tran, Norvégiában dolgozom és tanulok. Több mint két év tapasztalattal rendelkezem a műkörömépítés területén, és célom, hogy minden vendég számára egyedi, tartós és gyönyörű körmöket készítsek. +

+

+ Tanulmányaimat Vietnámban egy neves központban végeztem, ahol magas szintű szakmai tudást sajátítottam el a műkörömépítés terén. A képzés befejezése után hosszabb ideig ott is dolgoztam, ami értékes gyakorlati tapasztalatot adott számomra. Folyamatosan fejlesztem magam, hogy mindig a legjobb minőséget nyújthassam ügyfeleimnek. +

+

+ A természetes, letisztult körmöktől a merész és kreatív dizájnokig számos stílust készítek, mindig ügyelve a forma, a színek és az egyensúly harmóniájára. Különösen nagy hangsúlyt fektetek a Builder Gel technikára, amely erős, mégis rugalmas körmöket biztosít, így azok nemcsak szépek, hanem igazán strapabírók is. Emellett kiemelt figyelmet fordítok a körömápolásra és a természetes köröm védelmére, hogy ügyfeleim még rendszeres kezelések mellett is egészséges körmökkel rendelkezzenek. +

+

+ Nagy figyelmet fordítok a részletekre és a minőségre, mert hiszem, hogy a körmök nem csupán a szépségről szólnak, hanem az egyéniség kifejezéséről is. Ha olyan körmöket szeretnél, amelyek nemcsak gyönyörűek, hanem tartósak és erősek is, szeretettel várlak a szalonban! +

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

Szolgáltatások

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

Árlista

+
+ + service_category != $prevousCategory){ + ?> +
+

service_category;?>

+
+ +
+
+
+ +
service_description;?>
+
+
+
kr service_price;?>
+
+
+
+ service_category; + } + } + ?> +
+
+ +
+ + + + + +
+
+
+
+ +

Nyitvatartási idő

+

Ingyenes parkolás a szolgáltatások ideje alatt

+
+
+
+
+
+
Hétköznap
+
+
+
10:00 - 18:00
+
+
+
+
+
Szombat
+
+
+
10:00 - 16:00
+
+
+
+
+
Vasárnap
+
+
+
Zárva
+
+
+
+
+
diff --git a/application/views/pages/includes/beauty-form-no.php b/application/views/pages/includes/beauty-form-no.php new file mode 100755 index 0000000..a28a7d3 --- /dev/null +++ b/application/views/pages/includes/beauty-form-no.php @@ -0,0 +1,314 @@ + + +
+ +
+ + +
+
+
+
+ +

Om oss

+
+
+
+

+ Mitt navn er Evelin Bence, lederen og skaperen av Studio Beve. Jeg anser det som + viktig at våre gjester under oppholdet hos oss – mens de stenger ute litt av støyen + fra omverdenen – kan lade sine batterier og kan vende tilbake til hverdagen + forskjønnet både innvendig og utvendig. +

+

+ Kvalitetstid, maksimal oppmerksomhet, de mest profesjonelle verktøyene, hånd + i hånd med profesjonalitet og kompetanse, utgjør grunnlaget for vår filosofi og våre + tjenester. +

+

+ Jeg mener at skjønnhet, mote og trend ikke er kjønnsspesifikke, og hos oss har + derfor alle mulighet til å bli vakrere på ett sted, uavhengig av kjønn. Hos Studio + Beve Barber og Studio Beve Beauty kan dere finne de tjenestene som er riktige + for dere. +

+

+ Med nesten 10 års erfaring fra skjønnhetsindustrien, inkludert mange års + internasjonal erfaring, tenkte jeg det var på tide å åpne mitt eget studio her i + Trondheim i Innheredsveien 92, hvor gjestene har mulighet til å parkere gratis + under behandlingene. +

+

+ Det er en ekstra glede for meg at jeg klarte å finne et tradisjonelt sted hvor det + allerede var en skjønnhetssalong på 50-tallet. Derfor har jeg nå muligheten til å + videreføre denne tradisjonen i et moderne miljø. + Bli vakker hos oss. Vi ser frem til å ønske deg velkommen. +

+
+
+ +

Evelin Bence
Eieren, Studio Beve

+
+
+
+
+ +

EVELIN Bence - vippestylist, make up artist, PMU-artist

+
+
+
+

+ "Min tiltrekning og kjærlighet til yrket var tydelig allerede som barn. Først + tilegnet jeg meg det grunnleggende om sminke på meg selv, og senere på + venninnene mine. Og som voksen var det ingen tvil om hvilken vei jeg skulle + gå. Jeg avsluttet studiene mine i skjønnhetspleie i 2016 og fikk også min + kvalifikasjon i vippeextension samme år. +

+

+ Jeg har alltid forsøkt, og streber fortsatt etter å gi mine gjester en så fullstendig + service som mulig. Derfor legger jeg særlig vekt på videreutdanning. Blant + instruktørene mine er det makeupartister og sminketatovører som har vunnet + flere ungarske mesterskap. +

+

+ Min nyeste lidenskap er å lage sminketatoveringer. I dag tillater bruk av + toppmoderne teknologi og profesjonelle materialer meg å gi gjestene mine et + naturlig, individualisert utseende. Tjenestene i porteføljen min er uttrykk for den + naturlige retningen jeg representerer, det være seg sminke, sminketatoveringer + eller endog vippeextension. +

+

+ Jeg er stolt over at jeg gjennom årene har kunnet ta de glade smilene til fornøyde + gjester i mitt hjerte, i mitt hjemland Ukraina, og deretter i Ungarn. Jeg er også + glad for at selv om jeg bare har bodd i Norge siden april 2023, klarer jeg likevel + å etablere et godt forhold til gjestene mine og tilbringe tiden sammen med dem i + godt humør. Jeg legger også stor vekt på å lære det magiske norske språket slik + at jeg kan snakke med gjestene mine på morsmålet deres. +

+

+ Jeg tror at kontinuerlig utvikling, kvalitetsarbeid og engasjement hjelper meg til + å bli en bedre profesjonell dag for dag." +

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

RADVILE Karlonaite - Negletekniker

+
+
+
+

+ Mitt navn er Radvile, og jeg er en negletekniker med stor lidenskap for negledesign. Min interesse for negler startet i 2018, og siden da har jeg brukt utallige timer på å utvikle mine ferdigheter. Jeg spesialiserer meg på negleforlengelser, forsterkninger, korreksjoner og kreative design – inkludert 3D-effekter og de nyeste trendene. +

+

+ Jeg er en perfeksjonist, men samtidig veldig vennlig og åpen. For meg er det viktig at kundene mine føler seg avslappet og godt ivaretatt. Jeg elsker å høre om kunders ideer og ønsker, og jeg tar meg alltid tid til å sikre at resultatet blir akkurat slik de drømmer om. +

+

+ Jeg vil at besøket hos meg ikke bare skal handle om vakre negler, men også om en hyggelig opplevelse – et lite pusterom fra hverdagen, hvor man kan slappe av, prate og føle seg velkommen. +

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

Behandlinger

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

Priser

+
+ + service_category != $prevousCategory){ + ?> +
+

service_category;?>

+
+ +
+
+
+ +
service_description;?>
+
+
+
kr service_price;?>
+
+
+
+ service_category; + } + } + ?> +
+
+ +
+ + + + +
+
+
+
+ +

Åpningstider

+

Gratis kunderparking under behandlingen

+
+
+
+
+
+
Ukedager
+
+
+
10:00 - 18:00
+
+
+
+
+
Lørdag
+
+
+
10:00 - 16:00
+
+
+
+
+
Søndag
+
+
+
Stengt
+
+
+
+
+
diff --git a/application/views/pages/includes/beauty-form-no_20250406.php b/application/views/pages/includes/beauty-form-no_20250406.php new file mode 100755 index 0000000..be21a9a --- /dev/null +++ b/application/views/pages/includes/beauty-form-no_20250406.php @@ -0,0 +1,316 @@ + + +
+ +
+ + +
+
+
+
+ +

Om oss

+
+
+
+

+ Mitt navn er Evelin Bence, lederen og skaperen av Studio Beve. Jeg anser det som + viktig at våre gjester under oppholdet hos oss – mens de stenger ute litt av støyen + fra omverdenen – kan lade sine batterier og kan vende tilbake til hverdagen + forskjønnet både innvendig og utvendig. +

+

+ Kvalitetstid, maksimal oppmerksomhet, de mest profesjonelle verktøyene, hånd + i hånd med profesjonalitet og kompetanse, utgjør grunnlaget for vår filosofi og våre + tjenester. +

+

+ Jeg mener at skjønnhet, mote og trend ikke er kjønnsspesifikke, og hos oss har + derfor alle mulighet til å bli vakrere på ett sted, uavhengig av kjønn. Hos Studio + Beve Barber og Studio Beve Beauty kan dere finne de tjenestene som er riktige + for dere. +

+

+ Med nesten 10 års erfaring fra skjønnhetsindustrien, inkludert mange års + internasjonal erfaring, tenkte jeg det var på tide å åpne mitt eget studio her i + Trondheim i Innheredsveien 92, hvor gjestene har mulighet til å parkere gratis + under behandlingene. +

+

+ Det er en ekstra glede for meg at jeg klarte å finne et tradisjonelt sted hvor det + allerede var en skjønnhetssalong på 50-tallet. Derfor har jeg nå muligheten til å + videreføre denne tradisjonen i et moderne miljø. + Bli vakker hos oss. Vi ser frem til å ønske deg velkommen. +

+
+
+ +

Evelin Bence
Eieren, Studio Beve

+
+
+
+
+ +

EVELIN Bence - vippestylist, make up artist, PMU-artist

+
+
+
+

+ "Min tiltrekning og kjærlighet til yrket var tydelig allerede som barn. Først + tilegnet jeg meg det grunnleggende om sminke på meg selv, og senere på + venninnene mine. Og som voksen var det ingen tvil om hvilken vei jeg skulle + gå. Jeg avsluttet studiene mine i skjønnhetspleie i 2016 og fikk også min + kvalifikasjon i vippeextension samme år. +

+

+ Jeg har alltid forsøkt, og streber fortsatt etter å gi mine gjester en så fullstendig + service som mulig. Derfor legger jeg særlig vekt på videreutdanning. Blant + instruktørene mine er det makeupartister og sminketatovører som har vunnet + flere ungarske mesterskap. +

+

+ Min nyeste lidenskap er å lage sminketatoveringer. I dag tillater bruk av + toppmoderne teknologi og profesjonelle materialer meg å gi gjestene mine et + naturlig, individualisert utseende. Tjenestene i porteføljen min er uttrykk for den + naturlige retningen jeg representerer, det være seg sminke, sminketatoveringer + eller endog vippeextension. +

+

+ Jeg er stolt over at jeg gjennom årene har kunnet ta de glade smilene til fornøyde + gjester i mitt hjerte, i mitt hjemland Ukraina, og deretter i Ungarn. Jeg er også + glad for at selv om jeg bare har bodd i Norge siden april 2023, klarer jeg likevel + å etablere et godt forhold til gjestene mine og tilbringe tiden sammen med dem i + godt humør. Jeg legger også stor vekt på å lære det magiske norske språket slik + at jeg kan snakke med gjestene mine på morsmålet deres. +

+

+ Jeg tror at kontinuerlig utvikling, kvalitetsarbeid og engasjement hjelper meg til + å bli en bedre profesjonell dag for dag." +

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

NGOC Tran - Negletekniker

+
+
+
+

+ Jeg heter Tran og jobber og studerer i Norge. Med over to års erfaring innen negledesign er målet mitt å skape unike, holdbare og vakre negler for hver enkelt kunde. +

+

+ Jeg har utdannet meg ved et anerkjent senter i Vietnam, hvor jeg tilegnet meg høy faglig kompetanse innen negledesign. Etter endt utdanning jobbet jeg der over lengre tid, noe som har gitt meg solid praktisk erfaring. Jeg utvikler meg kontinuerlig for å kunne tilby den beste kvaliteten til mine kunder. +

+

+ Fra rene og naturlige negler til mer unike og kreative design – jeg skaper ulike stiler med fokus på balanse, form og fargeharmoni. Jeg legger spesielt stor vekt på Builder Gel-teknikken, som gir sterke, men fleksible negler som både ser flotte ut og tåler daglig bruk. I tillegg er jeg opptatt av neglepleie og beskyttelse, slik at kundene mine kan ha sunne naturlige negler selv ved regelmessige behandlinger. +

+

+ Jeg er svært nøye med detaljer og kvalitet, fordi jeg mener at negler ikke bare handler om skjønnhet, men også om å uttrykke personlighet. Hvis du ønsker negler som ikke bare er vakre, men også sterke og holdbare, gleder jeg meg til å ønske deg velkommen i salongen! +

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

Behandlinger

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

Priser

+
+ + service_category != $prevousCategory){ + ?> +
+

service_category;?>

+
+ +
+
+
+ +
service_description;?>
+
+
+
kr service_price;?>
+
+
+
+ service_category; + } + } + ?> +
+
+ +
+ + + + +
+
+
+
+ +

Åpningstider

+

Gratis kunderparking under behandlingen

+
+
+
+
+
+
Ukedager
+
+
+
10:00 - 18:00
+
+
+
+
+
Lørdag
+
+
+
10:00 - 16:00
+
+
+
+
+
Søndag
+
+
+
Stengt
+
+
+
+
+
\ No newline at end of file diff --git a/application/views/pages/includes/beauty-form-no_20250524.php b/application/views/pages/includes/beauty-form-no_20250524.php new file mode 100755 index 0000000..ce9f599 --- /dev/null +++ b/application/views/pages/includes/beauty-form-no_20250524.php @@ -0,0 +1,319 @@ + + +
+ +
+ + +
+
+
+
+ +

Om oss

+
+
+
+

+ Mitt navn er Evelin Bence, lederen og skaperen av Studio Beve. Jeg anser det som + viktig at våre gjester under oppholdet hos oss – mens de stenger ute litt av støyen + fra omverdenen – kan lade sine batterier og kan vende tilbake til hverdagen + forskjønnet både innvendig og utvendig. +

+

+ Kvalitetstid, maksimal oppmerksomhet, de mest profesjonelle verktøyene, hånd + i hånd med profesjonalitet og kompetanse, utgjør grunnlaget for vår filosofi og våre + tjenester. +

+

+ Jeg mener at skjønnhet, mote og trend ikke er kjønnsspesifikke, og hos oss har + derfor alle mulighet til å bli vakrere på ett sted, uavhengig av kjønn. Hos Studio + Beve Barber og Studio Beve Beauty kan dere finne de tjenestene som er riktige + for dere. +

+

+ Med nesten 10 års erfaring fra skjønnhetsindustrien, inkludert mange års + internasjonal erfaring, tenkte jeg det var på tide å åpne mitt eget studio her i + Trondheim i Innheredsveien 92, hvor gjestene har mulighet til å parkere gratis + under behandlingene. +

+

+ Det er en ekstra glede for meg at jeg klarte å finne et tradisjonelt sted hvor det + allerede var en skjønnhetssalong på 50-tallet. Derfor har jeg nå muligheten til å + videreføre denne tradisjonen i et moderne miljø. + Bli vakker hos oss. Vi ser frem til å ønske deg velkommen. +

+
+
+ +

Evelin Bence
Eieren, Studio Beve

+
+
+
+
+ +

EVELIN Bence - vippestylist, make up artist, PMU-artist

+
+
+
+

+ "Min tiltrekning og kjærlighet til yrket var tydelig allerede som barn. Først + tilegnet jeg meg det grunnleggende om sminke på meg selv, og senere på + venninnene mine. Og som voksen var det ingen tvil om hvilken vei jeg skulle + gå. Jeg avsluttet studiene mine i skjønnhetspleie i 2016 og fikk også min + kvalifikasjon i vippeextension samme år. +

+

+ Jeg har alltid forsøkt, og streber fortsatt etter å gi mine gjester en så fullstendig + service som mulig. Derfor legger jeg særlig vekt på videreutdanning. Blant + instruktørene mine er det makeupartister og sminketatovører som har vunnet + flere ungarske mesterskap. +

+

+ Min nyeste lidenskap er å lage sminketatoveringer. I dag tillater bruk av + toppmoderne teknologi og profesjonelle materialer meg å gi gjestene mine et + naturlig, individualisert utseende. Tjenestene i porteføljen min er uttrykk for den + naturlige retningen jeg representerer, det være seg sminke, sminketatoveringer + eller endog vippeextension. +

+

+ Jeg er stolt over at jeg gjennom årene har kunnet ta de glade smilene til fornøyde + gjester i mitt hjerte, i mitt hjemland Ukraina, og deretter i Ungarn. Jeg er også + glad for at selv om jeg bare har bodd i Norge siden april 2023, klarer jeg likevel + å etablere et godt forhold til gjestene mine og tilbringe tiden sammen med dem i + godt humør. Jeg legger også stor vekt på å lære det magiske norske språket slik + at jeg kan snakke med gjestene mine på morsmålet deres. +

+

+ Jeg tror at kontinuerlig utvikling, kvalitetsarbeid og engasjement hjelper meg til + å bli en bedre profesjonell dag for dag." +

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

NGOC Tran - Negletekniker

+
+
+
+

+ Jeg heter Tran og jobber og studerer i Norge. Med over to års erfaring innen negledesign er målet mitt å skape unike, holdbare og vakre negler for hver enkelt kunde. +

+

+ Jeg har utdannet meg ved et anerkjent senter i Vietnam, hvor jeg tilegnet meg høy faglig kompetanse innen negledesign. Etter endt utdanning jobbet jeg der over lengre tid, noe som har gitt meg solid praktisk erfaring. Jeg utvikler meg kontinuerlig for å kunne tilby den beste kvaliteten til mine kunder. +

+

+ Fra rene og naturlige negler til mer unike og kreative design – jeg skaper ulike stiler med fokus på balanse, form og fargeharmoni. Jeg legger spesielt stor vekt på Builder Gel-teknikken, som gir sterke, men fleksible negler som både ser flotte ut og tåler daglig bruk. I tillegg er jeg opptatt av neglepleie og beskyttelse, slik at kundene mine kan ha sunne naturlige negler selv ved regelmessige behandlinger. +

+

+ Jeg er svært nøye med detaljer og kvalitet, fordi jeg mener at negler ikke bare handler om skjønnhet, men også om å uttrykke personlighet. Hvis du ønsker negler som ikke bare er vakre, men også sterke og holdbare, gleder jeg meg til å ønske deg velkommen i salongen! +

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

Behandlinger

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

Priser

+
+ + service_category != $prevousCategory){ + ?> +
+

service_category;?>

+
+ +
+
+
+ +
service_description;?>
+
+
+
kr service_price;?>
+
+
+
+ service_category; + } + } + ?> +
+
+ +
+ + + + +
+
+
+
+ +

Åpningstider

+

Gratis kunderparking under behandlingen

+
+
+
+
+
+
Ukedager
+
+
+
10:00 - 18:00
+
+
+
+
+
Lørdag
+
+
+
10:00 - 16:00
+
+
+
+
+
Søndag
+
+
+
Stengt
+
+
+
+
+
\ No newline at end of file diff --git a/application/views/pages/includes/booking-finished-form-en.php b/application/views/pages/includes/booking-finished-form-en.php new file mode 100755 index 0000000..2757698 --- /dev/null +++ b/application/views/pages/includes/booking-finished-form-en.php @@ -0,0 +1,4 @@ +
+
Thank you for your booking!
+
We sent the details for your booking via Email.
+
\ No newline at end of file diff --git a/application/views/pages/includes/booking-finished-form-en_20240626.php b/application/views/pages/includes/booking-finished-form-en_20240626.php new file mode 100755 index 0000000..2757698 --- /dev/null +++ b/application/views/pages/includes/booking-finished-form-en_20240626.php @@ -0,0 +1,4 @@ +
+
Thank you for your booking!
+
We sent the details for your booking via Email.
+
\ No newline at end of file diff --git a/application/views/pages/includes/booking-finished-form-hu.php b/application/views/pages/includes/booking-finished-form-hu.php new file mode 100755 index 0000000..61519cc --- /dev/null +++ b/application/views/pages/includes/booking-finished-form-hu.php @@ -0,0 +1,4 @@ +
+
Köszönjük a foglalást!
+
Elküldtük a foglalás részleteit emailben.
+
\ No newline at end of file diff --git a/application/views/pages/includes/booking-finished-form-hu_20240626.php b/application/views/pages/includes/booking-finished-form-hu_20240626.php new file mode 100755 index 0000000..61519cc --- /dev/null +++ b/application/views/pages/includes/booking-finished-form-hu_20240626.php @@ -0,0 +1,4 @@ +
+
Köszönjük a foglalást!
+
Elküldtük a foglalás részleteit emailben.
+
\ No newline at end of file diff --git a/application/views/pages/includes/booking-finished-form-no.php b/application/views/pages/includes/booking-finished-form-no.php new file mode 100755 index 0000000..fa081be --- /dev/null +++ b/application/views/pages/includes/booking-finished-form-no.php @@ -0,0 +1,4 @@ +
+
Takk for din bestilling!
+
Vi sendte detaljene for din bestilling via e-post.
+
\ No newline at end of file diff --git a/application/views/pages/includes/booking-finished-form-no_20240626.php b/application/views/pages/includes/booking-finished-form-no_20240626.php new file mode 100755 index 0000000..fa081be --- /dev/null +++ b/application/views/pages/includes/booking-finished-form-no_20240626.php @@ -0,0 +1,4 @@ +
+
Takk for din bestilling!
+
Vi sendte detaljene for din bestilling via e-post.
+
\ No newline at end of file diff --git a/application/views/pages/includes/booking-form-en.php b/application/views/pages/includes/booking-form-en.php new file mode 100755 index 0000000..1221f16 --- /dev/null +++ b/application/views/pages/includes/booking-form-en.php @@ -0,0 +1,488 @@ +
+
Booking Process
+ +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+ +
+ +
+
+
Services
+
+
+
+
+
Service name
+
+
Price
+
+
+
+ service_category != $prevousCategory){ + ?> +
+
+

service_category;?>

+
+
+ +
+
service_name;?>
+
+
service_price;?>
+
+
+
service_description;?>
+
+
+
+ + + +
+
+ service_category; + } + } + ?> +
+ + + +
+ +
+
+
+ + + +
Choose a worker
+
+ +
+
+ + +
+
+
+
+
+
+
+
+
+ + + +
+ +
+
+
+
+ + +
+
+
+ +
+ + +
+
+ + +
+
+ + +
+ +
+ + +
+ + +
+
+
+ +
+ + + + + + \ No newline at end of file diff --git a/application/views/pages/includes/booking-form-en_20240706.php b/application/views/pages/includes/booking-form-en_20240706.php new file mode 100755 index 0000000..0e0e618 --- /dev/null +++ b/application/views/pages/includes/booking-form-en_20240706.php @@ -0,0 +1,427 @@ +
+
Booking Process
+ +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+ +
+ +
+
+
Services
+
+
+
+
+
Service name
+
+
Price
+
+
+
+ service_category != $prevousCategory){ + ?> +
+
+

service_category;?>

+
+
+ +
+
service_name;?>
+
+
service_price;?>
+
+
+
service_description;?>
+
+
+
+ + + +
+
+ service_category; + } + } + ?> +
+ + + +
+ +
+
+
+ + + +
Choose a worker
+
+ + + +
+
+ + +
+
+
+
+
+
+
+
+
+ + + +
+ +
+
+
+
+ + +
+
+
+ +
+ + +
+
+ + +
+
+ + +
+ +
+ + +
+ + +
+
+
+ +
+ + + + + + \ No newline at end of file diff --git a/application/views/pages/includes/booking-form-hu.php b/application/views/pages/includes/booking-form-hu.php new file mode 100755 index 0000000..8b312b7 --- /dev/null +++ b/application/views/pages/includes/booking-form-hu.php @@ -0,0 +1,486 @@ +
+
Foglalási folyamat
+ +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+ +
+ +
+
+
Szolgáltatások
+
+
+
+
+
Szolgáltatás neve
+
+
Ára
+
+
+
+ service_category != $prevousCategory){ + ?> +
+
+

service_category;?>

+
+
+ +
+
service_name;?>
+
+
service_price;?>
+
+
+
service_description;?>
+
+
+
+ + +
+
+ service_category; + } + } + ?> +
+ + + +
+ +
+
+
+ + + +
Válassz dolgozót
+
+ +
+
+ + +
+
+
+
+
+
+
+
+
+ + + +
+ +
+
+
+
+ + + +
+
+
+ +
+ + +
+
+ + +
+
+ + +
+ +
+ + +
+ +
+
+
+
+ + + + + + \ No newline at end of file diff --git a/application/views/pages/includes/booking-form-hu_20240706.php b/application/views/pages/includes/booking-form-hu_20240706.php new file mode 100755 index 0000000..fb11818 --- /dev/null +++ b/application/views/pages/includes/booking-form-hu_20240706.php @@ -0,0 +1,426 @@ +
+
Foglalási folyamat
+ +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+ +
+ +
+
+
Szolgáltatások
+
+
+
+
+
Szolgáltatás neve
+
+
Ára
+
+
+
+ service_category != $prevousCategory){ + ?> +
+
+

service_category;?>

+
+
+ +
+
service_name;?>
+
+
service_price;?>
+
+
+
service_description;?>
+
+
+
+ + + +
+
+ service_category; + } + } + ?> +
+ + + +
+ +
+
+
+ + + +
Válassz dolgozót
+
+ + + +
+
+ + +
+
+
+
+
+
+
+
+
+ + + +
+ +
+
+
+
+ + + +
+
+
+ +
+ + +
+
+ + +
+
+ + +
+ +
+ + +
+ +
+
+
+
+ + + + + + \ No newline at end of file diff --git a/application/views/pages/includes/booking-form-hu_new.php b/application/views/pages/includes/booking-form-hu_new.php new file mode 100755 index 0000000..925eb1a --- /dev/null +++ b/application/views/pages/includes/booking-form-hu_new.php @@ -0,0 +1,467 @@ +
+
Foglalási folyamat
+ +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+ +
+ +
+
+
Szolgáltatások
+
+
+
+
+
Szolgáltatás neve
+
+
Ára
+
+
+
+ service_category != $prevousCategory){ + ?> +
+
+

service_category;?>

+
+
+ +
+
service_name;?>
+
+
service_price;?>
+
+
+
service_description;?>
+
+
+
+ + + +
+
+ service_category; + } + } + ?> +
+ + + +
+ +
+
+
+ + + +
Válassz dolgozót
+
+ + + +
+
+ + +
+
+
+
+
+
+
+
+
+ + + +
+ +
+
+
+
+ + + +
+
+
+ +
+ + +
+
+ + +
+
+ + +
+ +
+ + +
+ +
+
+
+
+ + + + + + \ No newline at end of file diff --git a/application/views/pages/includes/booking-form-no.php b/application/views/pages/includes/booking-form-no.php new file mode 100755 index 0000000..17ff147 --- /dev/null +++ b/application/views/pages/includes/booking-form-no.php @@ -0,0 +1,487 @@ +
+
Bestillingsprosess
+ +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+ +
+ +
+
+
Services
+
+
+
+
+
Tjenestenavn
+
+
Pris
+
+
+
+ service_category != $prevousCategory){ + ?> +
+
+

service_category;?>

+
+
+ +
+
service_name;?>
+
+
service_price;?>
+
+
+
service_description;?>
+
+
+
+ + + +
+
+ service_category; + } + } + ?> +
+ + + +
+ +
+
+
+ + + +
Velg en arbeider
+
+ +
+
+ + +
+
+
+
+
+
+
+
+
+ + + +
+ +
+
+
+
+ + + +
+
+
+ +
+ + +
+
+ + +
+
+ + +
+ +
+ + +
+ +
+
+
+
+ + + + + + \ No newline at end of file diff --git a/application/views/pages/includes/booking-form-no_20240706.php b/application/views/pages/includes/booking-form-no_20240706.php new file mode 100755 index 0000000..16fb4f2 --- /dev/null +++ b/application/views/pages/includes/booking-form-no_20240706.php @@ -0,0 +1,426 @@ +
+
Bestillingsprosess
+ +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+ +
+ +
+
+
Services
+
+
+
+
+
Tjenestenavn
+
+
Pris
+
+
+
+ service_category != $prevousCategory){ + ?> +
+
+

service_category;?>

+
+
+ +
+
service_name;?>
+
+
service_price;?>
+
+
+
service_description;?>
+
+
+
+ + + +
+
+ service_category; + } + } + ?> +
+ + + +
+ +
+
+
+ + + +
Velg en arbeider
+
+ + + +
+
+ + +
+
+
+
+
+
+
+
+
+ + + +
+ +
+
+
+
+ + + +
+
+
+ +
+ + +
+
+ + +
+
+ + +
+ +
+ + +
+ +
+
+
+
+ + + + + + \ No newline at end of file diff --git a/application/views/pages/includes/home-form.php b/application/views/pages/includes/home-form.php new file mode 100755 index 0000000..e4e025d --- /dev/null +++ b/application/views/pages/includes/home-form.php @@ -0,0 +1,30 @@ +
+ + +
+ + + + + + diff --git a/application/views/pages/modify-user.php b/application/views/pages/modify-user.php new file mode 100755 index 0000000..ba909d1 --- /dev/null +++ b/application/views/pages/modify-user.php @@ -0,0 +1,7 @@ +Felhasználó módosítása'; + include(getcwd().'/application/views/includes/modify-user-form.php'); + include(getcwd().'/application/views/includes/skeleton-bottom.php'); +?> diff --git a/application/views/pages/profile.php b/application/views/pages/profile.php new file mode 100755 index 0000000..c13c1a9 --- /dev/null +++ b/application/views/pages/profile.php @@ -0,0 +1,6 @@ +'.$pageTitle.''; + include(getcwd().'/application/views/includes/profile-form.php'); + include(getcwd().'/application/views/includes/skeleton-bottom.php'); +?> diff --git a/application/views/pages/user-management.php b/application/views/pages/user-management.php new file mode 100755 index 0000000..0126853 --- /dev/null +++ b/application/views/pages/user-management.php @@ -0,0 +1,7 @@ +Felhasználók'; + include(getcwd().'/application/views/includes/user-management-form.php'); + include(getcwd().'/application/views/includes/skeleton-bottom.php'); +?> diff --git a/application/views/pages/user-process.php b/application/views/pages/user-process.php new file mode 100755 index 0000000..7fe2f0d --- /dev/null +++ b/application/views/pages/user-process.php @@ -0,0 +1 @@ +gjgjhghjg \ No newline at end of file diff --git a/application/views/pages_20250312/404-page-not-found.php b/application/views/pages_20250312/404-page-not-found.php new file mode 100755 index 0000000..d4aa745 --- /dev/null +++ b/application/views/pages_20250312/404-page-not-found.php @@ -0,0 +1 @@ +Az oldal nem található \ No newline at end of file diff --git a/application/views/pages_20250312/add-new-user.php b/application/views/pages_20250312/add-new-user.php new file mode 100755 index 0000000..e465f57 --- /dev/null +++ b/application/views/pages_20250312/add-new-user.php @@ -0,0 +1,7 @@ +Új felhasználó létrehozása'; + include(getcwd().'/application/views/includes/add-new-user-form.php'); + include(getcwd().'/application/views/includes/skeleton-bottom.php'); +?> diff --git a/application/views/pages_20250312/ajax.php b/application/views/pages_20250312/ajax.php new file mode 100755 index 0000000..e69de29 diff --git a/application/views/pages_20250312/barber-booking-finished.php b/application/views/pages_20250312/barber-booking-finished.php new file mode 100755 index 0000000..6c4ed88 --- /dev/null +++ b/application/views/pages_20250312/barber-booking-finished.php @@ -0,0 +1,12 @@ + diff --git a/application/views/pages_20250312/barber-booking.php b/application/views/pages_20250312/barber-booking.php new file mode 100755 index 0000000..1f10aa6 --- /dev/null +++ b/application/views/pages_20250312/barber-booking.php @@ -0,0 +1,12 @@ + diff --git a/application/views/pages_20250312/barber.php b/application/views/pages_20250312/barber.php new file mode 100755 index 0000000..3e059b7 --- /dev/null +++ b/application/views/pages_20250312/barber.php @@ -0,0 +1,11 @@ + diff --git a/application/views/pages_20250312/beauty-booking-finished.php b/application/views/pages_20250312/beauty-booking-finished.php new file mode 100755 index 0000000..d07d019 --- /dev/null +++ b/application/views/pages_20250312/beauty-booking-finished.php @@ -0,0 +1,12 @@ + diff --git a/application/views/pages_20250312/beauty-booking.php b/application/views/pages_20250312/beauty-booking.php new file mode 100755 index 0000000..e7b3d9f --- /dev/null +++ b/application/views/pages_20250312/beauty-booking.php @@ -0,0 +1,13 @@ + diff --git a/application/views/pages_20250312/beauty.php b/application/views/pages_20250312/beauty.php new file mode 100755 index 0000000..a60e362 --- /dev/null +++ b/application/views/pages_20250312/beauty.php @@ -0,0 +1,12 @@ + diff --git a/application/views/pages_20250312/booking-process.php b/application/views/pages_20250312/booking-process.php new file mode 100755 index 0000000..e69de29 diff --git a/application/views/pages_20250312/booking-process_20240401.php b/application/views/pages_20250312/booking-process_20240401.php new file mode 100755 index 0000000..e69de29 diff --git a/application/views/pages_20250312/email-verification.php b/application/views/pages_20250312/email-verification.php new file mode 100755 index 0000000..e69de29 diff --git a/application/views/pages_20250312/home.php b/application/views/pages_20250312/home.php new file mode 100755 index 0000000..627bee1 --- /dev/null +++ b/application/views/pages_20250312/home.php @@ -0,0 +1,5 @@ + diff --git a/application/views/pages_20250312/includes/barber-form-en.php b/application/views/pages_20250312/includes/barber-form-en.php new file mode 100755 index 0000000..75d9383 --- /dev/null +++ b/application/views/pages_20250312/includes/barber-form-en.php @@ -0,0 +1,293 @@ + + + + +
+ +
+ + + +
+
+
+
+ +

About Us

+
+
+
+

+ My name is Evelin Bence, leader and creator of Studio Beve. I consider it + important that our guests during their stay – resting a little from the noise of the + world – recharge their batteries and return to everyday life beautified inside as + well as outside. +

+

+ Quality time, maximum attention, the most professional tools, together with + professionalism and expertise, stand for the basis of our philosophy and + services. +

+

+ I believe that beauty, fashion, and trend are not gender-specific, so we have the + opportunity for everyone to become beautiful in one place, regardless of gender. + And among our Barber and Beauty departments, you can find the right services + for you. +

+

+ With nearly 10 years of experience in the beauty industry, including many years + of international experience, I thought it was time to open my own studio here in + Trondheim at Innheredsveien 92, where guests can park free of charge during + the treatments. +

+

+ It is an extra pleasure for me that I managed to find a traditional place where + there was already a beauty salon in the 50s. Therefore, I now have the + opportunity to carry on this tradition in a modern environment. + Become beautiful with us. We look forward to seeing you. +

+
+
+ +

Evelin Bence
Owner, Studio Beve

+
+
+
+
+ +

EVELIN Bence - Barber

+
+
+
+

+ "I got acquainted with the basics of being a barber at a very young age, as my + mother is also a barber. From her I managed at a very young age to master the + tricks of this wonderful profession. You could say I was born into the profession, + and I've been officially a second-generation barber for a few years now. + I am proud to have learned from the best. My master barber and friend Ruben + Tenkely, owner of "Peaky Barbers – Tenkely Limited Company", European Cup + winner and Hungarian champion, has gained a lot of experience internationally. + Among other things, he worked at one of Norway's most famous traditional + salons, Brødrene Fevangs Barberstue. This allowed me to learn about trends in + Norway. +

+

+ I have been living in Norway since April 2023 and am eager to learn + Norwegian. I feel fortunate to have had the opportunity to work alongside Felipe + Romero in Trondheim, who is also an incredibly knowledgeable barber. More + than one of you may have met and gotten to know me at his salon. + I constantly participate in further trainings because I believe that continuous + development, quality work and dedication help me to become a better + professional day by day." +

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

Treatments

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

Prices

+

The price of all hair treatments include hairwash and styling.
10% student reduction upon showing ID, available from Monday to Thursday.

+
+ service_category != $prevousCategory){ + ?> +
+

service_category;?>

+
+ +
+
+
+ +
service_description;?>
+
+
+
kr service_price;?>
+
+
+
+ service_category; + } + } + ?> + + +
+
+
+ +
service_description;?>
+
+
+
kr service_price;?>
+
+
+
+ + + +
+
+
+ + + + +
+
+
+
+ +

Working Hours

+

Free customer parking during treatments

+
+
+
+
+
+
Weekdays
+
+
+
10:00 - 18:00
+
+
+
+
+
Saturday
+
+
+
10:00 - 16:00
+
+
+
+
+
Sunday
+
+
+
Closed
+
+
+
+
+
\ No newline at end of file diff --git a/application/views/pages_20250312/includes/barber-form-en_20240425.php b/application/views/pages_20250312/includes/barber-form-en_20240425.php new file mode 100755 index 0000000..0f18a73 --- /dev/null +++ b/application/views/pages_20250312/includes/barber-form-en_20240425.php @@ -0,0 +1,261 @@ + + + + +
+ +
+ + + +
+
+
+
+ +

About Us

+
+
+
+

+ My name is Evelin Bence, leader and creator of Studio Beve. I consider it + important that our guests during their stay – resting a little from the noise of the + world – recharge their batteries and return to everyday life beautified inside as + well as outside. +

+

+ Quality time, maximum attention, the most professional tools, together with + professionalism and expertise, stand for the basis of our philosophy and + services. +

+

+ I believe that beauty, fashion, and trend are not gender-specific, so we have the + opportunity for everyone to become beautiful in one place, regardless of gender. + And among our Barber and Beauty departments, you can find the right services + for you. +

+

+ With nearly 10 years of experience in the beauty industry, including many years + of international experience, I thought it was time to open my own studio here in + Trondheim at Innheredsveien 92, where guests can park free of charge during + the treatments. +

+

+ It is an extra pleasure for me that I managed to find a traditional place where + there was already a beauty salon in the 50s. Therefore, I now have the + opportunity to carry on this tradition in a modern environment. + Become beautiful with us. We look forward to seeing you. +

+
+
+ +

Evelin Bence
Owner, Studio Beve

+
+
+
+
+ +

EVELIN Bence - Barber

+
+
+
+

+ "I got acquainted with the basics of being a barber at a very young age, as my + mother is also a barber. From her I managed at a very young age to master the + tricks of this wonderful profession. You could say I was born into the profession, + and I've been officially a second-generation barber for a few years now. + I am proud to have learned from the best. My master barber and friend Ruben + Tenkely, owner of "Peaky Barbers – Tenkely Limited Company", European Cup + winner and Hungarian champion, has gained a lot of experience internationally. + Among other things, he worked at one of Norway's most famous traditional + salons, Brødrene Fevangs Barberstue. This allowed me to learn about trends in + Norway. +

+

+ I have been living in Norway since April 2023 and am eager to learn + Norwegian. I feel fortunate to have had the opportunity to work alongside Felipe + Romero in Trondheim, who is also an incredibly knowledgeable barber. More + than one of you may have met and gotten to know me at his salon. + I constantly participate in further trainings because I believe that continuous + development, quality work and dedication help me to become a better + professional day by day." +

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

Treatments

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

Prices

+

The price of all hair treatments include hairwash and styling.
10% student reduction upon showing ID, available from Monday to Thursday.

+
+ +
+
+
+ +
service_description;?>
+
+
+
kr service_price;?>
+
+
+
+ + + +
+
+
+ + + + +
+
+
+
+ +

Working Hours

+

Free customer parking during treatments

+
+
+
+
+
+
Weekdays
+
+
+
10:00 - 18:00
+
+
+
+
+
Saturday
+
+
+
10:00 - 16:00
+
+
+
+
+
Sunday
+
+
+
Closed
+
+
+
+
+
\ No newline at end of file diff --git a/application/views/pages_20250312/includes/barber-form-hu.php b/application/views/pages_20250312/includes/barber-form-hu.php new file mode 100755 index 0000000..c978e5d --- /dev/null +++ b/application/views/pages_20250312/includes/barber-form-hu.php @@ -0,0 +1,270 @@ + + + +
+ +
+ + +
+
+
+
+ +

Rólunk

+
+
+
+

+ Bence Evelin vagyok a Studio Beve vezetője és megálmodója. Fontosnak tartom, hogy a vendégek a nálunk töltött idő alatt – egy kicsit megpihenve a világ zajától – feltöltődjenek, és kívül-belül megszépülve térjenek vissza a mindennapokhoz. +

+

+ A minőségi idő, a maximális figyelem, a legprofesszionálisabb eszközök, a hivatástudattal és szakértelemmel karöltve jelentik a filozófiánk és szolgáltatásaink alapjait. +

+

+ Hiszem, hogy a szépség, a divat és a trend nem nemhez kötött, így nálunk lehetőség van arra, hogy mindenki egy helyen szépülhessen nemtől függetlenül. A Barber és Beauty részlegeink között pedig megtalálhatjátok a számotokra megfelelő szolgáltatásokat. +

+

+ Közel 10 éves szépségipari, és közte több éves nemzetközi tapasztalattal elérkezettnek láttam az időt, hogy megnyissam saját stúdiómat itt Trondheimben, az Innheredsveien 92 szám alatt, ahol a vendégeknek lehetősége van ingyenes parkolásra is a kezelések időtartama alatt. +

+

+ Extra öröm számomra, hogy egy olyan tradicionális helyet sikerült találnom, ahol az 50-es években már szépségszalon működött, ennek köszönhetően a hagyományt, modern környezetben lehetőségem van tovább vinni. + Szépülj velünk, szeretettel várunk. +

+
+
+ +

Bence Evelin
Tulajdonos, Studio Beve

+
+
+
+
+ +

EVELIN Bence - Barber

+
+
+
+

+ "Már egészen kiskoromban megismerkedtem a borbély lét alapjaival, hiszen édesanyám is borbély. Tőle, egészen fiatalon sikerült elsajátítanom ennek a csodálatos szakmának a fortélyait. Mondhatni beleszülettem a szakmába, és már néhány éve, hivatalosan is második generációs borbély vagyok. +

+

+ Büszke vagyok arra, hogy a legjobbaktól tanulhattam. A fodrászmesterem és barátom Tenkely Ruben, a „Peaky Barbers - Tenkely Limited Company” tulajdonosa, európa kupagyőztes és magyar bajnok, aki nemzetközi szinten is rengeteg tapasztalatot szerzett. Többek között dolgozott norvégia egyik leghíresebb tradicionális szalonjában a Brødrene Fevangs Barberstue-ben. Így általa is megismerhettem a norvégiai trendeket. +

+

+ 2023 áprilisától élek Norvégiában, a norvég nyelvet lelkesen tanulom. Szerencsésnek érzem magam, hogy ez idő alatt lehetőségem volt Felipe Romero mellett dolgozni Trondheimben, aki szintén elképesztően nagy tudással rendelkező borbély. Nála már többen is találkozhattatok velem és megismerhettetek. +

+

+ Folyamatosan veszek részt továbbképzéseken, mert hiszem, hogy a folyamatos fejlődés, a minőségi munka és az odaadás segít, hogy napról-napra jobb szakember lehessek." +

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

Szolgáltatások

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

Árlista

+

Minden hajkezelés ára tartalmazza a hajmosást és a formázást
10%-os diákkedvezmény, igazolvány felmutatásával, ami hétfőtől csütörtökig vehető igénybe.

+
+ service_category != $prevousCategory){ + ?> +
+

service_category;?>

+
+ +
+
+
+ +
service_description;?>
+
+
+
kr service_price;?>
+
+
+
+ service_category; + } + } + ?> + + + +
+
+
+ +
service_description;?>
+
+
+
kr service_price;?>
+
+
+
+ + + +
+
+
+ + + +
+
+
+
+ +

Nyitvatartási idő

+

Ingyenes parkolás a szolgáltatások ideje alatt

+
+
+
+
+
+
Hétköznap
+
+
+
10:00 - 18:00
+
+
+
+
+
Szombat
+
+
+
10:00 - 16:00
+
+
+
+
+
Vasárnap
+
+
+
Zárva
+
+
+
+
+
\ No newline at end of file diff --git a/application/views/pages_20250312/includes/barber-form-hu_20240425.php b/application/views/pages_20250312/includes/barber-form-hu_20240425.php new file mode 100755 index 0000000..81e6334 --- /dev/null +++ b/application/views/pages_20250312/includes/barber-form-hu_20240425.php @@ -0,0 +1,237 @@ + + + +
+ +
+ + +
+
+
+
+ +

Rólunk

+
+
+
+

+ Bence Evelin vagyok a Studio Beve vezetője és megálmodója. Fontosnak tartom, hogy a vendégek a nálunk töltött idő alatt – egy kicsit megpihenve a világ zajától – feltöltődjenek, és kívül-belül megszépülve térjenek vissza a mindennapokhoz. +

+

+ A minőségi idő, a maximális figyelem, a legprofesszionálisabb eszközök, a hivatástudattal és szakértelemmel karöltve jelentik a filozófiánk és szolgáltatásaink alapjait. +

+

+ Hiszem, hogy a szépség, a divat és a trend nem nemhez kötött, így nálunk lehetőség van arra, hogy mindenki egy helyen szépülhessen nemtől függetlenül. A Barber és Beauty részlegeink között pedig megtalálhatjátok a számotokra megfelelő szolgáltatásokat. +

+

+ Közel 10 éves szépségipari, és közte több éves nemzetközi tapasztalattal elérkezettnek láttam az időt, hogy megnyissam saját stúdiómat itt Trondheimben, az Innheredsveien 92 szám alatt, ahol a vendégeknek lehetősége van ingyenes parkolásra is a kezelések időtartama alatt. +

+

+ Extra öröm számomra, hogy egy olyan tradicionális helyet sikerült találnom, ahol az 50-es években már szépségszalon működött, ennek köszönhetően a hagyományt, modern környezetben lehetőségem van tovább vinni. + Szépülj velünk, szeretettel várunk. +

+
+
+ +

Bence Evelin
Tulajdonos, Studio Beve

+
+
+
+
+ +

EVELIN Bence - Barber

+
+
+
+

+ "Már egészen kiskoromban megismerkedtem a borbély lét alapjaival, hiszen édesanyám is borbély. Tőle, egészen fiatalon sikerült elsajátítanom ennek a csodálatos szakmának a fortélyait. Mondhatni beleszülettem a szakmába, és már néhány éve, hivatalosan is második generációs borbély vagyok. +

+

+ Büszke vagyok arra, hogy a legjobbaktól tanulhattam. A fodrászmesterem és barátom Tenkely Ruben, a „Peaky Barbers - Tenkely Limited Company” tulajdonosa, európa kupagyőztes és magyar bajnok, aki nemzetközi szinten is rengeteg tapasztalatot szerzett. Többek között dolgozott norvégia egyik leghíresebb tradicionális szalonjában a Brødrene Fevangs Barberstue-ben. Így általa is megismerhettem a norvégiai trendeket. +

+

+ 2023 áprilisától élek Norvégiában, a norvég nyelvet lelkesen tanulom. Szerencsésnek érzem magam, hogy ez idő alatt lehetőségem volt Felipe Romero mellett dolgozni Trondheimben, aki szintén elképesztően nagy tudással rendelkező borbély. Nála már többen is találkozhattatok velem és megismerhettetek. +

+

+ Folyamatosan veszek részt továbbképzéseken, mert hiszem, hogy a folyamatos fejlődés, a minőségi munka és az odaadás segít, hogy napról-napra jobb szakember lehessek." +

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

Szolgáltatások

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

Árlista

+

Minden hajkezelés ára tartalmazza a hajmosást és a formázást
10%-os diákkedvezmény, igazolvány felmutatásával, ami hétfőtől csütörtökig vehető igénybe.

+
+ +
+
+
+ +
service_description;?>
+
+
+
kr service_price;?>
+
+
+
+ + + +
+
+
+ + + +
+
+
+
+ +

Nyitvatartási idő

+

Ingyenes parkolás a szolgáltatások ideje alatt

+
+
+
+
+
+
Hétköznap
+
+
+
10:00 - 18:00
+
+
+
+
+
Szombat
+
+
+
10:00 - 16:00
+
+
+
+
+
Vasárnap
+
+
+
Zárva
+
+
+
+
+
\ No newline at end of file diff --git a/application/views/pages_20250312/includes/barber-form-no.php b/application/views/pages_20250312/includes/barber-form-no.php new file mode 100755 index 0000000..2790b81 --- /dev/null +++ b/application/views/pages_20250312/includes/barber-form-no.php @@ -0,0 +1,269 @@ + + + + +
+ +
+ + +
+
+
+
+ +

Om oss

+
+
+
+

+ Mitt navn er Evelin Bence, lederen og skaperen av Studio Beve. Jeg anser det som viktig at våre gjester under oppholdet hos oss – mens de stenger ute litt av støyen fra omverdenen – kan lade sine batterier og kan vende tilbake til hverdagen forskjønnet både innvendig og utvendig. +

+

+ Kvalitetstid, maksimal oppmerksomhet, de mest profesjonelle verktøyene, hånd i hånd med profesjonalitet og kompetanse, utgjør grunnlaget for vår filosofi og våre tjenester. +

+

+ Jeg mener at skjønnhet, mote og trend ikke er kjønnsspesifikke, og hos oss har derfor alle mulighet til å bli vakrere på ett sted, uavhengig av kjønn. Hos Studio Beve Barber og Studio Beve Beauty kan dere finne de tjenestene som er riktige for dere. +

+

+ Med nesten 10 års erfaring fra skjønnhetsindustrien, inkludert mange års internasjonal erfaring, tenkte jeg det var på tide å åpne mitt eget studio her i Trondheim i Innheredsveien 92, hvor gjestene har mulighet til å parkere gratis under behandlingene. +

+

+ Det er en ekstra glede for meg at jeg klarte å finne et tradisjonelt sted hvor det allerede var en skjønnhetssalong på 50-tallet. Derfor har jeg nå muligheten til å videreføre denne tradisjonen i et moderne miljø. + Bli vakker hos oss. Vi ser frem til å ønske deg velkommen. +

+
+
+ +

Evelin Bence
Eieren, Studio Beve

+
+
+
+
+ +

EVELIN Bence - Barber

+
+
+
+

+ "Jeg lærte å kjenne det grunnleggende om det å være barber allerede i svært ung alder, siden min mor også er barber. Fra henne klarte jeg i svært ung alder å mestre knepene i dette fantastiske yrket. Man kan si at jeg ble født inn i yrket, og jeg har offisielt vært andregenerasjons barber i noen år nå. +

+

+ Jeg er stolt over å ha lært av de beste. Min mesterbarber og venn Ruben Tenkely, eier av «Peaky Barbers – Tenkely Limited Company», europacupvinner og ungarsk mester, har også skaffet seg mye erfaring internasjonalt. Han har blant annet arbeidet i en av Norges mest kjente tradisjonelle salonger, Brødrene Fevangs Barberstue. Slik lærte jeg om trender i Norge. +

+

+ Jeg har bodd i Norge siden april 2023 og er ivrig etter å lære norsk. Jeg føler meg heldig som har fått muligheten til å jobbe sammen med Felipe Romero i Trondheim, som også er en utrolig kunnskapsrik barber. Hos ham kan flere av dere ha møtt og blitt kjent med meg. +

+

+ Jeg deltar stadig på videreutdanninger fordi jeg tror at kontinuerlig utvikling, kvalitetsarbeid og engasjement hjelper meg til å bli en bedre fagperson dag for dag." +

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

Behandlinger

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

Priser

+

Prisen på alle hårbehandling inkluderer hårvask og styling.
10% studentrabatt ved framvising av ID, kan benyttes fra mandag til torsdag.

+
+ service_category != $prevousCategory){ + ?> +
+

service_category;?>

+
+ +
+
+
+ +
service_description;?>
+
+
+
kr service_price;?>
+
+
+
+ service_category; + } + } + ?> + + +
+
+
+ +
service_description;?>
+
+
+
kr service_price;?>
+
+
+
+ + + +
+
+
+ + + +
+
+
+
+ +

Åpningstider

+

Gratis kundeprarking under behandlingen

+
+
+
+
+
+
Ukedager
+
+
+
10:00 - 18:00
+
+
+
+
+
Lørdag
+
+
+
10:00 - 16:00
+
+
+
+
+
Søndag
+
+
+
Stengt
+
+
+
+
+
\ No newline at end of file diff --git a/application/views/pages_20250312/includes/barber-form-no_20240425.php b/application/views/pages_20250312/includes/barber-form-no_20240425.php new file mode 100755 index 0000000..2d53f1f --- /dev/null +++ b/application/views/pages_20250312/includes/barber-form-no_20240425.php @@ -0,0 +1,237 @@ + + + + +
+ +
+ + +
+
+
+
+ +

Om oss

+
+
+
+

+ Mitt navn er Evelin Bence, lederen og skaperen av Studio Beve. Jeg anser det som viktig at våre gjester under oppholdet hos oss – mens de stenger ute litt av støyen fra omverdenen – kan lade sine batterier og kan vende tilbake til hverdagen forskjønnet både innvendig og utvendig. +

+

+ Kvalitetstid, maksimal oppmerksomhet, de mest profesjonelle verktøyene, hånd i hånd med profesjonalitet og kompetanse, utgjør grunnlaget for vår filosofi og våre tjenester. +

+

+ Jeg mener at skjønnhet, mote og trend ikke er kjønnsspesifikke, og hos oss har derfor alle mulighet til å bli vakrere på ett sted, uavhengig av kjønn. Hos Studio Beve Barber og Studio Beve Beauty kan dere finne de tjenestene som er riktige for dere. +

+

+ Med nesten 10 års erfaring fra skjønnhetsindustrien, inkludert mange års internasjonal erfaring, tenkte jeg det var på tide å åpne mitt eget studio her i Trondheim i Innheredsveien 92, hvor gjestene har mulighet til å parkere gratis under behandlingene. +

+

+ Det er en ekstra glede for meg at jeg klarte å finne et tradisjonelt sted hvor det allerede var en skjønnhetssalong på 50-tallet. Derfor har jeg nå muligheten til å videreføre denne tradisjonen i et moderne miljø. + Bli vakker hos oss. Vi ser frem til å ønske deg velkommen. +

+
+
+ +

Evelin Bence
Eieren, Studio Beve

+
+
+
+
+ +

EVELIN Bence - Barber

+
+
+
+

+ "Jeg lærte å kjenne det grunnleggende om det å være barber allerede i svært ung alder, siden min mor også er barber. Fra henne klarte jeg i svært ung alder å mestre knepene i dette fantastiske yrket. Man kan si at jeg ble født inn i yrket, og jeg har offisielt vært andregenerasjons barber i noen år nå. +

+

+ Jeg er stolt over å ha lært av de beste. Min mesterbarber og venn Ruben Tenkely, eier av «Peaky Barbers – Tenkely Limited Company», europacupvinner og ungarsk mester, har også skaffet seg mye erfaring internasjonalt. Han har blant annet arbeidet i en av Norges mest kjente tradisjonelle salonger, Brødrene Fevangs Barberstue. Slik lærte jeg om trender i Norge. +

+

+ Jeg har bodd i Norge siden april 2023 og er ivrig etter å lære norsk. Jeg føler meg heldig som har fått muligheten til å jobbe sammen med Felipe Romero i Trondheim, som også er en utrolig kunnskapsrik barber. Hos ham kan flere av dere ha møtt og blitt kjent med meg. +

+

+ Jeg deltar stadig på videreutdanninger fordi jeg tror at kontinuerlig utvikling, kvalitetsarbeid og engasjement hjelper meg til å bli en bedre fagperson dag for dag." +

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

Behandlinger

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

Priser

+

Prisen på alle hårbehandling inkluderer hårvask og styling.
10% studentrabatt ved framvising av ID, kan benyttes fra mandag til torsdag.

+
+ +
+
+
+ +
service_description;?>
+
+
+
kr service_price;?>
+
+
+
+ + + +
+
+
+ + + +
+
+
+
+ +

Åpningstider

+

Gratis kundeprarking under behandlingen

+
+
+
+
+
+
Ukedager
+
+
+
10:00 - 18:00
+
+
+
+
+
Lørdag
+
+
+
10:00 - 16:00
+
+
+
+
+
Søndag
+
+
+
Stengt
+
+
+
+
+
\ No newline at end of file diff --git a/application/views/pages_20250312/includes/beauty-form-en.php b/application/views/pages_20250312/includes/beauty-form-en.php new file mode 100755 index 0000000..9848786 --- /dev/null +++ b/application/views/pages_20250312/includes/beauty-form-en.php @@ -0,0 +1,261 @@ + + + +
+ +
+ + +
+
+
+
+ +

About Us

+
+
+
+

+ My name is Evelin Bence, leader and creator of Studio Beve. I consider it + important that our guests during their stay – resting a little from the noise of the + world – recharge their batteries and return to everyday life beautified inside as + well as outside. +

+

+ Quality time, maximum attention, the most professional tools, together with + professionalism and expertise, stand for the basis of our philosophy and + services. +

+

+ I believe that beauty, fashion, and trend are not gender-specific, so we have the + opportunity for everyone to become beautiful in one place, regardless of gender. + And among our Barber and Beauty departments, you can find the right services + for you. +

+

+ With nearly 10 years of experience in the beauty industry, including many years + of international experience, I thought it was time to open my own studio here in + Trondheim at Innheredsveien 92, where guests can park free of charge during + the treatments. +

+

+ It is an extra pleasure for me that I managed to find a traditional place where + there was already a beauty salon in the 50s. Therefore, I now have the + opportunity to carry on this tradition in a modern environment. + Become beautiful with us. We look forward to seeing you. +

+
+
+ +

Evelin Bence
Owner, Studio Beve

+
+
+
+
+ +

EVELIN Bence - lash stylist, make up artist, PMU artist

+
+
+
+

+ My attraction and love for the profession was already evident as a child. First, I acquired the basics of makeup on myself, and then on my girlfriends. As an adult, there was no question what my path should be. I finished my studies as a beautician in 2016, and also obtained my eyelash extension qualification in the same year. +

+

+ I have always strived – and still strive – to provide my guests with the fullest possible service. Therefore, I pay special attention to further training. Among my instructors you can find multiple Hungarian champion makeup artists or make-up tattooists. +

+

+ My latest passion is making makeup tattoos. Today, the use of state-of-the-art technology and professional materials allows me to provide my guests with a natural, individualized look. The services in my portfolio reflect the natural direction I represent, be it makeup, makeup tattoos or even eyelashes. +

+

+ I am proud that over the years I have been able to close the happy smiles of satisfied guests in my heart, in my native Ukraine, and then in Hungary. I am also pleased that although I have only been living in Norway since April 2023, I nevertheless manage to establish a good relationship with my guests and spend time with them in a good mood. I also place great emphasis on learning the magical Norwegian language so that I can talk to my guests in their native language. +

+

+ I believe that continuous development, quality work and dedication help me to become a better professional day by day. +

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

Treatments

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

Prices

+
+ + service_category != $prevousCategory){ + ?> +
+

service_category;?>

+
+ +
+
+
+ +
service_description;?>
+
+
+
kr service_price;?>
+
+
+
+ service_category; + } + } + ?> +
+
+ +
+ + + +
+
+
+
+ +

Working Hours

+

Free customer parking during treatments

+
+
+
+
+
+
Weekdays
+
+
+
10:00 - 18:00
+
+
+
+
+
Saturday
+
+
+
10:00 - 16:00
+
+
+
+
+
Sunday
+
+
+
Closed
+
+
+
+
+
\ No newline at end of file diff --git a/application/views/pages_20250312/includes/beauty-form-hu.php b/application/views/pages_20250312/includes/beauty-form-hu.php new file mode 100755 index 0000000..f35ab61 --- /dev/null +++ b/application/views/pages_20250312/includes/beauty-form-hu.php @@ -0,0 +1,280 @@ +https://www.facebook.com/studiobevebeauty + + +
+ +
+ + +
+
+
+
+ +

Rólunk

+
+
+
+

+ Bence Evelin vagyok a Studio Beve vezetője és megálmodója. Fontosnak + tartom, hogy a vendégek a nálunk töltött idő alatt – egy kicsit megpihenve a világ zajától – feltöltődjenek, és kívül-belül egszépülve térjenek vissza a mindennapokhoz. +

+

+ A minőségi idő, a maximális figyelem, a legprofesszionálisabb eszközök, a + hivatástudattal és szakértelemmel karöltve jelentik a filozófiánk és + szolgáltatásaink alapjait. +

+

+ Hiszem, hogy a szépség, a divat és a trend nem nemhez kötött, így nálunk + lehetőség van arra, hogy mindenki egy helyen szépülhessen nemtől függetlenül. + A Barber és Beauty részlegeink között pedig megtalálhatjátok a számotokra + megfelelő szolgáltatásokat. +

+

+ Közel 10 éves szépségipari, és közte több éves nemzetközi tapasztalattal + elérkezettnek láttam az időt, hogy megnyissam saját stúdiómat itt + Trondheimben, az Innheredsveien 92 szám alatt, ahol a vendégeknek lehetősége + van ingyenes parkolásra is a kezelések időtartama alatt. +

+

+ Extra öröm számomra, hogy egy olyan tradicionális helyet sikerült találnom, + ahol az 50-es években már szépségszalon működött, ennek köszönhetően a + hagyományt, modern környezetben lehetőségem van tovább vinni. + Szépülj velünk, szeretettel várunk. +

+
+
+ +

Bence Evelin
Tulajdonos, Studio Beve

+
+
+
+
+ +

EVELIN Bence - szempilla- és szemöldök stylist, sminkes

+
+
+
+

+ "A szakma iránti vonzalmam, szeretetem már kisgyerekként megmutatkozott. + Először saját magamon, majd később a barátnőimen sajátítottam el a sminkelés + alapjait. Felnőttként pedig nem volt kérdés, hogy mi is az én utam. Kozmetikusi + tanulmányaimat 2016-ban fejeztem be és ugyanebben az évben szempillaépítő + képesítést is szereztem. +

+

+ Mindig törekedtem - és mai napig törekszem - arra, hogy a vendégeimnek minél + teljeskörűbb szolgáltatást tudjak nyújtani. Ezért kiemelt figyelmet fordítok a + továbbképzésekre. Oktatóim között megtalálhatóak többszörös magyar bajnok + sminkmesterek vagy épp sminktetoválók. +

+

+ A legújabb szenvedélyem a sminktetoválások készítése. Ma már a + csúcstechnológia és a professzionális alapanyagok használata lehetővé teszi, + hogy természetes, egyénre szabott megjelenést biztosíthassak a vendégeimnek. + A portfóliómban lévő szolgáltatásoknál a természetes irányt képviselem, legyen + szó sminkről, sminktetoválásról vagy épp műszempilláról. +

+

+ Büszke vagyok arra, hogy az évek alatt elégedett vendégek boldog mosolyát + zárhattam a szívembe, szülőhazámban Ukrajnában, majd Magyarországon. + Szintén örömmel tölt el, hogy noha még csak 2023 áprilisától élek Norvégiában, + mégis sikerül a vendégeimmel jó kapcsolatot kialakítani, a közös időt jó + hangulatban eltölteni. A varázslatos norvég nyelv elsajátítására is nagy + hangsúlyt fektetek, hogy a vendégeimmel, az anyanyelvükön tudjak beszélgetni. +

+

+ Hiszem, hogy a folyamatos fejlődés, a minőségi munka és az odaadás segít, + hogy napról-napra jobb szakember lehessek." +

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

Szolgáltatások

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

Árlista

+
+ + service_category != $prevousCategory){ + ?> +
+

service_category;?>

+
+ +
+
+
+ +
service_description;?>
+
+
+
kr service_price;?>
+
+
+
+ service_category; + } + } + ?> +
+
+ +
+ + + + + +
+
+
+
+ +

Nyitvatartási idő

+

Ingyenes parkolás a szolgáltatások ideje alatt

+
+
+
+
+
+
Hétköznap
+
+
+
10:00 - 18:00
+
+
+
+
+
Szombat
+
+
+
10:00 - 16:00
+
+
+
+
+
Vasárnap
+
+
+
Zárva
+
+
+
+
+
diff --git a/application/views/pages_20250312/includes/beauty-form-no.php b/application/views/pages_20250312/includes/beauty-form-no.php new file mode 100755 index 0000000..0b515dd --- /dev/null +++ b/application/views/pages_20250312/includes/beauty-form-no.php @@ -0,0 +1,279 @@ + + +
+ +
+ + +
+
+
+
+ +

Om oss

+
+
+
+

+ Mitt navn er Evelin Bence, lederen og skaperen av Studio Beve. Jeg anser det som + viktig at våre gjester under oppholdet hos oss – mens de stenger ute litt av støyen + fra omverdenen – kan lade sine batterier og kan vende tilbake til hverdagen + forskjønnet både innvendig og utvendig. +

+

+ Kvalitetstid, maksimal oppmerksomhet, de mest profesjonelle verktøyene, hånd + i hånd med profesjonalitet og kompetanse, utgjør grunnlaget for vår filosofi og våre + tjenester. +

+

+ Jeg mener at skjønnhet, mote og trend ikke er kjønnsspesifikke, og hos oss har + derfor alle mulighet til å bli vakrere på ett sted, uavhengig av kjønn. Hos Studio + Beve Barber og Studio Beve Beauty kan dere finne de tjenestene som er riktige + for dere. +

+

+ Med nesten 10 års erfaring fra skjønnhetsindustrien, inkludert mange års + internasjonal erfaring, tenkte jeg det var på tide å åpne mitt eget studio her i + Trondheim i Innheredsveien 92, hvor gjestene har mulighet til å parkere gratis + under behandlingene. +

+

+ Det er en ekstra glede for meg at jeg klarte å finne et tradisjonelt sted hvor det + allerede var en skjønnhetssalong på 50-tallet. Derfor har jeg nå muligheten til å + videreføre denne tradisjonen i et moderne miljø. + Bli vakker hos oss. Vi ser frem til å ønske deg velkommen. +

+
+
+ +

Evelin Bence
Eieren, Studio Beve

+
+
+
+
+ +

EVELIN Bence - vippestylist, make up artist, PMU-artist

+
+
+
+

+ "Min tiltrekning og kjærlighet til yrket var tydelig allerede som barn. Først + tilegnet jeg meg det grunnleggende om sminke på meg selv, og senere på + venninnene mine. Og som voksen var det ingen tvil om hvilken vei jeg skulle + gå. Jeg avsluttet studiene mine i skjønnhetspleie i 2016 og fikk også min + kvalifikasjon i vippeextension samme år. +

+

+ Jeg har alltid forsøkt, og streber fortsatt etter å gi mine gjester en så fullstendig + service som mulig. Derfor legger jeg særlig vekt på videreutdanning. Blant + instruktørene mine er det makeupartister og sminketatovører som har vunnet + flere ungarske mesterskap. +

+

+ Min nyeste lidenskap er å lage sminketatoveringer. I dag tillater bruk av + toppmoderne teknologi og profesjonelle materialer meg å gi gjestene mine et + naturlig, individualisert utseende. Tjenestene i porteføljen min er uttrykk for den + naturlige retningen jeg representerer, det være seg sminke, sminketatoveringer + eller endog vippeextension. +

+

+ Jeg er stolt over at jeg gjennom årene har kunnet ta de glade smilene til fornøyde + gjester i mitt hjerte, i mitt hjemland Ukraina, og deretter i Ungarn. Jeg er også + glad for at selv om jeg bare har bodd i Norge siden april 2023, klarer jeg likevel + å etablere et godt forhold til gjestene mine og tilbringe tiden sammen med dem i + godt humør. Jeg legger også stor vekt på å lære det magiske norske språket slik + at jeg kan snakke med gjestene mine på morsmålet deres. +

+

+ Jeg tror at kontinuerlig utvikling, kvalitetsarbeid og engasjement hjelper meg til + å bli en bedre profesjonell dag for dag." +

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

Behandlinger

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

Priser

+
+ + service_category != $prevousCategory){ + ?> +
+

service_category;?>

+
+ +
+
+
+ +
service_description;?>
+
+
+
kr service_price;?>
+
+
+
+ service_category; + } + } + ?> +
+
+ +
+ + + + +
+
+
+
+ +

Åpningstider

+

Gratis kunderparking under behandlingen

+
+
+
+
+
+
Ukedager
+
+
+
10:00 - 18:00
+
+
+
+
+
Lørdag
+
+
+
10:00 - 16:00
+
+
+
+
+
Søndag
+
+
+
Stengt
+
+
+
+
+
\ No newline at end of file diff --git a/application/views/pages_20250312/includes/booking-finished-form-en.php b/application/views/pages_20250312/includes/booking-finished-form-en.php new file mode 100755 index 0000000..2757698 --- /dev/null +++ b/application/views/pages_20250312/includes/booking-finished-form-en.php @@ -0,0 +1,4 @@ +
+
Thank you for your booking!
+
We sent the details for your booking via Email.
+
\ No newline at end of file diff --git a/application/views/pages_20250312/includes/booking-finished-form-en_20240626.php b/application/views/pages_20250312/includes/booking-finished-form-en_20240626.php new file mode 100755 index 0000000..2757698 --- /dev/null +++ b/application/views/pages_20250312/includes/booking-finished-form-en_20240626.php @@ -0,0 +1,4 @@ +
+
Thank you for your booking!
+
We sent the details for your booking via Email.
+
\ No newline at end of file diff --git a/application/views/pages_20250312/includes/booking-finished-form-hu.php b/application/views/pages_20250312/includes/booking-finished-form-hu.php new file mode 100755 index 0000000..61519cc --- /dev/null +++ b/application/views/pages_20250312/includes/booking-finished-form-hu.php @@ -0,0 +1,4 @@ +
+
Köszönjük a foglalást!
+
Elküldtük a foglalás részleteit emailben.
+
\ No newline at end of file diff --git a/application/views/pages_20250312/includes/booking-finished-form-hu_20240626.php b/application/views/pages_20250312/includes/booking-finished-form-hu_20240626.php new file mode 100755 index 0000000..61519cc --- /dev/null +++ b/application/views/pages_20250312/includes/booking-finished-form-hu_20240626.php @@ -0,0 +1,4 @@ +
+
Köszönjük a foglalást!
+
Elküldtük a foglalás részleteit emailben.
+
\ No newline at end of file diff --git a/application/views/pages_20250312/includes/booking-finished-form-no.php b/application/views/pages_20250312/includes/booking-finished-form-no.php new file mode 100755 index 0000000..fa081be --- /dev/null +++ b/application/views/pages_20250312/includes/booking-finished-form-no.php @@ -0,0 +1,4 @@ +
+
Takk for din bestilling!
+
Vi sendte detaljene for din bestilling via e-post.
+
\ No newline at end of file diff --git a/application/views/pages_20250312/includes/booking-finished-form-no_20240626.php b/application/views/pages_20250312/includes/booking-finished-form-no_20240626.php new file mode 100755 index 0000000..fa081be --- /dev/null +++ b/application/views/pages_20250312/includes/booking-finished-form-no_20240626.php @@ -0,0 +1,4 @@ +
+
Takk for din bestilling!
+
Vi sendte detaljene for din bestilling via e-post.
+
\ No newline at end of file diff --git a/application/views/pages_20250312/includes/booking-form-en.php b/application/views/pages_20250312/includes/booking-form-en.php new file mode 100755 index 0000000..b30e281 --- /dev/null +++ b/application/views/pages_20250312/includes/booking-form-en.php @@ -0,0 +1,466 @@ +
+
Booking Process
+ +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+ +
+ +
+
+
Services
+
+
+
+
+
Service name
+
+
Price
+
+
+
+ service_category != $prevousCategory){ + ?> +
+
+

service_category;?>

+
+
+ +
+
service_name;?>
+
+
service_price;?>
+
+
+
service_description;?>
+
+
+
+ + + +
+
+ service_category; + } + } + ?> +
+ + + +
+ +
+
+
+ + + +
Choose a worker
+
+ + + +
+
+ + +
+
+
+
+
+
+
+
+
+ + + +
+ +
+
+
+
+ + +
+
+
+ +
+ + +
+
+ + +
+
+ + +
+ +
+ + +
+ + +
+
+
+ +
+ + + + + + \ No newline at end of file diff --git a/application/views/pages_20250312/includes/booking-form-en_20240706.php b/application/views/pages_20250312/includes/booking-form-en_20240706.php new file mode 100755 index 0000000..0e0e618 --- /dev/null +++ b/application/views/pages_20250312/includes/booking-form-en_20240706.php @@ -0,0 +1,427 @@ +
+
Booking Process
+ +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+ +
+ +
+
+
Services
+
+
+
+
+
Service name
+
+
Price
+
+
+
+ service_category != $prevousCategory){ + ?> +
+
+

service_category;?>

+
+
+ +
+
service_name;?>
+
+
service_price;?>
+
+
+
service_description;?>
+
+
+
+ + + +
+
+ service_category; + } + } + ?> +
+ + + +
+ +
+
+
+ + + +
Choose a worker
+
+ + + +
+
+ + +
+
+
+
+
+
+
+
+
+ + + +
+ +
+
+
+
+ + +
+
+
+ +
+ + +
+
+ + +
+
+ + +
+ +
+ + +
+ + +
+
+
+ +
+ + + + + + \ No newline at end of file diff --git a/application/views/pages_20250312/includes/booking-form-hu.php b/application/views/pages_20250312/includes/booking-form-hu.php new file mode 100755 index 0000000..37abf9b --- /dev/null +++ b/application/views/pages_20250312/includes/booking-form-hu.php @@ -0,0 +1,467 @@ +
+
Foglalási folyamat
+ +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+ +
+ +
+
+
Szolgáltatások
+
+
+
+
+
Szolgáltatás neve
+
+
Ára
+
+
+
+ service_category != $prevousCategory){ + ?> +
+
+

service_category;?>

+
+
+ +
+
service_name;?>
+
+
service_price;?>
+
+
+
service_description;?>
+
+
+
+ + + +
+
+ service_category; + } + } + ?> +
+ + + +
+ +
+
+
+ + + +
Válassz dolgozót
+
+ + + +
+
+ + +
+
+
+
+
+
+
+
+
+ + + +
+ +
+
+
+
+ + + +
+
+
+ +
+ + +
+
+ + +
+
+ + +
+ +
+ + +
+ +
+
+
+
+ + + + + + \ No newline at end of file diff --git a/application/views/pages_20250312/includes/booking-form-hu_20240706.php b/application/views/pages_20250312/includes/booking-form-hu_20240706.php new file mode 100755 index 0000000..fb11818 --- /dev/null +++ b/application/views/pages_20250312/includes/booking-form-hu_20240706.php @@ -0,0 +1,426 @@ +
+
Foglalási folyamat
+ +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+ +
+ +
+
+
Szolgáltatások
+
+
+
+
+
Szolgáltatás neve
+
+
Ára
+
+
+
+ service_category != $prevousCategory){ + ?> +
+
+

service_category;?>

+
+
+ +
+
service_name;?>
+
+
service_price;?>
+
+
+
service_description;?>
+
+
+
+ + + +
+
+ service_category; + } + } + ?> +
+ + + +
+ +
+
+
+ + + +
Válassz dolgozót
+
+ + + +
+
+ + +
+
+
+
+
+
+
+
+
+ + + +
+ +
+
+
+
+ + + +
+
+
+ +
+ + +
+
+ + +
+
+ + +
+ +
+ + +
+ +
+
+
+
+ + + + + + \ No newline at end of file diff --git a/application/views/pages_20250312/includes/booking-form-hu_new.php b/application/views/pages_20250312/includes/booking-form-hu_new.php new file mode 100755 index 0000000..925eb1a --- /dev/null +++ b/application/views/pages_20250312/includes/booking-form-hu_new.php @@ -0,0 +1,467 @@ +
+
Foglalási folyamat
+ +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+ +
+ +
+
+
Szolgáltatások
+
+
+
+
+
Szolgáltatás neve
+
+
Ára
+
+
+
+ service_category != $prevousCategory){ + ?> +
+
+

service_category;?>

+
+
+ +
+
service_name;?>
+
+
service_price;?>
+
+
+
service_description;?>
+
+
+
+ + + +
+
+ service_category; + } + } + ?> +
+ + + +
+ +
+
+
+ + + +
Válassz dolgozót
+
+ + + +
+
+ + +
+
+
+
+
+
+
+
+
+ + + +
+ +
+
+
+
+ + + +
+
+
+ +
+ + +
+
+ + +
+
+ + +
+ +
+ + +
+ +
+
+
+
+ + + + + + \ No newline at end of file diff --git a/application/views/pages_20250312/includes/booking-form-no.php b/application/views/pages_20250312/includes/booking-form-no.php new file mode 100755 index 0000000..c98cf58 --- /dev/null +++ b/application/views/pages_20250312/includes/booking-form-no.php @@ -0,0 +1,465 @@ +
+
Bestillingsprosess
+ +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+ +
+ +
+
+
Services
+
+
+
+
+
Tjenestenavn
+
+
Pris
+
+
+
+ service_category != $prevousCategory){ + ?> +
+
+

service_category;?>

+
+
+ +
+
service_name;?>
+
+
service_price;?>
+
+
+
service_description;?>
+
+
+
+ + + +
+
+ service_category; + } + } + ?> +
+ + + +
+ +
+
+
+ + + +
Velg en arbeider
+
+ + + +
+
+ + +
+
+
+
+
+
+
+
+
+ + + +
+ +
+
+
+
+ + + +
+
+
+ +
+ + +
+
+ + +
+
+ + +
+ +
+ + +
+ +
+
+
+
+ + + + + + \ No newline at end of file diff --git a/application/views/pages_20250312/includes/booking-form-no_20240706.php b/application/views/pages_20250312/includes/booking-form-no_20240706.php new file mode 100755 index 0000000..16fb4f2 --- /dev/null +++ b/application/views/pages_20250312/includes/booking-form-no_20240706.php @@ -0,0 +1,426 @@ +
+
Bestillingsprosess
+ +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+ +
+ +
+
+
Services
+
+
+
+
+
Tjenestenavn
+
+
Pris
+
+
+
+ service_category != $prevousCategory){ + ?> +
+
+

service_category;?>

+
+
+ +
+
service_name;?>
+
+
service_price;?>
+
+
+
service_description;?>
+
+
+
+ + + +
+
+ service_category; + } + } + ?> +
+ + + +
+ +
+
+
+ + + +
Velg en arbeider
+
+ + + +
+
+ + +
+
+
+
+
+
+
+
+
+ + + +
+ +
+
+
+
+ + + +
+
+
+ +
+ + +
+
+ + +
+
+ + +
+ +
+ + +
+ +
+
+
+
+ + + + + + \ No newline at end of file diff --git a/application/views/pages_20250312/includes/home-form.php b/application/views/pages_20250312/includes/home-form.php new file mode 100755 index 0000000..e4e025d --- /dev/null +++ b/application/views/pages_20250312/includes/home-form.php @@ -0,0 +1,30 @@ +
+ + +
+ + + + + + diff --git a/application/views/pages_20250312/modify-user.php b/application/views/pages_20250312/modify-user.php new file mode 100755 index 0000000..ba909d1 --- /dev/null +++ b/application/views/pages_20250312/modify-user.php @@ -0,0 +1,7 @@ +Felhasználó módosítása'; + include(getcwd().'/application/views/includes/modify-user-form.php'); + include(getcwd().'/application/views/includes/skeleton-bottom.php'); +?> diff --git a/application/views/pages_20250312/profile.php b/application/views/pages_20250312/profile.php new file mode 100755 index 0000000..c13c1a9 --- /dev/null +++ b/application/views/pages_20250312/profile.php @@ -0,0 +1,6 @@ +'.$pageTitle.''; + include(getcwd().'/application/views/includes/profile-form.php'); + include(getcwd().'/application/views/includes/skeleton-bottom.php'); +?> diff --git a/application/views/pages_20250312/user-management.php b/application/views/pages_20250312/user-management.php new file mode 100755 index 0000000..0126853 --- /dev/null +++ b/application/views/pages_20250312/user-management.php @@ -0,0 +1,7 @@ +Felhasználók'; + include(getcwd().'/application/views/includes/user-management-form.php'); + include(getcwd().'/application/views/includes/skeleton-bottom.php'); +?> diff --git a/application/views/pages_20250312/user-process.php b/application/views/pages_20250312/user-process.php new file mode 100755 index 0000000..7fe2f0d --- /dev/null +++ b/application/views/pages_20250312/user-process.php @@ -0,0 +1 @@ +gjgjhghjg \ No newline at end of file diff --git a/archive/assets/css/fontawesome-all.min.css b/archive/assets/css/fontawesome-all.min.css new file mode 100755 index 0000000..63d5a94 --- /dev/null +++ b/archive/assets/css/fontawesome-all.min.css @@ -0,0 +1,253 @@ +/*! + * Font Awesome Free 5.9.0 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) + */ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +.fa,.fab,.fal,.far,.fas{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-.0667em}.fa-xs{font-size:.75em}.fa-sm{font-size:.875em}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:2.5em;padding-left:0}.fa-ul>li{position:relative}.fa-li{left:-2em;position:absolute;text-align:center;width:2em;line-height:inherit}.fa-border{border:.08em solid #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.fab.fa-pull-left,.fal.fa-pull-left,.far.fa-pull-left,.fas.fa-pull-left{margin-right:.3em}.fa.fa-pull-right,.fab.fa-pull-right,.fal.fa-pull-right,.far.fa-pull-right,.fas.fa-pull-right{margin-left:.3em}.fa-spin{animation:fa-spin 2s infinite linear}.fa-pulse{animation:fa-spin 1s infinite steps(8)}@keyframes fa-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";transform:scaleX(-1)}.fa-flip-vertical{transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical,.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{transform:scale(-1)}:root .fa-flip-both,:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270{filter:none}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-500px:before{content:"\f26e"}.fa-accessible-icon:before{content:"\f368"}.fa-accusoft:before{content:"\f369"}.fa-acquisitions-incorporated:before{content:"\f6af"}.fa-ad:before{content:"\f641"}.fa-address-book:before{content:"\f2b9"}.fa-address-card:before{content:"\f2bb"}.fa-adjust:before{content:"\f042"}.fa-adn:before{content:"\f170"}.fa-adobe:before{content:"\f778"}.fa-adversal:before{content:"\f36a"}.fa-affiliatetheme:before{content:"\f36b"}.fa-air-freshener:before{content:"\f5d0"}.fa-airbnb:before{content:"\f834"}.fa-algolia:before{content:"\f36c"}.fa-align-center:before{content:"\f037"}.fa-align-justify:before{content:"\f039"}.fa-align-left:before{content:"\f036"}.fa-align-right:before{content:"\f038"}.fa-alipay:before{content:"\f642"}.fa-allergies:before{content:"\f461"}.fa-amazon:before{content:"\f270"}.fa-amazon-pay:before{content:"\f42c"}.fa-ambulance:before{content:"\f0f9"}.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-amilia:before{content:"\f36d"}.fa-anchor:before{content:"\f13d"}.fa-android:before{content:"\f17b"}.fa-angellist:before{content:"\f209"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-down:before{content:"\f107"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angry:before{content:"\f556"}.fa-angrycreative:before{content:"\f36e"}.fa-angular:before{content:"\f420"}.fa-ankh:before{content:"\f644"}.fa-app-store:before{content:"\f36f"}.fa-app-store-ios:before{content:"\f370"}.fa-apper:before{content:"\f371"}.fa-apple:before{content:"\f179"}.fa-apple-alt:before{content:"\f5d1"}.fa-apple-pay:before{content:"\f415"}.fa-archive:before{content:"\f187"}.fa-archway:before{content:"\f557"}.fa-arrow-alt-circle-down:before{content:"\f358"}.fa-arrow-alt-circle-left:before{content:"\f359"}.fa-arrow-alt-circle-right:before{content:"\f35a"}.fa-arrow-alt-circle-up:before{content:"\f35b"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-down:before{content:"\f063"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrows-alt:before{content:"\f0b2"}.fa-arrows-alt-h:before{content:"\f337"}.fa-arrows-alt-v:before{content:"\f338"}.fa-artstation:before{content:"\f77a"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asterisk:before{content:"\f069"}.fa-asymmetrik:before{content:"\f372"}.fa-at:before{content:"\f1fa"}.fa-atlas:before{content:"\f558"}.fa-atlassian:before{content:"\f77b"}.fa-atom:before{content:"\f5d2"}.fa-audible:before{content:"\f373"}.fa-audio-description:before{content:"\f29e"}.fa-autoprefixer:before{content:"\f41c"}.fa-avianex:before{content:"\f374"}.fa-aviato:before{content:"\f421"}.fa-award:before{content:"\f559"}.fa-aws:before{content:"\f375"}.fa-baby:before{content:"\f77c"}.fa-baby-carriage:before{content:"\f77d"}.fa-backspace:before{content:"\f55a"}.fa-backward:before{content:"\f04a"}.fa-bacon:before{content:"\f7e5"}.fa-balance-scale:before{content:"\f24e"}.fa-balance-scale-left:before{content:"\f515"}.fa-balance-scale-right:before{content:"\f516"}.fa-ban:before{content:"\f05e"}.fa-band-aid:before{content:"\f462"}.fa-bandcamp:before{content:"\f2d5"}.fa-barcode:before{content:"\f02a"}.fa-bars:before{content:"\f0c9"}.fa-baseball-ball:before{content:"\f433"}.fa-basketball-ball:before{content:"\f434"}.fa-bath:before{content:"\f2cd"}.fa-battery-empty:before{content:"\f244"}.fa-battery-full:before{content:"\f240"}.fa-battery-half:before{content:"\f242"}.fa-battery-quarter:before{content:"\f243"}.fa-battery-three-quarters:before{content:"\f241"}.fa-battle-net:before{content:"\f835"}.fa-bed:before{content:"\f236"}.fa-beer:before{content:"\f0fc"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-bell:before{content:"\f0f3"}.fa-bell-slash:before{content:"\f1f6"}.fa-bezier-curve:before{content:"\f55b"}.fa-bible:before{content:"\f647"}.fa-bicycle:before{content:"\f206"}.fa-biking:before{content:"\f84a"}.fa-bimobject:before{content:"\f378"}.fa-binoculars:before{content:"\f1e5"}.fa-biohazard:before{content:"\f780"}.fa-birthday-cake:before{content:"\f1fd"}.fa-bitbucket:before{content:"\f171"}.fa-bitcoin:before{content:"\f379"}.fa-bity:before{content:"\f37a"}.fa-black-tie:before{content:"\f27e"}.fa-blackberry:before{content:"\f37b"}.fa-blender:before{content:"\f517"}.fa-blender-phone:before{content:"\f6b6"}.fa-blind:before{content:"\f29d"}.fa-blog:before{content:"\f781"}.fa-blogger:before{content:"\f37c"}.fa-blogger-b:before{content:"\f37d"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-bold:before{content:"\f032"}.fa-bolt:before{content:"\f0e7"}.fa-bomb:before{content:"\f1e2"}.fa-bone:before{content:"\f5d7"}.fa-bong:before{content:"\f55c"}.fa-book:before{content:"\f02d"}.fa-book-dead:before{content:"\f6b7"}.fa-book-medical:before{content:"\f7e6"}.fa-book-open:before{content:"\f518"}.fa-book-reader:before{content:"\f5da"}.fa-bookmark:before{content:"\f02e"}.fa-bootstrap:before{content:"\f836"}.fa-border-all:before{content:"\f84c"}.fa-border-none:before{content:"\f850"}.fa-border-style:before{content:"\f853"}.fa-bowling-ball:before{content:"\f436"}.fa-box:before{content:"\f466"}.fa-box-open:before{content:"\f49e"}.fa-boxes:before{content:"\f468"}.fa-braille:before{content:"\f2a1"}.fa-brain:before{content:"\f5dc"}.fa-bread-slice:before{content:"\f7ec"}.fa-briefcase:before{content:"\f0b1"}.fa-briefcase-medical:before{content:"\f469"}.fa-broadcast-tower:before{content:"\f519"}.fa-broom:before{content:"\f51a"}.fa-brush:before{content:"\f55d"}.fa-btc:before{content:"\f15a"}.fa-buffer:before{content:"\f837"}.fa-bug:before{content:"\f188"}.fa-building:before{content:"\f1ad"}.fa-bullhorn:before{content:"\f0a1"}.fa-bullseye:before{content:"\f140"}.fa-burn:before{content:"\f46a"}.fa-buromobelexperte:before{content:"\f37f"}.fa-bus:before{content:"\f207"}.fa-bus-alt:before{content:"\f55e"}.fa-business-time:before{content:"\f64a"}.fa-buysellads:before{content:"\f20d"}.fa-calculator:before{content:"\f1ec"}.fa-calendar:before{content:"\f133"}.fa-calendar-alt:before{content:"\f073"}.fa-calendar-check:before{content:"\f274"}.fa-calendar-day:before{content:"\f783"}.fa-calendar-minus:before{content:"\f272"}.fa-calendar-plus:before{content:"\f271"}.fa-calendar-times:before{content:"\f273"}.fa-calendar-week:before{content:"\f784"}.fa-camera:before{content:"\f030"}.fa-camera-retro:before{content:"\f083"}.fa-campground:before{content:"\f6bb"}.fa-canadian-maple-leaf:before{content:"\f785"}.fa-candy-cane:before{content:"\f786"}.fa-cannabis:before{content:"\f55f"}.fa-capsules:before{content:"\f46b"}.fa-car:before{content:"\f1b9"}.fa-car-alt:before{content:"\f5de"}.fa-car-battery:before{content:"\f5df"}.fa-car-crash:before{content:"\f5e1"}.fa-car-side:before{content:"\f5e4"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-caret-square-down:before{content:"\f150"}.fa-caret-square-left:before{content:"\f191"}.fa-caret-square-right:before{content:"\f152"}.fa-caret-square-up:before{content:"\f151"}.fa-caret-up:before{content:"\f0d8"}.fa-carrot:before{content:"\f787"}.fa-cart-arrow-down:before{content:"\f218"}.fa-cart-plus:before{content:"\f217"}.fa-cash-register:before{content:"\f788"}.fa-cat:before{content:"\f6be"}.fa-cc-amazon-pay:before{content:"\f42d"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-apple-pay:before{content:"\f416"}.fa-cc-diners-club:before{content:"\f24c"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-cc-visa:before{content:"\f1f0"}.fa-centercode:before{content:"\f380"}.fa-centos:before{content:"\f789"}.fa-certificate:before{content:"\f0a3"}.fa-chair:before{content:"\f6c0"}.fa-chalkboard:before{content:"\f51b"}.fa-chalkboard-teacher:before{content:"\f51c"}.fa-charging-station:before{content:"\f5e7"}.fa-chart-area:before{content:"\f1fe"}.fa-chart-bar:before{content:"\f080"}.fa-chart-line:before{content:"\f201"}.fa-chart-pie:before{content:"\f200"}.fa-check:before{content:"\f00c"}.fa-check-circle:before{content:"\f058"}.fa-check-double:before{content:"\f560"}.fa-check-square:before{content:"\f14a"}.fa-cheese:before{content:"\f7ef"}.fa-chess:before{content:"\f439"}.fa-chess-bishop:before{content:"\f43a"}.fa-chess-board:before{content:"\f43c"}.fa-chess-king:before{content:"\f43f"}.fa-chess-knight:before{content:"\f441"}.fa-chess-pawn:before{content:"\f443"}.fa-chess-queen:before{content:"\f445"}.fa-chess-rook:before{content:"\f447"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-down:before{content:"\f078"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-chevron-up:before{content:"\f077"}.fa-child:before{content:"\f1ae"}.fa-chrome:before{content:"\f268"}.fa-chromecast:before{content:"\f838"}.fa-church:before{content:"\f51d"}.fa-circle:before{content:"\f111"}.fa-circle-notch:before{content:"\f1ce"}.fa-city:before{content:"\f64f"}.fa-clinic-medical:before{content:"\f7f2"}.fa-clipboard:before{content:"\f328"}.fa-clipboard-check:before{content:"\f46c"}.fa-clipboard-list:before{content:"\f46d"}.fa-clock:before{content:"\f017"}.fa-clone:before{content:"\f24d"}.fa-closed-captioning:before{content:"\f20a"}.fa-cloud:before{content:"\f0c2"}.fa-cloud-download-alt:before{content:"\f381"}.fa-cloud-meatball:before{content:"\f73b"}.fa-cloud-moon:before{content:"\f6c3"}.fa-cloud-moon-rain:before{content:"\f73c"}.fa-cloud-rain:before{content:"\f73d"}.fa-cloud-showers-heavy:before{content:"\f740"}.fa-cloud-sun:before{content:"\f6c4"}.fa-cloud-sun-rain:before{content:"\f743"}.fa-cloud-upload-alt:before{content:"\f382"}.fa-cloudscale:before{content:"\f383"}.fa-cloudsmith:before{content:"\f384"}.fa-cloudversify:before{content:"\f385"}.fa-cocktail:before{content:"\f561"}.fa-code:before{content:"\f121"}.fa-code-branch:before{content:"\f126"}.fa-codepen:before{content:"\f1cb"}.fa-codiepie:before{content:"\f284"}.fa-coffee:before{content:"\f0f4"}.fa-cog:before{content:"\f013"}.fa-cogs:before{content:"\f085"}.fa-coins:before{content:"\f51e"}.fa-columns:before{content:"\f0db"}.fa-comment:before{content:"\f075"}.fa-comment-alt:before{content:"\f27a"}.fa-comment-dollar:before{content:"\f651"}.fa-comment-dots:before{content:"\f4ad"}.fa-comment-medical:before{content:"\f7f5"}.fa-comment-slash:before{content:"\f4b3"}.fa-comments:before{content:"\f086"}.fa-comments-dollar:before{content:"\f653"}.fa-compact-disc:before{content:"\f51f"}.fa-compass:before{content:"\f14e"}.fa-compress:before{content:"\f066"}.fa-compress-arrows-alt:before{content:"\f78c"}.fa-concierge-bell:before{content:"\f562"}.fa-confluence:before{content:"\f78d"}.fa-connectdevelop:before{content:"\f20e"}.fa-contao:before{content:"\f26d"}.fa-cookie:before{content:"\f563"}.fa-cookie-bite:before{content:"\f564"}.fa-copy:before{content:"\f0c5"}.fa-copyright:before{content:"\f1f9"}.fa-couch:before{content:"\f4b8"}.fa-cpanel:before{content:"\f388"}.fa-creative-commons:before{content:"\f25e"}.fa-creative-commons-by:before{content:"\f4e7"}.fa-creative-commons-nc:before{content:"\f4e8"}.fa-creative-commons-nc-eu:before{content:"\f4e9"}.fa-creative-commons-nc-jp:before{content:"\f4ea"}.fa-creative-commons-nd:before{content:"\f4eb"}.fa-creative-commons-pd:before{content:"\f4ec"}.fa-creative-commons-pd-alt:before{content:"\f4ed"}.fa-creative-commons-remix:before{content:"\f4ee"}.fa-creative-commons-sa:before{content:"\f4ef"}.fa-creative-commons-sampling:before{content:"\f4f0"}.fa-creative-commons-sampling-plus:before{content:"\f4f1"}.fa-creative-commons-share:before{content:"\f4f2"}.fa-creative-commons-zero:before{content:"\f4f3"}.fa-credit-card:before{content:"\f09d"}.fa-critical-role:before{content:"\f6c9"}.fa-crop:before{content:"\f125"}.fa-crop-alt:before{content:"\f565"}.fa-cross:before{content:"\f654"}.fa-crosshairs:before{content:"\f05b"}.fa-crow:before{content:"\f520"}.fa-crown:before{content:"\f521"}.fa-crutch:before{content:"\f7f7"}.fa-css3:before{content:"\f13c"}.fa-css3-alt:before{content:"\f38b"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-cut:before{content:"\f0c4"}.fa-cuttlefish:before{content:"\f38c"}.fa-d-and-d:before{content:"\f38d"}.fa-d-and-d-beyond:before{content:"\f6ca"}.fa-dashcube:before{content:"\f210"}.fa-database:before{content:"\f1c0"}.fa-deaf:before{content:"\f2a4"}.fa-delicious:before{content:"\f1a5"}.fa-democrat:before{content:"\f747"}.fa-deploydog:before{content:"\f38e"}.fa-deskpro:before{content:"\f38f"}.fa-desktop:before{content:"\f108"}.fa-dev:before{content:"\f6cc"}.fa-deviantart:before{content:"\f1bd"}.fa-dharmachakra:before{content:"\f655"}.fa-dhl:before{content:"\f790"}.fa-diagnoses:before{content:"\f470"}.fa-diaspora:before{content:"\f791"}.fa-dice:before{content:"\f522"}.fa-dice-d20:before{content:"\f6cf"}.fa-dice-d6:before{content:"\f6d1"}.fa-dice-five:before{content:"\f523"}.fa-dice-four:before{content:"\f524"}.fa-dice-one:before{content:"\f525"}.fa-dice-six:before{content:"\f526"}.fa-dice-three:before{content:"\f527"}.fa-dice-two:before{content:"\f528"}.fa-digg:before{content:"\f1a6"}.fa-digital-ocean:before{content:"\f391"}.fa-digital-tachograph:before{content:"\f566"}.fa-directions:before{content:"\f5eb"}.fa-discord:before{content:"\f392"}.fa-discourse:before{content:"\f393"}.fa-divide:before{content:"\f529"}.fa-dizzy:before{content:"\f567"}.fa-dna:before{content:"\f471"}.fa-dochub:before{content:"\f394"}.fa-docker:before{content:"\f395"}.fa-dog:before{content:"\f6d3"}.fa-dollar-sign:before{content:"\f155"}.fa-dolly:before{content:"\f472"}.fa-dolly-flatbed:before{content:"\f474"}.fa-donate:before{content:"\f4b9"}.fa-door-closed:before{content:"\f52a"}.fa-door-open:before{content:"\f52b"}.fa-dot-circle:before{content:"\f192"}.fa-dove:before{content:"\f4ba"}.fa-download:before{content:"\f019"}.fa-draft2digital:before{content:"\f396"}.fa-drafting-compass:before{content:"\f568"}.fa-dragon:before{content:"\f6d5"}.fa-draw-polygon:before{content:"\f5ee"}.fa-dribbble:before{content:"\f17d"}.fa-dribbble-square:before{content:"\f397"}.fa-dropbox:before{content:"\f16b"}.fa-drum:before{content:"\f569"}.fa-drum-steelpan:before{content:"\f56a"}.fa-drumstick-bite:before{content:"\f6d7"}.fa-drupal:before{content:"\f1a9"}.fa-dumbbell:before{content:"\f44b"}.fa-dumpster:before{content:"\f793"}.fa-dumpster-fire:before{content:"\f794"}.fa-dungeon:before{content:"\f6d9"}.fa-dyalog:before{content:"\f399"}.fa-earlybirds:before{content:"\f39a"}.fa-ebay:before{content:"\f4f4"}.fa-edge:before{content:"\f282"}.fa-edit:before{content:"\f044"}.fa-egg:before{content:"\f7fb"}.fa-eject:before{content:"\f052"}.fa-elementor:before{content:"\f430"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-ello:before{content:"\f5f1"}.fa-ember:before{content:"\f423"}.fa-empire:before{content:"\f1d1"}.fa-envelope:before{content:"\f0e0"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-text:before{content:"\f658"}.fa-envelope-square:before{content:"\f199"}.fa-envira:before{content:"\f299"}.fa-equals:before{content:"\f52c"}.fa-eraser:before{content:"\f12d"}.fa-erlang:before{content:"\f39d"}.fa-ethereum:before{content:"\f42e"}.fa-ethernet:before{content:"\f796"}.fa-etsy:before{content:"\f2d7"}.fa-euro-sign:before{content:"\f153"}.fa-evernote:before{content:"\f839"}.fa-exchange-alt:before{content:"\f362"}.fa-exclamation:before{content:"\f12a"}.fa-exclamation-circle:before{content:"\f06a"}.fa-exclamation-triangle:before{content:"\f071"}.fa-expand:before{content:"\f065"}.fa-expand-arrows-alt:before{content:"\f31e"}.fa-expeditedssl:before{content:"\f23e"}.fa-external-link-alt:before{content:"\f35d"}.fa-external-link-square-alt:before{content:"\f360"}.fa-eye:before{content:"\f06e"}.fa-eye-dropper:before{content:"\f1fb"}.fa-eye-slash:before{content:"\f070"}.fa-facebook:before{content:"\f09a"}.fa-facebook-f:before{content:"\f39e"}.fa-facebook-messenger:before{content:"\f39f"}.fa-facebook-square:before{content:"\f082"}.fa-fan:before{content:"\f863"}.fa-fantasy-flight-games:before{content:"\f6dc"}.fa-fast-backward:before{content:"\f049"}.fa-fast-forward:before{content:"\f050"}.fa-fax:before{content:"\f1ac"}.fa-feather:before{content:"\f52d"}.fa-feather-alt:before{content:"\f56b"}.fa-fedex:before{content:"\f797"}.fa-fedora:before{content:"\f798"}.fa-female:before{content:"\f182"}.fa-fighter-jet:before{content:"\f0fb"}.fa-figma:before{content:"\f799"}.fa-file:before{content:"\f15b"}.fa-file-alt:before{content:"\f15c"}.fa-file-archive:before{content:"\f1c6"}.fa-file-audio:before{content:"\f1c7"}.fa-file-code:before{content:"\f1c9"}.fa-file-contract:before{content:"\f56c"}.fa-file-csv:before{content:"\f6dd"}.fa-file-download:before{content:"\f56d"}.fa-file-excel:before{content:"\f1c3"}.fa-file-export:before{content:"\f56e"}.fa-file-image:before{content:"\f1c5"}.fa-file-import:before{content:"\f56f"}.fa-file-invoice:before{content:"\f570"}.fa-file-invoice-dollar:before{content:"\f571"}.fa-file-medical:before{content:"\f477"}.fa-file-medical-alt:before{content:"\f478"}.fa-file-pdf:before{content:"\f1c1"}.fa-file-powerpoint:before{content:"\f1c4"}.fa-file-prescription:before{content:"\f572"}.fa-file-signature:before{content:"\f573"}.fa-file-upload:before{content:"\f574"}.fa-file-video:before{content:"\f1c8"}.fa-file-word:before{content:"\f1c2"}.fa-fill:before{content:"\f575"}.fa-fill-drip:before{content:"\f576"}.fa-film:before{content:"\f008"}.fa-filter:before{content:"\f0b0"}.fa-fingerprint:before{content:"\f577"}.fa-fire:before{content:"\f06d"}.fa-fire-alt:before{content:"\f7e4"}.fa-fire-extinguisher:before{content:"\f134"}.fa-firefox:before{content:"\f269"}.fa-first-aid:before{content:"\f479"}.fa-first-order:before{content:"\f2b0"}.fa-first-order-alt:before{content:"\f50a"}.fa-firstdraft:before{content:"\f3a1"}.fa-fish:before{content:"\f578"}.fa-fist-raised:before{content:"\f6de"}.fa-flag:before{content:"\f024"}.fa-flag-checkered:before{content:"\f11e"}.fa-flag-usa:before{content:"\f74d"}.fa-flask:before{content:"\f0c3"}.fa-flickr:before{content:"\f16e"}.fa-flipboard:before{content:"\f44d"}.fa-flushed:before{content:"\f579"}.fa-fly:before{content:"\f417"}.fa-folder:before{content:"\f07b"}.fa-folder-minus:before{content:"\f65d"}.fa-folder-open:before{content:"\f07c"}.fa-folder-plus:before{content:"\f65e"}.fa-font:before{content:"\f031"}.fa-font-awesome:before{content:"\f2b4"}.fa-font-awesome-alt:before{content:"\f35c"}.fa-font-awesome-flag:before{content:"\f425"}.fa-font-awesome-logo-full:before{content:"\f4e6"}.fa-fonticons:before{content:"\f280"}.fa-fonticons-fi:before{content:"\f3a2"}.fa-football-ball:before{content:"\f44e"}.fa-fort-awesome:before{content:"\f286"}.fa-fort-awesome-alt:before{content:"\f3a3"}.fa-forumbee:before{content:"\f211"}.fa-forward:before{content:"\f04e"}.fa-foursquare:before{content:"\f180"}.fa-free-code-camp:before{content:"\f2c5"}.fa-freebsd:before{content:"\f3a4"}.fa-frog:before{content:"\f52e"}.fa-frown:before{content:"\f119"}.fa-frown-open:before{content:"\f57a"}.fa-fulcrum:before{content:"\f50b"}.fa-funnel-dollar:before{content:"\f662"}.fa-futbol:before{content:"\f1e3"}.fa-galactic-republic:before{content:"\f50c"}.fa-galactic-senate:before{content:"\f50d"}.fa-gamepad:before{content:"\f11b"}.fa-gas-pump:before{content:"\f52f"}.fa-gavel:before{content:"\f0e3"}.fa-gem:before{content:"\f3a5"}.fa-genderless:before{content:"\f22d"}.fa-get-pocket:before{content:"\f265"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-ghost:before{content:"\f6e2"}.fa-gift:before{content:"\f06b"}.fa-gifts:before{content:"\f79c"}.fa-git:before{content:"\f1d3"}.fa-git-alt:before{content:"\f841"}.fa-git-square:before{content:"\f1d2"}.fa-github:before{content:"\f09b"}.fa-github-alt:before{content:"\f113"}.fa-github-square:before{content:"\f092"}.fa-gitkraken:before{content:"\f3a6"}.fa-gitlab:before{content:"\f296"}.fa-gitter:before{content:"\f426"}.fa-glass-cheers:before{content:"\f79f"}.fa-glass-martini:before{content:"\f000"}.fa-glass-martini-alt:before{content:"\f57b"}.fa-glass-whiskey:before{content:"\f7a0"}.fa-glasses:before{content:"\f530"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-globe:before{content:"\f0ac"}.fa-globe-africa:before{content:"\f57c"}.fa-globe-americas:before{content:"\f57d"}.fa-globe-asia:before{content:"\f57e"}.fa-globe-europe:before{content:"\f7a2"}.fa-gofore:before{content:"\f3a7"}.fa-golf-ball:before{content:"\f450"}.fa-goodreads:before{content:"\f3a8"}.fa-goodreads-g:before{content:"\f3a9"}.fa-google:before{content:"\f1a0"}.fa-google-drive:before{content:"\f3aa"}.fa-google-play:before{content:"\f3ab"}.fa-google-plus:before{content:"\f2b3"}.fa-google-plus-g:before{content:"\f0d5"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-wallet:before{content:"\f1ee"}.fa-gopuram:before{content:"\f664"}.fa-graduation-cap:before{content:"\f19d"}.fa-gratipay:before{content:"\f184"}.fa-grav:before{content:"\f2d6"}.fa-greater-than:before{content:"\f531"}.fa-greater-than-equal:before{content:"\f532"}.fa-grimace:before{content:"\f57f"}.fa-grin:before{content:"\f580"}.fa-grin-alt:before{content:"\f581"}.fa-grin-beam:before{content:"\f582"}.fa-grin-beam-sweat:before{content:"\f583"}.fa-grin-hearts:before{content:"\f584"}.fa-grin-squint:before{content:"\f585"}.fa-grin-squint-tears:before{content:"\f586"}.fa-grin-stars:before{content:"\f587"}.fa-grin-tears:before{content:"\f588"}.fa-grin-tongue:before{content:"\f589"}.fa-grin-tongue-squint:before{content:"\f58a"}.fa-grin-tongue-wink:before{content:"\f58b"}.fa-grin-wink:before{content:"\f58c"}.fa-grip-horizontal:before{content:"\f58d"}.fa-grip-lines:before{content:"\f7a4"}.fa-grip-lines-vertical:before{content:"\f7a5"}.fa-grip-vertical:before{content:"\f58e"}.fa-gripfire:before{content:"\f3ac"}.fa-grunt:before{content:"\f3ad"}.fa-guitar:before{content:"\f7a6"}.fa-gulp:before{content:"\f3ae"}.fa-h-square:before{content:"\f0fd"}.fa-hacker-news:before{content:"\f1d4"}.fa-hacker-news-square:before{content:"\f3af"}.fa-hackerrank:before{content:"\f5f7"}.fa-hamburger:before{content:"\f805"}.fa-hammer:before{content:"\f6e3"}.fa-hamsa:before{content:"\f665"}.fa-hand-holding:before{content:"\f4bd"}.fa-hand-holding-heart:before{content:"\f4be"}.fa-hand-holding-usd:before{content:"\f4c0"}.fa-hand-lizard:before{content:"\f258"}.fa-hand-middle-finger:before{content:"\f806"}.fa-hand-paper:before{content:"\f256"}.fa-hand-peace:before{content:"\f25b"}.fa-hand-point-down:before{content:"\f0a7"}.fa-hand-point-left:before{content:"\f0a5"}.fa-hand-point-right:before{content:"\f0a4"}.fa-hand-point-up:before{content:"\f0a6"}.fa-hand-pointer:before{content:"\f25a"}.fa-hand-rock:before{content:"\f255"}.fa-hand-scissors:before{content:"\f257"}.fa-hand-spock:before{content:"\f259"}.fa-hands:before{content:"\f4c2"}.fa-hands-helping:before{content:"\f4c4"}.fa-handshake:before{content:"\f2b5"}.fa-hanukiah:before{content:"\f6e6"}.fa-hard-hat:before{content:"\f807"}.fa-hashtag:before{content:"\f292"}.fa-hat-wizard:before{content:"\f6e8"}.fa-haykal:before{content:"\f666"}.fa-hdd:before{content:"\f0a0"}.fa-heading:before{content:"\f1dc"}.fa-headphones:before{content:"\f025"}.fa-headphones-alt:before{content:"\f58f"}.fa-headset:before{content:"\f590"}.fa-heart:before{content:"\f004"}.fa-heart-broken:before{content:"\f7a9"}.fa-heartbeat:before{content:"\f21e"}.fa-helicopter:before{content:"\f533"}.fa-highlighter:before{content:"\f591"}.fa-hiking:before{content:"\f6ec"}.fa-hippo:before{content:"\f6ed"}.fa-hips:before{content:"\f452"}.fa-hire-a-helper:before{content:"\f3b0"}.fa-history:before{content:"\f1da"}.fa-hockey-puck:before{content:"\f453"}.fa-holly-berry:before{content:"\f7aa"}.fa-home:before{content:"\f015"}.fa-hooli:before{content:"\f427"}.fa-hornbill:before{content:"\f592"}.fa-horse:before{content:"\f6f0"}.fa-horse-head:before{content:"\f7ab"}.fa-hospital:before{content:"\f0f8"}.fa-hospital-alt:before{content:"\f47d"}.fa-hospital-symbol:before{content:"\f47e"}.fa-hot-tub:before{content:"\f593"}.fa-hotdog:before{content:"\f80f"}.fa-hotel:before{content:"\f594"}.fa-hotjar:before{content:"\f3b1"}.fa-hourglass:before{content:"\f254"}.fa-hourglass-end:before{content:"\f253"}.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-start:before{content:"\f251"}.fa-house-damage:before{content:"\f6f1"}.fa-houzz:before{content:"\f27c"}.fa-hryvnia:before{content:"\f6f2"}.fa-html5:before{content:"\f13b"}.fa-hubspot:before{content:"\f3b2"}.fa-i-cursor:before{content:"\f246"}.fa-ice-cream:before{content:"\f810"}.fa-icicles:before{content:"\f7ad"}.fa-icons:before{content:"\f86d"}.fa-id-badge:before{content:"\f2c1"}.fa-id-card:before{content:"\f2c2"}.fa-id-card-alt:before{content:"\f47f"}.fa-igloo:before{content:"\f7ae"}.fa-image:before{content:"\f03e"}.fa-images:before{content:"\f302"}.fa-imdb:before{content:"\f2d8"}.fa-inbox:before{content:"\f01c"}.fa-indent:before{content:"\f03c"}.fa-industry:before{content:"\f275"}.fa-infinity:before{content:"\f534"}.fa-info:before{content:"\f129"}.fa-info-circle:before{content:"\f05a"}.fa-instagram:before{content:"\f16d"}.fa-intercom:before{content:"\f7af"}.fa-internet-explorer:before{content:"\f26b"}.fa-invision:before{content:"\f7b0"}.fa-ioxhost:before{content:"\f208"}.fa-italic:before{content:"\f033"}.fa-itch-io:before{content:"\f83a"}.fa-itunes:before{content:"\f3b4"}.fa-itunes-note:before{content:"\f3b5"}.fa-java:before{content:"\f4e4"}.fa-jedi:before{content:"\f669"}.fa-jedi-order:before{content:"\f50e"}.fa-jenkins:before{content:"\f3b6"}.fa-jira:before{content:"\f7b1"}.fa-joget:before{content:"\f3b7"}.fa-joint:before{content:"\f595"}.fa-joomla:before{content:"\f1aa"}.fa-journal-whills:before{content:"\f66a"}.fa-js:before{content:"\f3b8"}.fa-js-square:before{content:"\f3b9"}.fa-jsfiddle:before{content:"\f1cc"}.fa-kaaba:before{content:"\f66b"}.fa-kaggle:before{content:"\f5fa"}.fa-key:before{content:"\f084"}.fa-keybase:before{content:"\f4f5"}.fa-keyboard:before{content:"\f11c"}.fa-keycdn:before{content:"\f3ba"}.fa-khanda:before{content:"\f66d"}.fa-kickstarter:before{content:"\f3bb"}.fa-kickstarter-k:before{content:"\f3bc"}.fa-kiss:before{content:"\f596"}.fa-kiss-beam:before{content:"\f597"}.fa-kiss-wink-heart:before{content:"\f598"}.fa-kiwi-bird:before{content:"\f535"}.fa-korvue:before{content:"\f42f"}.fa-landmark:before{content:"\f66f"}.fa-language:before{content:"\f1ab"}.fa-laptop:before{content:"\f109"}.fa-laptop-code:before{content:"\f5fc"}.fa-laptop-medical:before{content:"\f812"}.fa-laravel:before{content:"\f3bd"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-laugh:before{content:"\f599"}.fa-laugh-beam:before{content:"\f59a"}.fa-laugh-squint:before{content:"\f59b"}.fa-laugh-wink:before{content:"\f59c"}.fa-layer-group:before{content:"\f5fd"}.fa-leaf:before{content:"\f06c"}.fa-leanpub:before{content:"\f212"}.fa-lemon:before{content:"\f094"}.fa-less:before{content:"\f41d"}.fa-less-than:before{content:"\f536"}.fa-less-than-equal:before{content:"\f537"}.fa-level-down-alt:before{content:"\f3be"}.fa-level-up-alt:before{content:"\f3bf"}.fa-life-ring:before{content:"\f1cd"}.fa-lightbulb:before{content:"\f0eb"}.fa-line:before{content:"\f3c0"}.fa-link:before{content:"\f0c1"}.fa-linkedin:before{content:"\f08c"}.fa-linkedin-in:before{content:"\f0e1"}.fa-linode:before{content:"\f2b8"}.fa-linux:before{content:"\f17c"}.fa-lira-sign:before{content:"\f195"}.fa-list:before{content:"\f03a"}.fa-list-alt:before{content:"\f022"}.fa-list-ol:before{content:"\f0cb"}.fa-list-ul:before{content:"\f0ca"}.fa-location-arrow:before{content:"\f124"}.fa-lock:before{content:"\f023"}.fa-lock-open:before{content:"\f3c1"}.fa-long-arrow-alt-down:before{content:"\f309"}.fa-long-arrow-alt-left:before{content:"\f30a"}.fa-long-arrow-alt-right:before{content:"\f30b"}.fa-long-arrow-alt-up:before{content:"\f30c"}.fa-low-vision:before{content:"\f2a8"}.fa-luggage-cart:before{content:"\f59d"}.fa-lyft:before{content:"\f3c3"}.fa-magento:before{content:"\f3c4"}.fa-magic:before{content:"\f0d0"}.fa-magnet:before{content:"\f076"}.fa-mail-bulk:before{content:"\f674"}.fa-mailchimp:before{content:"\f59e"}.fa-male:before{content:"\f183"}.fa-mandalorian:before{content:"\f50f"}.fa-map:before{content:"\f279"}.fa-map-marked:before{content:"\f59f"}.fa-map-marked-alt:before{content:"\f5a0"}.fa-map-marker:before{content:"\f041"}.fa-map-marker-alt:before{content:"\f3c5"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-markdown:before{content:"\f60f"}.fa-marker:before{content:"\f5a1"}.fa-mars:before{content:"\f222"}.fa-mars-double:before{content:"\f227"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mask:before{content:"\f6fa"}.fa-mastodon:before{content:"\f4f6"}.fa-maxcdn:before{content:"\f136"}.fa-medal:before{content:"\f5a2"}.fa-medapps:before{content:"\f3c6"}.fa-medium:before{content:"\f23a"}.fa-medium-m:before{content:"\f3c7"}.fa-medkit:before{content:"\f0fa"}.fa-medrt:before{content:"\f3c8"}.fa-meetup:before{content:"\f2e0"}.fa-megaport:before{content:"\f5a3"}.fa-meh:before{content:"\f11a"}.fa-meh-blank:before{content:"\f5a4"}.fa-meh-rolling-eyes:before{content:"\f5a5"}.fa-memory:before{content:"\f538"}.fa-mendeley:before{content:"\f7b3"}.fa-menorah:before{content:"\f676"}.fa-mercury:before{content:"\f223"}.fa-meteor:before{content:"\f753"}.fa-microchip:before{content:"\f2db"}.fa-microphone:before{content:"\f130"}.fa-microphone-alt:before{content:"\f3c9"}.fa-microphone-alt-slash:before{content:"\f539"}.fa-microphone-slash:before{content:"\f131"}.fa-microscope:before{content:"\f610"}.fa-microsoft:before{content:"\f3ca"}.fa-minus:before{content:"\f068"}.fa-minus-circle:before{content:"\f056"}.fa-minus-square:before{content:"\f146"}.fa-mitten:before{content:"\f7b5"}.fa-mix:before{content:"\f3cb"}.fa-mixcloud:before{content:"\f289"}.fa-mizuni:before{content:"\f3cc"}.fa-mobile:before{content:"\f10b"}.fa-mobile-alt:before{content:"\f3cd"}.fa-modx:before{content:"\f285"}.fa-monero:before{content:"\f3d0"}.fa-money-bill:before{content:"\f0d6"}.fa-money-bill-alt:before{content:"\f3d1"}.fa-money-bill-wave:before{content:"\f53a"}.fa-money-bill-wave-alt:before{content:"\f53b"}.fa-money-check:before{content:"\f53c"}.fa-money-check-alt:before{content:"\f53d"}.fa-monument:before{content:"\f5a6"}.fa-moon:before{content:"\f186"}.fa-mortar-pestle:before{content:"\f5a7"}.fa-mosque:before{content:"\f678"}.fa-motorcycle:before{content:"\f21c"}.fa-mountain:before{content:"\f6fc"}.fa-mouse-pointer:before{content:"\f245"}.fa-mug-hot:before{content:"\f7b6"}.fa-music:before{content:"\f001"}.fa-napster:before{content:"\f3d2"}.fa-neos:before{content:"\f612"}.fa-network-wired:before{content:"\f6ff"}.fa-neuter:before{content:"\f22c"}.fa-newspaper:before{content:"\f1ea"}.fa-nimblr:before{content:"\f5a8"}.fa-node:before{content:"\f419"}.fa-node-js:before{content:"\f3d3"}.fa-not-equal:before{content:"\f53e"}.fa-notes-medical:before{content:"\f481"}.fa-npm:before{content:"\f3d4"}.fa-ns8:before{content:"\f3d5"}.fa-nutritionix:before{content:"\f3d6"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-oil-can:before{content:"\f613"}.fa-old-republic:before{content:"\f510"}.fa-om:before{content:"\f679"}.fa-opencart:before{content:"\f23d"}.fa-openid:before{content:"\f19b"}.fa-opera:before{content:"\f26a"}.fa-optin-monster:before{content:"\f23c"}.fa-osi:before{content:"\f41a"}.fa-otter:before{content:"\f700"}.fa-outdent:before{content:"\f03b"}.fa-page4:before{content:"\f3d7"}.fa-pagelines:before{content:"\f18c"}.fa-pager:before{content:"\f815"}.fa-paint-brush:before{content:"\f1fc"}.fa-paint-roller:before{content:"\f5aa"}.fa-palette:before{content:"\f53f"}.fa-palfed:before{content:"\f3d8"}.fa-pallet:before{content:"\f482"}.fa-paper-plane:before{content:"\f1d8"}.fa-paperclip:before{content:"\f0c6"}.fa-parachute-box:before{content:"\f4cd"}.fa-paragraph:before{content:"\f1dd"}.fa-parking:before{content:"\f540"}.fa-passport:before{content:"\f5ab"}.fa-pastafarianism:before{content:"\f67b"}.fa-paste:before{content:"\f0ea"}.fa-patreon:before{content:"\f3d9"}.fa-pause:before{content:"\f04c"}.fa-pause-circle:before{content:"\f28b"}.fa-paw:before{content:"\f1b0"}.fa-paypal:before{content:"\f1ed"}.fa-peace:before{content:"\f67c"}.fa-pen:before{content:"\f304"}.fa-pen-alt:before{content:"\f305"}.fa-pen-fancy:before{content:"\f5ac"}.fa-pen-nib:before{content:"\f5ad"}.fa-pen-square:before{content:"\f14b"}.fa-pencil-alt:before{content:"\f303"}.fa-pencil-ruler:before{content:"\f5ae"}.fa-penny-arcade:before{content:"\f704"}.fa-people-carry:before{content:"\f4ce"}.fa-pepper-hot:before{content:"\f816"}.fa-percent:before{content:"\f295"}.fa-percentage:before{content:"\f541"}.fa-periscope:before{content:"\f3da"}.fa-person-booth:before{content:"\f756"}.fa-phabricator:before{content:"\f3db"}.fa-phoenix-framework:before{content:"\f3dc"}.fa-phoenix-squadron:before{content:"\f511"}.fa-phone:before{content:"\f095"}.fa-phone-alt:before{content:"\f879"}.fa-phone-slash:before{content:"\f3dd"}.fa-phone-square:before{content:"\f098"}.fa-phone-square-alt:before{content:"\f87b"}.fa-phone-volume:before{content:"\f2a0"}.fa-photo-video:before{content:"\f87c"}.fa-php:before{content:"\f457"}.fa-pied-piper:before{content:"\f2ae"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-pied-piper-hat:before{content:"\f4e5"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-piggy-bank:before{content:"\f4d3"}.fa-pills:before{content:"\f484"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-p:before{content:"\f231"}.fa-pinterest-square:before{content:"\f0d3"}.fa-pizza-slice:before{content:"\f818"}.fa-place-of-worship:before{content:"\f67f"}.fa-plane:before{content:"\f072"}.fa-plane-arrival:before{content:"\f5af"}.fa-plane-departure:before{content:"\f5b0"}.fa-play:before{content:"\f04b"}.fa-play-circle:before{content:"\f144"}.fa-playstation:before{content:"\f3df"}.fa-plug:before{content:"\f1e6"}.fa-plus:before{content:"\f067"}.fa-plus-circle:before{content:"\f055"}.fa-plus-square:before{content:"\f0fe"}.fa-podcast:before{content:"\f2ce"}.fa-poll:before{content:"\f681"}.fa-poll-h:before{content:"\f682"}.fa-poo:before{content:"\f2fe"}.fa-poo-storm:before{content:"\f75a"}.fa-poop:before{content:"\f619"}.fa-portrait:before{content:"\f3e0"}.fa-pound-sign:before{content:"\f154"}.fa-power-off:before{content:"\f011"}.fa-pray:before{content:"\f683"}.fa-praying-hands:before{content:"\f684"}.fa-prescription:before{content:"\f5b1"}.fa-prescription-bottle:before{content:"\f485"}.fa-prescription-bottle-alt:before{content:"\f486"}.fa-print:before{content:"\f02f"}.fa-procedures:before{content:"\f487"}.fa-product-hunt:before{content:"\f288"}.fa-project-diagram:before{content:"\f542"}.fa-pushed:before{content:"\f3e1"}.fa-puzzle-piece:before{content:"\f12e"}.fa-python:before{content:"\f3e2"}.fa-qq:before{content:"\f1d6"}.fa-qrcode:before{content:"\f029"}.fa-question:before{content:"\f128"}.fa-question-circle:before{content:"\f059"}.fa-quidditch:before{content:"\f458"}.fa-quinscape:before{content:"\f459"}.fa-quora:before{content:"\f2c4"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-quran:before{content:"\f687"}.fa-r-project:before{content:"\f4f7"}.fa-radiation:before{content:"\f7b9"}.fa-radiation-alt:before{content:"\f7ba"}.fa-rainbow:before{content:"\f75b"}.fa-random:before{content:"\f074"}.fa-raspberry-pi:before{content:"\f7bb"}.fa-ravelry:before{content:"\f2d9"}.fa-react:before{content:"\f41b"}.fa-reacteurope:before{content:"\f75d"}.fa-readme:before{content:"\f4d5"}.fa-rebel:before{content:"\f1d0"}.fa-receipt:before{content:"\f543"}.fa-recycle:before{content:"\f1b8"}.fa-red-river:before{content:"\f3e3"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-alien:before{content:"\f281"}.fa-reddit-square:before{content:"\f1a2"}.fa-redhat:before{content:"\f7bc"}.fa-redo:before{content:"\f01e"}.fa-redo-alt:before{content:"\f2f9"}.fa-registered:before{content:"\f25d"}.fa-remove-format:before{content:"\f87d"}.fa-renren:before{content:"\f18b"}.fa-reply:before{content:"\f3e5"}.fa-reply-all:before{content:"\f122"}.fa-replyd:before{content:"\f3e6"}.fa-republican:before{content:"\f75e"}.fa-researchgate:before{content:"\f4f8"}.fa-resolving:before{content:"\f3e7"}.fa-restroom:before{content:"\f7bd"}.fa-retweet:before{content:"\f079"}.fa-rev:before{content:"\f5b2"}.fa-ribbon:before{content:"\f4d6"}.fa-ring:before{content:"\f70b"}.fa-road:before{content:"\f018"}.fa-robot:before{content:"\f544"}.fa-rocket:before{content:"\f135"}.fa-rocketchat:before{content:"\f3e8"}.fa-rockrms:before{content:"\f3e9"}.fa-route:before{content:"\f4d7"}.fa-rss:before{content:"\f09e"}.fa-rss-square:before{content:"\f143"}.fa-ruble-sign:before{content:"\f158"}.fa-ruler:before{content:"\f545"}.fa-ruler-combined:before{content:"\f546"}.fa-ruler-horizontal:before{content:"\f547"}.fa-ruler-vertical:before{content:"\f548"}.fa-running:before{content:"\f70c"}.fa-rupee-sign:before{content:"\f156"}.fa-sad-cry:before{content:"\f5b3"}.fa-sad-tear:before{content:"\f5b4"}.fa-safari:before{content:"\f267"}.fa-salesforce:before{content:"\f83b"}.fa-sass:before{content:"\f41e"}.fa-satellite:before{content:"\f7bf"}.fa-satellite-dish:before{content:"\f7c0"}.fa-save:before{content:"\f0c7"}.fa-schlix:before{content:"\f3ea"}.fa-school:before{content:"\f549"}.fa-screwdriver:before{content:"\f54a"}.fa-scribd:before{content:"\f28a"}.fa-scroll:before{content:"\f70e"}.fa-sd-card:before{content:"\f7c2"}.fa-search:before{content:"\f002"}.fa-search-dollar:before{content:"\f688"}.fa-search-location:before{content:"\f689"}.fa-search-minus:before{content:"\f010"}.fa-search-plus:before{content:"\f00e"}.fa-searchengin:before{content:"\f3eb"}.fa-seedling:before{content:"\f4d8"}.fa-sellcast:before{content:"\f2da"}.fa-sellsy:before{content:"\f213"}.fa-server:before{content:"\f233"}.fa-servicestack:before{content:"\f3ec"}.fa-shapes:before{content:"\f61f"}.fa-share:before{content:"\f064"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-share-square:before{content:"\f14d"}.fa-shekel-sign:before{content:"\f20b"}.fa-shield-alt:before{content:"\f3ed"}.fa-ship:before{content:"\f21a"}.fa-shipping-fast:before{content:"\f48b"}.fa-shirtsinbulk:before{content:"\f214"}.fa-shoe-prints:before{content:"\f54b"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-shopping-cart:before{content:"\f07a"}.fa-shopware:before{content:"\f5b5"}.fa-shower:before{content:"\f2cc"}.fa-shuttle-van:before{content:"\f5b6"}.fa-sign:before{content:"\f4d9"}.fa-sign-in-alt:before{content:"\f2f6"}.fa-sign-language:before{content:"\f2a7"}.fa-sign-out-alt:before{content:"\f2f5"}.fa-signal:before{content:"\f012"}.fa-signature:before{content:"\f5b7"}.fa-sim-card:before{content:"\f7c4"}.fa-simplybuilt:before{content:"\f215"}.fa-sistrix:before{content:"\f3ee"}.fa-sitemap:before{content:"\f0e8"}.fa-sith:before{content:"\f512"}.fa-skating:before{content:"\f7c5"}.fa-sketch:before{content:"\f7c6"}.fa-skiing:before{content:"\f7c9"}.fa-skiing-nordic:before{content:"\f7ca"}.fa-skull:before{content:"\f54c"}.fa-skull-crossbones:before{content:"\f714"}.fa-skyatlas:before{content:"\f216"}.fa-skype:before{content:"\f17e"}.fa-slack:before{content:"\f198"}.fa-slack-hash:before{content:"\f3ef"}.fa-slash:before{content:"\f715"}.fa-sleigh:before{content:"\f7cc"}.fa-sliders-h:before{content:"\f1de"}.fa-slideshare:before{content:"\f1e7"}.fa-smile:before{content:"\f118"}.fa-smile-beam:before{content:"\f5b8"}.fa-smile-wink:before{content:"\f4da"}.fa-smog:before{content:"\f75f"}.fa-smoking:before{content:"\f48d"}.fa-smoking-ban:before{content:"\f54d"}.fa-sms:before{content:"\f7cd"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-snowboarding:before{content:"\f7ce"}.fa-snowflake:before{content:"\f2dc"}.fa-snowman:before{content:"\f7d0"}.fa-snowplow:before{content:"\f7d2"}.fa-socks:before{content:"\f696"}.fa-solar-panel:before{content:"\f5ba"}.fa-sort:before{content:"\f0dc"}.fa-sort-alpha-down:before{content:"\f15d"}.fa-sort-alpha-down-alt:before{content:"\f881"}.fa-sort-alpha-up:before{content:"\f15e"}.fa-sort-alpha-up-alt:before{content:"\f882"}.fa-sort-amount-down:before{content:"\f160"}.fa-sort-amount-down-alt:before{content:"\f884"}.fa-sort-amount-up:before{content:"\f161"}.fa-sort-amount-up-alt:before{content:"\f885"}.fa-sort-down:before{content:"\f0dd"}.fa-sort-numeric-down:before{content:"\f162"}.fa-sort-numeric-down-alt:before{content:"\f886"}.fa-sort-numeric-up:before{content:"\f163"}.fa-sort-numeric-up-alt:before{content:"\f887"}.fa-sort-up:before{content:"\f0de"}.fa-soundcloud:before{content:"\f1be"}.fa-sourcetree:before{content:"\f7d3"}.fa-spa:before{content:"\f5bb"}.fa-space-shuttle:before{content:"\f197"}.fa-speakap:before{content:"\f3f3"}.fa-speaker-deck:before{content:"\f83c"}.fa-spell-check:before{content:"\f891"}.fa-spider:before{content:"\f717"}.fa-spinner:before{content:"\f110"}.fa-splotch:before{content:"\f5bc"}.fa-spotify:before{content:"\f1bc"}.fa-spray-can:before{content:"\f5bd"}.fa-square:before{content:"\f0c8"}.fa-square-full:before{content:"\f45c"}.fa-square-root-alt:before{content:"\f698"}.fa-squarespace:before{content:"\f5be"}.fa-stack-exchange:before{content:"\f18d"}.fa-stack-overflow:before{content:"\f16c"}.fa-stackpath:before{content:"\f842"}.fa-stamp:before{content:"\f5bf"}.fa-star:before{content:"\f005"}.fa-star-and-crescent:before{content:"\f699"}.fa-star-half:before{content:"\f089"}.fa-star-half-alt:before{content:"\f5c0"}.fa-star-of-david:before{content:"\f69a"}.fa-star-of-life:before{content:"\f621"}.fa-staylinked:before{content:"\f3f5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-steam-symbol:before{content:"\f3f6"}.fa-step-backward:before{content:"\f048"}.fa-step-forward:before{content:"\f051"}.fa-stethoscope:before{content:"\f0f1"}.fa-sticker-mule:before{content:"\f3f7"}.fa-sticky-note:before{content:"\f249"}.fa-stop:before{content:"\f04d"}.fa-stop-circle:before{content:"\f28d"}.fa-stopwatch:before{content:"\f2f2"}.fa-store:before{content:"\f54e"}.fa-store-alt:before{content:"\f54f"}.fa-strava:before{content:"\f428"}.fa-stream:before{content:"\f550"}.fa-street-view:before{content:"\f21d"}.fa-strikethrough:before{content:"\f0cc"}.fa-stripe:before{content:"\f429"}.fa-stripe-s:before{content:"\f42a"}.fa-stroopwafel:before{content:"\f551"}.fa-studiovinari:before{content:"\f3f8"}.fa-stumbleupon:before{content:"\f1a4"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-subscript:before{content:"\f12c"}.fa-subway:before{content:"\f239"}.fa-suitcase:before{content:"\f0f2"}.fa-suitcase-rolling:before{content:"\f5c1"}.fa-sun:before{content:"\f185"}.fa-superpowers:before{content:"\f2dd"}.fa-superscript:before{content:"\f12b"}.fa-supple:before{content:"\f3f9"}.fa-surprise:before{content:"\f5c2"}.fa-suse:before{content:"\f7d6"}.fa-swatchbook:before{content:"\f5c3"}.fa-swimmer:before{content:"\f5c4"}.fa-swimming-pool:before{content:"\f5c5"}.fa-symfony:before{content:"\f83d"}.fa-synagogue:before{content:"\f69b"}.fa-sync:before{content:"\f021"}.fa-sync-alt:before{content:"\f2f1"}.fa-syringe:before{content:"\f48e"}.fa-table:before{content:"\f0ce"}.fa-table-tennis:before{content:"\f45d"}.fa-tablet:before{content:"\f10a"}.fa-tablet-alt:before{content:"\f3fa"}.fa-tablets:before{content:"\f490"}.fa-tachometer-alt:before{content:"\f3fd"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-tape:before{content:"\f4db"}.fa-tasks:before{content:"\f0ae"}.fa-taxi:before{content:"\f1ba"}.fa-teamspeak:before{content:"\f4f9"}.fa-teeth:before{content:"\f62e"}.fa-teeth-open:before{content:"\f62f"}.fa-telegram:before{content:"\f2c6"}.fa-telegram-plane:before{content:"\f3fe"}.fa-temperature-high:before{content:"\f769"}.fa-temperature-low:before{content:"\f76b"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-tenge:before{content:"\f7d7"}.fa-terminal:before{content:"\f120"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-th:before{content:"\f00a"}.fa-th-large:before{content:"\f009"}.fa-th-list:before{content:"\f00b"}.fa-the-red-yeti:before{content:"\f69d"}.fa-theater-masks:before{content:"\f630"}.fa-themeco:before{content:"\f5c6"}.fa-themeisle:before{content:"\f2b2"}.fa-thermometer:before{content:"\f491"}.fa-thermometer-empty:before{content:"\f2cb"}.fa-thermometer-full:before{content:"\f2c7"}.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-think-peaks:before{content:"\f731"}.fa-thumbs-down:before{content:"\f165"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbtack:before{content:"\f08d"}.fa-ticket-alt:before{content:"\f3ff"}.fa-times:before{content:"\f00d"}.fa-times-circle:before{content:"\f057"}.fa-tint:before{content:"\f043"}.fa-tint-slash:before{content:"\f5c7"}.fa-tired:before{content:"\f5c8"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-toilet:before{content:"\f7d8"}.fa-toilet-paper:before{content:"\f71e"}.fa-toolbox:before{content:"\f552"}.fa-tools:before{content:"\f7d9"}.fa-tooth:before{content:"\f5c9"}.fa-torah:before{content:"\f6a0"}.fa-torii-gate:before{content:"\f6a1"}.fa-tractor:before{content:"\f722"}.fa-trade-federation:before{content:"\f513"}.fa-trademark:before{content:"\f25c"}.fa-traffic-light:before{content:"\f637"}.fa-train:before{content:"\f238"}.fa-tram:before{content:"\f7da"}.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-trash:before{content:"\f1f8"}.fa-trash-alt:before{content:"\f2ed"}.fa-trash-restore:before{content:"\f829"}.fa-trash-restore-alt:before{content:"\f82a"}.fa-tree:before{content:"\f1bb"}.fa-trello:before{content:"\f181"}.fa-tripadvisor:before{content:"\f262"}.fa-trophy:before{content:"\f091"}.fa-truck:before{content:"\f0d1"}.fa-truck-loading:before{content:"\f4de"}.fa-truck-monster:before{content:"\f63b"}.fa-truck-moving:before{content:"\f4df"}.fa-truck-pickup:before{content:"\f63c"}.fa-tshirt:before{content:"\f553"}.fa-tty:before{content:"\f1e4"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-tv:before{content:"\f26c"}.fa-twitch:before{content:"\f1e8"}.fa-twitter:before{content:"\f099"}.fa-twitter-square:before{content:"\f081"}.fa-typo3:before{content:"\f42b"}.fa-uber:before{content:"\f402"}.fa-ubuntu:before{content:"\f7df"}.fa-uikit:before{content:"\f403"}.fa-umbrella:before{content:"\f0e9"}.fa-umbrella-beach:before{content:"\f5ca"}.fa-underline:before{content:"\f0cd"}.fa-undo:before{content:"\f0e2"}.fa-undo-alt:before{content:"\f2ea"}.fa-uniregistry:before{content:"\f404"}.fa-universal-access:before{content:"\f29a"}.fa-university:before{content:"\f19c"}.fa-unlink:before{content:"\f127"}.fa-unlock:before{content:"\f09c"}.fa-unlock-alt:before{content:"\f13e"}.fa-untappd:before{content:"\f405"}.fa-upload:before{content:"\f093"}.fa-ups:before{content:"\f7e0"}.fa-usb:before{content:"\f287"}.fa-user:before{content:"\f007"}.fa-user-alt:before{content:"\f406"}.fa-user-alt-slash:before{content:"\f4fa"}.fa-user-astronaut:before{content:"\f4fb"}.fa-user-check:before{content:"\f4fc"}.fa-user-circle:before{content:"\f2bd"}.fa-user-clock:before{content:"\f4fd"}.fa-user-cog:before{content:"\f4fe"}.fa-user-edit:before{content:"\f4ff"}.fa-user-friends:before{content:"\f500"}.fa-user-graduate:before{content:"\f501"}.fa-user-injured:before{content:"\f728"}.fa-user-lock:before{content:"\f502"}.fa-user-md:before{content:"\f0f0"}.fa-user-minus:before{content:"\f503"}.fa-user-ninja:before{content:"\f504"}.fa-user-nurse:before{content:"\f82f"}.fa-user-plus:before{content:"\f234"}.fa-user-secret:before{content:"\f21b"}.fa-user-shield:before{content:"\f505"}.fa-user-slash:before{content:"\f506"}.fa-user-tag:before{content:"\f507"}.fa-user-tie:before{content:"\f508"}.fa-user-times:before{content:"\f235"}.fa-users:before{content:"\f0c0"}.fa-users-cog:before{content:"\f509"}.fa-usps:before{content:"\f7e1"}.fa-ussunnah:before{content:"\f407"}.fa-utensil-spoon:before{content:"\f2e5"}.fa-utensils:before{content:"\f2e7"}.fa-vaadin:before{content:"\f408"}.fa-vector-square:before{content:"\f5cb"}.fa-venus:before{content:"\f221"}.fa-venus-double:before{content:"\f226"}.fa-venus-mars:before{content:"\f228"}.fa-viacoin:before{content:"\f237"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-vial:before{content:"\f492"}.fa-vials:before{content:"\f493"}.fa-viber:before{content:"\f409"}.fa-video:before{content:"\f03d"}.fa-video-slash:before{content:"\f4e2"}.fa-vihara:before{content:"\f6a7"}.fa-vimeo:before{content:"\f40a"}.fa-vimeo-square:before{content:"\f194"}.fa-vimeo-v:before{content:"\f27d"}.fa-vine:before{content:"\f1ca"}.fa-vk:before{content:"\f189"}.fa-vnv:before{content:"\f40b"}.fa-voicemail:before{content:"\f897"}.fa-volleyball-ball:before{content:"\f45f"}.fa-volume-down:before{content:"\f027"}.fa-volume-mute:before{content:"\f6a9"}.fa-volume-off:before{content:"\f026"}.fa-volume-up:before{content:"\f028"}.fa-vote-yea:before{content:"\f772"}.fa-vr-cardboard:before{content:"\f729"}.fa-vuejs:before{content:"\f41f"}.fa-walking:before{content:"\f554"}.fa-wallet:before{content:"\f555"}.fa-warehouse:before{content:"\f494"}.fa-water:before{content:"\f773"}.fa-wave-square:before{content:"\f83e"}.fa-waze:before{content:"\f83f"}.fa-weebly:before{content:"\f5cc"}.fa-weibo:before{content:"\f18a"}.fa-weight:before{content:"\f496"}.fa-weight-hanging:before{content:"\f5cd"}.fa-weixin:before{content:"\f1d7"}.fa-whatsapp:before{content:"\f232"}.fa-whatsapp-square:before{content:"\f40c"}.fa-wheelchair:before{content:"\f193"}.fa-whmcs:before{content:"\f40d"}.fa-wifi:before{content:"\f1eb"}.fa-wikipedia-w:before{content:"\f266"}.fa-wind:before{content:"\f72e"}.fa-window-close:before{content:"\f410"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-windows:before{content:"\f17a"}.fa-wine-bottle:before{content:"\f72f"}.fa-wine-glass:before{content:"\f4e3"}.fa-wine-glass-alt:before{content:"\f5ce"}.fa-wix:before{content:"\f5cf"}.fa-wizards-of-the-coast:before{content:"\f730"}.fa-wolf-pack-battalion:before{content:"\f514"}.fa-won-sign:before{content:"\f159"}.fa-wordpress:before{content:"\f19a"}.fa-wordpress-simple:before{content:"\f411"}.fa-wpbeginner:before{content:"\f297"}.fa-wpexplorer:before{content:"\f2de"}.fa-wpforms:before{content:"\f298"}.fa-wpressr:before{content:"\f3e4"}.fa-wrench:before{content:"\f0ad"}.fa-x-ray:before{content:"\f497"}.fa-xbox:before{content:"\f412"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-y-combinator:before{content:"\f23b"}.fa-yahoo:before{content:"\f19e"}.fa-yammer:before{content:"\f840"}.fa-yandex:before{content:"\f413"}.fa-yandex-international:before{content:"\f414"}.fa-yarn:before{content:"\f7e3"}.fa-yelp:before{content:"\f1e9"}.fa-yen-sign:before{content:"\f157"}.fa-yin-yang:before{content:"\f6ad"}.fa-yoast:before{content:"\f2b1"}.fa-youtube:before{content:"\f167"}.fa-youtube-square:before{content:"\f431"}.fa-zhihu:before{content:"\f63f"}.sr-only{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sr-only-focusable:active,.sr-only-focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}@font-face{font-family:"Font Awesome 5 Brands";font-style:normal;font-weight:normal;font-display:auto;src:url(../webfonts/fa-brands-400.eot);src:url(../webfonts/fa-brands-400.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.woff) format("woff"),url(../webfonts/fa-brands-400.ttf) format("truetype"),url(../webfonts/fa-brands-400.svg#fontawesome) format("svg")}.fab{font-family:"Font Awesome 5 Brands"}@font-face{font-family:"Font Awesome 5 Free";font-style:normal;font-weight:400;font-display:auto;src:url(../webfonts/fa-regular-400.eot);src:url(../webfonts/fa-regular-400.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.woff) format("woff"),url(../webfonts/fa-regular-400.ttf) format("truetype"),url(../webfonts/fa-regular-400.svg#fontawesome) format("svg")}.far{font-weight:400}@font-face{font-family:"Font Awesome 5 Free";font-style:normal;font-weight:900;font-display:auto;src:url(../webfonts/fa-solid-900.eot);src:url(../webfonts/fa-solid-900.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.woff) format("woff"),url(../webfonts/fa-solid-900.ttf) format("truetype"),url(../webfonts/fa-solid-900.svg#fontawesome) format("svg")}.fa,.far,.fas{font-family:"Font Awesome 5 Free"}.fa,.fas{font-weight:900} \ No newline at end of file diff --git a/archive/assets/css/main.css b/archive/assets/css/main.css new file mode 100755 index 0000000..21d8a80 --- /dev/null +++ b/archive/assets/css/main.css @@ -0,0 +1,3475 @@ +@import url(fontawesome-all.min.css); +@import url("https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,700,900"); + +/* + Phantom by Pixelarity + pixelarity.com | hello@pixelarity.com + License: pixelarity.com/license +*/ + +html, body, div, span, applet, object, +iframe, h1, h2, h3, h4, h5, h6, p, blockquote, +pre, a, abbr, acronym, address, big, cite, +code, del, dfn, em, img, ins, kbd, q, s, samp, +small, strike, strong, sub, sup, tt, var, b, +u, i, center, dl, dt, dd, ol, ul, li, fieldset, +form, label, legend, table, caption, tbody, +tfoot, thead, tr, th, td, article, aside, +canvas, details, embed, figure, figcaption, +footer, header, hgroup, menu, nav, output, ruby, +section, summary, time, mark, audio, video { + margin: 0; + padding: 0; + border: 0; + font-size: 100%; + font: inherit; + vertical-align: baseline;} + +article, aside, details, figcaption, figure, +footer, header, hgroup, menu, nav, section { + display: block;} + +html{ + background-color: #000; + background-image: url(../../images/bg.jpg); + background-size: cover; +} + + +body { + line-height: 1; +} + +ol, ul { + list-style: none; +} + +blockquote, q { + quotes: none; +} + + blockquote:before, blockquote:after, q:before, q:after { + content: ''; + content: none; + } + +table { + border-collapse: collapse; + border-spacing: 0; +} + +body { + -webkit-text-size-adjust: none; +} + +mark { + background-color: transparent; + color: inherit; +} + +input::-moz-focus-inner { + border: 0; + padding: 0; +} + +input, select, textarea { + -moz-appearance: none; + -webkit-appearance: none; + -ms-appearance: none; + appearance: none; +} + +/* Basic */ + + @-ms-viewport { + width: device-width; + } + + body { + -ms-overflow-style: scrollbar; + } + + @media screen and (max-width: 480px) { + + html, body { + min-width: 320px; + } + + } + + html { + box-sizing: border-box; + } + + *, *:before, *:after { + box-sizing: inherit; + } + + body.is-preload *, body.is-preload *:before, body.is-preload *:after { + -moz-animation: none !important; + -webkit-animation: none !important; + -ms-animation: none !important; + animation: none !important; + -moz-transition: none !important; + -webkit-transition: none !important; + -ms-transition: none !important; + transition: none !important; + } + +/* Type */ + + body, input, select, textarea { + color: #585858; + font-family: "Source Sans Pro", Helvetica, sans-serif; + font-size: 16pt; + font-weight: 300; + line-height: 1.75; + } + + @media screen and (max-width: 1680px) { + + body, input, select, textarea { + font-size: 14pt; + } + + } + + @media screen and (max-width: 1280px) { + + body, input, select, textarea { + font-size: 12pt; + } + + } + + a { + -moz-transition: border-bottom-color 0.2s ease, color 0.2s ease; + -webkit-transition: border-bottom-color 0.2s ease, color 0.2s ease; + -ms-transition: border-bottom-color 0.2s ease, color 0.2s ease; + transition: border-bottom-color 0.2s ease, color 0.2s ease; + text-decoration: none; + color: #585858; + border-bottom: dotted 1px rgba(88, 88, 88, 0.5); + } + + a:hover { + border-bottom-color: transparent; + color: #f2849e !important; + } + + strong, b { + font-weight: 900; + } + + em, i { + font-style: italic; + } + + p { + margin: 0 0 2em 0; + } + + h1 { + font-size: 2.75em; + font-weight: 700; + line-height: 1.3; + margin: 0 0 1em 0; + letter-spacing: -0.035em; + } + + h1 a { + color: inherit; + } + + @media screen and (max-width: 736px) { + + h1 { + font-size: 2em; + margin: 0 0 1em 0; + } + + } + + @media screen and (max-width: 360px) { + + h1 { + font-size: 1.75em; + } + + } + + h2, h3, h4, h5, h6 { + font-weight: 900; + line-height: 1.5; + margin: 0 0 2em 0; + text-transform: uppercase; + letter-spacing: 0.35em; + } + + h2 a, h3 a, h4 a, h5 a, h6 a { + color: inherit; + } + + h2 { + font-size: 1.1em; + } + + h3 { + font-size: 1em; + } + + h4 { + font-size: 0.8em; + } + + h5 { + font-size: 0.8em; + } + + h6 { + font-size: 0.8em; + } + + @media screen and (max-width: 980px) { + + h1 br, h2 br, h3 br, h4 br, h5 br, h6 br { + display: none; + } + + } + + @media screen and (max-width: 736px) { + + h2 { + font-size: 1em; + } + + h3 { + font-size: 0.8em; + } + + } + + sub { + font-size: 0.8em; + position: relative; + top: 0.5em; + } + + sup { + font-size: 0.8em; + position: relative; + top: -0.5em; + } + + blockquote { + border-left: solid 4px #c9c9c9; + font-style: italic; + margin: 0 0 2em 0; + padding: 0.5em 0 0.5em 2em; + } + + code { + background: rgba(144, 144, 144, 0.075); + border-radius: 4px; + border: solid 1px #c9c9c9; + font-family: "Courier New", monospace; + font-size: 0.9em; + margin: 0 0.25em; + padding: 0.25em 0.65em; + } + + pre { + -webkit-overflow-scrolling: touch; + font-family: "Courier New", monospace; + font-size: 0.9em; + margin: 0 0 2em 0; + } + + pre code { + display: block; + line-height: 1.75; + padding: 1em 1.5em; + overflow-x: auto; + } + + hr { + border: 0; + border-bottom: solid 1px #c9c9c9; + margin: 2em 0; + } + + hr.major { + margin: 3em 0; + } + + .align-left { + text-align: left; + } + + .align-center { + text-align: center; + } + + .align-right { + text-align: right; + } + +/* Row */ + + .row { + display: flex; + flex-wrap: wrap; + box-sizing: border-box; + align-items: stretch; + } + + .row > * { + box-sizing: border-box; + } + + .row.gtr-uniform > * > :last-child { + margin-bottom: 0; + } + + .row.aln-left { + justify-content: flex-start; + } + + .row.aln-center { + justify-content: center; + } + + .row.aln-right { + justify-content: flex-end; + } + + .row.aln-top { + align-items: flex-start; + } + + .row.aln-middle { + align-items: center; + } + + .row.aln-bottom { + align-items: flex-end; + } + + .row > .imp { + order: -1; + } + + .row > .col-1 { + width: 8.33333%; + } + + .row > .off-1 { + margin-left: 8.33333%; + } + + .row > .col-2 { + width: 16.66667%; + } + + .row > .off-2 { + margin-left: 16.66667%; + } + + .row > .col-3 { + width: 25%; + } + + .row > .off-3 { + margin-left: 25%; + } + + .row > .col-4 { + width: 33.33333%; + } + + .row > .off-4 { + margin-left: 33.33333%; + } + + .row > .col-5 { + width: 41.66667%; + } + + .row > .off-5 { + margin-left: 41.66667%; + } + + .row > .col-6 { + width: 50%; + } + + .row > .off-6 { + margin-left: 50%; + } + + .row > .col-7 { + width: 58.33333%; + } + + .row > .off-7 { + margin-left: 58.33333%; + } + + .row > .col-8 { + width: 66.66667%; + } + + .row > .off-8 { + margin-left: 66.66667%; + } + + .row > .col-9 { + width: 75%; + } + + .row > .off-9 { + margin-left: 75%; + } + + .row > .col-10 { + width: 83.33333%; + } + + .row > .off-10 { + margin-left: 83.33333%; + } + + .row > .col-11 { + width: 91.66667%; + } + + .row > .off-11 { + margin-left: 91.66667%; + } + + .row > .col-12 { + width: 100%; + } + + .row > .off-12 { + margin-left: 100%; + } + + .row.gtr-0 { + margin-top: 0; + margin-left: 0em; + } + + .row.gtr-0 > * { + padding: 0 0 0 0em; + } + + .row.gtr-0.gtr-uniform { + margin-top: 0em; + } + + .row.gtr-0.gtr-uniform > * { + padding-top: 0em; + } + + .row.gtr-25 { + margin-top: 0; + margin-left: -0.5em; + } + + .row.gtr-25 > * { + padding: 0 0 0 0.5em; + } + + .row.gtr-25.gtr-uniform { + margin-top: -0.5em; + } + + .row.gtr-25.gtr-uniform > * { + padding-top: 0.5em; + } + + .row.gtr-50 { + margin-top: 0; + margin-left: -1em; + } + + .row.gtr-50 > * { + padding: 0 0 0 1em; + } + + .row.gtr-50.gtr-uniform { + margin-top: -1em; + } + + .row.gtr-50.gtr-uniform > * { + padding-top: 1em; + } + + .row { + margin-top: 0; + margin-left: -2em; + } + + .row > * { + padding: 0 0 0 2em; + } + + .row.gtr-uniform { + margin-top: -2em; + } + + .row.gtr-uniform > * { + padding-top: 2em; + } + + .row.gtr-150 { + margin-top: 0; + margin-left: -3em; + } + + .row.gtr-150 > * { + padding: 0 0 0 3em; + } + + .row.gtr-150.gtr-uniform { + margin-top: -3em; + } + + .row.gtr-150.gtr-uniform > * { + padding-top: 3em; + } + + .row.gtr-200 { + margin-top: 0; + margin-left: -4em; + } + + .row.gtr-200 > * { + padding: 0 0 0 4em; + } + + .row.gtr-200.gtr-uniform { + margin-top: -4em; + } + + .row.gtr-200.gtr-uniform > * { + padding-top: 4em; + } + + @media screen and (max-width: 1680px) { + + .row { + display: flex; + flex-wrap: wrap; + box-sizing: border-box; + align-items: stretch; + } + + .row > * { + box-sizing: border-box; + } + + .row.gtr-uniform > * > :last-child { + margin-bottom: 0; + } + + .row.aln-left { + justify-content: flex-start; + } + + .row.aln-center { + justify-content: center; + } + + .row.aln-right { + justify-content: flex-end; + } + + .row.aln-top { + align-items: flex-start; + } + + .row.aln-middle { + align-items: center; + } + + .row.aln-bottom { + align-items: flex-end; + } + + .row > .imp-xlarge { + order: -1; + } + + .row > .col-1-xlarge { + width: 8.33333%; + } + + .row > .off-1-xlarge { + margin-left: 8.33333%; + } + + .row > .col-2-xlarge { + width: 16.66667%; + } + + .row > .off-2-xlarge { + margin-left: 16.66667%; + } + + .row > .col-3-xlarge { + width: 25%; + } + + .row > .off-3-xlarge { + margin-left: 25%; + } + + .row > .col-4-xlarge { + width: 33.33333%; + } + + .row > .off-4-xlarge { + margin-left: 33.33333%; + } + + .row > .col-5-xlarge { + width: 41.66667%; + } + + .row > .off-5-xlarge { + margin-left: 41.66667%; + } + + .row > .col-6-xlarge { + width: 50%; + } + + .row > .off-6-xlarge { + margin-left: 50%; + } + + .row > .col-7-xlarge { + width: 58.33333%; + } + + .row > .off-7-xlarge { + margin-left: 58.33333%; + } + + .row > .col-8-xlarge { + width: 66.66667%; + } + + .row > .off-8-xlarge { + margin-left: 66.66667%; + } + + .row > .col-9-xlarge { + width: 75%; + } + + .row > .off-9-xlarge { + margin-left: 75%; + } + + .row > .col-10-xlarge { + width: 83.33333%; + } + + .row > .off-10-xlarge { + margin-left: 83.33333%; + } + + .row > .col-11-xlarge { + width: 91.66667%; + } + + .row > .off-11-xlarge { + margin-left: 91.66667%; + } + + .row > .col-12-xlarge { + width: 100%; + } + + .row > .off-12-xlarge { + margin-left: 100%; + } + + .row.gtr-0 { + margin-top: 0; + margin-left: 0em; + } + + .row.gtr-0 > * { + padding: 0 0 0 0em; + } + + .row.gtr-0.gtr-uniform { + margin-top: 0em; + } + + .row.gtr-0.gtr-uniform > * { + padding-top: 0em; + } + + .row.gtr-25 { + margin-top: 0; + margin-left: -0.5em; + } + + .row.gtr-25 > * { + padding: 0 0 0 0.5em; + } + + .row.gtr-25.gtr-uniform { + margin-top: -0.5em; + } + + .row.gtr-25.gtr-uniform > * { + padding-top: 0.5em; + } + + .row.gtr-50 { + margin-top: 0; + margin-left: -1em; + } + + .row.gtr-50 > * { + padding: 0 0 0 1em; + } + + .row.gtr-50.gtr-uniform { + margin-top: -1em; + } + + .row.gtr-50.gtr-uniform > * { + padding-top: 1em; + } + + .row { + margin-top: 0; + margin-left: -2em; + } + + .row > * { + padding: 0 0 0 2em; + } + + .row.gtr-uniform { + margin-top: -2em; + } + + .row.gtr-uniform > * { + padding-top: 2em; + } + + .row.gtr-150 { + margin-top: 0; + margin-left: -3em; + } + + .row.gtr-150 > * { + padding: 0 0 0 3em; + } + + .row.gtr-150.gtr-uniform { + margin-top: -3em; + } + + .row.gtr-150.gtr-uniform > * { + padding-top: 3em; + } + + .row.gtr-200 { + margin-top: 0; + margin-left: -4em; + } + + .row.gtr-200 > * { + padding: 0 0 0 4em; + } + + .row.gtr-200.gtr-uniform { + margin-top: -4em; + } + + .row.gtr-200.gtr-uniform > * { + padding-top: 4em; + } + + } + + @media screen and (max-width: 1280px) { + + .row { + display: flex; + flex-wrap: wrap; + box-sizing: border-box; + align-items: stretch; + } + + .row > * { + box-sizing: border-box; + } + + .row.gtr-uniform > * > :last-child { + margin-bottom: 0; + } + + .row.aln-left { + justify-content: flex-start; + } + + .row.aln-center { + justify-content: center; + } + + .row.aln-right { + justify-content: flex-end; + } + + .row.aln-top { + align-items: flex-start; + } + + .row.aln-middle { + align-items: center; + } + + .row.aln-bottom { + align-items: flex-end; + } + + .row > .imp-large { + order: -1; + } + + .row > .col-1-large { + width: 8.33333%; + } + + .row > .off-1-large { + margin-left: 8.33333%; + } + + .row > .col-2-large { + width: 16.66667%; + } + + .row > .off-2-large { + margin-left: 16.66667%; + } + + .row > .col-3-large { + width: 25%; + } + + .row > .off-3-large { + margin-left: 25%; + } + + .row > .col-4-large { + width: 33.33333%; + } + + .row > .off-4-large { + margin-left: 33.33333%; + } + + .row > .col-5-large { + width: 41.66667%; + } + + .row > .off-5-large { + margin-left: 41.66667%; + } + + .row > .col-6-large { + width: 50%; + } + + .row > .off-6-large { + margin-left: 50%; + } + + .row > .col-7-large { + width: 58.33333%; + } + + .row > .off-7-large { + margin-left: 58.33333%; + } + + .row > .col-8-large { + width: 66.66667%; + } + + .row > .off-8-large { + margin-left: 66.66667%; + } + + .row > .col-9-large { + width: 75%; + } + + .row > .off-9-large { + margin-left: 75%; + } + + .row > .col-10-large { + width: 83.33333%; + } + + .row > .off-10-large { + margin-left: 83.33333%; + } + + .row > .col-11-large { + width: 91.66667%; + } + + .row > .off-11-large { + margin-left: 91.66667%; + } + + .row > .col-12-large { + width: 100%; + } + + .row > .off-12-large { + margin-left: 100%; + } + + .row.gtr-0 { + margin-top: 0; + margin-left: 0em; + } + + .row.gtr-0 > * { + padding: 0 0 0 0em; + } + + .row.gtr-0.gtr-uniform { + margin-top: 0em; + } + + .row.gtr-0.gtr-uniform > * { + padding-top: 0em; + } + + .row.gtr-25 { + margin-top: 0; + margin-left: -0.5em; + } + + .row.gtr-25 > * { + padding: 0 0 0 0.5em; + } + + .row.gtr-25.gtr-uniform { + margin-top: -0.5em; + } + + .row.gtr-25.gtr-uniform > * { + padding-top: 0.5em; + } + + .row.gtr-50 { + margin-top: 0; + margin-left: -1em; + } + + .row.gtr-50 > * { + padding: 0 0 0 1em; + } + + .row.gtr-50.gtr-uniform { + margin-top: -1em; + } + + .row.gtr-50.gtr-uniform > * { + padding-top: 1em; + } + + .row { + margin-top: 0; + margin-left: -2em; + } + + .row > * { + padding: 0 0 0 2em; + } + + .row.gtr-uniform { + margin-top: -2em; + } + + .row.gtr-uniform > * { + padding-top: 2em; + } + + .row.gtr-150 { + margin-top: 0; + margin-left: -3em; + } + + .row.gtr-150 > * { + padding: 0 0 0 3em; + } + + .row.gtr-150.gtr-uniform { + margin-top: -3em; + } + + .row.gtr-150.gtr-uniform > * { + padding-top: 3em; + } + + .row.gtr-200 { + margin-top: 0; + margin-left: -4em; + } + + .row.gtr-200 > * { + padding: 0 0 0 4em; + } + + .row.gtr-200.gtr-uniform { + margin-top: -4em; + } + + .row.gtr-200.gtr-uniform > * { + padding-top: 4em; + } + + } + + @media screen and (max-width: 980px) { + + .row { + display: flex; + flex-wrap: wrap; + box-sizing: border-box; + align-items: stretch; + } + + .row > * { + box-sizing: border-box; + } + + .row.gtr-uniform > * > :last-child { + margin-bottom: 0; + } + + .row.aln-left { + justify-content: flex-start; + } + + .row.aln-center { + justify-content: center; + } + + .row.aln-right { + justify-content: flex-end; + } + + .row.aln-top { + align-items: flex-start; + } + + .row.aln-middle { + align-items: center; + } + + .row.aln-bottom { + align-items: flex-end; + } + + .row > .imp-medium { + order: -1; + } + + .row > .col-1-medium { + width: 8.33333%; + } + + .row > .off-1-medium { + margin-left: 8.33333%; + } + + .row > .col-2-medium { + width: 16.66667%; + } + + .row > .off-2-medium { + margin-left: 16.66667%; + } + + .row > .col-3-medium { + width: 25%; + } + + .row > .off-3-medium { + margin-left: 25%; + } + + .row > .col-4-medium { + width: 33.33333%; + } + + .row > .off-4-medium { + margin-left: 33.33333%; + } + + .row > .col-5-medium { + width: 41.66667%; + } + + .row > .off-5-medium { + margin-left: 41.66667%; + } + + .row > .col-6-medium { + width: 50%; + } + + .row > .off-6-medium { + margin-left: 50%; + } + + .row > .col-7-medium { + width: 58.33333%; + } + + .row > .off-7-medium { + margin-left: 58.33333%; + } + + .row > .col-8-medium { + width: 66.66667%; + } + + .row > .off-8-medium { + margin-left: 66.66667%; + } + + .row > .col-9-medium { + width: 75%; + } + + .row > .off-9-medium { + margin-left: 75%; + } + + .row > .col-10-medium { + width: 83.33333%; + } + + .row > .off-10-medium { + margin-left: 83.33333%; + } + + .row > .col-11-medium { + width: 91.66667%; + } + + .row > .off-11-medium { + margin-left: 91.66667%; + } + + .row > .col-12-medium { + width: 100%; + } + + .row > .off-12-medium { + margin-left: 100%; + } + + .row.gtr-0 { + margin-top: 0; + margin-left: 0em; + } + + .row.gtr-0 > * { + padding: 0 0 0 0em; + } + + .row.gtr-0.gtr-uniform { + margin-top: 0em; + } + + .row.gtr-0.gtr-uniform > * { + padding-top: 0em; + } + + .row.gtr-25 { + margin-top: 0; + margin-left: -0.375em; + } + + .row.gtr-25 > * { + padding: 0 0 0 0.375em; + } + + .row.gtr-25.gtr-uniform { + margin-top: -0.375em; + } + + .row.gtr-25.gtr-uniform > * { + padding-top: 0.375em; + } + + .row.gtr-50 { + margin-top: 0; + margin-left: -0.75em; + } + + .row.gtr-50 > * { + padding: 0 0 0 0.75em; + } + + .row.gtr-50.gtr-uniform { + margin-top: -0.75em; + } + + .row.gtr-50.gtr-uniform > * { + padding-top: 0.75em; + } + + .row { + margin-top: 0; + margin-left: -1.5em; + } + + .row > * { + padding: 0 0 0 1.5em; + } + + .row.gtr-uniform { + margin-top: -1.5em; + } + + .row.gtr-uniform > * { + padding-top: 1.5em; + } + + .row.gtr-150 { + margin-top: 0; + margin-left: -2.25em; + } + + .row.gtr-150 > * { + padding: 0 0 0 2.25em; + } + + .row.gtr-150.gtr-uniform { + margin-top: -2.25em; + } + + .row.gtr-150.gtr-uniform > * { + padding-top: 2.25em; + } + + .row.gtr-200 { + margin-top: 0; + margin-left: -3em; + } + + .row.gtr-200 > * { + padding: 0 0 0 3em; + } + + .row.gtr-200.gtr-uniform { + margin-top: -3em; + } + + .row.gtr-200.gtr-uniform > * { + padding-top: 3em; + } + + } + + @media screen and (max-width: 736px) { + + .row { + display: flex; + flex-wrap: wrap; + box-sizing: border-box; + align-items: stretch; + } + + .row > * { + box-sizing: border-box; + } + + .row.gtr-uniform > * > :last-child { + margin-bottom: 0; + } + + .row.aln-left { + justify-content: flex-start; + } + + .row.aln-center { + justify-content: center; + } + + .row.aln-right { + justify-content: flex-end; + } + + .row.aln-top { + align-items: flex-start; + } + + .row.aln-middle { + align-items: center; + } + + .row.aln-bottom { + align-items: flex-end; + } + + .row > .imp-small { + order: -1; + } + + .row > .col-1-small { + width: 8.33333%; + } + + .row > .off-1-small { + margin-left: 8.33333%; + } + + .row > .col-2-small { + width: 16.66667%; + } + + .row > .off-2-small { + margin-left: 16.66667%; + } + + .row > .col-3-small { + width: 25%; + } + + .row > .off-3-small { + margin-left: 25%; + } + + .row > .col-4-small { + width: 33.33333%; + } + + .row > .off-4-small { + margin-left: 33.33333%; + } + + .row > .col-5-small { + width: 41.66667%; + } + + .row > .off-5-small { + margin-left: 41.66667%; + } + + .row > .col-6-small { + width: 50%; + } + + .row > .off-6-small { + margin-left: 50%; + } + + .row > .col-7-small { + width: 58.33333%; + } + + .row > .off-7-small { + margin-left: 58.33333%; + } + + .row > .col-8-small { + width: 66.66667%; + } + + .row > .off-8-small { + margin-left: 66.66667%; + } + + .row > .col-9-small { + width: 75%; + } + + .row > .off-9-small { + margin-left: 75%; + } + + .row > .col-10-small { + width: 83.33333%; + } + + .row > .off-10-small { + margin-left: 83.33333%; + } + + .row > .col-11-small { + width: 91.66667%; + } + + .row > .off-11-small { + margin-left: 91.66667%; + } + + .row > .col-12-small { + width: 100%; + } + + .row > .off-12-small { + margin-left: 100%; + } + + .row.gtr-0 { + margin-top: 0; + margin-left: 0em; + } + + .row.gtr-0 > * { + padding: 0 0 0 0em; + } + + .row.gtr-0.gtr-uniform { + margin-top: 0em; + } + + .row.gtr-0.gtr-uniform > * { + padding-top: 0em; + } + + .row.gtr-25 { + margin-top: 0; + margin-left: -0.25em; + } + + .row.gtr-25 > * { + padding: 0 0 0 0.25em; + } + + .row.gtr-25.gtr-uniform { + margin-top: -0.25em; + } + + .row.gtr-25.gtr-uniform > * { + padding-top: 0.25em; + } + + .row.gtr-50 { + margin-top: 0; + margin-left: -0.5em; + } + + .row.gtr-50 > * { + padding: 0 0 0 0.5em; + } + + .row.gtr-50.gtr-uniform { + margin-top: -0.5em; + } + + .row.gtr-50.gtr-uniform > * { + padding-top: 0.5em; + } + + .row { + margin-top: 0; + margin-left: -1em; + } + + .row > * { + padding: 0 0 0 1em; + } + + .row.gtr-uniform { + margin-top: -1em; + } + + .row.gtr-uniform > * { + padding-top: 1em; + } + + .row.gtr-150 { + margin-top: 0; + margin-left: -1.5em; + } + + .row.gtr-150 > * { + padding: 0 0 0 1.5em; + } + + .row.gtr-150.gtr-uniform { + margin-top: -1.5em; + } + + .row.gtr-150.gtr-uniform > * { + padding-top: 1.5em; + } + + .row.gtr-200 { + margin-top: 0; + margin-left: -2em; + } + + .row.gtr-200 > * { + padding: 0 0 0 2em; + } + + .row.gtr-200.gtr-uniform { + margin-top: -2em; + } + + .row.gtr-200.gtr-uniform > * { + padding-top: 2em; + } + + } + + @media screen and (max-width: 480px) { + + .row { + display: flex; + flex-wrap: wrap; + box-sizing: border-box; + align-items: stretch; + } + + .row > * { + box-sizing: border-box; + } + + .row.gtr-uniform > * > :last-child { + margin-bottom: 0; + } + + .row.aln-left { + justify-content: flex-start; + } + + .row.aln-center { + justify-content: center; + } + + .row.aln-right { + justify-content: flex-end; + } + + .row.aln-top { + align-items: flex-start; + } + + .row.aln-middle { + align-items: center; + } + + .row.aln-bottom { + align-items: flex-end; + } + + .row > .imp-xsmall { + order: -1; + } + + .row > .col-1-xsmall { + width: 8.33333%; + } + + .row > .off-1-xsmall { + margin-left: 8.33333%; + } + + .row > .col-2-xsmall { + width: 16.66667%; + } + + .row > .off-2-xsmall { + margin-left: 16.66667%; + } + + .row > .col-3-xsmall { + width: 25%; + } + + .row > .off-3-xsmall { + margin-left: 25%; + } + + .row > .col-4-xsmall { + width: 33.33333%; + } + + .row > .off-4-xsmall { + margin-left: 33.33333%; + } + + .row > .col-5-xsmall { + width: 41.66667%; + } + + .row > .off-5-xsmall { + margin-left: 41.66667%; + } + + .row > .col-6-xsmall { + width: 50%; + } + + .row > .off-6-xsmall { + margin-left: 50%; + } + + .row > .col-7-xsmall { + width: 58.33333%; + } + + .row > .off-7-xsmall { + margin-left: 58.33333%; + } + + .row > .col-8-xsmall { + width: 66.66667%; + } + + .row > .off-8-xsmall { + margin-left: 66.66667%; + } + + .row > .col-9-xsmall { + width: 75%; + } + + .row > .off-9-xsmall { + margin-left: 75%; + } + + .row > .col-10-xsmall { + width: 83.33333%; + } + + .row > .off-10-xsmall { + margin-left: 83.33333%; + } + + .row > .col-11-xsmall { + width: 91.66667%; + } + + .row > .off-11-xsmall { + margin-left: 91.66667%; + } + + .row > .col-12-xsmall { + width: 100%; + } + + .row > .off-12-xsmall { + margin-left: 100%; + } + + .row.gtr-0 { + margin-top: 0; + margin-left: 0em; + } + + .row.gtr-0 > * { + padding: 0 0 0 0em; + } + + .row.gtr-0.gtr-uniform { + margin-top: 0em; + } + + .row.gtr-0.gtr-uniform > * { + padding-top: 0em; + } + + .row.gtr-25 { + margin-top: 0; + margin-left: -0.25em; + } + + .row.gtr-25 > * { + padding: 0 0 0 0.25em; + } + + .row.gtr-25.gtr-uniform { + margin-top: -0.25em; + } + + .row.gtr-25.gtr-uniform > * { + padding-top: 0.25em; + } + + .row.gtr-50 { + margin-top: 0; + margin-left: -0.5em; + } + + .row.gtr-50 > * { + padding: 0 0 0 0.5em; + } + + .row.gtr-50.gtr-uniform { + margin-top: -0.5em; + } + + .row.gtr-50.gtr-uniform > * { + padding-top: 0.5em; + } + + .row { + margin-top: 0; + margin-left: -1em; + } + + .row > * { + padding: 0 0 0 1em; + } + + .row.gtr-uniform { + margin-top: -1em; + } + + .row.gtr-uniform > * { + padding-top: 1em; + } + + .row.gtr-150 { + margin-top: 0; + margin-left: -1.5em; + } + + .row.gtr-150 > * { + padding: 0 0 0 1.5em; + } + + .row.gtr-150.gtr-uniform { + margin-top: -1.5em; + } + + .row.gtr-150.gtr-uniform > * { + padding-top: 1.5em; + } + + .row.gtr-200 { + margin-top: 0; + margin-left: -2em; + } + + .row.gtr-200 > * { + padding: 0 0 0 2em; + } + + .row.gtr-200.gtr-uniform { + margin-top: -2em; + } + + .row.gtr-200.gtr-uniform > * { + padding-top: 2em; + } + + } + +/* Section/Article */ + + section.special, article.special { + text-align: center; + } + + header p { + margin-top: -1em; + } + + @media screen and (max-width: 736px) { + + header p { + margin-top: 0; + } + + } + +/* Icon */ + + .icon { + text-decoration: none; + border-bottom: none; + position: relative; + } + + .icon:before { + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + display: inline-block; + font-style: normal; + font-variant: normal; + text-rendering: auto; + line-height: 1; + text-transform: none !important; + font-family: 'Font Awesome 5 Free'; + font-weight: 400; + } + + .icon > .label { + display: none; + } + + .icon:before { + line-height: inherit; + } + + .icon.solid:before { + font-weight: 900; + } + + .icon.brands:before { + font-family: 'Font Awesome 5 Brands'; + } + + .icon.style2 { + -moz-transition: background-color 0.2s ease-in-out, color 0.2s ease-in-out, border-color 0.2s ease-in-out; + -webkit-transition: background-color 0.2s ease-in-out, color 0.2s ease-in-out, border-color 0.2s ease-in-out; + -ms-transition: background-color 0.2s ease-in-out, color 0.2s ease-in-out, border-color 0.2s ease-in-out; + transition: background-color 0.2s ease-in-out, color 0.2s ease-in-out, border-color 0.2s ease-in-out; + background-color: transparent; + border: solid 1px #c9c9c9; + border-radius: 4px; + width: 2.65em; + height: 2.65em; + display: inline-block; + text-align: center; + line-height: 2.65em; + color: inherit; + } + + .icon.style2:before { + font-size: 1.1em; + } + + .icon.style2:hover { + color: #f2849e; + border-color: #f2849e; + } + + .icon.style2:active { + background-color: rgba(242, 132, 158, 0.1); + } + +/* List */ + + ol { + list-style: decimal; + margin: 0 0 2em 0; + padding-left: 1.25em; + } + + ol li { + padding-left: 0.25em; + } + + ul { + list-style: disc; + margin: 0 0 2em 0; + padding-left: 1em; + } + + ul li { + padding-left: 0.5em; + } + + ul.alt { + list-style: none; + padding-left: 0; + } + + ul.alt li { + border-top: solid 1px #c9c9c9; + padding: 0.5em 0; + } + + ul.alt li:first-child { + border-top: 0; + padding-top: 0; + } + + dl { + margin: 0 0 2em 0; + } + + dl dt { + display: block; + font-weight: 900; + margin: 0 0 1em 0; + } + + dl dd { + margin-left: 2em; + } + +/* Actions */ + + ul.actions { + display: -moz-flex; + display: -webkit-flex; + display: -ms-flex; + display: flex; + cursor: default; + list-style: none; + margin-left: -1em; + padding-left: 0; + } + + ul.actions li { + padding: 0 0 0 1em; + vertical-align: middle; + } + + ul.actions.special { + -moz-justify-content: center; + -webkit-justify-content: center; + -ms-justify-content: center; + justify-content: center; + width: 100%; + margin-left: 0; + } + + ul.actions.special li:first-child { + padding-left: 0; + } + + ul.actions.stacked { + -moz-flex-direction: column; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + margin-left: 0; + } + + ul.actions.stacked li { + padding: 1.3em 0 0 0; + } + + ul.actions.stacked li:first-child { + padding-top: 0; + } + + ul.actions.fit { + width: calc(100% + 1em); + } + + ul.actions.fit li { + -moz-flex-grow: 1; + -webkit-flex-grow: 1; + -ms-flex-grow: 1; + flex-grow: 1; + -moz-flex-shrink: 1; + -webkit-flex-shrink: 1; + -ms-flex-shrink: 1; + flex-shrink: 1; + width: 100%; + } + + ul.actions.fit li > * { + width: 100%; + } + + ul.actions.fit.stacked { + width: 100%; + } + + @media screen and (max-width: 480px) { + + ul.actions:not(.fixed) { + -moz-flex-direction: column; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + margin-left: 0; + width: 100% !important; + } + + ul.actions:not(.fixed) li { + -moz-flex-grow: 1; + -webkit-flex-grow: 1; + -ms-flex-grow: 1; + flex-grow: 1; + -moz-flex-shrink: 1; + -webkit-flex-shrink: 1; + -ms-flex-shrink: 1; + flex-shrink: 1; + padding: 1em 0 0 0; + text-align: center; + width: 100%; + } + + ul.actions:not(.fixed) li > * { + width: 100%; + } + + ul.actions:not(.fixed) li:first-child { + padding-top: 0; + } + + ul.actions:not(.fixed) li input[type="submit"], + ul.actions:not(.fixed) li input[type="reset"], + ul.actions:not(.fixed) li input[type="button"], + ul.actions:not(.fixed) li button, + ul.actions:not(.fixed) li .button { + width: 100%; + } + + ul.actions:not(.fixed) li input[type="submit"].icon:before, + ul.actions:not(.fixed) li input[type="reset"].icon:before, + ul.actions:not(.fixed) li input[type="button"].icon:before, + ul.actions:not(.fixed) li button.icon:before, + ul.actions:not(.fixed) li .button.icon:before { + margin-left: -0.5rem; + } + + } + +/* Icons */ + + ul.icons { + cursor: default; + list-style: none; + padding-left: 0; + margin: -1em 0 2em -1em; + } + + ul.icons li { + display: inline-block; + padding: 1em 0 0 1em; + } + +/* Form */ + + form { + margin: 0 0 2em 0; + overflow-x: hidden; + } + + form > :last-child { + margin-bottom: 0; + } + + form > .fields { + display: -moz-flex; + display: -webkit-flex; + display: -ms-flex; + display: flex; + -moz-flex-wrap: wrap; + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + width: calc(100% + 3em); + margin: -1.5em 0 2em -1.5em; + } + + form > .fields > .field { + -moz-flex-grow: 0; + -webkit-flex-grow: 0; + -ms-flex-grow: 0; + flex-grow: 0; + -moz-flex-shrink: 0; + -webkit-flex-shrink: 0; + -ms-flex-shrink: 0; + flex-shrink: 0; + padding: 1.5em 0 0 1.5em; + width: calc(100% - 1.5em); + } + + form > .fields > .field.half { + width: calc(50% - 0.75em); + } + + form > .fields > .field.third { + width: calc(100%/3 - 0.5em); + } + + form > .fields > .field.quarter { + width: calc(25% - 0.375em); + } + + @media screen and (max-width: 480px) { + + form > .fields { + width: calc(100% + 3em); + margin: -1.5em 0 2em -1.5em; + } + + form > .fields > .field { + padding: 1.5em 0 0 1.5em; + width: calc(100% - 1.5em); + } + + form > .fields > .field.half { + width: calc(100% - 1.5em); + } + + form > .fields > .field.third { + width: calc(100% - 1.5em); + } + + form > .fields > .field.quarter { + width: calc(100% - 1.5em); + } + + } + + label { + display: block; + font-size: 0.9em; + font-weight: 900; + margin: 0 0 1em 0; + } + + input[type="text"], + input[type="password"], + input[type="email"], + input[type="tel"], + select, + textarea { + -moz-appearance: none; + -webkit-appearance: none; + -ms-appearance: none; + appearance: none; + background-color: transparent; + border: none; + border-radius: 0; + border-bottom: solid 1px #c9c9c9; + color: inherit; + display: block; + outline: 0; + padding: 0; + text-decoration: none; + width: 100%; + } + + input[type="text"]:invalid, + input[type="password"]:invalid, + input[type="email"]:invalid, + input[type="tel"]:invalid, + select:invalid, + textarea:invalid { + box-shadow: none; + } + + input[type="text"]:focus, + input[type="password"]:focus, + input[type="email"]:focus, + input[type="tel"]:focus, + select:focus, + textarea:focus { + border-bottom-color: #f2849e; + box-shadow: inset 0 -1px 0 0 #f2849e; + } + + select { + background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='40' height='40' preserveAspectRatio='none' viewBox='0 0 40 40'%3E%3Cpath d='M9.4,12.3l10.4,10.4l10.4-10.4c0.2-0.2,0.5-0.4,0.9-0.4c0.3,0,0.6,0.1,0.9,0.4l3.3,3.3c0.2,0.2,0.4,0.5,0.4,0.9 c0,0.4-0.1,0.6-0.4,0.9L20.7,31.9c-0.2,0.2-0.5,0.4-0.9,0.4c-0.3,0-0.6-0.1-0.9-0.4L4.3,17.3c-0.2-0.2-0.4-0.5-0.4-0.9 c0-0.4,0.1-0.6,0.4-0.9l3.3-3.3c0.2-0.2,0.5-0.4,0.9-0.4S9.1,12.1,9.4,12.3z' fill='%23c9c9c9' /%3E%3C/svg%3E"); + background-size: 1.25rem; + background-repeat: no-repeat; + background-position: calc(100% - 1rem) center; + height: 3em; + padding-right: 3em; + text-overflow: ellipsis; + } + + select option { + background: #ffffff; + } + + select:focus::-ms-value { + background-color: transparent; + } + + select::-ms-expand { + display: none; + } + + input[type="text"], + input[type="password"], + input[type="email"], + select { + height: 3em; + } + + textarea { + padding: 0; + min-height: 3.75em; + } + + input[type="checkbox"], + input[type="radio"] { + -moz-appearance: none; + -webkit-appearance: none; + -ms-appearance: none; + appearance: none; + display: block; + float: left; + margin-right: -2em; + opacity: 0; + width: 1em; + z-index: -1; + } + + input[type="checkbox"] + label, + input[type="radio"] + label { + text-decoration: none; + color: #585858; + cursor: pointer; + display: inline-block; + font-size: 1em; + font-weight: 300; + padding-left: 2.55em; + padding-right: 0.75em; + position: relative; + } + + input[type="checkbox"] + label:before, + input[type="radio"] + label:before { + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + display: inline-block; + font-style: normal; + font-variant: normal; + text-rendering: auto; + line-height: 1; + text-transform: none !important; + font-family: 'Font Awesome 5 Free'; + font-weight: 900; + } + + input[type="checkbox"] + label:before, + input[type="radio"] + label:before { + border-radius: 4px; + border: solid 1px #c9c9c9; + content: ''; + display: inline-block; + font-size: 0.8em; + height: 2.25em; + left: 0; + line-height: 2.25em; + position: absolute; + text-align: center; + top: 0; + width: 2.25em; + } + + input[type="checkbox"]:checked + label:before, + input[type="radio"]:checked + label:before { + background: #585858; + border-color: #585858; + color: #ffffff; + content: '\f00c'; + } + + input[type="checkbox"]:focus + label:before, + input[type="radio"]:focus + label:before { + border-color: #f2849e; + box-shadow: 0 0 0 1px #f2849e; + } + + input[type="checkbox"] + label:before { + border-radius: 4px; + } + + input[type="radio"] + label:before { + border-radius: 100%; + } + +/* Box */ + + .box { + border-radius: 4px; + border: solid 1px #c9c9c9; + margin-bottom: 2em; + padding: 1.5em; + } + + .box > :last-child, + .box > :last-child > :last-child, + .box > :last-child > :last-child > :last-child { + margin-bottom: 0; + } + + .box.alt { + border: 0; + border-radius: 0; + padding: 0; + } + +/* Image */ + + .image { + border-radius: 4px; + border: 0; + display: inline-block; + position: relative; + } + + .image img { + border-radius: 4px; + display: block; + } + + .image.left, .image.right { + max-width: 40%; + } + + .image.left img, .image.right img { + width: 100%; + } + + .image.left { + float: left; + padding: 0 1.5em 1em 0; + top: 0.25em; + } + + .image.right { + float: right; + padding: 0 0 1em 1.5em; + top: 0.25em; + } + + .image.fit { + display: block; + margin: 0 0 2em 0; + width: 100%; + } + + .image.fit img { + width: 100%; + } + + .image.main { + display: block; + margin: 0 0 3em 0; + width: 100%; + } + + .image.main img { + width: 100%; + } + + @media screen and (max-width: 736px) { + + .image.main { + margin: 0 0 2em 0; + } + + } + +/* Table */ + + .table-wrapper { + -webkit-overflow-scrolling: touch; + overflow-x: auto; + } + + table { + margin: 0 0 2em 0; + width: 100%; + } + + table tbody tr { + border: solid 1px #c9c9c9; + border-left: 0; + border-right: 0; + } + + table tbody tr:nth-child(2n + 1) { + background-color: rgba(144, 144, 144, 0.075); + } + + table td { + padding: 0.75em 0.75em; + } + + table th { + font-size: 0.9em; + font-weight: 900; + padding: 0 0.75em 0.75em 0.75em; + text-align: left; + } + + table thead { + border-bottom: solid 2px #c9c9c9; + } + + table tfoot { + border-top: solid 2px #c9c9c9; + } + + table.alt { + border-collapse: separate; + } + + table.alt tbody tr td { + border: solid 1px #c9c9c9; + border-left-width: 0; + border-top-width: 0; + } + + table.alt tbody tr td:first-child { + border-left-width: 1px; + } + + table.alt tbody tr:first-child td { + border-top-width: 1px; + } + + table.alt thead { + border-bottom: 0; + } + + table.alt tfoot { + border-top: 0; + } + +/* Button */ + + input[type="submit"], + input[type="reset"], + input[type="button"], + button, + .button { + -moz-appearance: none; + -webkit-appearance: none; + -ms-appearance: none; + appearance: none; + -moz-transition: background-color 0.2s ease-in-out, color 0.2s ease-in-out, box-shadow 0.2s ease-in-out; + -webkit-transition: background-color 0.2s ease-in-out, color 0.2s ease-in-out, box-shadow 0.2s ease-in-out; + -ms-transition: background-color 0.2s ease-in-out, color 0.2s ease-in-out, box-shadow 0.2s ease-in-out; + transition: background-color 0.2s ease-in-out, color 0.2s ease-in-out, box-shadow 0.2s ease-in-out; + background-color: transparent; + border-radius: 4px; + border: 0; + box-shadow: inset 0 0 0 2px #585858; + color: #585858 !important; + cursor: pointer; + display: inline-block; + font-size: 0.8em; + font-weight: 900; + height: 3.5em; + letter-spacing: 0.35em; + line-height: 3.45em; + overflow: hidden; + padding: 0 1.25em 0 1.6em; + text-align: center; + text-decoration: none; + text-overflow: ellipsis; + text-transform: uppercase; + white-space: nowrap; + } + + input[type="submit"].icon:before, + input[type="reset"].icon:before, + input[type="button"].icon:before, + button.icon:before, + .button.icon:before { + margin-right: 0.5em; + } + + input[type="submit"].fit, + input[type="reset"].fit, + input[type="button"].fit, + button.fit, + .button.fit { + width: 100%; + } + + input[type="submit"]:hover, + input[type="reset"]:hover, + input[type="button"]:hover, + button:hover, + .button:hover { + color: #f2849e !important; + box-shadow: inset 0 0 0 2px #f2849e; + } + + input[type="submit"]:active, + input[type="reset"]:active, + input[type="button"]:active, + button:active, + .button:active { + background-color: rgba(242, 132, 158, 0.1); + } + + input[type="submit"].small, + input[type="reset"].small, + input[type="button"].small, + button.small, + .button.small { + font-size: 0.6em; + } + + input[type="submit"].large, + input[type="reset"].large, + input[type="button"].large, + button.large, + .button.large { + font-size: 1em; + } + + input[type="submit"].primary, + input[type="reset"].primary, + input[type="button"].primary, + button.primary, + .button.primary { + box-shadow: none; + background-color: #585858; + color: #ffffff !important; + } + + input[type="submit"].primary:hover, + input[type="reset"].primary:hover, + input[type="button"].primary:hover, + button.primary:hover, + .button.primary:hover { + background-color: #f2849e; + } + + input[type="submit"].primary:active, + input[type="reset"].primary:active, + input[type="button"].primary:active, + button.primary:active, + .button.primary:active { + background-color: #ee5f81; + } + + input[type="submit"].disabled, input[type="submit"]:disabled, + input[type="reset"].disabled, + input[type="reset"]:disabled, + input[type="button"].disabled, + input[type="button"]:disabled, + button.disabled, + button:disabled, + .button.disabled, + .button:disabled { + pointer-events: none; + opacity: 0.25; + } + +/* Tiles */ + + .tiles { + display: -moz-flex; + display: -webkit-flex; + display: -ms-flex; + display: flex; + -moz-flex-wrap: wrap; + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + margin-left: 0%; + margin-right: 0%; + position: relative; + + } + + .tiles article { + -moz-transition: -moz-transform 0.5s ease, opacity 0.5s ease; + -webkit-transition: -webkit-transform 0.5s ease, opacity 0.5s ease; + -ms-transition: -ms-transform 0.5s ease, opacity 0.5s ease; + transition: transform 0.5s ease, opacity 0.5s ease; + position: relative; + width: 40%; + /* width: calc(33.33333% - 2.5em); */ + margin: 0; + + } + + .tiles article:hover { + background: #9e8462; + } + + .tiles article.style1{ + border: 10px solid #E4AD9C; + background: #000; + border-radius: 50px; + margin-right: 0; + margin-left: 5em; + -moz-transition: background 0.2s ease-in-out; + -webkit-transition: background 0.2s ease-in-out; + -ms-transition: background 0.2s ease-in-out; + transition: background 0.2s ease-in-out; + } + + .tiles article.style2{ + margin-left: 5%; + background: #000; + margin-left: 0; + margin-right: 5em; + border-radius: 50px; + border: 10px solid #9e8462; + -moz-transition: background 0.2s ease-in-out; + -webkit-transition: background 0.2s ease-in-out; + -ms-transition: background 0.2s ease-in-out; + transition: background 0.2s ease-in-out; + } + + .tiles article.style1:hover{ + background: #E4AD9C; + } + + .tiles article.style2:hover{ + background: #9e8462; + } + + .tiles article > .image { + -moz-transition: -moz-transform 0.5s ease; + -webkit-transition: -webkit-transform 0.5s ease; + -ms-transition: -ms-transform 0.5s ease; + transition: transform 0.5s ease; + position: relative; + display: block; + width: 100%; + opacity: 0.3; + border-radius: 30px; + overflow: hidden; + } + + .tiles article > .image img { + display: block; + width: 100%; + } + + .tiles article > .image:before { + pointer-events: none; + -moz-transition: background-color 0.5s ease, opacity 0.5s ease; + -webkit-transition: background-color 0.5s ease, opacity 0.5s ease; + -ms-transition: background-color 0.5s ease, opacity 0.5s ease; + transition: background-color 0.5s ease, opacity 0.5s ease; + content: ''; + display: block; + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + opacity: 1.0; + z-index: 1; + opacity: 0.8; + } + + .tiles article > .image:after { + pointer-events: none; + -moz-transition: opacity 0.5s ease; + -webkit-transition: opacity 0.5s ease; + -ms-transition: opacity 0.5s ease; + transition: opacity 0.5s ease; + content: ''; + display: block; + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + /*background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='100' height='100' viewBox='0 0 100 100' preserveAspectRatio='none'%3E%3Cstyle%3Eline %7B stroke-width: 0.25px%3B stroke: %23ffffff%3B %7D%3C/style%3E%3Cline x1='0' y1='0' x2='100' y2='100' /%3E%3Cline x1='100' y1='0' x2='0' y2='100' /%3E%3C/svg%3E");*/ + background-position: center; + background-repeat: no-repeat; + background-size: 100% 100%; + opacity: 0.25; + z-index: 2; + } + + .tiles article > a { + display: -moz-flex; + display: -webkit-flex; + display: -ms-flex; + display: flex; + -moz-flex-direction: column; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + -moz-align-items: center; + -webkit-align-items: center; + -ms-align-items: center; + align-items: center; + -moz-justify-content: center; + -webkit-justify-content: center; + -ms-justify-content: center; + justify-content: center; + -moz-transition: background-color 0.5s ease, -moz-transform 0.5s ease; + -webkit-transition: background-color 0.5s ease, -webkit-transform 0.5s ease; + -ms-transition: background-color 0.5s ease, -ms-transform 0.5s ease; + transition: background-color 0.5s ease, transform 0.5s ease; + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + padding: 3em; + border-radius: 4px; + border-bottom: 0; + color: #ffffff; + text-align: center; + text-decoration: none; + z-index: 3; + } + + .tiles article > a > :last-child { + margin: 0; + } + + .tiles article > a:hover { + color: #ffffff !important; + } + + .tiles article > a h2 { + font-size: 52px; + font-family: 'Abril Fatface', cursive; + margin: 0; + } + + .tiles article > a .content { + -moz-transition: max-height 0.5s ease, opacity 0.5s ease; + -webkit-transition: max-height 0.5s ease, opacity 0.5s ease; + -ms-transition: max-height 0.5s ease, opacity 0.5s ease; + transition: max-height 0.5s ease, opacity 0.5s ease; + width: 100%; + max-height: 0; + line-height: 1.5; + margin-top: 0.35em; + opacity: 0; + } + + .tiles article > a .content > :last-child { + margin-bottom: 0; + } + + .tiles article.style1 > .image:before { + background-image: url(../../images/beauty.jpg); + background-size: cover; + background-color: #efae9c; + } + + .tiles article.style2 > .image:before { + background-size: cover; + background-image: url(../../images/barber.jpg); + background-color: #a16d58; + } + + body:not(.is-touch) .tiles article:hover > .image { + -moz-transform: scale(1.1); + border-radius: 50px; + -webkit-transform: scale(1.1); + -ms-transform: scale(1.1); + transform: scale(1.1); + } + + body:not(.is-touch) .tiles article:hover > .image:before { + background-color: #333333; + opacity: 0.35; + } + + body:not(.is-touch) .tiles article:hover > .image:after { + opacity: 0; + } + + body:not(.is-touch) .tiles article:hover .content { + max-height: 15em; + opacity: 1; + } + + * + .tiles { + margin-top: 3em; + } + + body.is-preload .tiles article { + -moz-transform: scale(0.9); + -webkit-transform: scale(0.9); + -ms-transform: scale(0.9); + transform: scale(0.9); + opacity: 0; + } + + body.is-touch .tiles article .content { + max-height: 15em; + opacity: 1; + } + + @media screen and (max-width: 1280px) { + + .tiles { + margin: -1.25em 0 0 -1.25em; + } + + .tiles article { + width: calc(33.33333% - 1.25em); + margin: 1.25em 0 0 1.25em; + } + + } + + @media screen and (max-width: 980px) { + + .tiles { + margin: -2.5em 0 0 -2.5em; + } + + .tiles article { + width: calc(50% - 2.5em); + margin: 2.5em 0 0 2.5em; + } + + } + + @media screen and (max-width: 736px) { + + .tiles { + margin: -1.25em 0 0 -1.25em; + } + + .tiles article { + width: calc(50% - 1.25em); + margin: 1.25em 0 0 1.25em; + } + + .tiles article:hover > .image { + -moz-transform: scale(1.0); + -webkit-transform: scale(1.0); + -ms-transform: scale(1.0); + transform: scale(1.0); + } + + } + + @media screen and (max-width: 480px) { + + .tiles { + margin: 45px; + } + + .tiles article { + width: 100%; + margin: 1.25em 0 2em 0; + } + + .tiles article > a h2 {font-size: 24px;} + + } + +/* Header */ + + #header { + padding: 8em 0 0.1em 0 ; + text-align: center; + } + +.inner header{ + margin-top: 100px; + text-align: center; +} + +.header-logo{ + width: 20%; +} + + #header .logo { + display: block; + border-bottom: 0; + color: inherit; + font-weight: 900; + letter-spacing: 0.35em; + margin: 0 0 2.5em 0; + text-decoration: none; + text-transform: uppercase; + display: inline-block; + } + + #header .logo > * { + display: inline-block; + vertical-align: middle; + } + + #header .logo .symbol { + margin-right: 0.65em; + } + + #header .logo .symbol img { + display: block; + width: 2em; + height: 2em; + } + + #header nav { + position: fixed; + right: 2em; + top: 2em; + z-index: 10000; + } + + #header nav ul { + display: -moz-flex; + display: -webkit-flex; + display: -ms-flex; + display: flex; + -moz-align-items: center; + -webkit-align-items: center; + -ms-align-items: center; + align-items: center; + list-style: none; + margin: 0; + padding: 0; + } + + #header nav ul li { + display: block; + padding: 0; + } + + #header nav ul li a { + display: block; + position: relative; + height: 3em; + line-height: 3em; + padding: 0 1.5em; + background-color: rgba(255, 255, 255, 0.5); + border-radius: 4px; + border: 0; + font-size: 0.8em; + font-weight: 900; + letter-spacing: 0.35em; + text-transform: uppercase; + } + + #header nav ul li a[href="#menu"] { + -webkit-tap-highlight-color: transparent; + width: 4em; + text-indent: 4em; + font-size: 1em; + overflow: hidden; + padding: 0; + white-space: nowrap; + } + + #header nav ul li a[href="#menu"]:before, #header nav ul li a[href="#menu"]:after { + -moz-transition: opacity 0.2s ease; + -webkit-transition: opacity 0.2s ease; + -ms-transition: opacity 0.2s ease; + transition: opacity 0.2s ease; + content: ''; + display: block; + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + background-position: center; + background-repeat: no-repeat; + background-size: 2em 2em; + } + + #header nav ul li a[href="#menu"]:before { + background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='100' height='100' viewBox='0 0 100 100' preserveAspectRatio='none'%3E%3Cstyle%3Eline %7B stroke-width: 8px%3B stroke: %23f2849e%3B %7D%3C/style%3E%3Cline x1='0' y1='25' x2='100' y2='25' /%3E%3Cline x1='0' y1='50' x2='100' y2='50' /%3E%3Cline x1='0' y1='75' x2='100' y2='75' /%3E%3C/svg%3E"); + opacity: 0; + } + + #header nav ul li a[href="#menu"]:after { + background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='100' height='100' viewBox='0 0 100 100' preserveAspectRatio='none'%3E%3Cstyle%3Eline %7B stroke-width: 8px%3B stroke: %23585858%3B %7D%3C/style%3E%3Cline x1='0' y1='25' x2='100' y2='25' /%3E%3Cline x1='0' y1='50' x2='100' y2='50' /%3E%3Cline x1='0' y1='75' x2='100' y2='75' /%3E%3C/svg%3E"); + opacity: 1; + } + + #header nav ul li a[href="#menu"]:hover:before { + opacity: 1; + } + + #header nav ul li a[href="#menu"]:hover:after { + opacity: 0; + } + + @media screen and (max-width: 736px) { + + #header { + padding: 4em 0 0.1em 0 ; + } + + #header nav { + right: 0.5em; + top: 0.5em; + } + + #header nav ul li a[href="#menu"]:before, #header nav ul li a[href="#menu"]:after { + background-size: 1.5em 1.5em; + } + + } + + + @media screen and (max-width: 480px) { + + .header-logo{ + width: 50%; + margin-bottom: 0em; +} + +} + + + +/* Menu */ + + #wrapper { + -moz-transition: opacity 0.45s ease; + -webkit-transition: opacity 0.45s ease; + -ms-transition: opacity 0.45s ease; + transition: opacity 0.45s ease; + opacity: 1; + } + + #menu { + -moz-transform: translateX(22em); + -webkit-transform: translateX(22em); + -ms-transform: translateX(22em); + transform: translateX(22em); + -moz-transition: -moz-transform 0.45s ease, visibility 0.45s; + -webkit-transition: -webkit-transform 0.45s ease, visibility 0.45s; + -ms-transition: -ms-transform 0.45s ease, visibility 0.45s; + transition: transform 0.45s ease, visibility 0.45s; + position: fixed; + top: 0; + right: 0; + width: 22em; + max-width: 80%; + height: 100%; + -webkit-overflow-scrolling: touch; + background: #585858; + color: #ffffff; + cursor: default; + visibility: hidden; + z-index: 10002; + } + + #menu > .inner { + -moz-transition: opacity 0.45s ease; + -webkit-transition: opacity 0.45s ease; + -ms-transition: opacity 0.45s ease; + transition: opacity 0.45s ease; + -webkit-overflow-scrolling: touch; + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + padding: 2.75em; + opacity: 0; + overflow-y: auto; + } + + #menu > .inner > ul { + list-style: none; + margin: 0 0 1em 0; + padding: 0; + } + + #menu > .inner > ul > li { + padding: 0; + border-top: solid 1px rgba(255, 255, 255, 0.15); + } + + #menu > .inner > ul > li a { + display: block; + padding: 1em 0; + line-height: 1.5; + border: 0; + color: inherit; + } + + #menu > .inner > ul > li:first-child { + border-top: 0; + margin-top: -1em; + } + + #menu > .close { + -moz-transition: opacity 0.45s ease, -moz-transform 0.45s ease; + -webkit-transition: opacity 0.45s ease, -webkit-transform 0.45s ease; + -ms-transition: opacity 0.45s ease, -ms-transform 0.45s ease; + transition: opacity 0.45s ease, transform 0.45s ease; + -moz-transform: scale(0.25) rotate(180deg); + -webkit-transform: scale(0.25) rotate(180deg); + -ms-transform: scale(0.25) rotate(180deg); + transform: scale(0.25) rotate(180deg); + -webkit-tap-highlight-color: transparent; + display: block; + position: absolute; + top: 2em; + left: -6em; + width: 6em; + text-indent: 6em; + height: 3em; + border: 0; + font-size: 1em; + opacity: 0; + overflow: hidden; + padding: 0; + white-space: nowrap; + } + + #menu > .close:before, #menu > .close:after { + -moz-transition: opacity 0.2s ease; + -webkit-transition: opacity 0.2s ease; + -ms-transition: opacity 0.2s ease; + transition: opacity 0.2s ease; + content: ''; + display: block; + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + background-position: center; + background-repeat: no-repeat; + background-size: 2em 2em; + } + + #menu > .close:before { + background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='100' height='100' viewBox='0 0 100 100' preserveAspectRatio='none'%3E%3Cstyle%3Eline %7B stroke-width: 8px%3B stroke: %23f2849e%3B %7D%3C/style%3E%3Cline x1='15' y1='15' x2='85' y2='85' /%3E%3Cline x1='85' y1='15' x2='15' y2='85' /%3E%3C/svg%3E"); + opacity: 0; + } + + #menu > .close:after { + background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='100' height='100' viewBox='0 0 100 100' preserveAspectRatio='none'%3E%3Cstyle%3Eline %7B stroke-width: 8px%3B stroke: %23585858%3B %7D%3C/style%3E%3Cline x1='15' y1='15' x2='85' y2='85' /%3E%3Cline x1='85' y1='15' x2='15' y2='85' /%3E%3C/svg%3E"); + opacity: 1; + } + + #menu > .close:hover:before { + opacity: 1; + } + + #menu > .close:hover:after { + opacity: 0; + } + + @media screen and (max-width: 736px) { + + #menu { + -moz-transform: translateX(16.5em); + -webkit-transform: translateX(16.5em); + -ms-transform: translateX(16.5em); + transform: translateX(16.5em); + width: 16.5em; + } + + #menu > .inner { + padding: 2.75em 1.5em; + } + + #menu > .close { + top: 0.5em; + left: -4.25em; + width: 4.25em; + text-indent: 4.25em; + } + + #menu > .close:before, #menu > .close:after { + background-size: 1.5em 1.5em; + } + + } + + body.is-menu-visible #wrapper { + pointer-events: none; + cursor: default; + opacity: 0.25; + } + + body.is-menu-visible #menu { + -moz-transform: translateX(0); + -webkit-transform: translateX(0); + -ms-transform: translateX(0); + transform: translateX(0); + visibility: visible; + } + + body.is-menu-visible #menu > * { + opacity: 1; + } + + body.is-menu-visible #menu .close { + -moz-transform: scale(1.0) rotate(0deg); + -webkit-transform: scale(1.0) rotate(0deg); + -ms-transform: scale(1.0) rotate(0deg); + transform: scale(1.0) rotate(0deg); + opacity: 1; + } + +/* Main */ + + #main { + padding: 0em 0 6em 0 ; + } + + @media screen and (max-width: 736px) { + + #main { + padding: 0em 0 4em 0 ; + } + + } + +/* Footer */ + + #footer { + padding: 5em 0 6em 0 ; + background-color: #f6f6f6; + } + + #footer > .inner { + display: -moz-flex; + display: -webkit-flex; + display: -ms-flex; + display: flex; + -moz-flex-wrap: wrap; + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + -moz-flex-direction: row; + -webkit-flex-direction: row; + -ms-flex-direction: row; + flex-direction: row; + } + + #footer > .inner > * > :last-child { + margin-bottom: 0; + } + + #footer > .inner section:nth-child(1) { + width: calc(66% - 2.5em); + margin-right: 2.5em; + } + + #footer > .inner section:nth-child(2) { + width: calc(33% - 2.5em); + margin-left: 2.5em; + } + + #footer > .inner .copyright { + width: 100%; + padding: 0; + margin-top: 5em; + list-style: none; + font-size: 0.8em; + color: rgba(88, 88, 88, 0.5); + } + + #footer > .inner .copyright a { + color: inherit; + } + + #footer > .inner .copyright li { + display: inline-block; + border-left: solid 1px rgba(88, 88, 88, 0.15); + line-height: 1; + padding: 0 0 0 1em; + margin: 0 0 0 1em; + } + + #footer > .inner .copyright li:first-child { + border-left: 0; + padding-left: 0; + margin-left: 0; + } + + @media screen and (max-width: 1280px) { + + #footer { + padding: 5em 0 3em 0 ; + } + + #footer > .inner section:nth-child(1) { + width: calc(66% - 1.25em); + margin-right: 1.25em; + } + + #footer > .inner section:nth-child(2) { + width: calc(33% - 1.25em); + margin-left: 1.25em; + } + + } + + @media screen and (max-width: 980px) { + + #footer > .inner section:nth-child(1) { + width: 66%; + margin-right: 0; + } + + #footer > .inner section:nth-child(2) { + width: calc(33% - 2.5em); + margin-left: 2.5em; + } + + } + + @media screen and (max-width: 736px) { + + #footer { + padding: 3em 0 1em 0 ; + } + + #footer > .inner { + -moz-flex-direction: column; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + } + + #footer > .inner section:nth-child(1) { + width: 100%; + margin-right: 0; + margin: 3em 0 0 0; + } + + #footer > .inner section:nth-child(2) { + -moz-order: -1; + -webkit-order: -1; + -ms-order: -1; + order: -1; + width: 100%; + margin-left: 0; + } + + #footer > .inner .copyright { + margin-top: 3em; + } + + } + + @media screen and (max-width: 480px) { + + #footer > .inner .copyright { + margin-top: 3em; + } + + #footer > .inner .copyright li { + border-left: 0; + padding-left: 0; + margin: 0.75em 0 0 0; + display: block; + line-height: inherit; + } + + #footer > .inner .copyright li:first-child { + margin-top: 0; + } + + } + +/* Wrapper */ + + #wrapper > * > .inner { + width: 100%; + max-width: 68em; + margin: 0 auto; + padding: 0 2.5em; + } + + @media screen and (max-width: 736px) { + + #wrapper > * > .inner { + padding: 0 1.25em; + } + + } + + +/* Responsive items */ + + + + @media screen and (max-width: 1280px) { + + .header-logo { + width: 30%; + margin-bottom: 2em; + } + + .tiles{ + margin:0; + text-align: center; + display: flex; + } + + .tiles article.style1 { + position: absolute; + right: 0; + margin-left: 0; + + } + .tiles article.style2 { + margin-right: 0; + } + + + .tiles article > a h2 { + font-size: 36px; + } + + + } + + @media screen and (max-width: 980px) { + + + + } + + @media screen and (max-width: 736px) { + + .inner header { + margin-top: 50px;} + + + .tiles article > a h2 { + font-size: 26px; + } + + .header-logo { + width: 50%; + + + } + + @media screen and (max-width: 480px) { + + .tiles article.style1, .tiles article.style2{ + border-radius: 30px; + margin-left: 4em; + margin-right: 4em; + } + + .tiles article.style1{ + position: relative; + border: 7px solid #E4AD9C; + } + + .tiles article.style2{ + border: 7px solid #9e8462; + } + + } + + + + + + + + + diff --git a/archive/assets/css/noscript.css b/archive/assets/css/noscript.css new file mode 100755 index 0000000..22875f5 --- /dev/null +++ b/archive/assets/css/noscript.css @@ -0,0 +1,15 @@ +/* + Phantom by Pixelarity + pixelarity.com | hello@pixelarity.com + License: pixelarity.com/license +*/ + +/* Tiles */ + + body.is-preload .tiles article { + -moz-transform: none; + -webkit-transform: none; + -ms-transform: none; + transform: none; + opacity: 1; + } \ No newline at end of file diff --git a/archive/assets/js/breakpoints.min.js b/archive/assets/js/breakpoints.min.js new file mode 100755 index 0000000..b4c6416 --- /dev/null +++ b/archive/assets/js/breakpoints.min.js @@ -0,0 +1,2 @@ +/* breakpoints.js v1.0 | @ajlkn | MIT licensed */ +var breakpoints=function(){"use strict";function e(e){t.init(e)}var t={list:null,media:{},events:[],init:function(e){t.list=e,window.addEventListener("resize",t.poll),window.addEventListener("orientationchange",t.poll),window.addEventListener("load",t.poll),window.addEventListener("fullscreenchange",t.poll)},active:function(e){var n,a,s,i,r,d,c;if(!(e in t.media)){if(">="==e.substr(0,2)?(a="gte",n=e.substr(2)):"<="==e.substr(0,2)?(a="lte",n=e.substr(2)):">"==e.substr(0,1)?(a="gt",n=e.substr(1)):"<"==e.substr(0,1)?(a="lt",n=e.substr(1)):"!"==e.substr(0,1)?(a="not",n=e.substr(1)):(a="eq",n=e),n&&n in t.list)if(i=t.list[n],Array.isArray(i)){if(r=parseInt(i[0]),d=parseInt(i[1]),isNaN(r)){if(isNaN(d))return;c=i[1].substr(String(d).length)}else c=i[0].substr(String(r).length);if(isNaN(r))switch(a){case"gte":s="screen";break;case"lte":s="screen and (max-width: "+d+c+")";break;case"gt":s="screen and (min-width: "+(d+1)+c+")";break;case"lt":s="screen and (max-width: -1px)";break;case"not":s="screen and (min-width: "+(d+1)+c+")";break;default:s="screen and (max-width: "+d+c+")"}else if(isNaN(d))switch(a){case"gte":s="screen and (min-width: "+r+c+")";break;case"lte":s="screen";break;case"gt":s="screen and (max-width: -1px)";break;case"lt":s="screen and (max-width: "+(r-1)+c+")";break;case"not":s="screen and (max-width: "+(r-1)+c+")";break;default:s="screen and (min-width: "+r+c+")"}else switch(a){case"gte":s="screen and (min-width: "+r+c+")";break;case"lte":s="screen and (max-width: "+d+c+")";break;case"gt":s="screen and (min-width: "+(d+1)+c+")";break;case"lt":s="screen and (max-width: "+(r-1)+c+")";break;case"not":s="screen and (max-width: "+(r-1)+c+"), screen and (min-width: "+(d+1)+c+")";break;default:s="screen and (min-width: "+r+c+") and (max-width: "+d+c+")"}}else s="("==i.charAt(0)?"screen and "+i:i;t.media[e]=!!s&&s}return t.media[e]!==!1&&window.matchMedia(t.media[e]).matches},on:function(e,n){t.events.push({query:e,handler:n,state:!1}),t.active(e)&&n()},poll:function(){var e,n;for(e=0;e0:!!("ontouchstart"in window),e.mobile="wp"==e.os||"android"==e.os||"ios"==e.os||"bb"==e.os}};return e.init(),e}();!function(e,n){"function"==typeof define&&define.amd?define([],n):"object"==typeof exports?module.exports=n():e.browser=n()}(this,function(){return browser}); diff --git a/archive/assets/js/jquery.min.js b/archive/assets/js/jquery.min.js new file mode 100755 index 0000000..409c3f4 --- /dev/null +++ b/archive/assets/js/jquery.min.js @@ -0,0 +1,2 @@ +/*! jQuery v3.4.1 | (c) JS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],E=C.document,r=Object.getPrototypeOf,s=t.slice,g=t.concat,u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.4.1",k=function(e,t){return new k.fn.init(e,t)},p=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function d(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp($),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+$),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(m.childNodes),m.childNodes),t[m.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&((e?e.ownerDocument||e:m)!==C&&T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!A[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&U.test(t)){(s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=k),o=(l=h(t)).length;while(o--)l[o]="#"+s+" "+xe(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){A(t,!0)}finally{s===k&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[k]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:m;return r!==C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),m!==C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=k,!C.getElementsByName||!C.getElementsByName(k).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+k+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",$)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e===C||e.ownerDocument===m&&y(m,e)?-1:t===C||t.ownerDocument===m&&y(m,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===C?-1:t===C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]===m?-1:s[r]===m?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==C&&T(e),d.matchesSelector&&E&&!A[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){A(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=p[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&p(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):"string"!=typeof n?k.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:L.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),D.test(r[1])&&k.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(k):k.makeArray(e,this)}).prototype=k.fn,q=k(E);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?k.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;nx",y.noCloneChecked=!!me.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee=/^([^.]*)(?:\.(.+)|)/;function ke(){return!0}function Se(){return!1}function Ne(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ae(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ae(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return k().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=k.guid++)),e.each(function(){k.event.add(this,t,i,r,n)})}function De(e,i,o){o?(Q.set(e,i,!1),k.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Q.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(k.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Q.set(this,i,r),t=o(this,i),this[i](),r!==(n=Q.get(this,i))||t?Q.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Q.set(this,i,{value:k.event.trigger(k.extend(r[0],k.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Q.get(e,i)&&k.event.add(e,i,ke)}k.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.get(t);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&k.find.matchesSelector(ie,i),n.guid||(n.guid=k.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof k&&k.event.triggered!==e.type?k.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(R)||[""]).length;while(l--)d=g=(s=Ee.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=k.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=k.event.special[d]||{},c=k.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),k.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.hasData(e)&&Q.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(R)||[""]).length;while(l--)if(d=g=(s=Ee.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=k.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||k.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)k.event.remove(e,d+t[l],n,r,!0);k.isEmptyObject(u)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=k.event.fix(e),u=new Array(arguments.length),l=(Q.get(this,"events")||{})[s.type]||[],c=k.event.special[s.type]||{};for(u[0]=s,t=1;t\x20\t\r\n\f]*)[^>]*)\/>/gi,qe=/\s*$/g;function Oe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&k(e).children("tbody")[0]||e}function Pe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Re(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Me(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(Q.hasData(e)&&(o=Q.access(e),a=Q.set(t,o),l=o.events))for(i in delete a.handle,a.events={},l)for(n=0,r=l[i].length;n")},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=oe(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||k.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Vt,Gt=[],Yt=/(=)\?(?=&|$)|\?\?/;k.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Gt.pop()||k.expando+"_"+kt++;return this[e]=!0,e}}),k.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Yt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Yt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Yt,"$1"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||k.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?k(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Gt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Vt=E.implementation.createHTMLDocument("").body).innerHTML="
",2===Vt.childNodes.length),k.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=D.exec(e))?[t.createElement(i[1])]:(i=we([e],t,o),o&&o.length&&k(o).remove(),k.merge([],i.childNodes)));var r,i,o},k.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(k.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},k.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){k.fn[t]=function(e){return this.on(t,e)}}),k.expr.pseudos.animated=function(t){return k.grep(k.timers,function(e){return t===e.elem}).length},k.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=k.css(e,"position"),c=k(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=k.css(e,"top"),u=k.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,k.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},k.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){k.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===k.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===k.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=k(e).offset()).top+=k.css(e,"borderTopWidth",!0),i.left+=k.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-k.css(r,"marginTop",!0),left:t.left-i.left-k.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===k.css(e,"position"))e=e.offsetParent;return e||ie})}}),k.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;k.fn[t]=function(e){return _(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),k.each(["top","left"],function(e,n){k.cssHooks[n]=ze(y.pixelPosition,function(e,t){if(t)return t=_e(e,n),$e.test(t)?k(e).position()[n]+"px":t})}),k.each({Height:"height",Width:"width"},function(a,s){k.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){k.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return _(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?k.css(e,t,i):k.style(e,t,n,i)},s,n?e:void 0,n)}})}),k.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){k.fn[n]=function(e,t){return 0'), + $submits = $this.find('input[type="submit"]'); + + $this + .wrap($wrapper) + .attr('rows', 1) + .css('overflow', 'hidden') + .css('resize', 'none') + .on('keydown', function(event) { + + if (event.keyCode == 13 + && event.ctrlKey) { + + event.preventDefault(); + event.stopPropagation(); + + $(this).blur(); + + } + + }) + .on('blur focus', function() { + $this.val($.trim($this.val())); + }) + .on('input blur focus --init', function() { + + $wrapper + .css('height', $this.height()); + + $this + .css('height', 'auto') + .css('height', $this.prop('scrollHeight') + 'px'); + + }) + .on('keyup', function(event) { + + if (event.keyCode == 9) + $this + .select(); + + }) + .triggerHandler('--init'); + + // Fix. + if (browser.name == 'ie' + || browser.mobile) + $this + .css('max-height', '10em') + .css('overflow-y', 'auto'); + + }); + + // Menu. + var $menu = $('#menu'); + + $menu.wrapInner('
'); + + $menu._locked = false; + + $menu._lock = function() { + + if ($menu._locked) + return false; + + $menu._locked = true; + + window.setTimeout(function() { + $menu._locked = false; + }, 350); + + return true; + + }; + + $menu._show = function() { + + if ($menu._lock()) + $body.addClass('is-menu-visible'); + + }; + + $menu._hide = function() { + + if ($menu._lock()) + $body.removeClass('is-menu-visible'); + + }; + + $menu._toggle = function() { + + if ($menu._lock()) + $body.toggleClass('is-menu-visible'); + + }; + + $menu + .appendTo($body) + .on('click', function(event) { + event.stopPropagation(); + }) + .on('click', 'a', function(event) { + + var href = $(this).attr('href'); + + event.preventDefault(); + event.stopPropagation(); + + // Hide. + $menu._hide(); + + // Redirect. + if (href == '#menu') + return; + + window.setTimeout(function() { + window.location.href = href; + }, 350); + + }) + .append('Close'); + + $body + .on('click', 'a[href="#menu"]', function(event) { + + event.stopPropagation(); + event.preventDefault(); + + // Toggle. + $menu._toggle(); + + }) + .on('click', function(event) { + + // Hide. + $menu._hide(); + + }) + .on('keydown', function(event) { + + // Hide on escape. + if (event.keyCode == 27) + $menu._hide(); + + }); + +})(jQuery); \ No newline at end of file diff --git a/archive/assets/js/util.js b/archive/assets/js/util.js new file mode 100755 index 0000000..99ae63c --- /dev/null +++ b/archive/assets/js/util.js @@ -0,0 +1,587 @@ +(function($) { + + /** + * Generate an indented list of links from a nav. Meant for use with panel(). + * @return {jQuery} jQuery object. + */ + $.fn.navList = function() { + + var $this = $(this); + $a = $this.find('a'), + b = []; + + $a.each(function() { + + var $this = $(this), + indent = Math.max(0, $this.parents('li').length - 1), + href = $this.attr('href'), + target = $this.attr('target'); + + b.push( + '' + + '' + + $this.text() + + '' + ); + + }); + + return b.join(''); + + }; + + /** + * Panel-ify an element. + * @param {object} userConfig User config. + * @return {jQuery} jQuery object. + */ + $.fn.panel = function(userConfig) { + + // No elements? + if (this.length == 0) + return $this; + + // Multiple elements? + if (this.length > 1) { + + for (var i=0; i < this.length; i++) + $(this[i]).panel(userConfig); + + return $this; + + } + + // Vars. + var $this = $(this), + $body = $('body'), + $window = $(window), + id = $this.attr('id'), + config; + + // Config. + config = $.extend({ + + // Delay. + delay: 0, + + // Hide panel on link click. + hideOnClick: false, + + // Hide panel on escape keypress. + hideOnEscape: false, + + // Hide panel on swipe. + hideOnSwipe: false, + + // Reset scroll position on hide. + resetScroll: false, + + // Reset forms on hide. + resetForms: false, + + // Side of viewport the panel will appear. + side: null, + + // Target element for "class". + target: $this, + + // Class to toggle. + visibleClass: 'visible' + + }, userConfig); + + // Expand "target" if it's not a jQuery object already. + if (typeof config.target != 'jQuery') + config.target = $(config.target); + + // Panel. + + // Methods. + $this._hide = function(event) { + + // Already hidden? Bail. + if (!config.target.hasClass(config.visibleClass)) + return; + + // If an event was provided, cancel it. + if (event) { + + event.preventDefault(); + event.stopPropagation(); + + } + + // Hide. + config.target.removeClass(config.visibleClass); + + // Post-hide stuff. + window.setTimeout(function() { + + // Reset scroll position. + if (config.resetScroll) + $this.scrollTop(0); + + // Reset forms. + if (config.resetForms) + $this.find('form').each(function() { + this.reset(); + }); + + }, config.delay); + + }; + + // Vendor fixes. + $this + .css('-ms-overflow-style', '-ms-autohiding-scrollbar') + .css('-webkit-overflow-scrolling', 'touch'); + + // Hide on click. + if (config.hideOnClick) { + + $this.find('a') + .css('-webkit-tap-highlight-color', 'rgba(0,0,0,0)'); + + $this + .on('click', 'a', function(event) { + + var $a = $(this), + href = $a.attr('href'), + target = $a.attr('target'); + + if (!href || href == '#' || href == '' || href == '#' + id) + return; + + // Cancel original event. + event.preventDefault(); + event.stopPropagation(); + + // Hide panel. + $this._hide(); + + // Redirect to href. + window.setTimeout(function() { + + if (target == '_blank') + window.open(href); + else + window.location.href = href; + + }, config.delay + 10); + + }); + + } + + // Event: Touch stuff. + $this.on('touchstart', function(event) { + + $this.touchPosX = event.originalEvent.touches[0].pageX; + $this.touchPosY = event.originalEvent.touches[0].pageY; + + }) + + $this.on('touchmove', function(event) { + + if ($this.touchPosX === null + || $this.touchPosY === null) + return; + + var diffX = $this.touchPosX - event.originalEvent.touches[0].pageX, + diffY = $this.touchPosY - event.originalEvent.touches[0].pageY, + th = $this.outerHeight(), + ts = ($this.get(0).scrollHeight - $this.scrollTop()); + + // Hide on swipe? + if (config.hideOnSwipe) { + + var result = false, + boundary = 20, + delta = 50; + + switch (config.side) { + + case 'left': + result = (diffY < boundary && diffY > (-1 * boundary)) && (diffX > delta); + break; + + case 'right': + result = (diffY < boundary && diffY > (-1 * boundary)) && (diffX < (-1 * delta)); + break; + + case 'top': + result = (diffX < boundary && diffX > (-1 * boundary)) && (diffY > delta); + break; + + case 'bottom': + result = (diffX < boundary && diffX > (-1 * boundary)) && (diffY < (-1 * delta)); + break; + + default: + break; + + } + + if (result) { + + $this.touchPosX = null; + $this.touchPosY = null; + $this._hide(); + + return false; + + } + + } + + // Prevent vertical scrolling past the top or bottom. + if (($this.scrollTop() < 0 && diffY < 0) + || (ts > (th - 2) && ts < (th + 2) && diffY > 0)) { + + event.preventDefault(); + event.stopPropagation(); + + } + + }); + + // Event: Prevent certain events inside the panel from bubbling. + $this.on('click touchend touchstart touchmove', function(event) { + event.stopPropagation(); + }); + + // Event: Hide panel if a child anchor tag pointing to its ID is clicked. + $this.on('click', 'a[href="#' + id + '"]', function(event) { + + event.preventDefault(); + event.stopPropagation(); + + config.target.removeClass(config.visibleClass); + + }); + + // Body. + + // Event: Hide panel on body click/tap. + $body.on('click touchend', function(event) { + $this._hide(event); + }); + + // Event: Toggle. + $body.on('click', 'a[href="#' + id + '"]', function(event) { + + event.preventDefault(); + event.stopPropagation(); + + config.target.toggleClass(config.visibleClass); + + }); + + // Window. + + // Event: Hide on ESC. + if (config.hideOnEscape) + $window.on('keydown', function(event) { + + if (event.keyCode == 27) + $this._hide(event); + + }); + + return $this; + + }; + + /** + * Apply "placeholder" attribute polyfill to one or more forms. + * @return {jQuery} jQuery object. + */ + $.fn.placeholder = function() { + + // Browser natively supports placeholders? Bail. + if (typeof (document.createElement('input')).placeholder != 'undefined') + return $(this); + + // No elements? + if (this.length == 0) + return $this; + + // Multiple elements? + if (this.length > 1) { + + for (var i=0; i < this.length; i++) + $(this[i]).placeholder(); + + return $this; + + } + + // Vars. + var $this = $(this); + + // Text, TextArea. + $this.find('input[type=text],textarea') + .each(function() { + + var i = $(this); + + if (i.val() == '' + || i.val() == i.attr('placeholder')) + i + .addClass('polyfill-placeholder') + .val(i.attr('placeholder')); + + }) + .on('blur', function() { + + var i = $(this); + + if (i.attr('name').match(/-polyfill-field$/)) + return; + + if (i.val() == '') + i + .addClass('polyfill-placeholder') + .val(i.attr('placeholder')); + + }) + .on('focus', function() { + + var i = $(this); + + if (i.attr('name').match(/-polyfill-field$/)) + return; + + if (i.val() == i.attr('placeholder')) + i + .removeClass('polyfill-placeholder') + .val(''); + + }); + + // Password. + $this.find('input[type=password]') + .each(function() { + + var i = $(this); + var x = $( + $('
') + .append(i.clone()) + .remove() + .html() + .replace(/type="password"/i, 'type="text"') + .replace(/type=password/i, 'type=text') + ); + + if (i.attr('id') != '') + x.attr('id', i.attr('id') + '-polyfill-field'); + + if (i.attr('name') != '') + x.attr('name', i.attr('name') + '-polyfill-field'); + + x.addClass('polyfill-placeholder') + .val(x.attr('placeholder')).insertAfter(i); + + if (i.val() == '') + i.hide(); + else + x.hide(); + + i + .on('blur', function(event) { + + event.preventDefault(); + + var x = i.parent().find('input[name=' + i.attr('name') + '-polyfill-field]'); + + if (i.val() == '') { + + i.hide(); + x.show(); + + } + + }); + + x + .on('focus', function(event) { + + event.preventDefault(); + + var i = x.parent().find('input[name=' + x.attr('name').replace('-polyfill-field', '') + ']'); + + x.hide(); + + i + .show() + .focus(); + + }) + .on('keypress', function(event) { + + event.preventDefault(); + x.val(''); + + }); + + }); + + // Events. + $this + .on('submit', function() { + + $this.find('input[type=text],input[type=password],textarea') + .each(function(event) { + + var i = $(this); + + if (i.attr('name').match(/-polyfill-field$/)) + i.attr('name', ''); + + if (i.val() == i.attr('placeholder')) { + + i.removeClass('polyfill-placeholder'); + i.val(''); + + } + + }); + + }) + .on('reset', function(event) { + + event.preventDefault(); + + $this.find('select') + .val($('option:first').val()); + + $this.find('input,textarea') + .each(function() { + + var i = $(this), + x; + + i.removeClass('polyfill-placeholder'); + + switch (this.type) { + + case 'submit': + case 'reset': + break; + + case 'password': + i.val(i.attr('defaultValue')); + + x = i.parent().find('input[name=' + i.attr('name') + '-polyfill-field]'); + + if (i.val() == '') { + i.hide(); + x.show(); + } + else { + i.show(); + x.hide(); + } + + break; + + case 'checkbox': + case 'radio': + i.attr('checked', i.attr('defaultValue')); + break; + + case 'text': + case 'textarea': + i.val(i.attr('defaultValue')); + + if (i.val() == '') { + i.addClass('polyfill-placeholder'); + i.val(i.attr('placeholder')); + } + + break; + + default: + i.val(i.attr('defaultValue')); + break; + + } + }); + + }); + + return $this; + + }; + + /** + * Moves elements to/from the first positions of their respective parents. + * @param {jQuery} $elements Elements (or selector) to move. + * @param {bool} condition If true, moves elements to the top. Otherwise, moves elements back to their original locations. + */ + $.prioritize = function($elements, condition) { + + var key = '__prioritize'; + + // Expand $elements if it's not already a jQuery object. + if (typeof $elements != 'jQuery') + $elements = $($elements); + + // Step through elements. + $elements.each(function() { + + var $e = $(this), $p, + $parent = $e.parent(); + + // No parent? Bail. + if ($parent.length == 0) + return; + + // Not moved? Move it. + if (!$e.data(key)) { + + // Condition is false? Bail. + if (!condition) + return; + + // Get placeholder (which will serve as our point of reference for when this element needs to move back). + $p = $e.prev(); + + // Couldn't find anything? Means this element's already at the top, so bail. + if ($p.length == 0) + return; + + // Move element to top of parent. + $e.prependTo($parent); + + // Mark element as moved. + $e.data(key, $p); + + } + + // Moved already? + else { + + // Condition is true? Bail. + if (condition) + return; + + $p = $e.data(key); + + // Move element back to its original location (using our placeholder). + $e.insertAfter($p); + + // Unmark element as moved. + $e.removeData(key); + + } + + }); + + }; + +})(jQuery); \ No newline at end of file diff --git a/archive/assets/sass/base/_page.scss b/archive/assets/sass/base/_page.scss new file mode 100755 index 0000000..d156097 --- /dev/null +++ b/archive/assets/sass/base/_page.scss @@ -0,0 +1,47 @@ +/// +/// Phantom by Pixelarity +/// pixelarity.com | hello@pixelarity.com +/// License: pixelarity.com/license +/// + +/* Basic */ + + // MSIE: Required for IEMobile. + @-ms-viewport { + width: device-width; + } + + // MSIE: Prevents scrollbar from overlapping content. + body { + -ms-overflow-style: scrollbar; + } + + // Ensures page width is always >=320px. + @include breakpoint('<=xsmall') { + html, body { + min-width: 320px; + } + } + + // Set box model to border-box. + // Based on css-tricks.com/inheriting-box-sizing-probably-slightly-better-best-practice + html { + box-sizing: border-box; + } + + *, *:before, *:after { + box-sizing: inherit; + } + + body { + background: _palette(bg); + + // Stops initial animations until page loads. + &.is-preload { + *, *:before, *:after { + @include vendor('animation', 'none !important'); + @include vendor('transition', 'none !important'); + } + } + + } \ No newline at end of file diff --git a/archive/assets/sass/base/_reset.scss b/archive/assets/sass/base/_reset.scss new file mode 100755 index 0000000..428b716 --- /dev/null +++ b/archive/assets/sass/base/_reset.scss @@ -0,0 +1,76 @@ +/// +/// Phantom by Pixelarity +/// pixelarity.com | hello@pixelarity.com +/// License: pixelarity.com/license +/// + +// Reset. +// Based on meyerweb.com/eric/tools/css/reset (v2.0 | 20110126 | License: public domain) + + html, body, div, span, applet, object, + iframe, h1, h2, h3, h4, h5, h6, p, blockquote, + pre, a, abbr, acronym, address, big, cite, + code, del, dfn, em, img, ins, kbd, q, s, samp, + small, strike, strong, sub, sup, tt, var, b, + u, i, center, dl, dt, dd, ol, ul, li, fieldset, + form, label, legend, table, caption, tbody, + tfoot, thead, tr, th, td, article, aside, + canvas, details, embed, figure, figcaption, + footer, header, hgroup, menu, nav, output, ruby, + section, summary, time, mark, audio, video { + margin: 0; + padding: 0; + border: 0; + font-size: 100%; + font: inherit; + vertical-align: baseline; + } + + article, aside, details, figcaption, figure, + footer, header, hgroup, menu, nav, section { + display: block; + } + + body { + line-height: 1; + } + + ol, ul { + list-style:none; + } + + blockquote, q { + quotes: none; + + &:before, + &:after { + content: ''; + content: none; + } + } + + table { + border-collapse: collapse; + border-spacing: 0; + } + + body { + -webkit-text-size-adjust: none; + } + + mark { + background-color: transparent; + color: inherit; + } + + input::-moz-focus-inner { + border: 0; + padding: 0; + } + + input, select, textarea { + -moz-appearance: none; + -webkit-appearance: none; + -ms-appearance: none; + appearance: none; + } \ No newline at end of file diff --git a/archive/assets/sass/base/_typography.scss b/archive/assets/sass/base/_typography.scss new file mode 100755 index 0000000..52203c5 --- /dev/null +++ b/archive/assets/sass/base/_typography.scss @@ -0,0 +1,189 @@ +/// +/// Phantom by Pixelarity +/// pixelarity.com | hello@pixelarity.com +/// License: pixelarity.com/license +/// + +/* Type */ + + body, input, select, textarea { + color: _palette(fg); + font-family: _font(family); + font-size: 16pt; + font-weight: _font(weight); + line-height: 1.75; + + @include breakpoint('<=xlarge') { + font-size: 14pt; + } + + @include breakpoint('<=large') { + font-size: 12pt; + } + } + + a { + @include vendor('transition', ( + 'border-bottom-color #{_duration(transition)} ease', + 'color #{_duration(transition)} ease' + )); + text-decoration: none; + color: _palette(fg); + border-bottom: dotted 1px transparentize(_palette(fg), 0.5); + + &:hover { + border-bottom-color: transparent; + color: _palette(accent1) !important; + } + } + + strong, b { + color: _palette(fg-bold); + font-weight: _font(weight-bold); + } + + em, i { + font-style: italic; + } + + p { + margin: 0 0 _size(element-margin) 0; + } + + h1 { + font-size: 2.75em; + color: _palette(fg-bold); + font-weight: _font(weight-bold-alt); + line-height: 1.3; + margin: 0 0 (_size(element-margin) * 0.5) 0; + letter-spacing: _font(letter-spacing-alt); + + a { + color: inherit; + } + + @include breakpoint('<=small') { + font-size: 2em; + margin: 0 0 (_size(element-margin) * 0.5) 0; + } + + @include breakpoint('<=xxsmall') { + font-size: 1.75em; + } + } + + h2, h3, h4, h5, h6 { + color: _palette(fg-bold); + font-weight: _font(weight-bold); + line-height: 1.5; + margin: 0 0 (_size(element-margin) * 1) 0; + text-transform: uppercase; + letter-spacing: _font(letter-spacing); + + a { + color: inherit; + } + } + + h2 { + font-size: 1.1em; + } + + h3 { + font-size: 1em; + } + + h4 { + font-size: 0.8em; + } + + h5 { + font-size: 0.8em; + } + + h6 { + font-size: 0.8em; + } + + @include breakpoint('<=medium') { + h1, h2, h3, h4, h5, h6 { + br { + display: none; + } + } + } + + @include breakpoint('<=small') { + h2 { + font-size: 1em; + } + + h3 { + font-size: 0.8em; + } + } + + sub { + font-size: 0.8em; + position: relative; + top: 0.5em; + } + + sup { + font-size: 0.8em; + position: relative; + top: -0.5em; + } + + blockquote { + border-left: solid (_size(border-width) * 4) _palette(border); + font-style: italic; + margin: 0 0 _size(element-margin) 0; + padding: (_size(element-margin) / 4) 0 (_size(element-margin) / 4) _size(element-margin); + } + + code { + background: _palette(border-bg); + border-radius: _size(border-radius); + border: solid _size(border-width) _palette(border); + font-family: _font(family-fixed); + font-size: 0.9em; + margin: 0 0.25em; + padding: 0.25em 0.65em; + } + + pre { + -webkit-overflow-scrolling: touch; + font-family: _font(family-fixed); + font-size: 0.9em; + margin: 0 0 _size(element-margin) 0; + + code { + display: block; + line-height: 1.75; + padding: 1em 1.5em; + overflow-x: auto; + } + } + + hr { + border: 0; + border-bottom: solid _size(border-width) _palette(border); + margin: _size(element-margin) 0; + + &.major { + margin: (_size(element-margin) * 1.5) 0; + } + } + + .align-left { + text-align: left; + } + + .align-center { + text-align: center; + } + + .align-right { + text-align: right; + } \ No newline at end of file diff --git a/archive/assets/sass/components/_actions.scss b/archive/assets/sass/components/_actions.scss new file mode 100755 index 0000000..7331b23 --- /dev/null +++ b/archive/assets/sass/components/_actions.scss @@ -0,0 +1,101 @@ +/// +/// Phantom by Pixelarity +/// pixelarity.com | hello@pixelarity.com +/// License: pixelarity.com/license +/// + +/* Actions */ + + ul.actions { + @include vendor('display', 'flex'); + cursor: default; + list-style: none; + margin-left: (_size(element-margin) * -0.5); + padding-left: 0; + + li { + padding: 0 0 0 (_size(element-margin) * 0.5); + vertical-align: middle; + } + + &.special { + @include vendor('justify-content', 'center'); + width: 100%; + margin-left: 0; + + li { + &:first-child { + padding-left: 0; + } + } + } + + &.stacked { + @include vendor('flex-direction', 'column'); + margin-left: 0; + + li { + padding: (_size(element-margin) * 0.65) 0 0 0; + + &:first-child { + padding-top: 0; + } + } + } + + &.fit { + width: calc(100% + #{_size(element-margin) * 0.5}); + + li { + @include vendor('flex-grow', '1'); + @include vendor('flex-shrink', '1'); + width: 100%; + + > * { + width: 100%; + } + } + + &.stacked { + width: 100%; + } + } + + @include breakpoint('<=xsmall') { + &:not(.fixed) { + @include vendor('flex-direction', 'column'); + margin-left: 0; + width: 100% !important; + + li { + @include vendor('flex-grow', '1'); + @include vendor('flex-shrink', '1'); + padding: (_size(element-margin) * 0.5) 0 0 0; + text-align: center; + width: 100%; + + > * { + width: 100%; + } + + &:first-child { + padding-top: 0; + } + + input[type="submit"], + input[type="reset"], + input[type="button"], + button, + .button { + width: 100%; + + &.icon { + &:before { + margin-left: -0.5rem; + } + } + } + } + } + } + } \ No newline at end of file diff --git a/archive/assets/sass/components/_box.scss b/archive/assets/sass/components/_box.scss new file mode 100755 index 0000000..dd724bb --- /dev/null +++ b/archive/assets/sass/components/_box.scss @@ -0,0 +1,26 @@ +/// +/// Phantom by Pixelarity +/// pixelarity.com | hello@pixelarity.com +/// License: pixelarity.com/license +/// + +/* Box */ + + .box { + border-radius: _size(border-radius); + border: solid _size(border-width) _palette(border); + margin-bottom: _size(element-margin); + padding: 1.5em; + + > :last-child, + > :last-child > :last-child, + > :last-child > :last-child > :last-child { + margin-bottom: 0; + } + + &.alt { + border: 0; + border-radius: 0; + padding: 0; + } + } \ No newline at end of file diff --git a/archive/assets/sass/components/_button.scss b/archive/assets/sass/components/_button.scss new file mode 100755 index 0000000..7d01e63 --- /dev/null +++ b/archive/assets/sass/components/_button.scss @@ -0,0 +1,86 @@ +/// +/// Phantom by Pixelarity +/// pixelarity.com | hello@pixelarity.com +/// License: pixelarity.com/license +/// + +/* Button */ + + input[type="submit"], + input[type="reset"], + input[type="button"], + button, + .button { + @include vendor('appearance', 'none'); + @include vendor('transition', ( + 'background-color #{_duration(transition)} ease-in-out', + 'color #{_duration(transition)} ease-in-out', + 'box-shadow #{_duration(transition)} ease-in-out' + )); + background-color: transparent; + border-radius: _size(border-radius); + border: 0; + box-shadow: inset 0 0 0 (_size(border-width) * 2) _palette(fg); + color: _palette(fg) !important; + cursor: pointer; + display: inline-block; + font-size: 0.8em; + font-weight: _font(weight-bold); + height: 3.5em; + letter-spacing: _font(letter-spacing); + line-height: 3.45em; + overflow: hidden; + padding: 0 1.25em 0 #{1.25em + _font(letter-spacing)}; + text-align: center; + text-decoration: none; + text-overflow: ellipsis; + text-transform: uppercase; + white-space: nowrap; + + &.icon { + &:before { + margin-right: 0.5em; + } + } + + &.fit { + width: 100%; + } + + &:hover { + color: _palette(accent1) !important; + box-shadow: inset 0 0 0 (_size(border-width) * 2) _palette(accent1); + } + + &:active { + background-color: transparentize(_palette(accent1), 0.9); + } + + &.small { + font-size: 0.6em; + } + + &.large { + font-size: 1em; + } + + &.primary { + box-shadow: none; + background-color: _palette(fg); + color: _palette(bg) !important; + + &:hover { + background-color: _palette(accent1); + } + + &:active { + background-color: darken(_palette(accent1), 8); + } + } + + &.disabled, + &:disabled { + @include vendor('pointer-events', 'none'); + opacity: 0.25; + } + } \ No newline at end of file diff --git a/archive/assets/sass/components/_form.scss b/archive/assets/sass/components/_form.scss new file mode 100755 index 0000000..75c7051 --- /dev/null +++ b/archive/assets/sass/components/_form.scss @@ -0,0 +1,212 @@ +/// +/// Phantom by Pixelarity +/// pixelarity.com | hello@pixelarity.com +/// License: pixelarity.com/license +/// + +/* Form */ + + form { + margin: 0 0 _size(element-margin) 0; + overflow-x: hidden; + + > :last-child { + margin-bottom: 0; + } + + > .fields { + $gutter: (_size(element-margin) * 0.75); + + @include vendor('display', 'flex'); + @include vendor('flex-wrap', 'wrap'); + width: calc(100% + #{$gutter * 2}); + margin: ($gutter * -1) 0 _size(element-margin) ($gutter * -1); + + > .field { + @include vendor('flex-grow', '0'); + @include vendor('flex-shrink', '0'); + padding: $gutter 0 0 $gutter; + width: calc(100% - #{$gutter * 1}); + + &.half { + width: calc(50% - #{$gutter * 0.5}); + } + + &.third { + width: calc(#{100% / 3} - #{$gutter * (1 / 3)}); + } + + &.quarter { + width: calc(25% - #{$gutter * 0.25}); + } + } + } + + @include breakpoint('<=xsmall') { + > .fields { + $gutter: (_size(element-margin) * 0.75); + + width: calc(100% + #{$gutter * 2}); + margin: ($gutter * -1) 0 _size(element-margin) ($gutter * -1); + + > .field { + padding: $gutter 0 0 $gutter; + width: calc(100% - #{$gutter * 1}); + + &.half { + width: calc(100% - #{$gutter * 1}); + } + + &.third { + width: calc(100% - #{$gutter * 1}); + } + + &.quarter { + width: calc(100% - #{$gutter * 1}); + } + } + } + } + } + + label { + display: block; + font-size: 0.9em; + font-weight: _font(weight-bold); + margin: 0 0 (_size(element-margin) * 0.5) 0; + } + + input[type="text"], + input[type="password"], + input[type="email"], + input[type="tel"], + select, + textarea { + @include vendor('appearance', 'none'); + background-color: transparent; + border: none; + border-radius: 0; + border-bottom: solid _size(border-width) _palette(border); + color: inherit; + display: block; + outline: 0; + padding: 0; + text-decoration: none; + width: 100%; + + &:invalid { + box-shadow: none; + } + + &:focus { + border-bottom-color: _palette(accent1); + box-shadow: inset 0 -1px 0 0 _palette(accent1); + } + } + + select { + background-image: svg-url(""); + background-size: 1.25rem; + background-repeat: no-repeat; + background-position: calc(100% - 1rem) center; + height: _size(element-height); + padding-right: _size(element-height); + text-overflow: ellipsis; + + option { + color: _palette(fg-bold); + background: _palette(bg); + } + + &:focus { + &::-ms-value { + background-color: transparent; + } + } + + &::-ms-expand { + display: none; + } + } + + input[type="text"], + input[type="password"], + input[type="email"], + select { + height: _size(element-height); + } + + textarea { + padding: 0; + min-height: (_size(element-height) * 1.25); + } + + input[type="checkbox"], + input[type="radio"], { + @include vendor('appearance', 'none'); + display: block; + float: left; + margin-right: -2em; + opacity: 0; + width: 1em; + z-index: -1; + + & + label { + @include icon(false, solid); + color: _palette(fg); + cursor: pointer; + display: inline-block; + font-size: 1em; + font-weight: _font(weight); + padding-left: (_size(element-height) * 0.6) + 0.75em; + padding-right: 0.75em; + position: relative; + + &:before { + border-radius: _size(border-radius); + border: solid _size(border-width) _palette(border); + content: ''; + display: inline-block; + font-size: 0.8em; + height: (_size(element-height) * 0.75); + left: 0; + line-height: (_size(element-height) * 0.75); + position: absolute; + text-align: center; + top: 0; + width: (_size(element-height) * 0.75); + } + } + + &:checked + label { + &:before { + background: _palette(fg); + border-color: _palette(fg); + color: _palette(bg); + content: '\f00c'; + } + } + + &:focus + label { + &:before { + border-color: _palette(accent1); + box-shadow: 0 0 0 _size(border-width) _palette(accent1); + } + } + } + + input[type="checkbox"] { + & + label { + &:before { + border-radius: _size(border-radius); + } + } + } + + input[type="radio"] { + & + label { + &:before { + border-radius: 100%; + } + } + } \ No newline at end of file diff --git a/archive/assets/sass/components/_icon.scss b/archive/assets/sass/components/_icon.scss new file mode 100755 index 0000000..8f9825b --- /dev/null +++ b/archive/assets/sass/components/_icon.scss @@ -0,0 +1,66 @@ +/// +/// Phantom by Pixelarity +/// pixelarity.com | hello@pixelarity.com +/// License: pixelarity.com/license +/// + +/* Icon */ + + .icon { + @include icon; + border-bottom: none; + position: relative; + + > .label { + display: none; + } + + &:before { + line-height: inherit; + } + + &.solid { + &:before { + font-weight: 900; + } + } + + &.brands { + &:before { + font-family: 'Font Awesome 5 Brands'; + } + } + + &.style1 { + } + + &.style2 { + @include vendor('transition', ( + 'background-color #{_duration(transition)} ease-in-out', + 'color #{_duration(transition)} ease-in-out', + 'border-color #{_duration(transition)} ease-in-out' + )); + background-color: transparent; + border: solid 1px _palette(border); + border-radius: _size(border-radius); + width: 2.65em; + height: 2.65em; + display: inline-block; + text-align: center; + line-height: 2.65em; + color: inherit; + + &:before { + font-size: 1.1em; + } + + &:hover { + color: _palette(accent1); + border-color: _palette(accent1); + } + + &:active { + background-color: transparentize(_palette(accent1), 0.9); + } + } + } \ No newline at end of file diff --git a/archive/assets/sass/components/_icons.scss b/archive/assets/sass/components/_icons.scss new file mode 100755 index 0000000..79bb686 --- /dev/null +++ b/archive/assets/sass/components/_icons.scss @@ -0,0 +1,19 @@ +/// +/// Phantom by Pixelarity +/// pixelarity.com | hello@pixelarity.com +/// License: pixelarity.com/license +/// + +/* Icons */ + + ul.icons { + cursor: default; + list-style: none; + padding-left: 0; + margin: -1em 0 _size(element-margin) -1em; + + li { + display: inline-block; + padding: 1em 0 0 1em; + } + } \ No newline at end of file diff --git a/archive/assets/sass/components/_image.scss b/archive/assets/sass/components/_image.scss new file mode 100755 index 0000000..9dacbda --- /dev/null +++ b/archive/assets/sass/components/_image.scss @@ -0,0 +1,64 @@ +/// +/// Phantom by Pixelarity +/// pixelarity.com | hello@pixelarity.com +/// License: pixelarity.com/license +/// + +/* Image */ + + .image { + border-radius: _size(border-radius); + border: 0; + display: inline-block; + position: relative; + + img { + border-radius: _size(border-radius); + display: block; + } + + &.left, + &.right { + max-width: 40%; + + img { + width: 100%; + } + } + + &.left { + float: left; + padding: 0 1.5em 1em 0; + top: 0.25em; + } + + &.right { + float: right; + padding: 0 0 1em 1.5em; + top: 0.25em; + } + + &.fit { + display: block; + margin: 0 0 _size(element-margin) 0; + width: 100%; + + img { + width: 100%; + } + } + + &.main { + display: block; + margin: 0 0 (_size(element-margin) * 1.5) 0; + width: 100%; + + img { + width: 100%; + } + + @include breakpoint('<=small') { + margin: 0 0 _size(element-margin) 0; + } + } + } \ No newline at end of file diff --git a/archive/assets/sass/components/_list.scss b/archive/assets/sass/components/_list.scss new file mode 100755 index 0000000..14cae37 --- /dev/null +++ b/archive/assets/sass/components/_list.scss @@ -0,0 +1,56 @@ +/// +/// Phantom by Pixelarity +/// pixelarity.com | hello@pixelarity.com +/// License: pixelarity.com/license +/// + +/* List */ + + ol { + list-style: decimal; + margin: 0 0 _size(element-margin) 0; + padding-left: 1.25em; + + li { + padding-left: 0.25em; + } + } + + ul { + list-style: disc; + margin: 0 0 _size(element-margin) 0; + padding-left: 1em; + + li { + padding-left: 0.5em; + } + + &.alt { + list-style: none; + padding-left: 0; + + li { + border-top: solid _size(border-width) _palette(border); + padding: 0.5em 0; + + &:first-child { + border-top: 0; + padding-top: 0; + } + } + } + } + + dl { + margin: 0 0 _size(element-margin) 0; + + dt { + display: block; + font-weight: _font(weight-bold); + margin: 0 0 (_size(element-margin) * 0.5) 0; + } + + dd { + margin-left: _size(element-margin); + } + } \ No newline at end of file diff --git a/archive/assets/sass/components/_row.scss b/archive/assets/sass/components/_row.scss new file mode 100755 index 0000000..b4b1c95 --- /dev/null +++ b/archive/assets/sass/components/_row.scss @@ -0,0 +1,31 @@ +/// +/// Phantom by Pixelarity +/// pixelarity.com | hello@pixelarity.com +/// License: pixelarity.com/license +/// + +/* Row */ + + .row { + @include html-grid(2em); + + @include breakpoint('<=xlarge') { + @include html-grid(2em, 'xlarge'); + } + + @include breakpoint('<=large') { + @include html-grid(2em, 'large'); + } + + @include breakpoint('<=medium') { + @include html-grid(1.5em, 'medium'); + } + + @include breakpoint('<=small') { + @include html-grid(1em, 'small'); + } + + @include breakpoint('<=xsmall') { + @include html-grid(1em, 'xsmall'); + } + } \ No newline at end of file diff --git a/archive/assets/sass/components/_section.scss b/archive/assets/sass/components/_section.scss new file mode 100755 index 0000000..dc0ff2f --- /dev/null +++ b/archive/assets/sass/components/_section.scss @@ -0,0 +1,25 @@ +/// +/// Phantom by Pixelarity +/// pixelarity.com | hello@pixelarity.com +/// License: pixelarity.com/license +/// + +/* Section/Article */ + + section, article { + &.special { + text-align: center; + } + } + + header { + p { + margin-top: _size(element-margin) * -0.5; + } + + @include breakpoint('<=small') { + p { + margin-top: 0; + } + } + } \ No newline at end of file diff --git a/archive/assets/sass/components/_table.scss b/archive/assets/sass/components/_table.scss new file mode 100755 index 0000000..76d5b2d --- /dev/null +++ b/archive/assets/sass/components/_table.scss @@ -0,0 +1,81 @@ +/// +/// Phantom by Pixelarity +/// pixelarity.com | hello@pixelarity.com +/// License: pixelarity.com/license +/// + +/* Table */ + + .table-wrapper { + -webkit-overflow-scrolling: touch; + overflow-x: auto; + } + + table { + margin: 0 0 _size(element-margin) 0; + width: 100%; + + tbody { + tr { + border: solid _size(border-width) _palette(border); + border-left: 0; + border-right: 0; + + &:nth-child(2n + 1) { + background-color: _palette(border-bg); + } + } + } + + td { + padding: 0.75em 0.75em; + } + + th { + color: _palette(fg-bold); + font-size: 0.9em; + font-weight: _font(weight-bold); + padding: 0 0.75em 0.75em 0.75em; + text-align: left; + } + + thead { + border-bottom: solid (_size(border-width) * 2) _palette(border); + } + + tfoot { + border-top: solid (_size(border-width) * 2) _palette(border); + } + + &.alt { + border-collapse: separate; + + tbody { + tr { + td { + border: solid _size(border-width) _palette(border); + border-left-width: 0; + border-top-width: 0; + + &:first-child { + border-left-width: _size(border-width); + } + } + + &:first-child { + td { + border-top-width: _size(border-width); + } + } + } + } + + thead { + border-bottom: 0; + } + + tfoot { + border-top: 0; + } + } + } \ No newline at end of file diff --git a/archive/assets/sass/components/_tiles.scss b/archive/assets/sass/components/_tiles.scss new file mode 100755 index 0000000..642df03 --- /dev/null +++ b/archive/assets/sass/components/_tiles.scss @@ -0,0 +1,258 @@ +/// +/// Phantom by Pixelarity +/// pixelarity.com | hello@pixelarity.com +/// License: pixelarity.com/license +/// + +/* Tiles */ + + .tiles { + $gutter: _size(gutter); + $duration: 0.5s; + $ease: 'ease'; + + @include vendor('display', 'flex'); + @include vendor('flex-wrap', 'wrap'); + postiion: relative; + margin: ($gutter * -1) 0 0 ($gutter * -1); + + article { + @include vendor('transition', ( + 'transform #{$duration} #{$ease}', + 'opacity #{$duration} #{$ease}' + )); + position: relative; + width: calc(#{(100% / 3)} - #{$gutter * 1}); + margin: $gutter 0 0 $gutter; + + > .image { + @include vendor('transition', 'transform #{$duration} #{$ease}'); + position: relative; + display: block; + width: 100%; + border-radius: _size(border-radius); + overflow: hidden; + + img { + display: block; + width: 100%; + } + + &:before { + @include vendor('pointer-events', 'none'); + @include vendor('transition', ( + 'background-color #{$duration} #{$ease}', + 'opacity #{$duration} #{$ease}' + )); + content: ''; + display: block; + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + opacity: 1.0; + z-index: 1; + opacity: 0.8; + } + + &:after { + @include vendor('pointer-events', 'none'); + @include vendor('transition', 'opacity #{$duration} #{$ease}'); + content: ''; + display: block; + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + background-image: svg-url(''); + background-position: center; + background-repeat: no-repeat; + background-size: 100% 100%; + opacity: 0.25; + z-index: 2; + } + } + + > a { + @include vendor('display', 'flex'); + @include vendor('flex-direction', 'column'); + @include vendor('align-items', 'center'); + @include vendor('justify-content', 'center'); + @include vendor('transition', ( + 'background-color #{$duration} #{$ease}', + 'transform #{$duration} #{$ease}' + )); + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + padding: 1em; + border-radius: _size(border-radius); + border-bottom: 0; + color: _palette(fg-accent); + text-align: center; + text-decoration: none; + z-index: 3; + + > :last-child { + margin: 0; + } + + &:hover { + color: _palette(fg-accent) !important; + } + + h2 { + margin: 0; + } + + .content { + @include vendor('transition', ( + 'max-height #{$duration} #{$ease}', + 'opacity #{$duration} #{$ease}' + )); + width: 100%; + max-height: 0; + line-height: 1.5; + margin-top: 0.35em; + opacity: 0; + + > :last-child { + margin-bottom: 0; + } + } + } + + &.style1 { + > .image:before { + background-color: _palette(accent1); + } + } + + &.style2 { + > .image:before { + background-color: _palette(accent2); + } + } + + &.style3 { + > .image:before { + background-color: _palette(accent3); + } + } + + &.style4 { + > .image:before { + background-color: _palette(accent4); + } + } + + &.style5 { + > .image:before { + background-color: _palette(accent5); + } + } + + &.style6 { + > .image:before { + background-color: _palette(accent6); + } + } + + body:not(.is-touch) & { + &:hover { + > .image { + @include vendor('transform', 'scale(1.1)'); + + &:before { + background-color: _palette(bg-accent); + opacity: 0.35; + } + + &:after { + opacity: 0; + } + } + + .content { + max-height: 15em; + opacity: 1; + } + } + } + } + + * + & { + margin-top: _size(element-margin); + } + + body.is-preload & { + article { + @include vendor('transform', 'scale(0.9)'); + opacity: 0; + } + } + + body.is-touch & { + article { + .content { + max-height: 15em; + opacity: 1; + } + } + } + + @include breakpoint('<=large') { + $gutter: _size(gutter) * 0.5; + + margin: ($gutter * -1) 0 0 ($gutter * -1); + + article { + width: calc(#{(100% / 3)} - #{$gutter * 1}); + margin: $gutter 0 0 $gutter; + } + } + + @include breakpoint('<=medium') { + $gutter: _size(gutter); + + margin: ($gutter * -1) 0 0 ($gutter * -1); + + article { + width: calc(#{(100% / 2)} - #{$gutter * 1}); + margin: $gutter 0 0 $gutter; + } + } + + @include breakpoint('<=small') { + $gutter: _size(gutter) * 0.5; + + margin: ($gutter * -1) 0 0 ($gutter * -1); + + article { + width: calc(#{(100% / 2)} - #{$gutter * 1}); + margin: $gutter 0 0 $gutter; + + &:hover { + > .image { + @include vendor('transform', 'scale(1.0)'); + } + } + } + } + + @include breakpoint('<=xsmall') { + $gutter: _size(gutter) * 0.5; + + margin: 0; + + article { + width: 100%; + margin: $gutter 0 0 0; + } + } + } + diff --git a/archive/assets/sass/layout/_footer.scss b/archive/assets/sass/layout/_footer.scss new file mode 100755 index 0000000..7fd7679 --- /dev/null +++ b/archive/assets/sass/layout/_footer.scss @@ -0,0 +1,139 @@ +/// +/// Phantom by Pixelarity +/// pixelarity.com | hello@pixelarity.com +/// License: pixelarity.com/license +/// + +/* Footer */ + + #footer { + $gutter: _size(gutter); + + @include padding(5em, 0, (0, 0, 3em, 0)); + background-color: _palette(bg-alt); + + > .inner { + @include vendor('display', 'flex'); + @include vendor('flex-wrap', 'wrap'); + @include vendor('flex-direction', 'row'); + + > * > :last-child { + margin-bottom: 0; + } + + section:nth-child(1) { + width: calc(66% - #{$gutter}); + margin-right: $gutter; + } + + section:nth-child(2) { + width: calc(33% - #{$gutter}); + margin-left: $gutter; + } + + .copyright { + width: 100%; + padding: 0; + margin-top: 5em; + list-style: none; + font-size: 0.8em; + color: transparentize(_palette(fg), 0.5); + + a { + color: inherit; + } + + li { + display: inline-block; + border-left: solid 1px transparentize(_palette(fg), 0.85); + line-height: 1; + padding: 0 0 0 1em; + margin: 0 0 0 1em; + + &:first-child { + border-left: 0; + padding-left: 0; + margin-left: 0; + } + } + } + } + + @include breakpoint('<=large') { + $gutter: _size(gutter) * 0.5; + + @include padding(5em, 0); + + > .inner { + section:nth-child(1) { + width: calc(66% - #{$gutter}); + margin-right: $gutter; + } + + section:nth-child(2) { + width: calc(33% - #{$gutter}); + margin-left: $gutter; + } + } + } + + @include breakpoint('<=medium') { + $gutter: _size(gutter); + + > .inner { + section:nth-child(1) { + width: 66%; + margin-right: 0; + } + + section:nth-child(2) { + width: calc(33% - #{$gutter}); + margin-left: $gutter; + } + } + } + + @include breakpoint('<=small') { + @include padding(3em, 0); + + > .inner { + @include vendor('flex-direction', 'column'); + + section:nth-child(1) { + width: 100%; + margin-right: 0; + margin: 3em 0 0 0; + } + + section:nth-child(2) { + @include vendor('order', '-1'); + width: 100%; + margin-left: 0; + } + + .copyright { + margin-top: 3em; + } + } + } + + @include breakpoint('<=xsmall') { + > .inner { + .copyright { + margin-top: 3em; + + li { + border-left: 0; + padding-left: 0; + margin: 0.75em 0 0 0; + display: block; + line-height: inherit; + + &:first-child { + margin-top: 0; + } + } + } + } + } + } \ No newline at end of file diff --git a/archive/assets/sass/layout/_header.scss b/archive/assets/sass/layout/_header.scss new file mode 100755 index 0000000..a608782 --- /dev/null +++ b/archive/assets/sass/layout/_header.scss @@ -0,0 +1,136 @@ +/// +/// Phantom by Pixelarity +/// pixelarity.com | hello@pixelarity.com +/// License: pixelarity.com/license +/// + +/* Header */ + + #header { + @include padding(5em, 0, (3em, 0, -5em, 0)); + + .logo { + display: block; + border-bottom: 0; + color: inherit; + font-weight: _font(weight-bold); + letter-spacing: _font(letter-spacing); + margin: 0 0 (_size(element-margin) * 1.25) 0; + text-decoration: none; + text-transform: uppercase; + display: inline-block; + + > * { + display: inline-block; + vertical-align: middle; + } + + .symbol { + margin-right: 0.65em; + + img { + display: block; + width: 2em; + height: 2em; + } + } + } + + nav { + position: fixed; + right: 2em; + top: 2em; + z-index: _misc(z-index-base); + + ul { + @include vendor('display', 'flex'); + @include vendor('align-items', 'center'); + list-style: none; + margin: 0; + padding: 0; + + li { + display: block; + padding: 0; + + a { + display: block; + position: relative; + height: 3em; + line-height: 3em; + padding: 0 1.5em; + background-color: transparentize(_palette(bg), 0.5); + border-radius: _size(border-radius); + border: 0; + font-size: 0.8em; + font-weight: _font(weight-bold); + letter-spacing: _font(letter-spacing); + text-transform: uppercase; + } + + a[href="#menu"] { + -webkit-tap-highlight-color: transparent; + width: 4em; + text-indent: 4em; + font-size: 1em; + overflow: hidden; + padding: 0; + white-space: nowrap; + + &:before, &:after { + @include vendor('transition', 'opacity #{_duration(transition)} ease'); + content: ''; + display: block; + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + background-position: center; + background-repeat: no-repeat; + background-size: 2em 2em; + } + + &:before { + background-image: svg-url(''); + opacity: 0; + } + + &:after { + background-image: svg-url(''); + opacity: 1; + } + + &:hover { + &:before { + opacity: 1; + } + + &:after { + opacity: 0; + } + } + } + } + } + } + + @include breakpoint('<=small') { + @include padding(3em, 0, (1em, 0, -3em, 0)); + + nav { + right: 0.5em; + top: 0.5em; + + ul { + li { + a[href="#menu"] { + &:before, &:after { + background-size: 1.5em 1.5em; + } + } + } + } + } + } + } \ No newline at end of file diff --git a/archive/assets/sass/layout/_main.scss b/archive/assets/sass/layout/_main.scss new file mode 100755 index 0000000..d296fab --- /dev/null +++ b/archive/assets/sass/layout/_main.scss @@ -0,0 +1,15 @@ +/// +/// Phantom by Pixelarity +/// pixelarity.com | hello@pixelarity.com +/// License: pixelarity.com/license +/// + +/* Main */ + + #main { + @include padding(5em, 0, (-5em, 0, 3em, 0)); + + @include breakpoint('<=small') { + @include padding(3em, 0, (-3em, 0, 3em, 0)); + } + } \ No newline at end of file diff --git a/archive/assets/sass/layout/_menu.scss b/archive/assets/sass/layout/_menu.scss new file mode 100755 index 0000000..997547a --- /dev/null +++ b/archive/assets/sass/layout/_menu.scss @@ -0,0 +1,164 @@ +/// +/// Phantom by Pixelarity +/// pixelarity.com | hello@pixelarity.com +/// License: pixelarity.com/license +/// + +/* Menu */ + + #wrapper { + @include vendor('transition', 'opacity #{_duration(menu)} ease'); + opacity: 1; + } + + #menu { + @include vendor('transform', 'translateX(#{_size(menu)})'); + @include vendor('transition', ('transform #{_duration(menu)} ease', 'visibility #{_duration(menu)}')); + position: fixed; + top: 0; + right: 0; + width: _size(menu); + max-width: 80%; + height: 100%; + -webkit-overflow-scrolling: touch; + background: _palette(fg); + color: _palette(bg); + cursor: default; + visibility: hidden; + z-index: _misc(z-index-base) + 2; + + > .inner { + @include vendor('transition', 'opacity #{_duration(menu)} ease'); + -webkit-overflow-scrolling: touch; + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + padding: 2.75em; + opacity: 0; + overflow-y: auto; + + > ul { + list-style: none; + margin: 0 0 (_size(element-margin) * 0.5) 0; + padding: 0; + + > li { + padding: 0; + border-top: solid 1px transparentize(_palette(bg), 0.85); + + a { + display: block; + padding: 1em 0; + line-height: 1.5; + border: 0; + color: inherit; + } + + &:first-child { + border-top: 0; + margin-top: -1em; + } + } + } + } + + > .close { + @include vendor('transition', ( + 'opacity #{_duration(menu)} ease', + 'transform #{_duration(menu)} ease' + )); + @include vendor('transform', 'scale(0.25) rotate(180deg)'); + -webkit-tap-highlight-color: transparent; + display: block; + position: absolute; + top: 2em; + left: -6em; + width: 6em; + text-indent: 6em; + height: 3em; + border: 0; + font-size: 1em; + opacity: 0; + overflow: hidden; + padding: 0; + white-space: nowrap; + + &:before, &:after { + @include vendor('transition', 'opacity #{_duration(transition)} ease'); + content: ''; + display: block; + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + background-position: center; + background-repeat: no-repeat; + background-size: 2em 2em; + } + + &:before { + background-image: svg-url(''); + opacity: 0; + } + + &:after { + background-image: svg-url(''); + opacity: 1; + } + + &:hover { + &:before { + opacity: 1; + } + + &:after { + opacity: 0; + } + } + } + + @include breakpoint('<=small') { + @include vendor('transform', 'translateX(#{_size(menu) * 0.75})'); + width: (_size(menu) * 0.75); + + > .inner { + padding: 2.75em 1.5em; + } + + > .close { + top: 0.5em; + left: -4.25em; + width: 4.25em; + text-indent: 4.25em; + + &:before, &:after { + background-size: 1.5em 1.5em; + } + } + } + } + + body.is-menu-visible { + #wrapper { + @include vendor('pointer-events', 'none'); + cursor: default; + opacity: 0.25; + } + + #menu { + @include vendor('transform', 'translateX(0)'); + visibility: visible; + + > * { + opacity: 1; + } + + .close { + @include vendor('transform', 'scale(1.0) rotate(0deg)'); + opacity: 1; + } + } + } \ No newline at end of file diff --git a/archive/assets/sass/layout/_wrapper.scss b/archive/assets/sass/layout/_wrapper.scss new file mode 100755 index 0000000..223d760 --- /dev/null +++ b/archive/assets/sass/layout/_wrapper.scss @@ -0,0 +1,26 @@ +/// +/// Phantom by Pixelarity +/// pixelarity.com | hello@pixelarity.com +/// License: pixelarity.com/license +/// + +/* Wrapper */ + + #wrapper { + > * { + > .inner { + $gutter: _size(gutter); + + width: 100%; + max-width: _size(inner); + margin: 0 auto; + padding: 0 $gutter; + + @include breakpoint('<=small') { + $gutter: _size(gutter) * 0.5; + + padding: 0 $gutter; + } + } + } + } \ No newline at end of file diff --git a/archive/assets/sass/libs/_breakpoints.scss b/archive/assets/sass/libs/_breakpoints.scss new file mode 100755 index 0000000..c5301d8 --- /dev/null +++ b/archive/assets/sass/libs/_breakpoints.scss @@ -0,0 +1,223 @@ +// breakpoints.scss v1.0 | @ajlkn | MIT licensed */ + +// Vars. + + /// Breakpoints. + /// @var {list} + $breakpoints: () !global; + +// Mixins. + + /// Sets breakpoints. + /// @param {map} $x Breakpoints. + @mixin breakpoints($x: ()) { + $breakpoints: $x !global; + } + + /// Wraps @content in a @media block targeting a specific orientation. + /// @param {string} $orientation Orientation. + @mixin orientation($orientation) { + @media screen and (orientation: #{$orientation}) { + @content; + } + } + + /// Wraps @content in a @media block using a given query. + /// @param {string} $query Query. + @mixin breakpoint($query: null) { + + $breakpoint: null; + $op: null; + $media: null; + + // Determine operator, breakpoint. + + // Greater than or equal. + @if (str-slice($query, 0, 2) == '>=') { + + $op: 'gte'; + $breakpoint: str-slice($query, 3); + + } + + // Less than or equal. + @elseif (str-slice($query, 0, 2) == '<=') { + + $op: 'lte'; + $breakpoint: str-slice($query, 3); + + } + + // Greater than. + @elseif (str-slice($query, 0, 1) == '>') { + + $op: 'gt'; + $breakpoint: str-slice($query, 2); + + } + + // Less than. + @elseif (str-slice($query, 0, 1) == '<') { + + $op: 'lt'; + $breakpoint: str-slice($query, 2); + + } + + // Not. + @elseif (str-slice($query, 0, 1) == '!') { + + $op: 'not'; + $breakpoint: str-slice($query, 2); + + } + + // Equal. + @else { + + $op: 'eq'; + $breakpoint: $query; + + } + + // Build media. + @if ($breakpoint and map-has-key($breakpoints, $breakpoint)) { + + $a: map-get($breakpoints, $breakpoint); + + // Range. + @if (type-of($a) == 'list') { + + $x: nth($a, 1); + $y: nth($a, 2); + + // Max only. + @if ($x == null) { + + // Greater than or equal (>= 0 / anything) + @if ($op == 'gte') { + $media: 'screen'; + } + + // Less than or equal (<= y) + @elseif ($op == 'lte') { + $media: 'screen and (max-width: ' + $y + ')'; + } + + // Greater than (> y) + @elseif ($op == 'gt') { + $media: 'screen and (min-width: ' + ($y + 1) + ')'; + } + + // Less than (< 0 / invalid) + @elseif ($op == 'lt') { + $media: 'screen and (max-width: -1px)'; + } + + // Not (> y) + @elseif ($op == 'not') { + $media: 'screen and (min-width: ' + ($y + 1) + ')'; + } + + // Equal (<= y) + @else { + $media: 'screen and (max-width: ' + $y + ')'; + } + + } + + // Min only. + @else if ($y == null) { + + // Greater than or equal (>= x) + @if ($op == 'gte') { + $media: 'screen and (min-width: ' + $x + ')'; + } + + // Less than or equal (<= inf / anything) + @elseif ($op == 'lte') { + $media: 'screen'; + } + + // Greater than (> inf / invalid) + @elseif ($op == 'gt') { + $media: 'screen and (max-width: -1px)'; + } + + // Less than (< x) + @elseif ($op == 'lt') { + $media: 'screen and (max-width: ' + ($x - 1) + ')'; + } + + // Not (< x) + @elseif ($op == 'not') { + $media: 'screen and (max-width: ' + ($x - 1) + ')'; + } + + // Equal (>= x) + @else { + $media: 'screen and (min-width: ' + $x + ')'; + } + + } + + // Min and max. + @else { + + // Greater than or equal (>= x) + @if ($op == 'gte') { + $media: 'screen and (min-width: ' + $x + ')'; + } + + // Less than or equal (<= y) + @elseif ($op == 'lte') { + $media: 'screen and (max-width: ' + $y + ')'; + } + + // Greater than (> y) + @elseif ($op == 'gt') { + $media: 'screen and (min-width: ' + ($y + 1) + ')'; + } + + // Less than (< x) + @elseif ($op == 'lt') { + $media: 'screen and (max-width: ' + ($x - 1) + ')'; + } + + // Not (< x and > y) + @elseif ($op == 'not') { + $media: 'screen and (max-width: ' + ($x - 1) + '), screen and (min-width: ' + ($y + 1) + ')'; + } + + // Equal (>= x and <= y) + @else { + $media: 'screen and (min-width: ' + $x + ') and (max-width: ' + $y + ')'; + } + + } + + } + + // String. + @else { + + // Missing a media type? Prefix with "screen". + @if (str-slice($a, 0, 1) == '(') { + $media: 'screen and ' + $a; + } + + // Otherwise, use as-is. + @else { + $media: $a; + } + + } + + } + + // Output. + @media #{$media} { + @content; + } + + } \ No newline at end of file diff --git a/archive/assets/sass/libs/_functions.scss b/archive/assets/sass/libs/_functions.scss new file mode 100755 index 0000000..f563aab --- /dev/null +++ b/archive/assets/sass/libs/_functions.scss @@ -0,0 +1,90 @@ +/// Removes a specific item from a list. +/// @author Hugo Giraudel +/// @param {list} $list List. +/// @param {integer} $index Index. +/// @return {list} Updated list. +@function remove-nth($list, $index) { + + $result: null; + + @if type-of($index) != number { + @warn "$index: #{quote($index)} is not a number for `remove-nth`."; + } + @else if $index == 0 { + @warn "List index 0 must be a non-zero integer for `remove-nth`."; + } + @else if abs($index) > length($list) { + @warn "List index is #{$index} but list is only #{length($list)} item long for `remove-nth`."; + } + @else { + + $result: (); + $index: if($index < 0, length($list) + $index + 1, $index); + + @for $i from 1 through length($list) { + + @if $i != $index { + $result: append($result, nth($list, $i)); + } + + } + + } + + @return $result; + +} + +/// Gets a value from a map. +/// @author Hugo Giraudel +/// @param {map} $map Map. +/// @param {string} $keys Key(s). +/// @return {string} Value. +@function val($map, $keys...) { + + @if nth($keys, 1) == null { + $keys: remove-nth($keys, 1); + } + + @each $key in $keys { + $map: map-get($map, $key); + } + + @return $map; + +} + +/// Gets a duration value. +/// @param {string} $keys Key(s). +/// @return {string} Value. +@function _duration($keys...) { + @return val($duration, $keys...); +} + +/// Gets a font value. +/// @param {string} $keys Key(s). +/// @return {string} Value. +@function _font($keys...) { + @return val($font, $keys...); +} + +/// Gets a misc value. +/// @param {string} $keys Key(s). +/// @return {string} Value. +@function _misc($keys...) { + @return val($misc, $keys...); +} + +/// Gets a palette value. +/// @param {string} $keys Key(s). +/// @return {string} Value. +@function _palette($keys...) { + @return val($palette, $keys...); +} + +/// Gets a size value. +/// @param {string} $keys Key(s). +/// @return {string} Value. +@function _size($keys...) { + @return val($size, $keys...); +} \ No newline at end of file diff --git a/archive/assets/sass/libs/_html-grid.scss b/archive/assets/sass/libs/_html-grid.scss new file mode 100755 index 0000000..7438a8c --- /dev/null +++ b/archive/assets/sass/libs/_html-grid.scss @@ -0,0 +1,149 @@ +// html-grid.scss v1.0 | @ajlkn | MIT licensed */ + +// Mixins. + + /// Initializes the current element as an HTML grid. + /// @param {mixed} $gutters Gutters (either a single number to set both column/row gutters, or a list to set them individually). + /// @param {mixed} $suffix Column class suffix (optional; either a single suffix or a list). + @mixin html-grid($gutters: 1.5em, $suffix: '') { + + // Initialize. + $cols: 12; + $multipliers: 0, 0.25, 0.5, 1, 1.50, 2.00; + $unit: 100% / $cols; + + // Suffixes. + $suffixes: null; + + @if (type-of($suffix) == 'list') { + $suffixes: $suffix; + } + @else { + $suffixes: ($suffix); + } + + // Gutters. + $guttersCols: null; + $guttersRows: null; + + @if (type-of($gutters) == 'list') { + + $guttersCols: nth($gutters, 1); + $guttersRows: nth($gutters, 2); + + } + @else { + + $guttersCols: $gutters; + $guttersRows: 0; + + } + + // Row. + display: flex; + flex-wrap: wrap; + box-sizing: border-box; + align-items: stretch; + + // Columns. + > * { + box-sizing: border-box; + } + + // Gutters. + &.gtr-uniform { + > * { + > :last-child { + margin-bottom: 0; + } + } + } + + // Alignment. + &.aln-left { + justify-content: flex-start; + } + + &.aln-center { + justify-content: center; + } + + &.aln-right { + justify-content: flex-end; + } + + &.aln-top { + align-items: flex-start; + } + + &.aln-middle { + align-items: center; + } + + &.aln-bottom { + align-items: flex-end; + } + + // Step through suffixes. + @each $suffix in $suffixes { + + // Suffix. + @if ($suffix != '') { + $suffix: '-' + $suffix; + } + @else { + $suffix: ''; + } + + // Row. + + // Important. + > .imp#{$suffix} { + order: -1; + } + + // Columns, offsets. + @for $i from 1 through $cols { + > .col-#{$i}#{$suffix} { + width: $unit * $i; + } + + > .off-#{$i}#{$suffix} { + margin-left: $unit * $i; + } + } + + // Step through multipliers. + @each $multiplier in $multipliers { + + // Gutters. + $class: null; + + @if ($multiplier != 1) { + $class: '.gtr-' + ($multiplier * 100); + } + + &#{$class} { + margin-top: ($guttersRows * $multiplier * -1); + margin-left: ($guttersCols * $multiplier * -1); + + > * { + padding: ($guttersRows * $multiplier) 0 0 ($guttersCols * $multiplier); + } + + // Uniform. + &.gtr-uniform { + margin-top: $guttersCols * $multiplier * -1; + + > * { + padding-top: $guttersCols * $multiplier; + } + } + + } + + } + + } + + } \ No newline at end of file diff --git a/archive/assets/sass/libs/_mixins.scss b/archive/assets/sass/libs/_mixins.scss new file mode 100755 index 0000000..a331483 --- /dev/null +++ b/archive/assets/sass/libs/_mixins.scss @@ -0,0 +1,78 @@ +/// Makes an element's :before pseudoelement a FontAwesome icon. +/// @param {string} $content Optional content value to use. +/// @param {string} $category Optional category to use. +/// @param {string} $where Optional pseudoelement to target (before or after). +@mixin icon($content: false, $category: regular, $where: before) { + + text-decoration: none; + + &:#{$where} { + + @if $content { + content: $content; + } + + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + display: inline-block; + font-style: normal; + font-variant: normal; + text-rendering: auto; + line-height: 1; + text-transform: none !important; + + @if ($category == brands) { + font-family: 'Font Awesome 5 Brands'; + } + @elseif ($category == solid) { + font-family: 'Font Awesome 5 Free'; + font-weight: 900; + } + @else { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; + } + + } + +} + +/// Applies padding to an element, taking the current element-margin value into account. +/// @param {mixed} $tb Top/bottom padding. +/// @param {mixed} $lr Left/right padding. +/// @param {list} $pad Optional extra padding (in the following order top, right, bottom, left) +/// @param {bool} $important If true, adds !important. +@mixin padding($tb, $lr, $pad: (0,0,0,0), $important: null) { + + @if $important { + $important: '!important'; + } + + $x: 0.1em; + + @if unit(_size(element-margin)) == 'rem' { + $x: 0.1rem; + } + + padding: ($tb + nth($pad,1)) ($lr + nth($pad,2)) max($x, $tb - _size(element-margin) + nth($pad,3)) ($lr + nth($pad,4)) #{$important}; + +} + +/// Encodes a SVG data URL so IE doesn't choke (via codepen.io/jakob-e/pen/YXXBrp). +/// @param {string} $svg SVG data URL. +/// @return {string} Encoded SVG data URL. +@function svg-url($svg) { + + $svg: str-replace($svg, '"', '\''); + $svg: str-replace($svg, '%', '%25'); + $svg: str-replace($svg, '<', '%3C'); + $svg: str-replace($svg, '>', '%3E'); + $svg: str-replace($svg, '&', '%26'); + $svg: str-replace($svg, '#', '%23'); + $svg: str-replace($svg, '{', '%7B'); + $svg: str-replace($svg, '}', '%7D'); + $svg: str-replace($svg, ';', '%3B'); + + @return url("data:image/svg+xml;charset=utf8,#{$svg}"); + +} \ No newline at end of file diff --git a/archive/assets/sass/libs/_vars.scss b/archive/assets/sass/libs/_vars.scss new file mode 100755 index 0000000..9cea5e9 --- /dev/null +++ b/archive/assets/sass/libs/_vars.scss @@ -0,0 +1,50 @@ +// Misc. + $misc: ( + z-index-base: 10000 + ); + +// Duration. + $duration: ( + menu: 0.45s, + transition: 0.2s + ); + +// Size. + $size: ( + border-radius: 4px, + border-width: 1px, + element-height: 3em, + element-margin: 2em, + gutter: 2.5em, + field-gutter: 2em, + inner: 68em, + menu: 22em + ); + +// Font. + $font: ( + family: ('Source Sans Pro', Helvetica, sans-serif), + family-fixed: ('Courier New', monospace), + weight: 300, + weight-bold: 900, + weight-bold-alt: 700, + letter-spacing: 0.35em, + letter-spacing-alt: -0.035em + ); + +// Palette. + $palette: ( + bg: #ffffff, + bg-accent: #333333, + bg-alt: #f6f6f6, + fg: #585858, + fg-accent: #ffffff, + border: #c9c9c9, + border-bg: rgba(144,144,144,0.075), + accent1: #f2849e, + accent2: #7ecaf6, + accent3: #7bd0c1, + accent4: #c75b9b, + accent5: #ae85ca, + accent6: #8499e7, + ); \ No newline at end of file diff --git a/archive/assets/sass/libs/_vendor.scss b/archive/assets/sass/libs/_vendor.scss new file mode 100755 index 0000000..6599a3f --- /dev/null +++ b/archive/assets/sass/libs/_vendor.scss @@ -0,0 +1,376 @@ +// vendor.scss v1.0 | @ajlkn | MIT licensed */ + +// Vars. + + /// Vendor prefixes. + /// @var {list} + $vendor-prefixes: ( + '-moz-', + '-webkit-', + '-ms-', + '' + ); + + /// Properties that should be vendorized. + /// Data via caniuse.com, github.com/postcss/autoprefixer, and developer.mozilla.org + /// @var {list} + $vendor-properties: ( + + // Animation. + 'animation', + 'animation-delay', + 'animation-direction', + 'animation-duration', + 'animation-fill-mode', + 'animation-iteration-count', + 'animation-name', + 'animation-play-state', + 'animation-timing-function', + + // Appearance. + 'appearance', + + // Backdrop filter. + 'backdrop-filter', + + // Background image options. + 'background-clip', + 'background-origin', + 'background-size', + + // Box sizing. + 'box-sizing', + + // Clip path. + 'clip-path', + + // Filter effects. + 'filter', + + // Flexbox. + 'align-content', + 'align-items', + 'align-self', + 'flex', + 'flex-basis', + 'flex-direction', + 'flex-flow', + 'flex-grow', + 'flex-shrink', + 'flex-wrap', + 'justify-content', + 'order', + + // Font feature. + 'font-feature-settings', + 'font-language-override', + 'font-variant-ligatures', + + // Font kerning. + 'font-kerning', + + // Fragmented borders and backgrounds. + 'box-decoration-break', + + // Grid layout. + 'grid-column', + 'grid-column-align', + 'grid-column-end', + 'grid-column-start', + 'grid-row', + 'grid-row-align', + 'grid-row-end', + 'grid-row-start', + 'grid-template-columns', + 'grid-template-rows', + + // Hyphens. + 'hyphens', + 'word-break', + + // Masks. + 'mask', + 'mask-border', + 'mask-border-outset', + 'mask-border-repeat', + 'mask-border-slice', + 'mask-border-source', + 'mask-border-width', + 'mask-clip', + 'mask-composite', + 'mask-image', + 'mask-origin', + 'mask-position', + 'mask-repeat', + 'mask-size', + + // Multicolumn. + 'break-after', + 'break-before', + 'break-inside', + 'column-count', + 'column-fill', + 'column-gap', + 'column-rule', + 'column-rule-color', + 'column-rule-style', + 'column-rule-width', + 'column-span', + 'column-width', + 'columns', + + // Object fit. + 'object-fit', + 'object-position', + + // Regions. + 'flow-from', + 'flow-into', + 'region-fragment', + + // Scroll snap points. + 'scroll-snap-coordinate', + 'scroll-snap-destination', + 'scroll-snap-points-x', + 'scroll-snap-points-y', + 'scroll-snap-type', + + // Shapes. + 'shape-image-threshold', + 'shape-margin', + 'shape-outside', + + // Tab size. + 'tab-size', + + // Text align last. + 'text-align-last', + + // Text decoration. + 'text-decoration-color', + 'text-decoration-line', + 'text-decoration-skip', + 'text-decoration-style', + + // Text emphasis. + 'text-emphasis', + 'text-emphasis-color', + 'text-emphasis-position', + 'text-emphasis-style', + + // Text size adjust. + 'text-size-adjust', + + // Text spacing. + 'text-spacing', + + // Transform. + 'transform', + 'transform-origin', + + // Transform 3D. + 'backface-visibility', + 'perspective', + 'perspective-origin', + 'transform-style', + + // Transition. + 'transition', + 'transition-delay', + 'transition-duration', + 'transition-property', + 'transition-timing-function', + + // Unicode bidi. + 'unicode-bidi', + + // User select. + 'user-select', + + // Writing mode. + 'writing-mode', + + ); + + /// Values that should be vendorized. + /// Data via caniuse.com, github.com/postcss/autoprefixer, and developer.mozilla.org + /// @var {list} + $vendor-values: ( + + // Cross fade. + 'cross-fade', + + // Element function. + 'element', + + // Filter function. + 'filter', + + // Flexbox. + 'flex', + 'inline-flex', + + // Grab cursors. + 'grab', + 'grabbing', + + // Gradients. + 'linear-gradient', + 'repeating-linear-gradient', + 'radial-gradient', + 'repeating-radial-gradient', + + // Grid layout. + 'grid', + 'inline-grid', + + // Image set. + 'image-set', + + // Intrinsic width. + 'max-content', + 'min-content', + 'fit-content', + 'fill', + 'fill-available', + 'stretch', + + // Sticky position. + 'sticky', + + // Transform. + 'transform', + + // Zoom cursors. + 'zoom-in', + 'zoom-out', + + ); + +// Functions. + + /// Removes a specific item from a list. + /// @author Hugo Giraudel + /// @param {list} $list List. + /// @param {integer} $index Index. + /// @return {list} Updated list. + @function remove-nth($list, $index) { + + $result: null; + + @if type-of($index) != number { + @warn "$index: #{quote($index)} is not a number for `remove-nth`."; + } + @else if $index == 0 { + @warn "List index 0 must be a non-zero integer for `remove-nth`."; + } + @else if abs($index) > length($list) { + @warn "List index is #{$index} but list is only #{length($list)} item long for `remove-nth`."; + } + @else { + + $result: (); + $index: if($index < 0, length($list) + $index + 1, $index); + + @for $i from 1 through length($list) { + + @if $i != $index { + $result: append($result, nth($list, $i)); + } + + } + + } + + @return $result; + + } + + /// Replaces a substring within another string. + /// @author Hugo Giraudel + /// @param {string} $string String. + /// @param {string} $search Substring. + /// @param {string} $replace Replacement. + /// @return {string} Updated string. + @function str-replace($string, $search, $replace: '') { + + $index: str-index($string, $search); + + @if $index { + @return str-slice($string, 1, $index - 1) + $replace + str-replace(str-slice($string, $index + str-length($search)), $search, $replace); + } + + @return $string; + + } + + /// Replaces a substring within each string in a list. + /// @param {list} $strings List of strings. + /// @param {string} $search Substring. + /// @param {string} $replace Replacement. + /// @return {list} Updated list of strings. + @function str-replace-all($strings, $search, $replace: '') { + + @each $string in $strings { + $strings: set-nth($strings, index($strings, $string), str-replace($string, $search, $replace)); + } + + @return $strings; + + } + +// Mixins. + + /// Wraps @content in vendorized keyframe blocks. + /// @param {string} $name Name. + @mixin keyframes($name) { + + @-moz-keyframes #{$name} { @content; } + @-webkit-keyframes #{$name} { @content; } + @-ms-keyframes #{$name} { @content; } + @keyframes #{$name} { @content; } + + } + + /// Vendorizes a declaration's property and/or value(s). + /// @param {string} $property Property. + /// @param {mixed} $value String/list of value(s). + @mixin vendor($property, $value) { + + // Determine if property should expand. + $expandProperty: index($vendor-properties, $property); + + // Determine if value should expand (and if so, add '-prefix-' placeholder). + $expandValue: false; + + @each $x in $value { + @each $y in $vendor-values { + @if $y == str-slice($x, 1, str-length($y)) { + + $value: set-nth($value, index($value, $x), '-prefix-' + $x); + $expandValue: true; + + } + } + } + + // Expand property? + @if $expandProperty { + @each $vendor in $vendor-prefixes { + #{$vendor}#{$property}: #{str-replace-all($value, '-prefix-', $vendor)}; + } + } + + // Expand just the value? + @elseif $expandValue { + @each $vendor in $vendor-prefixes { + #{$property}: #{str-replace-all($value, '-prefix-', $vendor)}; + } + } + + // Neither? Treat them as a normal declaration. + @else { + #{$property}: #{$value}; + } + + } \ No newline at end of file diff --git a/archive/assets/sass/main.scss b/archive/assets/sass/main.scss new file mode 100755 index 0000000..bea692c --- /dev/null +++ b/archive/assets/sass/main.scss @@ -0,0 +1,54 @@ +@import 'libs/vars'; +@import 'libs/functions'; +@import 'libs/mixins'; +@import 'libs/vendor'; +@import 'libs/breakpoints'; +@import 'libs/html-grid'; +@import 'fontawesome-all.min.css'; +@import url('https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,700,900'); + +/* + Phantom by Pixelarity + pixelarity.com | hello@pixelarity.com + License: pixelarity.com/license +*/ + +// Breakpoints. + + @include breakpoints(( + xlarge: ( 1281px, 1680px ), + large: ( 981px, 1280px ), + medium: ( 737px, 980px ), + small: ( 481px, 736px ), + xsmall: ( 361px, 480px ), + xxsmall: ( null, 360px ) + )); + +// Base. + + @import 'base/reset'; + @import 'base/page'; + @import 'base/typography'; + +// Component. + + @import 'components/row'; + @import 'components/section'; + @import 'components/icon'; + @import 'components/list'; + @import 'components/actions'; + @import 'components/icons'; + @import 'components/form'; + @import 'components/box'; + @import 'components/image'; + @import 'components/table'; + @import 'components/button'; + @import 'components/tiles'; + +// Layout. + + @import 'layout/header'; + @import 'layout/menu'; + @import 'layout/main'; + @import 'layout/footer'; + @import 'layout/wrapper'; \ No newline at end of file diff --git a/archive/assets/sass/noscript.scss b/archive/assets/sass/noscript.scss new file mode 100755 index 0000000..988f82f --- /dev/null +++ b/archive/assets/sass/noscript.scss @@ -0,0 +1,23 @@ +@import 'libs/vars'; +@import 'libs/functions'; +@import 'libs/mixins'; +@import 'libs/vendor'; +@import 'libs/breakpoints'; +@import 'libs/html-grid'; + +/* + Phantom by Pixelarity + pixelarity.com | hello@pixelarity.com + License: pixelarity.com/license +*/ + +/* Tiles */ + + .tiles { + body.is-preload & { + article { + @include vendor('transform', 'none'); + opacity: 1; + } + } + } \ No newline at end of file diff --git a/archive/assets/webfonts/fa-brands-400.eot b/archive/assets/webfonts/fa-brands-400.eot new file mode 100755 index 0000000..e79f40f Binary files /dev/null and b/archive/assets/webfonts/fa-brands-400.eot differ diff --git a/archive/assets/webfonts/fa-brands-400.svg b/archive/assets/webfonts/fa-brands-400.svg new file mode 100755 index 0000000..cc4c95c --- /dev/null +++ b/archive/assets/webfonts/fa-brands-400.svg @@ -0,0 +1,3442 @@ + + + + + +Created by FontForge 20190112 at Tue Jun 4 15:16:44 2019 + By Robert Madole +Copyright (c) Font Awesome + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/archive/assets/webfonts/fa-brands-400.ttf b/archive/assets/webfonts/fa-brands-400.ttf new file mode 100755 index 0000000..217ffe9 Binary files /dev/null and b/archive/assets/webfonts/fa-brands-400.ttf differ diff --git a/archive/assets/webfonts/fa-brands-400.woff b/archive/assets/webfonts/fa-brands-400.woff new file mode 100755 index 0000000..a2d8025 Binary files /dev/null and b/archive/assets/webfonts/fa-brands-400.woff differ diff --git a/archive/assets/webfonts/fa-brands-400.woff2 b/archive/assets/webfonts/fa-brands-400.woff2 new file mode 100755 index 0000000..e27b0bf Binary files /dev/null and b/archive/assets/webfonts/fa-brands-400.woff2 differ diff --git a/archive/assets/webfonts/fa-regular-400.eot b/archive/assets/webfonts/fa-regular-400.eot new file mode 100755 index 0000000..d62be2f Binary files /dev/null and b/archive/assets/webfonts/fa-regular-400.eot differ diff --git a/archive/assets/webfonts/fa-regular-400.svg b/archive/assets/webfonts/fa-regular-400.svg new file mode 100755 index 0000000..8e195fb --- /dev/null +++ b/archive/assets/webfonts/fa-regular-400.svg @@ -0,0 +1,803 @@ + + + + + +Created by FontForge 20190112 at Tue Jun 4 15:16:44 2019 + By Robert Madole +Copyright (c) Font Awesome + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/archive/assets/webfonts/fa-regular-400.ttf b/archive/assets/webfonts/fa-regular-400.ttf new file mode 100755 index 0000000..eb3cb5e Binary files /dev/null and b/archive/assets/webfonts/fa-regular-400.ttf differ diff --git a/archive/assets/webfonts/fa-regular-400.woff b/archive/assets/webfonts/fa-regular-400.woff new file mode 100755 index 0000000..43b1a9a Binary files /dev/null and b/archive/assets/webfonts/fa-regular-400.woff differ diff --git a/archive/assets/webfonts/fa-regular-400.woff2 b/archive/assets/webfonts/fa-regular-400.woff2 new file mode 100755 index 0000000..b9344a7 Binary files /dev/null and b/archive/assets/webfonts/fa-regular-400.woff2 differ diff --git a/archive/assets/webfonts/fa-solid-900.eot b/archive/assets/webfonts/fa-solid-900.eot new file mode 100755 index 0000000..c77baa8 Binary files /dev/null and b/archive/assets/webfonts/fa-solid-900.eot differ diff --git a/archive/assets/webfonts/fa-solid-900.svg b/archive/assets/webfonts/fa-solid-900.svg new file mode 100755 index 0000000..b6ae289 --- /dev/null +++ b/archive/assets/webfonts/fa-solid-900.svg @@ -0,0 +1,4649 @@ + + + + + +Created by FontForge 20190112 at Tue Jun 4 15:16:44 2019 + By Robert Madole +Copyright (c) Font Awesome + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/archive/assets/webfonts/fa-solid-900.ttf b/archive/assets/webfonts/fa-solid-900.ttf new file mode 100755 index 0000000..c6c3dd4 Binary files /dev/null and b/archive/assets/webfonts/fa-solid-900.ttf differ diff --git a/archive/assets/webfonts/fa-solid-900.woff b/archive/assets/webfonts/fa-solid-900.woff new file mode 100755 index 0000000..77c1786 Binary files /dev/null and b/archive/assets/webfonts/fa-solid-900.woff differ diff --git a/archive/assets/webfonts/fa-solid-900.woff2 b/archive/assets/webfonts/fa-solid-900.woff2 new file mode 100755 index 0000000..e30fb67 Binary files /dev/null and b/archive/assets/webfonts/fa-solid-900.woff2 differ diff --git a/archive/barber/archive/elements.html b/archive/barber/archive/elements.html new file mode 100755 index 0000000..14301b8 --- /dev/null +++ b/archive/barber/archive/elements.html @@ -0,0 +1,425 @@ + + + + + Untitled + + + + + +
+ + + + + +
+
+
+

Elements

+

All the elements and stuff

+
+ + +
+

Text

+

This is bold and this is strong. This is italic and this is emphasized. + This is superscript text and this is subscript text. + This is underlined and this is code: for (;;) { ... }. Finally, this is a link.

+ +
+ +
+

Heading with a Subtitle

+

Lorem ipsum dolor sit amet nullam id egestas urna aliquam

+
+

Nunc lacinia ante nunc ac lobortis. Interdum adipiscing gravida odio porttitor sem non mi integer non faucibus ornare mi ut ante amet placerat aliquet. Volutpat eu sed ante lacinia sapien lorem accumsan varius montes viverra nibh in adipiscing blandit tempus accumsan.

+
+

Heading with a Subtitle

+

Lorem ipsum dolor sit amet nullam id egestas urna aliquam

+
+

Nunc lacinia ante nunc ac lobortis. Interdum adipiscing gravida odio porttitor sem non mi integer non faucibus ornare mi ut ante amet placerat aliquet. Volutpat eu sed ante lacinia sapien lorem accumsan varius montes viverra nibh in adipiscing blandit tempus accumsan.

+ +
+ +

Heading Level 2

+

Heading Level 3

+

Heading Level 4

+
Heading Level 5
+
Heading Level 6
+ +
+ +

Blockquote

+
Fringilla nisl. Donec accumsan interdum nisi, quis tincidunt felis sagittis eget tempus euismod. Vestibulum ante ipsum primis in faucibus vestibulum. Blandit adipiscing eu felis iaculis volutpat ac adipiscing accumsan faucibus. Vestibulum ante ipsum primis in faucibus lorem ipsum dolor sit amet nullam adipiscing eu felis.
+ +

Preformatted

+
i = 0;

+

+while (!deck.isInOrder()) {

+    print 'Iteration ' + i;

+    deck.shuffle();

+    i++;

+}

+

+print 'It took ' + i + ' iterations to sort the deck.';

+
+
+ + +
+

Lists

+
+
+ +

Unordered

+
    +
  • Dolor pulvinar etiam magna etiam.
  • +
  • Sagittis adipiscing lorem eleifend.
  • +
  • Felis enim feugiat dolore viverra.
  • +
+ +

Alternate

+
    +
  • Dolor pulvinar etiam magna etiam.
  • +
  • Sagittis adipiscing lorem eleifend.
  • +
  • Felis enim feugiat dolore viverra.
  • +
+ +
+
+ +

Ordered

+
    +
  1. Dolor pulvinar etiam magna etiam.
  2. +
  3. Etiam vel felis at lorem sed viverra.
  4. +
  5. Felis enim feugiat dolore viverra.
  6. +
  7. Dolor pulvinar etiam magna etiam.
  8. +
  9. Etiam vel felis at lorem sed viverra.
  10. +
  11. Felis enim feugiat dolore viverra.
  12. +
+ +

Icons

+ + +
+
+ +

Actions

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

Table

+ +

Default

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionPrice
SomethingAnte turpis integer aliquet porttitor.29.99
NothingVis ac commodo adipiscing arcu aliquet.19.99
Something Morbi faucibus arcu accumsan lorem.29.99
NothingVitae integer tempus condimentum.19.99
SomethingAnte turpis integer aliquet porttitor.29.99
100.00
+
+ +

Alternate

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionPrice
SomethingAnte turpis integer aliquet porttitor.29.99
NothingVis ac commodo adipiscing arcu aliquet.19.99
Something Morbi faucibus arcu accumsan lorem.29.99
NothingVitae integer tempus condimentum.19.99
SomethingAnte turpis integer aliquet porttitor.29.99
100.00
+
+
+ + +
+

Buttons

+ + + + + +
    +
  • Primary
  • +
  • Default
  • +
  • Alternate
  • +
+
+ + +
+

Form

+
+
+
+ +
+
+ +
+
+ +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ +
+
+
    +
  • +
  • +
+
+
+
+
+ + +
+

Image

+

Fit

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

Left & Right

+

Fringilla nisl. Donec accumsan interdum nisi, quis tincidunt felis sagittis eget. tempus euismod. Vestibulum ante ipsum primis in faucibus vestibulum. Blandit adipiscing eu felis iaculis volutpat ac adipiscing accumsan eu faucibus. Integer ac pellentesque praesent tincidunt felis sagittis eget. tempus euismod. Vestibulum ante ipsum primis in faucibus vestibulum. Blandit adipiscing eu felis iaculis volutpat ac adipiscing accumsan eu faucibus. Integer ac pellentesque praesent. Donec accumsan interdum nisi, quis tincidunt felis sagittis eget. tempus euismod. Vestibulum ante ipsum primis in faucibus vestibulum. Blandit adipiscing eu felis iaculis volutpat ac adipiscing accumsan eu faucibus. Integer ac pellentesque praesent tincidunt felis sagittis eget. tempus euismod. Vestibulum ante ipsum primis in faucibus vestibulum. Blandit adipiscing eu felis iaculis volutpat ac adipiscing accumsan eu faucibus. Integer ac pellentesque praesent.

+

Fringilla nisl. Donec accumsan interdum nisi, quis tincidunt felis sagittis eget. tempus euismod. Vestibulum ante ipsum primis in faucibus vestibulum. Blandit adipiscing eu felis iaculis volutpat ac adipiscing accumsan eu faucibus. Integer ac pellentesque praesent tincidunt felis sagittis eget. tempus euismod. Vestibulum ante ipsum primis in faucibus vestibulum. Blandit adipiscing eu felis iaculis volutpat ac adipiscing accumsan eu faucibus. Integer ac pellentesque praesent. Donec accumsan interdum nisi, quis tincidunt felis sagittis eget. tempus euismod. Vestibulum ante ipsum primis in faucibus vestibulum. Blandit adipiscing eu felis iaculis volutpat ac adipiscing accumsan eu faucibus. Integer ac pellentesque praesent tincidunt felis sagittis eget. tempus euismod. Vestibulum ante ipsum primis in faucibus vestibulum. Blandit adipiscing eu felis iaculis volutpat ac adipiscing accumsan eu faucibus. Integer ac pellentesque praesent.

+
+ +
+
+ + + + +
+ + + + + + + + + + + \ No newline at end of file diff --git a/archive/barber/archive/left-sidebar.html b/archive/barber/archive/left-sidebar.html new file mode 100755 index 0000000..39270e5 --- /dev/null +++ b/archive/barber/archive/left-sidebar.html @@ -0,0 +1,129 @@ + + + + + Untitled + + + + + +
+ + + + + +
+
+
+

Left Sidebar

+

Faucibus neque adipiscing mi lorem semper blandit

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

Dolore Amet Consequat

+

Aliquam massa urna, imperdiet sit amet mi non, bibendum euismod est. Curabitur mi justo, tincidunt vel eros ullamcorper, porta cursus justo. Cras vel neque eros. Vestibulum diam quam, mollis at magna consectetur non, malesuada quis augue. Morbi tincidunt pretium interdum est. Curabitur mi justo, tincidunt vel eros ullamcorper, porta cursus justo. Cras vel neque eros. Vestibulum diam.

+

Vestibulum diam quam, mollis at consectetur non, malesuada quis augue. Morbi tincidunt pretium interdum. Morbi mattis elementum orci, nec dictum porta cursus justo. Quisque ultricies lorem in ligula condimentum, et egestas turpis sagittis. Cras ac nunc urna. Nullam eget lobortis purus. Phasellus vitae tortor non est placerat tristique.

+

Sed Magna Ornare

+

In vestibulum massa quis arcu lobortis tempus. Nam pretium arcu in odio vulputate luctus. Suspendisse euismod lorem eget lacinia fringilla. Sed sed felis justo. Nunc sodales elit in laoreet aliquam. Nam gravida, nisl sit amet iaculis porttitor, risus nisi rutrum metus.

+
    +
  • Faucibus orci lobortis ac adipiscing integer.
  • +
  • Col accumsan arcu mi aliquet placerat.
  • +
  • Lobortis vestibulum ut magna tempor massa nascetur.
  • +
  • Blandit massa non blandit tempor interdum.
  • +
  • Lacinia mattis arcu nascetur lobortis.
  • +
+
+ +
+
+
+
+ + + + +
+ + + + + + + + + + + \ No newline at end of file diff --git a/archive/barber/archive/no-sidebar.html b/archive/barber/archive/no-sidebar.html new file mode 100755 index 0000000..d3dbe7b --- /dev/null +++ b/archive/barber/archive/no-sidebar.html @@ -0,0 +1,98 @@ + + + + + Untitled + + + + + +
+ + + + + +
+
+
+

No Sidebar

+

Faucibus neque adipiscing mi lorem semper blandit

+
+ + +
+ +

Dolore Amet Consequat

+

Aliquam massa urna, imperdiet sit amet mi non, bibendum euismod est. Curabitur mi justo, tincidunt vel eros ullamcorper, porta cursus justo. Cras vel neque eros. Vestibulum diam quam, mollis at consectetur non, malesuada quis augue. Morbi tincidunt pretium interdum. Morbi mattis dictum porta cursus justo. Quisque ultricies lorem in ligula condimentum, et egestas turpis sagittis. Cras ac nunc urna. Nullam eget lobortis elementum orci, nec dictum massa. Morbi eu faucibus massa. Aliquam massa urna, imperdiet sit amet mi non, bibendum euismod est. Curabitur mi justo, tincidunt vel eros ullamcorper, porta cursus justo. Cras vel neque eros. Vestibulum diam.

+

Vestibulum diam quam, mollis at consectetur non, malesuada quis augue. Morbi tincidunt pretium interdum. Morbi mattis elementum orci, nec dictum porta cursus justo. Quisque ultricies lorem in ligula condimentum, et egestas turpis sagittis. Cras ac nunc urna. Nullam eget lobortis purus. Phasellus vitae tortor non est placerat tristique. Sed id sem et massa ornare pellentesque. Maecenas pharetra porta accumsan.

+

Sed Magna Ornare

+

In vestibulum massa quis arcu lobortis tempus. Nam pretium arcu in odio vulputate luctus. Suspendisse euismod lorem eget lacinia fringilla. Sed sed felis justo. Nunc sodales elit in laoreet aliquam. Nam gravida, nisl sit amet iaculis porttitor, risus nisi rutrum metus, non hendrerit ipsum arcu tristique est.

+
    +
  • Faucibus orci lobortis ac adipiscing integer.
  • +
  • Col accumsan arcu mi aliquet placerat.
  • +
  • Lobortis vestibulum ut magna tempor massa nascetur.
  • +
  • Blandit massa non blandit tempor interdum.
  • +
  • Lacinia mattis arcu nascetur lobortis.
  • +
+
+ +
+
+ + + + +
+ + + + + + + + + + + \ No newline at end of file diff --git a/archive/barber/archive/right-sidebar.html b/archive/barber/archive/right-sidebar.html new file mode 100755 index 0000000..d9137b2 --- /dev/null +++ b/archive/barber/archive/right-sidebar.html @@ -0,0 +1,129 @@ + + + + + Untitled + + + + + +
+ + + + + +
+
+
+

Right Sidebar

+

Faucibus neque adipiscing mi lorem semper blandit

+
+
+
+ + +
+ +

Dolore Amet Consequat

+

Aliquam massa urna, imperdiet sit amet mi non, bibendum euismod est. Curabitur mi justo, tincidunt vel eros ullamcorper, porta cursus justo. Cras vel neque eros. Vestibulum diam quam, mollis at magna consectetur non, malesuada quis augue. Morbi tincidunt pretium interdum est. Curabitur mi justo, tincidunt vel eros ullamcorper, porta cursus justo. Cras vel neque eros. Vestibulum diam.

+

Vestibulum diam quam, mollis at consectetur non, malesuada quis augue. Morbi tincidunt pretium interdum. Morbi mattis elementum orci, nec dictum porta cursus justo. Quisque ultricies lorem in ligula condimentum, et egestas turpis sagittis. Cras ac nunc urna. Nullam eget lobortis purus. Phasellus vitae tortor non est placerat tristique.

+

Sed Magna Ornare

+

In vestibulum massa quis arcu lobortis tempus. Nam pretium arcu in odio vulputate luctus. Suspendisse euismod lorem eget lacinia fringilla. Sed sed felis justo. Nunc sodales elit in laoreet aliquam. Nam gravida, nisl sit amet iaculis porttitor, risus nisi rutrum metus.

+
    +
  • Faucibus orci lobortis ac adipiscing integer.
  • +
  • Col accumsan arcu mi aliquet placerat.
  • +
  • Lobortis vestibulum ut magna tempor massa nascetur.
  • +
  • Blandit massa non blandit tempor interdum.
  • +
  • Lacinia mattis arcu nascetur lobortis.
  • +
+
+ +
+
+ + + + +
+
+
+
+ + + + +
+ + + + + + + + + + + \ No newline at end of file diff --git a/archive/barber/assets/css/fontawesome-all.min.css b/archive/barber/assets/css/fontawesome-all.min.css new file mode 100755 index 0000000..d6f129c --- /dev/null +++ b/archive/barber/assets/css/fontawesome-all.min.css @@ -0,0 +1,206 @@ +/*! + * Font Awesome Free 5.9.0 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) + */ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +.fa,.fab,.fal,.far,.fas{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-.0667em}.fa-xs{font-size:.75em}.fa-sm{font-size:.875em}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:2.5em;padding-left:0}.fa-ul>li{position:relative}.fa-li{left:-2em;position:absolute;text-align:center;width:2em;line-height:inherit}.fa-border{border:.08em solid #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.fab.fa-pull-left,.fal.fa-pull-left,.far.fa-pull-left,.fas.fa-pull-left{margin-right:.3em}.fa.fa-pull-right,.fab.fa-pull-right,.fal.fa-pull-right,.far.fa-pull-right,.fas.fa-pull-right{margin-left:.3em}.fa-spin{animation:fa-spin 2s infinite linear}.fa-pulse{animation:fa-spin 1s infinite steps(8)}@keyframes fa-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";transform:scaleX(-1)}.fa-flip-vertical{transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical,.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{transform:scale(-1)}:root .fa-flip-both,:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270{filter:none}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-500px:before{content:"\f26e"}.fa-accessible-icon:before{content:"\f368"}.fa-accusoft:before{content:"\f369"}.fa-acquisitions-incorporated:before{content:"\f6af"}.fa-ad:before{content:"\f641"}.fa-address-book:before{content:"\f2b9"}.fa-address-card:before{content:"\f2bb"}.fa-adjust:before{content:"\f042"}.fa-adn:before{content:"\f170"}.fa-adobe:before{content:"\f778"}.fa-adversal:before{content:"\f36a"}.fa-affiliatetheme:before{content:"\f36b"}.fa-air-freshener:before{content:"\f5d0"}.fa-airbnb:before{content:"\f834"}.fa-algolia:before{content:"\f36c"}.fa-align-center:before{content:"\f037"}.fa-align-justify:before{content:"\f039"}.fa-align-left:before{content:"\f036"}.fa-align-right:before{content:"\f038"}.fa-alipay:before{content:"\f642"}.fa-allergies:before{content:"\f461"}.fa-amazon:before{content:"\f270"}.fa-amazon-pay:before{content:"\f42c"}.fa-ambulance:before{content:"\f0f9"}.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-amilia:before{content:"\f36d"}.fa-anchor:before{content:"\f13d"}.fa-android:before{content:"\f17b"}.fa-angellist:before{content:"\f209"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-down:before{content:"\f107"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angry:before{content:"\f556"}.fa-angrycreative:before{content:"\f36e"}.fa-angular:before{content:"\f420"}.fa-ankh:before{content:"\f644"}.fa-app-store:before{content:"\f36f"}.fa-app-store-ios:before{content:"\f370"}.fa-apper:before{content:"\f371"}.fa-apple:before{content:"\f179"}.fa-apple-alt:before{content:"\f5d1"}.fa-apple-pay:before{content:"\f415"}.fa-archive:before{content:"\f187"}.fa-archway:before{content:"\f557"}.fa-arrow-alt-circle-down:before{content:"\f358"}.fa-arrow-alt-circle-left:before{content:"\f359"}.fa-arrow-alt-circle-right:before{content:"\f35a"}.fa-arrow-alt-circle-up:before{content:"\f35b"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-down:before{content:"\f063"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrows-alt:before{content:"\f0b2"}.fa-arrows-alt-h:before{content:"\f337"}.fa-arrows-alt-v:before{content:"\f338"}.fa-artstation:before{content:"\f77a"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asterisk:before{content:"\f069"}.fa-asymmetrik:before{content:"\f372"}.fa-at:before{content:"\f1fa"}.fa-atlas:before{content:"\f558"}.fa-atlassian:before{content:"\f77b"}.fa-atom:before{content:"\f5d2"}.fa-audible:before{content:"\f373"}.fa-audio-description:before{content:"\f29e"}.fa-autoprefixer:before{content:"\f41c"}.fa-avianex:before{content:"\f374"}.fa-aviato:before{content:"\f421"}.fa-award:before{content:"\f559"}.fa-aws:before{content:"\f375"}.fa-baby:before{content:"\f77c"}.fa-baby-carriage:before{content:"\f77d"}.fa-backspace:before{content:"\f55a"}.fa-backward:before{content:"\f04a"}.fa-bacon:before{content:"\f7e5"}.fa-balance-scale:before{content:"\f24e"}.fa-balance-scale-left:before{content:"\f515"}.fa-balance-scale-right:before{content:"\f516"}.fa-ban:before{content:"\f05e"}.fa-band-aid:before{content:"\f462"}.fa-bandcamp:before{content:"\f2d5"}.fa-barcode:before{content:"\f02a"}.fa-bars:before{content:"\f0c9"}.fa-baseball-ball:before{content:"\f433"}.fa-basketball-ball:before{content:"\f434"}.fa-bath:before{content:"\f2cd"}.fa-battery-empty:before{content:"\f244"}.fa-battery-full:before{content:"\f240"}.fa-battery-half:before{content:"\f242"}.fa-battery-quarter:before{content:"\f243"}.fa-battery-three-quarters:before{content:"\f241"}.fa-battle-net:before{content:"\f835"}.fa-bed:before{content:"\f236"}.fa-beer:before{content:"\f0fc"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-bell:before{content:"\f0f3"}.fa-bell-slash:before{content:"\f1f6"}.fa-bezier-curve:before{content:"\f55b"}.fa-bible:before{content:"\f647"}.fa-bicycle:before{content:"\f206"}.fa-biking:before{content:"\f84a"}.fa-bimobject:before{content:"\f378"}.fa-binoculars:before{content:"\f1e5"}.fa-biohazard:before{content:"\f780"}.fa-birthday-cake:before{content:"\f1fd"}.fa-bitbucket:before{content:"\f171"}.fa-bitcoin:before{content:"\f379"}.fa-bity:before{content:"\f37a"}.fa-black-tie:before{content:"\f27e"}.fa-blackberry:before{content:"\f37b"}.fa-blender:before{content:"\f517"}.fa-blender-phone:before{content:"\f6b6"}.fa-blind:before{content:"\f29d"}.fa-blog:before{content:"\f781"}.fa-blogger:before{content:"\f37c"}.fa-blogger-b:before{content:"\f37d"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-bold:before{content:"\f032"}.fa-bolt:before{content:"\f0e7"}.fa-bomb:before{content:"\f1e2"}.fa-bone:before{content:"\f5d7"}.fa-bong:before{content:"\f55c"}.fa-book:before{content:"\f02d"}.fa-book-dead:before{content:"\f6b7"}.fa-book-medical:before{content:"\f7e6"}.fa-book-open:before{content:"\f518"}.fa-book-reader:before{content:"\f5da"}.fa-bookmark:before{content:"\f02e"}.fa-bootstrap:before{content:"\f836"}.fa-border-all:before{content:"\f84c"}.fa-border-none:before{content:"\f850"}.fa-border-style:before{content:"\f853"}.fa-bowling-ball:before{content:"\f436"}.fa-box:before{content:"\f466"}.fa-box-open:before{content:"\f49e"}.fa-boxes:before{content:"\f468"}.fa-braille:before{content:"\f2a1"}.fa-brain:before{content:"\f5dc"}.fa-bread-slice:before{content:"\f7ec"}.fa-briefcase:before{content:"\f0b1"}.fa-briefcase-medical:before{content:"\f469"}.fa-broadcast-tower:before{content:"\f519"}.fa-broom:before{content:"\f51a"}.fa-brush:before{content:"\f55d"}.fa-btc:before{content:"\f15a"}.fa-buffer:before{content:"\f837"}.fa-bug:before{content:"\f188"}.fa-building:before{content:"\f1ad"}.fa-bullhorn:before{content:"\f0a1"}.fa-bullseye:before{content:"\f140"}.fa-burn:before{content:"\f46a"}.fa-buromobelexperte:before{content:"\f37f"}.fa-bus:before{content:"\f207"}.fa-bus-alt:before{content:"\f55e"}.fa-business-time:before{content:"\f64a"}.fa-buysellads:before{content:"\f20d"}.fa-calculator:before{content:"\f1ec"}.fa-calendar:before{content:"\f133"}.fa-calendar-alt:before{content:"\f073"}.fa-calendar-check:before{content:"\f274"}.fa-calendar-day:before{content:"\f783"}.fa-calendar-minus:before{content:"\f272"}.fa-calendar-plus:before{content:"\f271"}.fa-calendar-times:before{content:"\f273"}.fa-calendar-week:before{content:"\f784"}.fa-camera:before{content:"\f030"}.fa-camera-retro:before{content:"\f083"}.fa-campground:before{content:"\f6bb"}.fa-canadian-maple-leaf:before{content:"\f785"}.fa-candy-cane:before{content:"\f786"}.fa-cannabis:before{content:"\f55f"}.fa-capsules:before{content:"\f46b"}.fa-car:before{content:"\f1b9"}.fa-car-alt:before{content:"\f5de"}.fa-car-battery:before{content:"\f5df"}.fa-car-crash:before{content:"\f5e1"}.fa-car-side:before{content:"\f5e4"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-caret-square-down:before{content:"\f150"}.fa-caret-square-left:before{content:"\f191"}.fa-caret-square-right:before{content:"\f152"}.fa-caret-square-up:before{content:"\f151"}.fa-caret-up:before{content:"\f0d8"}.fa-carrot:before{content:"\f787"}.fa-cart-arrow-down:before{content:"\f218"}.fa-cart-plus:before{content:"\f217"}.fa-cash-register:before{content:"\f788"}.fa-cat:before{content:"\f6be"}.fa-cc-amazon-pay:before{content:"\f42d"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-apple-pay:before{content:"\f416"}.fa-cc-diners-club:before{content:"\f24c"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-cc-visa:before{content:"\f1f0"}.fa-centercode:before{content:"\f380"}.fa-centos:before{content:"\f789"}.fa-certificate:before{content:"\f0a3"}.fa-chair:before{content:"\f6c0"}.fa-chalkboard:before{content:"\f51b"}.fa-chalkboard-teacher:before{content:"\f51c"}.fa-charging-station:before{content:"\f5e7"}.fa-chart-area:before{content:"\f1fe"}.fa-chart-bar:before{content:"\f080"}.fa-chart-line:before{content:"\f201"}.fa-chart-pie:before{content:"\f200"}.fa-check:before{content:"\f00c"}.fa-check-circle:before{content:"\f058"}.fa-check-double:before{content:"\f560"}.fa-check-square:before{content:"\f14a"}.fa-cheese:before{content:"\f7ef"}.fa-chess:before{content:"\f439"}.fa-chess-bishop:before{content:"\f43a"}.fa-chess-board:before{content:"\f43c"}.fa-chess-king:before{content:"\f43f"}.fa-chess-knight:before{content:"\f441"}.fa-chess-pawn:before{content:"\f443"}.fa-chess-queen:before{content:"\f445"}.fa-chess-rook:before{content:"\f447"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-down:before{content:"\f078"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-chevron-up:before{content:"\f077"}.fa-child:before{content:"\f1ae"}.fa-chrome:before{content:"\f268"}.fa-chromecast:before{content:"\f838"}.fa-church:before{content:"\f51d"}.fa-circle:before{content:"\f111"}.fa-circle-notch:before{content:"\f1ce"}.fa-city:before{content:"\f64f"}.fa-clinic-medical:before{content:"\f7f2"}.fa-clipboard:before{content:"\f328"}.fa-clipboard-check:before{content:"\f46c"}.fa-clipboard-list:before{content:"\f46d"}.fa-clock:before{content:"\f017"}.fa-clone:before{content:"\f24d"}.fa-closed-captioning:before{content:"\f20a"}.fa-cloud:before{content:"\f0c2"}.fa-cloud-download-alt:before{content:"\f381"}.fa-cloud-meatball:before{content:"\f73b"}.fa-cloud-moon:before{content:"\f6c3"}.fa-cloud-moon-rain:before{content:"\f73c"}.fa-cloud-rain:before{content:"\f73d"}.fa-cloud-showers-heavy:before{content:"\f740"}.fa-cloud-sun:before{content:"\f6c4"}.fa-cloud-sun-rain:before{content:"\f743"}.fa-cloud-upload-alt:before{content:"\f382"}.fa-cloudscale:before{content:"\f383"}.fa-cloudsmith:before{content:"\f384"}.fa-cloudversify:before{content:"\f385"}.fa-cocktail:before{content:"\f561"}.fa-code:before{content:"\f121"}.fa-code-branch:before{content:"\f126"}.fa-codepen:before{content:"\f1cb"}.fa-codiepie:before{content:"\f284"}.fa-coffee:before{content:"\f0f4"}.fa-cog:before{content:"\f013"}.fa-cogs:before{content:"\f085"}.fa-coins:before{content:"\f51e"}.fa-columns:before{content:"\f0db"}.fa-comment:before{content:"\f075"}.fa-comment-alt:before{content:"\f27a"}.fa-comment-dollar:before{content:"\f651"}.fa-comment-dots:before{content:"\f4ad"}.fa-comment-medical:before{content:"\f7f5"}.fa-comment-slash:before{content:"\f4b3"}.fa-comments:before{content:"\f086"}.fa-comments-dollar:before{content:"\f653"}.fa-compact-disc:before{content:"\f51f"}.fa-compass:before{content:"\f14e"}.fa-compress:before{content:"\f066"}.fa-compress-arrows-alt:before{content:"\f78c"}.fa-concierge-bell:before{content:"\f562"}.fa-confluence:before{content:"\f78d"}.fa-connectdevelop:before{content:"\f20e"}.fa-contao:before{content:"\f26d"}.fa-cookie:before{content:"\f563"}.fa-cookie-bite:before{content:"\f564"}.fa-copy:before{content:"\f0c5"}.fa-copyright:before{content:"\f1f9"}.fa-couch:before{content:"\f4b8"}.fa-cpanel:before{content:"\f388"}.fa-creative-commons:before{content:"\f25e"}.fa-creative-commons-by:before{content:"\f4e7"}.fa-creative-commons-nc:before{content:"\f4e8"}.fa-creative-commons-nc-eu:before{content:"\f4e9"}.fa-creative-commons-nc-jp:before{content:"\f4ea"}.fa-creative-commons-nd:before{content:"\f4eb"}.fa-creative-commons-pd:before{content:"\f4ec"}.fa-creative-commons-pd-alt:before{content:"\f4ed"}.fa-creative-commons-remix:before{content:"\f4ee"}.fa-creative-commons-sa:before{content:"\f4ef"}.fa-creative-commons-sampling:before{content:"\f4f0"}.fa-creative-commons-sampling-plus:before{content:"\f4f1"}.fa-creative-commons-share:before{content:"\f4f2"}.fa-creative-commons-zero:before{content:"\f4f3"}.fa-credit-card:before{content:"\f09d"}.fa-critical-role:before{content:"\f6c9"}.fa-crop:before{content:"\f125"}.fa-crop-alt:before{content:"\f565"}.fa-cross:before{content:"\f654"}.fa-crosshairs:before{content:"\f05b"}.fa-crow:before{content:"\f520"}.fa-crown:before{content:"\f521"}.fa-crutch:before{content:"\f7f7"}.fa-css3:before{content:"\f13c"}.fa-css3-alt:before{content:"\f38b"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-cut:before{content:"\f0c4"}.fa-cuttlefish:before{content:"\f38c"}.fa-d-and-d:before{content:"\f38d"}.fa-d-and-d-beyond:before{content:"\f6ca"}.fa-dashcube:before{content:"\f210"}.fa-database:before{content:"\f1c0"}.fa-deaf:before{content:"\f2a4"}.fa-delicious:before{content:"\f1a5"}.fa-democrat:before{content:"\f747"}.fa-deploydog:before{content:"\f38e"}.fa-deskpro:before{content:"\f38f"}.fa-desktop:before{content:"\f108"}.fa-dev:before{content:"\f6cc"}.fa-deviantart:before{content:"\f1bd"}.fa-dharmachakra:before{content:"\f655"}.fa-dhl:before{content:"\f790"}.fa-diagnoses:before{content:"\f470"}.fa-diaspora:before{content:"\f791"}.fa-dice:before{content:"\f522"}.fa-dice-d20:before{content:"\f6cf"}.fa-dice-d6:before{content:"\f6d1"}.fa-dice-five:before{content:"\f523"}.fa-dice-four:before{content:"\f524"}.fa-dice-one:before{content:"\f525"}.fa-dice-six:before{content:"\f526"}.fa-dice-three:before{content:"\f527"}.fa-dice-two:before{content:"\f528"}.fa-digg:before{content:"\f1a6"}.fa-digital-ocean:before{content:"\f391"}.fa-digital-tachograph:before{content:"\f566"}.fa-directions:before{content:"\f5eb"}.fa-discord:before{content:"\f392"}.fa-discourse:before{content:"\f393"}.fa-divide:before{content:"\f529"}.fa-dizzy:before{content:"\f567"}.fa-dna:before{content:"\f471"}.fa-dochub:before{content:"\f394"}.fa-docker:before{content:"\f395"}.fa-dog:before{content:"\f6d3"}.fa-dollar-sign:before{content:"\f155"}.fa-dolly:before{content:"\f472"}.fa-dolly-flatbed:before{content:"\f474"}.fa-donate:before{content:"\f4b9"}.fa-door-closed:before{content:"\f52a"}.fa-door-open:before{content:"\f52b"}.fa-dot-circle:before{content:"\f192"}.fa-dove:before{content:"\f4ba"}.fa-download:before{content:"\f019"}.fa-draft2digital:before{content:"\f396"}.fa-drafting-compass:before{content:"\f568"}.fa-dragon:before{content:"\f6d5"}.fa-draw-polygon:before{content:"\f5ee"}.fa-dribbble:before{content:"\f17d"}.fa-dribbble-square:before{content:"\f397"}.fa-dropbox:before{content:"\f16b"}.fa-drum:before{content:"\f569"}.fa-drum-steelpan:before{content:"\f56a"}.fa-drumstick-bite:before{content:"\f6d7"}.fa-drupal:before{content:"\f1a9"}.fa-dumbbell:before{content:"\f44b"}.fa-dumpster:before{content:"\f793"}.fa-dumpster-fire:before{content:"\f794"}.fa-dungeon:before{content:"\f6d9"}.fa-dyalog:before{content:"\f399"}.fa-earlybirds:before{content:"\f39a"}.fa-ebay:before{content:"\f4f4"}.fa-edge:before{content:"\f282"}.fa-edit:before{content:"\f044"}.fa-egg:before{content:"\f7fb"}.fa-eject:before{content:"\f052"}.fa-elementor:before{content:"\f430"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-ello:before{content:"\f5f1"}.fa-ember:before{content:"\f423"}.fa-empire:before{content:"\f1d1"}.fa-envelope:before{content:"\f0e0"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-text:before{content:"\f658"}.fa-envelope-square:before{content:"\f199"}.fa-envira:before{content:"\f299"}.fa-equals:before{content:"\f52c"}.fa-eraser:before{content:"\f12d"}.fa-erlang:before{content:"\f39d"}.fa-ethereum:before{content:"\f42e"}.fa-ethernet:before{content:"\f796"}.fa-etsy:before{content:"\f2d7"}.fa-euro-sign:before{content:"\f153"}.fa-evernote:before{content:"\f839"}.fa-exchange-alt:before{content:"\f362"}.fa-exclamation:before{content:"\f12a"}.fa-exclamation-circle:before{content:"\f06a"}.fa-exclamation-triangle:before{content:"\f071"}.fa-expand:before{content:"\f065"}.fa-expand-arrows-alt:before{content:"\f31e"}.fa-expeditedssl:before{content:"\f23e"}.fa-external-link-alt:before{content:"\f35d"}.fa-external-link-square-alt:before{content:"\f360"}.fa-eye:before{content:"\f06e"}.fa-eye-dropper:before{content:"\f1fb"}.fa-eye-slash:before{content:"\f070"}.fa-facebook:before{content:"\f09a"}.fa-facebook-f:before{content:"\f39e"}.fa-facebook-messenger:before{content:"\f39f"}.fa-facebook-square:before{content:"\f082"}.fa-fan:before{content:"\f863"}.fa-fantasy-flight-games:before{content:"\f6dc"}.fa-fast-backward:before{content:"\f049"}.fa-fast-forward:before{content:"\f050"}.fa-fax:before{content:"\f1ac"}.fa-feather:before{content:"\f52d"}.fa-feather-alt:before{content:"\f56b"}.fa-fedex:before{content:"\f797"}.fa-fedora:before{content:"\f798"}.fa-female:before{content:"\f182"}.fa-fighter-jet:before{content:"\f0fb"}.fa-figma:before{content:"\f799"}.fa-file:before{content:"\f15b"}.fa-file-alt:before{content:"\f15c"}.fa-file-archive:before{content:"\f1c6"}.fa-file-audio:before{content:"\f1c7"}.fa-file-code:before{content:"\f1c9"}.fa-file-contract:before{content:"\f56c"}.fa-file-csv:before{content:"\f6dd"}.fa-file-download:before{content:"\f56d"}.fa-file-excel:before{content:"\f1c3"}.fa-file-export:before{content:"\f56e"}.fa-file-image:before{content:"\f1c5"}.fa-file-import:before{content:"\f56f"}.fa-file-invoice:before{content:"\f570"}.fa-file-invoice-dollar:before{content:"\f571"}.fa-file-medical:before{content:"\f477"}.fa-file-medical-alt:before{content:"\f478"}.fa-file-pdf:before{content:"\f1c1"}.fa-file-powerpoint:before{content:"\f1c4"}.fa-file-prescription:before{content:"\f572"}.fa-file-signature:before{content:"\f573"}.fa-file-upload:before{content:"\f574"}.fa-file-video:before{content:"\f1c8"}.fa-file-word:before{content:"\f1c2"}.fa-fill:before{content:"\f575"}.fa-fill-drip:before{content:"\f576"}.fa-film:before{content:"\f008"}.fa-filter:before{content:"\f0b0"}.fa-fingerprint:before{content:"\f577"}.fa-fire:before{content:"\f06d"}.fa-fire-alt:before{content:"\f7e4"}.fa-fire-extinguisher:before{content:"\f134"}.fa-firefox:before{content:"\f269"}.fa-first-aid:before{content:"\f479"}.fa-first-order:before{content:"\f2b0"}.fa-first-order-alt:before{content:"\f50a"}.fa-firstdraft:before{content:"\f3a1"}.fa-fish:before{content:"\f578"}.fa-fist-raised:before{content:"\f6de"}.fa-flag:before{content:"\f024"}.fa-flag-checkered:before{content:"\f11e"}.fa-flag-usa:before{content:"\f74d"}.fa-flask:before{content:"\f0c3"}.fa-flickr:before{content:"\f16e"}.fa-flipboard:before{content:"\f44d"}.fa-flushed:before{content:"\f579"}.fa-fly:before{content:"\f417"}.fa-folder:before{content:"\f07b"}.fa-folder-minus:before{content:"\f65d"}.fa-folder-open:before{content:"\f07c"}.fa-folder-plus:before{content:"\f65e"}.fa-font:before{content:"\f031"}.fa-font-awesome:before{content:"\f2b4"}.fa-font-awesome-alt:before{content:"\f35c"}.fa-font-awesome-flag:before{content:"\f425"}.fa-font-awesome-logo-full:before{content:"\f4e6"}.fa-fonticons:before{content:"\f280"}.fa-fonticons-fi:before{content:"\f3a2"}.fa-football-ball:before{content:"\f44e"}.fa-fort-awesome:before{content:"\f286"}.fa-fort-awesome-alt:before{content:"\f3a3"}.fa-forumbee:before{content:"\f211"}.fa-forward:before{content:"\f04e"}.fa-foursquare:before{content:"\f180"}.fa-free-code-camp:before{content:"\f2c5"}.fa-freebsd:before{content:"\f3a4"}.fa-frog:before{content:"\f52e"}.fa-frown:before{content:"\f119"}.fa-frown-open:before{content:"\f57a"}.fa-fulcrum:before{content:"\f50b"}.fa-funnel-dollar:before{content:"\f662"}.fa-futbol:before{content:"\f1e3"}.fa-galactic-republic:before{content:"\f50c"}.fa-galactic-senate:before{content:"\f50d"}.fa-gamepad:before{content:"\f11b"}.fa-gas-pump:before{content:"\f52f"}.fa-gavel:before{content:"\f0e3"}.fa-gem:before{content:"\f3a5"}.fa-genderless:before{content:"\f22d"}.fa-get-pocket:before{content:"\f265"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-ghost:before{content:"\f6e2"}.fa-gift:before{content:"\f06b"}.fa-gifts:before{content:"\f79c"}.fa-git:before{content:"\f1d3"}.fa-git-alt:before{content:"\f841"}.fa-git-square:before{content:"\f1d2"}.fa-github:before{content:"\f09b"}.fa-github-alt:before{content:"\f113"}.fa-github-square:before{content:"\f092"}.fa-gitkraken:before{content:"\f3a6"}.fa-gitlab:before{content:"\f296"}.fa-gitter:before{content:"\f426"}.fa-glass-cheers:before{content:"\f79f"}.fa-glass-martini:before{content:"\f000"}.fa-glass-martini-alt:before{content:"\f57b"}.fa-glass-whiskey:before{content:"\f7a0"}.fa-glasses:before{content:"\f530"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-globe:before{content:"\f0ac"}.fa-globe-africa:before{content:"\f57c"}.fa-globe-americas:before{content:"\f57d"}.fa-globe-asia:before{content:"\f57e"}.fa-globe-europe:before{content:"\f7a2"}.fa-gofore:before{content:"\f3a7"}.fa-golf-ball:before{content:"\f450"}.fa-goodreads:before{content:"\f3a8"}.fa-goodreads-g:before{content:"\f3a9"}.fa-google:before{content:"\f1a0"}.fa-google-drive:before{content:"\f3aa"}.fa-google-play:before{content:"\f3ab"}.fa-google-plus:before{content:"\f2b3"}.fa-google-plus-g:before{content:"\f0d5"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-wallet:before{content:"\f1ee"}.fa-gopuram:before{content:"\f664"}.fa-graduation-cap:before{content:"\f19d"}.fa-gratipay:before{content:"\f184"}.fa-grav:before{content:"\f2d6"}.fa-greater-than:before{content:"\f531"}.fa-greater-than-equal:before{content:"\f532"}.fa-grimace:before{content:"\f57f"}.fa-grin:before{content:"\f580"}.fa-grin-alt:before{content:"\f581"}.fa-grin-beam:before{content:"\f582"}.fa-grin-beam-sweat:before{content:"\f583"}.fa-grin-hearts:before{content:"\f584"}.fa-grin-squint:before{content:"\f585"}.fa-grin-squint-tears:before{content:"\f586"}.fa-grin-stars:before{content:"\f587"}.fa-grin-tears:before{content:"\f588"}.fa-grin-tongue:before{content:"\f589"}.fa-grin-tongue-squint:before{content:"\f58a"}.fa-grin-tongue-wink:before{content:"\f58b"}.fa-grin-wink:before{content:"\f58c"}.fa-grip-horizontal:before{content:"\f58d"}.fa-grip-lines:before{content:"\f7a4"}.fa-grip-lines-vertical:before{content:"\f7a5"}.fa-grip-vertical:before{content:"\f58e"}.fa-gripfire:before{content:"\f3ac"}.fa-grunt:before{content:"\f3ad"}.fa-guitar:before{content:"\f7a6"}.fa-gulp:before{content:"\f3ae"}.fa-h-square:before{content:"\f0fd"}.fa-hacker-news:before{content:"\f1d4"}.fa-hacker-news-square:before{content:"\f3af"}.fa-hackerrank:before{content:"\f5f7"}.fa-hamburger:before{content:"\f805"}.fa-hammer:before{content:"\f6e3"}.fa-hamsa:before{content:"\f665"}.fa-hand-holding:before{content:"\f4bd"}.fa-hand-holding-heart:before{content:"\f4be"}.fa-hand-holding-usd:before{content:"\f4c0"}.fa-hand-lizard:before{content:"\f258"}.fa-hand-middle-finger:before{content:"\f806"}.fa-hand-paper:before{content:"\f256"}.fa-hand-peace:before{content:"\f25b"}.fa-hand-point-down:before{content:"\f0a7"}.fa-hand-point-left:before{content:"\f0a5"}.fa-hand-point-right:before{content:"\f0a4"}.fa-hand-point-up:before{content:"\f0a6"}.fa-hand-pointer:before{content:"\f25a"}.fa-hand-rock:before{content:"\f255"}.fa-hand-scissors:before{content:"\f257"}.fa-hand-spock:before{content:"\f259"}.fa-hands:before{content:"\f4c2"}.fa-hands-helping:before{content:"\f4c4"}.fa-handshake:before{content:"\f2b5"}.fa-hanukiah:before{content:"\f6e6"}.fa-hard-hat:before{content:"\f807"}.fa-hashtag:before{content:"\f292"}.fa-hat-wizard:before{content:"\f6e8"}.fa-haykal:before{content:"\f666"}.fa-hdd:before{content:"\f0a0"}.fa-heading:before{content:"\f1dc"}.fa-headphones:before{content:"\f025"}.fa-headphones-alt:before{content:"\f58f"}.fa-headset:before{content:"\f590"}.fa-heart:before{content:"\f004"}.fa-heart-broken:before{content:"\f7a9"}.fa-heartbeat:before{content:"\f21e"}.fa-helicopter:before{content:"\f533"}.fa-highlighter:before{content:"\f591"}.fa-hiking:before{content:"\f6ec"}.fa-hippo:before{content:"\f6ed"}.fa-hips:before{content:"\f452"}.fa-hire-a-helper:before{content:"\f3b0"}.fa-history:before{content:"\f1da"}.fa-hockey-puck:before{content:"\f453"}.fa-holly-berry:before{content:"\f7aa"}.fa-home:before{content:"\f015"}.fa-hooli:before{content:"\f427"}.fa-hornbill:before{content:"\f592"}.fa-horse:before{content:"\f6f0"}.fa-horse-head:before{content:"\f7ab"}.fa-hospital:before{content:"\f0f8"}.fa-hospital-alt:before{content:"\f47d"}.fa-hospital-symbol:before{content:"\f47e"}.fa-hot-tub:before{content:"\f593"}.fa-hotdog:before{content:"\f80f"}.fa-hotel:before{content:"\f594"}.fa-hotjar:before{content:"\f3b1"}.fa-hourglass:before{content:"\f254"}.fa-hourglass-end:before{content:"\f253"}.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-start:before{content:"\f251"}.fa-house-damage:before{content:"\f6f1"}.fa-houzz:before{content:"\f27c"}.fa-hryvnia:before{content:"\f6f2"}.fa-html5:before{content:"\f13b"}.fa-hubspot:before{content:"\f3b2"}.fa-i-cursor:before{content:"\f246"}.fa-ice-cream:before{content:"\f810"}.fa-icicles:before{content:"\f7ad"}.fa-icons:before{content:"\f86d"}.fa-id-badge:before{content:"\f2c1"}.fa-id-card:before{content:"\f2c2"}.fa-id-card-alt:before{content:"\f47f"}.fa-igloo:before{content:"\f7ae"}.fa-image:before{content:"\f03e"}.fa-images:before{content:"\f302"}.fa-imdb:before{content:"\f2d8"}.fa-inbox:before{content:"\f01c"}.fa-indent:before{content:"\f03c"}.fa-industry:before{content:"\f275"}.fa-infinity:before{content:"\f534"}.fa-info:before{content:"\f129"}.fa-info-circle:before{content:"\f05a"}.fa-instagram:before{content:"\f16d"}.fa-intercom:before{content:"\f7af"}.fa-internet-explorer:before{content:"\f26b"}.fa-invision:before{content:"\f7b0"}.fa-ioxhost:before{content:"\f208"}.fa-italic:before{content:"\f033"}.fa-itch-io:before{content:"\f83a"}.fa-itunes:before{content:"\f3b4"}.fa-itunes-note:before{content:"\f3b5"}.fa-java:before{content:"\f4e4"}.fa-jedi:before{content:"\f669"}.fa-jedi-order:before{content:"\f50e"}.fa-jenkins:before{content:"\f3b6"}.fa-jira:before{content:"\f7b1"}.fa-joget:before{content:"\f3b7"}.fa-joint:before{content:"\f595"}.fa-joomla:before{content:"\f1aa"}.fa-journal-whills:before{content:"\f66a"}.fa-js:before{content:"\f3b8"}.fa-js-square:before{content:"\f3b9"}.fa-jsfiddle:before{content:"\f1cc"}.fa-kaaba:before{content:"\f66b"}.fa-kaggle:before{content:"\f5fa"}.fa-key:before{content:"\f084"}.fa-keybase:before{content:"\f4f5"}.fa-keyboard:before{content:"\f11c"}.fa-keycdn:before{content:"\f3ba"}.fa-khanda:before{content:"\f66d"}.fa-kickstarter:before{content:"\f3bb"}.fa-kickstarter-k:before{content:"\f3bc"}.fa-kiss:before{content:"\f596"}.fa-kiss-beam:before{content:"\f597"}.fa-kiss-wink-heart:before{content:"\f598"}.fa-kiwi-bird:before{content:"\f535"}.fa-korvue:before{content:"\f42f"}.fa-landmark:before{content:"\f66f"}.fa-language:before{content:"\f1ab"}.fa-laptop:before{content:"\f109"}.fa-laptop-code:before{content:"\f5fc"}.fa-laptop-medical:before{content:"\f812"}.fa-laravel:before{content:"\f3bd"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-laugh:before{content:"\f599"}.fa-laugh-beam:before{content:"\f59a"}.fa-laugh-squint:before{content:"\f59b"}.fa-laugh-wink:before{content:"\f59c"}.fa-layer-group:before{content:"\f5fd"}.fa-leaf:before{content:"\f06c"}.fa-leanpub:before{content:"\f212"}.fa-lemon:before{content:"\f094"}.fa-less:before{content:"\f41d"}.fa-less-than:before{content:"\f536"}.fa-less-than-equal:before{content:"\f537"}.fa-level-down-alt:before{content:"\f3be"}.fa-level-up-alt:before{content:"\f3bf"}.fa-life-ring:before{content:"\f1cd"}.fa-lightbulb:before{content:"\f0eb"}.fa-line:before{content:"\f3c0"}.fa-link:before{content:"\f0c1"}.fa-linkedin:before{content:"\f08c"}.fa-linkedin-in:before{content:"\f0e1"}.fa-linode:before{content:"\f2b8"}.fa-linux:before{content:"\f17c"}.fa-lira-sign:before{content:"\f195"}.fa-list:before{content:"\f03a"}.fa-list-alt:before{content:"\f022"}.fa-list-ol:before{content:"\f0cb"}.fa-list-ul:before{content:"\f0ca"}.fa-location-arrow:before{content:"\f124"}.fa-lock:before{content:"\f023"}.fa-lock-open:before{content:"\f3c1"}.fa-long-arrow-alt-down:before{content:"\f309"}.fa-long-arrow-alt-left:before{content:"\f30a"}.fa-long-arrow-alt-right:before{content:"\f30b"}.fa-long-arrow-alt-up:before{content:"\f30c"}.fa-low-vision:before{content:"\f2a8"}.fa-luggage-cart:before{content:"\f59d"}.fa-lyft:before{content:"\f3c3"}.fa-magento:before{content:"\f3c4"}.fa-magic:before{content:"\f0d0"}.fa-magnet:before{content:"\f076"}.fa-mail-bulk:before{content:"\f674"}.fa-mailchimp:before{content:"\f59e"}.fa-male:before{content:"\f183"}.fa-mandalorian:before{content:"\f50f"}.fa-map:before{content:"\f279"}.fa-map-marked:before{content:"\f59f"}.fa-map-marked-alt:before{content:"\f5a0"}.fa-map-marker:before{content:"\f041"}.fa-map-marker-alt:before{content:"\f3c5"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-markdown:before{content:"\f60f"}.fa-marker:before{content:"\f5a1"}.fa-mars:before{content:"\f222"}.fa-mars-double:before{content:"\f227"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mask:before{content:"\f6fa"}.fa-mastodon:before{content:"\f4f6"}.fa-maxcdn:before{content:"\f136"}.fa-medal:before{content:"\f5a2"}.fa-medapps:before{content:"\f3c6"}.fa-medium:before{content:"\f23a"}.fa-medium-m:before{content:"\f3c7"}.fa-medkit:before{content:"\f0fa"}.fa-medrt:before{content:"\f3c8"}.fa-meetup:before{content:"\f2e0"}.fa-megaport:before{content:"\f5a3"}.fa-meh:before{content:"\f11a"}.fa-meh-blank:before{content:"\f5a4"}.fa-meh-rolling-eyes:before{content:"\f5a5"}.fa-memory:before{content:"\f538"}.fa-mendeley:before{content:"\f7b3"}.fa-menorah:before{content:"\f676"}.fa-mercury:before{content:"\f223"}.fa-meteor:before{content:"\f753"}.fa-microchip:before{content:"\f2db"}.fa-microphone:before{content:"\f130"}.fa-microphone-alt:before{content:"\f3c9"}.fa-microphone-alt-slash:before{content:"\f539"}.fa-microphone-slash:before{content:"\f131"}.fa-microscope:before{content:"\f610"}.fa-microsoft:before{content:"\f3ca"}.fa-minus:before{content:"\f068"}.fa-minus-circle:before{content:"\f056"}.fa-minus-square:before{content:"\f146"}.fa-mitten:before{content:"\f7b5"}.fa-mix:before{content:"\f3cb"}.fa-mixcloud:before{content:"\f289"}.fa-mizuni:before{content:"\f3cc"}.fa-mobile:before{content:"\f10b"}.fa-mobile-alt:before{content:"\f3cd"}.fa-modx:before{content:"\f285"}.fa-monero:before{content:"\f3d0"}.fa-money-bill:before{content:"\f0d6"}.fa-money-bill-alt:before{content:"\f3d1"}.fa-money-bill-wave:before{content:"\f53a"}.fa-money-bill-wave-alt:before{content:"\f53b"}.fa-money-check:before{content:"\f53c"}.fa-money-check-alt:before{content:"\f53d"}.fa-monument:before{content:"\f5a6"}.fa-moon:before{content:"\f186"}.fa-mortar-pestle:before{content:"\f5a7"}.fa-mosque:before{content:"\f678"}.fa-motorcycle:before{content:"\f21c"}.fa-mountain:before{content:"\f6fc"}.fa-mouse-pointer:before{content:"\f245"}.fa-mug-hot:before{content:"\f7b6"}.fa-music:before{content:"\f001"}.fa-napster:before{content:"\f3d2"}.fa-neos:before{content:"\f612"}.fa-network-wired:before{content:"\f6ff"}.fa-neuter:before{content:"\f22c"}.fa-newspaper:before{content:"\f1ea"}.fa-nimblr:before{content:"\f5a8"}.fa-node:before{content:"\f419"}.fa-node-js:before{content:"\f3d3"}.fa-not-equal:before{content:"\f53e"}.fa-notes-medical:before{content:"\f481"}.fa-npm:before{content:"\f3d4"}.fa-ns8:before{content:"\f3d5"}.fa-nutritionix:before{content:"\f3d6"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-oil-can:before{content:"\f613"}.fa-old-republic:before{content:"\f510"}.fa-om:before{content:"\f679"}.fa-opencart:before{content:"\f23d"}.fa-openid:before{content:"\f19b"}.fa-opera:before{content:"\f26a"}.fa-optin-monster:before{content:"\f23c"}.fa-osi:before{content:"\f41a"}.fa-otter:before{content:"\f700"}.fa-outdent:before{content:"\f03b"}.fa-page4:before{content:"\f3d7"}.fa-pagelines:before{content:"\f18c"}.fa-pager:before{content:"\f815"}.fa-paint-brush:before{content:"\f1fc"}.fa-paint-roller:before{content:"\f5aa"}.fa-palette:before{content:"\f53f"}.fa-palfed:before{content:"\f3d8"}.fa-pallet:before{content:"\f482"}.fa-paper-plane:before{content:"\f1d8"}.fa-paperclip:before{content:"\f0c6"}.fa-parachute-box:before{content:"\f4cd"}.fa-paragraph:before{content:"\f1dd"}.fa-parking:before{content:"\f540"}.fa-passport:before{content:"\f5ab"}.fa-pastafarianism:before{content:"\f67b"}.fa-paste:before{content:"\f0ea"}.fa-patreon:before{content:"\f3d9"}.fa-pause:before{content:"\f04c"}.fa-pause-circle:before{content:"\f28b"}.fa-paw:before{content:"\f1b0"}.fa-paypal:before{content:"\f1ed"}.fa-peace:before{content:"\f67c"}.fa-pen:before{content:"\f304"}.fa-pen-alt:before{content:"\f305"}.fa-pen-fancy:before{content:"\f5ac"}.fa-pen-nib:before{content:"\f5ad"}.fa-pen-square:before{content:"\f14b"}.fa-pencil-alt:before{content:"\f303"}.fa-pencil-ruler:before{content:"\f5ae"}.fa-penny-arcade:before{content:"\f704"}.fa-people-carry:before{content:"\f4ce"}.fa-pepper-hot:before{content:"\f816"}.fa-percent:before{content:"\f295"}.fa-percentage:before{content:"\f541"}.fa-periscope:before{content:"\f3da"}.fa-person-booth:before{content:"\f756"}.fa-phabricator:before{content:"\f3db"}.fa-phoenix-framework:before{content:"\f3dc"}.fa-phoenix-squadron:before{content:"\f511"}.fa-phone:before{content:"\f095"}.fa-phone-alt:before{content:"\f879"}.fa-phone-slash:before{content:"\f3dd"}.fa-phone-square:before{content:"\f098"}.fa-phone-square-alt:before{content:"\f87b"}.fa-phone-volume:before{content:"\f2a0"}.fa-photo-video:before{content:"\f87c"}.fa-php:before{content:"\f457"}.fa-pied-piper:before{content:"\f2ae"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-pied-piper-hat:before{content:"\f4e5"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-piggy-bank:before{content:"\f4d3"}.fa-pills:before{content:"\f484"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-p:before{content:"\f231"}.fa-pinterest-square:before{content:"\f0d3"}.fa-pizza-slice:before{content:"\f818"}.fa-place-of-worship:before{content:"\f67f"}.fa-plane:before{content:"\f072"}.fa-plane-arrival:before{content:"\f5af"}.fa-plane-departure:before{content:"\f5b0"}.fa-play:before{content:"\f04b"}.fa-play-circle:before{content:"\f144"}.fa-playstation:before{content:"\f3df"}.fa-plug:before{content:"\f1e6"}.fa-plus:before{content:"\f067"}.fa-plus-circle:before{content:"\f055"}.fa-plus-square:before{content:"\f0fe"}.fa-podcast:before{content:"\f2ce"}.fa-poll:before{content:"\f681"}.fa-poll-h:before{content:"\f682"}.fa-poo:before{content:"\f2fe"}.fa-poo-storm:before{content:"\f75a"}.fa-poop:before{content:"\f619"}.fa-portrait:before{content:"\f3e0"}.fa-pound-sign:before{content:"\f154"}.fa-power-off:before{content:"\f011"}.fa-pray:before{content:"\f683"}.fa-praying-hands:before{content:"\f684"}.fa-prescription:before{content:"\f5b1"}.fa-prescription-bottle:before{content:"\f485"}.fa-prescription-bottle-alt:before{content:"\f486"}.fa-print:before{content:"\f02f"}.fa-procedures:before{content:"\f487"}.fa-product-hunt:before{content:"\f288"}.fa-project-diagram:before{content:"\f542"}.fa-pushed:before{content:"\f3e1"}.fa-puzzle-piece:before{content:"\f12e"}.fa-python:before{content:"\f3e2"}.fa-qq:before{content:"\f1d6"}.fa-qrcode:before{content:"\f029"}.fa-question:before{content:"\f128"}.fa-question-circle:before{content:"\f059"}.fa-quidditch:before{content:"\f458"}.fa-quinscape:before{content:"\f459"}.fa-quora:before{content:"\f2c4"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-quran:before{content:"\f687"}.fa-r-project:before{content:"\f4f7"}.fa-radiation:before{content:"\f7b9"}.fa-radiation-alt:before{content:"\f7ba"}.fa-rainbow:before{content:"\f75b"}.fa-random:before{content:"\f074"}.fa-raspberry-pi:before{content:"\f7bb"}.fa-ravelry:before{content:"\f2d9"}.fa-react:before{content:"\f41b"}.fa-reacteurope:before{content:"\f75d"}.fa-readme:before{content:"\f4d5"}.fa-rebel:before{content:"\f1d0"}.fa-receipt:before{content:"\f543"}.fa-recycle:before{content:"\f1b8"}.fa-red-river:before{content:"\f3e3"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-alien:before{content:"\f281"}.fa-reddit-square:before{content:"\f1a2"}.fa-redhat:before{content:"\f7bc"}.fa-redo:before{content:"\f01e"}.fa-redo-alt:before{content:"\f2f9"}.fa-registered:before{content:"\f25d"}.fa-remove-format:before{content:"\f87d"}.fa-renren:before{content:"\f18b"}.fa-reply:before{content:"\f3e5"}.fa-reply-all:before{content:"\f122"}.fa-replyd:before{content:"\f3e6"}.fa-republican:before{content:"\f75e"}.fa-researchgate:before{content:"\f4f8"}.fa-resolving:before{content:"\f3e7"}.fa-restroom:before{content:"\f7bd"}.fa-retweet:before{content:"\f079"}.fa-rev:before{content:"\f5b2"}.fa-ribbon:before{content:"\f4d6"}.fa-ring:before{content:"\f70b"}.fa-road:before{content:"\f018"}.fa-robot:before{content:"\f544"}.fa-rocket:before{content:"\f135"}.fa-rocketchat:before{content:"\f3e8"}.fa-rockrms:before{content:"\f3e9"}.fa-route:before{content:"\f4d7"}.fa-rss:before{content:"\f09e"}.fa-rss-square:before{content:"\f143"}.fa-ruble-sign:before{content:"\f158"}.fa-ruler:before{content:"\f545"}.fa-ruler-combined:before{content:"\f546"}.fa-ruler-horizontal:before{content:"\f547"}.fa-ruler-vertical:before{content:"\f548"}.fa-running:before{content:"\f70c"}.fa-rupee-sign:before{content:"\f156"}.fa-sad-cry:before{content:"\f5b3"}.fa-sad-tear:before{content:"\f5b4"}.fa-safari:before{content:"\f267"}.fa-salesforce:before{content:"\f83b"}.fa-sass:before{content:"\f41e"}.fa-satellite:before{content:"\f7bf"}.fa-satellite-dish:before{content:"\f7c0"}.fa-save:before{content:"\f0c7"}.fa-schlix:before{content:"\f3ea"}.fa-school:before{content:"\f549"}.fa-screwdriver:before{content:"\f54a"}.fa-scribd:before{content:"\f28a"}.fa-scroll:before{content:"\f70e"}.fa-sd-card:before{content:"\f7c2"}.fa-search:before{content:"\f002"}.fa-search-dollar:before{content:"\f688"}.fa-search-location:before{content:"\f689"}.fa-search-minus:before{content:"\f010"}.fa-search-plus:before{content:"\f00e"}.fa-searchengin:before{content:"\f3eb"}.fa-seedling:before{content:"\f4d8"}.fa-sellcast:before{content:"\f2da"}.fa-sellsy:before{content:"\f213"}.fa-server:before{content:"\f233"}.fa-servicestack:before{content:"\f3ec"}.fa-shapes:before{content:"\f61f"}.fa-share:before{content:"\f064"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-share-square:before{content:"\f14d"}.fa-shekel-sign:before{content:"\f20b"}.fa-shield-alt:before{content:"\f3ed"}.fa-ship:before{content:"\f21a"}.fa-shipping-fast:before{content:"\f48b"}.fa-shirtsinbulk:before{content:"\f214"}.fa-shoe-prints:before{content:"\f54b"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-shopping-cart:before{content:"\f07a"}.fa-shopware:before{content:"\f5b5"}.fa-shower:before{content:"\f2cc"}.fa-shuttle-van:before{content:"\f5b6"}.fa-sign:before{content:"\f4d9"}.fa-sign-in-alt:before{content:"\f2f6"}.fa-sign-language:before{content:"\f2a7"}.fa-sign-out-alt:before{content:"\f2f5"}.fa-signal:before{content:"\f012"}.fa-signature:before{content:"\f5b7"}.fa-sim-card:before{content:"\f7c4"}.fa-simplybuilt:before{content:"\f215"}.fa-sistrix:before{content:"\f3ee"}.fa-sitemap:before{content:"\f0e8"}.fa-sith:before{content:"\f512"}.fa-skating:before{content:"\f7c5"}.fa-sketch:before{content:"\f7c6"}.fa-skiing:before{content:"\f7c9"}.fa-skiing-nordic:before{content:"\f7ca"}.fa-skull:before{content:"\f54c"}.fa-skull-crossbones:before{content:"\f714"}.fa-skyatlas:before{content:"\f216"}.fa-skype:before{content:"\f17e"}.fa-slack:before{content:"\f198"}.fa-slack-hash:before{content:"\f3ef"}.fa-slash:before{content:"\f715"}.fa-sleigh:before{content:"\f7cc"}.fa-sliders-h:before{content:"\f1de"}.fa-slideshare:before{content:"\f1e7"}.fa-smile:before{content:"\f118"}.fa-smile-beam:before{content:"\f5b8"}.fa-smile-wink:before{content:"\f4da"}.fa-smog:before{content:"\f75f"}.fa-smoking:before{content:"\f48d"}.fa-smoking-ban:before{content:"\f54d"}.fa-sms:before{content:"\f7cd"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-snowboarding:before{content:"\f7ce"}.fa-snowflake:before{content:"\f2dc"}.fa-snowman:before{content:"\f7d0"}.fa-snowplow:before{content:"\f7d2"}.fa-socks:before{content:"\f696"}.fa-solar-panel:before{content:"\f5ba"}.fa-sort:before{content:"\f0dc"}.fa-sort-alpha-down:before{content:"\f15d"}.fa-sort-alpha-down-alt:before{content:"\f881"}.fa-sort-alpha-up:before{content:"\f15e"}.fa-sort-alpha-up-alt:before{content:"\f882"}.fa-sort-amount-down:before{content:"\f160"}.fa-sort-amount-down-alt:before{content:"\f884"}.fa-sort-amount-up:before{content:"\f161"}.fa-sort-amount-up-alt:before{content:"\f885"}.fa-sort-down:before{content:"\f0dd"}.fa-sort-numeric-down:before{content:"\f162"}.fa-sort-numeric-down-alt:before{content:"\f886"}.fa-sort-numeric-up:before{content:"\f163"}.fa-sort-numeric-up-alt:before{content:"\f887"}.fa-sort-up:before{content:"\f0de"}.fa-soundcloud:before{content:"\f1be"}.fa-sourcetree:before{content:"\f7d3"}.fa-spa:before{content:"\f5bb"}.fa-space-shuttle:before{content:"\f197"}.fa-speakap:before{content:"\f3f3"}.fa-speaker-deck:before{content:"\f83c"}.fa-spell-check:before{content:"\f891"}.fa-spider:before{content:"\f717"}.fa-spinner:before{content:"\f110"}.fa-splotch:before{content:"\f5bc"}.fa-spotify:before{content:"\f1bc"}.fa-spray-can:before{content:"\f5bd"}.fa-square:before{content:"\f0c8"}.fa-square-full:before{content:"\f45c"}.fa-square-root-alt:before{content:"\f698"}.fa-squarespace:before{content:"\f5be"}.fa-stack-exchange:before{content:"\f18d"}.fa-stack-overflow:before{content:"\f16c"}.fa-stackpath:before{content:"\f842"}.fa-stamp:before{content:"\f5bf"}.fa-star:before{content:"\f005"}.fa-star-and-crescent:before{content:"\f699"}.fa-star-half:before{content:"\f089"}.fa-star-half-alt:before{content:"\f5c0"}.fa-star-of-david:before{content:"\f69a"}.fa-star-of-life:before{content:"\f621"}.fa-staylinked:before{content:"\f3f5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-steam-symbol:before{content:"\f3f6"}.fa-step-backward:before{content:"\f048"}.fa-step-forward:before{content:"\f051"}.fa-stethoscope:before{content:"\f0f1"}.fa-sticker-mule:before{content:"\f3f7"}.fa-sticky-note:before{content:"\f249"}.fa-stop:before{content:"\f04d"}.fa-stop-circle:before{content:"\f28d"}.fa-stopwatch:before{content:"\f2f2"}.fa-store:before{content:"\f54e"}.fa-store-alt:before{content:"\f54f"}.fa-strava:before{content:"\f428"}.fa-stream:before{content:"\f550"}.fa-street-view:before{content:"\f21d"}.fa-strikethrough:before{content:"\f0cc"}.fa-stripe:before{content:"\f429"}.fa-stripe-s:before{content:"\f42a"}.fa-stroopwafel:before{content:"\f551"}.fa-studiovinari:before{content:"\f3f8"}.fa-stumbleupon:before{content:"\f1a4"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-subscript:before{content:"\f12c"}.fa-subway:before{content:"\f239"}.fa-suitcase:before{content:"\f0f2"}.fa-suitcase-rolling:before{content:"\f5c1"}.fa-sun:before{content:"\f185"}.fa-superpowers:before{content:"\f2dd"}.fa-superscript:before{content:"\f12b"}.fa-supple:before{content:"\f3f9"}.fa-surprise:before{content:"\f5c2"}.fa-suse:before{content:"\f7d6"}.fa-swatchbook:before{content:"\f5c3"}.fa-swimmer:before{content:"\f5c4"}.fa-swimming-pool:before{content:"\f5c5"}.fa-symfony:before{content:"\f83d"}.fa-synagogue:before{content:"\f69b"}.fa-sync:before{content:"\f021"}.fa-sync-alt:before{content:"\f2f1"}.fa-syringe:before{content:"\f48e"}.fa-table:before{content:"\f0ce"}.fa-table-tennis:before{content:"\f45d"}.fa-tablet:before{content:"\f10a"}.fa-tablet-alt:before{content:"\f3fa"}.fa-tablets:before{content:"\f490"}.fa-tachometer-alt:before{content:"\f3fd"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-tape:before{content:"\f4db"}.fa-tasks:before{content:"\f0ae"}.fa-taxi:before{content:"\f1ba"}.fa-teamspeak:before{content:"\f4f9"}.fa-teeth:before{content:"\f62e"}.fa-teeth-open:before{content:"\f62f"}.fa-telegram:before{content:"\f2c6"}.fa-telegram-plane:before{content:"\f3fe"}.fa-temperature-high:before{content:"\f769"}.fa-temperature-low:before{content:"\f76b"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-tenge:before{content:"\f7d7"}.fa-terminal:before{content:"\f120"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-th:before{content:"\f00a"}.fa-th-large:before{content:"\f009"}.fa-th-list:before{content:"\f00b"}.fa-the-red-yeti:before{content:"\f69d"}.fa-theater-masks:before{content:"\f630"}.fa-themeco:before{content:"\f5c6"}.fa-themeisle:before{content:"\f2b2"}.fa-thermometer:before{content:"\f491"}.fa-thermometer-empty:before{content:"\f2cb"}.fa-thermometer-full:before{content:"\f2c7"}.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-think-peaks:before{content:"\f731"}.fa-thumbs-down:before{content:"\f165"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbtack:before{content:"\f08d"}.fa-ticket-alt:before{content:"\f3ff"}.fa-times:before{content:"\f00d"}.fa-times-circle:before{content:"\f057"}.fa-tint:before{content:"\f043"}.fa-tint-slash:before{content:"\f5c7"}.fa-tired:before{content:"\f5c8"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-toilet:before{content:"\f7d8"}.fa-toilet-paper:before{content:"\f71e"}.fa-toolbox:before{content:"\f552"}.fa-tools:before{content:"\f7d9"}.fa-tooth:before{content:"\f5c9"}.fa-torah:before{content:"\f6a0"}.fa-torii-gate:before{content:"\f6a1"}.fa-tractor:before{content:"\f722"}.fa-trade-federation:before{content:"\f513"}.fa-trademark:before{content:"\f25c"}.fa-traffic-light:before{content:"\f637"}.fa-train:before{content:"\f238"}.fa-tram:before{content:"\f7da"}.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-trash:before{content:"\f1f8"}.fa-trash-alt:before{content:"\f2ed"}.fa-trash-restore:before{content:"\f829"}.fa-trash-restore-alt:before{content:"\f82a"}.fa-tree:before{content:"\f1bb"}.fa-trello:before{content:"\f181"}.fa-tripadvisor:before{content:"\f262"}.fa-trophy:before{content:"\f091"}.fa-truck:before{content:"\f0d1"}.fa-truck-loading:before{content:"\f4de"}.fa-truck-monster:before{content:"\f63b"}.fa-truck-moving:before{content:"\f4df"}.fa-truck-pickup:before{content:"\f63c"}.fa-tshirt:before{content:"\f553"}.fa-tty:before{content:"\f1e4"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-tv:before{content:"\f26c"}.fa-twitch:before{content:"\f1e8"}.fa-twitter:before{content:"\f099"}.fa-twitter-square:before{content:"\f081"}.fa-typo3:before{content:"\f42b"}.fa-uber:before{content:"\f402"}.fa-ubuntu:before{content:"\f7df"}.fa-uikit:before{content:"\f403"}.fa-umbrella:before{content:"\f0e9"}.fa-umbrella-beach:before{content:"\f5ca"}.fa-underline:before{content:"\f0cd"}.fa-undo:before{content:"\f0e2"}.fa-undo-alt:before{content:"\f2ea"}.fa-uniregistry:before{content:"\f404"}.fa-universal-access:before{content:"\f29a"}.fa-university:before{content:"\f19c"}.fa-unlink:before{content:"\f127"}.fa-unlock:before{content:"\f09c"}.fa-unlock-alt:before{content:"\f13e"}.fa-untappd:before{content:"\f405"}.fa-upload:before{content:"\f093"}.fa-ups:before{content:"\f7e0"}.fa-usb:before{content:"\f287"}.fa-user:before{content:"\f007"}.fa-user-alt:before{content:"\f406"}.fa-user-alt-slash:before{content:"\f4fa"}.fa-user-astronaut:before{content:"\f4fb"}.fa-user-check:before{content:"\f4fc"}.fa-user-circle:before{content:"\f2bd"}.fa-user-clock:before{content:"\f4fd"}.fa-user-cog:before{content:"\f4fe"}.fa-user-edit:before{content:"\f4ff"}.fa-user-friends:before{content:"\f500"}.fa-user-graduate:before{content:"\f501"}.fa-user-injured:before{content:"\f728"}.fa-user-lock:before{content:"\f502"}.fa-user-md:before{content:"\f0f0"}.fa-user-minus:before{content:"\f503"}.fa-user-ninja:before{content:"\f504"}.fa-user-nurse:before{content:"\f82f"}.fa-user-plus:before{content:"\f234"}.fa-user-secret:before{content:"\f21b"}.fa-user-shield:before{content:"\f505"}.fa-user-slash:before{content:"\f506"}.fa-user-tag:before{content:"\f507"}.fa-user-tie:before{content:"\f508"}.fa-user-times:before{content:"\f235"}.fa-users:before{content:"\f0c0"}.fa-users-cog:before{content:"\f509"}.fa-usps:before{content:"\f7e1"}.fa-ussunnah:before{content:"\f407"}.fa-utensil-spoon:before{content:"\f2e5"}.fa-utensils:before{content:"\f2e7"}.fa-vaadin:before{content:"\f408"}.fa-vector-square:before{content:"\f5cb"}.fa-venus:before{content:"\f221"}.fa-venus-double:before{content:"\f226"}.fa-venus-mars:before{content:"\f228"}.fa-viacoin:before{content:"\f237"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-vial:before{content:"\f492"}.fa-vials:before{content:"\f493"}.fa-viber:before{content:"\f409"}.fa-video:before{content:"\f03d"}.fa-video-slash:before{content:"\f4e2"}.fa-vihara:before{content:"\f6a7"}.fa-vimeo:before{content:"\f40a"}.fa-vimeo-square:before{content:"\f194"}.fa-vimeo-v:before{content:"\f27d"}.fa-vine:before{content:"\f1ca"}.fa-vk:before{content:"\f189"}.fa-vnv:before{content:"\f40b"}.fa-voicemail:before{content:"\f897"}.fa-volleyball-ball:before{content:"\f45f"}.fa-volume-down:before{content:"\f027"}.fa-volume-mute:before{content:"\f6a9"}.fa-volume-off:before{content:"\f026"}.fa-volume-up:before{content:"\f028"}.fa-vote-yea:before{content:"\f772"}.fa-vr-cardboard:before{content:"\f729"}.fa-vuejs:before{content:"\f41f"}.fa-walking:before{content:"\f554"}.fa-wallet:before{content:"\f555"}.fa-warehouse:before{content:"\f494"}.fa-water:before{content:"\f773"}.fa-wave-square:before{content:"\f83e"}.fa-waze:before{content:"\f83f"}.fa-weebly:before{content:"\f5cc"}.fa-weibo:before{content:"\f18a"}.fa-weight:before{content:"\f496"}.fa-weight-hanging:before{content:"\f5cd"}.fa-weixin:before{content:"\f1d7"}.fa-whatsapp:before{content:"\f232"}.fa-whatsapp-square:before{content:"\f40c"}.fa-wheelchair:before{content:"\f193"}.fa-whmcs:before{content:"\f40d"}.fa-wifi:before{content:"\f1eb"}.fa-wikipedia-w:before{content:"\f266"}.fa-wind:before{content:"\f72e"}.fa-window-close:before{content:"\f410"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-windows:before{content:"\f17a"}.fa-wine-bottle:before{content:"\f72f"}.fa-wine-glass:before{content:"\f4e3"}.fa-wine-glass-alt:before{content:"\f5ce"}.fa-wix:before{content:"\f5cf"}.fa-wizards-of-the-coast:before{content:"\f730"}.fa-wolf-pack-battalion:before{content:"\f514"}.fa-won-sign:before{content:"\f159"}.fa-wordpress:before{content:"\f19a"}.fa-wordpress-simple:before{content:"\f411"}.fa-wpbeginner:before{content:"\f297"}.fa-wpexplorer:before{content:"\f2de"}.fa-wpforms:before{content:"\f298"}.fa-wpressr:before{content:"\f3e4"}.fa-wrench:before{content:"\f0ad"}.fa-x-ray:before{content:"\f497"}.fa-xbox:before{content:"\f412"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-y-combinator:before{content:"\f23b"}.fa-yahoo:before{content:"\f19e"}.fa-yammer:before{content:"\f840"}.fa-yandex:before{content:"\f413"}.fa-yandex-international:before{content:"\f414"}.fa-yarn:before{content:"\f7e3"}.fa-yelp:before{content:"\f1e9"}.fa-yen-sign:before{content:"\f157"}.fa-yin-yang:before{content:"\f6ad"}.fa-yoast:before{content:"\f2b1"}.fa-youtube:before{content:"\f167"}.fa-youtube-square:before{content:"\f431"}.fa-zhihu:before{content:"\f63f"}.sr-only{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sr-only-focusable:active,.sr-only-focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}@font-face{font-family:"Font Awesome 5 Brands";font-style:normal;font-weight:normal;font-display:auto;src:url(../webfonts/fa-brands-400.eot);src:url(../webfonts/fa-brands-400.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.woff) format("woff"),url(../webfonts/fa-brands-400.ttf) format("truetype"),url(../webfonts/fa-brands-400.svg#fontawesome) format("svg")}.fab{font-family:"Font Awesome 5 Brands"}@font-face{font-family:"Font Awesome 5 Free";font-style:normal;font-weight:400;font-display:auto;src:url(../webfonts/fa-regular-400.eot);src:url(../webfonts/fa-regular-400.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.woff) format("woff"),url(../webfonts/fa-regular-400.ttf) format("truetype"),url(../webfonts/fa-regular-400.svg#fontawesome) format("svg")}.far{font-weight:400}@font-face{font-family:"Font Awesome 5 Free";font-style:normal;font-weight:900;font-display:auto;src:url(../webfonts/fa-solid-900.eot);src:url(../webfonts/fa-solid-900.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.woff) format("woff"),url(../webfonts/fa-solid-900.ttf) format("truetype"),url(../webfonts/fa-solid-900.svg#fontawesome) format("svg")}.fa,.far,.fas{font-family:"Font Awesome 5 Free"}.fa,.fas{font-weight:900} \ No newline at end of file diff --git a/archive/barber/assets/css/images/overlay.png b/archive/barber/assets/css/images/overlay.png new file mode 100755 index 0000000..0764509 Binary files /dev/null and b/archive/barber/assets/css/images/overlay.png differ diff --git a/archive/barber/assets/css/main.css b/archive/barber/assets/css/main.css new file mode 100755 index 0000000..0eb7046 --- /dev/null +++ b/archive/barber/assets/css/main.css @@ -0,0 +1,4153 @@ +@import url(fontawesome-all.min.css); +@import url("https://fonts.googleapis.com/css?family=Open+Sans:300,600,300italic,600italic"); + +/* + Catalyst by Pixelarity + pixelarity.com | hello@pixelarity.com + License: pixelarity.com/license +*/ + + +html{ + scroll-behavior: smooth; +} + +html, body, div, span, applet, object, +iframe, h1, h2, h3, h4, h5, h6, p, blockquote, +pre, a, abbr, acronym, address, big, cite, +code, del, dfn, em, img, ins, kbd, q, s, samp, +small, strike, strong, sub, sup, tt, var, b, +u, i, center, dl, dt, dd, ol, ul, li, fieldset, +form, label, legend, table, caption, tbody, +tfoot, thead, tr, th, td, article, aside, +canvas, details, embed, figure, figcaption, +footer, header, hgroup, menu, nav, output, ruby, +section, summary, time, mark, audio, video { + margin: 0; + padding: 0; + border: 0; + font-size: 100%; + font: inherit; + vertical-align: baseline;} + +article, aside, details, figcaption, figure, +footer, header, hgroup, menu, nav, section { + display: block;} + +body { + line-height: 1; + font-family: 'Poppins', sans-serif; +} + +ol, ul { + list-style: none; +} + +blockquote, q { + quotes: none; +} + + blockquote:before, blockquote:after, q:before, q:after { + content: ''; + content: none; + } + +table { + border-collapse: collapse; + border-spacing: 0; +} + +body { + -webkit-text-size-adjust: none; +} + +mark { + background-color: transparent; + color: inherit; +} + +input::-moz-focus-inner { + border: 0; + padding: 0; +} + +input, select, textarea { + -moz-appearance: none; + -webkit-appearance: none; + -ms-appearance: none; + appearance: none; +} + +/* Basic */ + + html { + box-sizing: border-box; + } + + *, *:before, *:after { + box-sizing: inherit; + } + + body { + background: #fff; + } + + body.is-preload *, body.is-preload *:before, body.is-preload *:after { + -moz-animation: none !important; + -webkit-animation: none !important; + -ms-animation: none !important; + animation: none !important; + -moz-transition: none !important; + -webkit-transition: none !important; + -ms-transition: none !important; + transition: none !important; + } + + body, input, select, textarea { + color: #4a4a4a; + background: #000; + font-family: "Poppins", sans-serif; + font-size: 13pt; + font-weight: 300; + line-height: 1.75em; + } + + a { + color: #51c5e8; + text-decoration: underline; + } + + a:hover { + text-decoration: none; + } + + strong, b { + color: #2a2a2a; + font-weight: 600; + } + + em, i { + font-style: italic; + } + + p { + margin: 0 0 2em 0; + } + + h1, h2, h3, h4, h5, h6 { + color: #2a2a2a; + font-weight: 600; + letter-spacing: 0.125em; + line-height: 1em; + margin: 0 0 1em 0; + } + + h1 a, h2 a, h3 a, h4 a, h5 a, h6 a { + color: inherit; + text-decoration: none; + } + + h2 { + font-size: 1.5em; + line-height: 1.75em; + } + + h3 { + font-size: 1.25em; + line-height: 1.5em; + } + + h4 { + font-size: 1.1em; + line-height: 1.5em; + } + + h5 { + font-size: 0.9em; + line-height: 1.5em; + } + + h6 { + font-size: 0.7em; + line-height: 1.5em; + } + + sub { + font-size: 0.8em; + position: relative; + top: 0.5em; + } + + sup { + font-size: 0.8em; + position: relative; + top: -0.5em; + } + + hr { + border: 0; + border-bottom: solid 3px #eee; + margin: 3em 0; + } + + hr.major { + margin: 5em 0; + } + + blockquote { + border-left: solid 8px #eee; + font-style: italic; + margin: 0 0 2em 0; + padding: 0.5em 0 0.5em 2em; + } + + pre { + -webkit-overflow-scrolling: touch; + background: rgba(144, 144, 144, 0.05); + font-family: "Courier New", monospace; + font-size: 0.9em; + line-height: 1.5em; + margin: 0 0 2em 0; + overflow-x: auto; + padding: 1em 1.5em; + } + + code { + background: rgba(144, 144, 144, 0.05); + font-family: "Courier New", monospace; + font-size: 0.9em; + margin: 0 0.25em; + padding: 0.25em 0.65em; + } + + .align-left { + text-align: left; + } + + .align-center { + text-align: center; + } + + .align-right { + text-align: right; + } + +/* Row */ + + .row { + display: flex; + flex-wrap: wrap; + box-sizing: border-box; + align-items: stretch; + } + + .row > * { + box-sizing: border-box; + } + + .row.gtr-uniform > * > :last-child { + margin-bottom: 0; + } + + .row.aln-left { + justify-content: flex-start; + } + + .row.aln-center { + justify-content: center; + } + + .row.aln-right { + justify-content: flex-end; + } + + .row.aln-top { + align-items: flex-start; + } + + .row.aln-middle { + align-items: center; + } + + .row.aln-bottom { + align-items: flex-end; + } + + .row > .imp { + order: -1; + } + + .row > .col-1 { + width: 8.33333%; + } + + .row > .off-1 { + margin-left: 8.33333%; + } + + .row > .col-2 { + width: 16.66667%; + } + + .row > .off-2 { + margin-left: 16.66667%; + } + + .row > .col-3 { + width: 25%; + } + + .row > .off-3 { + margin-left: 25%; + } + + .row > .col-4 { + width: 33.33333%; + } + + .row > .off-4 { + margin-left: 33.33333%; + } + + .row > .col-5 { + width: 41.66667%; + } + + .row > .off-5 { + margin-left: 41.66667%; + } + + .row > .col-6 { + width: 50%; + } + + .row > .off-6 { + margin-left: 50%; + } + + .row > .col-7 { + width: 58.33333%; + } + + .row > .off-7 { + margin-left: 58.33333%; + } + + .row > .col-8 { + width: 66.66667%; + } + + .row > .off-8 { + margin-left: 66.66667%; + } + + .row > .col-9 { + width: 75%; + } + + .row > .off-9 { + margin-left: 75%; + } + + .row > .col-10 { + width: 83.33333%; + } + + .row > .off-10 { + margin-left: 83.33333%; + } + + .row > .col-11 { + width: 91.66667%; + } + + .row > .off-11 { + margin-left: 91.66667%; + } + + .row > .col-12 { + width: 100%; + } + + .row > .off-12 { + margin-left: 100%; + } + + .row.gtr-0 { + margin-top: 0; + margin-left: 0em; + } + + .row.gtr-0 > * { + padding: 0 0 0 0em; + } + + .row.gtr-0.gtr-uniform { + margin-top: 0em; + } + + .row.gtr-0.gtr-uniform > * { + padding-top: 0em; + } + + .row.gtr-25 { + margin-top: 0; + margin-left: -0.75em; + } + + .row.gtr-25 > * { + padding: 0 0 0 0.75em; + } + + .row.gtr-25.gtr-uniform { + margin-top: -0.75em; + } + + .row.gtr-25.gtr-uniform > * { + padding-top: 0.75em; + } + + .row.gtr-50 { + margin-top: 0; + margin-left: -1.5em; + } + + .row.gtr-50 > * { + padding: 0 0 0 1.5em; + } + + .row.gtr-50.gtr-uniform { + margin-top: -1.5em; + } + + .row.gtr-50.gtr-uniform > * { + padding-top: 1.5em; + } + + .row { + margin-top: 0; + margin-left: -3em; + } + + .row > * { + padding: 0 0 0 3em; + } + + .row.gtr-uniform { + margin-top: -3em; + } + + .row.gtr-uniform > * { + padding-top: 3em; + } + + .row.gtr-150 { + margin-top: 0; + margin-left: -4.5em; + } + + .row.gtr-150 > * { + padding: 0 0 0 4.5em; + } + + .row.gtr-150.gtr-uniform { + margin-top: -4.5em; + } + + .row.gtr-150.gtr-uniform > * { + padding-top: 4.5em; + } + + .row.gtr-200 { + margin-top: 0; + margin-left: -6em; + } + + .row.gtr-200 > * { + padding: 0 0 0 6em; + } + + .row.gtr-200.gtr-uniform { + margin-top: -6em; + } + + .row.gtr-200.gtr-uniform > * { + padding-top: 6em; + } + + @media screen and (max-width: 1680px) { + + .row { + display: flex; + flex-wrap: wrap; + box-sizing: border-box; + align-items: stretch; + } + + .row > * { + box-sizing: border-box; + } + + .row.gtr-uniform > * > :last-child { + margin-bottom: 0; + } + + .row.aln-left { + justify-content: flex-start; + } + + .row.aln-center { + justify-content: center; + } + + .row.aln-right { + justify-content: flex-end; + } + + .row.aln-top { + align-items: flex-start; + } + + .row.aln-middle { + align-items: center; + } + + .row.aln-bottom { + align-items: flex-end; + } + + .row > .imp-wide { + order: -1; + } + + .row > .col-1-wide { + width: 8.33333%; + } + + .row > .off-1-wide { + margin-left: 8.33333%; + } + + .row > .col-2-wide { + width: 16.66667%; + } + + .row > .off-2-wide { + margin-left: 16.66667%; + } + + .row > .col-3-wide { + width: 25%; + } + + .row > .off-3-wide { + margin-left: 25%; + } + + .row > .col-4-wide { + width: 33.33333%; + } + + .row > .off-4-wide { + margin-left: 33.33333%; + } + + .row > .col-5-wide { + width: 41.66667%; + } + + .row > .off-5-wide { + margin-left: 41.66667%; + } + + .row > .col-6-wide { + width: 50%; + } + + .row > .off-6-wide { + margin-left: 50%; + } + + .row > .col-7-wide { + width: 58.33333%; + } + + .row > .off-7-wide { + margin-left: 58.33333%; + } + + .row > .col-8-wide { + width: 66.66667%; + } + + .row > .off-8-wide { + margin-left: 66.66667%; + } + + .row > .col-9-wide { + width: 75%; + } + + .row > .off-9-wide { + margin-left: 75%; + } + + .row > .col-10-wide { + width: 83.33333%; + } + + .row > .off-10-wide { + margin-left: 83.33333%; + } + + .row > .col-11-wide { + width: 91.66667%; + } + + .row > .off-11-wide { + margin-left: 91.66667%; + } + + .row > .col-12-wide { + width: 100%; + } + + .row > .off-12-wide { + margin-left: 100%; + } + + .row.gtr-0 { + margin-top: 0; + margin-left: 0em; + } + + .row.gtr-0 > * { + padding: 0 0 0 0em; + } + + .row.gtr-0.gtr-uniform { + margin-top: 0em; + } + + .row.gtr-0.gtr-uniform > * { + padding-top: 0em; + } + + .row.gtr-25 { + margin-top: 0; + margin-left: -0.75em; + } + + .row.gtr-25 > * { + padding: 0 0 0 0.75em; + } + + .row.gtr-25.gtr-uniform { + margin-top: -0.75em; + } + + .row.gtr-25.gtr-uniform > * { + padding-top: 0.75em; + } + + .row.gtr-50 { + margin-top: 0; + margin-left: -1.5em; + } + + .row.gtr-50 > * { + padding: 0 0 0 1.5em; + } + + .row.gtr-50.gtr-uniform { + margin-top: -1.5em; + } + + .row.gtr-50.gtr-uniform > * { + padding-top: 1.5em; + } + + .row { + margin-top: 0; + margin-left: -3em; + } + + .row > * { + padding: 0 0 0 3em; + } + + .row.gtr-uniform { + margin-top: -3em; + } + + .row.gtr-uniform > * { + padding-top: 3em; + } + + .row.gtr-150 { + margin-top: 0; + margin-left: -4.5em; + } + + .row.gtr-150 > * { + padding: 0 0 0 4.5em; + } + + .row.gtr-150.gtr-uniform { + margin-top: -4.5em; + } + + .row.gtr-150.gtr-uniform > * { + padding-top: 4.5em; + } + + .row.gtr-200 { + margin-top: 0; + margin-left: -6em; + } + + .row.gtr-200 > * { + padding: 0 0 0 6em; + } + + .row.gtr-200.gtr-uniform { + margin-top: -6em; + } + + .row.gtr-200.gtr-uniform > * { + padding-top: 6em; + } + + } + + @media screen and (max-width: 1280px) { + + .row { + display: flex; + flex-wrap: wrap; + box-sizing: border-box; + align-items: stretch; + } + + .row > * { + box-sizing: border-box; + } + + .row.gtr-uniform > * > :last-child { + margin-bottom: 0; + } + + .row.aln-left { + justify-content: flex-start; + } + + .row.aln-center { + justify-content: center; + } + + .row.aln-right { + justify-content: flex-end; + } + + .row.aln-top { + align-items: flex-start; + } + + .row.aln-middle { + align-items: center; + } + + .row.aln-bottom { + align-items: flex-end; + } + + .row > .imp-normal { + order: -1; + } + + .row > .col-1-normal { + width: 8.33333%; + } + + .row > .off-1-normal { + margin-left: 8.33333%; + } + + .row > .col-2-normal { + width: 16.66667%; + } + + .row > .off-2-normal { + margin-left: 16.66667%; + } + + .row > .col-3-normal { + width: 25%; + } + + .row > .off-3-normal { + margin-left: 25%; + } + + .row > .col-4-normal { + width: 33.33333%; + } + + .row > .off-4-normal { + margin-left: 33.33333%; + } + + .row > .col-5-normal { + width: 41.66667%; + } + + .row > .off-5-normal { + margin-left: 41.66667%; + } + + .row > .col-6-normal { + width: 50%; + } + + .row > .off-6-normal { + margin-left: 50%; + } + + .row > .col-7-normal { + width: 58.33333%; + } + + .row > .off-7-normal { + margin-left: 58.33333%; + } + + .row > .col-8-normal { + width: 66.66667%; + } + + .row > .off-8-normal { + margin-left: 66.66667%; + } + + .row > .col-9-normal { + width: 75%; + } + + .row > .off-9-normal { + margin-left: 75%; + } + + .row > .col-10-normal { + width: 83.33333%; + } + + .row > .off-10-normal { + margin-left: 83.33333%; + } + + .row > .col-11-normal { + width: 91.66667%; + } + + .row > .off-11-normal { + margin-left: 91.66667%; + } + + .row > .col-12-normal { + width: 100%; + } + + .row > .off-12-normal { + margin-left: 100%; + } + + .row.gtr-0 { + margin-top: 0; + margin-left: 0em; + } + + .row.gtr-0 > * { + padding: 0 0 0 0em; + } + + .row.gtr-0.gtr-uniform { + margin-top: 0em; + } + + .row.gtr-0.gtr-uniform > * { + padding-top: 0em; + } + + .row.gtr-25 { + margin-top: 0; + margin-left: -0.5em; + } + + .row.gtr-25 > * { + padding: 0 0 0 0.5em; + } + + .row.gtr-25.gtr-uniform { + margin-top: -0.5em; + } + + .row.gtr-25.gtr-uniform > * { + padding-top: 0.5em; + } + + .row.gtr-50 { + margin-top: 0; + margin-left: -1em; + } + + .row.gtr-50 > * { + padding: 0 0 0 1em; + } + + .row.gtr-50.gtr-uniform { + margin-top: -1em; + } + + .row.gtr-50.gtr-uniform > * { + padding-top: 1em; + } + + .row { + margin-top: 0; + margin-left: -2em; + } + + .row > * { + padding: 0 0 0 2em; + } + + .row.gtr-uniform { + margin-top: -2em; + } + + .row.gtr-uniform > * { + padding-top: 2em; + } + + .row.gtr-150 { + margin-top: 0; + margin-left: -3em; + } + + .row.gtr-150 > * { + padding: 0 0 0 3em; + } + + .row.gtr-150.gtr-uniform { + margin-top: -3em; + } + + .row.gtr-150.gtr-uniform > * { + padding-top: 3em; + } + + .row.gtr-200 { + margin-top: 0; + margin-left: -4em; + } + + .row.gtr-200 > * { + padding: 0 0 0 4em; + } + + .row.gtr-200.gtr-uniform { + margin-top: -4em; + } + + .row.gtr-200.gtr-uniform > * { + padding-top: 4em; + } + + } + + @media screen and (max-width: 980px) { + + .row { + display: flex; + flex-wrap: wrap; + box-sizing: border-box; + align-items: stretch; + } + + .row > * { + box-sizing: border-box; + } + + .row.gtr-uniform > * > :last-child { + margin-bottom: 0; + } + + .row.aln-left { + justify-content: flex-start; + } + + .row.aln-center { + justify-content: center; + } + + .row.aln-right { + justify-content: flex-end; + } + + .row.aln-top { + align-items: flex-start; + } + + .row.aln-middle { + align-items: center; + } + + .row.aln-bottom { + align-items: flex-end; + } + + .row > .imp-narrow { + order: -1; + } + + .row > .col-1-narrow { + width: 8.33333%; + } + + .row > .off-1-narrow { + margin-left: 8.33333%; + } + + .row > .col-2-narrow { + width: 16.66667%; + } + + .row > .off-2-narrow { + margin-left: 16.66667%; + } + + .row > .col-3-narrow { + width: 25%; + } + + .row > .off-3-narrow { + margin-left: 25%; + } + + .row > .col-4-narrow { + width: 33.33333%; + } + + .row > .off-4-narrow { + margin-left: 33.33333%; + } + + .row > .col-5-narrow { + width: 41.66667%; + } + + .row > .off-5-narrow { + margin-left: 41.66667%; + } + + .row > .col-6-narrow { + width: 50%; + } + + .row > .off-6-narrow { + margin-left: 50%; + } + + .row > .col-7-narrow { + width: 58.33333%; + } + + .row > .off-7-narrow { + margin-left: 58.33333%; + } + + .row > .col-8-narrow { + width: 66.66667%; + } + + .row > .off-8-narrow { + margin-left: 66.66667%; + } + + .row > .col-9-narrow { + width: 75%; + } + + .row > .off-9-narrow { + margin-left: 75%; + } + + .row > .col-10-narrow { + width: 83.33333%; + } + + .row > .off-10-narrow { + margin-left: 83.33333%; + } + + .row > .col-11-narrow { + width: 91.66667%; + } + + .row > .off-11-narrow { + margin-left: 91.66667%; + } + + .row > .col-12-narrow { + width: 100%; + } + + .row > .off-12-narrow { + margin-left: 100%; + } + + .row.gtr-0 { + margin-top: 0; + margin-left: 0em; + } + + .row.gtr-0 > * { + padding: 0 0 0 0em; + } + + .row.gtr-0.gtr-uniform { + margin-top: 0em; + } + + .row.gtr-0.gtr-uniform > * { + padding-top: 0em; + } + + .row.gtr-25 { + margin-top: 0; + margin-left: -0.5em; + } + + .row.gtr-25 > * { + padding: 0 0 0 0.5em; + } + + .row.gtr-25.gtr-uniform { + margin-top: -0.5em; + } + + .row.gtr-25.gtr-uniform > * { + padding-top: 0.5em; + } + + .row.gtr-50 { + margin-top: 0; + margin-left: -1em; + } + + .row.gtr-50 > * { + padding: 0 0 0 1em; + } + + .row.gtr-50.gtr-uniform { + margin-top: -1em; + } + + .row.gtr-50.gtr-uniform > * { + padding-top: 1em; + } + + .row { + margin-top: 0; + margin-left: -2em; + } + + .row > * { + padding: 0 0 0 2em; + } + + .row.gtr-uniform { + margin-top: -2em; + } + + .row.gtr-uniform > * { + padding-top: 2em; + } + + .row.gtr-150 { + margin-top: 0; + margin-left: -3em; + } + + .row.gtr-150 > * { + padding: 0 0 0 3em; + } + + .row.gtr-150.gtr-uniform { + margin-top: -3em; + } + + .row.gtr-150.gtr-uniform > * { + padding-top: 3em; + } + + .row.gtr-200 { + margin-top: 0; + margin-left: -4em; + } + + .row.gtr-200 > * { + padding: 0 0 0 4em; + } + + .row.gtr-200.gtr-uniform { + margin-top: -4em; + } + + .row.gtr-200.gtr-uniform > * { + padding-top: 4em; + } + + } + + @media screen and (max-width: 736px) { + + .row { + display: flex; + flex-wrap: wrap; + box-sizing: border-box; + align-items: stretch; + } + + .row > * { + box-sizing: border-box; + } + + .row.gtr-uniform > * > :last-child { + margin-bottom: 0; + } + + .row.aln-left { + justify-content: flex-start; + } + + .row.aln-center { + justify-content: center; + } + + .row.aln-right { + justify-content: flex-end; + } + + .row.aln-top { + align-items: flex-start; + } + + .row.aln-middle { + align-items: center; + } + + .row.aln-bottom { + align-items: flex-end; + } + + .row > .imp-mobile { + order: -1; + } + + .row > .col-1-mobile { + width: 8.33333%; + } + + .row > .off-1-mobile { + margin-left: 8.33333%; + } + + .row > .col-2-mobile { + width: 16.66667%; + } + + .row > .off-2-mobile { + margin-left: 16.66667%; + } + + .row > .col-3-mobile { + width: 25%; + } + + .row > .off-3-mobile { + margin-left: 25%; + } + + .row > .col-4-mobile { + width: 33.33333%; + } + + .row > .off-4-mobile { + margin-left: 33.33333%; + } + + .row > .col-5-mobile { + width: 41.66667%; + } + + .row > .off-5-mobile { + margin-left: 41.66667%; + } + + .row > .col-6-mobile { + width: 50%; + } + + .row > .off-6-mobile { + margin-left: 50%; + } + + .row > .col-7-mobile { + width: 58.33333%; + } + + .row > .off-7-mobile { + margin-left: 58.33333%; + } + + .row > .col-8-mobile { + width: 66.66667%; + } + + .row > .off-8-mobile { + margin-left: 66.66667%; + } + + .row > .col-9-mobile { + width: 75%; + } + + .row > .off-9-mobile { + margin-left: 75%; + } + + .row > .col-10-mobile { + width: 83.33333%; + } + + .row > .off-10-mobile { + margin-left: 83.33333%; + } + + .row > .col-11-mobile { + width: 91.66667%; + } + + .row > .off-11-mobile { + margin-left: 91.66667%; + } + + .row > .col-12-mobile { + width: 100%; + } + + .row > .off-12-mobile { + margin-left: 100%; + } + + .row.gtr-0 { + margin-top: 0; + margin-left: 0em; + } + + .row.gtr-0 > * { + padding: 0 0 0 0em; + } + + .row.gtr-0.gtr-uniform { + margin-top: 0em; + } + + .row.gtr-0.gtr-uniform > * { + padding-top: 0em; + } + + .row.gtr-25 { + margin-top: 0; + margin-left: -0.5em; + } + + .row.gtr-25 > * { + padding: 0 0 0 0.5em; + } + + .row.gtr-25.gtr-uniform { + margin-top: -0.5em; + } + + .row.gtr-25.gtr-uniform > * { + padding-top: 0.5em; + } + + .row.gtr-50 { + margin-top: 0; + margin-left: -1em; + } + + .row.gtr-50 > * { + padding: 0 0 0 1em; + } + + .row.gtr-50.gtr-uniform { + margin-top: -1em; + } + + .row.gtr-50.gtr-uniform > * { + padding-top: 1em; + } + + .row { + margin-top: 0; + margin-left: -2em; + } + + .row > * { + padding: 0 0 0 2em; + } + + .row.gtr-uniform { + margin-top: -2em; + } + + .row.gtr-uniform > * { + padding-top: 2em; + } + + .row.gtr-150 { + margin-top: 0; + margin-left: -3em; + } + + .row.gtr-150 > * { + padding: 0 0 0 3em; + } + + .row.gtr-150.gtr-uniform { + margin-top: -3em; + } + + .row.gtr-150.gtr-uniform > * { + padding-top: 3em; + } + + .row.gtr-200 { + margin-top: 0; + margin-left: -4em; + } + + .row.gtr-200 > * { + padding: 0 0 0 4em; + } + + .row.gtr-200.gtr-uniform { + margin-top: -4em; + } + + .row.gtr-200.gtr-uniform > * { + padding-top: 4em; + } + + } + + @media screen and (max-width: 480px) { + + .row { + display: flex; + flex-wrap: wrap; + box-sizing: border-box; + align-items: stretch; + } + + .row > * { + box-sizing: border-box; + } + + .row.gtr-uniform > * > :last-child { + margin-bottom: 0; + } + + .row.aln-left { + justify-content: flex-start; + } + + .row.aln-center { + justify-content: center; + } + + .row.aln-right { + justify-content: flex-end; + } + + .row.aln-top { + align-items: flex-start; + } + + .row.aln-middle { + align-items: center; + } + + .row.aln-bottom { + align-items: flex-end; + } + + .row > .imp-mobilep { + order: -1; + } + + .row > .col-1-mobilep { + width: 8.33333%; + } + + .row > .off-1-mobilep { + margin-left: 8.33333%; + } + + .row > .col-2-mobilep { + width: 16.66667%; + } + + .row > .off-2-mobilep { + margin-left: 16.66667%; + } + + .row > .col-3-mobilep { + width: 25%; + } + + .row > .off-3-mobilep { + margin-left: 25%; + } + + .row > .col-4-mobilep { + width: 33.33333%; + } + + .row > .off-4-mobilep { + margin-left: 33.33333%; + } + + .row > .col-5-mobilep { + width: 41.66667%; + } + + .row > .off-5-mobilep { + margin-left: 41.66667%; + } + + .row > .col-6-mobilep { + width: 50%; + } + + .row > .off-6-mobilep { + margin-left: 50%; + } + + .row > .col-7-mobilep { + width: 58.33333%; + } + + .row > .off-7-mobilep { + margin-left: 58.33333%; + } + + .row > .col-8-mobilep { + width: 66.66667%; + } + + .row > .off-8-mobilep { + margin-left: 66.66667%; + } + + .row > .col-9-mobilep { + width: 75%; + } + + .row > .off-9-mobilep { + margin-left: 75%; + } + + .row > .col-10-mobilep { + width: 83.33333%; + } + + .row > .off-10-mobilep { + margin-left: 83.33333%; + } + + .row > .col-11-mobilep { + width: 91.66667%; + } + + .row > .off-11-mobilep { + margin-left: 91.66667%; + } + + .row > .col-12-mobilep { + width: 100%; + } + + .row > .off-12-mobilep { + margin-left: 100%; + } + + .row.gtr-0 { + margin-top: 0; + margin-left: 0em; + } + + .row.gtr-0 > * { + padding: 0 0 0 0em; + } + + .row.gtr-0.gtr-uniform { + margin-top: 0em; + } + + .row.gtr-0.gtr-uniform > * { + padding-top: 0em; + } + + .row.gtr-25 { + margin-top: 0; + margin-left: -0.5em; + } + + .row.gtr-25 > * { + padding: 0 0 0 0.5em; + } + + .row.gtr-25.gtr-uniform { + margin-top: -0.5em; + } + + .row.gtr-25.gtr-uniform > * { + padding-top: 0.5em; + } + + .row.gtr-50 { + margin-top: 0; + margin-left: -1em; + } + + .row.gtr-50 > * { + padding: 0 0 0 1em; + } + + .row.gtr-50.gtr-uniform { + margin-top: -1em; + } + + .row.gtr-50.gtr-uniform > * { + padding-top: 1em; + } + + .row { + margin-top: 0; + margin-left: -2em; + } + + .row > * { + padding: 0 0 0 2em; + } + + .row.gtr-uniform { + margin-top: -2em; + } + + .row.gtr-uniform > * { + padding-top: 2em; + } + + .row.gtr-150 { + margin-top: 0; + margin-left: -3em; + } + + .row.gtr-150 > * { + padding: 0 0 0 3em; + } + + .row.gtr-150.gtr-uniform { + margin-top: -3em; + } + + .row.gtr-150.gtr-uniform > * { + padding-top: 3em; + } + + .row.gtr-200 { + margin-top: 0; + margin-left: -4em; + } + + .row.gtr-200 > * { + padding: 0 0 0 4em; + } + + .row.gtr-200.gtr-uniform { + margin-top: -4em; + } + + .row.gtr-200.gtr-uniform > * { + padding-top: 4em; + } + + } + +/* Container */ + + .container { + margin: 0 auto; + width: 1200px; + } + + .container.medium { + width: 900px; + } + + @media screen and (max-width: 1680px) { + + .container { + width: 1080px; + } + + .container.medium { + width: 810px; + } + + } + + @media screen and (max-width: 1280px) { + + .container { + width: 960px; + } + + .container.medium { + width: 720px; + } + + } + + @media screen and (max-width: 980px) { + + .container { + width: 90%; + } + + .container.medium { + width: 90%; + } + + } + + @media screen and (max-width: 736px) { + + .container { + width: 100%; + } + + .container.medium { + width: 100%; + } + + } + +/* Section/Article */ + + section.special, article.special { + text-align: center; + } + + header.major { + text-align: center; + position: relative; + } + + header.major:after { + background: #eee; + content: ''; + display: inline-block; + height: 3px; + margin: 0 0 2em 0; + width: 6em; + } + + header.major.alt { + text-align: center; + margin-bottom: 2em; + } + + header p { + letter-spacing: 0.125em; + margin: 0 0 1.5em 0; + position: relative; + text-transform: uppercase; + } + + header h2 + p { + font-size: 1em; + margin-top: -0.85em; + line-height: 1.75em; + } + + header h3 + p { + font-size: 0.9em; + margin-top: -0.75em; + line-height: 1.75em; + } + + header h4 + p, + header h5 + p, + header h6 + p { + font-size: 0.8em; + margin-top: -0.75em; + line-height: 1.75em; + } + +/* Form */ + + form { + margin: 0 0 2em 0; + } + + label { + color: #2a2a2a; + display: block; + font-size: 0.9em; + font-weight: 600; + margin: 0 0 1em 0; + } + + input[type="text"], + input[type="password"], + input[type="email"], + select, + textarea { + -moz-appearance: none; + -webkit-appearance: none; + -ms-appearance: none; + appearance: none; + border: none; + border: solid 2px #eee; + border-radius: 0; + color: inherit; + display: block; + outline: 0; + padding: 0 1em; + text-decoration: none; + width: 100%; + } + + input[type="text"]:invalid, + input[type="password"]:invalid, + input[type="email"]:invalid, + select:invalid, + textarea:invalid { + box-shadow: none; + } + + input[type="text"]:focus, + input[type="password"]:focus, + input[type="email"]:focus, + select:focus, + textarea:focus { + border-color: #51c5e8; + } + + select { + background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='40' height='40' preserveAspectRatio='none' viewBox='0 0 40 40'%3E%3Cpath d='M9.4,12.3l10.4,10.4l10.4-10.4c0.2-0.2,0.5-0.4,0.9-0.4c0.3,0,0.6,0.1,0.9,0.4l3.3,3.3c0.2,0.2,0.4,0.5,0.4,0.9 c0,0.4-0.1,0.6-0.4,0.9L20.7,31.9c-0.2,0.2-0.5,0.4-0.9,0.4c-0.3,0-0.6-0.1-0.9-0.4L4.3,17.3c-0.2-0.2-0.4-0.5-0.4-0.9 c0-0.4,0.1-0.6,0.4-0.9l3.3-3.3c0.2-0.2,0.5-0.4,0.9-0.4S9.1,12.1,9.4,12.3z' fill='%23eee' /%3E%3C/svg%3E"); + background-size: 1.25em; + background-repeat: no-repeat; + background-position: calc(100% - 1em) center; + height: 3.5em; + padding-right: 3.5em; + text-overflow: ellipsis; + } + + select:focus::-ms-value { + background-color: transparent; + } + + select::-ms-expand { + display: none; + } + + select option { + color: #2a2a2a; + background: #fff; + } + + input[type="text"], + input[type="password"], + input[type="email"], + select { + height: 3.5em; + } + + textarea { + padding: 0.75em 1em; + } + + input[type="checkbox"], + input[type="radio"] { + -moz-appearance: none; + -webkit-appearance: none; + -ms-appearance: none; + appearance: none; + display: block; + float: left; + margin-right: -2em; + opacity: 0; + width: 1em; + z-index: -1; + } + + input[type="checkbox"] + label, + input[type="radio"] + label { + text-decoration: none; + color: #4a4a4a; + cursor: pointer; + display: inline-block; + font-size: 1em; + font-weight: 300; + padding-left: 2.85em; + padding-right: 0.75em; + position: relative; + } + + input[type="checkbox"] + label:before, + input[type="radio"] + label:before { + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + display: inline-block; + font-style: normal; + font-variant: normal; + text-rendering: auto; + line-height: 1; + text-transform: none !important; + font-family: 'Font Awesome 5 Free'; + font-weight: 900; + } + + input[type="checkbox"] + label:before, + input[type="radio"] + label:before { + background: rgba(144, 144, 144, 0.05); + border: solid 2px #eee; + content: ''; + display: inline-block; + font-size: 0.8em; + height: 2.1em; + left: 0; + line-height: 1.925em; + position: absolute; + text-align: center; + top: 0; + width: 2.1em; + } + + input[type="checkbox"]:checked + label:before, + input[type="radio"]:checked + label:before { + background: #1d2726; + border-color: #1d2726; + color: #ffffff; + content: '\f00c'; + } + + input[type="checkbox"]:focus + label:before, + input[type="radio"]:focus + label:before { + border-color: #51c5e8; + } + + input[type="radio"] + label:before { + border-radius: 100%; + } + + ::-webkit-input-placeholder { + color: #bbb !important; + opacity: 1.0; + } + + :-moz-placeholder { + color: #bbb !important; + opacity: 1.0; + } + + ::-moz-placeholder { + color: #bbb !important; + opacity: 1.0; + } + + :-ms-input-placeholder { + color: #bbb !important; + opacity: 1.0; + } + +/* Box */ + + .box { + border: solid 2px #eee; + margin-bottom: 2em; + padding: 1.5em; + } + + .box > :last-child, + .box > :last-child > :last-child, + .box > :last-child > :last-child > :last-child { + margin-bottom: 0; + } + + .box.alt { + border: 0; + padding: 0; + } + +/* Icon */ + + .icon { + text-decoration: none; + border-bottom: none; + position: relative; + } + + .icon:before { + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + display: inline-block; + font-style: normal; + font-variant: normal; + text-rendering: auto; + line-height: 1; + text-transform: none !important; + font-family: 'Font Awesome 5 Free'; + font-weight: 400; + } + + .icon.solid:before { + font-weight: 900; + } + + .icon.brands:before { + font-family: 'Font Awesome 5 Brands'; + } + + .icon > .label { + display: none; + } + +/* Image */ + + .image { + border: 0; + display: inline-block; + position: relative; + } + + .image:before { + background: url("images/overlay.png"); + content: ''; + display: block; + height: 100%; + left: 0; + position: absolute; + top: 0; + width: 100%; + } + + .image img { + display: block; + } + + .image.left { + float: left; + margin: 0 1.5em 1em 0; + top: 0.25em; + } + + .image.right { + float: right; + margin: 0 0 1em 1.5em; + top: 0.25em; + } + + .image.fit { + display: block; + margin: 0 0 3em 0; + width: 100%; + } + + .image.fit img { + display: block; + width: 100%; + } + +/* List */ + + ol { + list-style: decimal; + margin: 0 0 2em 0; + padding-left: 1.25em; + } + + ol li { + padding-left: 0.25em; + } + + ul { + list-style: disc; + margin: 0 0 2em 0; + padding-left: 1em; + } + + ul li { + padding-left: 0.5em; + } + + ul.alt { + list-style: none; + padding-left: 0; + } + + ul.alt li { + border-top: solid 1px #eee; + padding: 0.5em 0; + } + + ul.alt li:first-child { + border-top: 0; + padding-top: 0; + } + + dl { + margin: 0 0 2em 0; + } + +/* Actions */ + + ul.actions { + display: -moz-flex; + display: -webkit-flex; + display: -ms-flex; + display: flex; + cursor: default; + list-style: none; + margin-left: -1em; + padding-left: 0; + } + + ul.actions li { + padding: 0 0 0 1em; + vertical-align: middle; + } + + ul.actions.special { + -moz-justify-content: center; + -webkit-justify-content: center; + -ms-justify-content: center; + justify-content: center; + width: 100%; + margin-left: 0; + } + + ul.actions.special li:first-child { + padding-left: 0; + } + + ul.actions.stacked { + -moz-flex-direction: column; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + margin-left: 0; + } + + ul.actions.stacked li { + padding: 1.3em 0 0 0; + } + + ul.actions.stacked li:first-child { + padding-top: 0; + } + + ul.actions.fit { + width: calc(100% + 1em); + } + + ul.actions.fit li { + -moz-flex-grow: 1; + -webkit-flex-grow: 1; + -ms-flex-grow: 1; + flex-grow: 1; + -moz-flex-shrink: 1; + -webkit-flex-shrink: 1; + -ms-flex-shrink: 1; + flex-shrink: 1; + width: 100%; + } + + ul.actions.fit li > * { + width: 100%; + } + + ul.actions.fit.stacked { + width: 100%; + } + + @media screen and (max-width: 480px) { + + ul.actions:not(.fixed) { + -moz-flex-direction: column; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + margin-left: 0; + width: 100% !important; + } + + ul.actions:not(.fixed) li { + -moz-flex-grow: 1; + -webkit-flex-grow: 1; + -ms-flex-grow: 1; + flex-grow: 1; + -moz-flex-shrink: 1; + -webkit-flex-shrink: 1; + -ms-flex-shrink: 1; + flex-shrink: 1; + padding: 1em 0 0 0; + text-align: center; + width: 100%; + } + + ul.actions:not(.fixed) li > * { + width: 100%; + } + + ul.actions:not(.fixed) li:first-child { + padding-top: 0; + } + + ul.actions:not(.fixed) li input[type="submit"], + ul.actions:not(.fixed) li input[type="reset"], + ul.actions:not(.fixed) li input[type="button"], + ul.actions:not(.fixed) li button, + ul.actions:not(.fixed) li .button { + width: 100%; + } + + ul.actions:not(.fixed) li input[type="submit"].icon:before, + ul.actions:not(.fixed) li input[type="reset"].icon:before, + ul.actions:not(.fixed) li input[type="button"].icon:before, + ul.actions:not(.fixed) li button.icon:before, + ul.actions:not(.fixed) li .button.icon:before { + margin-left: -0.5em; + } + + } + +/* Icons */ + + ul.icons { + cursor: default; + list-style: none; + padding-left: 0; + } + + ul.icons li { + display: inline-block; + padding: 0 1em 0 0; + } + + ul.icons li:last-child { + padding-right: 0; + } + + ul.icons li .icon:before { + font-size: 1.5em; + } + +/* Table */ + + .table-wrapper { + -webkit-overflow-scrolling: touch; + overflow-x: auto; + } + + table { + margin: 0 0 2em 0; + width: 100%; + } + + table tbody tr { + border: solid 1px #eee; + border-left: 0; + border-right: 0; + } + + table tbody tr:nth-child(2n + 1) { + background-color: rgba(144, 144, 144, 0.05); + } + + table td { + padding: 0.75em 0.75em; + } + + table th { + color: #2a2a2a; + font-size: 0.9em; + font-weight: 600; + padding: 0 0.75em 0.75em 0.75em; + text-align: left; + } + + table thead { + border-bottom: solid 2px #eee; + } + + table tfoot { + border-top: solid 2px #eee; + } + + table.alt { + border-collapse: separate; + } + + table.alt tbody tr td { + border: solid 1px #eee; + border-left-width: 0; + border-top-width: 0; + } + + table.alt tbody tr td:first-child { + border-left-width: 1px; + } + + table.alt tbody tr:first-child td { + border-top-width: 1px; + } + + table.alt thead { + border-bottom: 0; + } + + table.alt tfoot { + border-top: 0; + } + +/* Button */ + + input[type="submit"], + input[type="reset"], + input[type="button"], + button, + .button { + -moz-appearance: none; + -webkit-appearance: none; + -ms-appearance: none; + appearance: none; + -moz-transition: background-color 0.2s ease-in-out, color 0.2s ease-in-out; + -webkit-transition: background-color 0.2s ease-in-out, color 0.2s ease-in-out; + -ms-transition: background-color 0.2s ease-in-out, color 0.2s ease-in-out; + transition: background-color 0.2s ease-in-out, color 0.2s ease-in-out; + background-color: #1d2726; + border-radius: 0; + border: 0; + color: #ffffff !important; + cursor: pointer; + display: inline-block; + font-size: 0.9em; + font-weight: 600; + height: 4em; + letter-spacing: 0.125em; + line-height: 4em; + overflow: hidden; + padding: 0 2.75em; + text-align: center; + text-decoration: none; + text-overflow: ellipsis; + text-transform: uppercase; + white-space: nowrap; + } + + input[type="submit"]:hover, + input[type="reset"]:hover, + input[type="button"]:hover, + button:hover, + .button:hover { + background-color: #283634; + } + + input[type="submit"]:active, + input[type="reset"]:active, + input[type="button"]:active, + button:active, + .button:active { + background-color: #121818; + } + + input[type="submit"].icon, + input[type="reset"].icon, + input[type="button"].icon, + button.icon, + .button.icon { + padding-left: 2.35em; + } + + input[type="submit"].icon:before, + input[type="reset"].icon:before, + input[type="button"].icon:before, + button.icon:before, + .button.icon:before { + margin-right: 0.5em; + } + + input[type="submit"].fit, + input[type="reset"].fit, + input[type="button"].fit, + button.fit, + .button.fit { + width: 100%; + } + + input[type="submit"].small, + input[type="reset"].small, + input[type="button"].small, + button.small, + .button.small { + font-size: 0.8em; + height: 3.5em; + line-height: 3.5em; + padding: 0 2em; + } + + input[type="submit"].large, + input[type="reset"].large, + input[type="button"].large, + button.large, + .button.large { + font-size: 1.25em; + height: 3.15em; + line-height: 3.15em; + } + + input[type="submit"].alt, + input[type="reset"].alt, + input[type="button"].alt, + button.alt, + .button.alt { + background-color: transparent; + box-shadow: inset 0 0 0 2px #eee; + color: #2a2a2a !important; + } + + input[type="submit"].alt:hover, + input[type="reset"].alt:hover, + input[type="button"].alt:hover, + button.alt:hover, + .button.alt:hover { + background-color: rgba(144, 144, 144, 0.05); + } + + input[type="submit"].alt:active, + input[type="reset"].alt:active, + input[type="button"].alt:active, + button.alt:active, + .button.alt:active { + background-color: rgba(144, 144, 144, 0.1); + } + + input[type="submit"].alt.icon:before, + input[type="reset"].alt.icon:before, + input[type="button"].alt.icon:before, + button.alt.icon:before, + .button.alt.icon:before { + color: #bbb; + } + + input[type="submit"].primary, + input[type="reset"].primary, + input[type="button"].primary, + button.primary, + .button.primary { + background-color: #51c5e8; + color: #ffffff !important; + } + + input[type="submit"].primary:hover, + input[type="reset"].primary:hover, + input[type="button"].primary:hover, + button.primary:hover, + .button.primary:hover { + background-color: #68cdeb; + } + + input[type="submit"].primary:active, + input[type="reset"].primary:active, + input[type="button"].primary:active, + button.primary:active, + .button.primary:active { + background-color: #3abde5; + } + + input[type="submit"].disabled, input[type="submit"]:disabled, + input[type="reset"].disabled, + input[type="reset"]:disabled, + input[type="button"].disabled, + input[type="button"]:disabled, + button.disabled, + button:disabled, + .button.disabled, + .button:disabled { + background-color: #4a4a4a !important; + box-shadow: inset 0 -0.15em 0 0 rgba(0, 0, 0, 0.15); + color: #fff !important; + cursor: default; + opacity: 0.25; + } + +/* Feature */ + + .feature { + margin: 0 0 2em 0; + padding: 2em 0 2em 9em; + position: relative; + } + + .feature i { + border-radius: 100%; + border: solid 3px #eee; + color: #51c5e8; + display: block; + height: 7em; + left: 0; + line-height: 7.25em; + margin-top: -0.5em; + position: absolute; + text-align: center; + top: 2em; + width: 7em; + } + + .feature i:before { + font-size: 40px; + } + + .feature h3 { + margin-bottom: 0.5em; + } + + .feature p { + margin-bottom: 0; + } + +/* Image Feature */ + + .image-feature { + position: relative; + text-align: center; + margin: 0 0.5em 2em 0.5em; + } + + .image-feature > a { + display: block; + } + + .image-feature header { + background: #fff; + left: 0; + padding: 1.5em 0; + position: absolute; + top: 0; + width: 100%; + z-index: 1; + } + + .image-feature header:before { + -moz-transform: rotate(45deg); + -webkit-transform: rotate(45deg); + -ms-transform: rotate(45deg); + transform: rotate(45deg); + background: #fff; + bottom: -0.5em; + content: ''; + display: block; + height: 1em; + left: 50%; + margin-left: -0.5em; + position: absolute; + width: 1em; + } + + .image-feature header h3 { + font-size: 1em; + margin: 0; + } + + .image-feature .image { + margin: 0; + } + + .image-feature p { + margin: 0; + } + + .image-feature footer { + background: #1d2726; + background: rgba(29, 39, 38, 0.9); + bottom: 0; + color: #fff; + left: 0; + padding: 1.5em; + position: absolute; + width: 100%; + z-index: 1; + } + + .image-feature footer input[type="submit"].alt, + .image-feature footer input[type="reset"].alt, + .image-feature footer input[type="button"].alt, + .image-feature footer button.alt, + .image-feature footer .button.alt { + box-shadow: inset 0 0 0 2px rgba(255, 255, 255, 0.25); + color: #fff !important; + } + +/* Wrapper */ + + .wrapper { + padding: 4em 0 4em 0; + } + + .wrapper.style1 { + background: #141414; + color: #888; + } + + .wrapper.style1 h2, .wrapper.style1 h3, .wrapper.style1 strong { + color: #ffffff; + } + + .wrapper.style1 header.major:after { + background: rgba(255, 255, 255, 0.25); + } + + .wrapper.style2 { + background: #000; + } + + .wrapper.style3 { + background: #f4f4f4; + } + + .wrapper.style4 { + background: #fafafa; + } + +/* Header */ + + +.logo-kep{ + width: 70px; + line-height: 5em; + vertical-align: middle; + margin-left: 5em; +} + +.booktime{ + background-color: #9e8462; + color: #000; + margin-left:2em; + padding-left: 10px; + padding-right: 10px; +} + + #page-wrapper { + padding-top: 3em; + } + + #header { + background: #000; + color: #fff; + cursor: default; + height: 5em; + left: 0; + line-height: 5em; + position: fixed; + top: 0; + width: 100%; + z-index: 10000; + } + + #header h1 { + color: #9e8462; + height: inherit; + left: 10.5em; + line-height: inherit; + margin: 0; + padding: 0; + position: absolute; + top: 0; + } + + #header h1 a { + font-size: 1em; + } + + #header h1 a:before { + color: #51c5e8; + margin-right: 0.35em; + } + + #header nav { + font-weight: 600; + height: inherit; + letter-spacing: 0.125em; + line-height: inherit; + position: absolute; + right: 1.5em; + text-transform: uppercase; + top: 0; + vertical-align: middle; + } + + #header nav > ul { + list-style: none; + line-height: 4.5em; + margin: 0; + padding-left: 0; + vertical-align: middle; + } + + #header nav > ul > li { + display: inline-block; + margin-left: 2em; + /*padding-left: 0;*/ + } + + #header nav > ul > li.booktime { + margin-right: 2em; + } + + #header nav > ul > li.socialmedia-menu { + color: #fff; + font-size: 30px; + margin: auto 0 auto 0; +} + + + #header nav > ul > li.language { + padding-left: 0; + margin: 0; + font-size: 12px; + color: #888; + -moz-transition: color 0.2s ease-in-out; + -webkit-transition: color 0.2s ease-in-out; + -ms-transition: color 0.2s ease-in-out; + transition: color 0.2s ease-in-out; + } + #header nav > ul > li.language:hover { + color: #fff; + } + + #header nav > ul > li a { + -moz-transition: color 0.2s ease-in-out; + -webkit-transition: color 0.2s ease-in-out; + -ms-transition: color 0.2s ease-in-out; + transition: color 0.2s ease-in-out; + color: #fff; + display: inline-block; + text-decoration: none; + font-size: 0.8em; + } + + #header nav > ul > li a:before { + margin-right: 0.5em; + /*opacity: 0.5;*/ + } + + #header nav > ul > li a:hover { + color: #9e8462; + } + + #header nav > ul > li.booktime a:hover { + color: #000; + } + + #header nav > ul > li.active > a { + color: #fff; + } + + #header nav > ul > li:first-child { + margin-left: 0; + } + + #header nav > ul > li input[type="submit"], + #header nav > ul > li input[type="reset"], + #header nav > ul > li input[type="button"], + #header nav > ul > li button, + #header nav > ul > li .button { + font-size: 1em; + height: 2.25em; + line-height: 2.25em; + margin-bottom: 0; + padding: 0 1em; + position: relative; + top: -0.125em; + vertical-align: middle; + } + + #header nav > ul > li > ul { + display: none; + } + + #header .container { + position: relative; + } + + #header .container h1 { + left: 0; + } + + #header .container nav { + right: 0; + } + + .dropotron { + background: #1d2726; + color: #fff; + font-weight: 600; + letter-spacing: 0.125em; + list-style: none; + margin-top: -1em; + min-width: 14em; + padding: 1.25em 0; + text-transform: uppercase; + } + + .dropotron.level-0 { + font-size: 0.8em; + margin-top: 1em; + } + + .dropotron.level-0:before { + -moz-transform: rotate(45deg); + -webkit-transform: rotate(45deg); + -ms-transform: rotate(45deg); + transform: rotate(45deg); + background: #1d2726; + content: ''; + display: block; + height: 1em; + position: absolute; + right: 1.5em; + top: -0.5em; + width: 1em; + } + + .dropotron li > a { + -moz-transition: color 0.2s ease-in-out; + -webkit-transition: color 0.2s ease-in-out; + -ms-transition: color 0.2s ease-in-out; + transition: color 0.2s ease-in-out; + color: #ccc; + display: block; + padding: 0.125em 1.25em; + text-decoration: none; + } + + .dropotron li > a:hover { + color: #fff; + } + + .dropotron li.active > a { + color: #fff; + } + +/* Banner */ + + #banner { + background-color: #141414; + /*background-attachment: scroll, fixed; + background-image: url("images/overlay.png"), url("../../images/banner.jpg"); + background-position: top left, center center; + background-repeat: no-repeat; + background-size: cover; + background-size: auto, cover;*/ + color: #fff; + padding: 0em 0; + position: relative; + text-align: center; + } + + #banner img{ + width: 100%; + } + + #banner:after { + -moz-transition: opacity 1s ease-in-out; + -webkit-transition: opacity 1s ease-in-out; + -ms-transition: opacity 1s ease-in-out; + transition: opacity 1s ease-in-out; + background: #313148; + content: ''; + height: 100%; + left: 0; + opacity: 0; + position: absolute; + top: 0; + width: 100%; + z-index: 1; + } + + #banner :last-child { + margin-bottom: 0; + } + + #banner .inner { + background: #1d2726; + background: rgba(29, 39, 38, 0.9); + display: inline-block; + padding: 3.5em 5em; + position: relative; + z-index: 2; + } + + #banner .inner h2 { + color: inherit; + font-size: 2.5em; + line-height: 1.35em; + margin: 0; + padding: 0; + } + + #banner .inner p { + font-size: 1em; + letter-spacing: 0.125em; + line-height: 2em; + margin: 2em 0 0 0; + padding: 2em 0 0 0; + position: relative; + text-transform: uppercase; + top: -0.25em; + } + + #banner .inner p:before { + background: #888; + background: rgba(255, 255, 255, 0.25); + content: ''; + display: block; + height: 3px; + left: 50%; + margin: 0 0 0 -3em; + position: absolute; + top: 0; + width: 6em; + } + + #banner .inner .actions { + margin-top: 2em; + } + + #banner .inner input[type="submit"].alt, + #banner .inner input[type="reset"].alt, + #banner .inner input[type="button"].alt, + #banner .inner button.alt, + #banner .inner .button.alt { + box-shadow: inset 0 0 0 2px rgba(255, 255, 255, 0.25); + color: #fff !important; + } + + body.is-preload #banner:after { + opacity: 1.0; + } + + +/* Mobile booking */ + +#mobil-menu{ + display: none; + background: #9e8462; +} + +.mobil-menucont ul { + list-style: none; + font-size: 1em; + line-height: 4.5em; + text-align: center; + margin: 0; + padding-left: 0; + vertical-align: middle; +} + +.mobil-menucont ul li{ + color: #fff; + margin: 0 0.5em; + display: inline; +} + +.mobil-menucont ul li a{ + color: #fff; + text-decoration: none; + } + +.mobil-menucont ul .mobil-menu-book{ + margin-right: 2em; + padding: 0.5em 0.5em; + font-weight: 600; +} + + + @media screen and (max-width: 980px) { + #mobil-menu{ + display: block; + } +} + +/* Main */ + + #main > header.major { + margin: 0 0 2em 0; + text-align: center; + } + + header.major h2{ + font-family: 'Abril Fatface', cursive; + color: #fff; + font-size: 50px; + font-weight: 400; + margin-bottom: 0; + } + + + header.major h4{ + font-size: 13px; + color: #888888; + } + + + +.one-half { + float: left; + width: 50%; + padding: 0 40px; + position: relative; + text-align: left; + overflow: hidden; +} + +.category-content { + position: relative; + display: inline-block; + width: 100%; + padding-bottom: 15px; + padding-top: 18px; + border-bottom: 1px solid #3d3d3d;} + +.category-text-left { + float: left; +} + +.main-title a { + text-decoration: none; + font-size: 16px; + color: #ffffff; + font-weight: 500; + -webkit-transition: all 0.5s ease; + -moz-transition: all 0.5s ease; + -o-transition: all 0.5s ease; + transition: all 0.5s ease; +} + +.sub-title { + font-size: 13px; + color: #888888; + font-weight: 400; + padding-right: 40px; + letter-spacing: 0.6px; +} + +.category-text-right { + float: right; +} + +.category-content .price { + font-size: 16px; + color: #9e8462; + letter-spacing: 0.5px; + font-weight: 600; + display: inline-block; + -webkit-transition: all 0.5s ease; + -moz-transition: all 0.5s ease; + -o-transition: all 0.5s ease; + transition: all 0.5s ease; +} + + +.common-home .box-heading:before, .box.related .box-heading:before { + content: ""; + background: url(../../images/ollo.png) no-repeat scroll; + width: 75px; + height: 65px; + position: absolute; + top: 0; + left: 0; + right: 0; + margin: 0 auto; + display: inline-block; +} + + +/* About Us */ + +#aboutus .container .inner .dolgozo-nev{ + width: 100%; + text-align: center; + margin-bottom: 2em; +} +#aboutus .container .inner hr { + margin: 4em auto 4em auto; + border-bottom: solid 3px #888; + width: 40%; +} + +#aboutus .container .inner .dolgozo-nev .dolgozo-kep{ + width: 150px; + border-radius: 50%; + margin-bottom: 1em; +} + +#aboutus .container .inner .dolgozo-nev h4{ + color: #fff; +} + +#aboutus .container .inner .dolgozo-nev h4 span{ + color: #888; +} + +.bemutatkozas, .bemutatkozas-dolgozo{ + display: flex; + width: 100%; +} + +.bem-bal, .bem-dolgozo-bal{ + width: 60%; +} + +.bem-bal h4{ + color: #fff; +} + +.bem-bal p{ + text-align: justify; +} + +.bem-dolgozo-bal p{ + text-align: justify; + font-style: italic; + +} + +.bem-jobb{ + width: 40%; + margin-left: 4em; + float: right; +} + +.bem-jobb img{ + width: 100%; +} + +.bem-jobb h4{ + margin-top: 1em; + text-align: center; + color: #9e8462; +} + +.bem-jobb h4 span{ + color: #fff; +} +.bem-dolgozo-jobb{ + width: 40%; + float: right; + text-align: right; + margin: auto; + +} + +.bem-dolgozo-jobb img{ + opacity: 0.8; + margin-left: 10px; + margin-right: 10ox; + width: 40%; + transition: opacity .25s ease-in-out; + -moz-transition: opacity .25s ease-in-out; + -webkit-transition: opacity .25s ease-in-out; +} + +.bem-dolgozo-jobb img:hover{ + opacity: 1; + +} + + + +/* Treatments - Our Services */ + + #treatments{ + clear: both; + } + + .service-block { + width: 100%; + display: block; + } + + + .service-area .one-third { + + width: 28%; + padding: 0; + overflow: hidden; + } + + .service-area .one-third.service-part1, .service-area .one-third.service-part4 { + width: 30%; + padding: 0; + float: left; + overflow: hidden; + } + + .service-area .one-third.service-part2 { + width: 42%; + /*margin-top:30px; + margin-bottom: 30px;*/ + padding: 0 30px; + float:left; + overflow: hidden; + } + + .service-area .one-third .service img { + -webkit-transform: rotateY(0deg); + -moz-transform: rotateY(0deg); + -ms-transform: rotateY(0deg); + -o-transform: rotateY(0deg); + transform: rotateY(0deg); + transition: all 0.9s ease 0s; + -webkit-transition: all 0.9s ease 0s; + -moz-transition: all 0.9s ease 0s; + -ms-transition: all 0.9s ease 0s; + -o-transition: all 0.9s ease 0s; + max-width: 100%; + } + + .service-area .one-third .service:hover img { + -webkit-transform: rotateY(-180deg); + -moz-transform: rotateY(-180deg); + -ms-transform: rotateY(-180deg); + -o-transform: rotateY(-180deg); + transform: rotateY(-180deg); + transition: all 0.9s ease 0s; + -webkit-transition: all 0.9s ease 0s; + -moz-transition: all 0.9s ease 0s; + -ms-transition: all 0.9s ease 0s; + -o-transition: all 0.9s ease 0s; + } + + + .service-area .one-third .service .service-text .service-icon { + background: url(../../../images/service-icon.png) no-repeat scroll; + float: right; + height: 80px; + border-radius: 50%; + width: 80px; + position: relative; + background-color: #333333; + display: inline-block; + transition: all 0.5s ease 0s; + -webkit-transition: all 0.5s ease 0s; + -moz-transition: all 0.5s ease 0s; + -ms-transition: all 0.5s ease 0s; + -o-transition: all 0.5s ease 0s; + } + + .service .service-text .service-content .main-title { + font-size: 14px; + font-weight: 600; + color: #ffffff; + text-transform: capitalize; + letter-spacing: 0.8px; + padding-bottom: 10px; + } + + .service .service-text .service-content .sub-title-serv { + font-size: 13px; + color: #888888; + font-weight: 400; + line-height: 20px; + letter-spacing: 0.6px; + } + + .service-area .one-third .service .service-text .service-content { + margin-right: 100px; + } + + .service-area .one-third .service .service-text { + padding: 0 0px 95px; + text-align: right; + } + + .service-area .one-third .service.service3 .service-text .service-content { + margin-right: 0px; + margin-left: 100px; + } + + .service-area .one-third .service.service3 .service-text { + text-align: left; + } + + + + .service-area .one-third .service.service3 .service-text .service-icon { + float: left; + } + + .service-area .one-third .service .service-text .service-icon.icon1 { + background-position: center -65px; + } + .service-area .one-third .service .service-text:hover .service-icon.icon1 { + background-position:center 22px; + } + .service-area .one-third .service .service-text .service-icon.icon2 { + background-position:center -417px; + } + .service-area .one-third .service .service-text:hover .service-icon.icon2 { + background-position: center -330px; + } + .service-area .one-third .service .service-text .service-icon.icon3 { + background-position:center -765px; + } + .service-area .one-third .service .service-text:hover .service-icon.icon3 { + background-position: center -678px; + } + .service-area .one-third .service.service3 .service-text .service-icon.icon1 { + background-position: center -242px; + } + .service-area .one-third .service.service3 .service-text:hover .service-icon.icon1 { + background-position: center -155px; + } + .service-area .one-third .service.service3 .service-text .service-icon.icon2 { + background-position: center -590px; + } + .service-area .one-third .service.service3 .service-text:hover .service-icon.icon2 { + background-position:center -503px; + } + .service-area .one-third.service-part3 .service .service-text .service-icon.icon3 { + background-position: center -939px; + } + .service-area .one-third.service-part3 .service .service-text:hover .service-icon.icon3 { + background-position:center -852px; + } + .service-area .one-third .service .service-text:hover .service-content .main-title { + color: #9e8462; + } + + + +/* One */ + + #one { + padding-top:10em; + padding-bottom: 5em; + } + + #one p { + font-size: 1.25em; + line-height: 1.75em; + margin: -0.5em 0 0 0; + } + + #one .inner { + display: inline-block; + margin-top: -6em; + padding-right: 6em; + vertical-align: middle; + width: 100%; + } + + #one .device { + border: solid 40px #fff; + border-bottom: 0; + border-radius: 20px; + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; + display: inline-block; + margin-bottom: 0; + position: relative; + vertical-align: middle; + width: 100%; + } + + #one .device:after { + background: #eee; + border-radius: 100%; + content: ''; + height: 10px; + left: 50%; + margin: -23px 0 0 -5px; + position: absolute; + top: 0; + width: 10px; + } + + +/*two */ + + .nyitvatartas .about-content { + position: relative; + display: inline-block; + width: 100%; + padding: 25px 0px 15px; + border-bottom: 1px solid #3d3d3d; + font-size: 16px; + font-weight: 600; + } + + .nyitvatartas .title, .nyitvatartas .time{ + color: #fff; + } + + .nyitvartas .closed{ + color: #9e8462; + } + + .nyitvatartas .about-content .about-text-left { + float: left; + } + + .nyitvatartas .about-content .about-text-right { + float: right; +} + + + +/* Footer */ + +#footer .footer-div{ + display: flex; +} + + +#footer .footer-div .companyname{ + color: #fff; + font-family: 'Abril Fatface', cursive; + font-size: 24px; + margin-bottom: 20px; +} + +#footer .footer-div .companyname span{ + border-bottom: solid 5px #fff; + } + +#footer .footer-div ul{ + margin: 0; + list-style: none; +} + +#footer .footer-logo{ + max-width: 100px; +} + + #footer { + background: #9e8462; + color: #fff; + padding: 2em 0 0 0; + text-align: center; + } + + #footer .icons { + font-size: 24px; + margin: 0 0 1em 0; + padding-left: 0; + } + + #footer .icons li { + margin-top: 0.5em; + font-size: 16px; + padding: 0 1em 0 1em; + } + + #footer .icons li:last-child { + padding-right: 0; + } + + #footer .icons li a { + -moz-transition: color 0.2s ease-in-out; + -webkit-transition: color 0.2s ease-in-out; + -ms-transition: color 0.2s ease-in-out; + transition: color 0.2s ease-in-out; + color: #fff; + } + + #footer .icons li a:hover { + color: #000; + } + + .footer-bal{ + margin: 0 10px; + width: 30%; + + } + + .footer-bal .contact-block a{ + text-decoration: none; + color: #fff; +} + + + .footer-jobb{ + width: 60%; + margin:0; + float: left; + } + + .footer-jobb img{ + width: 100%; + margin:0; + } + + + #footer .copyright { + background: #141414; + font-size: 0.9em; + padding: 1em 0 1em 0; + margin: 2em 0 0 0; + } + +/* Wide */ + + @media screen and (max-width: 1680px) { + + /* Basic */ + + body, input, select, textarea { + font-size: 11pt; + } + + } + +/* Normal */ + + @media screen and (max-width: 1280px) { + + /* Basic */ + + body, input, select, textarea { + font-size: 11pt; + } + + /* Feature */ + + .feature { + padding-left: 7em; + } + + .feature i { + height: 5.25em; + line-height: 5.5em; + margin-top: 0; + width: 5.25em; + } + + .feature i:before { + font-size: 32px; + } + + /* Wrapper */ + + .wrapper { + padding: 4em 0 2em 0; + } + + #header nav > ul > li{ + margin-left: 0.5em; + } + + /* Banner */ + + #banner { + background-attachment: scroll; + padding: 0 0; + } + + #banner .inner { + padding: 3em 4em; + } + + #banner .inner h2 { + font-size: 2.25em; + } + + /* Main */ + + #main { + padding: 2em 0; + } + + .service-area .one-third .service .service-text{ + padding: 0 0 45px; + } + + .main-title a {font-size: 14px;} + + .sub-title{font-size:10px;} + + + /* One */ + + #one .inner { + margin-top: -4em; + padding-right: 4em; + } + + #one .device { + border-width: 35px; + } + + #one .device:after { + margin-top: -22px; + } + + } + +/* Narrow */ + + #navPanel, #navButton { + display: none; + } + + @media screen and (max-width: 980px) { + + /* Basic */ + + html, body { + overflow-x: hidden; + } + + body, input, select, textarea { + font-size: 12pt; + } + + h2 { + font-size: 1.25em; + line-height: 1.75em; + } + + h3 { + font-size: 1.1em; + line-height: 1.5em; + } + + h4 { + font-size: 1em; + line-height: 1.5em; + } + + /* Section/Article */ + + section.special, article.special { + text-align: center; + } + + header h2 + p { + font-size: 0.9em; + } + + header h3 + p { + font-size: 0.8em; + } + + header h4 + p, + header h5 + p, + header h6 + p { + font-size: 0.8em; + } + + /* Feature */ + + .feature { + padding-left: 9em; + } + + .feature i { + height: 7em; + line-height: 7.5em; + margin-top: -0.5em; + width: 7em; + } + + .feature i:before { + font-size: 42px; + } + + /* Image Feature */ + + .image-feature .image { + max-height: 30em; + overflow: hidden; + } + + /* Header */ + + #page-wrapper { + padding-top: 0; + } + + #header { + display: none; + } + + /* Banner */ + + #banner { + padding: 0em 0; + } + + #banner .inner { + padding: 3em; + } + + #banner .inner h2 { + font-size: 2em; + } + + + + /* Main */ + + #main > header.major { + margin: 0; + } + + .bem-jobb{margin-left:2em;} + + .bem-bal p, .bem-dolgozo-bal p {font-size:14px; margin: 0 0 0.5em 0;} + + .bem-dolgozo-jobb {width: 30%;} + + .bem-dolgozo-jobb img{width: 70%;} + + header.major h2 {font-size: 36px;} + + + /* One */ + + #one {padding-top: 2em;} + + #one p { + font-size: 1em; + } + + #one .inner { + display: block; + margin: 0 auto; + max-width: 100%; + padding: 0; + text-align: center; + width: 35em; + } + + #one .device { + display: block; + margin: 4em auto 0 auto; + max-width: 100%; + width: 30em; + } + + .service-area .one-third.service-part1{width: 50%; padding-right: 10px;} + .service-area .one-third.service-part2{display: none;} + .service-area .one-third.service-part3{width:50%;padding-left: 10px;} + + .one-half {float: none; width: 100%;} + #footer .footer-div{display:block;} + .footer-bal{width: 100%;} + .footer-jobb{width: 100%; float: none; margin-top:2em;} + + + /* Off-Canvas Navigation */ + + #page-wrapper { + -moz-backface-visibility: hidden; + -webkit-backface-visibility: hidden; + -ms-backface-visibility: hidden; + backface-visibility: hidden; + -moz-transition: -moz-transform 0.5s ease; + -webkit-transition: -webkit-transform 0.5s ease; + -ms-transition: -ms-transform 0.5s ease; + transition: transform 0.5s ease; + padding-bottom: 1px; + } + + #navButton { + -moz-backface-visibility: hidden; + -webkit-backface-visibility: hidden; + -ms-backface-visibility: hidden; + backface-visibility: hidden; + -moz-transition: -moz-transform 0.5s ease; + -webkit-transition: -webkit-transform 0.5s ease; + -ms-transition: -ms-transform 0.5s ease; + transition: transform 0.5s ease; + display: block; + height: 4em; + left: 0; + position: fixed; + top: 0; + width: 6em; + z-index: 10001; + } + + #navButton .toggle { + text-decoration: none; + height: 100%; + left: 0; + position: absolute; + top: 0; + width: 100%; + } + + #navButton .toggle:before { + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + display: inline-block; + font-style: normal; + font-variant: normal; + text-rendering: auto; + line-height: 1; + text-transform: none !important; + font-family: 'Font Awesome 5 Free'; + font-weight: 900; + } + + #navButton .toggle:before { + background: rgba(29, 39, 38, 0.75); + color: #ffffff; + content: '\f0c9'; + display: block; + font-size: 18px; + height: 2.35em; + left: 0.5em; + line-height: 2.35em; + position: absolute; + text-align: center; + top: 0.5em; + width: 3em; + } + + #navPanel { + -moz-backface-visibility: hidden; + -webkit-backface-visibility: hidden; + -ms-backface-visibility: hidden; + backface-visibility: hidden; + -moz-transform: translateX(-275px); + -webkit-transform: translateX(-275px); + -ms-transform: translateX(-275px); + transform: translateX(-275px); + -moz-transition: -moz-transform 0.5s ease; + -webkit-transition: -webkit-transform 0.5s ease; + -ms-transition: -ms-transform 0.5s ease; + transition: transform 0.5s ease; + background-image: -moz-linear-gradient(left, rgba(0,0,0,0) 95%, rgba(0,0,0,0.1)); + background-image: -webkit-linear-gradient(left, rgba(0,0,0,0) 95%, rgba(0,0,0,0.1)); + background-image: -ms-linear-gradient(left, rgba(0,0,0,0) 95%, rgba(0,0,0,0.1)); + background-image: linear-gradient(left, rgba(0,0,0,0) 95%, rgba(0,0,0,0.1)); + display: block; + height: 100%; + left: 0; + overflow-y: auto; + position: fixed; + top: 0; + width: 275px; + z-index: 10002; + background: #1d2726; + color: #c7c9c9; + padding: 0.25em 1.5em; + } + + #navPanel .link { + border-top: solid 1px rgba(255, 255, 255, 0.05); + color: #c7c9c9; + display: block; + font-size: 0.8em; + font-weight: 600; + height: 3.5em; + letter-spacing: 0.125em; + line-height: 3.5em; + text-decoration: none; + text-transform: uppercase; + } + + #navPanel .link:first-child { + border-top: 0; + } + + #navPanel .link.depth-0 { + color: #ffffff; + } + + #navPanel .link .indent-1 { + display: inline-block; + width: 1.25em; + } + + #navPanel .link .indent-2 { + display: inline-block; + width: 2.5em; + } + + #navPanel .link .indent-3 { + display: inline-block; + width: 3.75em; + } + + #navPanel .link .indent-4 { + display: inline-block; + width: 5em; + } + + #navPanel .link .indent-5 { + display: inline-block; + width: 6.25em; + } + + body.navPanel-visible #page-wrapper { + -moz-transform: translateX(275px); + -webkit-transform: translateX(275px); + -ms-transform: translateX(275px); + transform: translateX(275px); + } + + body.navPanel-visible #navButton { + -moz-transform: translateX(275px); + -webkit-transform: translateX(275px); + -ms-transform: translateX(275px); + transform: translateX(275px); + } + + body.navPanel-visible #navPanel { + -moz-transform: translateX(0); + -webkit-transform: translateX(0); + -ms-transform: translateX(0); + transform: translateX(0); + } + + } + +/* Mobile */ + + @media screen and (max-width: 736px) { + + /* Basic */ + + body, input, select, textarea { + font-size: 12pt; + } + + /* Feature */ + + .feature { + margin: 0 auto 2em auto; + max-width: 100%; + padding: 0; + text-align: center; + width: 30em; + } + + .feature i { + left: 0; + margin: 0 auto 2em auto; + position: relative; + top: 0; + } + + /* Image Feature */ + + .image-feature { + margin: 0 auto 2em auto; + max-width: 100%; + width: 25em; + } + + .image-feature .image { + max-height: none; + } + + /* Wrapper */ + + .wrapper { + padding: 2.5em 1.25em 0.5em 1.25em; + } + + /* Banner */ + + #banner { + padding: 6em 0; + } + + #banner .inner { + padding: 2em 2.5em; + width: 100%; + } + + #banner .inner h2 { + font-size: 1.5em; + } + + #banner .inner p { + margin: 1.5em 0 0 0; + padding: 1.5em 0 0 0; + } + + /* One */ + + #one .device { + border-width: 20px; + margin-top: 2em; + max-width: 100%; + width: 25em; + } + + #one .device:after { + height: 8px; + margin: -13px 0 0 -4px; + width: 8px; + } + + } + +/* Mobile (Portrait) */ + + @media screen and (max-width: 480px) { + + #banner{padding:0;} + .service-part2{display: none;} + .one-third{width: 100%;} + .service-area .one-third.service-part1{width: 100%;} + .service-area .one-third.service-part3{width: 100%;} + .service-area .one-third .service .service-text {text-align: center; padding-bottom: 30px;} + .service-area .one-third .service .service-text .service-icon {float: none;} + .service-area .one-third .service .service-text .service-content {margin: 0;} + .service .service-text .service-content .sub-title-serv {padding: 0 20px 0 20px;} + .service-area .one-third .service.service3 .service-text .service-icon {float: none;} + .service-area .one-third .service.service3 .service-text {text-align:center;} + .service-area .one-third .service.service3 .service-text .service-content {margin-left: 0;} + .service-area .one-third {width: 100%;} + + #one{padding-top: 3em;} + + .bemutatkozas{display: block;} + .bem-bal{width: 100%;} + .bem-jobb{width: 100%; margin-bottom: 2em;} + + .bemutatkozas-dolgozo{display: block;} + .bem-dolgozo-bal {width: 100%;} + .bem-dolgozo-jobb {width: 100%; float: none; text-align: center;} + + #czcategorylistblock .czcategorylist-wrapper .category_lists .one-half .category-content {width: 100%; } + .one-half{width:100%; float: none;} + + .category-text-left{float: none;} + .category-text-right {display: block; float: left;} + + #two {margin-bottom: 3em;} + header.major h2 {font-size: 32px;} + + #footer .footer-div {display: block;} + .footer-bal{width:100%;} + .footer-jobb{width:100%; float: none; margin-top:2em;} + + + /* Basic */ + + html, body { + min-width: 320px; + } + + body, input, select, textarea { + font-size: 12pt; + } + + h1 br, h2 br, h3 br, h4 br, h5 br, h6 br { + display: none; + } + + h2 { + font-size: 1.15em; + line-height: 1.75em; + } + + h3 { + font-size: 1em; + line-height: 1.5em; + } + + /* List */ + + ul.actions { + margin: 0 0 2em 0; + } + + ul.actions li { + display: block; + padding: 1em 0 0 0; + text-align: center; + width: 100%; + } + + ul.actions li:first-child { + padding-top: 0; + } + + ul.actions li > * { + margin: 0 !important; + width: 100%; + } + + ul.actions li > *.icon:before { + margin-left: -2em; + } + + ul.actions.small li { + padding: 0.5em 0 0 0; + } + + ul.actions.small li:first-child { + padding-top: 0; + } + + /* Button */ + + input[type="submit"], + input[type="reset"], + input[type="button"], + button, + .button { + padding: 0; + } + + /* One */ + + #one .device { + border-width: 15px; + } + + #one .device:after { + height: 5px; + margin: -10px 0 0 -2.5px; + width: 5px; + } + + } \ No newline at end of file diff --git a/archive/barber/assets/js/breakpoints.min.js b/archive/barber/assets/js/breakpoints.min.js new file mode 100755 index 0000000..b4c6416 --- /dev/null +++ b/archive/barber/assets/js/breakpoints.min.js @@ -0,0 +1,2 @@ +/* breakpoints.js v1.0 | @ajlkn | MIT licensed */ +var breakpoints=function(){"use strict";function e(e){t.init(e)}var t={list:null,media:{},events:[],init:function(e){t.list=e,window.addEventListener("resize",t.poll),window.addEventListener("orientationchange",t.poll),window.addEventListener("load",t.poll),window.addEventListener("fullscreenchange",t.poll)},active:function(e){var n,a,s,i,r,d,c;if(!(e in t.media)){if(">="==e.substr(0,2)?(a="gte",n=e.substr(2)):"<="==e.substr(0,2)?(a="lte",n=e.substr(2)):">"==e.substr(0,1)?(a="gt",n=e.substr(1)):"<"==e.substr(0,1)?(a="lt",n=e.substr(1)):"!"==e.substr(0,1)?(a="not",n=e.substr(1)):(a="eq",n=e),n&&n in t.list)if(i=t.list[n],Array.isArray(i)){if(r=parseInt(i[0]),d=parseInt(i[1]),isNaN(r)){if(isNaN(d))return;c=i[1].substr(String(d).length)}else c=i[0].substr(String(r).length);if(isNaN(r))switch(a){case"gte":s="screen";break;case"lte":s="screen and (max-width: "+d+c+")";break;case"gt":s="screen and (min-width: "+(d+1)+c+")";break;case"lt":s="screen and (max-width: -1px)";break;case"not":s="screen and (min-width: "+(d+1)+c+")";break;default:s="screen and (max-width: "+d+c+")"}else if(isNaN(d))switch(a){case"gte":s="screen and (min-width: "+r+c+")";break;case"lte":s="screen";break;case"gt":s="screen and (max-width: -1px)";break;case"lt":s="screen and (max-width: "+(r-1)+c+")";break;case"not":s="screen and (max-width: "+(r-1)+c+")";break;default:s="screen and (min-width: "+r+c+")"}else switch(a){case"gte":s="screen and (min-width: "+r+c+")";break;case"lte":s="screen and (max-width: "+d+c+")";break;case"gt":s="screen and (min-width: "+(d+1)+c+")";break;case"lt":s="screen and (max-width: "+(r-1)+c+")";break;case"not":s="screen and (max-width: "+(r-1)+c+"), screen and (min-width: "+(d+1)+c+")";break;default:s="screen and (min-width: "+r+c+") and (max-width: "+d+c+")"}}else s="("==i.charAt(0)?"screen and "+i:i;t.media[e]=!!s&&s}return t.media[e]!==!1&&window.matchMedia(t.media[e]).matches},on:function(e,n){t.events.push({query:e,handler:n,state:!1}),t.active(e)&&n()},poll:function(){var e,n;for(e=0;e0:!!("ontouchstart"in window),e.mobile="wp"==e.os||"android"==e.os||"ios"==e.os||"bb"==e.os}};return e.init(),e}();!function(e,n){"function"==typeof define&&define.amd?define([],n):"object"==typeof exports?module.exports=n():e.browser=n()}(this,function(){return browser}); diff --git a/archive/barber/assets/js/jquery.dropotron.min.js b/archive/barber/assets/js/jquery.dropotron.min.js new file mode 100755 index 0000000..0ab4cd6 --- /dev/null +++ b/archive/barber/assets/js/jquery.dropotron.min.js @@ -0,0 +1,2 @@ +/* jquery.dropotron.js v1.4.3 | (c) @ajlkn | github.com/ajlkn/jquery.dropotron | MIT licensed */ +!function(e){e.fn.disableSelection_dropotron=function(){return e(this).css("user-select","none").css("-khtml-user-select","none").css("-moz-user-select","none").css("-o-user-select","none").css("-webkit-user-select","none")},e.fn.dropotron=function(t){if(0==this.length)return e(this);if(this.length>1)for(var o=0;o0&&t.add(n).on("mouseleave",function(e){window.clearTimeout(c),c=window.setTimeout(function(){t.trigger("doCollapse")},o.hideDelay)}),t.disableSelection_dropotron().hide().addClass(o.menuClass).css("position","absolute").on("mouseenter",function(e){window.clearTimeout(c)}).on("doExpand",function(){if(t.is(":visible"))return!1;window.clearTimeout(c),s.each(function(){var t=e(this);e.contains(t.get(0),n.get(0))||t.trigger("doCollapse")});var i,a,d,f,u=n.offset(),p=n.position(),h=(n.parent().position(),n.outerWidth()),g=t.outerWidth(),v=t.css("z-index")==o.baseZIndex;if(v){switch(i=o.detach?u:p,f=i.top+n.outerHeight()+o.globalOffsetY,a=o.alignment,t.removeClass("left").removeClass("right").removeClass("center"),o.alignment){case"right":d=i.left-g+h,0>d&&(d=i.left,a="left");break;case"center":d=i.left-Math.floor((g-h)/2),0>d?(d=i.left,a="left"):d+g>l.width()&&(d=i.left-g+h,a="right");break;case"left":default:d=i.left,d+g>l.width()&&(d=i.left-g+h,a="right")}t.addClass(a)}else switch("relative"==n.css("position")||"absolute"==n.css("position")?(f=o.offsetY,d=-1*p.left):(f=p.top+o.offsetY,d=0),o.alignment){case"right":d+=-1*n.parent().outerWidth()+o.offsetX;break;case"center":case"left":default:d+=n.parent().outerWidth()+o.offsetX}navigator.userAgent.match(/MSIE ([0-9]+)\./)&&RegExp.$1<8&&(d+=o.IEOffsetX,f+=o.IEOffsetY),t.css("left",d+"px").css("top",f+"px").css("opacity","0.01").show();var C=!1;switch(d="relative"==n.css("position")||"absolute"==n.css("position")?-1*p.left:0,t.offset().left<0?(d+=n.parent().outerWidth()-o.offsetX,C=!0):t.offset().left+g>l.width()&&(d+=-1*n.parent().outerWidth()-o.offsetX,C=!0),C&&t.css("left",d+"px"),t.hide().css("opacity","1"),o.mode){case"zoom":r=!0,n.addClass(o.openerActiveClass),t.animate({width:"toggle",height:"toggle"},o.speed,o.easing,function(){r=!1});break;case"slide":r=!0,n.addClass(o.openerActiveClass),t.animate({height:"toggle"},o.speed,o.easing,function(){r=!1});break;case"fade":if(r=!0,v&&!o.noOpenerFade){var C;C="slow"==o.speed?80:"fast"==o.speed?40:Math.floor(o.speed/2),n.fadeTo(C,.01,function(){n.addClass(o.openerActiveClass),n.fadeTo(o.speed,1),t.fadeIn(o.speed,function(){r=!1})})}else n.addClass(o.openerActiveClass),n.fadeTo(o.speed,1),t.fadeIn(o.speed,function(){r=!1});break;case"instant":default:n.addClass(o.openerActiveClass),t.show()}return!1}).on("doCollapse",function(){return t.is(":visible")?(t.hide(),n.removeClass(o.openerActiveClass),t.find("."+o.openerActiveClass).removeClass(o.openerActiveClass),t.find("ul").hide(),!1):!1}).on("doToggle",function(e){return t.is(":visible")?t.trigger("doCollapse"):t.trigger("doExpand"),!1}),n.disableSelection_dropotron().addClass("opener").css("cursor","pointer").on("click touchend",function(e){r||(e.preventDefault(),e.stopPropagation(),t.trigger("doToggle"))}),"hover"==o.expandMode&&n.hover(function(e){r||(d=window.setTimeout(function(){t.trigger("doExpand")},o.hoverDelay))},function(e){window.clearTimeout(d)})}),s.find("a").css("display","block").on("click touchend",function(t){r||e(this).attr("href").length<1&&t.preventDefault()}),n.find("li").css("white-space","nowrap").each(function(){var t=e(this),o=t.children("a"),s=t.children("ul"),i=o.attr("href");o.on("click touchend",function(e){0==i.length||"#"==i?e.preventDefault():e.stopPropagation()}),o.length>0&&0==s.length&&t.on("click touchend",function(e){r||(n.trigger("doCollapseAll"),e.stopPropagation())})}),n.children("li").each(function(){var t,n=e(this),s=n.children("ul");if(s.length>0){o.detach&&(o.cloneOnDetach&&(t=s.clone(),t.attr("class","").hide().appendTo(s.parent())),s.detach().appendTo(i));for(var a=o.baseZIndex,l=1,r=s;r.length>0;l++)r.css("z-index",a++),o.submenuClassPrefix&&r.addClass(o.submenuClassPrefix+(a-1-o.baseZIndex)),r=r.find("> li > ul")}}),l.on("scroll",function(){n.trigger("doCollapseAll")}).on("keypress",function(e){r||27!=e.keyCode||(e.preventDefault(),n.trigger("doCollapseAll"))}),a.on("click touchend",function(){r||n.trigger("doCollapseAll")})}}(jQuery); diff --git a/archive/barber/assets/js/jquery.min.js b/archive/barber/assets/js/jquery.min.js new file mode 100755 index 0000000..409c3f4 --- /dev/null +++ b/archive/barber/assets/js/jquery.min.js @@ -0,0 +1,2 @@ +/*! jQuery v3.4.1 | (c) JS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],E=C.document,r=Object.getPrototypeOf,s=t.slice,g=t.concat,u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.4.1",k=function(e,t){return new k.fn.init(e,t)},p=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function d(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp($),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+$),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(m.childNodes),m.childNodes),t[m.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&((e?e.ownerDocument||e:m)!==C&&T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!A[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&U.test(t)){(s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=k),o=(l=h(t)).length;while(o--)l[o]="#"+s+" "+xe(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){A(t,!0)}finally{s===k&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[k]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:m;return r!==C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),m!==C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=k,!C.getElementsByName||!C.getElementsByName(k).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+k+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",$)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e===C||e.ownerDocument===m&&y(m,e)?-1:t===C||t.ownerDocument===m&&y(m,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===C?-1:t===C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]===m?-1:s[r]===m?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==C&&T(e),d.matchesSelector&&E&&!A[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){A(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=p[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&p(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):"string"!=typeof n?k.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:L.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),D.test(r[1])&&k.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(k):k.makeArray(e,this)}).prototype=k.fn,q=k(E);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?k.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;nx",y.noCloneChecked=!!me.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee=/^([^.]*)(?:\.(.+)|)/;function ke(){return!0}function Se(){return!1}function Ne(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ae(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ae(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return k().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=k.guid++)),e.each(function(){k.event.add(this,t,i,r,n)})}function De(e,i,o){o?(Q.set(e,i,!1),k.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Q.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(k.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Q.set(this,i,r),t=o(this,i),this[i](),r!==(n=Q.get(this,i))||t?Q.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Q.set(this,i,{value:k.event.trigger(k.extend(r[0],k.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Q.get(e,i)&&k.event.add(e,i,ke)}k.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.get(t);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&k.find.matchesSelector(ie,i),n.guid||(n.guid=k.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof k&&k.event.triggered!==e.type?k.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(R)||[""]).length;while(l--)d=g=(s=Ee.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=k.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=k.event.special[d]||{},c=k.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),k.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.hasData(e)&&Q.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(R)||[""]).length;while(l--)if(d=g=(s=Ee.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=k.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||k.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)k.event.remove(e,d+t[l],n,r,!0);k.isEmptyObject(u)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=k.event.fix(e),u=new Array(arguments.length),l=(Q.get(this,"events")||{})[s.type]||[],c=k.event.special[s.type]||{};for(u[0]=s,t=1;t\x20\t\r\n\f]*)[^>]*)\/>/gi,qe=/\s*$/g;function Oe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&k(e).children("tbody")[0]||e}function Pe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Re(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Me(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(Q.hasData(e)&&(o=Q.access(e),a=Q.set(t,o),l=o.events))for(i in delete a.handle,a.events={},l)for(n=0,r=l[i].length;n")},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=oe(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||k.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Vt,Gt=[],Yt=/(=)\?(?=&|$)|\?\?/;k.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Gt.pop()||k.expando+"_"+kt++;return this[e]=!0,e}}),k.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Yt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Yt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Yt,"$1"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||k.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?k(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Gt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Vt=E.implementation.createHTMLDocument("").body).innerHTML="
",2===Vt.childNodes.length),k.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=D.exec(e))?[t.createElement(i[1])]:(i=we([e],t,o),o&&o.length&&k(o).remove(),k.merge([],i.childNodes)));var r,i,o},k.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(k.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},k.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){k.fn[t]=function(e){return this.on(t,e)}}),k.expr.pseudos.animated=function(t){return k.grep(k.timers,function(e){return t===e.elem}).length},k.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=k.css(e,"position"),c=k(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=k.css(e,"top"),u=k.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,k.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},k.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){k.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===k.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===k.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=k(e).offset()).top+=k.css(e,"borderTopWidth",!0),i.left+=k.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-k.css(r,"marginTop",!0),left:t.left-i.left-k.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===k.css(e,"position"))e=e.offsetParent;return e||ie})}}),k.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;k.fn[t]=function(e){return _(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),k.each(["top","left"],function(e,n){k.cssHooks[n]=ze(y.pixelPosition,function(e,t){if(t)return t=_e(e,n),$e.test(t)?k(e).position()[n]+"px":t})}),k.each({Height:"height",Width:"width"},function(a,s){k.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){k.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return _(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?k.css(e,t,i):k.style(e,t,n,i)},s,n?e:void 0,n)}})}),k.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){k.fn[n]=function(e,t){return 0 ul').dropotron({ + alignment: 'right' + }); + + // Nav Panel. + + // Title Bar. + $( + '' + ) + .appendTo($body); + + // Panel. + $( + '' + ) + .appendTo($body) + .panel({ + delay: 500, + hideOnClick: true, + hideOnSwipe: true, + resetScroll: true, + resetForms: true, + side: 'left', + target: $body, + visibleClass: 'navPanel-visible' + }); + + // Banner. + var $banner = $('#banner'); + + if ($banner.length > 0) { + + // Parallax background. + if (browser.name != 'ie' + && browser.name != 'edge' + && !browser.mobile) { + + var originalPosition = $banner.css('background-position'); + + breakpoints.on('<=normal', function() { + + $window.off('scroll.px'); + $banner.css('background-position', originalPosition); + + }); + + breakpoints.on('>normal', function() { + + $banner.css('background-position', 'center 0px'); + + $window.on('scroll.px', function() { + $banner.css('background-position', 'center ' + (parseInt($window.scrollTop()) * -0.5) + 'px'); + }); + + }); + + } + + } + +})(jQuery); \ No newline at end of file diff --git a/archive/barber/assets/js/skel.min.js b/archive/barber/assets/js/skel.min.js new file mode 100755 index 0000000..02ab92f --- /dev/null +++ b/archive/barber/assets/js/skel.min.js @@ -0,0 +1,2 @@ +/* skel.js v3.0.1 | (c) skel.io | MIT licensed */ +var skel=function(){"use strict";var t={breakpointIds:null,events:{},isInit:!1,obj:{attachments:{},breakpoints:{},head:null,states:{}},sd:"/",state:null,stateHandlers:{},stateId:"",vars:{},DOMReady:null,indexOf:null,isArray:null,iterate:null,matchesMedia:null,extend:function(e,n){t.iterate(n,function(i){t.isArray(n[i])?(t.isArray(e[i])||(e[i]=[]),t.extend(e[i],n[i])):"object"==typeof n[i]?("object"!=typeof e[i]&&(e[i]={}),t.extend(e[i],n[i])):e[i]=n[i]})},newStyle:function(t){var e=document.createElement("style");return e.type="text/css",e.innerHTML=t,e},_canUse:null,canUse:function(e){t._canUse||(t._canUse=document.createElement("div"));var n=t._canUse.style,i=e.charAt(0).toUpperCase()+e.slice(1);return e in n||"Moz"+i in n||"Webkit"+i in n||"O"+i in n||"ms"+i in n},on:function(e,n){var i=e.split(/[\s]+/);return t.iterate(i,function(e){var a=i[e];if(t.isInit){if("init"==a)return void n();if("change"==a)n();else{var r=a.charAt(0);if("+"==r||"!"==r){var o=a.substring(1);if(o in t.obj.breakpoints)if("+"==r&&t.obj.breakpoints[o].active)n();else if("!"==r&&!t.obj.breakpoints[o].active)return void n()}}}t.events[a]||(t.events[a]=[]),t.events[a].push(n)}),t},trigger:function(e){return t.events[e]&&0!=t.events[e].length?(t.iterate(t.events[e],function(n){t.events[e][n]()}),t):void 0},breakpoint:function(e){return t.obj.breakpoints[e]},breakpoints:function(e){function n(t,e){this.name=this.id=t,this.media=e,this.active=!1,this.wasActive=!1}return n.prototype.matches=function(){return t.matchesMedia(this.media)},n.prototype.sync=function(){this.wasActive=this.active,this.active=this.matches()},t.iterate(e,function(i){t.obj.breakpoints[i]=new n(i,e[i])}),window.setTimeout(function(){t.poll()},0),t},addStateHandler:function(e,n){t.stateHandlers[e]=n},callStateHandler:function(e){var n=t.stateHandlers[e]();t.iterate(n,function(e){t.state.attachments.push(n[e])})},changeState:function(e){t.iterate(t.obj.breakpoints,function(e){t.obj.breakpoints[e].sync()}),t.vars.lastStateId=t.stateId,t.stateId=e,t.breakpointIds=t.stateId===t.sd?[]:t.stateId.substring(1).split(t.sd),t.obj.states[t.stateId]?t.state=t.obj.states[t.stateId]:(t.obj.states[t.stateId]={attachments:[]},t.state=t.obj.states[t.stateId],t.iterate(t.stateHandlers,t.callStateHandler)),t.detachAll(t.state.attachments),t.attachAll(t.state.attachments),t.vars.stateId=t.stateId,t.vars.state=t.state,t.trigger("change"),t.iterate(t.obj.breakpoints,function(e){t.obj.breakpoints[e].active?t.obj.breakpoints[e].wasActive||t.trigger("+"+e):t.obj.breakpoints[e].wasActive&&t.trigger("-"+e)})},generateStateConfig:function(e,n){var i={};return t.extend(i,e),t.iterate(t.breakpointIds,function(e){t.extend(i,n[t.breakpointIds[e]])}),i},getStateId:function(){var e="";return t.iterate(t.obj.breakpoints,function(n){var i=t.obj.breakpoints[n];i.matches()&&(e+=t.sd+i.id)}),e},poll:function(){var e="";e=t.getStateId(),""===e&&(e=t.sd),e!==t.stateId&&t.changeState(e)},_attach:null,attach:function(e){var n=t.obj.head,i=e.element;return i.parentNode&&i.parentNode.tagName?!1:(t._attach||(t._attach=n.firstChild),n.insertBefore(i,t._attach.nextSibling),e.permanent&&(t._attach=i),!0)},attachAll:function(e){var n=[];t.iterate(e,function(t){n[e[t].priority]||(n[e[t].priority]=[]),n[e[t].priority].push(e[t])}),n.reverse(),t.iterate(n,function(e){t.iterate(n[e],function(i){t.attach(n[e][i])})})},detach:function(t){var e=t.element;return t.permanent||!e.parentNode||e.parentNode&&!e.parentNode.tagName?!1:(e.parentNode.removeChild(e),!0)},detachAll:function(e){var n={};t.iterate(e,function(t){n[e[t].id]=!0}),t.iterate(t.obj.attachments,function(e){e in n||t.detach(t.obj.attachments[e])})},attachment:function(e){return e in t.obj.attachments?t.obj.attachments[e]:null},newAttachment:function(e,n,i,a){return t.obj.attachments[e]={id:e,element:n,priority:i,permanent:a}},init:function(){t.initMethods(),t.initVars(),t.initEvents(),t.obj.head=document.getElementsByTagName("head")[0],t.isInit=!0,t.trigger("init")},initEvents:function(){t.on("resize",function(){t.poll()}),t.on("orientationChange",function(){t.poll()}),t.DOMReady(function(){t.trigger("ready")}),window.onload&&t.on("load",window.onload),window.onload=function(){t.trigger("load")},window.onresize&&t.on("resize",window.onresize),window.onresize=function(){t.trigger("resize")},window.onorientationchange&&t.on("orientationChange",window.onorientationchange),window.onorientationchange=function(){t.trigger("orientationChange")}},initMethods:function(){document.addEventListener?!function(e,n){t.DOMReady=n()}("domready",function(){function t(t){for(r=1;t=n.shift();)t()}var e,n=[],i=document,a="DOMContentLoaded",r=/^loaded|^c/.test(i.readyState);return i.addEventListener(a,e=function(){i.removeEventListener(a,e),t()}),function(t){r?t():n.push(t)}}):!function(e,n){t.DOMReady=n()}("domready",function(t){function e(t){for(h=1;t=i.shift();)t()}var n,i=[],a=!1,r=document,o=r.documentElement,s=o.doScroll,c="DOMContentLoaded",d="addEventListener",u="onreadystatechange",l="readyState",f=s?/^loaded|^c/:/^loaded|c/,h=f.test(r[l]);return r[d]&&r[d](c,n=function(){r.removeEventListener(c,n,a),e()},a),s&&r.attachEvent(u,n=function(){/^c/.test(r[l])&&(r.detachEvent(u,n),e())}),t=s?function(e){self!=top?h?e():i.push(e):function(){try{o.doScroll("left")}catch(n){return setTimeout(function(){t(e)},50)}e()}()}:function(t){h?t():i.push(t)}}),Array.prototype.indexOf?t.indexOf=function(t,e){return t.indexOf(e)}:t.indexOf=function(t,e){if("string"==typeof t)return t.indexOf(e);var n,i,a=e?e:0;if(!this)throw new TypeError;if(i=this.length,0===i||a>=i)return-1;for(0>a&&(a=i-Math.abs(a)),n=a;i>n;n++)if(this[n]===t)return n;return-1},Array.isArray?t.isArray=function(t){return Array.isArray(t)}:t.isArray=function(t){return"[object Array]"===Object.prototype.toString.call(t)},Object.keys?t.iterate=function(t,e){if(!t)return[];var n,i=Object.keys(t);for(n=0;i[n]&&e(i[n],t[i[n]])!==!1;n++);}:t.iterate=function(t,e){if(!t)return[];var n;for(n in t)if(Object.prototype.hasOwnProperty.call(t,n)&&e(n,t[n])===!1)break},window.matchMedia?t.matchesMedia=function(t){return""==t?!0:window.matchMedia(t).matches}:window.styleMedia||window.media?t.matchesMedia=function(t){if(""==t)return!0;var e=window.styleMedia||window.media;return e.matchMedium(t||"all")}:window.getComputedStyle?t.matchesMedia=function(t){if(""==t)return!0;var e=document.createElement("style"),n=document.getElementsByTagName("script")[0],i=null;e.type="text/css",e.id="matchmediajs-test",n.parentNode.insertBefore(e,n),i="getComputedStyle"in window&&window.getComputedStyle(e,null)||e.currentStyle;var a="@media "+t+"{ #matchmediajs-test { width: 1px; } }";return e.styleSheet?e.styleSheet.cssText=a:e.textContent=a,"1px"===i.width}:t.matchesMedia=function(t){if(""==t)return!0;var e,n,i,a,r={"min-width":null,"max-width":null},o=!1;for(i=t.split(/\s+and\s+/),e=0;er["max-width"]||null!==r["min-height"]&&cr["max-height"]?!1:!0},navigator.userAgent.match(/MSIE ([0-9]+)/)&&RegExp.$1<9&&(t.newStyle=function(t){var e=document.createElement("span");return e.innerHTML=' ",e})},initVars:function(){var e,n,i,a=navigator.userAgent;e="other",n=0,i=[["firefox",/Firefox\/([0-9\.]+)/],["bb",/BlackBerry.+Version\/([0-9\.]+)/],["bb",/BB[0-9]+.+Version\/([0-9\.]+)/],["opera",/OPR\/([0-9\.]+)/],["opera",/Opera\/([0-9\.]+)/],["edge",/Edge\/([0-9\.]+)/],["safari",/Version\/([0-9\.]+).+Safari/],["chrome",/Chrome\/([0-9\.]+)/],["ie",/MSIE ([0-9]+)/],["ie",/Trident\/.+rv:([0-9]+)/]],t.iterate(i,function(t,i){return a.match(i[1])?(e=i[0],n=parseFloat(RegExp.$1),!1):void 0}),t.vars.browser=e,t.vars.browserVersion=n,e="other",n=0,i=[["ios",/([0-9_]+) like Mac OS X/,function(t){return t.replace("_",".").replace("_","")}],["ios",/CPU like Mac OS X/,function(t){return 0}],["wp",/Windows Phone ([0-9\.]+)/,null],["android",/Android ([0-9\.]+)/,null],["mac",/Macintosh.+Mac OS X ([0-9_]+)/,function(t){return t.replace("_",".").replace("_","")}],["windows",/Windows NT ([0-9\.]+)/,null],["bb",/BlackBerry.+Version\/([0-9\.]+)/,null],["bb",/BB[0-9]+.+Version\/([0-9\.]+)/,null]],t.iterate(i,function(t,i){return a.match(i[1])?(e=i[0],n=parseFloat(i[2]?i[2](RegExp.$1):RegExp.$1),!1):void 0}),t.vars.os=e,t.vars.osVersion=n,t.vars.IEVersion="ie"==t.vars.browser?t.vars.browserVersion:99,t.vars.touch="wp"==t.vars.os?navigator.msMaxTouchPoints>0:!!("ontouchstart"in window),t.vars.mobile="wp"==t.vars.os||"android"==t.vars.os||"ios"==t.vars.os||"bb"==t.vars.os}};return t.init(),t}();!function(t,e){"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?module.exports=e():t.skel=e()}(this,function(){return skel}); diff --git a/archive/barber/assets/js/util.js b/archive/barber/assets/js/util.js new file mode 100755 index 0000000..99ae63c --- /dev/null +++ b/archive/barber/assets/js/util.js @@ -0,0 +1,587 @@ +(function($) { + + /** + * Generate an indented list of links from a nav. Meant for use with panel(). + * @return {jQuery} jQuery object. + */ + $.fn.navList = function() { + + var $this = $(this); + $a = $this.find('a'), + b = []; + + $a.each(function() { + + var $this = $(this), + indent = Math.max(0, $this.parents('li').length - 1), + href = $this.attr('href'), + target = $this.attr('target'); + + b.push( + '' + + '' + + $this.text() + + '' + ); + + }); + + return b.join(''); + + }; + + /** + * Panel-ify an element. + * @param {object} userConfig User config. + * @return {jQuery} jQuery object. + */ + $.fn.panel = function(userConfig) { + + // No elements? + if (this.length == 0) + return $this; + + // Multiple elements? + if (this.length > 1) { + + for (var i=0; i < this.length; i++) + $(this[i]).panel(userConfig); + + return $this; + + } + + // Vars. + var $this = $(this), + $body = $('body'), + $window = $(window), + id = $this.attr('id'), + config; + + // Config. + config = $.extend({ + + // Delay. + delay: 0, + + // Hide panel on link click. + hideOnClick: false, + + // Hide panel on escape keypress. + hideOnEscape: false, + + // Hide panel on swipe. + hideOnSwipe: false, + + // Reset scroll position on hide. + resetScroll: false, + + // Reset forms on hide. + resetForms: false, + + // Side of viewport the panel will appear. + side: null, + + // Target element for "class". + target: $this, + + // Class to toggle. + visibleClass: 'visible' + + }, userConfig); + + // Expand "target" if it's not a jQuery object already. + if (typeof config.target != 'jQuery') + config.target = $(config.target); + + // Panel. + + // Methods. + $this._hide = function(event) { + + // Already hidden? Bail. + if (!config.target.hasClass(config.visibleClass)) + return; + + // If an event was provided, cancel it. + if (event) { + + event.preventDefault(); + event.stopPropagation(); + + } + + // Hide. + config.target.removeClass(config.visibleClass); + + // Post-hide stuff. + window.setTimeout(function() { + + // Reset scroll position. + if (config.resetScroll) + $this.scrollTop(0); + + // Reset forms. + if (config.resetForms) + $this.find('form').each(function() { + this.reset(); + }); + + }, config.delay); + + }; + + // Vendor fixes. + $this + .css('-ms-overflow-style', '-ms-autohiding-scrollbar') + .css('-webkit-overflow-scrolling', 'touch'); + + // Hide on click. + if (config.hideOnClick) { + + $this.find('a') + .css('-webkit-tap-highlight-color', 'rgba(0,0,0,0)'); + + $this + .on('click', 'a', function(event) { + + var $a = $(this), + href = $a.attr('href'), + target = $a.attr('target'); + + if (!href || href == '#' || href == '' || href == '#' + id) + return; + + // Cancel original event. + event.preventDefault(); + event.stopPropagation(); + + // Hide panel. + $this._hide(); + + // Redirect to href. + window.setTimeout(function() { + + if (target == '_blank') + window.open(href); + else + window.location.href = href; + + }, config.delay + 10); + + }); + + } + + // Event: Touch stuff. + $this.on('touchstart', function(event) { + + $this.touchPosX = event.originalEvent.touches[0].pageX; + $this.touchPosY = event.originalEvent.touches[0].pageY; + + }) + + $this.on('touchmove', function(event) { + + if ($this.touchPosX === null + || $this.touchPosY === null) + return; + + var diffX = $this.touchPosX - event.originalEvent.touches[0].pageX, + diffY = $this.touchPosY - event.originalEvent.touches[0].pageY, + th = $this.outerHeight(), + ts = ($this.get(0).scrollHeight - $this.scrollTop()); + + // Hide on swipe? + if (config.hideOnSwipe) { + + var result = false, + boundary = 20, + delta = 50; + + switch (config.side) { + + case 'left': + result = (diffY < boundary && diffY > (-1 * boundary)) && (diffX > delta); + break; + + case 'right': + result = (diffY < boundary && diffY > (-1 * boundary)) && (diffX < (-1 * delta)); + break; + + case 'top': + result = (diffX < boundary && diffX > (-1 * boundary)) && (diffY > delta); + break; + + case 'bottom': + result = (diffX < boundary && diffX > (-1 * boundary)) && (diffY < (-1 * delta)); + break; + + default: + break; + + } + + if (result) { + + $this.touchPosX = null; + $this.touchPosY = null; + $this._hide(); + + return false; + + } + + } + + // Prevent vertical scrolling past the top or bottom. + if (($this.scrollTop() < 0 && diffY < 0) + || (ts > (th - 2) && ts < (th + 2) && diffY > 0)) { + + event.preventDefault(); + event.stopPropagation(); + + } + + }); + + // Event: Prevent certain events inside the panel from bubbling. + $this.on('click touchend touchstart touchmove', function(event) { + event.stopPropagation(); + }); + + // Event: Hide panel if a child anchor tag pointing to its ID is clicked. + $this.on('click', 'a[href="#' + id + '"]', function(event) { + + event.preventDefault(); + event.stopPropagation(); + + config.target.removeClass(config.visibleClass); + + }); + + // Body. + + // Event: Hide panel on body click/tap. + $body.on('click touchend', function(event) { + $this._hide(event); + }); + + // Event: Toggle. + $body.on('click', 'a[href="#' + id + '"]', function(event) { + + event.preventDefault(); + event.stopPropagation(); + + config.target.toggleClass(config.visibleClass); + + }); + + // Window. + + // Event: Hide on ESC. + if (config.hideOnEscape) + $window.on('keydown', function(event) { + + if (event.keyCode == 27) + $this._hide(event); + + }); + + return $this; + + }; + + /** + * Apply "placeholder" attribute polyfill to one or more forms. + * @return {jQuery} jQuery object. + */ + $.fn.placeholder = function() { + + // Browser natively supports placeholders? Bail. + if (typeof (document.createElement('input')).placeholder != 'undefined') + return $(this); + + // No elements? + if (this.length == 0) + return $this; + + // Multiple elements? + if (this.length > 1) { + + for (var i=0; i < this.length; i++) + $(this[i]).placeholder(); + + return $this; + + } + + // Vars. + var $this = $(this); + + // Text, TextArea. + $this.find('input[type=text],textarea') + .each(function() { + + var i = $(this); + + if (i.val() == '' + || i.val() == i.attr('placeholder')) + i + .addClass('polyfill-placeholder') + .val(i.attr('placeholder')); + + }) + .on('blur', function() { + + var i = $(this); + + if (i.attr('name').match(/-polyfill-field$/)) + return; + + if (i.val() == '') + i + .addClass('polyfill-placeholder') + .val(i.attr('placeholder')); + + }) + .on('focus', function() { + + var i = $(this); + + if (i.attr('name').match(/-polyfill-field$/)) + return; + + if (i.val() == i.attr('placeholder')) + i + .removeClass('polyfill-placeholder') + .val(''); + + }); + + // Password. + $this.find('input[type=password]') + .each(function() { + + var i = $(this); + var x = $( + $('
') + .append(i.clone()) + .remove() + .html() + .replace(/type="password"/i, 'type="text"') + .replace(/type=password/i, 'type=text') + ); + + if (i.attr('id') != '') + x.attr('id', i.attr('id') + '-polyfill-field'); + + if (i.attr('name') != '') + x.attr('name', i.attr('name') + '-polyfill-field'); + + x.addClass('polyfill-placeholder') + .val(x.attr('placeholder')).insertAfter(i); + + if (i.val() == '') + i.hide(); + else + x.hide(); + + i + .on('blur', function(event) { + + event.preventDefault(); + + var x = i.parent().find('input[name=' + i.attr('name') + '-polyfill-field]'); + + if (i.val() == '') { + + i.hide(); + x.show(); + + } + + }); + + x + .on('focus', function(event) { + + event.preventDefault(); + + var i = x.parent().find('input[name=' + x.attr('name').replace('-polyfill-field', '') + ']'); + + x.hide(); + + i + .show() + .focus(); + + }) + .on('keypress', function(event) { + + event.preventDefault(); + x.val(''); + + }); + + }); + + // Events. + $this + .on('submit', function() { + + $this.find('input[type=text],input[type=password],textarea') + .each(function(event) { + + var i = $(this); + + if (i.attr('name').match(/-polyfill-field$/)) + i.attr('name', ''); + + if (i.val() == i.attr('placeholder')) { + + i.removeClass('polyfill-placeholder'); + i.val(''); + + } + + }); + + }) + .on('reset', function(event) { + + event.preventDefault(); + + $this.find('select') + .val($('option:first').val()); + + $this.find('input,textarea') + .each(function() { + + var i = $(this), + x; + + i.removeClass('polyfill-placeholder'); + + switch (this.type) { + + case 'submit': + case 'reset': + break; + + case 'password': + i.val(i.attr('defaultValue')); + + x = i.parent().find('input[name=' + i.attr('name') + '-polyfill-field]'); + + if (i.val() == '') { + i.hide(); + x.show(); + } + else { + i.show(); + x.hide(); + } + + break; + + case 'checkbox': + case 'radio': + i.attr('checked', i.attr('defaultValue')); + break; + + case 'text': + case 'textarea': + i.val(i.attr('defaultValue')); + + if (i.val() == '') { + i.addClass('polyfill-placeholder'); + i.val(i.attr('placeholder')); + } + + break; + + default: + i.val(i.attr('defaultValue')); + break; + + } + }); + + }); + + return $this; + + }; + + /** + * Moves elements to/from the first positions of their respective parents. + * @param {jQuery} $elements Elements (or selector) to move. + * @param {bool} condition If true, moves elements to the top. Otherwise, moves elements back to their original locations. + */ + $.prioritize = function($elements, condition) { + + var key = '__prioritize'; + + // Expand $elements if it's not already a jQuery object. + if (typeof $elements != 'jQuery') + $elements = $($elements); + + // Step through elements. + $elements.each(function() { + + var $e = $(this), $p, + $parent = $e.parent(); + + // No parent? Bail. + if ($parent.length == 0) + return; + + // Not moved? Move it. + if (!$e.data(key)) { + + // Condition is false? Bail. + if (!condition) + return; + + // Get placeholder (which will serve as our point of reference for when this element needs to move back). + $p = $e.prev(); + + // Couldn't find anything? Means this element's already at the top, so bail. + if ($p.length == 0) + return; + + // Move element to top of parent. + $e.prependTo($parent); + + // Mark element as moved. + $e.data(key, $p); + + } + + // Moved already? + else { + + // Condition is true? Bail. + if (condition) + return; + + $p = $e.data(key); + + // Move element back to its original location (using our placeholder). + $e.insertAfter($p); + + // Unmark element as moved. + $e.removeData(key); + + } + + }); + + }; + +})(jQuery); \ No newline at end of file diff --git a/archive/barber/assets/sass/libs/_breakpoints.scss b/archive/barber/assets/sass/libs/_breakpoints.scss new file mode 100755 index 0000000..c5301d8 --- /dev/null +++ b/archive/barber/assets/sass/libs/_breakpoints.scss @@ -0,0 +1,223 @@ +// breakpoints.scss v1.0 | @ajlkn | MIT licensed */ + +// Vars. + + /// Breakpoints. + /// @var {list} + $breakpoints: () !global; + +// Mixins. + + /// Sets breakpoints. + /// @param {map} $x Breakpoints. + @mixin breakpoints($x: ()) { + $breakpoints: $x !global; + } + + /// Wraps @content in a @media block targeting a specific orientation. + /// @param {string} $orientation Orientation. + @mixin orientation($orientation) { + @media screen and (orientation: #{$orientation}) { + @content; + } + } + + /// Wraps @content in a @media block using a given query. + /// @param {string} $query Query. + @mixin breakpoint($query: null) { + + $breakpoint: null; + $op: null; + $media: null; + + // Determine operator, breakpoint. + + // Greater than or equal. + @if (str-slice($query, 0, 2) == '>=') { + + $op: 'gte'; + $breakpoint: str-slice($query, 3); + + } + + // Less than or equal. + @elseif (str-slice($query, 0, 2) == '<=') { + + $op: 'lte'; + $breakpoint: str-slice($query, 3); + + } + + // Greater than. + @elseif (str-slice($query, 0, 1) == '>') { + + $op: 'gt'; + $breakpoint: str-slice($query, 2); + + } + + // Less than. + @elseif (str-slice($query, 0, 1) == '<') { + + $op: 'lt'; + $breakpoint: str-slice($query, 2); + + } + + // Not. + @elseif (str-slice($query, 0, 1) == '!') { + + $op: 'not'; + $breakpoint: str-slice($query, 2); + + } + + // Equal. + @else { + + $op: 'eq'; + $breakpoint: $query; + + } + + // Build media. + @if ($breakpoint and map-has-key($breakpoints, $breakpoint)) { + + $a: map-get($breakpoints, $breakpoint); + + // Range. + @if (type-of($a) == 'list') { + + $x: nth($a, 1); + $y: nth($a, 2); + + // Max only. + @if ($x == null) { + + // Greater than or equal (>= 0 / anything) + @if ($op == 'gte') { + $media: 'screen'; + } + + // Less than or equal (<= y) + @elseif ($op == 'lte') { + $media: 'screen and (max-width: ' + $y + ')'; + } + + // Greater than (> y) + @elseif ($op == 'gt') { + $media: 'screen and (min-width: ' + ($y + 1) + ')'; + } + + // Less than (< 0 / invalid) + @elseif ($op == 'lt') { + $media: 'screen and (max-width: -1px)'; + } + + // Not (> y) + @elseif ($op == 'not') { + $media: 'screen and (min-width: ' + ($y + 1) + ')'; + } + + // Equal (<= y) + @else { + $media: 'screen and (max-width: ' + $y + ')'; + } + + } + + // Min only. + @else if ($y == null) { + + // Greater than or equal (>= x) + @if ($op == 'gte') { + $media: 'screen and (min-width: ' + $x + ')'; + } + + // Less than or equal (<= inf / anything) + @elseif ($op == 'lte') { + $media: 'screen'; + } + + // Greater than (> inf / invalid) + @elseif ($op == 'gt') { + $media: 'screen and (max-width: -1px)'; + } + + // Less than (< x) + @elseif ($op == 'lt') { + $media: 'screen and (max-width: ' + ($x - 1) + ')'; + } + + // Not (< x) + @elseif ($op == 'not') { + $media: 'screen and (max-width: ' + ($x - 1) + ')'; + } + + // Equal (>= x) + @else { + $media: 'screen and (min-width: ' + $x + ')'; + } + + } + + // Min and max. + @else { + + // Greater than or equal (>= x) + @if ($op == 'gte') { + $media: 'screen and (min-width: ' + $x + ')'; + } + + // Less than or equal (<= y) + @elseif ($op == 'lte') { + $media: 'screen and (max-width: ' + $y + ')'; + } + + // Greater than (> y) + @elseif ($op == 'gt') { + $media: 'screen and (min-width: ' + ($y + 1) + ')'; + } + + // Less than (< x) + @elseif ($op == 'lt') { + $media: 'screen and (max-width: ' + ($x - 1) + ')'; + } + + // Not (< x and > y) + @elseif ($op == 'not') { + $media: 'screen and (max-width: ' + ($x - 1) + '), screen and (min-width: ' + ($y + 1) + ')'; + } + + // Equal (>= x and <= y) + @else { + $media: 'screen and (min-width: ' + $x + ') and (max-width: ' + $y + ')'; + } + + } + + } + + // String. + @else { + + // Missing a media type? Prefix with "screen". + @if (str-slice($a, 0, 1) == '(') { + $media: 'screen and ' + $a; + } + + // Otherwise, use as-is. + @else { + $media: $a; + } + + } + + } + + // Output. + @media #{$media} { + @content; + } + + } \ No newline at end of file diff --git a/archive/barber/assets/sass/libs/_functions.scss b/archive/barber/assets/sass/libs/_functions.scss new file mode 100755 index 0000000..f563aab --- /dev/null +++ b/archive/barber/assets/sass/libs/_functions.scss @@ -0,0 +1,90 @@ +/// Removes a specific item from a list. +/// @author Hugo Giraudel +/// @param {list} $list List. +/// @param {integer} $index Index. +/// @return {list} Updated list. +@function remove-nth($list, $index) { + + $result: null; + + @if type-of($index) != number { + @warn "$index: #{quote($index)} is not a number for `remove-nth`."; + } + @else if $index == 0 { + @warn "List index 0 must be a non-zero integer for `remove-nth`."; + } + @else if abs($index) > length($list) { + @warn "List index is #{$index} but list is only #{length($list)} item long for `remove-nth`."; + } + @else { + + $result: (); + $index: if($index < 0, length($list) + $index + 1, $index); + + @for $i from 1 through length($list) { + + @if $i != $index { + $result: append($result, nth($list, $i)); + } + + } + + } + + @return $result; + +} + +/// Gets a value from a map. +/// @author Hugo Giraudel +/// @param {map} $map Map. +/// @param {string} $keys Key(s). +/// @return {string} Value. +@function val($map, $keys...) { + + @if nth($keys, 1) == null { + $keys: remove-nth($keys, 1); + } + + @each $key in $keys { + $map: map-get($map, $key); + } + + @return $map; + +} + +/// Gets a duration value. +/// @param {string} $keys Key(s). +/// @return {string} Value. +@function _duration($keys...) { + @return val($duration, $keys...); +} + +/// Gets a font value. +/// @param {string} $keys Key(s). +/// @return {string} Value. +@function _font($keys...) { + @return val($font, $keys...); +} + +/// Gets a misc value. +/// @param {string} $keys Key(s). +/// @return {string} Value. +@function _misc($keys...) { + @return val($misc, $keys...); +} + +/// Gets a palette value. +/// @param {string} $keys Key(s). +/// @return {string} Value. +@function _palette($keys...) { + @return val($palette, $keys...); +} + +/// Gets a size value. +/// @param {string} $keys Key(s). +/// @return {string} Value. +@function _size($keys...) { + @return val($size, $keys...); +} \ No newline at end of file diff --git a/archive/barber/assets/sass/libs/_html-grid.scss b/archive/barber/assets/sass/libs/_html-grid.scss new file mode 100755 index 0000000..7438a8c --- /dev/null +++ b/archive/barber/assets/sass/libs/_html-grid.scss @@ -0,0 +1,149 @@ +// html-grid.scss v1.0 | @ajlkn | MIT licensed */ + +// Mixins. + + /// Initializes the current element as an HTML grid. + /// @param {mixed} $gutters Gutters (either a single number to set both column/row gutters, or a list to set them individually). + /// @param {mixed} $suffix Column class suffix (optional; either a single suffix or a list). + @mixin html-grid($gutters: 1.5em, $suffix: '') { + + // Initialize. + $cols: 12; + $multipliers: 0, 0.25, 0.5, 1, 1.50, 2.00; + $unit: 100% / $cols; + + // Suffixes. + $suffixes: null; + + @if (type-of($suffix) == 'list') { + $suffixes: $suffix; + } + @else { + $suffixes: ($suffix); + } + + // Gutters. + $guttersCols: null; + $guttersRows: null; + + @if (type-of($gutters) == 'list') { + + $guttersCols: nth($gutters, 1); + $guttersRows: nth($gutters, 2); + + } + @else { + + $guttersCols: $gutters; + $guttersRows: 0; + + } + + // Row. + display: flex; + flex-wrap: wrap; + box-sizing: border-box; + align-items: stretch; + + // Columns. + > * { + box-sizing: border-box; + } + + // Gutters. + &.gtr-uniform { + > * { + > :last-child { + margin-bottom: 0; + } + } + } + + // Alignment. + &.aln-left { + justify-content: flex-start; + } + + &.aln-center { + justify-content: center; + } + + &.aln-right { + justify-content: flex-end; + } + + &.aln-top { + align-items: flex-start; + } + + &.aln-middle { + align-items: center; + } + + &.aln-bottom { + align-items: flex-end; + } + + // Step through suffixes. + @each $suffix in $suffixes { + + // Suffix. + @if ($suffix != '') { + $suffix: '-' + $suffix; + } + @else { + $suffix: ''; + } + + // Row. + + // Important. + > .imp#{$suffix} { + order: -1; + } + + // Columns, offsets. + @for $i from 1 through $cols { + > .col-#{$i}#{$suffix} { + width: $unit * $i; + } + + > .off-#{$i}#{$suffix} { + margin-left: $unit * $i; + } + } + + // Step through multipliers. + @each $multiplier in $multipliers { + + // Gutters. + $class: null; + + @if ($multiplier != 1) { + $class: '.gtr-' + ($multiplier * 100); + } + + &#{$class} { + margin-top: ($guttersRows * $multiplier * -1); + margin-left: ($guttersCols * $multiplier * -1); + + > * { + padding: ($guttersRows * $multiplier) 0 0 ($guttersCols * $multiplier); + } + + // Uniform. + &.gtr-uniform { + margin-top: $guttersCols * $multiplier * -1; + + > * { + padding-top: $guttersCols * $multiplier; + } + } + + } + + } + + } + + } \ No newline at end of file diff --git a/archive/barber/assets/sass/libs/_mixins.scss b/archive/barber/assets/sass/libs/_mixins.scss new file mode 100755 index 0000000..a331483 --- /dev/null +++ b/archive/barber/assets/sass/libs/_mixins.scss @@ -0,0 +1,78 @@ +/// Makes an element's :before pseudoelement a FontAwesome icon. +/// @param {string} $content Optional content value to use. +/// @param {string} $category Optional category to use. +/// @param {string} $where Optional pseudoelement to target (before or after). +@mixin icon($content: false, $category: regular, $where: before) { + + text-decoration: none; + + &:#{$where} { + + @if $content { + content: $content; + } + + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + display: inline-block; + font-style: normal; + font-variant: normal; + text-rendering: auto; + line-height: 1; + text-transform: none !important; + + @if ($category == brands) { + font-family: 'Font Awesome 5 Brands'; + } + @elseif ($category == solid) { + font-family: 'Font Awesome 5 Free'; + font-weight: 900; + } + @else { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; + } + + } + +} + +/// Applies padding to an element, taking the current element-margin value into account. +/// @param {mixed} $tb Top/bottom padding. +/// @param {mixed} $lr Left/right padding. +/// @param {list} $pad Optional extra padding (in the following order top, right, bottom, left) +/// @param {bool} $important If true, adds !important. +@mixin padding($tb, $lr, $pad: (0,0,0,0), $important: null) { + + @if $important { + $important: '!important'; + } + + $x: 0.1em; + + @if unit(_size(element-margin)) == 'rem' { + $x: 0.1rem; + } + + padding: ($tb + nth($pad,1)) ($lr + nth($pad,2)) max($x, $tb - _size(element-margin) + nth($pad,3)) ($lr + nth($pad,4)) #{$important}; + +} + +/// Encodes a SVG data URL so IE doesn't choke (via codepen.io/jakob-e/pen/YXXBrp). +/// @param {string} $svg SVG data URL. +/// @return {string} Encoded SVG data URL. +@function svg-url($svg) { + + $svg: str-replace($svg, '"', '\''); + $svg: str-replace($svg, '%', '%25'); + $svg: str-replace($svg, '<', '%3C'); + $svg: str-replace($svg, '>', '%3E'); + $svg: str-replace($svg, '&', '%26'); + $svg: str-replace($svg, '#', '%23'); + $svg: str-replace($svg, '{', '%7B'); + $svg: str-replace($svg, '}', '%7D'); + $svg: str-replace($svg, ';', '%3B'); + + @return url("data:image/svg+xml;charset=utf8,#{$svg}"); + +} \ No newline at end of file diff --git a/archive/barber/assets/sass/libs/_vars.scss b/archive/barber/assets/sass/libs/_vars.scss new file mode 100755 index 0000000..2accd95 --- /dev/null +++ b/archive/barber/assets/sass/libs/_vars.scss @@ -0,0 +1,54 @@ +// Misc. + $misc: ( + z-index-base: 10000 + ); + +// Duration. + $duration: ( + transition: 0.2s, + navPanel: 0.5s + ); + +// Size. + $size: ( + border-radius: 4px, + border-width: 1px, + element-height: 3.5em, + element-margin: 2em, + navPanel: 275px + + ); + +// Font. + $font: ( + family: ('Open Sans', sans-serif), + family-fixed: ('Courier New', monospace), + weight: 300, + weight-bold: 600 + ); + +// Palette. + $palette: ( + bg: #fff, + fg: #4a4a4a, + fg-bold: #2a2a2a, + fg-light: #bbb, + border: #eee, + border-bg: rgba(144,144,144,0.05), + border2: #ddd, + border2-bg: rgba(144,144,144,0.1), + + accent1: ( + bg: #51c5e8, + fg: mix(#51c5e8, #ffffff, 25%), + fg-bold: #ffffff, + fg-light: mix(#51c5e8, #ffffff, 40%) + ), + + accent2: ( + bg: #1d2726, + fg: mix(#1d2726, #ffffff, 25%), + fg-bold: #ffffff, + fg-light: mix(#1d2726, #ffffff, 40%) + ) + ); \ No newline at end of file diff --git a/archive/barber/assets/sass/libs/_vendor.scss b/archive/barber/assets/sass/libs/_vendor.scss new file mode 100755 index 0000000..6599a3f --- /dev/null +++ b/archive/barber/assets/sass/libs/_vendor.scss @@ -0,0 +1,376 @@ +// vendor.scss v1.0 | @ajlkn | MIT licensed */ + +// Vars. + + /// Vendor prefixes. + /// @var {list} + $vendor-prefixes: ( + '-moz-', + '-webkit-', + '-ms-', + '' + ); + + /// Properties that should be vendorized. + /// Data via caniuse.com, github.com/postcss/autoprefixer, and developer.mozilla.org + /// @var {list} + $vendor-properties: ( + + // Animation. + 'animation', + 'animation-delay', + 'animation-direction', + 'animation-duration', + 'animation-fill-mode', + 'animation-iteration-count', + 'animation-name', + 'animation-play-state', + 'animation-timing-function', + + // Appearance. + 'appearance', + + // Backdrop filter. + 'backdrop-filter', + + // Background image options. + 'background-clip', + 'background-origin', + 'background-size', + + // Box sizing. + 'box-sizing', + + // Clip path. + 'clip-path', + + // Filter effects. + 'filter', + + // Flexbox. + 'align-content', + 'align-items', + 'align-self', + 'flex', + 'flex-basis', + 'flex-direction', + 'flex-flow', + 'flex-grow', + 'flex-shrink', + 'flex-wrap', + 'justify-content', + 'order', + + // Font feature. + 'font-feature-settings', + 'font-language-override', + 'font-variant-ligatures', + + // Font kerning. + 'font-kerning', + + // Fragmented borders and backgrounds. + 'box-decoration-break', + + // Grid layout. + 'grid-column', + 'grid-column-align', + 'grid-column-end', + 'grid-column-start', + 'grid-row', + 'grid-row-align', + 'grid-row-end', + 'grid-row-start', + 'grid-template-columns', + 'grid-template-rows', + + // Hyphens. + 'hyphens', + 'word-break', + + // Masks. + 'mask', + 'mask-border', + 'mask-border-outset', + 'mask-border-repeat', + 'mask-border-slice', + 'mask-border-source', + 'mask-border-width', + 'mask-clip', + 'mask-composite', + 'mask-image', + 'mask-origin', + 'mask-position', + 'mask-repeat', + 'mask-size', + + // Multicolumn. + 'break-after', + 'break-before', + 'break-inside', + 'column-count', + 'column-fill', + 'column-gap', + 'column-rule', + 'column-rule-color', + 'column-rule-style', + 'column-rule-width', + 'column-span', + 'column-width', + 'columns', + + // Object fit. + 'object-fit', + 'object-position', + + // Regions. + 'flow-from', + 'flow-into', + 'region-fragment', + + // Scroll snap points. + 'scroll-snap-coordinate', + 'scroll-snap-destination', + 'scroll-snap-points-x', + 'scroll-snap-points-y', + 'scroll-snap-type', + + // Shapes. + 'shape-image-threshold', + 'shape-margin', + 'shape-outside', + + // Tab size. + 'tab-size', + + // Text align last. + 'text-align-last', + + // Text decoration. + 'text-decoration-color', + 'text-decoration-line', + 'text-decoration-skip', + 'text-decoration-style', + + // Text emphasis. + 'text-emphasis', + 'text-emphasis-color', + 'text-emphasis-position', + 'text-emphasis-style', + + // Text size adjust. + 'text-size-adjust', + + // Text spacing. + 'text-spacing', + + // Transform. + 'transform', + 'transform-origin', + + // Transform 3D. + 'backface-visibility', + 'perspective', + 'perspective-origin', + 'transform-style', + + // Transition. + 'transition', + 'transition-delay', + 'transition-duration', + 'transition-property', + 'transition-timing-function', + + // Unicode bidi. + 'unicode-bidi', + + // User select. + 'user-select', + + // Writing mode. + 'writing-mode', + + ); + + /// Values that should be vendorized. + /// Data via caniuse.com, github.com/postcss/autoprefixer, and developer.mozilla.org + /// @var {list} + $vendor-values: ( + + // Cross fade. + 'cross-fade', + + // Element function. + 'element', + + // Filter function. + 'filter', + + // Flexbox. + 'flex', + 'inline-flex', + + // Grab cursors. + 'grab', + 'grabbing', + + // Gradients. + 'linear-gradient', + 'repeating-linear-gradient', + 'radial-gradient', + 'repeating-radial-gradient', + + // Grid layout. + 'grid', + 'inline-grid', + + // Image set. + 'image-set', + + // Intrinsic width. + 'max-content', + 'min-content', + 'fit-content', + 'fill', + 'fill-available', + 'stretch', + + // Sticky position. + 'sticky', + + // Transform. + 'transform', + + // Zoom cursors. + 'zoom-in', + 'zoom-out', + + ); + +// Functions. + + /// Removes a specific item from a list. + /// @author Hugo Giraudel + /// @param {list} $list List. + /// @param {integer} $index Index. + /// @return {list} Updated list. + @function remove-nth($list, $index) { + + $result: null; + + @if type-of($index) != number { + @warn "$index: #{quote($index)} is not a number for `remove-nth`."; + } + @else if $index == 0 { + @warn "List index 0 must be a non-zero integer for `remove-nth`."; + } + @else if abs($index) > length($list) { + @warn "List index is #{$index} but list is only #{length($list)} item long for `remove-nth`."; + } + @else { + + $result: (); + $index: if($index < 0, length($list) + $index + 1, $index); + + @for $i from 1 through length($list) { + + @if $i != $index { + $result: append($result, nth($list, $i)); + } + + } + + } + + @return $result; + + } + + /// Replaces a substring within another string. + /// @author Hugo Giraudel + /// @param {string} $string String. + /// @param {string} $search Substring. + /// @param {string} $replace Replacement. + /// @return {string} Updated string. + @function str-replace($string, $search, $replace: '') { + + $index: str-index($string, $search); + + @if $index { + @return str-slice($string, 1, $index - 1) + $replace + str-replace(str-slice($string, $index + str-length($search)), $search, $replace); + } + + @return $string; + + } + + /// Replaces a substring within each string in a list. + /// @param {list} $strings List of strings. + /// @param {string} $search Substring. + /// @param {string} $replace Replacement. + /// @return {list} Updated list of strings. + @function str-replace-all($strings, $search, $replace: '') { + + @each $string in $strings { + $strings: set-nth($strings, index($strings, $string), str-replace($string, $search, $replace)); + } + + @return $strings; + + } + +// Mixins. + + /// Wraps @content in vendorized keyframe blocks. + /// @param {string} $name Name. + @mixin keyframes($name) { + + @-moz-keyframes #{$name} { @content; } + @-webkit-keyframes #{$name} { @content; } + @-ms-keyframes #{$name} { @content; } + @keyframes #{$name} { @content; } + + } + + /// Vendorizes a declaration's property and/or value(s). + /// @param {string} $property Property. + /// @param {mixed} $value String/list of value(s). + @mixin vendor($property, $value) { + + // Determine if property should expand. + $expandProperty: index($vendor-properties, $property); + + // Determine if value should expand (and if so, add '-prefix-' placeholder). + $expandValue: false; + + @each $x in $value { + @each $y in $vendor-values { + @if $y == str-slice($x, 1, str-length($y)) { + + $value: set-nth($value, index($value, $x), '-prefix-' + $x); + $expandValue: true; + + } + } + } + + // Expand property? + @if $expandProperty { + @each $vendor in $vendor-prefixes { + #{$vendor}#{$property}: #{str-replace-all($value, '-prefix-', $vendor)}; + } + } + + // Expand just the value? + @elseif $expandValue { + @each $vendor in $vendor-prefixes { + #{$property}: #{str-replace-all($value, '-prefix-', $vendor)}; + } + } + + // Neither? Treat them as a normal declaration. + @else { + #{$property}: #{$value}; + } + + } \ No newline at end of file diff --git a/archive/barber/assets/sass/main.scss b/archive/barber/assets/sass/main.scss new file mode 100755 index 0000000..1097b46 --- /dev/null +++ b/archive/barber/assets/sass/main.scss @@ -0,0 +1,1965 @@ +@import 'libs/vars'; +@import 'libs/functions'; +@import 'libs/mixins'; +@import 'libs/vendor'; +@import 'libs/breakpoints'; +@import 'libs/html-grid'; +@import 'fontawesome-all.min.css'; +@import url("https://fonts.googleapis.com/css?family=Open+Sans:300,600,300italic,600italic"); + +/* + Catalyst by Pixelarity + pixelarity.com | hello@pixelarity.com + License: pixelarity.com/license +*/ + +// Breakpoints. + + @include breakpoints(( + wide: ( 1281px, 1680px ), + normal: ( 981px, 1280px ), + narrow: ( 737px, 980px ), + mobile: ( 481px, 736px ), + mobilep: ( null, 480px ) + )); + +// Reset. +// Based on meyerweb.com/eric/tools/css/reset (v2.0 | 20110126 | License: public domain) + + html, body, div, span, applet, object, + iframe, h1, h2, h3, h4, h5, h6, p, blockquote, + pre, a, abbr, acronym, address, big, cite, + code, del, dfn, em, img, ins, kbd, q, s, samp, + small, strike, strong, sub, sup, tt, var, b, + u, i, center, dl, dt, dd, ol, ul, li, fieldset, + form, label, legend, table, caption, tbody, + tfoot, thead, tr, th, td, article, aside, + canvas, details, embed, figure, figcaption, + footer, header, hgroup, menu, nav, output, ruby, + section, summary, time, mark, audio, video { + margin: 0; + padding: 0; + border: 0; + font-size: 100%; + font: inherit; + vertical-align: baseline; + } + + article, aside, details, figcaption, figure, + footer, header, hgroup, menu, nav, section { + display: block; + } + + body { + line-height: 1; + } + + ol, ul { + list-style: none; + } + + blockquote, q { + quotes: none; + + &:before, + &:after { + content: ''; + content: none; + } + } + + table { + border-collapse: collapse; + border-spacing: 0; + } + + body { + -webkit-text-size-adjust: none; + } + + mark { + background-color: transparent; + color: inherit; + } + + input::-moz-focus-inner { + border: 0; + padding: 0; + } + + input, select, textarea { + -moz-appearance: none; + -webkit-appearance: none; + -ms-appearance: none; + appearance: none; + } + +/* Basic */ + + // Set box model to border-box. + // Based on css-tricks.com/inheriting-box-sizing-probably-slightly-better-best-practice + html { + box-sizing: border-box; + } + + *, *:before, *:after { + box-sizing: inherit; + } + + body { + background: _palette(bg); + + // Stops initial animations until page loads. + &.is-preload { + *, *:before, *:after { + @include vendor('animation', 'none !important'); + @include vendor('transition', 'none !important'); + } + } + + } + + body, input, select, textarea { + color: _palette(fg); + font-family: _font(family); + font-size: 13pt; + font-weight: _font(weight); + line-height: 1.75em; + } + + a { + color: _palette(accent1, bg); + text-decoration: underline; + + &:hover { + text-decoration: none; + } + } + + strong, b { + color: _palette(fg-bold); + font-weight: _font(weight-bold); + } + + em, i { + font-style: italic; + } + + p { + margin: 0 0 _size(element-margin) 0; + } + + h1, h2, h3, h4, h5, h6 { + color: _palette(fg-bold); + font-weight: _font(weight-bold); + letter-spacing: 0.125em; + line-height: 1em; + margin: 0 0 (_size(element-margin) * 0.5) 0; + text-transform: uppercase; + + a { + color: inherit; + text-decoration: none; + } + } + + h2 { + font-size: 1.5em; + line-height: 1.75em; + } + + h3 { + font-size: 1.25em; + line-height: 1.5em; + } + + h4 { + font-size: 1.1em; + line-height: 1.5em; + } + + h5 { + font-size: 0.9em; + line-height: 1.5em; + } + + h6 { + font-size: 0.7em; + line-height: 1.5em; + } + + sub { + font-size: 0.8em; + position: relative; + top: 0.5em; + } + + sup { + font-size: 0.8em; + position: relative; + top: -0.5em; + } + + hr { + border: 0; + border-bottom: solid 3px _palette(border); + margin: (_size(element-margin) * 1.5) 0; + + &.major { + margin: (_size(element-margin) * 2.5) 0; + } + } + + blockquote { + border-left: solid 8px _palette(border); + font-style: italic; + margin: 0 0 _size(element-margin) 0; + padding: 0.5em 0 0.5em 2em; + } + + pre { + -webkit-overflow-scrolling: touch; + background: _palette(border-bg); + font-family: _font(family-fixed); + font-size: 0.9em; + line-height: 1.5em; + margin: 0 0 _size(element-margin) 0; + overflow-x: auto; + padding: 1em 1.5em; + } + + code { + background: _palette(border-bg); + font-family: _font(family-fixed); + font-size: 0.9em; + margin: 0 0.25em; + padding: 0.25em 0.65em; + } + + .align-left { + text-align: left; + } + + .align-center { + text-align: center; + } + + .align-right { + text-align: right; + } + +/* Row */ + + .row { + @include html-grid(3em); + + @include breakpoint('<=wide') { + @include html-grid(3em, 'wide'); + } + + @include breakpoint('<=normal') { + @include html-grid(2em, 'normal'); + } + + @include breakpoint('<=narrow') { + @include html-grid(2em, 'narrow'); + } + + @include breakpoint('<=mobile') { + @include html-grid(2em, 'mobile'); + } + + @include breakpoint('<=mobilep') { + @include html-grid(2em, 'mobilep'); + } + } + +/* Container */ + + .container { + margin: 0 auto; + width: 1200px; + + &.medium { + width: (1200px * 0.75); + } + + @include breakpoint('<=wide') { + width: 1080px; + + &.medium { + width: (1080px * 0.75); + } + } + + @include breakpoint('<=normal') { + width: 960px; + + &.medium { + width: (960px * 0.75); + } + } + + @include breakpoint('<=narrow') { + width: 90%; + + &.medium { + width: 90%; + } + } + + @include breakpoint('<=mobile') { + width: 100%; + + &.medium { + width: 100%; + } + } + } + +/* Section/Article */ + + section, article { + &.special { + text-align: center; + } + } + + header { + &.major { + position: relative; + + &:after { + background: _palette(border); + content: ''; + display: inline-block; + height: 3px; + margin: 0 0 _size(element-margin) 0; + width: 6em; + } + + &.alt { + text-align: center; + margin-bottom: _size(element-margin); + } + } + + p { + letter-spacing: 0.125em; + margin: 0 0 (_size(element-margin) * 0.75) 0; + position: relative; + text-transform: uppercase; + } + + h2 + p { + font-size: 1em; + margin-top: -0.85em; + line-height: 1.75em; + } + + h3 + p { + font-size: 0.9em; + margin-top: -0.75em; + line-height: 1.75em; + } + + h4 + p, + h5 + p, + h6 + p { + font-size: 0.8em; + margin-top: -0.75em; + line-height: 1.75em; + } + } + +/* Form */ + + form { + margin: 0 0 _size(element-margin) 0; + } + + label { + color: _palette(fg-bold); + display: block; + font-size: 0.9em; + font-weight: _font(weight-bold); + margin: 0 0 (_size(element-margin) * 0.5) 0; + } + + input[type="text"], + input[type="password"], + input[type="email"], + select, + textarea { + @include vendor('appearance', 'none'); + border: none; + border: solid 2px _palette(border); + border-radius: 0; + color: inherit; + display: block; + outline: 0; + padding: 0 1em; + text-decoration: none; + width: 100%; + + &:invalid { + box-shadow: none; + } + + &:focus { + border-color: _palette(accent1, bg); + } + } + + select { + background-image: svg-url(""); + background-size: 1.25em; + background-repeat: no-repeat; + background-position: calc(100% - 1em) center; + height: _size(element-height); + padding-right: _size(element-height); + text-overflow: ellipsis; + + &:focus { + &::-ms-value { + background-color: transparent; + } + } + + &::-ms-expand { + display: none; + } + + option { + color: _palette(fg-bold); + background: _palette(bg); + } + } + + input[type="text"], + input[type="password"], + input[type="email"], + select { + height: _size(element-height); + } + + textarea { + padding: 0.75em 1em; + } + + input[type="checkbox"], + input[type="radio"], { + @include vendor('appearance', 'none'); + display: block; + float: left; + margin-right: -2em; + opacity: 0; + width: 1em; + z-index: -1; + + & + label { + @include icon(false, solid); + color: _palette(fg); + cursor: pointer; + display: inline-block; + font-size: 1em; + font-weight: _font(weight); + padding-left: (_size(element-height) * 0.6) + 0.75em; + padding-right: 0.75em; + position: relative; + + &:before { + background: _palette(border-bg); + border: solid 2px _palette(border); + content: ''; + display: inline-block; + font-size: 0.8em; + height: (_size(element-height) * 0.6); + left: 0; + line-height: (_size(element-height) * 0.55); + position: absolute; + text-align: center; + top: 0; + width: (_size(element-height) * 0.6); + } + } + + &:checked + label { + &:before { + background: _palette(accent2, bg); + border-color: _palette(accent2, bg); + color: _palette(accent2, fg-bold); + content: '\f00c'; + } + } + + &:focus + label { + &:before { + border-color: _palette(accent1, bg); + } + } + } + + input[type="radio"] { + & + label { + &:before { + border-radius: 100%; + } + } + } + + ::-webkit-input-placeholder { + color: _palette(fg-light) !important; + opacity: 1.0; + } + + :-moz-placeholder { + color: _palette(fg-light) !important; + opacity: 1.0; + } + + ::-moz-placeholder { + color: _palette(fg-light) !important; + opacity: 1.0; + } + + :-ms-input-placeholder { + color: _palette(fg-light) !important; + opacity: 1.0; + } + +/* Box */ + + .box { + border: solid 2px _palette(border); + margin-bottom: _size(element-margin); + padding: 1.5em; + + > :last-child, + > :last-child > :last-child, + > :last-child > :last-child > :last-child { + margin-bottom: 0; + } + + &.alt { + border: 0; + padding: 0; + } + } + +/* Icon */ + + .icon { + @include icon; + border-bottom: none; + position: relative; + + &.solid { + &:before { + font-weight: 900; + } + } + + &.brands { + &:before { + font-family: 'Font Awesome 5 Brands'; + } + } + + > .label { + display: none; + } + } + +/* Image */ + + .image { + border: 0; + display: inline-block; + position: relative; + + &:before { + background: url('images/overlay.png'); + content: ''; + display: block; + height: 100%; + left: 0; + position: absolute; + top: 0; + width: 100%; + } + + img { + display: block; + } + + &.left { + float: left; + margin: 0 1.5em 1em 0; + top: 0.25em; + } + + &.right { + float: right; + margin: 0 0 1em 1.5em; + top: 0.25em; + } + + &.fit { + display: block; + margin: 0 0 (_size(element-margin) * 1.5) 0; + width: 100%; + + img { + display: block; + width: 100%; + } + } + } + +/* List */ + + ol { + list-style: decimal; + margin: 0 0 _size(element-margin) 0; + padding-left: 1.25em; + + li { + padding-left: 0.25em; + } + } + + ul { + list-style: disc; + margin: 0 0 _size(element-margin) 0; + padding-left: 1em; + + li { + padding-left: 0.5em; + } + + &.alt { + list-style: none; + padding-left: 0; + + li { + border-top: solid 1px _palette(border); + padding: 0.5em 0; + + &:first-child { + border-top: 0; + padding-top: 0; + } + } + } + } + + dl { + margin: 0 0 _size(element-margin) 0; + } + +/* Actions */ + + ul.actions { + @include vendor('display', 'flex'); + cursor: default; + list-style: none; + margin-left: (_size(element-margin) * -0.5); + padding-left: 0; + + li { + padding: 0 0 0 (_size(element-margin) * 0.5); + vertical-align: middle; + } + + &.special { + @include vendor('justify-content', 'center'); + width: 100%; + margin-left: 0; + + li { + &:first-child { + padding-left: 0; + } + } + } + + &.stacked { + @include vendor('flex-direction', 'column'); + margin-left: 0; + + li { + padding: (_size(element-margin) * 0.65) 0 0 0; + + &:first-child { + padding-top: 0; + } + } + } + + &.fit { + width: calc(100% + #{_size(element-margin) * 0.5}); + + li { + @include vendor('flex-grow', '1'); + @include vendor('flex-shrink', '1'); + width: 100%; + + > * { + width: 100%; + } + } + + &.stacked { + width: 100%; + } + } + + @include breakpoint('<=mobilep') { + &:not(.fixed) { + @include vendor('flex-direction', 'column'); + margin-left: 0; + width: 100% !important; + + li { + @include vendor('flex-grow', '1'); + @include vendor('flex-shrink', '1'); + padding: (_size(element-margin) * 0.5) 0 0 0; + text-align: center; + width: 100%; + + > * { + width: 100%; + } + + &:first-child { + padding-top: 0; + } + + input[type="submit"], + input[type="reset"], + input[type="button"], + button, + .button { + width: 100%; + + &.icon { + &:before { + margin-left: -0.5em; + } + } + } + } + } + } + } + +/* Icons */ + + ul.icons { + cursor: default; + list-style: none; + padding-left: 0; + + li { + display: inline-block; + padding: 0 1em 0 0; + + &:last-child { + padding-right: 0; + } + + .icon { + &:before { + font-size: 1.5em; + } + } + } + } + +/* Table */ + + .table-wrapper { + -webkit-overflow-scrolling: touch; + overflow-x: auto; + } + + table { + margin: 0 0 _size(element-margin) 0; + width: 100%; + + tbody { + tr { + border: solid 1px _palette(border); + border-left: 0; + border-right: 0; + + &:nth-child(2n + 1) { + background-color: _palette(border-bg); + } + } + } + + td { + padding: 0.75em 0.75em; + } + + th { + color: _palette(fg-bold); + font-size: 0.9em; + font-weight: _font(weight-bold); + padding: 0 0.75em 0.75em 0.75em; + text-align: left; + } + + thead { + border-bottom: solid 2px _palette(border); + } + + tfoot { + border-top: solid 2px _palette(border); + } + + &.alt { + border-collapse: separate; + + tbody { + tr { + td { + border: solid 1px _palette(border); + border-left-width: 0; + border-top-width: 0; + + &:first-child { + border-left-width: 1px; + } + } + + &:first-child { + td { + border-top-width: 1px; + } + } + } + } + + thead { + border-bottom: 0; + } + + tfoot { + border-top: 0; + } + } + } + +/* Button */ + + input[type="submit"], + input[type="reset"], + input[type="button"], + button, + .button { + @include vendor('appearance', 'none'); + @include vendor('transition', ('background-color #{_duration(transition)} ease-in-out', 'color #{_duration(transition)} ease-in-out')); + background-color: _palette(accent2, bg); + border-radius: 0; + border: 0; + color: _palette(accent2, fg-bold) !important; + cursor: pointer; + display: inline-block; + font-size: 0.9em; + font-weight: _font(weight-bold); + height: 4em; + letter-spacing: 0.125em; + line-height: 4em; + overflow: hidden; + padding: 0 2.75em; + text-align: center; + text-decoration: none; + text-overflow: ellipsis; + text-transform: uppercase; + white-space: nowrap; + + &:hover { + background-color: lighten(_palette(accent2, bg), 5); + } + + &:active { + background-color: darken(_palette(accent2, bg), 5); + } + + &.icon { + padding-left: 2.35em; + + &:before { + margin-right: 0.5em; + } + } + + &.fit { + width: 100%; + } + + &.small { + font-size: 0.8em; + height: 3.5em; + line-height: 3.5em; + padding: 0 2em; + } + + &.large { + font-size: 1.25em; + height: (_size(element-height) * 0.9); + line-height: (_size(element-height) * 0.9); + } + + &.alt { + background-color: transparent; + box-shadow: inset 0 0 0 2px _palette(border); + color: _palette(fg-bold) !important; + + &:hover { + background-color: _palette(border-bg); + } + + &:active { + background-color: _palette(border2-bg); + } + + &.icon { + &:before { + color: _palette(fg-light); + } + } + } + + &.primary { + background-color: _palette(accent1, bg); + color: _palette(accent1, fg-bold) !important; + + &:hover { + background-color: lighten(_palette(accent1, bg), 5); + } + + &:active { + background-color: darken(_palette(accent1, bg), 5); + } + } + + &.disabled, + &:disabled { + background-color: _palette(fg) !important; + box-shadow: inset 0 -0.15em 0 0 rgba(0,0,0,0.15); + color: _palette(bg) !important; + cursor: default; + opacity: 0.25; + } + } + +/* Feature */ + + .feature { + margin: 0 0 _size(element-margin) 0; + padding: _size(element-margin) 0 _size(element-margin) 9em; + position: relative; + + i { + border-radius: 100%; + border: solid 3px _palette(border); + color: _palette(accent1, bg); + display: block; + height: 7em; + left: 0; + line-height: 7.25em; + margin-top: -0.5em; + position: absolute; + text-align: center; + top: _size(element-margin); + width: 7em; + + &:before { + font-size: 40px; + } + } + + h3 { + margin-bottom: (_size(element-margin) * 0.25); + } + + p { + margin-bottom: 0; + } + } + +/* Image Feature */ + + .image-feature { + position: relative; + text-align: center; + margin: 0 0.5em _size(element-margin) 0.5em; + + > a { + display: block; + } + + header { + background: #fff; + left: 0; + padding: (_size(element-margin) * 0.75) 0; + position: absolute; + top: 0; + width: 100%; + z-index: 1; + + &:before { + @include vendor('transform', 'rotate(45deg)'); + background: #fff; + bottom: -0.5em; + content: ''; + display: block; + height: 1em; + left: 50%; + margin-left: -0.5em; + position: absolute; + width: 1em; + } + + h3 { + font-size: 1em; + margin: 0; + } + } + + .image { + margin: 0; + } + + p { + margin: 0; + } + + footer { + background: #1d2726; + background: rgba(29,39,38,0.9); + bottom: 0; + color: #fff; + left: 0; + padding: _size(element-margin) * 0.75; + position: absolute; + width: 100%; + z-index: 1; + + input[type="submit"], + input[type="reset"], + input[type="button"], + button, + .button { + &.alt { + box-shadow: inset 0 0 0 2px rgba(255,255,255,0.25); + color: #fff !important; + } + } + } + } + +/* Wrapper */ + + .wrapper { + padding: 6em 0 4em 0; + + &.style1 { + background: _palette(accent1, bg); + color: _palette(accent1, fg); + + h2, h3, h4, h5, h6, strong { + color: _palette(accent1, fg-bold); + } + + header { + &.major { + &:after { + background: rgba(255,255,255,0.25); + } + } + } + } + + &.style2 { + background: #ffffff; + } + + &.style3 { + background: #f4f4f4; + } + + &.style4 { + background: #fafafa; + } + } + +/* Header */ + + #page-wrapper { + padding-top: 3em; + } + + #header { + background: #1d2726; + color: #fff; + cursor: default; + height: 3.25em; + left: 0; + line-height: 3.25em; + position: fixed; + top: 0; + width: 100%; + z-index: 10000; + + h1 { + color: #fff; + height: inherit; + left: 1.25em; + line-height: inherit; + margin: 0; + padding: 0; + position: absolute; + top: 0; + + a { + font-size: 1em; + + &:before { + color: _palette(accent1, bg); + margin-right: 0.35em; + } + } + } + + nav { + font-weight: _font(weight-bold); + height: inherit; + letter-spacing: 0.125em; + line-height: inherit; + position: absolute; + right: 1.5em; + text-transform: uppercase; + top: 0; + vertical-align: middle; + + > ul { + list-style: none; + margin: 0; + padding-left: 0; + + > li { + display: inline-block; + margin-left: 2em; + padding-left: 0; + + a { + @include vendor('transition', 'color #{_duration(transition)} ease-in-out'); + color: #ccc; + display: inline-block; + text-decoration: none; + font-size: 0.8em; + + &:before { + margin-right: 0.5em; + opacity: 0.5; + } + + &:hover { + color: #fff; + } + } + + &.active { + > a { + color: #fff; + } + } + + &:first-child { + margin-left: 0; + } + + input[type="submit"], + input[type="reset"], + input[type="button"], + button, + .button { + font-size: 1em; + height: 2.25em; + line-height: 2.25em; + margin-bottom: 0; + padding: 0 1em; + position: relative; + top: -0.125em; + vertical-align: middle; + } + + > ul { + display: none; + } + } + } + } + + .container { + position: relative; + + h1 { + left: 0; + } + + nav { + right: 0; + } + } + } + + .dropotron { + background: #1d2726; + color: #fff; + font-weight: _font(weight-bold); + letter-spacing: 0.125em; + list-style: none; + margin-top: -1em; + min-width: 14em; + padding: 1.25em 0; + text-transform: uppercase; + + &.level-0 { + font-size: 0.8em; + margin-top: 1em; + + &:before { + @include vendor('transform', 'rotate(45deg)'); + background: #1d2726; + content: ''; + display: block; + height: 1em; + position: absolute; + right: 1.5em; + top: -0.5em; + width: 1em; + } + } + + li { + > a { + @include vendor('transition', 'color #{_duration(transition)} ease-in-out'); + color: #ccc; + display: block; + padding: 0.125em 1.25em; + text-decoration: none; + + &:hover { + color: #fff; + } + } + + &.active { + > a { + color: #fff; + } + } + } + } + +/* Banner */ + + #banner { + background-color: #f6f6f6; + background-attachment: scroll, fixed; + background-image: url('images/overlay.png'), url('../../images/banner.jpg'); + background-position: top left, center center; + background-repeat: repeat, no-repeat; + background-size: auto, cover; + color: #fff; + padding: 12em 0; + position: relative; + text-align: center; + + &:after { + @include vendor('transition', 'opacity 4s ease-in-out'); + background: #313148; + content: ''; + height: 100%; + left: 0; + opacity: 0; + position: absolute; + top: 0; + width: 100%; + z-index: 1; + } + + :last-child { + margin-bottom: 0; + } + + .inner { + background: #1d2726; + background: rgba(29,39,38,0.9); + display: inline-block; + padding: 3.5em 5em; + position: relative; + z-index: 2; + + h2 { + color: inherit; + font-size: 2.5em; + line-height: 1.35em; + margin: 0; + padding: 0; + } + + p { + font-size: 1em; + letter-spacing: 0.125em; + line-height: 2em; + margin: _size(element-margin) 0 0 0; + padding: _size(element-margin) 0 0 0; + position: relative; + text-transform: uppercase; + top: -0.25em; + + &:before { + background: #888; + background: rgba(255,255,255,0.25); + content: ''; + display: block; + height: 3px; + left: 50%; + margin: 0 0 0 -3em; + position: absolute; + top: 0; + width: 6em; + } + } + + .actions { + margin-top: _size(element-margin); + } + + input[type="submit"], + input[type="reset"], + input[type="button"], + button, + .button { + &.alt { + box-shadow: inset 0 0 0 2px rgba(255,255,255,0.25); + color: #fff !important; + } + } + } + } + + body.is-preload { + #banner { + &:after { + opacity: 1.0; + } + } + } + +/* Main */ + + #main { + > header.major { + margin: 0 0 _size(element-margin) 0; + text-align: center; + } + } + +/* One */ + + #one { + padding-bottom: 0; + + p { + font-size: 1.25em; + line-height: 1.75em; + margin: -0.5em 0 0 0; + } + + .inner { + display: inline-block; + margin-top: -6em; + padding-right: 6em; + vertical-align: middle; + width: 50%; + } + + .device { + border: solid 40px #fff; + border-bottom: 0; + border-radius: 20px; + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; + display: inline-block; + margin-bottom: 0; + position: relative; + vertical-align: middle; + width: 50%; + + &:after { + background: #eee; + border-radius: 100%; + content: ''; + height: 10px; + left: 50%; + margin: -23px 0 0 -5px; + position: absolute; + top: 0; + width: 10px; + } + } + } + +/* Footer */ + + #footer { + background: #1d2726; + color: #888; + padding: 4em 0; + text-align: center; + + .icons { + padding-left: 0; + + li { + padding: 0 2em 0 0; + + &:last-child { + padding-right: 0; + } + + a { + @include vendor('transition', 'color #{_duration(transition)} ease-in-out'); + color: #666; + + &:hover { + color: #fff; + } + } + } + } + + .copyright { + font-size: 0.9em; + margin: _size(element-margin) 0 0 0; + } + } + +/* Wide */ + + @include breakpoint('<=wide') { + + /* Basic */ + + body, input, select, textarea { + font-size: 11pt; + } + + } + +/* Normal */ + + @include breakpoint('<=normal') { + + /* Basic */ + + body, input, select, textarea { + font-size: 11pt; + } + + /* Feature */ + + .feature { + padding-left: 7em; + + i { + height: 5.25em; + line-height: 5.5em; + margin-top: 0; + width: 5.25em; + + &:before { + font-size: 32px; + } + } + } + + /* Wrapper */ + + .wrapper { + padding: 4em 0 2em 0; + } + + /* Banner */ + + #banner { + background-attachment: scroll; + padding: 8em 0; + + .inner { + padding: 3em 4em; + + h2 { + font-size: 2.25em; + } + } + } + + /* Main */ + + #main { + padding: _size(element-margin) 0; + } + + /* One */ + + #one { + .inner { + margin-top: -4em; + padding-right: 4em; + } + + .device { + border-width: 35px; + + &:after { + margin-top: -22px; + } + } + } + + } + +/* Narrow */ + + #navPanel, #navButton { + display: none; + } + + @include breakpoint('<=narrow') { + + /* Basic */ + + html, body { + overflow-x: hidden; + } + + body, input, select, textarea { + font-size: 12pt; + } + + h2 { + font-size: 1.25em; + line-height: 1.75em; + } + + h3 { + font-size: 1.1em; + line-height: 1.5em; + } + + h4 { + font-size: 1em; + line-height: 1.5em; + } + + /* Section/Article */ + + section, article { + &.special { + text-align: center; + } + } + + header { + h2 + p { + font-size: 0.9em; + } + + h3 + p { + font-size: 0.8em; + } + + h4 + p, + h5 + p, + h6 + p { + font-size: 0.8em; + } + } + + /* Feature */ + + .feature { + padding-left: 9em; + + i { + height: 7em; + line-height: 7.5em; + margin-top: -0.5em; + width: 7em; + + &:before { + font-size: 42px; + } + } + } + + /* Image Feature */ + + .image-feature { + .image { + max-height: 30em; + overflow: hidden; + } + } + + /* Header */ + + #page-wrapper { + padding-top: 0; + } + + #header { + display: none; + } + + /* Banner */ + + #banner { + padding: 10em 0; + + .inner { + padding: 3em; + + h2 { + font-size: 2em; + } + } + } + + /* Main */ + + #main { + > header.major { + margin: 0; + } + } + + /* One */ + + #one { + p { + font-size: 1em; + } + + .inner { + display: block; + margin: 0 auto; + max-width: 100%; + padding: 0; + text-align: center; + width: 35em; + } + + .device { + display: block; + margin: (_size(element-margin) * 2) auto 0 auto; + max-width: 100%; + width: 30em; + } + } + + /* Off-Canvas Navigation */ + + #page-wrapper { + @include vendor('backface-visibility', 'hidden'); + @include vendor('transition', 'transform #{_duration(navPanel)} ease'); + padding-bottom: 1px; + } + + #navButton { + @include vendor('backface-visibility', 'hidden'); + @include vendor('transition', 'transform #{_duration(navPanel)} ease'); + display: block; + height: 4em; + left: 0; + position: fixed; + top: 0; + width: 6em; + z-index: _misc(z-index-base) + 1; + + .toggle { + @include icon(false, solid); + height: 100%; + left: 0; + position: absolute; + top: 0; + width: 100%; + + &:before { + background: transparentize(_palette(accent2, bg), 0.25); + color: _palette(accent2, fg-bold); + content: '\f0c9'; + display: block; + font-size: 18px; + height: 2.35em; + left: 0.5em; + line-height: 2.35em; + position: absolute; + text-align: center; + top: 0.5em; + width: 3em; + } + } + } + + #navPanel { + @include vendor('backface-visibility', 'hidden'); + @include vendor('transform', 'translateX(#{_size(navPanel) * -1})'); + @include vendor('transition', ('transform #{_duration(navPanel)} ease')); + @include vendor('background-image', 'linear-gradient(left, rgba(0,0,0,0) 95%, rgba(0,0,0,0.1))'); + display: block; + height: 100%; + left: 0; + overflow-y: auto; + position: fixed; + top: 0; + width: _size(navPanel); + z-index: _misc(z-index-base) + 2; + background: _palette(accent2, bg); + color: _palette(accent2, fg); + padding: 0.25em 1.5em; + + .link { + border-top: solid 1px rgba(255,255,255,0.05); + color: _palette(accent2, fg); + display: block; + font-size: 0.8em; + font-weight: _font(weight-bold); + height: 3.5em; + letter-spacing: 0.125em; + line-height: 3.5em; + text-decoration: none; + text-transform: uppercase; + + &:first-child { + border-top: 0; + } + + &.depth-0 { + color: _palette(accent2, fg-bold); + } + + .indent-1 { display: inline-block; width: 1.25em; } + .indent-2 { display: inline-block; width: 2.5em; } + .indent-3 { display: inline-block; width: 3.75em; } + .indent-4 { display: inline-block; width: 5em; } + .indent-5 { display: inline-block; width: 6.25em; } + } + } + + body { + &.navPanel-visible { + #page-wrapper { + @include vendor('transform', 'translateX(#{_size(navPanel)})'); + } + + #navButton { + @include vendor('transform', 'translateX(#{_size(navPanel)})'); + } + + #navPanel { + @include vendor('transform', 'translateX(0)'); + } + } + } + + } + +/* Mobile */ + + @include breakpoint('<=mobile') { + + /* Basic */ + + body, input, select, textarea { + font-size: 12pt; + } + + /* Feature */ + + .feature { + margin: 0 auto _size(element-margin) auto; + max-width: 100%; + padding: 0; + text-align: center; + width: 30em; + + i { + left: 0; + margin: 0 auto _size(element-margin) auto; + position: relative; + top: 0; + } + } + + /* Image Feature */ + + .image-feature { + margin: 0 auto _size(element-margin) auto; + max-width: 100%; + width: 25em; + + .image { + max-height: none; + } + } + + /* Wrapper */ + + .wrapper { + padding: 2.5em 1.25em 0.5em 1.25em; + } + + /* Banner */ + + #banner { + padding: 6em 0; + + .inner { + padding: 2em 2.5em; + width: 100%; + + h2 { + font-size: 1.5em; + } + + p { + margin: (_size(element-margin) * 0.75) 0 0 0; + padding: (_size(element-margin) * 0.75) 0 0 0; + } + } + } + + /* One */ + + #one { + .device { + border-width: 20px; + margin-top: _size(element-margin); + max-width: 100%; + width: 25em; + + &:after { + height: 8px; + margin: -13px 0 0 -4px; + width: 8px; + } + } + } + + } + +/* Mobile (Portrait) */ + + @include breakpoint('<=mobilep') { + + /* Basic */ + + html, body { + min-width: 320px; + } + + body, input, select, textarea { + font-size: 12pt; + } + + h1, h2, h3, h4, h5, h6 { + br { + display: none; + } + } + + h2 { + font-size: 1.15em; + line-height: 1.75em; + } + + h3 { + font-size: 1em; + line-height: 1.5em; + } + + /* List */ + + ul { + &.actions { + margin: 0 0 _size(element-margin) 0; + + li { + display: block; + padding: (_size(element-margin) * 0.5) 0 0 0; + text-align: center; + width: 100%; + + &:first-child { + padding-top: 0; + } + + > * { + margin: 0 !important; + width: 100%; + + &.icon { + &:before { + margin-left: -2em; + } + } + } + } + + &.small { + li { + padding: (_size(element-margin) * 0.25) 0 0 0; + + &:first-child { + padding-top: 0; + } + } + } + } + } + + /* Button */ + + input[type="submit"], + input[type="reset"], + input[type="button"], + button, + .button { + padding: 0; + } + + /* One */ + + #one { + .device { + border-width: 15px; + + &:after { + height: 5px; + margin: -10px 0 0 -2.5px; + width: 5px; + } + } + } + + } \ No newline at end of file diff --git a/archive/barber/assets/webfonts/fa-brands-400.eot b/archive/barber/assets/webfonts/fa-brands-400.eot new file mode 100755 index 0000000..e79f40f Binary files /dev/null and b/archive/barber/assets/webfonts/fa-brands-400.eot differ diff --git a/archive/barber/assets/webfonts/fa-brands-400.svg b/archive/barber/assets/webfonts/fa-brands-400.svg new file mode 100755 index 0000000..cc4c95c --- /dev/null +++ b/archive/barber/assets/webfonts/fa-brands-400.svg @@ -0,0 +1,3442 @@ + + + + + +Created by FontForge 20190112 at Tue Jun 4 15:16:44 2019 + By Robert Madole +Copyright (c) Font Awesome + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/archive/barber/assets/webfonts/fa-brands-400.ttf b/archive/barber/assets/webfonts/fa-brands-400.ttf new file mode 100755 index 0000000..217ffe9 Binary files /dev/null and b/archive/barber/assets/webfonts/fa-brands-400.ttf differ diff --git a/archive/barber/assets/webfonts/fa-brands-400.woff b/archive/barber/assets/webfonts/fa-brands-400.woff new file mode 100755 index 0000000..a2d8025 Binary files /dev/null and b/archive/barber/assets/webfonts/fa-brands-400.woff differ diff --git a/archive/barber/assets/webfonts/fa-brands-400.woff2 b/archive/barber/assets/webfonts/fa-brands-400.woff2 new file mode 100755 index 0000000..e27b0bf Binary files /dev/null and b/archive/barber/assets/webfonts/fa-brands-400.woff2 differ diff --git a/archive/barber/assets/webfonts/fa-regular-400.eot b/archive/barber/assets/webfonts/fa-regular-400.eot new file mode 100755 index 0000000..d62be2f Binary files /dev/null and b/archive/barber/assets/webfonts/fa-regular-400.eot differ diff --git a/archive/barber/assets/webfonts/fa-regular-400.svg b/archive/barber/assets/webfonts/fa-regular-400.svg new file mode 100755 index 0000000..8e195fb --- /dev/null +++ b/archive/barber/assets/webfonts/fa-regular-400.svg @@ -0,0 +1,803 @@ + + + + + +Created by FontForge 20190112 at Tue Jun 4 15:16:44 2019 + By Robert Madole +Copyright (c) Font Awesome + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/archive/barber/assets/webfonts/fa-regular-400.ttf b/archive/barber/assets/webfonts/fa-regular-400.ttf new file mode 100755 index 0000000..eb3cb5e Binary files /dev/null and b/archive/barber/assets/webfonts/fa-regular-400.ttf differ diff --git a/archive/barber/assets/webfonts/fa-regular-400.woff b/archive/barber/assets/webfonts/fa-regular-400.woff new file mode 100755 index 0000000..43b1a9a Binary files /dev/null and b/archive/barber/assets/webfonts/fa-regular-400.woff differ diff --git a/archive/barber/assets/webfonts/fa-regular-400.woff2 b/archive/barber/assets/webfonts/fa-regular-400.woff2 new file mode 100755 index 0000000..b9344a7 Binary files /dev/null and b/archive/barber/assets/webfonts/fa-regular-400.woff2 differ diff --git a/archive/barber/assets/webfonts/fa-solid-900.eot b/archive/barber/assets/webfonts/fa-solid-900.eot new file mode 100755 index 0000000..c77baa8 Binary files /dev/null and b/archive/barber/assets/webfonts/fa-solid-900.eot differ diff --git a/archive/barber/assets/webfonts/fa-solid-900.svg b/archive/barber/assets/webfonts/fa-solid-900.svg new file mode 100755 index 0000000..b6ae289 --- /dev/null +++ b/archive/barber/assets/webfonts/fa-solid-900.svg @@ -0,0 +1,4649 @@ + + + + + +Created by FontForge 20190112 at Tue Jun 4 15:16:44 2019 + By Robert Madole +Copyright (c) Font Awesome + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/archive/barber/assets/webfonts/fa-solid-900.ttf b/archive/barber/assets/webfonts/fa-solid-900.ttf new file mode 100755 index 0000000..c6c3dd4 Binary files /dev/null and b/archive/barber/assets/webfonts/fa-solid-900.ttf differ diff --git a/archive/barber/assets/webfonts/fa-solid-900.woff b/archive/barber/assets/webfonts/fa-solid-900.woff new file mode 100755 index 0000000..77c1786 Binary files /dev/null and b/archive/barber/assets/webfonts/fa-solid-900.woff differ diff --git a/archive/barber/assets/webfonts/fa-solid-900.woff2 b/archive/barber/assets/webfonts/fa-solid-900.woff2 new file mode 100755 index 0000000..e30fb67 Binary files /dev/null and b/archive/barber/assets/webfonts/fa-solid-900.woff2 differ diff --git a/archive/barber/images/archive/1.jpg b/archive/barber/images/archive/1.jpg new file mode 100755 index 0000000..c3bd034 Binary files /dev/null and b/archive/barber/images/archive/1.jpg differ diff --git a/archive/barber/images/archive/banner.jpg b/archive/barber/images/archive/banner.jpg new file mode 100755 index 0000000..e9c305a Binary files /dev/null and b/archive/barber/images/archive/banner.jpg differ diff --git a/archive/barber/images/archive/pic01.jpg b/archive/barber/images/archive/pic01.jpg new file mode 100755 index 0000000..0995ef4 Binary files /dev/null and b/archive/barber/images/archive/pic01.jpg differ diff --git a/archive/barber/images/archive/pic02.jpg b/archive/barber/images/archive/pic02.jpg new file mode 100755 index 0000000..8f0de0b Binary files /dev/null and b/archive/barber/images/archive/pic02.jpg differ diff --git a/archive/barber/images/archive/pic03.jpg b/archive/barber/images/archive/pic03.jpg new file mode 100755 index 0000000..1f14b50 Binary files /dev/null and b/archive/barber/images/archive/pic03.jpg differ diff --git a/archive/barber/images/archive/pic04.jpg b/archive/barber/images/archive/pic04.jpg new file mode 100755 index 0000000..898bd94 Binary files /dev/null and b/archive/barber/images/archive/pic04.jpg differ diff --git a/archive/barber/images/archive/pic05.jpg b/archive/barber/images/archive/pic05.jpg new file mode 100755 index 0000000..32e0466 Binary files /dev/null and b/archive/barber/images/archive/pic05.jpg differ diff --git a/archive/barber/images/archive/pic06.jpg b/archive/barber/images/archive/pic06.jpg new file mode 100755 index 0000000..228b7b1 Binary files /dev/null and b/archive/barber/images/archive/pic06.jpg differ diff --git a/archive/barber/images/archive/pic07.jpg b/archive/barber/images/archive/pic07.jpg new file mode 100755 index 0000000..7d0e74b Binary files /dev/null and b/archive/barber/images/archive/pic07.jpg differ diff --git a/archive/barber/images/archive/pic08.jpg b/archive/barber/images/archive/pic08.jpg new file mode 100755 index 0000000..780314a Binary files /dev/null and b/archive/barber/images/archive/pic08.jpg differ diff --git a/archive/barber/images/archive/pic09.jpg b/archive/barber/images/archive/pic09.jpg new file mode 100755 index 0000000..c7adee7 Binary files /dev/null and b/archive/barber/images/archive/pic09.jpg differ diff --git a/archive/barber/images/banner.jpg b/archive/barber/images/banner.jpg new file mode 100755 index 0000000..92de28b Binary files /dev/null and b/archive/barber/images/banner.jpg differ diff --git a/archive/barber/images/evelin/1.jpg b/archive/barber/images/evelin/1.jpg new file mode 100755 index 0000000..fdb00cc Binary files /dev/null and b/archive/barber/images/evelin/1.jpg differ diff --git a/archive/barber/images/evelin/2.jpg b/archive/barber/images/evelin/2.jpg new file mode 100755 index 0000000..0971a0b Binary files /dev/null and b/archive/barber/images/evelin/2.jpg differ diff --git a/archive/barber/images/evelin/3.jpg b/archive/barber/images/evelin/3.jpg new file mode 100755 index 0000000..44a3fee Binary files /dev/null and b/archive/barber/images/evelin/3.jpg differ diff --git a/archive/barber/images/evelin/4.jpg b/archive/barber/images/evelin/4.jpg new file mode 100755 index 0000000..0d8c170 Binary files /dev/null and b/archive/barber/images/evelin/4.jpg differ diff --git a/archive/barber/images/evelin/evelin.jpg b/archive/barber/images/evelin/evelin.jpg new file mode 100755 index 0000000..9140974 Binary files /dev/null and b/archive/barber/images/evelin/evelin.jpg differ diff --git a/archive/barber/images/map.jpg b/archive/barber/images/map.jpg new file mode 100755 index 0000000..fd7ba50 Binary files /dev/null and b/archive/barber/images/map.jpg differ diff --git a/archive/barber/images/ollo.png b/archive/barber/images/ollo.png new file mode 100755 index 0000000..8e18663 Binary files /dev/null and b/archive/barber/images/ollo.png differ diff --git a/archive/barber/index.html b/archive/barber/index.html new file mode 100755 index 0000000..5335481 --- /dev/null +++ b/archive/barber/index.html @@ -0,0 +1,451 @@ + + + + + Studio Beve - Barber + + + + + + + + + + + + + + +
+ + + + + + +
+ +
+ + +
+
+
+
+ +

Om oss

+
+
+
+

+ Mitt navn er Evelin Bence, leder og skaperen av Studio Beve. Jeg anser det som viktig at våre gjester under oppholdet hos oss – mens de stenger ute lit av støyen fra omverdenen – kan lade sine batterier og kan vende tilbake til hverdagen forskjønnet både innvendig og utvendig. +

+

+ Kvalitetstid, maksimal oppmerksomhet, de mest profesjonelle verktøyene, hånd i hånd med profesjonalitet og kompetanse, utgjør grunnlaget for vår filosofi og tjenester. +

+

+ Jeg mener at skjønnhet, mote og trend ikke er kjønnsspesifikke, og hos oss har derfor alle mulighet til å bli vakrere på ett sted, uavhengig av kjønn. Hos Studio Beve Barber og Studio Beve Beauty kan dere finne de tjenestene som er riktige for dere. +

+

+ Med nesten 10 års erfaring fra skjønnhetsindustrien, inkludert mange års internasjonal erfaring, tenkte jeg det var på tide å åpne mitt eget studio her i Trondheim i Innheredsveien 92, hvor gjestene har mulighet til å parkere gratis under behandlingene. +

+

+ Det er en ekstra glede for meg at jeg klarte å finne et tradisjonelt sted hvor det allerede var en skjønnhetssalong på 50-tallet. Derfor har jeg nå muligheten til å videreføre denne tradisjonen i et moderne miljø. + Bli vakker hos oss. Vi ser frem til å ønske deg velkommen. +

+
+
+ +

Bence Evelin
Eieren, Studio Beve

+
+ + + +
+
+
+ +

EVELIN Bence - Barber

+
+
+
+

+ "Jeg lærte å kjenne det grunnleggende om det å være barber allerede i svært ung alder, siden min mor også er barber. Fra henne klarte jeg i svært ung alder å mestre knepene i dette fantastiske yrket. Man kan si at jeg ble født inn i yrket, og jeg har offisielt vært andregenerasjons barber i noen år nå. +

+

+ Jeg er stolt over å ha lært av de beste. Min mesterbarber og venn Ruben Tenkely, eier av «Peaky Barbers – Tenkely Limited Company», europacupvinner og ungarsk mester, har også skaffet seg mye erfaring internasjonalt. Han har blant annet arbeidet i en av Norges mest kjente tradisjonelle salonger, Brødrene Fevangs Barberstue. Slik lærte jeg om trender i Norge. +

+

+ Jeg har bodd i Norge siden april 2023 og er ivrig etter å lære norsk. Jeg føler meg heldig som har fått muligheten til å jobbe sammen med Felipe Romero i Trondheim, som også er en utrolig kunnskapsrik barber. Hos ham kan flere av dere ha møtt og blitt kjent med meg. +

+

+ Jeg deltar stadig på videreutdanninger fordi jeg tror at kontinuerlig utvikling, kvalitetsarbeid og engasjement hjelper meg til å bli en bedre fagperson dag for dag." +

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

Behandlinger

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

Priser

+

Prisen på alle hårbehandling inkluderer hårvask og styling.
10% studentrabatt ved framvising av ID, kan benyttes fra mandag til torsdag.
Åpningstilbud i desember og januar: 20% rabatt.

+
+
+
+
+ +
Herreklipp
+
+
+
kr 630
+
+
+
+
+
+
+
+ +
Overgang fra hodebunnen f.eks taper, low, mid eller high
+
+
+
kr 730
+
+
+
+
+
+
+
+ +
0-12 år
+
+
+
kr 490
+
+
+
+
+
+
+
+ +
med saks og maskin, knivbarbering med varmt håndkle
+
+
+
kr 430
+
+
+
+
+
+
+ +
+
kr 400
+
+
+
+
+
+
+
+ +
Skjeggfarging
+
+
+
kr 330
+
+
+
+
+
+
+
+
+ +
Herreklipp og Skjeggtrimmingg
+
+
+
kr 950
+
+
+
+
+
+
+
+
+ +
Skinfade herreklipp og Skjeggtrimming
+
+
+
kr 1050
+
+
+
+
+
+
+
+
+ +
Alle typer herreklipp og Skjeggtrimming, nese-, øre- og øyenbrynvoksing og øyenbrynforming
+
+
+
kr 1250
+
+
+
+
+
+
+
+
+ +
Øyebrynvoksing og øyenbrynforming
+
+
+
kr 120
+
+
+
+
+
+
+
+
+ +
Ørevoksing
+
+
+
kr 100
+
+
+
+
+
+
+
+
+ +
Nesevoksing
+
+
+
kr 100
+
+
+
+
+
+
+
+ + +
+
+
+
+ +

Åpningstider

+

Gratis kunderparkering under behandlingen

+
+
+
+
+
+
Ukedager
+
+
+
10:00 to 18:00
+
+
+
+
+
Lørdag
+
+
+
10:00 to 16:00
+
+
+
+
+
Søndag
+
+
+
Stengt
+
+
+
+ +
+
+ + + +
+ + +
+
+ + + + + + + + + + + \ No newline at end of file diff --git a/archive/barber/index_en.html b/archive/barber/index_en.html new file mode 100755 index 0000000..1d1f099 --- /dev/null +++ b/archive/barber/index_en.html @@ -0,0 +1,478 @@ + + + + + Studio Beve - Barber + + + + + + + + + + + + + + +
+ + + + + + +
+ +
+ + +
+
+
+
+ +

About Us

+
+
+
+

+ My name is Evelin Bence, the leader and creator of Studio Beve. I consider it + important that our guests during their stay – resting a little from the noise of the + world – recharge their batteries and return to everyday life beautified inside as + well as outside. +

+

+ Quality time, maximum attention, the most professional tools, together with + professionalism and expertise, stand for the basis of our philosophy and + services. +

+

+ I believe that beauty, fashion, and trend are not gender-specific, so we have the + opportunity for everyone to become beautiful in one place, regardless of gender. + And among our Barber and Beauty departments, you can find the right services + for you. +

+

+ With nearly 10 years of experience in the beauty industry, including many years + of international experience, I thought it was time to open my own studio here in + Trondheim at Innheredsveien 92, where guests can park free of charge during + the treatments. +

+

+ It is an extra pleasure for me that I managed to find a traditional place where + there was already a beauty salon in the 50s. Therefore, I now have the + opportunity to carry on this tradition in a modern environment. + Become beautiful with us. We look forward to seeing you. +

+
+
+ +

Bence Evelin
Owner, Studio Beve

+
+ + + +
+
+
+ +

EVELIN Bence - Barber

+
+
+
+ +

+ "I got acquainted with the basics of being a barber at a very young age, as my + mother is also a barber. From her I managed at a very young age to master the + tricks of this wonderful profession. You could say I was born into the profession, + and I've been officially a second-generation barber for a few years now. + I am proud to have learned from the best. My master barber and friend Ruben + Tenkely, owner of "Peaky Barbers – Tenkely Limited Company", European Cup + winner and Hungarian champion, has gained a lot of experience internationally. + Among other things, he worked at one of Norway's most famous traditional + salons, Brødrene Fevangs Barberstue. This allowed me to learn about trends in + Norway. +

+

+ I have been living in Norway since April 2023 and am eager to learn + Norwegian. I feel fortunate to have had the opportunity to work alongside Felipe + Romero in Trondheim, who is also an incredibly knowledgeable barber. More + than one of you may have met and gotten to know me at his salon. + I constantly participate in further trainings because I believe that continuous + development, quality work and dedication help me to become a better + professional day by day." +

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

Treatments

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

Prices

+

The price of all hair treatments include hairwash and styling.
10% student reduction upon showing ID, available from Monday to Thursday.
Opening offer in December and January: 20% reduction

+
+
+
+
+ +
Men's haircut
+
+
+
kr 630
+
+
+
+
+
+
+
+ +
Fade from skin, that is taper, low, mid or high
+
+
+
kr 730
+
+
+
+
+
+
+
+ +
0-12 years old
+
+
+
kr 490
+
+
+
+
+
+
+
+ +
with scissors and machine, knife shave, hot t
+
+
+
kr 430
+
+
+
+
+
+
+ +
+
kr 400
+
+
+
+
+
+
+
+ +
Beard dying
+
+
+
kr 330
+
+
+
+
+
+
+
+
+ +
Men's haircut and Beard trimming
+
+
+
kr 950
+
+
+
+
+
+
+
+
+ +
Skinfade men's haircut and Beard trimming
+
+
+
kr 1050
+
+
+
+
+
+
+
+
+ +
Any haircut, beard trimming, nose, ear wax
+
+
+
kr 1250
+
+
+
+
+
+
+
+
+ +
Eyebrow waxing and eyebrow forming
+
+
+
kr 120
+
+
+
+
+
+
+
+
+ +
Ear vaxing
+
+
+
kr 100
+
+
+
+
+
+
+
+
+ +
Nose vaxing
+
+
+
kr 100
+
+
+
+
+
+
+
+ + +
+
+
+
+ +

Working Hours

+

Free customer parking during treatments

+
+
+
+
+
+
Weekdays
+
+
+
10:00 to 18:00
+
+
+
+
+
Saturday
+
+
+
10:00 to 16:00
+
+
+
+
+
Sunday
+
+
+
Closed
+
+
+
+ +
+
+ + + + + + + +
+ + +
+
+ + + + + + + + + + + \ No newline at end of file diff --git a/archive/barber/index_hu.html b/archive/barber/index_hu.html new file mode 100755 index 0000000..9290f86 --- /dev/null +++ b/archive/barber/index_hu.html @@ -0,0 +1,457 @@ + + + + + Studio Beve - Barber + + + + + + + + + + + + + + +
+ + + + + + +
+ +
+ + +
+
+
+
+ +

Rólunk

+
+
+
+

+ Bence Evelin vagyok a Studio Beve vezetője és megálmodója. Fontosnak tartom, hogy a vendégek a nálunk töltött idő alatt – egy kicsit megpihenve a világ zajától – feltöltődjenek, és kívül-belül megszépülve térjenek vissza a mindennapokhoz. +

+

+ A minőségi idő, a maximális figyelem, a legprofesszionálisabb eszközök, a hivatástudattal és szakértelemmel karöltve jelentik a filozófiánk és szolgáltatásaink alapjait. +

+

+ Hiszem, hogy a szépség, a divat és a trend nem nemhez kötött, így nálunk lehetőség van arra, hogy mindenki egy helyen szépülhessen nemtől függetlenül. A Barber és Beauty részlegeink között pedig megtalálhatjátok a számotokra megfelelő szolgáltatásokat. +

+

+ Közel 10 éves szépségipari, és közte több éves nemzetközi tapasztalattal elérkezettnek láttam az időt, hogy megnyissam saját stúdiómat itt Trondheimben, az Innheredsveien 92 szám alatt, ahol a vendégeknek lehetősége van ingyenes parkolásra is a kezelések időtartama alatt. +

+

+ Extra öröm számomra, hogy egy olyan tradicionális helyet sikerült találnom, ahol az 50-es években már szépségszalon működött, ennek köszönhetően a hagyományt, modern környezetben lehetőségem van tovább vinni. + Szépülj velünk, szeretettel várunk. +

+
+
+ +

Bence Evelin
Tulajdonos, Studio Beve

+
+ + + +
+
+
+ +

EVELIN Bence - Barber

+
+
+
+ +

+ "Már egészen kiskoromban megismerkedtem a borbély lét alapjaival, hiszen édesanyám is borbély. Tőle, egészen fiatalon sikerült elsajátítanom ennek a csodálatos szakmának a fortélyait. Mondhatni beleszülettem a szakmába, és már néhány éve, hivatalosan is második generációs borbély vagyok. +

+

+ Büszke vagyok arra, hogy a legjobbaktól tanulhattam. A fodrászmesterem és barátom Tenkely Ruben, a „Peaky Barbers - Tenkely Limited Company” tulajdonosa, európa kupagyőztes és magyar bajnok, aki nemzetközi szinten is rengeteg tapasztalatot szerzett. Többek között dolgozott norvégia egyik leghíresebb tradicionális szalonjában a Brødrene Fevangs Barberstue-ben. Így általa is megismerhettem a norvégiai trendeket. +

+

+ 2023 áprilisától élek Norvégiában, a norvég nyelvet lelkesen tanulom. Szerencsésnek érzem magam, hogy ez idő alatt lehetőségem volt Felipe Romero mellett dolgozni Trondheimben, aki szintén elképesztően nagy tudással rendelkező borbély. Nála már többen is találkozhattatok velem és megismerhettetek. +

+

+ Folyamatosan veszek részt továbbképzéseken, mert hiszem, hogy a folyamatos fejlődés, a minőségi munka és az odaadás segít, hogy napról-napra jobb szakember lehessek." +

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

Szolgáltatások

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

Árlista

+

Minden hajkezelés ára tartalmazza a hajmosást és a formázást
10%-os diákkedvezmény, igazolvány felmutatásával, ami hétfőtől csütörtökig vehető igénybe.
20%-os nyitási akció decemberben és januárban.

+
+
+
+
+ +
Férfi hajvágás
+
+
+
kr 630
+
+
+
+
+
+
+
+ +
Bőrből indított átmenet mint pl taper, low, mid vagy high
+
+
+
kr 730
+
+
+
+
+
+
+
+ +
0-12 éves korig
+
+
+
kr 490
+
+
+
+
+
+
+
+ +
ollóval, géppel és forró törölközős késes borotválással
+
+
+
kr 430
+
+
+
+
+
+
+ +
+
kr 400
+
+
+
+
+
+
+
+ +
Szakállfestés
+
+
+
kr 330
+
+
+
+
+
+
+
+
+ +
Hajvágás + szakálligazítás
+
+
+
kr 950
+
+
+
+
+
+
+
+
+ +
Skinfade + szaláligazítás
+
+
+
kr 1050
+
+
+
+
+
+
+
+
+ +
Hajvágás, szakálligazítás, orr- füll- szemöldökgyantázás
+
+
+
kr 1250
+
+
+
+
+
+
+
+
+ +
Szemöldök gyanta és szemöldök igazítás
+
+
+
kr 120
+
+
+
+
+
+
+
+
+ +
Fül gyanta
+
+
+
kr 100
+
+
+
+
+
+
+
+
+ +
Orr gyanta
+
+
+
kr 100
+
+
+
+
+
+
+
+ + +
+
+
+
+ +

Nyitvatartási idő

+

Ingyenes parkolás a szolgáltatások ideje alatt

+
+
+
+
+
+
Hétköznap
+
+
+
10:00 to 18:00
+
+
+
+
+
Szombat
+
+
+
10:00 to 16:00
+
+
+
+
+
Vasárnap
+
+
+
Zárva
+
+
+
+ +
+
+ + + + + + + +
+ + +
+
+ + + + + + + + + + + \ No newline at end of file diff --git a/archive/beauty/archive/elements.html b/archive/beauty/archive/elements.html new file mode 100755 index 0000000..14301b8 --- /dev/null +++ b/archive/beauty/archive/elements.html @@ -0,0 +1,425 @@ + + + + + Untitled + + + + + +
+ + + + + +
+
+
+

Elements

+

All the elements and stuff

+
+ + +
+

Text

+

This is bold and this is strong. This is italic and this is emphasized. + This is superscript text and this is subscript text. + This is underlined and this is code: for (;;) { ... }. Finally, this is a link.

+ +
+ +
+

Heading with a Subtitle

+

Lorem ipsum dolor sit amet nullam id egestas urna aliquam

+
+

Nunc lacinia ante nunc ac lobortis. Interdum adipiscing gravida odio porttitor sem non mi integer non faucibus ornare mi ut ante amet placerat aliquet. Volutpat eu sed ante lacinia sapien lorem accumsan varius montes viverra nibh in adipiscing blandit tempus accumsan.

+
+

Heading with a Subtitle

+

Lorem ipsum dolor sit amet nullam id egestas urna aliquam

+
+

Nunc lacinia ante nunc ac lobortis. Interdum adipiscing gravida odio porttitor sem non mi integer non faucibus ornare mi ut ante amet placerat aliquet. Volutpat eu sed ante lacinia sapien lorem accumsan varius montes viverra nibh in adipiscing blandit tempus accumsan.

+ +
+ +

Heading Level 2

+

Heading Level 3

+

Heading Level 4

+
Heading Level 5
+
Heading Level 6
+ +
+ +

Blockquote

+
Fringilla nisl. Donec accumsan interdum nisi, quis tincidunt felis sagittis eget tempus euismod. Vestibulum ante ipsum primis in faucibus vestibulum. Blandit adipiscing eu felis iaculis volutpat ac adipiscing accumsan faucibus. Vestibulum ante ipsum primis in faucibus lorem ipsum dolor sit amet nullam adipiscing eu felis.
+ +

Preformatted

+
i = 0;

+

+while (!deck.isInOrder()) {

+    print 'Iteration ' + i;

+    deck.shuffle();

+    i++;

+}

+

+print 'It took ' + i + ' iterations to sort the deck.';

+
+
+ + +
+

Lists

+
+
+ +

Unordered

+
    +
  • Dolor pulvinar etiam magna etiam.
  • +
  • Sagittis adipiscing lorem eleifend.
  • +
  • Felis enim feugiat dolore viverra.
  • +
+ +

Alternate

+
    +
  • Dolor pulvinar etiam magna etiam.
  • +
  • Sagittis adipiscing lorem eleifend.
  • +
  • Felis enim feugiat dolore viverra.
  • +
+ +
+
+ +

Ordered

+
    +
  1. Dolor pulvinar etiam magna etiam.
  2. +
  3. Etiam vel felis at lorem sed viverra.
  4. +
  5. Felis enim feugiat dolore viverra.
  6. +
  7. Dolor pulvinar etiam magna etiam.
  8. +
  9. Etiam vel felis at lorem sed viverra.
  10. +
  11. Felis enim feugiat dolore viverra.
  12. +
+ +

Icons

+ + +
+
+ +

Actions

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

Table

+ +

Default

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionPrice
SomethingAnte turpis integer aliquet porttitor.29.99
NothingVis ac commodo adipiscing arcu aliquet.19.99
Something Morbi faucibus arcu accumsan lorem.29.99
NothingVitae integer tempus condimentum.19.99
SomethingAnte turpis integer aliquet porttitor.29.99
100.00
+
+ +

Alternate

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameDescriptionPrice
SomethingAnte turpis integer aliquet porttitor.29.99
NothingVis ac commodo adipiscing arcu aliquet.19.99
Something Morbi faucibus arcu accumsan lorem.29.99
NothingVitae integer tempus condimentum.19.99
SomethingAnte turpis integer aliquet porttitor.29.99
100.00
+
+
+ + +
+

Buttons

+ + + + + +
    +
  • Primary
  • +
  • Default
  • +
  • Alternate
  • +
+
+ + +
+

Form

+
+
+
+ +
+
+ +
+
+ +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ +
+
+
    +
  • +
  • +
+
+
+
+
+ + +
+

Image

+

Fit

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

Left & Right

+

Fringilla nisl. Donec accumsan interdum nisi, quis tincidunt felis sagittis eget. tempus euismod. Vestibulum ante ipsum primis in faucibus vestibulum. Blandit adipiscing eu felis iaculis volutpat ac adipiscing accumsan eu faucibus. Integer ac pellentesque praesent tincidunt felis sagittis eget. tempus euismod. Vestibulum ante ipsum primis in faucibus vestibulum. Blandit adipiscing eu felis iaculis volutpat ac adipiscing accumsan eu faucibus. Integer ac pellentesque praesent. Donec accumsan interdum nisi, quis tincidunt felis sagittis eget. tempus euismod. Vestibulum ante ipsum primis in faucibus vestibulum. Blandit adipiscing eu felis iaculis volutpat ac adipiscing accumsan eu faucibus. Integer ac pellentesque praesent tincidunt felis sagittis eget. tempus euismod. Vestibulum ante ipsum primis in faucibus vestibulum. Blandit adipiscing eu felis iaculis volutpat ac adipiscing accumsan eu faucibus. Integer ac pellentesque praesent.

+

Fringilla nisl. Donec accumsan interdum nisi, quis tincidunt felis sagittis eget. tempus euismod. Vestibulum ante ipsum primis in faucibus vestibulum. Blandit adipiscing eu felis iaculis volutpat ac adipiscing accumsan eu faucibus. Integer ac pellentesque praesent tincidunt felis sagittis eget. tempus euismod. Vestibulum ante ipsum primis in faucibus vestibulum. Blandit adipiscing eu felis iaculis volutpat ac adipiscing accumsan eu faucibus. Integer ac pellentesque praesent. Donec accumsan interdum nisi, quis tincidunt felis sagittis eget. tempus euismod. Vestibulum ante ipsum primis in faucibus vestibulum. Blandit adipiscing eu felis iaculis volutpat ac adipiscing accumsan eu faucibus. Integer ac pellentesque praesent tincidunt felis sagittis eget. tempus euismod. Vestibulum ante ipsum primis in faucibus vestibulum. Blandit adipiscing eu felis iaculis volutpat ac adipiscing accumsan eu faucibus. Integer ac pellentesque praesent.

+
+ +
+
+ + + + +
+ + + + + + + + + + + \ No newline at end of file diff --git a/archive/beauty/archive/left-sidebar.html b/archive/beauty/archive/left-sidebar.html new file mode 100755 index 0000000..39270e5 --- /dev/null +++ b/archive/beauty/archive/left-sidebar.html @@ -0,0 +1,129 @@ + + + + + Untitled + + + + + +
+ + + + + +
+
+
+

Left Sidebar

+

Faucibus neque adipiscing mi lorem semper blandit

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

Dolore Amet Consequat

+

Aliquam massa urna, imperdiet sit amet mi non, bibendum euismod est. Curabitur mi justo, tincidunt vel eros ullamcorper, porta cursus justo. Cras vel neque eros. Vestibulum diam quam, mollis at magna consectetur non, malesuada quis augue. Morbi tincidunt pretium interdum est. Curabitur mi justo, tincidunt vel eros ullamcorper, porta cursus justo. Cras vel neque eros. Vestibulum diam.

+

Vestibulum diam quam, mollis at consectetur non, malesuada quis augue. Morbi tincidunt pretium interdum. Morbi mattis elementum orci, nec dictum porta cursus justo. Quisque ultricies lorem in ligula condimentum, et egestas turpis sagittis. Cras ac nunc urna. Nullam eget lobortis purus. Phasellus vitae tortor non est placerat tristique.

+

Sed Magna Ornare

+

In vestibulum massa quis arcu lobortis tempus. Nam pretium arcu in odio vulputate luctus. Suspendisse euismod lorem eget lacinia fringilla. Sed sed felis justo. Nunc sodales elit in laoreet aliquam. Nam gravida, nisl sit amet iaculis porttitor, risus nisi rutrum metus.

+
    +
  • Faucibus orci lobortis ac adipiscing integer.
  • +
  • Col accumsan arcu mi aliquet placerat.
  • +
  • Lobortis vestibulum ut magna tempor massa nascetur.
  • +
  • Blandit massa non blandit tempor interdum.
  • +
  • Lacinia mattis arcu nascetur lobortis.
  • +
+
+ +
+
+
+
+ + + + +
+ + + + + + + + + + + \ No newline at end of file diff --git a/archive/beauty/archive/no-sidebar.html b/archive/beauty/archive/no-sidebar.html new file mode 100755 index 0000000..d3dbe7b --- /dev/null +++ b/archive/beauty/archive/no-sidebar.html @@ -0,0 +1,98 @@ + + + + + Untitled + + + + + +
+ + + + + +
+
+
+

No Sidebar

+

Faucibus neque adipiscing mi lorem semper blandit

+
+ + +
+ +

Dolore Amet Consequat

+

Aliquam massa urna, imperdiet sit amet mi non, bibendum euismod est. Curabitur mi justo, tincidunt vel eros ullamcorper, porta cursus justo. Cras vel neque eros. Vestibulum diam quam, mollis at consectetur non, malesuada quis augue. Morbi tincidunt pretium interdum. Morbi mattis dictum porta cursus justo. Quisque ultricies lorem in ligula condimentum, et egestas turpis sagittis. Cras ac nunc urna. Nullam eget lobortis elementum orci, nec dictum massa. Morbi eu faucibus massa. Aliquam massa urna, imperdiet sit amet mi non, bibendum euismod est. Curabitur mi justo, tincidunt vel eros ullamcorper, porta cursus justo. Cras vel neque eros. Vestibulum diam.

+

Vestibulum diam quam, mollis at consectetur non, malesuada quis augue. Morbi tincidunt pretium interdum. Morbi mattis elementum orci, nec dictum porta cursus justo. Quisque ultricies lorem in ligula condimentum, et egestas turpis sagittis. Cras ac nunc urna. Nullam eget lobortis purus. Phasellus vitae tortor non est placerat tristique. Sed id sem et massa ornare pellentesque. Maecenas pharetra porta accumsan.

+

Sed Magna Ornare

+

In vestibulum massa quis arcu lobortis tempus. Nam pretium arcu in odio vulputate luctus. Suspendisse euismod lorem eget lacinia fringilla. Sed sed felis justo. Nunc sodales elit in laoreet aliquam. Nam gravida, nisl sit amet iaculis porttitor, risus nisi rutrum metus, non hendrerit ipsum arcu tristique est.

+
    +
  • Faucibus orci lobortis ac adipiscing integer.
  • +
  • Col accumsan arcu mi aliquet placerat.
  • +
  • Lobortis vestibulum ut magna tempor massa nascetur.
  • +
  • Blandit massa non blandit tempor interdum.
  • +
  • Lacinia mattis arcu nascetur lobortis.
  • +
+
+ +
+
+ + + + +
+ + + + + + + + + + + \ No newline at end of file diff --git a/archive/beauty/archive/right-sidebar.html b/archive/beauty/archive/right-sidebar.html new file mode 100755 index 0000000..d9137b2 --- /dev/null +++ b/archive/beauty/archive/right-sidebar.html @@ -0,0 +1,129 @@ + + + + + Untitled + + + + + +
+ + + + + +
+
+
+

Right Sidebar

+

Faucibus neque adipiscing mi lorem semper blandit

+
+
+
+ + +
+ +

Dolore Amet Consequat

+

Aliquam massa urna, imperdiet sit amet mi non, bibendum euismod est. Curabitur mi justo, tincidunt vel eros ullamcorper, porta cursus justo. Cras vel neque eros. Vestibulum diam quam, mollis at magna consectetur non, malesuada quis augue. Morbi tincidunt pretium interdum est. Curabitur mi justo, tincidunt vel eros ullamcorper, porta cursus justo. Cras vel neque eros. Vestibulum diam.

+

Vestibulum diam quam, mollis at consectetur non, malesuada quis augue. Morbi tincidunt pretium interdum. Morbi mattis elementum orci, nec dictum porta cursus justo. Quisque ultricies lorem in ligula condimentum, et egestas turpis sagittis. Cras ac nunc urna. Nullam eget lobortis purus. Phasellus vitae tortor non est placerat tristique.

+

Sed Magna Ornare

+

In vestibulum massa quis arcu lobortis tempus. Nam pretium arcu in odio vulputate luctus. Suspendisse euismod lorem eget lacinia fringilla. Sed sed felis justo. Nunc sodales elit in laoreet aliquam. Nam gravida, nisl sit amet iaculis porttitor, risus nisi rutrum metus.

+
    +
  • Faucibus orci lobortis ac adipiscing integer.
  • +
  • Col accumsan arcu mi aliquet placerat.
  • +
  • Lobortis vestibulum ut magna tempor massa nascetur.
  • +
  • Blandit massa non blandit tempor interdum.
  • +
  • Lacinia mattis arcu nascetur lobortis.
  • +
+
+ +
+
+ + + + +
+
+
+
+ + + + +
+ + + + + + + + + + + \ No newline at end of file diff --git a/archive/beauty/assets/css/fontawesome-all.min.css b/archive/beauty/assets/css/fontawesome-all.min.css new file mode 100755 index 0000000..d6f129c --- /dev/null +++ b/archive/beauty/assets/css/fontawesome-all.min.css @@ -0,0 +1,206 @@ +/*! + * Font Awesome Free 5.9.0 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) + */ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +.fa,.fab,.fal,.far,.fas{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-.0667em}.fa-xs{font-size:.75em}.fa-sm{font-size:.875em}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:2.5em;padding-left:0}.fa-ul>li{position:relative}.fa-li{left:-2em;position:absolute;text-align:center;width:2em;line-height:inherit}.fa-border{border:.08em solid #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.fab.fa-pull-left,.fal.fa-pull-left,.far.fa-pull-left,.fas.fa-pull-left{margin-right:.3em}.fa.fa-pull-right,.fab.fa-pull-right,.fal.fa-pull-right,.far.fa-pull-right,.fas.fa-pull-right{margin-left:.3em}.fa-spin{animation:fa-spin 2s infinite linear}.fa-pulse{animation:fa-spin 1s infinite steps(8)}@keyframes fa-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";transform:scaleX(-1)}.fa-flip-vertical{transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical,.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{transform:scale(-1)}:root .fa-flip-both,:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270{filter:none}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-500px:before{content:"\f26e"}.fa-accessible-icon:before{content:"\f368"}.fa-accusoft:before{content:"\f369"}.fa-acquisitions-incorporated:before{content:"\f6af"}.fa-ad:before{content:"\f641"}.fa-address-book:before{content:"\f2b9"}.fa-address-card:before{content:"\f2bb"}.fa-adjust:before{content:"\f042"}.fa-adn:before{content:"\f170"}.fa-adobe:before{content:"\f778"}.fa-adversal:before{content:"\f36a"}.fa-affiliatetheme:before{content:"\f36b"}.fa-air-freshener:before{content:"\f5d0"}.fa-airbnb:before{content:"\f834"}.fa-algolia:before{content:"\f36c"}.fa-align-center:before{content:"\f037"}.fa-align-justify:before{content:"\f039"}.fa-align-left:before{content:"\f036"}.fa-align-right:before{content:"\f038"}.fa-alipay:before{content:"\f642"}.fa-allergies:before{content:"\f461"}.fa-amazon:before{content:"\f270"}.fa-amazon-pay:before{content:"\f42c"}.fa-ambulance:before{content:"\f0f9"}.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-amilia:before{content:"\f36d"}.fa-anchor:before{content:"\f13d"}.fa-android:before{content:"\f17b"}.fa-angellist:before{content:"\f209"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-down:before{content:"\f107"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angry:before{content:"\f556"}.fa-angrycreative:before{content:"\f36e"}.fa-angular:before{content:"\f420"}.fa-ankh:before{content:"\f644"}.fa-app-store:before{content:"\f36f"}.fa-app-store-ios:before{content:"\f370"}.fa-apper:before{content:"\f371"}.fa-apple:before{content:"\f179"}.fa-apple-alt:before{content:"\f5d1"}.fa-apple-pay:before{content:"\f415"}.fa-archive:before{content:"\f187"}.fa-archway:before{content:"\f557"}.fa-arrow-alt-circle-down:before{content:"\f358"}.fa-arrow-alt-circle-left:before{content:"\f359"}.fa-arrow-alt-circle-right:before{content:"\f35a"}.fa-arrow-alt-circle-up:before{content:"\f35b"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-down:before{content:"\f063"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrows-alt:before{content:"\f0b2"}.fa-arrows-alt-h:before{content:"\f337"}.fa-arrows-alt-v:before{content:"\f338"}.fa-artstation:before{content:"\f77a"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asterisk:before{content:"\f069"}.fa-asymmetrik:before{content:"\f372"}.fa-at:before{content:"\f1fa"}.fa-atlas:before{content:"\f558"}.fa-atlassian:before{content:"\f77b"}.fa-atom:before{content:"\f5d2"}.fa-audible:before{content:"\f373"}.fa-audio-description:before{content:"\f29e"}.fa-autoprefixer:before{content:"\f41c"}.fa-avianex:before{content:"\f374"}.fa-aviato:before{content:"\f421"}.fa-award:before{content:"\f559"}.fa-aws:before{content:"\f375"}.fa-baby:before{content:"\f77c"}.fa-baby-carriage:before{content:"\f77d"}.fa-backspace:before{content:"\f55a"}.fa-backward:before{content:"\f04a"}.fa-bacon:before{content:"\f7e5"}.fa-balance-scale:before{content:"\f24e"}.fa-balance-scale-left:before{content:"\f515"}.fa-balance-scale-right:before{content:"\f516"}.fa-ban:before{content:"\f05e"}.fa-band-aid:before{content:"\f462"}.fa-bandcamp:before{content:"\f2d5"}.fa-barcode:before{content:"\f02a"}.fa-bars:before{content:"\f0c9"}.fa-baseball-ball:before{content:"\f433"}.fa-basketball-ball:before{content:"\f434"}.fa-bath:before{content:"\f2cd"}.fa-battery-empty:before{content:"\f244"}.fa-battery-full:before{content:"\f240"}.fa-battery-half:before{content:"\f242"}.fa-battery-quarter:before{content:"\f243"}.fa-battery-three-quarters:before{content:"\f241"}.fa-battle-net:before{content:"\f835"}.fa-bed:before{content:"\f236"}.fa-beer:before{content:"\f0fc"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-bell:before{content:"\f0f3"}.fa-bell-slash:before{content:"\f1f6"}.fa-bezier-curve:before{content:"\f55b"}.fa-bible:before{content:"\f647"}.fa-bicycle:before{content:"\f206"}.fa-biking:before{content:"\f84a"}.fa-bimobject:before{content:"\f378"}.fa-binoculars:before{content:"\f1e5"}.fa-biohazard:before{content:"\f780"}.fa-birthday-cake:before{content:"\f1fd"}.fa-bitbucket:before{content:"\f171"}.fa-bitcoin:before{content:"\f379"}.fa-bity:before{content:"\f37a"}.fa-black-tie:before{content:"\f27e"}.fa-blackberry:before{content:"\f37b"}.fa-blender:before{content:"\f517"}.fa-blender-phone:before{content:"\f6b6"}.fa-blind:before{content:"\f29d"}.fa-blog:before{content:"\f781"}.fa-blogger:before{content:"\f37c"}.fa-blogger-b:before{content:"\f37d"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-bold:before{content:"\f032"}.fa-bolt:before{content:"\f0e7"}.fa-bomb:before{content:"\f1e2"}.fa-bone:before{content:"\f5d7"}.fa-bong:before{content:"\f55c"}.fa-book:before{content:"\f02d"}.fa-book-dead:before{content:"\f6b7"}.fa-book-medical:before{content:"\f7e6"}.fa-book-open:before{content:"\f518"}.fa-book-reader:before{content:"\f5da"}.fa-bookmark:before{content:"\f02e"}.fa-bootstrap:before{content:"\f836"}.fa-border-all:before{content:"\f84c"}.fa-border-none:before{content:"\f850"}.fa-border-style:before{content:"\f853"}.fa-bowling-ball:before{content:"\f436"}.fa-box:before{content:"\f466"}.fa-box-open:before{content:"\f49e"}.fa-boxes:before{content:"\f468"}.fa-braille:before{content:"\f2a1"}.fa-brain:before{content:"\f5dc"}.fa-bread-slice:before{content:"\f7ec"}.fa-briefcase:before{content:"\f0b1"}.fa-briefcase-medical:before{content:"\f469"}.fa-broadcast-tower:before{content:"\f519"}.fa-broom:before{content:"\f51a"}.fa-brush:before{content:"\f55d"}.fa-btc:before{content:"\f15a"}.fa-buffer:before{content:"\f837"}.fa-bug:before{content:"\f188"}.fa-building:before{content:"\f1ad"}.fa-bullhorn:before{content:"\f0a1"}.fa-bullseye:before{content:"\f140"}.fa-burn:before{content:"\f46a"}.fa-buromobelexperte:before{content:"\f37f"}.fa-bus:before{content:"\f207"}.fa-bus-alt:before{content:"\f55e"}.fa-business-time:before{content:"\f64a"}.fa-buysellads:before{content:"\f20d"}.fa-calculator:before{content:"\f1ec"}.fa-calendar:before{content:"\f133"}.fa-calendar-alt:before{content:"\f073"}.fa-calendar-check:before{content:"\f274"}.fa-calendar-day:before{content:"\f783"}.fa-calendar-minus:before{content:"\f272"}.fa-calendar-plus:before{content:"\f271"}.fa-calendar-times:before{content:"\f273"}.fa-calendar-week:before{content:"\f784"}.fa-camera:before{content:"\f030"}.fa-camera-retro:before{content:"\f083"}.fa-campground:before{content:"\f6bb"}.fa-canadian-maple-leaf:before{content:"\f785"}.fa-candy-cane:before{content:"\f786"}.fa-cannabis:before{content:"\f55f"}.fa-capsules:before{content:"\f46b"}.fa-car:before{content:"\f1b9"}.fa-car-alt:before{content:"\f5de"}.fa-car-battery:before{content:"\f5df"}.fa-car-crash:before{content:"\f5e1"}.fa-car-side:before{content:"\f5e4"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-caret-square-down:before{content:"\f150"}.fa-caret-square-left:before{content:"\f191"}.fa-caret-square-right:before{content:"\f152"}.fa-caret-square-up:before{content:"\f151"}.fa-caret-up:before{content:"\f0d8"}.fa-carrot:before{content:"\f787"}.fa-cart-arrow-down:before{content:"\f218"}.fa-cart-plus:before{content:"\f217"}.fa-cash-register:before{content:"\f788"}.fa-cat:before{content:"\f6be"}.fa-cc-amazon-pay:before{content:"\f42d"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-apple-pay:before{content:"\f416"}.fa-cc-diners-club:before{content:"\f24c"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-cc-visa:before{content:"\f1f0"}.fa-centercode:before{content:"\f380"}.fa-centos:before{content:"\f789"}.fa-certificate:before{content:"\f0a3"}.fa-chair:before{content:"\f6c0"}.fa-chalkboard:before{content:"\f51b"}.fa-chalkboard-teacher:before{content:"\f51c"}.fa-charging-station:before{content:"\f5e7"}.fa-chart-area:before{content:"\f1fe"}.fa-chart-bar:before{content:"\f080"}.fa-chart-line:before{content:"\f201"}.fa-chart-pie:before{content:"\f200"}.fa-check:before{content:"\f00c"}.fa-check-circle:before{content:"\f058"}.fa-check-double:before{content:"\f560"}.fa-check-square:before{content:"\f14a"}.fa-cheese:before{content:"\f7ef"}.fa-chess:before{content:"\f439"}.fa-chess-bishop:before{content:"\f43a"}.fa-chess-board:before{content:"\f43c"}.fa-chess-king:before{content:"\f43f"}.fa-chess-knight:before{content:"\f441"}.fa-chess-pawn:before{content:"\f443"}.fa-chess-queen:before{content:"\f445"}.fa-chess-rook:before{content:"\f447"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-down:before{content:"\f078"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-chevron-up:before{content:"\f077"}.fa-child:before{content:"\f1ae"}.fa-chrome:before{content:"\f268"}.fa-chromecast:before{content:"\f838"}.fa-church:before{content:"\f51d"}.fa-circle:before{content:"\f111"}.fa-circle-notch:before{content:"\f1ce"}.fa-city:before{content:"\f64f"}.fa-clinic-medical:before{content:"\f7f2"}.fa-clipboard:before{content:"\f328"}.fa-clipboard-check:before{content:"\f46c"}.fa-clipboard-list:before{content:"\f46d"}.fa-clock:before{content:"\f017"}.fa-clone:before{content:"\f24d"}.fa-closed-captioning:before{content:"\f20a"}.fa-cloud:before{content:"\f0c2"}.fa-cloud-download-alt:before{content:"\f381"}.fa-cloud-meatball:before{content:"\f73b"}.fa-cloud-moon:before{content:"\f6c3"}.fa-cloud-moon-rain:before{content:"\f73c"}.fa-cloud-rain:before{content:"\f73d"}.fa-cloud-showers-heavy:before{content:"\f740"}.fa-cloud-sun:before{content:"\f6c4"}.fa-cloud-sun-rain:before{content:"\f743"}.fa-cloud-upload-alt:before{content:"\f382"}.fa-cloudscale:before{content:"\f383"}.fa-cloudsmith:before{content:"\f384"}.fa-cloudversify:before{content:"\f385"}.fa-cocktail:before{content:"\f561"}.fa-code:before{content:"\f121"}.fa-code-branch:before{content:"\f126"}.fa-codepen:before{content:"\f1cb"}.fa-codiepie:before{content:"\f284"}.fa-coffee:before{content:"\f0f4"}.fa-cog:before{content:"\f013"}.fa-cogs:before{content:"\f085"}.fa-coins:before{content:"\f51e"}.fa-columns:before{content:"\f0db"}.fa-comment:before{content:"\f075"}.fa-comment-alt:before{content:"\f27a"}.fa-comment-dollar:before{content:"\f651"}.fa-comment-dots:before{content:"\f4ad"}.fa-comment-medical:before{content:"\f7f5"}.fa-comment-slash:before{content:"\f4b3"}.fa-comments:before{content:"\f086"}.fa-comments-dollar:before{content:"\f653"}.fa-compact-disc:before{content:"\f51f"}.fa-compass:before{content:"\f14e"}.fa-compress:before{content:"\f066"}.fa-compress-arrows-alt:before{content:"\f78c"}.fa-concierge-bell:before{content:"\f562"}.fa-confluence:before{content:"\f78d"}.fa-connectdevelop:before{content:"\f20e"}.fa-contao:before{content:"\f26d"}.fa-cookie:before{content:"\f563"}.fa-cookie-bite:before{content:"\f564"}.fa-copy:before{content:"\f0c5"}.fa-copyright:before{content:"\f1f9"}.fa-couch:before{content:"\f4b8"}.fa-cpanel:before{content:"\f388"}.fa-creative-commons:before{content:"\f25e"}.fa-creative-commons-by:before{content:"\f4e7"}.fa-creative-commons-nc:before{content:"\f4e8"}.fa-creative-commons-nc-eu:before{content:"\f4e9"}.fa-creative-commons-nc-jp:before{content:"\f4ea"}.fa-creative-commons-nd:before{content:"\f4eb"}.fa-creative-commons-pd:before{content:"\f4ec"}.fa-creative-commons-pd-alt:before{content:"\f4ed"}.fa-creative-commons-remix:before{content:"\f4ee"}.fa-creative-commons-sa:before{content:"\f4ef"}.fa-creative-commons-sampling:before{content:"\f4f0"}.fa-creative-commons-sampling-plus:before{content:"\f4f1"}.fa-creative-commons-share:before{content:"\f4f2"}.fa-creative-commons-zero:before{content:"\f4f3"}.fa-credit-card:before{content:"\f09d"}.fa-critical-role:before{content:"\f6c9"}.fa-crop:before{content:"\f125"}.fa-crop-alt:before{content:"\f565"}.fa-cross:before{content:"\f654"}.fa-crosshairs:before{content:"\f05b"}.fa-crow:before{content:"\f520"}.fa-crown:before{content:"\f521"}.fa-crutch:before{content:"\f7f7"}.fa-css3:before{content:"\f13c"}.fa-css3-alt:before{content:"\f38b"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-cut:before{content:"\f0c4"}.fa-cuttlefish:before{content:"\f38c"}.fa-d-and-d:before{content:"\f38d"}.fa-d-and-d-beyond:before{content:"\f6ca"}.fa-dashcube:before{content:"\f210"}.fa-database:before{content:"\f1c0"}.fa-deaf:before{content:"\f2a4"}.fa-delicious:before{content:"\f1a5"}.fa-democrat:before{content:"\f747"}.fa-deploydog:before{content:"\f38e"}.fa-deskpro:before{content:"\f38f"}.fa-desktop:before{content:"\f108"}.fa-dev:before{content:"\f6cc"}.fa-deviantart:before{content:"\f1bd"}.fa-dharmachakra:before{content:"\f655"}.fa-dhl:before{content:"\f790"}.fa-diagnoses:before{content:"\f470"}.fa-diaspora:before{content:"\f791"}.fa-dice:before{content:"\f522"}.fa-dice-d20:before{content:"\f6cf"}.fa-dice-d6:before{content:"\f6d1"}.fa-dice-five:before{content:"\f523"}.fa-dice-four:before{content:"\f524"}.fa-dice-one:before{content:"\f525"}.fa-dice-six:before{content:"\f526"}.fa-dice-three:before{content:"\f527"}.fa-dice-two:before{content:"\f528"}.fa-digg:before{content:"\f1a6"}.fa-digital-ocean:before{content:"\f391"}.fa-digital-tachograph:before{content:"\f566"}.fa-directions:before{content:"\f5eb"}.fa-discord:before{content:"\f392"}.fa-discourse:before{content:"\f393"}.fa-divide:before{content:"\f529"}.fa-dizzy:before{content:"\f567"}.fa-dna:before{content:"\f471"}.fa-dochub:before{content:"\f394"}.fa-docker:before{content:"\f395"}.fa-dog:before{content:"\f6d3"}.fa-dollar-sign:before{content:"\f155"}.fa-dolly:before{content:"\f472"}.fa-dolly-flatbed:before{content:"\f474"}.fa-donate:before{content:"\f4b9"}.fa-door-closed:before{content:"\f52a"}.fa-door-open:before{content:"\f52b"}.fa-dot-circle:before{content:"\f192"}.fa-dove:before{content:"\f4ba"}.fa-download:before{content:"\f019"}.fa-draft2digital:before{content:"\f396"}.fa-drafting-compass:before{content:"\f568"}.fa-dragon:before{content:"\f6d5"}.fa-draw-polygon:before{content:"\f5ee"}.fa-dribbble:before{content:"\f17d"}.fa-dribbble-square:before{content:"\f397"}.fa-dropbox:before{content:"\f16b"}.fa-drum:before{content:"\f569"}.fa-drum-steelpan:before{content:"\f56a"}.fa-drumstick-bite:before{content:"\f6d7"}.fa-drupal:before{content:"\f1a9"}.fa-dumbbell:before{content:"\f44b"}.fa-dumpster:before{content:"\f793"}.fa-dumpster-fire:before{content:"\f794"}.fa-dungeon:before{content:"\f6d9"}.fa-dyalog:before{content:"\f399"}.fa-earlybirds:before{content:"\f39a"}.fa-ebay:before{content:"\f4f4"}.fa-edge:before{content:"\f282"}.fa-edit:before{content:"\f044"}.fa-egg:before{content:"\f7fb"}.fa-eject:before{content:"\f052"}.fa-elementor:before{content:"\f430"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-ello:before{content:"\f5f1"}.fa-ember:before{content:"\f423"}.fa-empire:before{content:"\f1d1"}.fa-envelope:before{content:"\f0e0"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-text:before{content:"\f658"}.fa-envelope-square:before{content:"\f199"}.fa-envira:before{content:"\f299"}.fa-equals:before{content:"\f52c"}.fa-eraser:before{content:"\f12d"}.fa-erlang:before{content:"\f39d"}.fa-ethereum:before{content:"\f42e"}.fa-ethernet:before{content:"\f796"}.fa-etsy:before{content:"\f2d7"}.fa-euro-sign:before{content:"\f153"}.fa-evernote:before{content:"\f839"}.fa-exchange-alt:before{content:"\f362"}.fa-exclamation:before{content:"\f12a"}.fa-exclamation-circle:before{content:"\f06a"}.fa-exclamation-triangle:before{content:"\f071"}.fa-expand:before{content:"\f065"}.fa-expand-arrows-alt:before{content:"\f31e"}.fa-expeditedssl:before{content:"\f23e"}.fa-external-link-alt:before{content:"\f35d"}.fa-external-link-square-alt:before{content:"\f360"}.fa-eye:before{content:"\f06e"}.fa-eye-dropper:before{content:"\f1fb"}.fa-eye-slash:before{content:"\f070"}.fa-facebook:before{content:"\f09a"}.fa-facebook-f:before{content:"\f39e"}.fa-facebook-messenger:before{content:"\f39f"}.fa-facebook-square:before{content:"\f082"}.fa-fan:before{content:"\f863"}.fa-fantasy-flight-games:before{content:"\f6dc"}.fa-fast-backward:before{content:"\f049"}.fa-fast-forward:before{content:"\f050"}.fa-fax:before{content:"\f1ac"}.fa-feather:before{content:"\f52d"}.fa-feather-alt:before{content:"\f56b"}.fa-fedex:before{content:"\f797"}.fa-fedora:before{content:"\f798"}.fa-female:before{content:"\f182"}.fa-fighter-jet:before{content:"\f0fb"}.fa-figma:before{content:"\f799"}.fa-file:before{content:"\f15b"}.fa-file-alt:before{content:"\f15c"}.fa-file-archive:before{content:"\f1c6"}.fa-file-audio:before{content:"\f1c7"}.fa-file-code:before{content:"\f1c9"}.fa-file-contract:before{content:"\f56c"}.fa-file-csv:before{content:"\f6dd"}.fa-file-download:before{content:"\f56d"}.fa-file-excel:before{content:"\f1c3"}.fa-file-export:before{content:"\f56e"}.fa-file-image:before{content:"\f1c5"}.fa-file-import:before{content:"\f56f"}.fa-file-invoice:before{content:"\f570"}.fa-file-invoice-dollar:before{content:"\f571"}.fa-file-medical:before{content:"\f477"}.fa-file-medical-alt:before{content:"\f478"}.fa-file-pdf:before{content:"\f1c1"}.fa-file-powerpoint:before{content:"\f1c4"}.fa-file-prescription:before{content:"\f572"}.fa-file-signature:before{content:"\f573"}.fa-file-upload:before{content:"\f574"}.fa-file-video:before{content:"\f1c8"}.fa-file-word:before{content:"\f1c2"}.fa-fill:before{content:"\f575"}.fa-fill-drip:before{content:"\f576"}.fa-film:before{content:"\f008"}.fa-filter:before{content:"\f0b0"}.fa-fingerprint:before{content:"\f577"}.fa-fire:before{content:"\f06d"}.fa-fire-alt:before{content:"\f7e4"}.fa-fire-extinguisher:before{content:"\f134"}.fa-firefox:before{content:"\f269"}.fa-first-aid:before{content:"\f479"}.fa-first-order:before{content:"\f2b0"}.fa-first-order-alt:before{content:"\f50a"}.fa-firstdraft:before{content:"\f3a1"}.fa-fish:before{content:"\f578"}.fa-fist-raised:before{content:"\f6de"}.fa-flag:before{content:"\f024"}.fa-flag-checkered:before{content:"\f11e"}.fa-flag-usa:before{content:"\f74d"}.fa-flask:before{content:"\f0c3"}.fa-flickr:before{content:"\f16e"}.fa-flipboard:before{content:"\f44d"}.fa-flushed:before{content:"\f579"}.fa-fly:before{content:"\f417"}.fa-folder:before{content:"\f07b"}.fa-folder-minus:before{content:"\f65d"}.fa-folder-open:before{content:"\f07c"}.fa-folder-plus:before{content:"\f65e"}.fa-font:before{content:"\f031"}.fa-font-awesome:before{content:"\f2b4"}.fa-font-awesome-alt:before{content:"\f35c"}.fa-font-awesome-flag:before{content:"\f425"}.fa-font-awesome-logo-full:before{content:"\f4e6"}.fa-fonticons:before{content:"\f280"}.fa-fonticons-fi:before{content:"\f3a2"}.fa-football-ball:before{content:"\f44e"}.fa-fort-awesome:before{content:"\f286"}.fa-fort-awesome-alt:before{content:"\f3a3"}.fa-forumbee:before{content:"\f211"}.fa-forward:before{content:"\f04e"}.fa-foursquare:before{content:"\f180"}.fa-free-code-camp:before{content:"\f2c5"}.fa-freebsd:before{content:"\f3a4"}.fa-frog:before{content:"\f52e"}.fa-frown:before{content:"\f119"}.fa-frown-open:before{content:"\f57a"}.fa-fulcrum:before{content:"\f50b"}.fa-funnel-dollar:before{content:"\f662"}.fa-futbol:before{content:"\f1e3"}.fa-galactic-republic:before{content:"\f50c"}.fa-galactic-senate:before{content:"\f50d"}.fa-gamepad:before{content:"\f11b"}.fa-gas-pump:before{content:"\f52f"}.fa-gavel:before{content:"\f0e3"}.fa-gem:before{content:"\f3a5"}.fa-genderless:before{content:"\f22d"}.fa-get-pocket:before{content:"\f265"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-ghost:before{content:"\f6e2"}.fa-gift:before{content:"\f06b"}.fa-gifts:before{content:"\f79c"}.fa-git:before{content:"\f1d3"}.fa-git-alt:before{content:"\f841"}.fa-git-square:before{content:"\f1d2"}.fa-github:before{content:"\f09b"}.fa-github-alt:before{content:"\f113"}.fa-github-square:before{content:"\f092"}.fa-gitkraken:before{content:"\f3a6"}.fa-gitlab:before{content:"\f296"}.fa-gitter:before{content:"\f426"}.fa-glass-cheers:before{content:"\f79f"}.fa-glass-martini:before{content:"\f000"}.fa-glass-martini-alt:before{content:"\f57b"}.fa-glass-whiskey:before{content:"\f7a0"}.fa-glasses:before{content:"\f530"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-globe:before{content:"\f0ac"}.fa-globe-africa:before{content:"\f57c"}.fa-globe-americas:before{content:"\f57d"}.fa-globe-asia:before{content:"\f57e"}.fa-globe-europe:before{content:"\f7a2"}.fa-gofore:before{content:"\f3a7"}.fa-golf-ball:before{content:"\f450"}.fa-goodreads:before{content:"\f3a8"}.fa-goodreads-g:before{content:"\f3a9"}.fa-google:before{content:"\f1a0"}.fa-google-drive:before{content:"\f3aa"}.fa-google-play:before{content:"\f3ab"}.fa-google-plus:before{content:"\f2b3"}.fa-google-plus-g:before{content:"\f0d5"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-wallet:before{content:"\f1ee"}.fa-gopuram:before{content:"\f664"}.fa-graduation-cap:before{content:"\f19d"}.fa-gratipay:before{content:"\f184"}.fa-grav:before{content:"\f2d6"}.fa-greater-than:before{content:"\f531"}.fa-greater-than-equal:before{content:"\f532"}.fa-grimace:before{content:"\f57f"}.fa-grin:before{content:"\f580"}.fa-grin-alt:before{content:"\f581"}.fa-grin-beam:before{content:"\f582"}.fa-grin-beam-sweat:before{content:"\f583"}.fa-grin-hearts:before{content:"\f584"}.fa-grin-squint:before{content:"\f585"}.fa-grin-squint-tears:before{content:"\f586"}.fa-grin-stars:before{content:"\f587"}.fa-grin-tears:before{content:"\f588"}.fa-grin-tongue:before{content:"\f589"}.fa-grin-tongue-squint:before{content:"\f58a"}.fa-grin-tongue-wink:before{content:"\f58b"}.fa-grin-wink:before{content:"\f58c"}.fa-grip-horizontal:before{content:"\f58d"}.fa-grip-lines:before{content:"\f7a4"}.fa-grip-lines-vertical:before{content:"\f7a5"}.fa-grip-vertical:before{content:"\f58e"}.fa-gripfire:before{content:"\f3ac"}.fa-grunt:before{content:"\f3ad"}.fa-guitar:before{content:"\f7a6"}.fa-gulp:before{content:"\f3ae"}.fa-h-square:before{content:"\f0fd"}.fa-hacker-news:before{content:"\f1d4"}.fa-hacker-news-square:before{content:"\f3af"}.fa-hackerrank:before{content:"\f5f7"}.fa-hamburger:before{content:"\f805"}.fa-hammer:before{content:"\f6e3"}.fa-hamsa:before{content:"\f665"}.fa-hand-holding:before{content:"\f4bd"}.fa-hand-holding-heart:before{content:"\f4be"}.fa-hand-holding-usd:before{content:"\f4c0"}.fa-hand-lizard:before{content:"\f258"}.fa-hand-middle-finger:before{content:"\f806"}.fa-hand-paper:before{content:"\f256"}.fa-hand-peace:before{content:"\f25b"}.fa-hand-point-down:before{content:"\f0a7"}.fa-hand-point-left:before{content:"\f0a5"}.fa-hand-point-right:before{content:"\f0a4"}.fa-hand-point-up:before{content:"\f0a6"}.fa-hand-pointer:before{content:"\f25a"}.fa-hand-rock:before{content:"\f255"}.fa-hand-scissors:before{content:"\f257"}.fa-hand-spock:before{content:"\f259"}.fa-hands:before{content:"\f4c2"}.fa-hands-helping:before{content:"\f4c4"}.fa-handshake:before{content:"\f2b5"}.fa-hanukiah:before{content:"\f6e6"}.fa-hard-hat:before{content:"\f807"}.fa-hashtag:before{content:"\f292"}.fa-hat-wizard:before{content:"\f6e8"}.fa-haykal:before{content:"\f666"}.fa-hdd:before{content:"\f0a0"}.fa-heading:before{content:"\f1dc"}.fa-headphones:before{content:"\f025"}.fa-headphones-alt:before{content:"\f58f"}.fa-headset:before{content:"\f590"}.fa-heart:before{content:"\f004"}.fa-heart-broken:before{content:"\f7a9"}.fa-heartbeat:before{content:"\f21e"}.fa-helicopter:before{content:"\f533"}.fa-highlighter:before{content:"\f591"}.fa-hiking:before{content:"\f6ec"}.fa-hippo:before{content:"\f6ed"}.fa-hips:before{content:"\f452"}.fa-hire-a-helper:before{content:"\f3b0"}.fa-history:before{content:"\f1da"}.fa-hockey-puck:before{content:"\f453"}.fa-holly-berry:before{content:"\f7aa"}.fa-home:before{content:"\f015"}.fa-hooli:before{content:"\f427"}.fa-hornbill:before{content:"\f592"}.fa-horse:before{content:"\f6f0"}.fa-horse-head:before{content:"\f7ab"}.fa-hospital:before{content:"\f0f8"}.fa-hospital-alt:before{content:"\f47d"}.fa-hospital-symbol:before{content:"\f47e"}.fa-hot-tub:before{content:"\f593"}.fa-hotdog:before{content:"\f80f"}.fa-hotel:before{content:"\f594"}.fa-hotjar:before{content:"\f3b1"}.fa-hourglass:before{content:"\f254"}.fa-hourglass-end:before{content:"\f253"}.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-start:before{content:"\f251"}.fa-house-damage:before{content:"\f6f1"}.fa-houzz:before{content:"\f27c"}.fa-hryvnia:before{content:"\f6f2"}.fa-html5:before{content:"\f13b"}.fa-hubspot:before{content:"\f3b2"}.fa-i-cursor:before{content:"\f246"}.fa-ice-cream:before{content:"\f810"}.fa-icicles:before{content:"\f7ad"}.fa-icons:before{content:"\f86d"}.fa-id-badge:before{content:"\f2c1"}.fa-id-card:before{content:"\f2c2"}.fa-id-card-alt:before{content:"\f47f"}.fa-igloo:before{content:"\f7ae"}.fa-image:before{content:"\f03e"}.fa-images:before{content:"\f302"}.fa-imdb:before{content:"\f2d8"}.fa-inbox:before{content:"\f01c"}.fa-indent:before{content:"\f03c"}.fa-industry:before{content:"\f275"}.fa-infinity:before{content:"\f534"}.fa-info:before{content:"\f129"}.fa-info-circle:before{content:"\f05a"}.fa-instagram:before{content:"\f16d"}.fa-intercom:before{content:"\f7af"}.fa-internet-explorer:before{content:"\f26b"}.fa-invision:before{content:"\f7b0"}.fa-ioxhost:before{content:"\f208"}.fa-italic:before{content:"\f033"}.fa-itch-io:before{content:"\f83a"}.fa-itunes:before{content:"\f3b4"}.fa-itunes-note:before{content:"\f3b5"}.fa-java:before{content:"\f4e4"}.fa-jedi:before{content:"\f669"}.fa-jedi-order:before{content:"\f50e"}.fa-jenkins:before{content:"\f3b6"}.fa-jira:before{content:"\f7b1"}.fa-joget:before{content:"\f3b7"}.fa-joint:before{content:"\f595"}.fa-joomla:before{content:"\f1aa"}.fa-journal-whills:before{content:"\f66a"}.fa-js:before{content:"\f3b8"}.fa-js-square:before{content:"\f3b9"}.fa-jsfiddle:before{content:"\f1cc"}.fa-kaaba:before{content:"\f66b"}.fa-kaggle:before{content:"\f5fa"}.fa-key:before{content:"\f084"}.fa-keybase:before{content:"\f4f5"}.fa-keyboard:before{content:"\f11c"}.fa-keycdn:before{content:"\f3ba"}.fa-khanda:before{content:"\f66d"}.fa-kickstarter:before{content:"\f3bb"}.fa-kickstarter-k:before{content:"\f3bc"}.fa-kiss:before{content:"\f596"}.fa-kiss-beam:before{content:"\f597"}.fa-kiss-wink-heart:before{content:"\f598"}.fa-kiwi-bird:before{content:"\f535"}.fa-korvue:before{content:"\f42f"}.fa-landmark:before{content:"\f66f"}.fa-language:before{content:"\f1ab"}.fa-laptop:before{content:"\f109"}.fa-laptop-code:before{content:"\f5fc"}.fa-laptop-medical:before{content:"\f812"}.fa-laravel:before{content:"\f3bd"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-laugh:before{content:"\f599"}.fa-laugh-beam:before{content:"\f59a"}.fa-laugh-squint:before{content:"\f59b"}.fa-laugh-wink:before{content:"\f59c"}.fa-layer-group:before{content:"\f5fd"}.fa-leaf:before{content:"\f06c"}.fa-leanpub:before{content:"\f212"}.fa-lemon:before{content:"\f094"}.fa-less:before{content:"\f41d"}.fa-less-than:before{content:"\f536"}.fa-less-than-equal:before{content:"\f537"}.fa-level-down-alt:before{content:"\f3be"}.fa-level-up-alt:before{content:"\f3bf"}.fa-life-ring:before{content:"\f1cd"}.fa-lightbulb:before{content:"\f0eb"}.fa-line:before{content:"\f3c0"}.fa-link:before{content:"\f0c1"}.fa-linkedin:before{content:"\f08c"}.fa-linkedin-in:before{content:"\f0e1"}.fa-linode:before{content:"\f2b8"}.fa-linux:before{content:"\f17c"}.fa-lira-sign:before{content:"\f195"}.fa-list:before{content:"\f03a"}.fa-list-alt:before{content:"\f022"}.fa-list-ol:before{content:"\f0cb"}.fa-list-ul:before{content:"\f0ca"}.fa-location-arrow:before{content:"\f124"}.fa-lock:before{content:"\f023"}.fa-lock-open:before{content:"\f3c1"}.fa-long-arrow-alt-down:before{content:"\f309"}.fa-long-arrow-alt-left:before{content:"\f30a"}.fa-long-arrow-alt-right:before{content:"\f30b"}.fa-long-arrow-alt-up:before{content:"\f30c"}.fa-low-vision:before{content:"\f2a8"}.fa-luggage-cart:before{content:"\f59d"}.fa-lyft:before{content:"\f3c3"}.fa-magento:before{content:"\f3c4"}.fa-magic:before{content:"\f0d0"}.fa-magnet:before{content:"\f076"}.fa-mail-bulk:before{content:"\f674"}.fa-mailchimp:before{content:"\f59e"}.fa-male:before{content:"\f183"}.fa-mandalorian:before{content:"\f50f"}.fa-map:before{content:"\f279"}.fa-map-marked:before{content:"\f59f"}.fa-map-marked-alt:before{content:"\f5a0"}.fa-map-marker:before{content:"\f041"}.fa-map-marker-alt:before{content:"\f3c5"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-markdown:before{content:"\f60f"}.fa-marker:before{content:"\f5a1"}.fa-mars:before{content:"\f222"}.fa-mars-double:before{content:"\f227"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mask:before{content:"\f6fa"}.fa-mastodon:before{content:"\f4f6"}.fa-maxcdn:before{content:"\f136"}.fa-medal:before{content:"\f5a2"}.fa-medapps:before{content:"\f3c6"}.fa-medium:before{content:"\f23a"}.fa-medium-m:before{content:"\f3c7"}.fa-medkit:before{content:"\f0fa"}.fa-medrt:before{content:"\f3c8"}.fa-meetup:before{content:"\f2e0"}.fa-megaport:before{content:"\f5a3"}.fa-meh:before{content:"\f11a"}.fa-meh-blank:before{content:"\f5a4"}.fa-meh-rolling-eyes:before{content:"\f5a5"}.fa-memory:before{content:"\f538"}.fa-mendeley:before{content:"\f7b3"}.fa-menorah:before{content:"\f676"}.fa-mercury:before{content:"\f223"}.fa-meteor:before{content:"\f753"}.fa-microchip:before{content:"\f2db"}.fa-microphone:before{content:"\f130"}.fa-microphone-alt:before{content:"\f3c9"}.fa-microphone-alt-slash:before{content:"\f539"}.fa-microphone-slash:before{content:"\f131"}.fa-microscope:before{content:"\f610"}.fa-microsoft:before{content:"\f3ca"}.fa-minus:before{content:"\f068"}.fa-minus-circle:before{content:"\f056"}.fa-minus-square:before{content:"\f146"}.fa-mitten:before{content:"\f7b5"}.fa-mix:before{content:"\f3cb"}.fa-mixcloud:before{content:"\f289"}.fa-mizuni:before{content:"\f3cc"}.fa-mobile:before{content:"\f10b"}.fa-mobile-alt:before{content:"\f3cd"}.fa-modx:before{content:"\f285"}.fa-monero:before{content:"\f3d0"}.fa-money-bill:before{content:"\f0d6"}.fa-money-bill-alt:before{content:"\f3d1"}.fa-money-bill-wave:before{content:"\f53a"}.fa-money-bill-wave-alt:before{content:"\f53b"}.fa-money-check:before{content:"\f53c"}.fa-money-check-alt:before{content:"\f53d"}.fa-monument:before{content:"\f5a6"}.fa-moon:before{content:"\f186"}.fa-mortar-pestle:before{content:"\f5a7"}.fa-mosque:before{content:"\f678"}.fa-motorcycle:before{content:"\f21c"}.fa-mountain:before{content:"\f6fc"}.fa-mouse-pointer:before{content:"\f245"}.fa-mug-hot:before{content:"\f7b6"}.fa-music:before{content:"\f001"}.fa-napster:before{content:"\f3d2"}.fa-neos:before{content:"\f612"}.fa-network-wired:before{content:"\f6ff"}.fa-neuter:before{content:"\f22c"}.fa-newspaper:before{content:"\f1ea"}.fa-nimblr:before{content:"\f5a8"}.fa-node:before{content:"\f419"}.fa-node-js:before{content:"\f3d3"}.fa-not-equal:before{content:"\f53e"}.fa-notes-medical:before{content:"\f481"}.fa-npm:before{content:"\f3d4"}.fa-ns8:before{content:"\f3d5"}.fa-nutritionix:before{content:"\f3d6"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-oil-can:before{content:"\f613"}.fa-old-republic:before{content:"\f510"}.fa-om:before{content:"\f679"}.fa-opencart:before{content:"\f23d"}.fa-openid:before{content:"\f19b"}.fa-opera:before{content:"\f26a"}.fa-optin-monster:before{content:"\f23c"}.fa-osi:before{content:"\f41a"}.fa-otter:before{content:"\f700"}.fa-outdent:before{content:"\f03b"}.fa-page4:before{content:"\f3d7"}.fa-pagelines:before{content:"\f18c"}.fa-pager:before{content:"\f815"}.fa-paint-brush:before{content:"\f1fc"}.fa-paint-roller:before{content:"\f5aa"}.fa-palette:before{content:"\f53f"}.fa-palfed:before{content:"\f3d8"}.fa-pallet:before{content:"\f482"}.fa-paper-plane:before{content:"\f1d8"}.fa-paperclip:before{content:"\f0c6"}.fa-parachute-box:before{content:"\f4cd"}.fa-paragraph:before{content:"\f1dd"}.fa-parking:before{content:"\f540"}.fa-passport:before{content:"\f5ab"}.fa-pastafarianism:before{content:"\f67b"}.fa-paste:before{content:"\f0ea"}.fa-patreon:before{content:"\f3d9"}.fa-pause:before{content:"\f04c"}.fa-pause-circle:before{content:"\f28b"}.fa-paw:before{content:"\f1b0"}.fa-paypal:before{content:"\f1ed"}.fa-peace:before{content:"\f67c"}.fa-pen:before{content:"\f304"}.fa-pen-alt:before{content:"\f305"}.fa-pen-fancy:before{content:"\f5ac"}.fa-pen-nib:before{content:"\f5ad"}.fa-pen-square:before{content:"\f14b"}.fa-pencil-alt:before{content:"\f303"}.fa-pencil-ruler:before{content:"\f5ae"}.fa-penny-arcade:before{content:"\f704"}.fa-people-carry:before{content:"\f4ce"}.fa-pepper-hot:before{content:"\f816"}.fa-percent:before{content:"\f295"}.fa-percentage:before{content:"\f541"}.fa-periscope:before{content:"\f3da"}.fa-person-booth:before{content:"\f756"}.fa-phabricator:before{content:"\f3db"}.fa-phoenix-framework:before{content:"\f3dc"}.fa-phoenix-squadron:before{content:"\f511"}.fa-phone:before{content:"\f095"}.fa-phone-alt:before{content:"\f879"}.fa-phone-slash:before{content:"\f3dd"}.fa-phone-square:before{content:"\f098"}.fa-phone-square-alt:before{content:"\f87b"}.fa-phone-volume:before{content:"\f2a0"}.fa-photo-video:before{content:"\f87c"}.fa-php:before{content:"\f457"}.fa-pied-piper:before{content:"\f2ae"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-pied-piper-hat:before{content:"\f4e5"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-piggy-bank:before{content:"\f4d3"}.fa-pills:before{content:"\f484"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-p:before{content:"\f231"}.fa-pinterest-square:before{content:"\f0d3"}.fa-pizza-slice:before{content:"\f818"}.fa-place-of-worship:before{content:"\f67f"}.fa-plane:before{content:"\f072"}.fa-plane-arrival:before{content:"\f5af"}.fa-plane-departure:before{content:"\f5b0"}.fa-play:before{content:"\f04b"}.fa-play-circle:before{content:"\f144"}.fa-playstation:before{content:"\f3df"}.fa-plug:before{content:"\f1e6"}.fa-plus:before{content:"\f067"}.fa-plus-circle:before{content:"\f055"}.fa-plus-square:before{content:"\f0fe"}.fa-podcast:before{content:"\f2ce"}.fa-poll:before{content:"\f681"}.fa-poll-h:before{content:"\f682"}.fa-poo:before{content:"\f2fe"}.fa-poo-storm:before{content:"\f75a"}.fa-poop:before{content:"\f619"}.fa-portrait:before{content:"\f3e0"}.fa-pound-sign:before{content:"\f154"}.fa-power-off:before{content:"\f011"}.fa-pray:before{content:"\f683"}.fa-praying-hands:before{content:"\f684"}.fa-prescription:before{content:"\f5b1"}.fa-prescription-bottle:before{content:"\f485"}.fa-prescription-bottle-alt:before{content:"\f486"}.fa-print:before{content:"\f02f"}.fa-procedures:before{content:"\f487"}.fa-product-hunt:before{content:"\f288"}.fa-project-diagram:before{content:"\f542"}.fa-pushed:before{content:"\f3e1"}.fa-puzzle-piece:before{content:"\f12e"}.fa-python:before{content:"\f3e2"}.fa-qq:before{content:"\f1d6"}.fa-qrcode:before{content:"\f029"}.fa-question:before{content:"\f128"}.fa-question-circle:before{content:"\f059"}.fa-quidditch:before{content:"\f458"}.fa-quinscape:before{content:"\f459"}.fa-quora:before{content:"\f2c4"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-quran:before{content:"\f687"}.fa-r-project:before{content:"\f4f7"}.fa-radiation:before{content:"\f7b9"}.fa-radiation-alt:before{content:"\f7ba"}.fa-rainbow:before{content:"\f75b"}.fa-random:before{content:"\f074"}.fa-raspberry-pi:before{content:"\f7bb"}.fa-ravelry:before{content:"\f2d9"}.fa-react:before{content:"\f41b"}.fa-reacteurope:before{content:"\f75d"}.fa-readme:before{content:"\f4d5"}.fa-rebel:before{content:"\f1d0"}.fa-receipt:before{content:"\f543"}.fa-recycle:before{content:"\f1b8"}.fa-red-river:before{content:"\f3e3"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-alien:before{content:"\f281"}.fa-reddit-square:before{content:"\f1a2"}.fa-redhat:before{content:"\f7bc"}.fa-redo:before{content:"\f01e"}.fa-redo-alt:before{content:"\f2f9"}.fa-registered:before{content:"\f25d"}.fa-remove-format:before{content:"\f87d"}.fa-renren:before{content:"\f18b"}.fa-reply:before{content:"\f3e5"}.fa-reply-all:before{content:"\f122"}.fa-replyd:before{content:"\f3e6"}.fa-republican:before{content:"\f75e"}.fa-researchgate:before{content:"\f4f8"}.fa-resolving:before{content:"\f3e7"}.fa-restroom:before{content:"\f7bd"}.fa-retweet:before{content:"\f079"}.fa-rev:before{content:"\f5b2"}.fa-ribbon:before{content:"\f4d6"}.fa-ring:before{content:"\f70b"}.fa-road:before{content:"\f018"}.fa-robot:before{content:"\f544"}.fa-rocket:before{content:"\f135"}.fa-rocketchat:before{content:"\f3e8"}.fa-rockrms:before{content:"\f3e9"}.fa-route:before{content:"\f4d7"}.fa-rss:before{content:"\f09e"}.fa-rss-square:before{content:"\f143"}.fa-ruble-sign:before{content:"\f158"}.fa-ruler:before{content:"\f545"}.fa-ruler-combined:before{content:"\f546"}.fa-ruler-horizontal:before{content:"\f547"}.fa-ruler-vertical:before{content:"\f548"}.fa-running:before{content:"\f70c"}.fa-rupee-sign:before{content:"\f156"}.fa-sad-cry:before{content:"\f5b3"}.fa-sad-tear:before{content:"\f5b4"}.fa-safari:before{content:"\f267"}.fa-salesforce:before{content:"\f83b"}.fa-sass:before{content:"\f41e"}.fa-satellite:before{content:"\f7bf"}.fa-satellite-dish:before{content:"\f7c0"}.fa-save:before{content:"\f0c7"}.fa-schlix:before{content:"\f3ea"}.fa-school:before{content:"\f549"}.fa-screwdriver:before{content:"\f54a"}.fa-scribd:before{content:"\f28a"}.fa-scroll:before{content:"\f70e"}.fa-sd-card:before{content:"\f7c2"}.fa-search:before{content:"\f002"}.fa-search-dollar:before{content:"\f688"}.fa-search-location:before{content:"\f689"}.fa-search-minus:before{content:"\f010"}.fa-search-plus:before{content:"\f00e"}.fa-searchengin:before{content:"\f3eb"}.fa-seedling:before{content:"\f4d8"}.fa-sellcast:before{content:"\f2da"}.fa-sellsy:before{content:"\f213"}.fa-server:before{content:"\f233"}.fa-servicestack:before{content:"\f3ec"}.fa-shapes:before{content:"\f61f"}.fa-share:before{content:"\f064"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-share-square:before{content:"\f14d"}.fa-shekel-sign:before{content:"\f20b"}.fa-shield-alt:before{content:"\f3ed"}.fa-ship:before{content:"\f21a"}.fa-shipping-fast:before{content:"\f48b"}.fa-shirtsinbulk:before{content:"\f214"}.fa-shoe-prints:before{content:"\f54b"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-shopping-cart:before{content:"\f07a"}.fa-shopware:before{content:"\f5b5"}.fa-shower:before{content:"\f2cc"}.fa-shuttle-van:before{content:"\f5b6"}.fa-sign:before{content:"\f4d9"}.fa-sign-in-alt:before{content:"\f2f6"}.fa-sign-language:before{content:"\f2a7"}.fa-sign-out-alt:before{content:"\f2f5"}.fa-signal:before{content:"\f012"}.fa-signature:before{content:"\f5b7"}.fa-sim-card:before{content:"\f7c4"}.fa-simplybuilt:before{content:"\f215"}.fa-sistrix:before{content:"\f3ee"}.fa-sitemap:before{content:"\f0e8"}.fa-sith:before{content:"\f512"}.fa-skating:before{content:"\f7c5"}.fa-sketch:before{content:"\f7c6"}.fa-skiing:before{content:"\f7c9"}.fa-skiing-nordic:before{content:"\f7ca"}.fa-skull:before{content:"\f54c"}.fa-skull-crossbones:before{content:"\f714"}.fa-skyatlas:before{content:"\f216"}.fa-skype:before{content:"\f17e"}.fa-slack:before{content:"\f198"}.fa-slack-hash:before{content:"\f3ef"}.fa-slash:before{content:"\f715"}.fa-sleigh:before{content:"\f7cc"}.fa-sliders-h:before{content:"\f1de"}.fa-slideshare:before{content:"\f1e7"}.fa-smile:before{content:"\f118"}.fa-smile-beam:before{content:"\f5b8"}.fa-smile-wink:before{content:"\f4da"}.fa-smog:before{content:"\f75f"}.fa-smoking:before{content:"\f48d"}.fa-smoking-ban:before{content:"\f54d"}.fa-sms:before{content:"\f7cd"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-snowboarding:before{content:"\f7ce"}.fa-snowflake:before{content:"\f2dc"}.fa-snowman:before{content:"\f7d0"}.fa-snowplow:before{content:"\f7d2"}.fa-socks:before{content:"\f696"}.fa-solar-panel:before{content:"\f5ba"}.fa-sort:before{content:"\f0dc"}.fa-sort-alpha-down:before{content:"\f15d"}.fa-sort-alpha-down-alt:before{content:"\f881"}.fa-sort-alpha-up:before{content:"\f15e"}.fa-sort-alpha-up-alt:before{content:"\f882"}.fa-sort-amount-down:before{content:"\f160"}.fa-sort-amount-down-alt:before{content:"\f884"}.fa-sort-amount-up:before{content:"\f161"}.fa-sort-amount-up-alt:before{content:"\f885"}.fa-sort-down:before{content:"\f0dd"}.fa-sort-numeric-down:before{content:"\f162"}.fa-sort-numeric-down-alt:before{content:"\f886"}.fa-sort-numeric-up:before{content:"\f163"}.fa-sort-numeric-up-alt:before{content:"\f887"}.fa-sort-up:before{content:"\f0de"}.fa-soundcloud:before{content:"\f1be"}.fa-sourcetree:before{content:"\f7d3"}.fa-spa:before{content:"\f5bb"}.fa-space-shuttle:before{content:"\f197"}.fa-speakap:before{content:"\f3f3"}.fa-speaker-deck:before{content:"\f83c"}.fa-spell-check:before{content:"\f891"}.fa-spider:before{content:"\f717"}.fa-spinner:before{content:"\f110"}.fa-splotch:before{content:"\f5bc"}.fa-spotify:before{content:"\f1bc"}.fa-spray-can:before{content:"\f5bd"}.fa-square:before{content:"\f0c8"}.fa-square-full:before{content:"\f45c"}.fa-square-root-alt:before{content:"\f698"}.fa-squarespace:before{content:"\f5be"}.fa-stack-exchange:before{content:"\f18d"}.fa-stack-overflow:before{content:"\f16c"}.fa-stackpath:before{content:"\f842"}.fa-stamp:before{content:"\f5bf"}.fa-star:before{content:"\f005"}.fa-star-and-crescent:before{content:"\f699"}.fa-star-half:before{content:"\f089"}.fa-star-half-alt:before{content:"\f5c0"}.fa-star-of-david:before{content:"\f69a"}.fa-star-of-life:before{content:"\f621"}.fa-staylinked:before{content:"\f3f5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-steam-symbol:before{content:"\f3f6"}.fa-step-backward:before{content:"\f048"}.fa-step-forward:before{content:"\f051"}.fa-stethoscope:before{content:"\f0f1"}.fa-sticker-mule:before{content:"\f3f7"}.fa-sticky-note:before{content:"\f249"}.fa-stop:before{content:"\f04d"}.fa-stop-circle:before{content:"\f28d"}.fa-stopwatch:before{content:"\f2f2"}.fa-store:before{content:"\f54e"}.fa-store-alt:before{content:"\f54f"}.fa-strava:before{content:"\f428"}.fa-stream:before{content:"\f550"}.fa-street-view:before{content:"\f21d"}.fa-strikethrough:before{content:"\f0cc"}.fa-stripe:before{content:"\f429"}.fa-stripe-s:before{content:"\f42a"}.fa-stroopwafel:before{content:"\f551"}.fa-studiovinari:before{content:"\f3f8"}.fa-stumbleupon:before{content:"\f1a4"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-subscript:before{content:"\f12c"}.fa-subway:before{content:"\f239"}.fa-suitcase:before{content:"\f0f2"}.fa-suitcase-rolling:before{content:"\f5c1"}.fa-sun:before{content:"\f185"}.fa-superpowers:before{content:"\f2dd"}.fa-superscript:before{content:"\f12b"}.fa-supple:before{content:"\f3f9"}.fa-surprise:before{content:"\f5c2"}.fa-suse:before{content:"\f7d6"}.fa-swatchbook:before{content:"\f5c3"}.fa-swimmer:before{content:"\f5c4"}.fa-swimming-pool:before{content:"\f5c5"}.fa-symfony:before{content:"\f83d"}.fa-synagogue:before{content:"\f69b"}.fa-sync:before{content:"\f021"}.fa-sync-alt:before{content:"\f2f1"}.fa-syringe:before{content:"\f48e"}.fa-table:before{content:"\f0ce"}.fa-table-tennis:before{content:"\f45d"}.fa-tablet:before{content:"\f10a"}.fa-tablet-alt:before{content:"\f3fa"}.fa-tablets:before{content:"\f490"}.fa-tachometer-alt:before{content:"\f3fd"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-tape:before{content:"\f4db"}.fa-tasks:before{content:"\f0ae"}.fa-taxi:before{content:"\f1ba"}.fa-teamspeak:before{content:"\f4f9"}.fa-teeth:before{content:"\f62e"}.fa-teeth-open:before{content:"\f62f"}.fa-telegram:before{content:"\f2c6"}.fa-telegram-plane:before{content:"\f3fe"}.fa-temperature-high:before{content:"\f769"}.fa-temperature-low:before{content:"\f76b"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-tenge:before{content:"\f7d7"}.fa-terminal:before{content:"\f120"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-th:before{content:"\f00a"}.fa-th-large:before{content:"\f009"}.fa-th-list:before{content:"\f00b"}.fa-the-red-yeti:before{content:"\f69d"}.fa-theater-masks:before{content:"\f630"}.fa-themeco:before{content:"\f5c6"}.fa-themeisle:before{content:"\f2b2"}.fa-thermometer:before{content:"\f491"}.fa-thermometer-empty:before{content:"\f2cb"}.fa-thermometer-full:before{content:"\f2c7"}.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-think-peaks:before{content:"\f731"}.fa-thumbs-down:before{content:"\f165"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbtack:before{content:"\f08d"}.fa-ticket-alt:before{content:"\f3ff"}.fa-times:before{content:"\f00d"}.fa-times-circle:before{content:"\f057"}.fa-tint:before{content:"\f043"}.fa-tint-slash:before{content:"\f5c7"}.fa-tired:before{content:"\f5c8"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-toilet:before{content:"\f7d8"}.fa-toilet-paper:before{content:"\f71e"}.fa-toolbox:before{content:"\f552"}.fa-tools:before{content:"\f7d9"}.fa-tooth:before{content:"\f5c9"}.fa-torah:before{content:"\f6a0"}.fa-torii-gate:before{content:"\f6a1"}.fa-tractor:before{content:"\f722"}.fa-trade-federation:before{content:"\f513"}.fa-trademark:before{content:"\f25c"}.fa-traffic-light:before{content:"\f637"}.fa-train:before{content:"\f238"}.fa-tram:before{content:"\f7da"}.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-trash:before{content:"\f1f8"}.fa-trash-alt:before{content:"\f2ed"}.fa-trash-restore:before{content:"\f829"}.fa-trash-restore-alt:before{content:"\f82a"}.fa-tree:before{content:"\f1bb"}.fa-trello:before{content:"\f181"}.fa-tripadvisor:before{content:"\f262"}.fa-trophy:before{content:"\f091"}.fa-truck:before{content:"\f0d1"}.fa-truck-loading:before{content:"\f4de"}.fa-truck-monster:before{content:"\f63b"}.fa-truck-moving:before{content:"\f4df"}.fa-truck-pickup:before{content:"\f63c"}.fa-tshirt:before{content:"\f553"}.fa-tty:before{content:"\f1e4"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-tv:before{content:"\f26c"}.fa-twitch:before{content:"\f1e8"}.fa-twitter:before{content:"\f099"}.fa-twitter-square:before{content:"\f081"}.fa-typo3:before{content:"\f42b"}.fa-uber:before{content:"\f402"}.fa-ubuntu:before{content:"\f7df"}.fa-uikit:before{content:"\f403"}.fa-umbrella:before{content:"\f0e9"}.fa-umbrella-beach:before{content:"\f5ca"}.fa-underline:before{content:"\f0cd"}.fa-undo:before{content:"\f0e2"}.fa-undo-alt:before{content:"\f2ea"}.fa-uniregistry:before{content:"\f404"}.fa-universal-access:before{content:"\f29a"}.fa-university:before{content:"\f19c"}.fa-unlink:before{content:"\f127"}.fa-unlock:before{content:"\f09c"}.fa-unlock-alt:before{content:"\f13e"}.fa-untappd:before{content:"\f405"}.fa-upload:before{content:"\f093"}.fa-ups:before{content:"\f7e0"}.fa-usb:before{content:"\f287"}.fa-user:before{content:"\f007"}.fa-user-alt:before{content:"\f406"}.fa-user-alt-slash:before{content:"\f4fa"}.fa-user-astronaut:before{content:"\f4fb"}.fa-user-check:before{content:"\f4fc"}.fa-user-circle:before{content:"\f2bd"}.fa-user-clock:before{content:"\f4fd"}.fa-user-cog:before{content:"\f4fe"}.fa-user-edit:before{content:"\f4ff"}.fa-user-friends:before{content:"\f500"}.fa-user-graduate:before{content:"\f501"}.fa-user-injured:before{content:"\f728"}.fa-user-lock:before{content:"\f502"}.fa-user-md:before{content:"\f0f0"}.fa-user-minus:before{content:"\f503"}.fa-user-ninja:before{content:"\f504"}.fa-user-nurse:before{content:"\f82f"}.fa-user-plus:before{content:"\f234"}.fa-user-secret:before{content:"\f21b"}.fa-user-shield:before{content:"\f505"}.fa-user-slash:before{content:"\f506"}.fa-user-tag:before{content:"\f507"}.fa-user-tie:before{content:"\f508"}.fa-user-times:before{content:"\f235"}.fa-users:before{content:"\f0c0"}.fa-users-cog:before{content:"\f509"}.fa-usps:before{content:"\f7e1"}.fa-ussunnah:before{content:"\f407"}.fa-utensil-spoon:before{content:"\f2e5"}.fa-utensils:before{content:"\f2e7"}.fa-vaadin:before{content:"\f408"}.fa-vector-square:before{content:"\f5cb"}.fa-venus:before{content:"\f221"}.fa-venus-double:before{content:"\f226"}.fa-venus-mars:before{content:"\f228"}.fa-viacoin:before{content:"\f237"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-vial:before{content:"\f492"}.fa-vials:before{content:"\f493"}.fa-viber:before{content:"\f409"}.fa-video:before{content:"\f03d"}.fa-video-slash:before{content:"\f4e2"}.fa-vihara:before{content:"\f6a7"}.fa-vimeo:before{content:"\f40a"}.fa-vimeo-square:before{content:"\f194"}.fa-vimeo-v:before{content:"\f27d"}.fa-vine:before{content:"\f1ca"}.fa-vk:before{content:"\f189"}.fa-vnv:before{content:"\f40b"}.fa-voicemail:before{content:"\f897"}.fa-volleyball-ball:before{content:"\f45f"}.fa-volume-down:before{content:"\f027"}.fa-volume-mute:before{content:"\f6a9"}.fa-volume-off:before{content:"\f026"}.fa-volume-up:before{content:"\f028"}.fa-vote-yea:before{content:"\f772"}.fa-vr-cardboard:before{content:"\f729"}.fa-vuejs:before{content:"\f41f"}.fa-walking:before{content:"\f554"}.fa-wallet:before{content:"\f555"}.fa-warehouse:before{content:"\f494"}.fa-water:before{content:"\f773"}.fa-wave-square:before{content:"\f83e"}.fa-waze:before{content:"\f83f"}.fa-weebly:before{content:"\f5cc"}.fa-weibo:before{content:"\f18a"}.fa-weight:before{content:"\f496"}.fa-weight-hanging:before{content:"\f5cd"}.fa-weixin:before{content:"\f1d7"}.fa-whatsapp:before{content:"\f232"}.fa-whatsapp-square:before{content:"\f40c"}.fa-wheelchair:before{content:"\f193"}.fa-whmcs:before{content:"\f40d"}.fa-wifi:before{content:"\f1eb"}.fa-wikipedia-w:before{content:"\f266"}.fa-wind:before{content:"\f72e"}.fa-window-close:before{content:"\f410"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-windows:before{content:"\f17a"}.fa-wine-bottle:before{content:"\f72f"}.fa-wine-glass:before{content:"\f4e3"}.fa-wine-glass-alt:before{content:"\f5ce"}.fa-wix:before{content:"\f5cf"}.fa-wizards-of-the-coast:before{content:"\f730"}.fa-wolf-pack-battalion:before{content:"\f514"}.fa-won-sign:before{content:"\f159"}.fa-wordpress:before{content:"\f19a"}.fa-wordpress-simple:before{content:"\f411"}.fa-wpbeginner:before{content:"\f297"}.fa-wpexplorer:before{content:"\f2de"}.fa-wpforms:before{content:"\f298"}.fa-wpressr:before{content:"\f3e4"}.fa-wrench:before{content:"\f0ad"}.fa-x-ray:before{content:"\f497"}.fa-xbox:before{content:"\f412"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-y-combinator:before{content:"\f23b"}.fa-yahoo:before{content:"\f19e"}.fa-yammer:before{content:"\f840"}.fa-yandex:before{content:"\f413"}.fa-yandex-international:before{content:"\f414"}.fa-yarn:before{content:"\f7e3"}.fa-yelp:before{content:"\f1e9"}.fa-yen-sign:before{content:"\f157"}.fa-yin-yang:before{content:"\f6ad"}.fa-yoast:before{content:"\f2b1"}.fa-youtube:before{content:"\f167"}.fa-youtube-square:before{content:"\f431"}.fa-zhihu:before{content:"\f63f"}.sr-only{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sr-only-focusable:active,.sr-only-focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}@font-face{font-family:"Font Awesome 5 Brands";font-style:normal;font-weight:normal;font-display:auto;src:url(../webfonts/fa-brands-400.eot);src:url(../webfonts/fa-brands-400.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.woff) format("woff"),url(../webfonts/fa-brands-400.ttf) format("truetype"),url(../webfonts/fa-brands-400.svg#fontawesome) format("svg")}.fab{font-family:"Font Awesome 5 Brands"}@font-face{font-family:"Font Awesome 5 Free";font-style:normal;font-weight:400;font-display:auto;src:url(../webfonts/fa-regular-400.eot);src:url(../webfonts/fa-regular-400.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.woff) format("woff"),url(../webfonts/fa-regular-400.ttf) format("truetype"),url(../webfonts/fa-regular-400.svg#fontawesome) format("svg")}.far{font-weight:400}@font-face{font-family:"Font Awesome 5 Free";font-style:normal;font-weight:900;font-display:auto;src:url(../webfonts/fa-solid-900.eot);src:url(../webfonts/fa-solid-900.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.woff) format("woff"),url(../webfonts/fa-solid-900.ttf) format("truetype"),url(../webfonts/fa-solid-900.svg#fontawesome) format("svg")}.fa,.far,.fas{font-family:"Font Awesome 5 Free"}.fa,.fas{font-weight:900} \ No newline at end of file diff --git a/archive/beauty/assets/css/images/overlay.png b/archive/beauty/assets/css/images/overlay.png new file mode 100755 index 0000000..0764509 Binary files /dev/null and b/archive/beauty/assets/css/images/overlay.png differ diff --git a/archive/beauty/assets/css/main.css b/archive/beauty/assets/css/main.css new file mode 100755 index 0000000..478ff1b --- /dev/null +++ b/archive/beauty/assets/css/main.css @@ -0,0 +1,4166 @@ +@import url(fontawesome-all.min.css); +@import url("https://fonts.googleapis.com/css?family=Open+Sans:300,600,300italic,600italic"); + +/* + Catalyst by Pixelarity + pixelarity.com | hello@pixelarity.com + License: pixelarity.com/license +*/ + + +html{ + scroll-behavior: smooth; +} + +html, body, div, span, applet, object, +iframe, h1, h2, h3, h4, h5, h6, p, blockquote, +pre, a, abbr, acronym, address, big, cite, +code, del, dfn, em, img, ins, kbd, q, s, samp, +small, strike, strong, sub, sup, tt, var, b, +u, i, center, dl, dt, dd, ol, ul, li, fieldset, +form, label, legend, table, caption, tbody, +tfoot, thead, tr, th, td, article, aside, +canvas, details, embed, figure, figcaption, +footer, header, hgroup, menu, nav, output, ruby, +section, summary, time, mark, audio, video { + margin: 0; + padding: 0; + border: 0; + font-size: 100%; + font: inherit; + vertical-align: baseline;} + +article, aside, details, figcaption, figure, +footer, header, hgroup, menu, nav, section { + display: block;} + +body { + line-height: 1; + font-family: 'Poppins', sans-serif; +} + +ol, ul { + list-style: none; +} + +blockquote, q { + quotes: none; +} + + blockquote:before, blockquote:after, q:before, q:after { + content: ''; + content: none; + } + +table { + border-collapse: collapse; + border-spacing: 0; +} + +body { + -webkit-text-size-adjust: none; +} + +mark { + background-color: transparent; + color: inherit; +} + +input::-moz-focus-inner { + border: 0; + padding: 0; +} + +input, select, textarea { + -moz-appearance: none; + -webkit-appearance: none; + -ms-appearance: none; + appearance: none; +} + +/* Basic */ + + html { + box-sizing: border-box; + } + + *, *:before, *:after { + box-sizing: inherit; + } + + body { + background: #fff; + } + + body.is-preload *, body.is-preload *:before, body.is-preload *:after { + -moz-animation: none !important; + -webkit-animation: none !important; + -ms-animation: none !important; + animation: none !important; + -moz-transition: none !important; + -webkit-transition: none !important; + -ms-transition: none !important; + transition: none !important; + } + + body, input, select, textarea { + color: #4a4a4a; + background: #000; + font-family: "Poppins", sans-serif; + font-size: 13pt; + font-weight: 300; + line-height: 1.75em; + } + + a { + color: #51c5e8; + text-decoration: underline; + } + + a:hover { + text-decoration: none; + } + + strong, b { + color: #2a2a2a; + font-weight: 600; + } + + em, i { + font-style: italic; + } + + p { + margin: 0 0 2em 0; + } + + h1, h2, h3, h4, h5, h6 { + color: #2a2a2a; + font-weight: 600; + letter-spacing: 0.125em; + line-height: 1em; + margin: 0 0 1em 0; + } + + h1 a, h2 a, h3 a, h4 a, h5 a, h6 a { + color: inherit; + text-decoration: none; + } + + h2 { + font-size: 1.5em; + line-height: 1.75em; + } + + h3 { + font-size: 1.25em; + line-height: 1.5em; + } + + h4 { + font-size: 1.1em; + line-height: 1.5em; + } + + h5 { + font-size: 0.9em; + line-height: 1.5em; + } + + h6 { + font-size: 0.7em; + line-height: 1.5em; + } + + sub { + font-size: 0.8em; + position: relative; + top: 0.5em; + } + + sup { + font-size: 0.8em; + position: relative; + top: -0.5em; + } + + hr { + border: 0; + border-bottom: solid 3px #eee; + margin: 3em 0; + } + + hr.major { + margin: 5em 0; + } + + blockquote { + border-left: solid 8px #eee; + font-style: italic; + margin: 0 0 2em 0; + padding: 0.5em 0 0.5em 2em; + } + + pre { + -webkit-overflow-scrolling: touch; + background: rgba(144, 144, 144, 0.05); + font-family: "Courier New", monospace; + font-size: 0.9em; + line-height: 1.5em; + margin: 0 0 2em 0; + overflow-x: auto; + padding: 1em 1.5em; + } + + code { + background: rgba(144, 144, 144, 0.05); + font-family: "Courier New", monospace; + font-size: 0.9em; + margin: 0 0.25em; + padding: 0.25em 0.65em; + } + + .align-left { + text-align: left; + } + + .align-center { + text-align: center; + } + + .align-right { + text-align: right; + } + +/* Row */ + + .row { + display: flex; + flex-wrap: wrap; + box-sizing: border-box; + align-items: stretch; + } + + .row > * { + box-sizing: border-box; + } + + .row.gtr-uniform > * > :last-child { + margin-bottom: 0; + } + + .row.aln-left { + justify-content: flex-start; + } + + .row.aln-center { + justify-content: center; + } + + .row.aln-right { + justify-content: flex-end; + } + + .row.aln-top { + align-items: flex-start; + } + + .row.aln-middle { + align-items: center; + } + + .row.aln-bottom { + align-items: flex-end; + } + + .row > .imp { + order: -1; + } + + .row > .col-1 { + width: 8.33333%; + } + + .row > .off-1 { + margin-left: 8.33333%; + } + + .row > .col-2 { + width: 16.66667%; + } + + .row > .off-2 { + margin-left: 16.66667%; + } + + .row > .col-3 { + width: 25%; + } + + .row > .off-3 { + margin-left: 25%; + } + + .row > .col-4 { + width: 33.33333%; + } + + .row > .off-4 { + margin-left: 33.33333%; + } + + .row > .col-5 { + width: 41.66667%; + } + + .row > .off-5 { + margin-left: 41.66667%; + } + + .row > .col-6 { + width: 50%; + } + + .row > .off-6 { + margin-left: 50%; + } + + .row > .col-7 { + width: 58.33333%; + } + + .row > .off-7 { + margin-left: 58.33333%; + } + + .row > .col-8 { + width: 66.66667%; + } + + .row > .off-8 { + margin-left: 66.66667%; + } + + .row > .col-9 { + width: 75%; + } + + .row > .off-9 { + margin-left: 75%; + } + + .row > .col-10 { + width: 83.33333%; + } + + .row > .off-10 { + margin-left: 83.33333%; + } + + .row > .col-11 { + width: 91.66667%; + } + + .row > .off-11 { + margin-left: 91.66667%; + } + + .row > .col-12 { + width: 100%; + } + + .row > .off-12 { + margin-left: 100%; + } + + .row.gtr-0 { + margin-top: 0; + margin-left: 0em; + } + + .row.gtr-0 > * { + padding: 0 0 0 0em; + } + + .row.gtr-0.gtr-uniform { + margin-top: 0em; + } + + .row.gtr-0.gtr-uniform > * { + padding-top: 0em; + } + + .row.gtr-25 { + margin-top: 0; + margin-left: -0.75em; + } + + .row.gtr-25 > * { + padding: 0 0 0 0.75em; + } + + .row.gtr-25.gtr-uniform { + margin-top: -0.75em; + } + + .row.gtr-25.gtr-uniform > * { + padding-top: 0.75em; + } + + .row.gtr-50 { + margin-top: 0; + margin-left: -1.5em; + } + + .row.gtr-50 > * { + padding: 0 0 0 1.5em; + } + + .row.gtr-50.gtr-uniform { + margin-top: -1.5em; + } + + .row.gtr-50.gtr-uniform > * { + padding-top: 1.5em; + } + + .row { + margin-top: 0; + margin-left: -3em; + } + + .row > * { + padding: 0 0 0 3em; + } + + .row.gtr-uniform { + margin-top: -3em; + } + + .row.gtr-uniform > * { + padding-top: 3em; + } + + .row.gtr-150 { + margin-top: 0; + margin-left: -4.5em; + } + + .row.gtr-150 > * { + padding: 0 0 0 4.5em; + } + + .row.gtr-150.gtr-uniform { + margin-top: -4.5em; + } + + .row.gtr-150.gtr-uniform > * { + padding-top: 4.5em; + } + + .row.gtr-200 { + margin-top: 0; + margin-left: -6em; + } + + .row.gtr-200 > * { + padding: 0 0 0 6em; + } + + .row.gtr-200.gtr-uniform { + margin-top: -6em; + } + + .row.gtr-200.gtr-uniform > * { + padding-top: 6em; + } + + @media screen and (max-width: 1680px) { + + .row { + display: flex; + flex-wrap: wrap; + box-sizing: border-box; + align-items: stretch; + } + + .row > * { + box-sizing: border-box; + } + + .row.gtr-uniform > * > :last-child { + margin-bottom: 0; + } + + .row.aln-left { + justify-content: flex-start; + } + + .row.aln-center { + justify-content: center; + } + + .row.aln-right { + justify-content: flex-end; + } + + .row.aln-top { + align-items: flex-start; + } + + .row.aln-middle { + align-items: center; + } + + .row.aln-bottom { + align-items: flex-end; + } + + .row > .imp-wide { + order: -1; + } + + .row > .col-1-wide { + width: 8.33333%; + } + + .row > .off-1-wide { + margin-left: 8.33333%; + } + + .row > .col-2-wide { + width: 16.66667%; + } + + .row > .off-2-wide { + margin-left: 16.66667%; + } + + .row > .col-3-wide { + width: 25%; + } + + .row > .off-3-wide { + margin-left: 25%; + } + + .row > .col-4-wide { + width: 33.33333%; + } + + .row > .off-4-wide { + margin-left: 33.33333%; + } + + .row > .col-5-wide { + width: 41.66667%; + } + + .row > .off-5-wide { + margin-left: 41.66667%; + } + + .row > .col-6-wide { + width: 50%; + } + + .row > .off-6-wide { + margin-left: 50%; + } + + .row > .col-7-wide { + width: 58.33333%; + } + + .row > .off-7-wide { + margin-left: 58.33333%; + } + + .row > .col-8-wide { + width: 66.66667%; + } + + .row > .off-8-wide { + margin-left: 66.66667%; + } + + .row > .col-9-wide { + width: 75%; + } + + .row > .off-9-wide { + margin-left: 75%; + } + + .row > .col-10-wide { + width: 83.33333%; + } + + .row > .off-10-wide { + margin-left: 83.33333%; + } + + .row > .col-11-wide { + width: 91.66667%; + } + + .row > .off-11-wide { + margin-left: 91.66667%; + } + + .row > .col-12-wide { + width: 100%; + } + + .row > .off-12-wide { + margin-left: 100%; + } + + .row.gtr-0 { + margin-top: 0; + margin-left: 0em; + } + + .row.gtr-0 > * { + padding: 0 0 0 0em; + } + + .row.gtr-0.gtr-uniform { + margin-top: 0em; + } + + .row.gtr-0.gtr-uniform > * { + padding-top: 0em; + } + + .row.gtr-25 { + margin-top: 0; + margin-left: -0.75em; + } + + .row.gtr-25 > * { + padding: 0 0 0 0.75em; + } + + .row.gtr-25.gtr-uniform { + margin-top: -0.75em; + } + + .row.gtr-25.gtr-uniform > * { + padding-top: 0.75em; + } + + .row.gtr-50 { + margin-top: 0; + margin-left: -1.5em; + } + + .row.gtr-50 > * { + padding: 0 0 0 1.5em; + } + + .row.gtr-50.gtr-uniform { + margin-top: -1.5em; + } + + .row.gtr-50.gtr-uniform > * { + padding-top: 1.5em; + } + + .row { + margin-top: 0; + margin-left: -3em; + } + + .row > * { + padding: 0 0 0 3em; + } + + .row.gtr-uniform { + margin-top: -3em; + } + + .row.gtr-uniform > * { + padding-top: 3em; + } + + .row.gtr-150 { + margin-top: 0; + margin-left: -4.5em; + } + + .row.gtr-150 > * { + padding: 0 0 0 4.5em; + } + + .row.gtr-150.gtr-uniform { + margin-top: -4.5em; + } + + .row.gtr-150.gtr-uniform > * { + padding-top: 4.5em; + } + + .row.gtr-200 { + margin-top: 0; + margin-left: -6em; + } + + .row.gtr-200 > * { + padding: 0 0 0 6em; + } + + .row.gtr-200.gtr-uniform { + margin-top: -6em; + } + + .row.gtr-200.gtr-uniform > * { + padding-top: 6em; + } + + } + + @media screen and (max-width: 1280px) { + + .row { + display: flex; + flex-wrap: wrap; + box-sizing: border-box; + align-items: stretch; + } + + .row > * { + box-sizing: border-box; + } + + .row.gtr-uniform > * > :last-child { + margin-bottom: 0; + } + + .row.aln-left { + justify-content: flex-start; + } + + .row.aln-center { + justify-content: center; + } + + .row.aln-right { + justify-content: flex-end; + } + + .row.aln-top { + align-items: flex-start; + } + + .row.aln-middle { + align-items: center; + } + + .row.aln-bottom { + align-items: flex-end; + } + + .row > .imp-normal { + order: -1; + } + + .row > .col-1-normal { + width: 8.33333%; + } + + .row > .off-1-normal { + margin-left: 8.33333%; + } + + .row > .col-2-normal { + width: 16.66667%; + } + + .row > .off-2-normal { + margin-left: 16.66667%; + } + + .row > .col-3-normal { + width: 25%; + } + + .row > .off-3-normal { + margin-left: 25%; + } + + .row > .col-4-normal { + width: 33.33333%; + } + + .row > .off-4-normal { + margin-left: 33.33333%; + } + + .row > .col-5-normal { + width: 41.66667%; + } + + .row > .off-5-normal { + margin-left: 41.66667%; + } + + .row > .col-6-normal { + width: 50%; + } + + .row > .off-6-normal { + margin-left: 50%; + } + + .row > .col-7-normal { + width: 58.33333%; + } + + .row > .off-7-normal { + margin-left: 58.33333%; + } + + .row > .col-8-normal { + width: 66.66667%; + } + + .row > .off-8-normal { + margin-left: 66.66667%; + } + + .row > .col-9-normal { + width: 75%; + } + + .row > .off-9-normal { + margin-left: 75%; + } + + .row > .col-10-normal { + width: 83.33333%; + } + + .row > .off-10-normal { + margin-left: 83.33333%; + } + + .row > .col-11-normal { + width: 91.66667%; + } + + .row > .off-11-normal { + margin-left: 91.66667%; + } + + .row > .col-12-normal { + width: 100%; + } + + .row > .off-12-normal { + margin-left: 100%; + } + + .row.gtr-0 { + margin-top: 0; + margin-left: 0em; + } + + .row.gtr-0 > * { + padding: 0 0 0 0em; + } + + .row.gtr-0.gtr-uniform { + margin-top: 0em; + } + + .row.gtr-0.gtr-uniform > * { + padding-top: 0em; + } + + .row.gtr-25 { + margin-top: 0; + margin-left: -0.5em; + } + + .row.gtr-25 > * { + padding: 0 0 0 0.5em; + } + + .row.gtr-25.gtr-uniform { + margin-top: -0.5em; + } + + .row.gtr-25.gtr-uniform > * { + padding-top: 0.5em; + } + + .row.gtr-50 { + margin-top: 0; + margin-left: -1em; + } + + .row.gtr-50 > * { + padding: 0 0 0 1em; + } + + .row.gtr-50.gtr-uniform { + margin-top: -1em; + } + + .row.gtr-50.gtr-uniform > * { + padding-top: 1em; + } + + .row { + margin-top: 0; + margin-left: -2em; + } + + .row > * { + padding: 0 0 0 2em; + } + + .row.gtr-uniform { + margin-top: -2em; + } + + .row.gtr-uniform > * { + padding-top: 2em; + } + + .row.gtr-150 { + margin-top: 0; + margin-left: -3em; + } + + .row.gtr-150 > * { + padding: 0 0 0 3em; + } + + .row.gtr-150.gtr-uniform { + margin-top: -3em; + } + + .row.gtr-150.gtr-uniform > * { + padding-top: 3em; + } + + .row.gtr-200 { + margin-top: 0; + margin-left: -4em; + } + + .row.gtr-200 > * { + padding: 0 0 0 4em; + } + + .row.gtr-200.gtr-uniform { + margin-top: -4em; + } + + .row.gtr-200.gtr-uniform > * { + padding-top: 4em; + } + + } + + @media screen and (max-width: 980px) { + + .row { + display: flex; + flex-wrap: wrap; + box-sizing: border-box; + align-items: stretch; + } + + .row > * { + box-sizing: border-box; + } + + .row.gtr-uniform > * > :last-child { + margin-bottom: 0; + } + + .row.aln-left { + justify-content: flex-start; + } + + .row.aln-center { + justify-content: center; + } + + .row.aln-right { + justify-content: flex-end; + } + + .row.aln-top { + align-items: flex-start; + } + + .row.aln-middle { + align-items: center; + } + + .row.aln-bottom { + align-items: flex-end; + } + + .row > .imp-narrow { + order: -1; + } + + .row > .col-1-narrow { + width: 8.33333%; + } + + .row > .off-1-narrow { + margin-left: 8.33333%; + } + + .row > .col-2-narrow { + width: 16.66667%; + } + + .row > .off-2-narrow { + margin-left: 16.66667%; + } + + .row > .col-3-narrow { + width: 25%; + } + + .row > .off-3-narrow { + margin-left: 25%; + } + + .row > .col-4-narrow { + width: 33.33333%; + } + + .row > .off-4-narrow { + margin-left: 33.33333%; + } + + .row > .col-5-narrow { + width: 41.66667%; + } + + .row > .off-5-narrow { + margin-left: 41.66667%; + } + + .row > .col-6-narrow { + width: 50%; + } + + .row > .off-6-narrow { + margin-left: 50%; + } + + .row > .col-7-narrow { + width: 58.33333%; + } + + .row > .off-7-narrow { + margin-left: 58.33333%; + } + + .row > .col-8-narrow { + width: 66.66667%; + } + + .row > .off-8-narrow { + margin-left: 66.66667%; + } + + .row > .col-9-narrow { + width: 75%; + } + + .row > .off-9-narrow { + margin-left: 75%; + } + + .row > .col-10-narrow { + width: 83.33333%; + } + + .row > .off-10-narrow { + margin-left: 83.33333%; + } + + .row > .col-11-narrow { + width: 91.66667%; + } + + .row > .off-11-narrow { + margin-left: 91.66667%; + } + + .row > .col-12-narrow { + width: 100%; + } + + .row > .off-12-narrow { + margin-left: 100%; + } + + .row.gtr-0 { + margin-top: 0; + margin-left: 0em; + } + + .row.gtr-0 > * { + padding: 0 0 0 0em; + } + + .row.gtr-0.gtr-uniform { + margin-top: 0em; + } + + .row.gtr-0.gtr-uniform > * { + padding-top: 0em; + } + + .row.gtr-25 { + margin-top: 0; + margin-left: -0.5em; + } + + .row.gtr-25 > * { + padding: 0 0 0 0.5em; + } + + .row.gtr-25.gtr-uniform { + margin-top: -0.5em; + } + + .row.gtr-25.gtr-uniform > * { + padding-top: 0.5em; + } + + .row.gtr-50 { + margin-top: 0; + margin-left: -1em; + } + + .row.gtr-50 > * { + padding: 0 0 0 1em; + } + + .row.gtr-50.gtr-uniform { + margin-top: -1em; + } + + .row.gtr-50.gtr-uniform > * { + padding-top: 1em; + } + + .row { + margin-top: 0; + margin-left: -2em; + } + + .row > * { + padding: 0 0 0 2em; + } + + .row.gtr-uniform { + margin-top: -2em; + } + + .row.gtr-uniform > * { + padding-top: 2em; + } + + .row.gtr-150 { + margin-top: 0; + margin-left: -3em; + } + + .row.gtr-150 > * { + padding: 0 0 0 3em; + } + + .row.gtr-150.gtr-uniform { + margin-top: -3em; + } + + .row.gtr-150.gtr-uniform > * { + padding-top: 3em; + } + + .row.gtr-200 { + margin-top: 0; + margin-left: -4em; + } + + .row.gtr-200 > * { + padding: 0 0 0 4em; + } + + .row.gtr-200.gtr-uniform { + margin-top: -4em; + } + + .row.gtr-200.gtr-uniform > * { + padding-top: 4em; + } + + } + + @media screen and (max-width: 736px) { + + .row { + display: flex; + flex-wrap: wrap; + box-sizing: border-box; + align-items: stretch; + } + + .row > * { + box-sizing: border-box; + } + + .row.gtr-uniform > * > :last-child { + margin-bottom: 0; + } + + .row.aln-left { + justify-content: flex-start; + } + + .row.aln-center { + justify-content: center; + } + + .row.aln-right { + justify-content: flex-end; + } + + .row.aln-top { + align-items: flex-start; + } + + .row.aln-middle { + align-items: center; + } + + .row.aln-bottom { + align-items: flex-end; + } + + .row > .imp-mobile { + order: -1; + } + + .row > .col-1-mobile { + width: 8.33333%; + } + + .row > .off-1-mobile { + margin-left: 8.33333%; + } + + .row > .col-2-mobile { + width: 16.66667%; + } + + .row > .off-2-mobile { + margin-left: 16.66667%; + } + + .row > .col-3-mobile { + width: 25%; + } + + .row > .off-3-mobile { + margin-left: 25%; + } + + .row > .col-4-mobile { + width: 33.33333%; + } + + .row > .off-4-mobile { + margin-left: 33.33333%; + } + + .row > .col-5-mobile { + width: 41.66667%; + } + + .row > .off-5-mobile { + margin-left: 41.66667%; + } + + .row > .col-6-mobile { + width: 50%; + } + + .row > .off-6-mobile { + margin-left: 50%; + } + + .row > .col-7-mobile { + width: 58.33333%; + } + + .row > .off-7-mobile { + margin-left: 58.33333%; + } + + .row > .col-8-mobile { + width: 66.66667%; + } + + .row > .off-8-mobile { + margin-left: 66.66667%; + } + + .row > .col-9-mobile { + width: 75%; + } + + .row > .off-9-mobile { + margin-left: 75%; + } + + .row > .col-10-mobile { + width: 83.33333%; + } + + .row > .off-10-mobile { + margin-left: 83.33333%; + } + + .row > .col-11-mobile { + width: 91.66667%; + } + + .row > .off-11-mobile { + margin-left: 91.66667%; + } + + .row > .col-12-mobile { + width: 100%; + } + + .row > .off-12-mobile { + margin-left: 100%; + } + + .row.gtr-0 { + margin-top: 0; + margin-left: 0em; + } + + .row.gtr-0 > * { + padding: 0 0 0 0em; + } + + .row.gtr-0.gtr-uniform { + margin-top: 0em; + } + + .row.gtr-0.gtr-uniform > * { + padding-top: 0em; + } + + .row.gtr-25 { + margin-top: 0; + margin-left: -0.5em; + } + + .row.gtr-25 > * { + padding: 0 0 0 0.5em; + } + + .row.gtr-25.gtr-uniform { + margin-top: -0.5em; + } + + .row.gtr-25.gtr-uniform > * { + padding-top: 0.5em; + } + + .row.gtr-50 { + margin-top: 0; + margin-left: -1em; + } + + .row.gtr-50 > * { + padding: 0 0 0 1em; + } + + .row.gtr-50.gtr-uniform { + margin-top: -1em; + } + + .row.gtr-50.gtr-uniform > * { + padding-top: 1em; + } + + .row { + margin-top: 0; + margin-left: -2em; + } + + .row > * { + padding: 0 0 0 2em; + } + + .row.gtr-uniform { + margin-top: -2em; + } + + .row.gtr-uniform > * { + padding-top: 2em; + } + + .row.gtr-150 { + margin-top: 0; + margin-left: -3em; + } + + .row.gtr-150 > * { + padding: 0 0 0 3em; + } + + .row.gtr-150.gtr-uniform { + margin-top: -3em; + } + + .row.gtr-150.gtr-uniform > * { + padding-top: 3em; + } + + .row.gtr-200 { + margin-top: 0; + margin-left: -4em; + } + + .row.gtr-200 > * { + padding: 0 0 0 4em; + } + + .row.gtr-200.gtr-uniform { + margin-top: -4em; + } + + .row.gtr-200.gtr-uniform > * { + padding-top: 4em; + } + + } + + @media screen and (max-width: 480px) { + + .row { + display: flex; + flex-wrap: wrap; + box-sizing: border-box; + align-items: stretch; + } + + .row > * { + box-sizing: border-box; + } + + .row.gtr-uniform > * > :last-child { + margin-bottom: 0; + } + + .row.aln-left { + justify-content: flex-start; + } + + .row.aln-center { + justify-content: center; + } + + .row.aln-right { + justify-content: flex-end; + } + + .row.aln-top { + align-items: flex-start; + } + + .row.aln-middle { + align-items: center; + } + + .row.aln-bottom { + align-items: flex-end; + } + + .row > .imp-mobilep { + order: -1; + } + + .row > .col-1-mobilep { + width: 8.33333%; + } + + .row > .off-1-mobilep { + margin-left: 8.33333%; + } + + .row > .col-2-mobilep { + width: 16.66667%; + } + + .row > .off-2-mobilep { + margin-left: 16.66667%; + } + + .row > .col-3-mobilep { + width: 25%; + } + + .row > .off-3-mobilep { + margin-left: 25%; + } + + .row > .col-4-mobilep { + width: 33.33333%; + } + + .row > .off-4-mobilep { + margin-left: 33.33333%; + } + + .row > .col-5-mobilep { + width: 41.66667%; + } + + .row > .off-5-mobilep { + margin-left: 41.66667%; + } + + .row > .col-6-mobilep { + width: 50%; + } + + .row > .off-6-mobilep { + margin-left: 50%; + } + + .row > .col-7-mobilep { + width: 58.33333%; + } + + .row > .off-7-mobilep { + margin-left: 58.33333%; + } + + .row > .col-8-mobilep { + width: 66.66667%; + } + + .row > .off-8-mobilep { + margin-left: 66.66667%; + } + + .row > .col-9-mobilep { + width: 75%; + } + + .row > .off-9-mobilep { + margin-left: 75%; + } + + .row > .col-10-mobilep { + width: 83.33333%; + } + + .row > .off-10-mobilep { + margin-left: 83.33333%; + } + + .row > .col-11-mobilep { + width: 91.66667%; + } + + .row > .off-11-mobilep { + margin-left: 91.66667%; + } + + .row > .col-12-mobilep { + width: 100%; + } + + .row > .off-12-mobilep { + margin-left: 100%; + } + + .row.gtr-0 { + margin-top: 0; + margin-left: 0em; + } + + .row.gtr-0 > * { + padding: 0 0 0 0em; + } + + .row.gtr-0.gtr-uniform { + margin-top: 0em; + } + + .row.gtr-0.gtr-uniform > * { + padding-top: 0em; + } + + .row.gtr-25 { + margin-top: 0; + margin-left: -0.5em; + } + + .row.gtr-25 > * { + padding: 0 0 0 0.5em; + } + + .row.gtr-25.gtr-uniform { + margin-top: -0.5em; + } + + .row.gtr-25.gtr-uniform > * { + padding-top: 0.5em; + } + + .row.gtr-50 { + margin-top: 0; + margin-left: -1em; + } + + .row.gtr-50 > * { + padding: 0 0 0 1em; + } + + .row.gtr-50.gtr-uniform { + margin-top: -1em; + } + + .row.gtr-50.gtr-uniform > * { + padding-top: 1em; + } + + .row { + margin-top: 0; + margin-left: -2em; + } + + .row > * { + padding: 0 0 0 2em; + } + + .row.gtr-uniform { + margin-top: -2em; + } + + .row.gtr-uniform > * { + padding-top: 2em; + } + + .row.gtr-150 { + margin-top: 0; + margin-left: -3em; + } + + .row.gtr-150 > * { + padding: 0 0 0 3em; + } + + .row.gtr-150.gtr-uniform { + margin-top: -3em; + } + + .row.gtr-150.gtr-uniform > * { + padding-top: 3em; + } + + .row.gtr-200 { + margin-top: 0; + margin-left: -4em; + } + + .row.gtr-200 > * { + padding: 0 0 0 4em; + } + + .row.gtr-200.gtr-uniform { + margin-top: -4em; + } + + .row.gtr-200.gtr-uniform > * { + padding-top: 4em; + } + + } + +/* Container */ + + .container { + margin: 0 auto; + width: 1200px; + } + + .container.medium { + width: 900px; + } + + @media screen and (max-width: 1680px) { + + .container { + width: 1080px; + } + + .container.medium { + width: 810px; + } + + } + + @media screen and (max-width: 1280px) { + + .container { + width: 960px; + } + + .container.medium { + width: 720px; + } + + } + + @media screen and (max-width: 980px) { + + .container { + width: 90%; + } + + .container.medium { + width: 90%; + } + + } + + @media screen and (max-width: 736px) { + + .container { + width: 100%; + } + + .container.medium { + width: 100%; + } + + } + +/* Section/Article */ + + section.special, article.special { + text-align: center; + } + + header.major { + text-align: center; + position: relative; + } + + header.major:after { + background: #888; + content: ''; + display: inline-block; + height: 3px; + margin: 0 0 2em 0; + width: 6em; + } + + header.major.alt { + text-align: center; + margin-bottom: 2em; + } + + header p { + letter-spacing: 0.125em; + margin: 0 0 1.5em 0; + position: relative; + text-transform: uppercase; + } + + header h2 + p { + font-size: 1em; + margin-top: -0.85em; + line-height: 1.75em; + } + + header h3 + p { + font-size: 0.9em; + margin-top: -0.75em; + line-height: 1.75em; + } + + header h4 + p, + header h5 + p, + header h6 + p { + font-size: 0.8em; + margin-top: -0.75em; + line-height: 1.75em; + } + +/* Form */ + + form { + margin: 0 0 2em 0; + } + + label { + color: #2a2a2a; + display: block; + font-size: 0.9em; + font-weight: 600; + margin: 0 0 1em 0; + } + + input[type="text"], + input[type="password"], + input[type="email"], + select, + textarea { + -moz-appearance: none; + -webkit-appearance: none; + -ms-appearance: none; + appearance: none; + border: none; + border: solid 2px #eee; + border-radius: 0; + color: inherit; + display: block; + outline: 0; + padding: 0 1em; + text-decoration: none; + width: 100%; + } + + input[type="text"]:invalid, + input[type="password"]:invalid, + input[type="email"]:invalid, + select:invalid, + textarea:invalid { + box-shadow: none; + } + + input[type="text"]:focus, + input[type="password"]:focus, + input[type="email"]:focus, + select:focus, + textarea:focus { + border-color: #51c5e8; + } + + select { + background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='40' height='40' preserveAspectRatio='none' viewBox='0 0 40 40'%3E%3Cpath d='M9.4,12.3l10.4,10.4l10.4-10.4c0.2-0.2,0.5-0.4,0.9-0.4c0.3,0,0.6,0.1,0.9,0.4l3.3,3.3c0.2,0.2,0.4,0.5,0.4,0.9 c0,0.4-0.1,0.6-0.4,0.9L20.7,31.9c-0.2,0.2-0.5,0.4-0.9,0.4c-0.3,0-0.6-0.1-0.9-0.4L4.3,17.3c-0.2-0.2-0.4-0.5-0.4-0.9 c0-0.4,0.1-0.6,0.4-0.9l3.3-3.3c0.2-0.2,0.5-0.4,0.9-0.4S9.1,12.1,9.4,12.3z' fill='%23eee' /%3E%3C/svg%3E"); + background-size: 1.25em; + background-repeat: no-repeat; + background-position: calc(100% - 1em) center; + height: 3.5em; + padding-right: 3.5em; + text-overflow: ellipsis; + } + + select:focus::-ms-value { + background-color: transparent; + } + + select::-ms-expand { + display: none; + } + + select option { + color: #2a2a2a; + background: #fff; + } + + input[type="text"], + input[type="password"], + input[type="email"], + select { + height: 3.5em; + } + + textarea { + padding: 0.75em 1em; + } + + input[type="checkbox"], + input[type="radio"] { + -moz-appearance: none; + -webkit-appearance: none; + -ms-appearance: none; + appearance: none; + display: block; + float: left; + margin-right: -2em; + opacity: 0; + width: 1em; + z-index: -1; + } + + input[type="checkbox"] + label, + input[type="radio"] + label { + text-decoration: none; + color: #4a4a4a; + cursor: pointer; + display: inline-block; + font-size: 1em; + font-weight: 300; + padding-left: 2.85em; + padding-right: 0.75em; + position: relative; + } + + input[type="checkbox"] + label:before, + input[type="radio"] + label:before { + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + display: inline-block; + font-style: normal; + font-variant: normal; + text-rendering: auto; + line-height: 1; + text-transform: none !important; + font-family: 'Font Awesome 5 Free'; + font-weight: 900; + } + + input[type="checkbox"] + label:before, + input[type="radio"] + label:before { + background: rgba(144, 144, 144, 0.05); + border: solid 2px #eee; + content: ''; + display: inline-block; + font-size: 0.8em; + height: 2.1em; + left: 0; + line-height: 1.925em; + position: absolute; + text-align: center; + top: 0; + width: 2.1em; + } + + input[type="checkbox"]:checked + label:before, + input[type="radio"]:checked + label:before { + background: #1d2726; + border-color: #1d2726; + color: #ffffff; + content: '\f00c'; + } + + input[type="checkbox"]:focus + label:before, + input[type="radio"]:focus + label:before { + border-color: #51c5e8; + } + + input[type="radio"] + label:before { + border-radius: 100%; + } + + ::-webkit-input-placeholder { + color: #bbb !important; + opacity: 1.0; + } + + :-moz-placeholder { + color: #bbb !important; + opacity: 1.0; + } + + ::-moz-placeholder { + color: #bbb !important; + opacity: 1.0; + } + + :-ms-input-placeholder { + color: #bbb !important; + opacity: 1.0; + } + +/* Box */ + + .box { + border: solid 2px #eee; + margin-bottom: 2em; + padding: 1.5em; + } + + .box > :last-child, + .box > :last-child > :last-child, + .box > :last-child > :last-child > :last-child { + margin-bottom: 0; + } + + .box.alt { + border: 0; + padding: 0; + } + +/* Icon */ + + .icon { + text-decoration: none; + border-bottom: none; + position: relative; + } + + .icon:before { + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + display: inline-block; + font-style: normal; + font-variant: normal; + text-rendering: auto; + line-height: 1; + text-transform: none !important; + font-family: 'Font Awesome 5 Free'; + font-weight: 400; + } + + .icon.solid:before { + font-weight: 900; + } + + .icon.brands:before { + font-family: 'Font Awesome 5 Brands'; + } + + .icon > .label { + display: none; + } + +/* Image */ + + .image { + border: 0; + display: inline-block; + position: relative; + } + + .image:before { + background: url("images/overlay.png"); + content: ''; + display: block; + height: 100%; + left: 0; + position: absolute; + top: 0; + width: 100%; + } + + .image img { + display: block; + } + + .image.left { + float: left; + margin: 0 1.5em 1em 0; + top: 0.25em; + } + + .image.right { + float: right; + margin: 0 0 1em 1.5em; + top: 0.25em; + } + + .image.fit { + display: block; + margin: 0 0 3em 0; + width: 100%; + } + + .image.fit img { + display: block; + width: 100%; + } + +/* List */ + + ol { + list-style: decimal; + margin: 0 0 2em 0; + padding-left: 1.25em; + } + + ol li { + padding-left: 0.25em; + } + + ul { + list-style: disc; + margin: 0 0 2em 0; + padding-left: 1em; + } + + ul li { + padding-left: 0.5em; + } + + ul.alt { + list-style: none; + padding-left: 0; + } + + ul.alt li { + border-top: solid 1px #eee; + padding: 0.5em 0; + } + + ul.alt li:first-child { + border-top: 0; + padding-top: 0; + } + + dl { + margin: 0 0 2em 0; + } + +/* Actions */ + + ul.actions { + display: -moz-flex; + display: -webkit-flex; + display: -ms-flex; + display: flex; + cursor: default; + list-style: none; + margin-left: -1em; + padding-left: 0; + } + + ul.actions li { + padding: 0 0 0 1em; + vertical-align: middle; + } + + ul.actions.special { + -moz-justify-content: center; + -webkit-justify-content: center; + -ms-justify-content: center; + justify-content: center; + width: 100%; + margin-left: 0; + } + + ul.actions.special li:first-child { + padding-left: 0; + } + + ul.actions.stacked { + -moz-flex-direction: column; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + margin-left: 0; + } + + ul.actions.stacked li { + padding: 1.3em 0 0 0; + } + + ul.actions.stacked li:first-child { + padding-top: 0; + } + + ul.actions.fit { + width: calc(100% + 1em); + } + + ul.actions.fit li { + -moz-flex-grow: 1; + -webkit-flex-grow: 1; + -ms-flex-grow: 1; + flex-grow: 1; + -moz-flex-shrink: 1; + -webkit-flex-shrink: 1; + -ms-flex-shrink: 1; + flex-shrink: 1; + width: 100%; + } + + ul.actions.fit li > * { + width: 100%; + } + + ul.actions.fit.stacked { + width: 100%; + } + + @media screen and (max-width: 480px) { + + ul.actions:not(.fixed) { + -moz-flex-direction: column; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + margin-left: 0; + width: 100% !important; + } + + ul.actions:not(.fixed) li { + -moz-flex-grow: 1; + -webkit-flex-grow: 1; + -ms-flex-grow: 1; + flex-grow: 1; + -moz-flex-shrink: 1; + -webkit-flex-shrink: 1; + -ms-flex-shrink: 1; + flex-shrink: 1; + padding: 1em 0 0 0; + text-align: center; + width: 100%; + } + + ul.actions:not(.fixed) li > * { + width: 100%; + } + + ul.actions:not(.fixed) li:first-child { + padding-top: 0; + } + + ul.actions:not(.fixed) li input[type="submit"], + ul.actions:not(.fixed) li input[type="reset"], + ul.actions:not(.fixed) li input[type="button"], + ul.actions:not(.fixed) li button, + ul.actions:not(.fixed) li .button { + width: 100%; + } + + ul.actions:not(.fixed) li input[type="submit"].icon:before, + ul.actions:not(.fixed) li input[type="reset"].icon:before, + ul.actions:not(.fixed) li input[type="button"].icon:before, + ul.actions:not(.fixed) li button.icon:before, + ul.actions:not(.fixed) li .button.icon:before { + margin-left: -0.5em; + } + + } + +/* Icons */ + + ul.icons { + cursor: default; + list-style: none; + padding-left: 0; + } + + ul.icons li { + display: inline-block; + padding: 0 1em 0 0; + } + + ul.icons li:last-child { + padding-right: 0; + } + + ul.icons li .icon:before { + font-size: 1.5em; + } + +/* Table */ + + .table-wrapper { + -webkit-overflow-scrolling: touch; + overflow-x: auto; + } + + table { + margin: 0 0 2em 0; + width: 100%; + } + + table tbody tr { + border: solid 1px #eee; + border-left: 0; + border-right: 0; + } + + table tbody tr:nth-child(2n + 1) { + background-color: rgba(144, 144, 144, 0.05); + } + + table td { + padding: 0.75em 0.75em; + } + + table th { + color: #2a2a2a; + font-size: 0.9em; + font-weight: 600; + padding: 0 0.75em 0.75em 0.75em; + text-align: left; + } + + table thead { + border-bottom: solid 2px #eee; + } + + table tfoot { + border-top: solid 2px #eee; + } + + table.alt { + border-collapse: separate; + } + + table.alt tbody tr td { + border: solid 1px #eee; + border-left-width: 0; + border-top-width: 0; + } + + table.alt tbody tr td:first-child { + border-left-width: 1px; + } + + table.alt tbody tr:first-child td { + border-top-width: 1px; + } + + table.alt thead { + border-bottom: 0; + } + + table.alt tfoot { + border-top: 0; + } + +/* Button */ + + input[type="submit"], + input[type="reset"], + input[type="button"], + button, + .button { + -moz-appearance: none; + -webkit-appearance: none; + -ms-appearance: none; + appearance: none; + -moz-transition: background-color 0.2s ease-in-out, color 0.2s ease-in-out; + -webkit-transition: background-color 0.2s ease-in-out, color 0.2s ease-in-out; + -ms-transition: background-color 0.2s ease-in-out, color 0.2s ease-in-out; + transition: background-color 0.2s ease-in-out, color 0.2s ease-in-out; + background-color: #1d2726; + border-radius: 0; + border: 0; + color: #ffffff !important; + cursor: pointer; + display: inline-block; + font-size: 0.9em; + font-weight: 600; + height: 4em; + letter-spacing: 0.125em; + line-height: 4em; + overflow: hidden; + padding: 0 2.75em; + text-align: center; + text-decoration: none; + text-overflow: ellipsis; + text-transform: uppercase; + white-space: nowrap; + } + + input[type="submit"]:hover, + input[type="reset"]:hover, + input[type="button"]:hover, + button:hover, + .button:hover { + background-color: #283634; + } + + input[type="submit"]:active, + input[type="reset"]:active, + input[type="button"]:active, + button:active, + .button:active { + background-color: #121818; + } + + input[type="submit"].icon, + input[type="reset"].icon, + input[type="button"].icon, + button.icon, + .button.icon { + padding-left: 2.35em; + } + + input[type="submit"].icon:before, + input[type="reset"].icon:before, + input[type="button"].icon:before, + button.icon:before, + .button.icon:before { + margin-right: 0.5em; + } + + input[type="submit"].fit, + input[type="reset"].fit, + input[type="button"].fit, + button.fit, + .button.fit { + width: 100%; + } + + input[type="submit"].small, + input[type="reset"].small, + input[type="button"].small, + button.small, + .button.small { + font-size: 0.8em; + height: 3.5em; + line-height: 3.5em; + padding: 0 2em; + } + + input[type="submit"].large, + input[type="reset"].large, + input[type="button"].large, + button.large, + .button.large { + font-size: 1.25em; + height: 3.15em; + line-height: 3.15em; + } + + input[type="submit"].alt, + input[type="reset"].alt, + input[type="button"].alt, + button.alt, + .button.alt { + background-color: transparent; + box-shadow: inset 0 0 0 2px #eee; + color: #2a2a2a !important; + } + + input[type="submit"].alt:hover, + input[type="reset"].alt:hover, + input[type="button"].alt:hover, + button.alt:hover, + .button.alt:hover { + background-color: rgba(144, 144, 144, 0.05); + } + + input[type="submit"].alt:active, + input[type="reset"].alt:active, + input[type="button"].alt:active, + button.alt:active, + .button.alt:active { + background-color: rgba(144, 144, 144, 0.1); + } + + input[type="submit"].alt.icon:before, + input[type="reset"].alt.icon:before, + input[type="button"].alt.icon:before, + button.alt.icon:before, + .button.alt.icon:before { + color: #bbb; + } + + input[type="submit"].primary, + input[type="reset"].primary, + input[type="button"].primary, + button.primary, + .button.primary { + background-color: #51c5e8; + color: #ffffff !important; + } + + input[type="submit"].primary:hover, + input[type="reset"].primary:hover, + input[type="button"].primary:hover, + button.primary:hover, + .button.primary:hover { + background-color: #68cdeb; + } + + input[type="submit"].primary:active, + input[type="reset"].primary:active, + input[type="button"].primary:active, + button.primary:active, + .button.primary:active { + background-color: #3abde5; + } + + input[type="submit"].disabled, input[type="submit"]:disabled, + input[type="reset"].disabled, + input[type="reset"]:disabled, + input[type="button"].disabled, + input[type="button"]:disabled, + button.disabled, + button:disabled, + .button.disabled, + .button:disabled { + background-color: #4a4a4a !important; + box-shadow: inset 0 -0.15em 0 0 rgba(0, 0, 0, 0.15); + color: #fff !important; + cursor: default; + opacity: 0.25; + } + +/* Feature */ + + .feature { + margin: 0 0 2em 0; + padding: 2em 0 2em 9em; + position: relative; + } + + .feature i { + border-radius: 100%; + border: solid 3px #eee; + color: #51c5e8; + display: block; + height: 7em; + left: 0; + line-height: 7.25em; + margin-top: -0.5em; + position: absolute; + text-align: center; + top: 2em; + width: 7em; + } + + .feature i:before { + font-size: 40px; + } + + .feature h3 { + margin-bottom: 0.5em; + } + + .feature p { + margin-bottom: 0; + } + +/* Image Feature */ + + .image-feature { + position: relative; + text-align: center; + margin: 0 0.5em 2em 0.5em; + } + + .image-feature > a { + display: block; + } + + .image-feature header { + background: #fff; + left: 0; + padding: 1.5em 0; + position: absolute; + top: 0; + width: 100%; + z-index: 1; + } + + .image-feature header:before { + -moz-transform: rotate(45deg); + -webkit-transform: rotate(45deg); + -ms-transform: rotate(45deg); + transform: rotate(45deg); + background: #fff; + bottom: -0.5em; + content: ''; + display: block; + height: 1em; + left: 50%; + margin-left: -0.5em; + position: absolute; + width: 1em; + } + + .image-feature header h3 { + font-size: 1em; + margin: 0; + } + + .image-feature .image { + margin: 0; + } + + .image-feature p { + margin: 0; + } + + .image-feature footer { + background: #1d2726; + background: rgba(29, 39, 38, 0.9); + bottom: 0; + color: #fff; + left: 0; + padding: 1.5em; + position: absolute; + width: 100%; + z-index: 1; + } + + .image-feature footer input[type="submit"].alt, + .image-feature footer input[type="reset"].alt, + .image-feature footer input[type="button"].alt, + .image-feature footer button.alt, + .image-feature footer .button.alt { + box-shadow: inset 0 0 0 2px rgba(255, 255, 255, 0.25); + color: #fff !important; + } + +/* Wrapper */ + + .wrapper { + padding: 4em 0 4em 0; + } + + .wrapper.style1 { + background: #fff; + color: #888; + } + + .wrapper.style1 h2, .wrapper.style1 h3, .wrapper.style1 strong { + color: #a5705b; + } + + .wrapper.style1 header.major:after { + background: rgba(0, 0, 0, 0.25); + } + + .wrapper.style2 { + background: #ffeee9; + } + + .wrapper.style3 { + background: #f4f4f4; + } + + .wrapper.style4 { + background: #fafafa; + } + +/* Header */ + + +.logo-kep{ + width: 70px; + line-height: 5em; + vertical-align: middle; + margin-left: 5em; +} + +.booktime{ + background-color: #E4AD9C; + color: #000; + margin-left:2em; + padding-left: 10px; + padding-right: 10px; +} + + #page-wrapper { + padding-top: 3em; + } + + #header { + background: #fff; + color: #000; + cursor: default; + height: 5em; + left: 0; + line-height: 5em; + position: fixed; + top: 0; + width: 100%; + z-index: 10000; + } + + #header h1 { + color: #E4AD9C; + height: inherit; + left: 10.5em; + line-height: inherit; + margin: 0; + padding: 0; + position: absolute; + top: 0; + } + + #header h1 a { + font-size: 1em; + } + + #header h1 a:before { + color: #51c5e8; + margin-right: 0.35em; + } + + #header nav { + font-weight: 600; + height: inherit; + letter-spacing: 0.125em; + line-height: inherit; + position: absolute; + right: 1.5em; + text-transform: uppercase; + top: 0; + vertical-align: middle; + } + + #header nav > ul { + list-style: none; + line-height: 4.5em; + margin: 0; + padding-left: 0; + vertical-align: middle; + } + + #header nav > ul > li { + display: inline-block; + margin-left: 2em; + /*padding-left: 0;*/ + } + + #header nav > ul > li.booktime { + margin-right: 2em; + } + + #header nav > ul > li.socialmedia-menu { + color: #fff; + font-size: 30px; + margin: auto 0 auto 0; +} + + + #header nav > ul > li.language { + padding-left: 0; + margin: 0; + font-size: 12px; + color: #888; + -moz-transition: color 0.2s ease-in-out; + -webkit-transition: color 0.2s ease-in-out; + -ms-transition: color 0.2s ease-in-out; + transition: color 0.2s ease-in-out; + } + #header nav > ul > li.language:hover { + color: #fff; + } + + #header nav > ul > li a { + -moz-transition: color 0.2s ease-in-out; + -webkit-transition: color 0.2s ease-in-out; + -ms-transition: color 0.2s ease-in-out; + transition: color 0.2s ease-in-out; + color: #E4AD9C; + display: inline-block; + text-decoration: none; + font-size: 0.8em; + } + + #header nav > ul > li a:before { + margin-right: 0.5em; + /*opacity: 0.5;*/ + } + + #header nav > ul > li a:hover { + color: #a5705b; + } + #header nav > ul > li.booktime a { + color: #fff; + } + + #header nav > ul > li.booktime a:hover { + color: #a5705b; + } + + #header nav > ul > li.active > a { + color: #fff; + } + + #header nav > ul > li:first-child { + margin-left: 0; + } + + #header nav > ul > li input[type="submit"], + #header nav > ul > li input[type="reset"], + #header nav > ul > li input[type="button"], + #header nav > ul > li button, + #header nav > ul > li .button { + font-size: 1em; + height: 2.25em; + line-height: 2.25em; + margin-bottom: 0; + padding: 0 1em; + position: relative; + top: -0.125em; + vertical-align: middle; + } + + #header nav > ul > li > ul { + display: none; + } + + #header .container { + position: relative; + } + + #header .container h1 { + left: 0; + } + + #header .container nav { + right: 0; + } + + .dropotron { + background: #1d2726; + color: #fff; + font-weight: 600; + letter-spacing: 0.125em; + list-style: none; + margin-top: -1em; + min-width: 14em; + padding: 1.25em 0; + text-transform: uppercase; + } + + .dropotron.level-0 { + font-size: 0.8em; + margin-top: 1em; + } + + .dropotron.level-0:before { + -moz-transform: rotate(45deg); + -webkit-transform: rotate(45deg); + -ms-transform: rotate(45deg); + transform: rotate(45deg); + background: #1d2726; + content: ''; + display: block; + height: 1em; + position: absolute; + right: 1.5em; + top: -0.5em; + width: 1em; + } + + .dropotron li > a { + -moz-transition: color 0.2s ease-in-out; + -webkit-transition: color 0.2s ease-in-out; + -ms-transition: color 0.2s ease-in-out; + transition: color 0.2s ease-in-out; + color: #ccc; + display: block; + padding: 0.125em 1.25em; + text-decoration: none; + } + + .dropotron li > a:hover { + color: #fff; + } + + .dropotron li.active > a { + color: #fff; + } + +/* Banner */ + + #banner { + background-color: #fff; + /*background-attachment: scroll, fixed; + background-image: url("images/overlay.png"), url("../../images/banner.jpg"); + background-position: top left, center center; + background-repeat: no-repeat; + background-size: cover; + background-size: auto, cover;*/ + color: #fff; + padding: 0em 0; + position: relative; + text-align: center; + } + + #banner img{ + width: 100%; + } + + #banner:after { + -moz-transition: opacity 1s ease-in-out; + -webkit-transition: opacity 1s ease-in-out; + -ms-transition: opacity 1s ease-in-out; + transition: opacity 1s ease-in-out; + background: #313148; + content: ''; + height: 100%; + left: 0; + opacity: 0; + position: absolute; + top: 0; + width: 100%; + z-index: 1; + } + + #banner :last-child { + margin-bottom: 0; + } + + #banner .inner { + background: #1d2726; + background: rgba(29, 39, 38, 0.9); + display: inline-block; + padding: 3.5em 5em; + position: relative; + z-index: 2; + } + + #banner .inner h2 { + color: inherit; + font-size: 2.5em; + line-height: 1.35em; + margin: 0; + padding: 0; + } + + #banner .inner p { + font-size: 1em; + letter-spacing: 0.125em; + line-height: 2em; + margin: 2em 0 0 0; + padding: 2em 0 0 0; + position: relative; + text-transform: uppercase; + top: -0.25em; + } + + #banner .inner p:before { + background: #888; + background: rgba(255, 255, 255, 0.25); + content: ''; + display: block; + height: 3px; + left: 50%; + margin: 0 0 0 -3em; + position: absolute; + top: 0; + width: 6em; + } + + #banner .inner .actions { + margin-top: 2em; + } + + #banner .inner input[type="submit"].alt, + #banner .inner input[type="reset"].alt, + #banner .inner input[type="button"].alt, + #banner .inner button.alt, + #banner .inner .button.alt { + box-shadow: inset 0 0 0 2px rgba(255, 255, 255, 0.25); + color: #fff !important; + } + + body.is-preload #banner:after { + opacity: 1.0; + } + +/* Mobile booking */ + +#mobil-menu{ + display: none; + background: #E4AD9C; +} + +.mobil-menucont ul { + list-style: none; + font-size: 1em; + line-height: 4.5em; + text-align: center; + margin: 0; + padding-left: 0; + vertical-align: middle; +} + +.mobil-menucont ul li{ + color: #fff; + margin: 0 0.5em; + display: inline; +} + +.mobil-menucont ul li a{ + color: #fff; + text-decoration: none; + } + +.mobil-menucont ul .mobil-menu-book{ + margin-right: 2em; + padding: 0.5em 0.5em; + font-weight: 600; +} + + + @media screen and (max-width: 980px) { + #mobil-menu{ + display: block; + } +} + +/* Main */ + + #main > header.major { + margin: 0 0 2em 0; + text-align: center; + } + + header.major h2{ + font-family: 'Abril Fatface', cursive; + color: #a5705b; + font-size: 50px; + font-weight: 400; + margin-bottom: 0; + } + + + header.major h4{ + font-size: 13px; + color: #888888; + } + +.one-half { + /*float: left;*/ + width: 100%; + padding: 0 0px; + position: relative; + text-align: left; + overflow: hidden; +} + +.prices-category{ + /*font-family: 'Abril Fatface', cursive;*/ + text-align: center; + margin-top: 2em; + margin-bottom: 2em; +} + +.prices-category h4{ + color: #E4AD9C; +} + + +.category-content { + position: relative; + display: inline-block; + width: 100%; + padding-bottom: 15px; + padding-top: 18px; + border-bottom: 1px solid #3d3d3d;} + +.category-text-left { + float: left; +} + +.main-title a { + text-decoration: none; + font-size: 16px; + color: #a5705b; + font-weight: 500; + -webkit-transition: all 0.5s ease; + -moz-transition: all 0.5s ease; + -o-transition: all 0.5s ease; + transition: all 0.5s ease; +} + +.sub-title { + font-size: 13px; + color: #888888; + font-weight: 400; + padding-right: 40px; + letter-spacing: 0.6px; +} + +.category-text-right { + float: right; +} + +.category-content .price { + font-size: 16px; + color: #E4AD9C; + letter-spacing: 0.5px; + font-weight: 600; + display: inline-block; + -webkit-transition: all 0.5s ease; + -moz-transition: all 0.5s ease; + -o-transition: all 0.5s ease; + transition: all 0.5s ease; +} + + +.common-home .box-heading:before, .box.related .box-heading:before { + content: ""; + background: url(../../images/ollo.png) no-repeat scroll; + width: 75px; + height: 65px; + position: absolute; + top: 0; + left: 0; + right: 0; + margin: 0 auto; + display: inline-block; +} + + +/* About Us */ + +#aboutus .container .inner .dolgozo-nev{ + width: 100%; + text-align: center; + margin-bottom: 2em; +} +#aboutus .container .inner hr { + margin: 4em auto 4em auto; + border-bottom: solid 3px #888; + width: 40%; +} + +#aboutus .container .inner .dolgozo-nev .dolgozo-kep{ + width: 150px; + border-radius: 50%; + margin-bottom: 1em; +} + +#aboutus .container .inner .dolgozo-nev h4{ + color: #E4AD9C; +} + +#aboutus .container .inner .dolgozo-nev h4 span{ + color: #888; +} + +.bemutatkozas, .bemutatkozas-dolgozo{ + display: flex; + width: 100%; +} + +.bem-bal, .bem-dolgozo-bal{ + width: 60%; +} + +.bem-bal h4{ + color: #fff; +} + +.bem-bal p{ + text-align: justify; +} + +.bem-dolgozo-bal p{ + text-align: justify; + font-style: italic; + +} + +.bem-jobb{ + width: 40%; + margin-left: 4em; + float: right; +} + +.bem-jobb img{ + width: 100%; +} + +.bem-jobb h4{ + margin-top: 1em; + text-align: center; + color: #E4AD9C; +} + +.bem-jobb h4 span{ + color: #888; +} +.bem-dolgozo-jobb{ + width: 40%; + float: right; + text-align: right; + margin: auto; + +} + +.bem-dolgozo-jobb img{ + opacity: 0.8; + margin-left: 10px; + margin-right: 10ox; + width: 40%; + transition: opacity .25s ease-in-out; + -moz-transition: opacity .25s ease-in-out; + -webkit-transition: opacity .25s ease-in-out; +} + +.bem-dolgozo-jobb img:hover{ + opacity: 1; + +} + + + +/* Treatments - Our Services */ + + #treatments{ + clear: both; + } + + .service-block { + width: 100%; + display: block; + } + + + .service-area .one-third { + + width: 28%; + padding: 0; + overflow: hidden; + } + + .service-area .one-third.service-part1, .service-area .one-third.service-part4 { + width: 30%; + padding: 0; + float: left; + overflow: hidden; + } + + .service-area .one-third.service-part2 { + width: 42%; + /*margin-top:30px; + margin-bottom: 30px;*/ + padding: 0 30px; + float:left; + overflow: hidden; + } + + .service-area .one-third .service img { + -webkit-transform: rotateY(0deg); + -moz-transform: rotateY(0deg); + -ms-transform: rotateY(0deg); + -o-transform: rotateY(0deg); + transform: rotateY(0deg); + transition: all 0.9s ease 0s; + -webkit-transition: all 0.9s ease 0s; + -moz-transition: all 0.9s ease 0s; + -ms-transition: all 0.9s ease 0s; + -o-transition: all 0.9s ease 0s; + max-width: 100%; + } + + .service-area .one-third .service:hover img { + -webkit-transform: rotateY(-180deg); + -moz-transform: rotateY(-180deg); + -ms-transform: rotateY(-180deg); + -o-transform: rotateY(-180deg); + transform: rotateY(-180deg); + transition: all 0.9s ease 0s; + -webkit-transition: all 0.9s ease 0s; + -moz-transition: all 0.9s ease 0s; + -ms-transition: all 0.9s ease 0s; + -o-transition: all 0.9s ease 0s; + } + + + .service-area .one-third .service .service-text .service-icon { + background: url(../../../images/service-icon-rose.png) no-repeat scroll; + float: right; + height: 80px; + border-radius: 50%; + width: 80px; + position: relative; + background-color: #fff; + display: inline-block; + transition: all 0.5s ease 0s; + -webkit-transition: all 0.5s ease 0s; + -moz-transition: all 0.5s ease 0s; + -ms-transition: all 0.5s ease 0s; + -o-transition: all 0.5s ease 0s; + } + + .service .service-text .service-content .main-title { + font-size: 14px; + font-weight: 600; + color: #E4AD9C; + text-transform: capitalize; + letter-spacing: 0.8px; + padding-bottom: 10px; + } + + .service .service-text .service-content .sub-title-serv { + font-size: 13px; + color: #888888; + font-weight: 400; + line-height: 20px; + letter-spacing: 0.6px; + } + + .service-area .one-third .service .service-text .service-content { + margin-right: 100px; + } + + .service-area .one-third .service .service-text { + padding: 0 0px 95px; + text-align: right; + } + + .service-area .one-third .service.service3 .service-text .service-content { + margin-right: 0px; + margin-left: 100px; + } + + .service-area .one-third .service.service3 .service-text { + text-align: left; + } + + + + .service-area .one-third .service.service3 .service-text .service-icon { + float: left; + } + + .service-area .one-third .service .service-text .service-icon.icon1 { + background-position: center -65px; + } + .service-area .one-third .service .service-text:hover .service-icon.icon1 { + background-position:center 22px; + } + .service-area .one-third .service .service-text .service-icon.icon2 { + background-position:center -417px; + } + .service-area .one-third .service .service-text:hover .service-icon.icon2 { + background-position: center -330px; + } + .service-area .one-third .service .service-text .service-icon.icon3 { + background-position:center -765px; + } + .service-area .one-third .service .service-text:hover .service-icon.icon3 { + background-position: center -678px; + } + .service-area .one-third .service.service3 .service-text .service-icon.icon1 { + background-position: center -242px; + } + .service-area .one-third .service.service3 .service-text:hover .service-icon.icon1 { + background-position: center -155px; + } + .service-area .one-third .service.service3 .service-text .service-icon.icon2 { + background-position: center -590px; + } + .service-area .one-third .service.service3 .service-text:hover .service-icon.icon2 { + background-position:center -503px; + } + .service-area .one-third.service-part3 .service .service-text .service-icon.icon3 { + background-position: center -939px; + } + .service-area .one-third.service-part3 .service .service-text:hover .service-icon.icon3 { + background-position:center -852px; + } + .service-area .one-third .service .service-text:hover .service-content .main-title { + color: #a5705b; + } + + + +/* One */ + + #one { + padding-top:10em; + padding-bottom: 5em; + } + + #one p { + font-size: 1.25em; + line-height: 1.75em; + margin: -0.5em 0 0 0; + } + + #one .inner { + display: inline-block; + margin-top: -6em; + padding-right: 6em; + vertical-align: middle; + width: 100%; + } + + #one .device { + border: solid 40px #fff; + border-bottom: 0; + border-radius: 20px; + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; + display: inline-block; + margin-bottom: 0; + position: relative; + vertical-align: middle; + width: 100%; + } + + #one .device:after { + background: #eee; + border-radius: 100%; + content: ''; + height: 10px; + left: 50%; + margin: -23px 0 0 -5px; + position: absolute; + top: 0; + width: 10px; + } + + +/*two */ + + .nyitvatartas .about-content { + position: relative; + display: inline-block; + width: 100%; + padding: 25px 0px 15px; + border-bottom: 1px solid #3d3d3d; + font-size: 16px; + font-weight: 600; + } + + .nyitvatartas .title, .nyitvatartas .time{ + color: #888; + } + + .closed{ + color: rgba(228,173,156,0.6); + } + + .nyitvatartas .about-content .about-text-left { + float: left; + } + + .nyitvatartas .about-content .about-text-right { + float: right; +} + + + +/* Footer */ + +#footer .footer-div{ + display: flex; +} + + +#footer .footer-div .companyname{ + color: #fff; + font-family: 'Abril Fatface', cursive; + font-size: 24px; + margin-bottom: 20px; +} + +#footer .footer-div .companyname span{ + border-bottom: solid 5px #fff; + } + +#footer .footer-div ul{ + margin: 0; + list-style: none; +} + +#footer .footer-logo{ + max-width: 100px; +} + + #footer { + background: #a5705b; + color: #fff; + padding: 2em 0 0 0; + text-align: center; + } + + #footer .icons { + font-size: 24px; + margin: 0 0 1em 0; + padding-left: 0; + } + + #footer .icons li { + margin-top: 0.5em; + font-size: 16px; + padding: 0 1em 0 1em; + } + + #footer .icons li:last-child { + padding-right: 0; + } + + #footer .icons li a { + -moz-transition: color 0.2s ease-in-out; + -webkit-transition: color 0.2s ease-in-out; + -ms-transition: color 0.2s ease-in-out; + transition: color 0.2s ease-in-out; + color: #fff; + } + + #footer .icons li a:hover { + color: #E4AD9C; + } + + .footer-bal{ + margin: 0 10px; + width: 30%; + + } + + .footer-bal .contact-block a{ + text-decoration: none; + color: #fff; +} + + + .footer-jobb{ + width: 60%; + margin:0; + float: left; + } + + .footer-jobb img{ + width: 100%; + margin:0; + } + + + #footer .copyright { + color: #888; + background: #fff; + font-size: 0.9em; + padding: 1em 0 1em 0; + margin: 2em 0 0 0; + } + +/* Wide */ + + @media screen and (max-width: 1680px) { + + /* Basic */ + + body, input, select, textarea { + font-size: 11pt; + } + + } + +/* Normal */ + + @media screen and (max-width: 1280px) { + + /* Basic */ + + body, input, select, textarea { + font-size: 11pt; + } + + /* Feature */ + + .feature { + padding-left: 7em; + } + + .feature i { + height: 5.25em; + line-height: 5.5em; + margin-top: 0; + width: 5.25em; + } + + .feature i:before { + font-size: 32px; + } + + /* Wrapper */ + + .wrapper { + padding: 4em 0 2em 0; + } + + #header nav > ul > li{ + margin-left: 0.5em; + } + + /* Banner */ + + #banner { + background-attachment: scroll; + padding: 0 0; + } + + #banner .inner { + padding: 3em 4em; + } + + #banner .inner h2 { + font-size: 2.25em; + } + + /* Main */ + + #main { + padding: 2em 0; + } + + .service-area .one-third .service .service-text{ + padding: 0 0 45px; + } + + .main-title a {font-size: 14px;} + + .sub-title{font-size:10px;} + + + /* One */ + + #one .inner { + margin-top: -4em; + padding-right: 4em; + } + + #one .device { + border-width: 35px; + } + + #one .device:after { + margin-top: -22px; + } + + } + +/* Narrow */ + + #navPanel, #navButton { + display: none; + } + + @media screen and (max-width: 980px) { + + /* Basic */ + + html, body { + overflow-x: hidden; + } + + body, input, select, textarea { + font-size: 12pt; + } + + h2 { + font-size: 1.25em; + line-height: 1.75em; + } + + h3 { + font-size: 1.1em; + line-height: 1.5em; + } + + h4 { + font-size: 1em; + line-height: 1.5em; + } + + /* Section/Article */ + + section.special, article.special { + text-align: center; + } + + header h2 + p { + font-size: 0.9em; + } + + header h3 + p { + font-size: 0.8em; + } + + header h4 + p, + header h5 + p, + header h6 + p { + font-size: 0.8em; + } + + /* Feature */ + + .feature { + padding-left: 9em; + } + + .feature i { + height: 7em; + line-height: 7.5em; + margin-top: -0.5em; + width: 7em; + } + + .feature i:before { + font-size: 42px; + } + + /* Image Feature */ + + .image-feature .image { + max-height: 30em; + overflow: hidden; + } + + /* Header */ + + #page-wrapper { + padding-top: 0; + } + + #header { + display: none; + } + + /* Banner */ + + #banner { + padding: 0em 0; + } + + #banner .inner { + padding: 3em; + } + + #banner .inner h2 { + font-size: 2em; + } + + + + /* Main */ + + #main > header.major { + margin: 0; + } + + .bem-jobb{margin-left:2em;} + + .bem-bal p, .bem-dolgozo-bal p {font-size:14px; margin: 0 0 0.5em 0;} + + .bem-dolgozo-jobb {width: 30%;} + + .bem-dolgozo-jobb img{width: 70%;} + + header.major h2 {font-size: 36px;} + + + /* One */ + + #one {padding-top: 2em;} + + #one p { + font-size: 1em; + } + + #one .inner { + display: block; + margin: 0 auto; + max-width: 100%; + padding: 0; + text-align: center; + width: 35em; + } + + #one .device { + display: block; + margin: 4em auto 0 auto; + max-width: 100%; + width: 30em; + } + + .service-area .one-third.service-part1{width: 50%; padding-right: 10px;} + .service-area .one-third.service-part2{display: none;} + .service-area .one-third.service-part3{width:50%;padding-left: 10px;} + + .one-half {float: none; width: 100%;} + #footer .footer-div{display:block;} + .footer-bal{width: 100%;} + .footer-jobb{width: 100%; float: none; margin-top:2em;} + + + /* Off-Canvas Navigation */ + + #page-wrapper { + -moz-backface-visibility: hidden; + -webkit-backface-visibility: hidden; + -ms-backface-visibility: hidden; + backface-visibility: hidden; + -moz-transition: -moz-transform 0.5s ease; + -webkit-transition: -webkit-transform 0.5s ease; + -ms-transition: -ms-transform 0.5s ease; + transition: transform 0.5s ease; + padding-bottom: 1px; + } + + #navButton { + -moz-backface-visibility: hidden; + -webkit-backface-visibility: hidden; + -ms-backface-visibility: hidden; + backface-visibility: hidden; + -moz-transition: -moz-transform 0.5s ease; + -webkit-transition: -webkit-transform 0.5s ease; + -ms-transition: -ms-transform 0.5s ease; + transition: transform 0.5s ease; + display: block; + height: 4em; + left: 0; + position: fixed; + top: 0; + width: 6em; + z-index: 10001; + } + + #navButton .toggle { + text-decoration: none; + height: 100%; + left: 0; + position: absolute; + top: 0; + width: 100%; + } + + #navButton .toggle:before { + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + display: inline-block; + font-style: normal; + font-variant: normal; + text-rendering: auto; + line-height: 1; + text-transform: none !important; + font-family: 'Font Awesome 5 Free'; + font-weight: 900; + } + + #navButton .toggle:before { + background: rgba(29, 39, 38, 0.75); + color: #ffffff; + content: '\f0c9'; + display: block; + font-size: 18px; + height: 2.35em; + left: 0.5em; + line-height: 2.35em; + position: absolute; + text-align: center; + top: 0.5em; + width: 3em; + } + + #navPanel { + -moz-backface-visibility: hidden; + -webkit-backface-visibility: hidden; + -ms-backface-visibility: hidden; + backface-visibility: hidden; + -moz-transform: translateX(-275px); + -webkit-transform: translateX(-275px); + -ms-transform: translateX(-275px); + transform: translateX(-275px); + -moz-transition: -moz-transform 0.5s ease; + -webkit-transition: -webkit-transform 0.5s ease; + -ms-transition: -ms-transform 0.5s ease; + transition: transform 0.5s ease; + background-image: -moz-linear-gradient(left, rgba(0,0,0,0) 95%, rgba(0,0,0,0.1)); + background-image: -webkit-linear-gradient(left, rgba(0,0,0,0) 95%, rgba(0,0,0,0.1)); + background-image: -ms-linear-gradient(left, rgba(0,0,0,0) 95%, rgba(0,0,0,0.1)); + background-image: linear-gradient(left, rgba(0,0,0,0) 95%, rgba(0,0,0,0.1)); + display: block; + height: 100%; + left: 0; + overflow-y: auto; + position: fixed; + top: 0; + width: 275px; + z-index: 10002; + background: #1d2726; + color: #c7c9c9; + padding: 0.25em 1.5em; + } + + #navPanel .link { + border-top: solid 1px rgba(255, 255, 255, 0.05); + color: #c7c9c9; + display: block; + font-size: 0.8em; + font-weight: 600; + height: 3.5em; + letter-spacing: 0.125em; + line-height: 3.5em; + text-decoration: none; + text-transform: uppercase; + } + + #navPanel .link:first-child { + border-top: 0; + } + + #navPanel .link.depth-0 { + color: #ffffff; + } + + #navPanel .link .indent-1 { + display: inline-block; + width: 1.25em; + } + + #navPanel .link .indent-2 { + display: inline-block; + width: 2.5em; + } + + #navPanel .link .indent-3 { + display: inline-block; + width: 3.75em; + } + + #navPanel .link .indent-4 { + display: inline-block; + width: 5em; + } + + #navPanel .link .indent-5 { + display: inline-block; + width: 6.25em; + } + + body.navPanel-visible #page-wrapper { + -moz-transform: translateX(275px); + -webkit-transform: translateX(275px); + -ms-transform: translateX(275px); + transform: translateX(275px); + } + + body.navPanel-visible #navButton { + -moz-transform: translateX(275px); + -webkit-transform: translateX(275px); + -ms-transform: translateX(275px); + transform: translateX(275px); + } + + body.navPanel-visible #navPanel { + -moz-transform: translateX(0); + -webkit-transform: translateX(0); + -ms-transform: translateX(0); + transform: translateX(0); + } + + } + +/* Mobile */ + + @media screen and (max-width: 736px) { + + /* Basic */ + + body, input, select, textarea { + font-size: 12pt; + } + + /* Feature */ + + .feature { + margin: 0 auto 2em auto; + max-width: 100%; + padding: 0; + text-align: center; + width: 30em; + } + + .feature i { + left: 0; + margin: 0 auto 2em auto; + position: relative; + top: 0; + } + + /* Image Feature */ + + .image-feature { + margin: 0 auto 2em auto; + max-width: 100%; + width: 25em; + } + + .image-feature .image { + max-height: none; + } + + /* Wrapper */ + + .wrapper { + padding: 2.5em 1.25em 0.5em 1.25em; + } + + /* Banner */ + + #banner { + padding: 6em 0; + } + + #banner .inner { + padding: 2em 2.5em; + width: 100%; + } + + #banner .inner h2 { + font-size: 1.5em; + } + + #banner .inner p { + margin: 1.5em 0 0 0; + padding: 1.5em 0 0 0; + } + + /* One */ + + #one .device { + border-width: 20px; + margin-top: 2em; + max-width: 100%; + width: 25em; + } + + #one .device:after { + height: 8px; + margin: -13px 0 0 -4px; + width: 8px; + } + + } + +/* Mobile (Portrait) */ + + @media screen and (max-width: 480px) { + + #banner{padding:0;} + .service-part2{display: none;} + .one-third{width: 100%;} + .service-area .one-third.service-part1{width: 100%;} + .service-area .one-third.service-part3{width: 100%;} + .service-area .one-third .service .service-text {text-align: center; padding-bottom: 30px;} + .service-area .one-third .service .service-text .service-icon {float: none;} + .service-area .one-third .service .service-text .service-content {margin: 0;} + .service .service-text .service-content .sub-title-serv {padding: 0 20px 0 20px;} + .service-area .one-third .service.service3 .service-text .service-icon {float: none;} + .service-area .one-third .service.service3 .service-text {text-align:center;} + .service-area .one-third .service.service3 .service-text .service-content {margin-left: 0;} + .service-area .one-third {width: 100%;} + + #one{padding-top: 3em;} + + .bemutatkozas{display: block;} + .bem-bal{width: 100%;} + .bem-jobb{width: 100%; margin-bottom: 2em;} + + .bemutatkozas-dolgozo{display: block;} + .bem-dolgozo-bal {width: 100%;} + .bem-dolgozo-jobb {width: 100%; float: none; text-align: center;} + + #czcategorylistblock .czcategorylist-wrapper .category_lists .one-half .category-content {width: 100%; } + .one-half{width:100%; float: none;} + + .category-text-left{float: none;} + .category-text-right {display: block; float: left;} + + #two {margin-bottom: 3em;} + header.major h2 {font-size: 32px;} + + #footer .footer-div {display: block;} + .footer-bal{width:100%;} + .footer-jobb{width:100%; float: none; margin-top:2em;} + + + /* Basic */ + + html, body { + min-width: 320px; + } + + body, input, select, textarea { + font-size: 12pt; + } + + h1 br, h2 br, h3 br, h4 br, h5 br, h6 br { + display: none; + } + + h2 { + font-size: 1.15em; + line-height: 1.75em; + } + + h3 { + font-size: 1em; + line-height: 1.5em; + } + + /* List */ + + ul.actions { + margin: 0 0 2em 0; + } + + ul.actions li { + display: block; + padding: 1em 0 0 0; + text-align: center; + width: 100%; + } + + ul.actions li:first-child { + padding-top: 0; + } + + ul.actions li > * { + margin: 0 !important; + width: 100%; + } + + ul.actions li > *.icon:before { + margin-left: -2em; + } + + ul.actions.small li { + padding: 0.5em 0 0 0; + } + + ul.actions.small li:first-child { + padding-top: 0; + } + + /* Button */ + + input[type="submit"], + input[type="reset"], + input[type="button"], + button, + .button { + padding: 0; + } + + /* One */ + + #one .device { + border-width: 15px; + } + + #one .device:after { + height: 5px; + margin: -10px 0 0 -2.5px; + width: 5px; + } + + } \ No newline at end of file diff --git a/archive/beauty/assets/js/breakpoints.min.js b/archive/beauty/assets/js/breakpoints.min.js new file mode 100755 index 0000000..b4c6416 --- /dev/null +++ b/archive/beauty/assets/js/breakpoints.min.js @@ -0,0 +1,2 @@ +/* breakpoints.js v1.0 | @ajlkn | MIT licensed */ +var breakpoints=function(){"use strict";function e(e){t.init(e)}var t={list:null,media:{},events:[],init:function(e){t.list=e,window.addEventListener("resize",t.poll),window.addEventListener("orientationchange",t.poll),window.addEventListener("load",t.poll),window.addEventListener("fullscreenchange",t.poll)},active:function(e){var n,a,s,i,r,d,c;if(!(e in t.media)){if(">="==e.substr(0,2)?(a="gte",n=e.substr(2)):"<="==e.substr(0,2)?(a="lte",n=e.substr(2)):">"==e.substr(0,1)?(a="gt",n=e.substr(1)):"<"==e.substr(0,1)?(a="lt",n=e.substr(1)):"!"==e.substr(0,1)?(a="not",n=e.substr(1)):(a="eq",n=e),n&&n in t.list)if(i=t.list[n],Array.isArray(i)){if(r=parseInt(i[0]),d=parseInt(i[1]),isNaN(r)){if(isNaN(d))return;c=i[1].substr(String(d).length)}else c=i[0].substr(String(r).length);if(isNaN(r))switch(a){case"gte":s="screen";break;case"lte":s="screen and (max-width: "+d+c+")";break;case"gt":s="screen and (min-width: "+(d+1)+c+")";break;case"lt":s="screen and (max-width: -1px)";break;case"not":s="screen and (min-width: "+(d+1)+c+")";break;default:s="screen and (max-width: "+d+c+")"}else if(isNaN(d))switch(a){case"gte":s="screen and (min-width: "+r+c+")";break;case"lte":s="screen";break;case"gt":s="screen and (max-width: -1px)";break;case"lt":s="screen and (max-width: "+(r-1)+c+")";break;case"not":s="screen and (max-width: "+(r-1)+c+")";break;default:s="screen and (min-width: "+r+c+")"}else switch(a){case"gte":s="screen and (min-width: "+r+c+")";break;case"lte":s="screen and (max-width: "+d+c+")";break;case"gt":s="screen and (min-width: "+(d+1)+c+")";break;case"lt":s="screen and (max-width: "+(r-1)+c+")";break;case"not":s="screen and (max-width: "+(r-1)+c+"), screen and (min-width: "+(d+1)+c+")";break;default:s="screen and (min-width: "+r+c+") and (max-width: "+d+c+")"}}else s="("==i.charAt(0)?"screen and "+i:i;t.media[e]=!!s&&s}return t.media[e]!==!1&&window.matchMedia(t.media[e]).matches},on:function(e,n){t.events.push({query:e,handler:n,state:!1}),t.active(e)&&n()},poll:function(){var e,n;for(e=0;e0:!!("ontouchstart"in window),e.mobile="wp"==e.os||"android"==e.os||"ios"==e.os||"bb"==e.os}};return e.init(),e}();!function(e,n){"function"==typeof define&&define.amd?define([],n):"object"==typeof exports?module.exports=n():e.browser=n()}(this,function(){return browser}); diff --git a/archive/beauty/assets/js/jquery.dropotron.min.js b/archive/beauty/assets/js/jquery.dropotron.min.js new file mode 100755 index 0000000..0ab4cd6 --- /dev/null +++ b/archive/beauty/assets/js/jquery.dropotron.min.js @@ -0,0 +1,2 @@ +/* jquery.dropotron.js v1.4.3 | (c) @ajlkn | github.com/ajlkn/jquery.dropotron | MIT licensed */ +!function(e){e.fn.disableSelection_dropotron=function(){return e(this).css("user-select","none").css("-khtml-user-select","none").css("-moz-user-select","none").css("-o-user-select","none").css("-webkit-user-select","none")},e.fn.dropotron=function(t){if(0==this.length)return e(this);if(this.length>1)for(var o=0;o0&&t.add(n).on("mouseleave",function(e){window.clearTimeout(c),c=window.setTimeout(function(){t.trigger("doCollapse")},o.hideDelay)}),t.disableSelection_dropotron().hide().addClass(o.menuClass).css("position","absolute").on("mouseenter",function(e){window.clearTimeout(c)}).on("doExpand",function(){if(t.is(":visible"))return!1;window.clearTimeout(c),s.each(function(){var t=e(this);e.contains(t.get(0),n.get(0))||t.trigger("doCollapse")});var i,a,d,f,u=n.offset(),p=n.position(),h=(n.parent().position(),n.outerWidth()),g=t.outerWidth(),v=t.css("z-index")==o.baseZIndex;if(v){switch(i=o.detach?u:p,f=i.top+n.outerHeight()+o.globalOffsetY,a=o.alignment,t.removeClass("left").removeClass("right").removeClass("center"),o.alignment){case"right":d=i.left-g+h,0>d&&(d=i.left,a="left");break;case"center":d=i.left-Math.floor((g-h)/2),0>d?(d=i.left,a="left"):d+g>l.width()&&(d=i.left-g+h,a="right");break;case"left":default:d=i.left,d+g>l.width()&&(d=i.left-g+h,a="right")}t.addClass(a)}else switch("relative"==n.css("position")||"absolute"==n.css("position")?(f=o.offsetY,d=-1*p.left):(f=p.top+o.offsetY,d=0),o.alignment){case"right":d+=-1*n.parent().outerWidth()+o.offsetX;break;case"center":case"left":default:d+=n.parent().outerWidth()+o.offsetX}navigator.userAgent.match(/MSIE ([0-9]+)\./)&&RegExp.$1<8&&(d+=o.IEOffsetX,f+=o.IEOffsetY),t.css("left",d+"px").css("top",f+"px").css("opacity","0.01").show();var C=!1;switch(d="relative"==n.css("position")||"absolute"==n.css("position")?-1*p.left:0,t.offset().left<0?(d+=n.parent().outerWidth()-o.offsetX,C=!0):t.offset().left+g>l.width()&&(d+=-1*n.parent().outerWidth()-o.offsetX,C=!0),C&&t.css("left",d+"px"),t.hide().css("opacity","1"),o.mode){case"zoom":r=!0,n.addClass(o.openerActiveClass),t.animate({width:"toggle",height:"toggle"},o.speed,o.easing,function(){r=!1});break;case"slide":r=!0,n.addClass(o.openerActiveClass),t.animate({height:"toggle"},o.speed,o.easing,function(){r=!1});break;case"fade":if(r=!0,v&&!o.noOpenerFade){var C;C="slow"==o.speed?80:"fast"==o.speed?40:Math.floor(o.speed/2),n.fadeTo(C,.01,function(){n.addClass(o.openerActiveClass),n.fadeTo(o.speed,1),t.fadeIn(o.speed,function(){r=!1})})}else n.addClass(o.openerActiveClass),n.fadeTo(o.speed,1),t.fadeIn(o.speed,function(){r=!1});break;case"instant":default:n.addClass(o.openerActiveClass),t.show()}return!1}).on("doCollapse",function(){return t.is(":visible")?(t.hide(),n.removeClass(o.openerActiveClass),t.find("."+o.openerActiveClass).removeClass(o.openerActiveClass),t.find("ul").hide(),!1):!1}).on("doToggle",function(e){return t.is(":visible")?t.trigger("doCollapse"):t.trigger("doExpand"),!1}),n.disableSelection_dropotron().addClass("opener").css("cursor","pointer").on("click touchend",function(e){r||(e.preventDefault(),e.stopPropagation(),t.trigger("doToggle"))}),"hover"==o.expandMode&&n.hover(function(e){r||(d=window.setTimeout(function(){t.trigger("doExpand")},o.hoverDelay))},function(e){window.clearTimeout(d)})}),s.find("a").css("display","block").on("click touchend",function(t){r||e(this).attr("href").length<1&&t.preventDefault()}),n.find("li").css("white-space","nowrap").each(function(){var t=e(this),o=t.children("a"),s=t.children("ul"),i=o.attr("href");o.on("click touchend",function(e){0==i.length||"#"==i?e.preventDefault():e.stopPropagation()}),o.length>0&&0==s.length&&t.on("click touchend",function(e){r||(n.trigger("doCollapseAll"),e.stopPropagation())})}),n.children("li").each(function(){var t,n=e(this),s=n.children("ul");if(s.length>0){o.detach&&(o.cloneOnDetach&&(t=s.clone(),t.attr("class","").hide().appendTo(s.parent())),s.detach().appendTo(i));for(var a=o.baseZIndex,l=1,r=s;r.length>0;l++)r.css("z-index",a++),o.submenuClassPrefix&&r.addClass(o.submenuClassPrefix+(a-1-o.baseZIndex)),r=r.find("> li > ul")}}),l.on("scroll",function(){n.trigger("doCollapseAll")}).on("keypress",function(e){r||27!=e.keyCode||(e.preventDefault(),n.trigger("doCollapseAll"))}),a.on("click touchend",function(){r||n.trigger("doCollapseAll")})}}(jQuery); diff --git a/archive/beauty/assets/js/jquery.min.js b/archive/beauty/assets/js/jquery.min.js new file mode 100755 index 0000000..409c3f4 --- /dev/null +++ b/archive/beauty/assets/js/jquery.min.js @@ -0,0 +1,2 @@ +/*! jQuery v3.4.1 | (c) JS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],E=C.document,r=Object.getPrototypeOf,s=t.slice,g=t.concat,u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.4.1",k=function(e,t){return new k.fn.init(e,t)},p=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function d(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp($),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+$),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(m.childNodes),m.childNodes),t[m.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&((e?e.ownerDocument||e:m)!==C&&T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!A[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&U.test(t)){(s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=k),o=(l=h(t)).length;while(o--)l[o]="#"+s+" "+xe(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){A(t,!0)}finally{s===k&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[k]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:m;return r!==C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),m!==C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=k,!C.getElementsByName||!C.getElementsByName(k).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+k+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",$)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e===C||e.ownerDocument===m&&y(m,e)?-1:t===C||t.ownerDocument===m&&y(m,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===C?-1:t===C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]===m?-1:s[r]===m?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==C&&T(e),d.matchesSelector&&E&&!A[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){A(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=p[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&p(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):"string"!=typeof n?k.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:L.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),D.test(r[1])&&k.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(k):k.makeArray(e,this)}).prototype=k.fn,q=k(E);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?k.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;nx",y.noCloneChecked=!!me.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee=/^([^.]*)(?:\.(.+)|)/;function ke(){return!0}function Se(){return!1}function Ne(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ae(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ae(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return k().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=k.guid++)),e.each(function(){k.event.add(this,t,i,r,n)})}function De(e,i,o){o?(Q.set(e,i,!1),k.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Q.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(k.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Q.set(this,i,r),t=o(this,i),this[i](),r!==(n=Q.get(this,i))||t?Q.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Q.set(this,i,{value:k.event.trigger(k.extend(r[0],k.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Q.get(e,i)&&k.event.add(e,i,ke)}k.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.get(t);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&k.find.matchesSelector(ie,i),n.guid||(n.guid=k.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof k&&k.event.triggered!==e.type?k.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(R)||[""]).length;while(l--)d=g=(s=Ee.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=k.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=k.event.special[d]||{},c=k.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),k.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.hasData(e)&&Q.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(R)||[""]).length;while(l--)if(d=g=(s=Ee.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=k.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||k.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)k.event.remove(e,d+t[l],n,r,!0);k.isEmptyObject(u)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=k.event.fix(e),u=new Array(arguments.length),l=(Q.get(this,"events")||{})[s.type]||[],c=k.event.special[s.type]||{};for(u[0]=s,t=1;t\x20\t\r\n\f]*)[^>]*)\/>/gi,qe=/\s*$/g;function Oe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&k(e).children("tbody")[0]||e}function Pe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Re(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Me(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(Q.hasData(e)&&(o=Q.access(e),a=Q.set(t,o),l=o.events))for(i in delete a.handle,a.events={},l)for(n=0,r=l[i].length;n")},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=oe(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||k.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Vt,Gt=[],Yt=/(=)\?(?=&|$)|\?\?/;k.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Gt.pop()||k.expando+"_"+kt++;return this[e]=!0,e}}),k.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Yt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Yt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Yt,"$1"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||k.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?k(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Gt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Vt=E.implementation.createHTMLDocument("").body).innerHTML="
",2===Vt.childNodes.length),k.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=D.exec(e))?[t.createElement(i[1])]:(i=we([e],t,o),o&&o.length&&k(o).remove(),k.merge([],i.childNodes)));var r,i,o},k.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(k.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},k.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){k.fn[t]=function(e){return this.on(t,e)}}),k.expr.pseudos.animated=function(t){return k.grep(k.timers,function(e){return t===e.elem}).length},k.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=k.css(e,"position"),c=k(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=k.css(e,"top"),u=k.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,k.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},k.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){k.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===k.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===k.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=k(e).offset()).top+=k.css(e,"borderTopWidth",!0),i.left+=k.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-k.css(r,"marginTop",!0),left:t.left-i.left-k.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===k.css(e,"position"))e=e.offsetParent;return e||ie})}}),k.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;k.fn[t]=function(e){return _(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),k.each(["top","left"],function(e,n){k.cssHooks[n]=ze(y.pixelPosition,function(e,t){if(t)return t=_e(e,n),$e.test(t)?k(e).position()[n]+"px":t})}),k.each({Height:"height",Width:"width"},function(a,s){k.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){k.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return _(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?k.css(e,t,i):k.style(e,t,n,i)},s,n?e:void 0,n)}})}),k.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){k.fn[n]=function(e,t){return 0 ul').dropotron({ + alignment: 'right' + }); + + // Nav Panel. + + // Title Bar. + $( + '' + ) + .appendTo($body); + + // Panel. + $( + '' + ) + .appendTo($body) + .panel({ + delay: 500, + hideOnClick: true, + hideOnSwipe: true, + resetScroll: true, + resetForms: true, + side: 'left', + target: $body, + visibleClass: 'navPanel-visible' + }); + + // Banner. + var $banner = $('#banner'); + + if ($banner.length > 0) { + + // Parallax background. + if (browser.name != 'ie' + && browser.name != 'edge' + && !browser.mobile) { + + var originalPosition = $banner.css('background-position'); + + breakpoints.on('<=normal', function() { + + $window.off('scroll.px'); + $banner.css('background-position', originalPosition); + + }); + + breakpoints.on('>normal', function() { + + $banner.css('background-position', 'center 0px'); + + $window.on('scroll.px', function() { + $banner.css('background-position', 'center ' + (parseInt($window.scrollTop()) * -0.5) + 'px'); + }); + + }); + + } + + } + +})(jQuery); \ No newline at end of file diff --git a/archive/beauty/assets/js/skel.min.js b/archive/beauty/assets/js/skel.min.js new file mode 100755 index 0000000..02ab92f --- /dev/null +++ b/archive/beauty/assets/js/skel.min.js @@ -0,0 +1,2 @@ +/* skel.js v3.0.1 | (c) skel.io | MIT licensed */ +var skel=function(){"use strict";var t={breakpointIds:null,events:{},isInit:!1,obj:{attachments:{},breakpoints:{},head:null,states:{}},sd:"/",state:null,stateHandlers:{},stateId:"",vars:{},DOMReady:null,indexOf:null,isArray:null,iterate:null,matchesMedia:null,extend:function(e,n){t.iterate(n,function(i){t.isArray(n[i])?(t.isArray(e[i])||(e[i]=[]),t.extend(e[i],n[i])):"object"==typeof n[i]?("object"!=typeof e[i]&&(e[i]={}),t.extend(e[i],n[i])):e[i]=n[i]})},newStyle:function(t){var e=document.createElement("style");return e.type="text/css",e.innerHTML=t,e},_canUse:null,canUse:function(e){t._canUse||(t._canUse=document.createElement("div"));var n=t._canUse.style,i=e.charAt(0).toUpperCase()+e.slice(1);return e in n||"Moz"+i in n||"Webkit"+i in n||"O"+i in n||"ms"+i in n},on:function(e,n){var i=e.split(/[\s]+/);return t.iterate(i,function(e){var a=i[e];if(t.isInit){if("init"==a)return void n();if("change"==a)n();else{var r=a.charAt(0);if("+"==r||"!"==r){var o=a.substring(1);if(o in t.obj.breakpoints)if("+"==r&&t.obj.breakpoints[o].active)n();else if("!"==r&&!t.obj.breakpoints[o].active)return void n()}}}t.events[a]||(t.events[a]=[]),t.events[a].push(n)}),t},trigger:function(e){return t.events[e]&&0!=t.events[e].length?(t.iterate(t.events[e],function(n){t.events[e][n]()}),t):void 0},breakpoint:function(e){return t.obj.breakpoints[e]},breakpoints:function(e){function n(t,e){this.name=this.id=t,this.media=e,this.active=!1,this.wasActive=!1}return n.prototype.matches=function(){return t.matchesMedia(this.media)},n.prototype.sync=function(){this.wasActive=this.active,this.active=this.matches()},t.iterate(e,function(i){t.obj.breakpoints[i]=new n(i,e[i])}),window.setTimeout(function(){t.poll()},0),t},addStateHandler:function(e,n){t.stateHandlers[e]=n},callStateHandler:function(e){var n=t.stateHandlers[e]();t.iterate(n,function(e){t.state.attachments.push(n[e])})},changeState:function(e){t.iterate(t.obj.breakpoints,function(e){t.obj.breakpoints[e].sync()}),t.vars.lastStateId=t.stateId,t.stateId=e,t.breakpointIds=t.stateId===t.sd?[]:t.stateId.substring(1).split(t.sd),t.obj.states[t.stateId]?t.state=t.obj.states[t.stateId]:(t.obj.states[t.stateId]={attachments:[]},t.state=t.obj.states[t.stateId],t.iterate(t.stateHandlers,t.callStateHandler)),t.detachAll(t.state.attachments),t.attachAll(t.state.attachments),t.vars.stateId=t.stateId,t.vars.state=t.state,t.trigger("change"),t.iterate(t.obj.breakpoints,function(e){t.obj.breakpoints[e].active?t.obj.breakpoints[e].wasActive||t.trigger("+"+e):t.obj.breakpoints[e].wasActive&&t.trigger("-"+e)})},generateStateConfig:function(e,n){var i={};return t.extend(i,e),t.iterate(t.breakpointIds,function(e){t.extend(i,n[t.breakpointIds[e]])}),i},getStateId:function(){var e="";return t.iterate(t.obj.breakpoints,function(n){var i=t.obj.breakpoints[n];i.matches()&&(e+=t.sd+i.id)}),e},poll:function(){var e="";e=t.getStateId(),""===e&&(e=t.sd),e!==t.stateId&&t.changeState(e)},_attach:null,attach:function(e){var n=t.obj.head,i=e.element;return i.parentNode&&i.parentNode.tagName?!1:(t._attach||(t._attach=n.firstChild),n.insertBefore(i,t._attach.nextSibling),e.permanent&&(t._attach=i),!0)},attachAll:function(e){var n=[];t.iterate(e,function(t){n[e[t].priority]||(n[e[t].priority]=[]),n[e[t].priority].push(e[t])}),n.reverse(),t.iterate(n,function(e){t.iterate(n[e],function(i){t.attach(n[e][i])})})},detach:function(t){var e=t.element;return t.permanent||!e.parentNode||e.parentNode&&!e.parentNode.tagName?!1:(e.parentNode.removeChild(e),!0)},detachAll:function(e){var n={};t.iterate(e,function(t){n[e[t].id]=!0}),t.iterate(t.obj.attachments,function(e){e in n||t.detach(t.obj.attachments[e])})},attachment:function(e){return e in t.obj.attachments?t.obj.attachments[e]:null},newAttachment:function(e,n,i,a){return t.obj.attachments[e]={id:e,element:n,priority:i,permanent:a}},init:function(){t.initMethods(),t.initVars(),t.initEvents(),t.obj.head=document.getElementsByTagName("head")[0],t.isInit=!0,t.trigger("init")},initEvents:function(){t.on("resize",function(){t.poll()}),t.on("orientationChange",function(){t.poll()}),t.DOMReady(function(){t.trigger("ready")}),window.onload&&t.on("load",window.onload),window.onload=function(){t.trigger("load")},window.onresize&&t.on("resize",window.onresize),window.onresize=function(){t.trigger("resize")},window.onorientationchange&&t.on("orientationChange",window.onorientationchange),window.onorientationchange=function(){t.trigger("orientationChange")}},initMethods:function(){document.addEventListener?!function(e,n){t.DOMReady=n()}("domready",function(){function t(t){for(r=1;t=n.shift();)t()}var e,n=[],i=document,a="DOMContentLoaded",r=/^loaded|^c/.test(i.readyState);return i.addEventListener(a,e=function(){i.removeEventListener(a,e),t()}),function(t){r?t():n.push(t)}}):!function(e,n){t.DOMReady=n()}("domready",function(t){function e(t){for(h=1;t=i.shift();)t()}var n,i=[],a=!1,r=document,o=r.documentElement,s=o.doScroll,c="DOMContentLoaded",d="addEventListener",u="onreadystatechange",l="readyState",f=s?/^loaded|^c/:/^loaded|c/,h=f.test(r[l]);return r[d]&&r[d](c,n=function(){r.removeEventListener(c,n,a),e()},a),s&&r.attachEvent(u,n=function(){/^c/.test(r[l])&&(r.detachEvent(u,n),e())}),t=s?function(e){self!=top?h?e():i.push(e):function(){try{o.doScroll("left")}catch(n){return setTimeout(function(){t(e)},50)}e()}()}:function(t){h?t():i.push(t)}}),Array.prototype.indexOf?t.indexOf=function(t,e){return t.indexOf(e)}:t.indexOf=function(t,e){if("string"==typeof t)return t.indexOf(e);var n,i,a=e?e:0;if(!this)throw new TypeError;if(i=this.length,0===i||a>=i)return-1;for(0>a&&(a=i-Math.abs(a)),n=a;i>n;n++)if(this[n]===t)return n;return-1},Array.isArray?t.isArray=function(t){return Array.isArray(t)}:t.isArray=function(t){return"[object Array]"===Object.prototype.toString.call(t)},Object.keys?t.iterate=function(t,e){if(!t)return[];var n,i=Object.keys(t);for(n=0;i[n]&&e(i[n],t[i[n]])!==!1;n++);}:t.iterate=function(t,e){if(!t)return[];var n;for(n in t)if(Object.prototype.hasOwnProperty.call(t,n)&&e(n,t[n])===!1)break},window.matchMedia?t.matchesMedia=function(t){return""==t?!0:window.matchMedia(t).matches}:window.styleMedia||window.media?t.matchesMedia=function(t){if(""==t)return!0;var e=window.styleMedia||window.media;return e.matchMedium(t||"all")}:window.getComputedStyle?t.matchesMedia=function(t){if(""==t)return!0;var e=document.createElement("style"),n=document.getElementsByTagName("script")[0],i=null;e.type="text/css",e.id="matchmediajs-test",n.parentNode.insertBefore(e,n),i="getComputedStyle"in window&&window.getComputedStyle(e,null)||e.currentStyle;var a="@media "+t+"{ #matchmediajs-test { width: 1px; } }";return e.styleSheet?e.styleSheet.cssText=a:e.textContent=a,"1px"===i.width}:t.matchesMedia=function(t){if(""==t)return!0;var e,n,i,a,r={"min-width":null,"max-width":null},o=!1;for(i=t.split(/\s+and\s+/),e=0;er["max-width"]||null!==r["min-height"]&&cr["max-height"]?!1:!0},navigator.userAgent.match(/MSIE ([0-9]+)/)&&RegExp.$1<9&&(t.newStyle=function(t){var e=document.createElement("span");return e.innerHTML=' ",e})},initVars:function(){var e,n,i,a=navigator.userAgent;e="other",n=0,i=[["firefox",/Firefox\/([0-9\.]+)/],["bb",/BlackBerry.+Version\/([0-9\.]+)/],["bb",/BB[0-9]+.+Version\/([0-9\.]+)/],["opera",/OPR\/([0-9\.]+)/],["opera",/Opera\/([0-9\.]+)/],["edge",/Edge\/([0-9\.]+)/],["safari",/Version\/([0-9\.]+).+Safari/],["chrome",/Chrome\/([0-9\.]+)/],["ie",/MSIE ([0-9]+)/],["ie",/Trident\/.+rv:([0-9]+)/]],t.iterate(i,function(t,i){return a.match(i[1])?(e=i[0],n=parseFloat(RegExp.$1),!1):void 0}),t.vars.browser=e,t.vars.browserVersion=n,e="other",n=0,i=[["ios",/([0-9_]+) like Mac OS X/,function(t){return t.replace("_",".").replace("_","")}],["ios",/CPU like Mac OS X/,function(t){return 0}],["wp",/Windows Phone ([0-9\.]+)/,null],["android",/Android ([0-9\.]+)/,null],["mac",/Macintosh.+Mac OS X ([0-9_]+)/,function(t){return t.replace("_",".").replace("_","")}],["windows",/Windows NT ([0-9\.]+)/,null],["bb",/BlackBerry.+Version\/([0-9\.]+)/,null],["bb",/BB[0-9]+.+Version\/([0-9\.]+)/,null]],t.iterate(i,function(t,i){return a.match(i[1])?(e=i[0],n=parseFloat(i[2]?i[2](RegExp.$1):RegExp.$1),!1):void 0}),t.vars.os=e,t.vars.osVersion=n,t.vars.IEVersion="ie"==t.vars.browser?t.vars.browserVersion:99,t.vars.touch="wp"==t.vars.os?navigator.msMaxTouchPoints>0:!!("ontouchstart"in window),t.vars.mobile="wp"==t.vars.os||"android"==t.vars.os||"ios"==t.vars.os||"bb"==t.vars.os}};return t.init(),t}();!function(t,e){"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?module.exports=e():t.skel=e()}(this,function(){return skel}); diff --git a/archive/beauty/assets/js/util.js b/archive/beauty/assets/js/util.js new file mode 100755 index 0000000..99ae63c --- /dev/null +++ b/archive/beauty/assets/js/util.js @@ -0,0 +1,587 @@ +(function($) { + + /** + * Generate an indented list of links from a nav. Meant for use with panel(). + * @return {jQuery} jQuery object. + */ + $.fn.navList = function() { + + var $this = $(this); + $a = $this.find('a'), + b = []; + + $a.each(function() { + + var $this = $(this), + indent = Math.max(0, $this.parents('li').length - 1), + href = $this.attr('href'), + target = $this.attr('target'); + + b.push( + '' + + '' + + $this.text() + + '' + ); + + }); + + return b.join(''); + + }; + + /** + * Panel-ify an element. + * @param {object} userConfig User config. + * @return {jQuery} jQuery object. + */ + $.fn.panel = function(userConfig) { + + // No elements? + if (this.length == 0) + return $this; + + // Multiple elements? + if (this.length > 1) { + + for (var i=0; i < this.length; i++) + $(this[i]).panel(userConfig); + + return $this; + + } + + // Vars. + var $this = $(this), + $body = $('body'), + $window = $(window), + id = $this.attr('id'), + config; + + // Config. + config = $.extend({ + + // Delay. + delay: 0, + + // Hide panel on link click. + hideOnClick: false, + + // Hide panel on escape keypress. + hideOnEscape: false, + + // Hide panel on swipe. + hideOnSwipe: false, + + // Reset scroll position on hide. + resetScroll: false, + + // Reset forms on hide. + resetForms: false, + + // Side of viewport the panel will appear. + side: null, + + // Target element for "class". + target: $this, + + // Class to toggle. + visibleClass: 'visible' + + }, userConfig); + + // Expand "target" if it's not a jQuery object already. + if (typeof config.target != 'jQuery') + config.target = $(config.target); + + // Panel. + + // Methods. + $this._hide = function(event) { + + // Already hidden? Bail. + if (!config.target.hasClass(config.visibleClass)) + return; + + // If an event was provided, cancel it. + if (event) { + + event.preventDefault(); + event.stopPropagation(); + + } + + // Hide. + config.target.removeClass(config.visibleClass); + + // Post-hide stuff. + window.setTimeout(function() { + + // Reset scroll position. + if (config.resetScroll) + $this.scrollTop(0); + + // Reset forms. + if (config.resetForms) + $this.find('form').each(function() { + this.reset(); + }); + + }, config.delay); + + }; + + // Vendor fixes. + $this + .css('-ms-overflow-style', '-ms-autohiding-scrollbar') + .css('-webkit-overflow-scrolling', 'touch'); + + // Hide on click. + if (config.hideOnClick) { + + $this.find('a') + .css('-webkit-tap-highlight-color', 'rgba(0,0,0,0)'); + + $this + .on('click', 'a', function(event) { + + var $a = $(this), + href = $a.attr('href'), + target = $a.attr('target'); + + if (!href || href == '#' || href == '' || href == '#' + id) + return; + + // Cancel original event. + event.preventDefault(); + event.stopPropagation(); + + // Hide panel. + $this._hide(); + + // Redirect to href. + window.setTimeout(function() { + + if (target == '_blank') + window.open(href); + else + window.location.href = href; + + }, config.delay + 10); + + }); + + } + + // Event: Touch stuff. + $this.on('touchstart', function(event) { + + $this.touchPosX = event.originalEvent.touches[0].pageX; + $this.touchPosY = event.originalEvent.touches[0].pageY; + + }) + + $this.on('touchmove', function(event) { + + if ($this.touchPosX === null + || $this.touchPosY === null) + return; + + var diffX = $this.touchPosX - event.originalEvent.touches[0].pageX, + diffY = $this.touchPosY - event.originalEvent.touches[0].pageY, + th = $this.outerHeight(), + ts = ($this.get(0).scrollHeight - $this.scrollTop()); + + // Hide on swipe? + if (config.hideOnSwipe) { + + var result = false, + boundary = 20, + delta = 50; + + switch (config.side) { + + case 'left': + result = (diffY < boundary && diffY > (-1 * boundary)) && (diffX > delta); + break; + + case 'right': + result = (diffY < boundary && diffY > (-1 * boundary)) && (diffX < (-1 * delta)); + break; + + case 'top': + result = (diffX < boundary && diffX > (-1 * boundary)) && (diffY > delta); + break; + + case 'bottom': + result = (diffX < boundary && diffX > (-1 * boundary)) && (diffY < (-1 * delta)); + break; + + default: + break; + + } + + if (result) { + + $this.touchPosX = null; + $this.touchPosY = null; + $this._hide(); + + return false; + + } + + } + + // Prevent vertical scrolling past the top or bottom. + if (($this.scrollTop() < 0 && diffY < 0) + || (ts > (th - 2) && ts < (th + 2) && diffY > 0)) { + + event.preventDefault(); + event.stopPropagation(); + + } + + }); + + // Event: Prevent certain events inside the panel from bubbling. + $this.on('click touchend touchstart touchmove', function(event) { + event.stopPropagation(); + }); + + // Event: Hide panel if a child anchor tag pointing to its ID is clicked. + $this.on('click', 'a[href="#' + id + '"]', function(event) { + + event.preventDefault(); + event.stopPropagation(); + + config.target.removeClass(config.visibleClass); + + }); + + // Body. + + // Event: Hide panel on body click/tap. + $body.on('click touchend', function(event) { + $this._hide(event); + }); + + // Event: Toggle. + $body.on('click', 'a[href="#' + id + '"]', function(event) { + + event.preventDefault(); + event.stopPropagation(); + + config.target.toggleClass(config.visibleClass); + + }); + + // Window. + + // Event: Hide on ESC. + if (config.hideOnEscape) + $window.on('keydown', function(event) { + + if (event.keyCode == 27) + $this._hide(event); + + }); + + return $this; + + }; + + /** + * Apply "placeholder" attribute polyfill to one or more forms. + * @return {jQuery} jQuery object. + */ + $.fn.placeholder = function() { + + // Browser natively supports placeholders? Bail. + if (typeof (document.createElement('input')).placeholder != 'undefined') + return $(this); + + // No elements? + if (this.length == 0) + return $this; + + // Multiple elements? + if (this.length > 1) { + + for (var i=0; i < this.length; i++) + $(this[i]).placeholder(); + + return $this; + + } + + // Vars. + var $this = $(this); + + // Text, TextArea. + $this.find('input[type=text],textarea') + .each(function() { + + var i = $(this); + + if (i.val() == '' + || i.val() == i.attr('placeholder')) + i + .addClass('polyfill-placeholder') + .val(i.attr('placeholder')); + + }) + .on('blur', function() { + + var i = $(this); + + if (i.attr('name').match(/-polyfill-field$/)) + return; + + if (i.val() == '') + i + .addClass('polyfill-placeholder') + .val(i.attr('placeholder')); + + }) + .on('focus', function() { + + var i = $(this); + + if (i.attr('name').match(/-polyfill-field$/)) + return; + + if (i.val() == i.attr('placeholder')) + i + .removeClass('polyfill-placeholder') + .val(''); + + }); + + // Password. + $this.find('input[type=password]') + .each(function() { + + var i = $(this); + var x = $( + $('
') + .append(i.clone()) + .remove() + .html() + .replace(/type="password"/i, 'type="text"') + .replace(/type=password/i, 'type=text') + ); + + if (i.attr('id') != '') + x.attr('id', i.attr('id') + '-polyfill-field'); + + if (i.attr('name') != '') + x.attr('name', i.attr('name') + '-polyfill-field'); + + x.addClass('polyfill-placeholder') + .val(x.attr('placeholder')).insertAfter(i); + + if (i.val() == '') + i.hide(); + else + x.hide(); + + i + .on('blur', function(event) { + + event.preventDefault(); + + var x = i.parent().find('input[name=' + i.attr('name') + '-polyfill-field]'); + + if (i.val() == '') { + + i.hide(); + x.show(); + + } + + }); + + x + .on('focus', function(event) { + + event.preventDefault(); + + var i = x.parent().find('input[name=' + x.attr('name').replace('-polyfill-field', '') + ']'); + + x.hide(); + + i + .show() + .focus(); + + }) + .on('keypress', function(event) { + + event.preventDefault(); + x.val(''); + + }); + + }); + + // Events. + $this + .on('submit', function() { + + $this.find('input[type=text],input[type=password],textarea') + .each(function(event) { + + var i = $(this); + + if (i.attr('name').match(/-polyfill-field$/)) + i.attr('name', ''); + + if (i.val() == i.attr('placeholder')) { + + i.removeClass('polyfill-placeholder'); + i.val(''); + + } + + }); + + }) + .on('reset', function(event) { + + event.preventDefault(); + + $this.find('select') + .val($('option:first').val()); + + $this.find('input,textarea') + .each(function() { + + var i = $(this), + x; + + i.removeClass('polyfill-placeholder'); + + switch (this.type) { + + case 'submit': + case 'reset': + break; + + case 'password': + i.val(i.attr('defaultValue')); + + x = i.parent().find('input[name=' + i.attr('name') + '-polyfill-field]'); + + if (i.val() == '') { + i.hide(); + x.show(); + } + else { + i.show(); + x.hide(); + } + + break; + + case 'checkbox': + case 'radio': + i.attr('checked', i.attr('defaultValue')); + break; + + case 'text': + case 'textarea': + i.val(i.attr('defaultValue')); + + if (i.val() == '') { + i.addClass('polyfill-placeholder'); + i.val(i.attr('placeholder')); + } + + break; + + default: + i.val(i.attr('defaultValue')); + break; + + } + }); + + }); + + return $this; + + }; + + /** + * Moves elements to/from the first positions of their respective parents. + * @param {jQuery} $elements Elements (or selector) to move. + * @param {bool} condition If true, moves elements to the top. Otherwise, moves elements back to their original locations. + */ + $.prioritize = function($elements, condition) { + + var key = '__prioritize'; + + // Expand $elements if it's not already a jQuery object. + if (typeof $elements != 'jQuery') + $elements = $($elements); + + // Step through elements. + $elements.each(function() { + + var $e = $(this), $p, + $parent = $e.parent(); + + // No parent? Bail. + if ($parent.length == 0) + return; + + // Not moved? Move it. + if (!$e.data(key)) { + + // Condition is false? Bail. + if (!condition) + return; + + // Get placeholder (which will serve as our point of reference for when this element needs to move back). + $p = $e.prev(); + + // Couldn't find anything? Means this element's already at the top, so bail. + if ($p.length == 0) + return; + + // Move element to top of parent. + $e.prependTo($parent); + + // Mark element as moved. + $e.data(key, $p); + + } + + // Moved already? + else { + + // Condition is true? Bail. + if (condition) + return; + + $p = $e.data(key); + + // Move element back to its original location (using our placeholder). + $e.insertAfter($p); + + // Unmark element as moved. + $e.removeData(key); + + } + + }); + + }; + +})(jQuery); \ No newline at end of file diff --git a/archive/beauty/assets/sass/libs/_breakpoints.scss b/archive/beauty/assets/sass/libs/_breakpoints.scss new file mode 100755 index 0000000..c5301d8 --- /dev/null +++ b/archive/beauty/assets/sass/libs/_breakpoints.scss @@ -0,0 +1,223 @@ +// breakpoints.scss v1.0 | @ajlkn | MIT licensed */ + +// Vars. + + /// Breakpoints. + /// @var {list} + $breakpoints: () !global; + +// Mixins. + + /// Sets breakpoints. + /// @param {map} $x Breakpoints. + @mixin breakpoints($x: ()) { + $breakpoints: $x !global; + } + + /// Wraps @content in a @media block targeting a specific orientation. + /// @param {string} $orientation Orientation. + @mixin orientation($orientation) { + @media screen and (orientation: #{$orientation}) { + @content; + } + } + + /// Wraps @content in a @media block using a given query. + /// @param {string} $query Query. + @mixin breakpoint($query: null) { + + $breakpoint: null; + $op: null; + $media: null; + + // Determine operator, breakpoint. + + // Greater than or equal. + @if (str-slice($query, 0, 2) == '>=') { + + $op: 'gte'; + $breakpoint: str-slice($query, 3); + + } + + // Less than or equal. + @elseif (str-slice($query, 0, 2) == '<=') { + + $op: 'lte'; + $breakpoint: str-slice($query, 3); + + } + + // Greater than. + @elseif (str-slice($query, 0, 1) == '>') { + + $op: 'gt'; + $breakpoint: str-slice($query, 2); + + } + + // Less than. + @elseif (str-slice($query, 0, 1) == '<') { + + $op: 'lt'; + $breakpoint: str-slice($query, 2); + + } + + // Not. + @elseif (str-slice($query, 0, 1) == '!') { + + $op: 'not'; + $breakpoint: str-slice($query, 2); + + } + + // Equal. + @else { + + $op: 'eq'; + $breakpoint: $query; + + } + + // Build media. + @if ($breakpoint and map-has-key($breakpoints, $breakpoint)) { + + $a: map-get($breakpoints, $breakpoint); + + // Range. + @if (type-of($a) == 'list') { + + $x: nth($a, 1); + $y: nth($a, 2); + + // Max only. + @if ($x == null) { + + // Greater than or equal (>= 0 / anything) + @if ($op == 'gte') { + $media: 'screen'; + } + + // Less than or equal (<= y) + @elseif ($op == 'lte') { + $media: 'screen and (max-width: ' + $y + ')'; + } + + // Greater than (> y) + @elseif ($op == 'gt') { + $media: 'screen and (min-width: ' + ($y + 1) + ')'; + } + + // Less than (< 0 / invalid) + @elseif ($op == 'lt') { + $media: 'screen and (max-width: -1px)'; + } + + // Not (> y) + @elseif ($op == 'not') { + $media: 'screen and (min-width: ' + ($y + 1) + ')'; + } + + // Equal (<= y) + @else { + $media: 'screen and (max-width: ' + $y + ')'; + } + + } + + // Min only. + @else if ($y == null) { + + // Greater than or equal (>= x) + @if ($op == 'gte') { + $media: 'screen and (min-width: ' + $x + ')'; + } + + // Less than or equal (<= inf / anything) + @elseif ($op == 'lte') { + $media: 'screen'; + } + + // Greater than (> inf / invalid) + @elseif ($op == 'gt') { + $media: 'screen and (max-width: -1px)'; + } + + // Less than (< x) + @elseif ($op == 'lt') { + $media: 'screen and (max-width: ' + ($x - 1) + ')'; + } + + // Not (< x) + @elseif ($op == 'not') { + $media: 'screen and (max-width: ' + ($x - 1) + ')'; + } + + // Equal (>= x) + @else { + $media: 'screen and (min-width: ' + $x + ')'; + } + + } + + // Min and max. + @else { + + // Greater than or equal (>= x) + @if ($op == 'gte') { + $media: 'screen and (min-width: ' + $x + ')'; + } + + // Less than or equal (<= y) + @elseif ($op == 'lte') { + $media: 'screen and (max-width: ' + $y + ')'; + } + + // Greater than (> y) + @elseif ($op == 'gt') { + $media: 'screen and (min-width: ' + ($y + 1) + ')'; + } + + // Less than (< x) + @elseif ($op == 'lt') { + $media: 'screen and (max-width: ' + ($x - 1) + ')'; + } + + // Not (< x and > y) + @elseif ($op == 'not') { + $media: 'screen and (max-width: ' + ($x - 1) + '), screen and (min-width: ' + ($y + 1) + ')'; + } + + // Equal (>= x and <= y) + @else { + $media: 'screen and (min-width: ' + $x + ') and (max-width: ' + $y + ')'; + } + + } + + } + + // String. + @else { + + // Missing a media type? Prefix with "screen". + @if (str-slice($a, 0, 1) == '(') { + $media: 'screen and ' + $a; + } + + // Otherwise, use as-is. + @else { + $media: $a; + } + + } + + } + + // Output. + @media #{$media} { + @content; + } + + } \ No newline at end of file diff --git a/archive/beauty/assets/sass/libs/_functions.scss b/archive/beauty/assets/sass/libs/_functions.scss new file mode 100755 index 0000000..f563aab --- /dev/null +++ b/archive/beauty/assets/sass/libs/_functions.scss @@ -0,0 +1,90 @@ +/// Removes a specific item from a list. +/// @author Hugo Giraudel +/// @param {list} $list List. +/// @param {integer} $index Index. +/// @return {list} Updated list. +@function remove-nth($list, $index) { + + $result: null; + + @if type-of($index) != number { + @warn "$index: #{quote($index)} is not a number for `remove-nth`."; + } + @else if $index == 0 { + @warn "List index 0 must be a non-zero integer for `remove-nth`."; + } + @else if abs($index) > length($list) { + @warn "List index is #{$index} but list is only #{length($list)} item long for `remove-nth`."; + } + @else { + + $result: (); + $index: if($index < 0, length($list) + $index + 1, $index); + + @for $i from 1 through length($list) { + + @if $i != $index { + $result: append($result, nth($list, $i)); + } + + } + + } + + @return $result; + +} + +/// Gets a value from a map. +/// @author Hugo Giraudel +/// @param {map} $map Map. +/// @param {string} $keys Key(s). +/// @return {string} Value. +@function val($map, $keys...) { + + @if nth($keys, 1) == null { + $keys: remove-nth($keys, 1); + } + + @each $key in $keys { + $map: map-get($map, $key); + } + + @return $map; + +} + +/// Gets a duration value. +/// @param {string} $keys Key(s). +/// @return {string} Value. +@function _duration($keys...) { + @return val($duration, $keys...); +} + +/// Gets a font value. +/// @param {string} $keys Key(s). +/// @return {string} Value. +@function _font($keys...) { + @return val($font, $keys...); +} + +/// Gets a misc value. +/// @param {string} $keys Key(s). +/// @return {string} Value. +@function _misc($keys...) { + @return val($misc, $keys...); +} + +/// Gets a palette value. +/// @param {string} $keys Key(s). +/// @return {string} Value. +@function _palette($keys...) { + @return val($palette, $keys...); +} + +/// Gets a size value. +/// @param {string} $keys Key(s). +/// @return {string} Value. +@function _size($keys...) { + @return val($size, $keys...); +} \ No newline at end of file diff --git a/archive/beauty/assets/sass/libs/_html-grid.scss b/archive/beauty/assets/sass/libs/_html-grid.scss new file mode 100755 index 0000000..7438a8c --- /dev/null +++ b/archive/beauty/assets/sass/libs/_html-grid.scss @@ -0,0 +1,149 @@ +// html-grid.scss v1.0 | @ajlkn | MIT licensed */ + +// Mixins. + + /// Initializes the current element as an HTML grid. + /// @param {mixed} $gutters Gutters (either a single number to set both column/row gutters, or a list to set them individually). + /// @param {mixed} $suffix Column class suffix (optional; either a single suffix or a list). + @mixin html-grid($gutters: 1.5em, $suffix: '') { + + // Initialize. + $cols: 12; + $multipliers: 0, 0.25, 0.5, 1, 1.50, 2.00; + $unit: 100% / $cols; + + // Suffixes. + $suffixes: null; + + @if (type-of($suffix) == 'list') { + $suffixes: $suffix; + } + @else { + $suffixes: ($suffix); + } + + // Gutters. + $guttersCols: null; + $guttersRows: null; + + @if (type-of($gutters) == 'list') { + + $guttersCols: nth($gutters, 1); + $guttersRows: nth($gutters, 2); + + } + @else { + + $guttersCols: $gutters; + $guttersRows: 0; + + } + + // Row. + display: flex; + flex-wrap: wrap; + box-sizing: border-box; + align-items: stretch; + + // Columns. + > * { + box-sizing: border-box; + } + + // Gutters. + &.gtr-uniform { + > * { + > :last-child { + margin-bottom: 0; + } + } + } + + // Alignment. + &.aln-left { + justify-content: flex-start; + } + + &.aln-center { + justify-content: center; + } + + &.aln-right { + justify-content: flex-end; + } + + &.aln-top { + align-items: flex-start; + } + + &.aln-middle { + align-items: center; + } + + &.aln-bottom { + align-items: flex-end; + } + + // Step through suffixes. + @each $suffix in $suffixes { + + // Suffix. + @if ($suffix != '') { + $suffix: '-' + $suffix; + } + @else { + $suffix: ''; + } + + // Row. + + // Important. + > .imp#{$suffix} { + order: -1; + } + + // Columns, offsets. + @for $i from 1 through $cols { + > .col-#{$i}#{$suffix} { + width: $unit * $i; + } + + > .off-#{$i}#{$suffix} { + margin-left: $unit * $i; + } + } + + // Step through multipliers. + @each $multiplier in $multipliers { + + // Gutters. + $class: null; + + @if ($multiplier != 1) { + $class: '.gtr-' + ($multiplier * 100); + } + + &#{$class} { + margin-top: ($guttersRows * $multiplier * -1); + margin-left: ($guttersCols * $multiplier * -1); + + > * { + padding: ($guttersRows * $multiplier) 0 0 ($guttersCols * $multiplier); + } + + // Uniform. + &.gtr-uniform { + margin-top: $guttersCols * $multiplier * -1; + + > * { + padding-top: $guttersCols * $multiplier; + } + } + + } + + } + + } + + } \ No newline at end of file diff --git a/archive/beauty/assets/sass/libs/_mixins.scss b/archive/beauty/assets/sass/libs/_mixins.scss new file mode 100755 index 0000000..a331483 --- /dev/null +++ b/archive/beauty/assets/sass/libs/_mixins.scss @@ -0,0 +1,78 @@ +/// Makes an element's :before pseudoelement a FontAwesome icon. +/// @param {string} $content Optional content value to use. +/// @param {string} $category Optional category to use. +/// @param {string} $where Optional pseudoelement to target (before or after). +@mixin icon($content: false, $category: regular, $where: before) { + + text-decoration: none; + + &:#{$where} { + + @if $content { + content: $content; + } + + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + display: inline-block; + font-style: normal; + font-variant: normal; + text-rendering: auto; + line-height: 1; + text-transform: none !important; + + @if ($category == brands) { + font-family: 'Font Awesome 5 Brands'; + } + @elseif ($category == solid) { + font-family: 'Font Awesome 5 Free'; + font-weight: 900; + } + @else { + font-family: 'Font Awesome 5 Free'; + font-weight: 400; + } + + } + +} + +/// Applies padding to an element, taking the current element-margin value into account. +/// @param {mixed} $tb Top/bottom padding. +/// @param {mixed} $lr Left/right padding. +/// @param {list} $pad Optional extra padding (in the following order top, right, bottom, left) +/// @param {bool} $important If true, adds !important. +@mixin padding($tb, $lr, $pad: (0,0,0,0), $important: null) { + + @if $important { + $important: '!important'; + } + + $x: 0.1em; + + @if unit(_size(element-margin)) == 'rem' { + $x: 0.1rem; + } + + padding: ($tb + nth($pad,1)) ($lr + nth($pad,2)) max($x, $tb - _size(element-margin) + nth($pad,3)) ($lr + nth($pad,4)) #{$important}; + +} + +/// Encodes a SVG data URL so IE doesn't choke (via codepen.io/jakob-e/pen/YXXBrp). +/// @param {string} $svg SVG data URL. +/// @return {string} Encoded SVG data URL. +@function svg-url($svg) { + + $svg: str-replace($svg, '"', '\''); + $svg: str-replace($svg, '%', '%25'); + $svg: str-replace($svg, '<', '%3C'); + $svg: str-replace($svg, '>', '%3E'); + $svg: str-replace($svg, '&', '%26'); + $svg: str-replace($svg, '#', '%23'); + $svg: str-replace($svg, '{', '%7B'); + $svg: str-replace($svg, '}', '%7D'); + $svg: str-replace($svg, ';', '%3B'); + + @return url("data:image/svg+xml;charset=utf8,#{$svg}"); + +} \ No newline at end of file diff --git a/archive/beauty/assets/sass/libs/_vars.scss b/archive/beauty/assets/sass/libs/_vars.scss new file mode 100755 index 0000000..2accd95 --- /dev/null +++ b/archive/beauty/assets/sass/libs/_vars.scss @@ -0,0 +1,54 @@ +// Misc. + $misc: ( + z-index-base: 10000 + ); + +// Duration. + $duration: ( + transition: 0.2s, + navPanel: 0.5s + ); + +// Size. + $size: ( + border-radius: 4px, + border-width: 1px, + element-height: 3.5em, + element-margin: 2em, + navPanel: 275px + + ); + +// Font. + $font: ( + family: ('Open Sans', sans-serif), + family-fixed: ('Courier New', monospace), + weight: 300, + weight-bold: 600 + ); + +// Palette. + $palette: ( + bg: #fff, + fg: #4a4a4a, + fg-bold: #2a2a2a, + fg-light: #bbb, + border: #eee, + border-bg: rgba(144,144,144,0.05), + border2: #ddd, + border2-bg: rgba(144,144,144,0.1), + + accent1: ( + bg: #51c5e8, + fg: mix(#51c5e8, #ffffff, 25%), + fg-bold: #ffffff, + fg-light: mix(#51c5e8, #ffffff, 40%) + ), + + accent2: ( + bg: #1d2726, + fg: mix(#1d2726, #ffffff, 25%), + fg-bold: #ffffff, + fg-light: mix(#1d2726, #ffffff, 40%) + ) + ); \ No newline at end of file diff --git a/archive/beauty/assets/sass/libs/_vendor.scss b/archive/beauty/assets/sass/libs/_vendor.scss new file mode 100755 index 0000000..6599a3f --- /dev/null +++ b/archive/beauty/assets/sass/libs/_vendor.scss @@ -0,0 +1,376 @@ +// vendor.scss v1.0 | @ajlkn | MIT licensed */ + +// Vars. + + /// Vendor prefixes. + /// @var {list} + $vendor-prefixes: ( + '-moz-', + '-webkit-', + '-ms-', + '' + ); + + /// Properties that should be vendorized. + /// Data via caniuse.com, github.com/postcss/autoprefixer, and developer.mozilla.org + /// @var {list} + $vendor-properties: ( + + // Animation. + 'animation', + 'animation-delay', + 'animation-direction', + 'animation-duration', + 'animation-fill-mode', + 'animation-iteration-count', + 'animation-name', + 'animation-play-state', + 'animation-timing-function', + + // Appearance. + 'appearance', + + // Backdrop filter. + 'backdrop-filter', + + // Background image options. + 'background-clip', + 'background-origin', + 'background-size', + + // Box sizing. + 'box-sizing', + + // Clip path. + 'clip-path', + + // Filter effects. + 'filter', + + // Flexbox. + 'align-content', + 'align-items', + 'align-self', + 'flex', + 'flex-basis', + 'flex-direction', + 'flex-flow', + 'flex-grow', + 'flex-shrink', + 'flex-wrap', + 'justify-content', + 'order', + + // Font feature. + 'font-feature-settings', + 'font-language-override', + 'font-variant-ligatures', + + // Font kerning. + 'font-kerning', + + // Fragmented borders and backgrounds. + 'box-decoration-break', + + // Grid layout. + 'grid-column', + 'grid-column-align', + 'grid-column-end', + 'grid-column-start', + 'grid-row', + 'grid-row-align', + 'grid-row-end', + 'grid-row-start', + 'grid-template-columns', + 'grid-template-rows', + + // Hyphens. + 'hyphens', + 'word-break', + + // Masks. + 'mask', + 'mask-border', + 'mask-border-outset', + 'mask-border-repeat', + 'mask-border-slice', + 'mask-border-source', + 'mask-border-width', + 'mask-clip', + 'mask-composite', + 'mask-image', + 'mask-origin', + 'mask-position', + 'mask-repeat', + 'mask-size', + + // Multicolumn. + 'break-after', + 'break-before', + 'break-inside', + 'column-count', + 'column-fill', + 'column-gap', + 'column-rule', + 'column-rule-color', + 'column-rule-style', + 'column-rule-width', + 'column-span', + 'column-width', + 'columns', + + // Object fit. + 'object-fit', + 'object-position', + + // Regions. + 'flow-from', + 'flow-into', + 'region-fragment', + + // Scroll snap points. + 'scroll-snap-coordinate', + 'scroll-snap-destination', + 'scroll-snap-points-x', + 'scroll-snap-points-y', + 'scroll-snap-type', + + // Shapes. + 'shape-image-threshold', + 'shape-margin', + 'shape-outside', + + // Tab size. + 'tab-size', + + // Text align last. + 'text-align-last', + + // Text decoration. + 'text-decoration-color', + 'text-decoration-line', + 'text-decoration-skip', + 'text-decoration-style', + + // Text emphasis. + 'text-emphasis', + 'text-emphasis-color', + 'text-emphasis-position', + 'text-emphasis-style', + + // Text size adjust. + 'text-size-adjust', + + // Text spacing. + 'text-spacing', + + // Transform. + 'transform', + 'transform-origin', + + // Transform 3D. + 'backface-visibility', + 'perspective', + 'perspective-origin', + 'transform-style', + + // Transition. + 'transition', + 'transition-delay', + 'transition-duration', + 'transition-property', + 'transition-timing-function', + + // Unicode bidi. + 'unicode-bidi', + + // User select. + 'user-select', + + // Writing mode. + 'writing-mode', + + ); + + /// Values that should be vendorized. + /// Data via caniuse.com, github.com/postcss/autoprefixer, and developer.mozilla.org + /// @var {list} + $vendor-values: ( + + // Cross fade. + 'cross-fade', + + // Element function. + 'element', + + // Filter function. + 'filter', + + // Flexbox. + 'flex', + 'inline-flex', + + // Grab cursors. + 'grab', + 'grabbing', + + // Gradients. + 'linear-gradient', + 'repeating-linear-gradient', + 'radial-gradient', + 'repeating-radial-gradient', + + // Grid layout. + 'grid', + 'inline-grid', + + // Image set. + 'image-set', + + // Intrinsic width. + 'max-content', + 'min-content', + 'fit-content', + 'fill', + 'fill-available', + 'stretch', + + // Sticky position. + 'sticky', + + // Transform. + 'transform', + + // Zoom cursors. + 'zoom-in', + 'zoom-out', + + ); + +// Functions. + + /// Removes a specific item from a list. + /// @author Hugo Giraudel + /// @param {list} $list List. + /// @param {integer} $index Index. + /// @return {list} Updated list. + @function remove-nth($list, $index) { + + $result: null; + + @if type-of($index) != number { + @warn "$index: #{quote($index)} is not a number for `remove-nth`."; + } + @else if $index == 0 { + @warn "List index 0 must be a non-zero integer for `remove-nth`."; + } + @else if abs($index) > length($list) { + @warn "List index is #{$index} but list is only #{length($list)} item long for `remove-nth`."; + } + @else { + + $result: (); + $index: if($index < 0, length($list) + $index + 1, $index); + + @for $i from 1 through length($list) { + + @if $i != $index { + $result: append($result, nth($list, $i)); + } + + } + + } + + @return $result; + + } + + /// Replaces a substring within another string. + /// @author Hugo Giraudel + /// @param {string} $string String. + /// @param {string} $search Substring. + /// @param {string} $replace Replacement. + /// @return {string} Updated string. + @function str-replace($string, $search, $replace: '') { + + $index: str-index($string, $search); + + @if $index { + @return str-slice($string, 1, $index - 1) + $replace + str-replace(str-slice($string, $index + str-length($search)), $search, $replace); + } + + @return $string; + + } + + /// Replaces a substring within each string in a list. + /// @param {list} $strings List of strings. + /// @param {string} $search Substring. + /// @param {string} $replace Replacement. + /// @return {list} Updated list of strings. + @function str-replace-all($strings, $search, $replace: '') { + + @each $string in $strings { + $strings: set-nth($strings, index($strings, $string), str-replace($string, $search, $replace)); + } + + @return $strings; + + } + +// Mixins. + + /// Wraps @content in vendorized keyframe blocks. + /// @param {string} $name Name. + @mixin keyframes($name) { + + @-moz-keyframes #{$name} { @content; } + @-webkit-keyframes #{$name} { @content; } + @-ms-keyframes #{$name} { @content; } + @keyframes #{$name} { @content; } + + } + + /// Vendorizes a declaration's property and/or value(s). + /// @param {string} $property Property. + /// @param {mixed} $value String/list of value(s). + @mixin vendor($property, $value) { + + // Determine if property should expand. + $expandProperty: index($vendor-properties, $property); + + // Determine if value should expand (and if so, add '-prefix-' placeholder). + $expandValue: false; + + @each $x in $value { + @each $y in $vendor-values { + @if $y == str-slice($x, 1, str-length($y)) { + + $value: set-nth($value, index($value, $x), '-prefix-' + $x); + $expandValue: true; + + } + } + } + + // Expand property? + @if $expandProperty { + @each $vendor in $vendor-prefixes { + #{$vendor}#{$property}: #{str-replace-all($value, '-prefix-', $vendor)}; + } + } + + // Expand just the value? + @elseif $expandValue { + @each $vendor in $vendor-prefixes { + #{$property}: #{str-replace-all($value, '-prefix-', $vendor)}; + } + } + + // Neither? Treat them as a normal declaration. + @else { + #{$property}: #{$value}; + } + + } \ No newline at end of file diff --git a/archive/beauty/assets/sass/main.scss b/archive/beauty/assets/sass/main.scss new file mode 100755 index 0000000..1097b46 --- /dev/null +++ b/archive/beauty/assets/sass/main.scss @@ -0,0 +1,1965 @@ +@import 'libs/vars'; +@import 'libs/functions'; +@import 'libs/mixins'; +@import 'libs/vendor'; +@import 'libs/breakpoints'; +@import 'libs/html-grid'; +@import 'fontawesome-all.min.css'; +@import url("https://fonts.googleapis.com/css?family=Open+Sans:300,600,300italic,600italic"); + +/* + Catalyst by Pixelarity + pixelarity.com | hello@pixelarity.com + License: pixelarity.com/license +*/ + +// Breakpoints. + + @include breakpoints(( + wide: ( 1281px, 1680px ), + normal: ( 981px, 1280px ), + narrow: ( 737px, 980px ), + mobile: ( 481px, 736px ), + mobilep: ( null, 480px ) + )); + +// Reset. +// Based on meyerweb.com/eric/tools/css/reset (v2.0 | 20110126 | License: public domain) + + html, body, div, span, applet, object, + iframe, h1, h2, h3, h4, h5, h6, p, blockquote, + pre, a, abbr, acronym, address, big, cite, + code, del, dfn, em, img, ins, kbd, q, s, samp, + small, strike, strong, sub, sup, tt, var, b, + u, i, center, dl, dt, dd, ol, ul, li, fieldset, + form, label, legend, table, caption, tbody, + tfoot, thead, tr, th, td, article, aside, + canvas, details, embed, figure, figcaption, + footer, header, hgroup, menu, nav, output, ruby, + section, summary, time, mark, audio, video { + margin: 0; + padding: 0; + border: 0; + font-size: 100%; + font: inherit; + vertical-align: baseline; + } + + article, aside, details, figcaption, figure, + footer, header, hgroup, menu, nav, section { + display: block; + } + + body { + line-height: 1; + } + + ol, ul { + list-style: none; + } + + blockquote, q { + quotes: none; + + &:before, + &:after { + content: ''; + content: none; + } + } + + table { + border-collapse: collapse; + border-spacing: 0; + } + + body { + -webkit-text-size-adjust: none; + } + + mark { + background-color: transparent; + color: inherit; + } + + input::-moz-focus-inner { + border: 0; + padding: 0; + } + + input, select, textarea { + -moz-appearance: none; + -webkit-appearance: none; + -ms-appearance: none; + appearance: none; + } + +/* Basic */ + + // Set box model to border-box. + // Based on css-tricks.com/inheriting-box-sizing-probably-slightly-better-best-practice + html { + box-sizing: border-box; + } + + *, *:before, *:after { + box-sizing: inherit; + } + + body { + background: _palette(bg); + + // Stops initial animations until page loads. + &.is-preload { + *, *:before, *:after { + @include vendor('animation', 'none !important'); + @include vendor('transition', 'none !important'); + } + } + + } + + body, input, select, textarea { + color: _palette(fg); + font-family: _font(family); + font-size: 13pt; + font-weight: _font(weight); + line-height: 1.75em; + } + + a { + color: _palette(accent1, bg); + text-decoration: underline; + + &:hover { + text-decoration: none; + } + } + + strong, b { + color: _palette(fg-bold); + font-weight: _font(weight-bold); + } + + em, i { + font-style: italic; + } + + p { + margin: 0 0 _size(element-margin) 0; + } + + h1, h2, h3, h4, h5, h6 { + color: _palette(fg-bold); + font-weight: _font(weight-bold); + letter-spacing: 0.125em; + line-height: 1em; + margin: 0 0 (_size(element-margin) * 0.5) 0; + text-transform: uppercase; + + a { + color: inherit; + text-decoration: none; + } + } + + h2 { + font-size: 1.5em; + line-height: 1.75em; + } + + h3 { + font-size: 1.25em; + line-height: 1.5em; + } + + h4 { + font-size: 1.1em; + line-height: 1.5em; + } + + h5 { + font-size: 0.9em; + line-height: 1.5em; + } + + h6 { + font-size: 0.7em; + line-height: 1.5em; + } + + sub { + font-size: 0.8em; + position: relative; + top: 0.5em; + } + + sup { + font-size: 0.8em; + position: relative; + top: -0.5em; + } + + hr { + border: 0; + border-bottom: solid 3px _palette(border); + margin: (_size(element-margin) * 1.5) 0; + + &.major { + margin: (_size(element-margin) * 2.5) 0; + } + } + + blockquote { + border-left: solid 8px _palette(border); + font-style: italic; + margin: 0 0 _size(element-margin) 0; + padding: 0.5em 0 0.5em 2em; + } + + pre { + -webkit-overflow-scrolling: touch; + background: _palette(border-bg); + font-family: _font(family-fixed); + font-size: 0.9em; + line-height: 1.5em; + margin: 0 0 _size(element-margin) 0; + overflow-x: auto; + padding: 1em 1.5em; + } + + code { + background: _palette(border-bg); + font-family: _font(family-fixed); + font-size: 0.9em; + margin: 0 0.25em; + padding: 0.25em 0.65em; + } + + .align-left { + text-align: left; + } + + .align-center { + text-align: center; + } + + .align-right { + text-align: right; + } + +/* Row */ + + .row { + @include html-grid(3em); + + @include breakpoint('<=wide') { + @include html-grid(3em, 'wide'); + } + + @include breakpoint('<=normal') { + @include html-grid(2em, 'normal'); + } + + @include breakpoint('<=narrow') { + @include html-grid(2em, 'narrow'); + } + + @include breakpoint('<=mobile') { + @include html-grid(2em, 'mobile'); + } + + @include breakpoint('<=mobilep') { + @include html-grid(2em, 'mobilep'); + } + } + +/* Container */ + + .container { + margin: 0 auto; + width: 1200px; + + &.medium { + width: (1200px * 0.75); + } + + @include breakpoint('<=wide') { + width: 1080px; + + &.medium { + width: (1080px * 0.75); + } + } + + @include breakpoint('<=normal') { + width: 960px; + + &.medium { + width: (960px * 0.75); + } + } + + @include breakpoint('<=narrow') { + width: 90%; + + &.medium { + width: 90%; + } + } + + @include breakpoint('<=mobile') { + width: 100%; + + &.medium { + width: 100%; + } + } + } + +/* Section/Article */ + + section, article { + &.special { + text-align: center; + } + } + + header { + &.major { + position: relative; + + &:after { + background: _palette(border); + content: ''; + display: inline-block; + height: 3px; + margin: 0 0 _size(element-margin) 0; + width: 6em; + } + + &.alt { + text-align: center; + margin-bottom: _size(element-margin); + } + } + + p { + letter-spacing: 0.125em; + margin: 0 0 (_size(element-margin) * 0.75) 0; + position: relative; + text-transform: uppercase; + } + + h2 + p { + font-size: 1em; + margin-top: -0.85em; + line-height: 1.75em; + } + + h3 + p { + font-size: 0.9em; + margin-top: -0.75em; + line-height: 1.75em; + } + + h4 + p, + h5 + p, + h6 + p { + font-size: 0.8em; + margin-top: -0.75em; + line-height: 1.75em; + } + } + +/* Form */ + + form { + margin: 0 0 _size(element-margin) 0; + } + + label { + color: _palette(fg-bold); + display: block; + font-size: 0.9em; + font-weight: _font(weight-bold); + margin: 0 0 (_size(element-margin) * 0.5) 0; + } + + input[type="text"], + input[type="password"], + input[type="email"], + select, + textarea { + @include vendor('appearance', 'none'); + border: none; + border: solid 2px _palette(border); + border-radius: 0; + color: inherit; + display: block; + outline: 0; + padding: 0 1em; + text-decoration: none; + width: 100%; + + &:invalid { + box-shadow: none; + } + + &:focus { + border-color: _palette(accent1, bg); + } + } + + select { + background-image: svg-url(""); + background-size: 1.25em; + background-repeat: no-repeat; + background-position: calc(100% - 1em) center; + height: _size(element-height); + padding-right: _size(element-height); + text-overflow: ellipsis; + + &:focus { + &::-ms-value { + background-color: transparent; + } + } + + &::-ms-expand { + display: none; + } + + option { + color: _palette(fg-bold); + background: _palette(bg); + } + } + + input[type="text"], + input[type="password"], + input[type="email"], + select { + height: _size(element-height); + } + + textarea { + padding: 0.75em 1em; + } + + input[type="checkbox"], + input[type="radio"], { + @include vendor('appearance', 'none'); + display: block; + float: left; + margin-right: -2em; + opacity: 0; + width: 1em; + z-index: -1; + + & + label { + @include icon(false, solid); + color: _palette(fg); + cursor: pointer; + display: inline-block; + font-size: 1em; + font-weight: _font(weight); + padding-left: (_size(element-height) * 0.6) + 0.75em; + padding-right: 0.75em; + position: relative; + + &:before { + background: _palette(border-bg); + border: solid 2px _palette(border); + content: ''; + display: inline-block; + font-size: 0.8em; + height: (_size(element-height) * 0.6); + left: 0; + line-height: (_size(element-height) * 0.55); + position: absolute; + text-align: center; + top: 0; + width: (_size(element-height) * 0.6); + } + } + + &:checked + label { + &:before { + background: _palette(accent2, bg); + border-color: _palette(accent2, bg); + color: _palette(accent2, fg-bold); + content: '\f00c'; + } + } + + &:focus + label { + &:before { + border-color: _palette(accent1, bg); + } + } + } + + input[type="radio"] { + & + label { + &:before { + border-radius: 100%; + } + } + } + + ::-webkit-input-placeholder { + color: _palette(fg-light) !important; + opacity: 1.0; + } + + :-moz-placeholder { + color: _palette(fg-light) !important; + opacity: 1.0; + } + + ::-moz-placeholder { + color: _palette(fg-light) !important; + opacity: 1.0; + } + + :-ms-input-placeholder { + color: _palette(fg-light) !important; + opacity: 1.0; + } + +/* Box */ + + .box { + border: solid 2px _palette(border); + margin-bottom: _size(element-margin); + padding: 1.5em; + + > :last-child, + > :last-child > :last-child, + > :last-child > :last-child > :last-child { + margin-bottom: 0; + } + + &.alt { + border: 0; + padding: 0; + } + } + +/* Icon */ + + .icon { + @include icon; + border-bottom: none; + position: relative; + + &.solid { + &:before { + font-weight: 900; + } + } + + &.brands { + &:before { + font-family: 'Font Awesome 5 Brands'; + } + } + + > .label { + display: none; + } + } + +/* Image */ + + .image { + border: 0; + display: inline-block; + position: relative; + + &:before { + background: url('images/overlay.png'); + content: ''; + display: block; + height: 100%; + left: 0; + position: absolute; + top: 0; + width: 100%; + } + + img { + display: block; + } + + &.left { + float: left; + margin: 0 1.5em 1em 0; + top: 0.25em; + } + + &.right { + float: right; + margin: 0 0 1em 1.5em; + top: 0.25em; + } + + &.fit { + display: block; + margin: 0 0 (_size(element-margin) * 1.5) 0; + width: 100%; + + img { + display: block; + width: 100%; + } + } + } + +/* List */ + + ol { + list-style: decimal; + margin: 0 0 _size(element-margin) 0; + padding-left: 1.25em; + + li { + padding-left: 0.25em; + } + } + + ul { + list-style: disc; + margin: 0 0 _size(element-margin) 0; + padding-left: 1em; + + li { + padding-left: 0.5em; + } + + &.alt { + list-style: none; + padding-left: 0; + + li { + border-top: solid 1px _palette(border); + padding: 0.5em 0; + + &:first-child { + border-top: 0; + padding-top: 0; + } + } + } + } + + dl { + margin: 0 0 _size(element-margin) 0; + } + +/* Actions */ + + ul.actions { + @include vendor('display', 'flex'); + cursor: default; + list-style: none; + margin-left: (_size(element-margin) * -0.5); + padding-left: 0; + + li { + padding: 0 0 0 (_size(element-margin) * 0.5); + vertical-align: middle; + } + + &.special { + @include vendor('justify-content', 'center'); + width: 100%; + margin-left: 0; + + li { + &:first-child { + padding-left: 0; + } + } + } + + &.stacked { + @include vendor('flex-direction', 'column'); + margin-left: 0; + + li { + padding: (_size(element-margin) * 0.65) 0 0 0; + + &:first-child { + padding-top: 0; + } + } + } + + &.fit { + width: calc(100% + #{_size(element-margin) * 0.5}); + + li { + @include vendor('flex-grow', '1'); + @include vendor('flex-shrink', '1'); + width: 100%; + + > * { + width: 100%; + } + } + + &.stacked { + width: 100%; + } + } + + @include breakpoint('<=mobilep') { + &:not(.fixed) { + @include vendor('flex-direction', 'column'); + margin-left: 0; + width: 100% !important; + + li { + @include vendor('flex-grow', '1'); + @include vendor('flex-shrink', '1'); + padding: (_size(element-margin) * 0.5) 0 0 0; + text-align: center; + width: 100%; + + > * { + width: 100%; + } + + &:first-child { + padding-top: 0; + } + + input[type="submit"], + input[type="reset"], + input[type="button"], + button, + .button { + width: 100%; + + &.icon { + &:before { + margin-left: -0.5em; + } + } + } + } + } + } + } + +/* Icons */ + + ul.icons { + cursor: default; + list-style: none; + padding-left: 0; + + li { + display: inline-block; + padding: 0 1em 0 0; + + &:last-child { + padding-right: 0; + } + + .icon { + &:before { + font-size: 1.5em; + } + } + } + } + +/* Table */ + + .table-wrapper { + -webkit-overflow-scrolling: touch; + overflow-x: auto; + } + + table { + margin: 0 0 _size(element-margin) 0; + width: 100%; + + tbody { + tr { + border: solid 1px _palette(border); + border-left: 0; + border-right: 0; + + &:nth-child(2n + 1) { + background-color: _palette(border-bg); + } + } + } + + td { + padding: 0.75em 0.75em; + } + + th { + color: _palette(fg-bold); + font-size: 0.9em; + font-weight: _font(weight-bold); + padding: 0 0.75em 0.75em 0.75em; + text-align: left; + } + + thead { + border-bottom: solid 2px _palette(border); + } + + tfoot { + border-top: solid 2px _palette(border); + } + + &.alt { + border-collapse: separate; + + tbody { + tr { + td { + border: solid 1px _palette(border); + border-left-width: 0; + border-top-width: 0; + + &:first-child { + border-left-width: 1px; + } + } + + &:first-child { + td { + border-top-width: 1px; + } + } + } + } + + thead { + border-bottom: 0; + } + + tfoot { + border-top: 0; + } + } + } + +/* Button */ + + input[type="submit"], + input[type="reset"], + input[type="button"], + button, + .button { + @include vendor('appearance', 'none'); + @include vendor('transition', ('background-color #{_duration(transition)} ease-in-out', 'color #{_duration(transition)} ease-in-out')); + background-color: _palette(accent2, bg); + border-radius: 0; + border: 0; + color: _palette(accent2, fg-bold) !important; + cursor: pointer; + display: inline-block; + font-size: 0.9em; + font-weight: _font(weight-bold); + height: 4em; + letter-spacing: 0.125em; + line-height: 4em; + overflow: hidden; + padding: 0 2.75em; + text-align: center; + text-decoration: none; + text-overflow: ellipsis; + text-transform: uppercase; + white-space: nowrap; + + &:hover { + background-color: lighten(_palette(accent2, bg), 5); + } + + &:active { + background-color: darken(_palette(accent2, bg), 5); + } + + &.icon { + padding-left: 2.35em; + + &:before { + margin-right: 0.5em; + } + } + + &.fit { + width: 100%; + } + + &.small { + font-size: 0.8em; + height: 3.5em; + line-height: 3.5em; + padding: 0 2em; + } + + &.large { + font-size: 1.25em; + height: (_size(element-height) * 0.9); + line-height: (_size(element-height) * 0.9); + } + + &.alt { + background-color: transparent; + box-shadow: inset 0 0 0 2px _palette(border); + color: _palette(fg-bold) !important; + + &:hover { + background-color: _palette(border-bg); + } + + &:active { + background-color: _palette(border2-bg); + } + + &.icon { + &:before { + color: _palette(fg-light); + } + } + } + + &.primary { + background-color: _palette(accent1, bg); + color: _palette(accent1, fg-bold) !important; + + &:hover { + background-color: lighten(_palette(accent1, bg), 5); + } + + &:active { + background-color: darken(_palette(accent1, bg), 5); + } + } + + &.disabled, + &:disabled { + background-color: _palette(fg) !important; + box-shadow: inset 0 -0.15em 0 0 rgba(0,0,0,0.15); + color: _palette(bg) !important; + cursor: default; + opacity: 0.25; + } + } + +/* Feature */ + + .feature { + margin: 0 0 _size(element-margin) 0; + padding: _size(element-margin) 0 _size(element-margin) 9em; + position: relative; + + i { + border-radius: 100%; + border: solid 3px _palette(border); + color: _palette(accent1, bg); + display: block; + height: 7em; + left: 0; + line-height: 7.25em; + margin-top: -0.5em; + position: absolute; + text-align: center; + top: _size(element-margin); + width: 7em; + + &:before { + font-size: 40px; + } + } + + h3 { + margin-bottom: (_size(element-margin) * 0.25); + } + + p { + margin-bottom: 0; + } + } + +/* Image Feature */ + + .image-feature { + position: relative; + text-align: center; + margin: 0 0.5em _size(element-margin) 0.5em; + + > a { + display: block; + } + + header { + background: #fff; + left: 0; + padding: (_size(element-margin) * 0.75) 0; + position: absolute; + top: 0; + width: 100%; + z-index: 1; + + &:before { + @include vendor('transform', 'rotate(45deg)'); + background: #fff; + bottom: -0.5em; + content: ''; + display: block; + height: 1em; + left: 50%; + margin-left: -0.5em; + position: absolute; + width: 1em; + } + + h3 { + font-size: 1em; + margin: 0; + } + } + + .image { + margin: 0; + } + + p { + margin: 0; + } + + footer { + background: #1d2726; + background: rgba(29,39,38,0.9); + bottom: 0; + color: #fff; + left: 0; + padding: _size(element-margin) * 0.75; + position: absolute; + width: 100%; + z-index: 1; + + input[type="submit"], + input[type="reset"], + input[type="button"], + button, + .button { + &.alt { + box-shadow: inset 0 0 0 2px rgba(255,255,255,0.25); + color: #fff !important; + } + } + } + } + +/* Wrapper */ + + .wrapper { + padding: 6em 0 4em 0; + + &.style1 { + background: _palette(accent1, bg); + color: _palette(accent1, fg); + + h2, h3, h4, h5, h6, strong { + color: _palette(accent1, fg-bold); + } + + header { + &.major { + &:after { + background: rgba(255,255,255,0.25); + } + } + } + } + + &.style2 { + background: #ffffff; + } + + &.style3 { + background: #f4f4f4; + } + + &.style4 { + background: #fafafa; + } + } + +/* Header */ + + #page-wrapper { + padding-top: 3em; + } + + #header { + background: #1d2726; + color: #fff; + cursor: default; + height: 3.25em; + left: 0; + line-height: 3.25em; + position: fixed; + top: 0; + width: 100%; + z-index: 10000; + + h1 { + color: #fff; + height: inherit; + left: 1.25em; + line-height: inherit; + margin: 0; + padding: 0; + position: absolute; + top: 0; + + a { + font-size: 1em; + + &:before { + color: _palette(accent1, bg); + margin-right: 0.35em; + } + } + } + + nav { + font-weight: _font(weight-bold); + height: inherit; + letter-spacing: 0.125em; + line-height: inherit; + position: absolute; + right: 1.5em; + text-transform: uppercase; + top: 0; + vertical-align: middle; + + > ul { + list-style: none; + margin: 0; + padding-left: 0; + + > li { + display: inline-block; + margin-left: 2em; + padding-left: 0; + + a { + @include vendor('transition', 'color #{_duration(transition)} ease-in-out'); + color: #ccc; + display: inline-block; + text-decoration: none; + font-size: 0.8em; + + &:before { + margin-right: 0.5em; + opacity: 0.5; + } + + &:hover { + color: #fff; + } + } + + &.active { + > a { + color: #fff; + } + } + + &:first-child { + margin-left: 0; + } + + input[type="submit"], + input[type="reset"], + input[type="button"], + button, + .button { + font-size: 1em; + height: 2.25em; + line-height: 2.25em; + margin-bottom: 0; + padding: 0 1em; + position: relative; + top: -0.125em; + vertical-align: middle; + } + + > ul { + display: none; + } + } + } + } + + .container { + position: relative; + + h1 { + left: 0; + } + + nav { + right: 0; + } + } + } + + .dropotron { + background: #1d2726; + color: #fff; + font-weight: _font(weight-bold); + letter-spacing: 0.125em; + list-style: none; + margin-top: -1em; + min-width: 14em; + padding: 1.25em 0; + text-transform: uppercase; + + &.level-0 { + font-size: 0.8em; + margin-top: 1em; + + &:before { + @include vendor('transform', 'rotate(45deg)'); + background: #1d2726; + content: ''; + display: block; + height: 1em; + position: absolute; + right: 1.5em; + top: -0.5em; + width: 1em; + } + } + + li { + > a { + @include vendor('transition', 'color #{_duration(transition)} ease-in-out'); + color: #ccc; + display: block; + padding: 0.125em 1.25em; + text-decoration: none; + + &:hover { + color: #fff; + } + } + + &.active { + > a { + color: #fff; + } + } + } + } + +/* Banner */ + + #banner { + background-color: #f6f6f6; + background-attachment: scroll, fixed; + background-image: url('images/overlay.png'), url('../../images/banner.jpg'); + background-position: top left, center center; + background-repeat: repeat, no-repeat; + background-size: auto, cover; + color: #fff; + padding: 12em 0; + position: relative; + text-align: center; + + &:after { + @include vendor('transition', 'opacity 4s ease-in-out'); + background: #313148; + content: ''; + height: 100%; + left: 0; + opacity: 0; + position: absolute; + top: 0; + width: 100%; + z-index: 1; + } + + :last-child { + margin-bottom: 0; + } + + .inner { + background: #1d2726; + background: rgba(29,39,38,0.9); + display: inline-block; + padding: 3.5em 5em; + position: relative; + z-index: 2; + + h2 { + color: inherit; + font-size: 2.5em; + line-height: 1.35em; + margin: 0; + padding: 0; + } + + p { + font-size: 1em; + letter-spacing: 0.125em; + line-height: 2em; + margin: _size(element-margin) 0 0 0; + padding: _size(element-margin) 0 0 0; + position: relative; + text-transform: uppercase; + top: -0.25em; + + &:before { + background: #888; + background: rgba(255,255,255,0.25); + content: ''; + display: block; + height: 3px; + left: 50%; + margin: 0 0 0 -3em; + position: absolute; + top: 0; + width: 6em; + } + } + + .actions { + margin-top: _size(element-margin); + } + + input[type="submit"], + input[type="reset"], + input[type="button"], + button, + .button { + &.alt { + box-shadow: inset 0 0 0 2px rgba(255,255,255,0.25); + color: #fff !important; + } + } + } + } + + body.is-preload { + #banner { + &:after { + opacity: 1.0; + } + } + } + +/* Main */ + + #main { + > header.major { + margin: 0 0 _size(element-margin) 0; + text-align: center; + } + } + +/* One */ + + #one { + padding-bottom: 0; + + p { + font-size: 1.25em; + line-height: 1.75em; + margin: -0.5em 0 0 0; + } + + .inner { + display: inline-block; + margin-top: -6em; + padding-right: 6em; + vertical-align: middle; + width: 50%; + } + + .device { + border: solid 40px #fff; + border-bottom: 0; + border-radius: 20px; + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; + display: inline-block; + margin-bottom: 0; + position: relative; + vertical-align: middle; + width: 50%; + + &:after { + background: #eee; + border-radius: 100%; + content: ''; + height: 10px; + left: 50%; + margin: -23px 0 0 -5px; + position: absolute; + top: 0; + width: 10px; + } + } + } + +/* Footer */ + + #footer { + background: #1d2726; + color: #888; + padding: 4em 0; + text-align: center; + + .icons { + padding-left: 0; + + li { + padding: 0 2em 0 0; + + &:last-child { + padding-right: 0; + } + + a { + @include vendor('transition', 'color #{_duration(transition)} ease-in-out'); + color: #666; + + &:hover { + color: #fff; + } + } + } + } + + .copyright { + font-size: 0.9em; + margin: _size(element-margin) 0 0 0; + } + } + +/* Wide */ + + @include breakpoint('<=wide') { + + /* Basic */ + + body, input, select, textarea { + font-size: 11pt; + } + + } + +/* Normal */ + + @include breakpoint('<=normal') { + + /* Basic */ + + body, input, select, textarea { + font-size: 11pt; + } + + /* Feature */ + + .feature { + padding-left: 7em; + + i { + height: 5.25em; + line-height: 5.5em; + margin-top: 0; + width: 5.25em; + + &:before { + font-size: 32px; + } + } + } + + /* Wrapper */ + + .wrapper { + padding: 4em 0 2em 0; + } + + /* Banner */ + + #banner { + background-attachment: scroll; + padding: 8em 0; + + .inner { + padding: 3em 4em; + + h2 { + font-size: 2.25em; + } + } + } + + /* Main */ + + #main { + padding: _size(element-margin) 0; + } + + /* One */ + + #one { + .inner { + margin-top: -4em; + padding-right: 4em; + } + + .device { + border-width: 35px; + + &:after { + margin-top: -22px; + } + } + } + + } + +/* Narrow */ + + #navPanel, #navButton { + display: none; + } + + @include breakpoint('<=narrow') { + + /* Basic */ + + html, body { + overflow-x: hidden; + } + + body, input, select, textarea { + font-size: 12pt; + } + + h2 { + font-size: 1.25em; + line-height: 1.75em; + } + + h3 { + font-size: 1.1em; + line-height: 1.5em; + } + + h4 { + font-size: 1em; + line-height: 1.5em; + } + + /* Section/Article */ + + section, article { + &.special { + text-align: center; + } + } + + header { + h2 + p { + font-size: 0.9em; + } + + h3 + p { + font-size: 0.8em; + } + + h4 + p, + h5 + p, + h6 + p { + font-size: 0.8em; + } + } + + /* Feature */ + + .feature { + padding-left: 9em; + + i { + height: 7em; + line-height: 7.5em; + margin-top: -0.5em; + width: 7em; + + &:before { + font-size: 42px; + } + } + } + + /* Image Feature */ + + .image-feature { + .image { + max-height: 30em; + overflow: hidden; + } + } + + /* Header */ + + #page-wrapper { + padding-top: 0; + } + + #header { + display: none; + } + + /* Banner */ + + #banner { + padding: 10em 0; + + .inner { + padding: 3em; + + h2 { + font-size: 2em; + } + } + } + + /* Main */ + + #main { + > header.major { + margin: 0; + } + } + + /* One */ + + #one { + p { + font-size: 1em; + } + + .inner { + display: block; + margin: 0 auto; + max-width: 100%; + padding: 0; + text-align: center; + width: 35em; + } + + .device { + display: block; + margin: (_size(element-margin) * 2) auto 0 auto; + max-width: 100%; + width: 30em; + } + } + + /* Off-Canvas Navigation */ + + #page-wrapper { + @include vendor('backface-visibility', 'hidden'); + @include vendor('transition', 'transform #{_duration(navPanel)} ease'); + padding-bottom: 1px; + } + + #navButton { + @include vendor('backface-visibility', 'hidden'); + @include vendor('transition', 'transform #{_duration(navPanel)} ease'); + display: block; + height: 4em; + left: 0; + position: fixed; + top: 0; + width: 6em; + z-index: _misc(z-index-base) + 1; + + .toggle { + @include icon(false, solid); + height: 100%; + left: 0; + position: absolute; + top: 0; + width: 100%; + + &:before { + background: transparentize(_palette(accent2, bg), 0.25); + color: _palette(accent2, fg-bold); + content: '\f0c9'; + display: block; + font-size: 18px; + height: 2.35em; + left: 0.5em; + line-height: 2.35em; + position: absolute; + text-align: center; + top: 0.5em; + width: 3em; + } + } + } + + #navPanel { + @include vendor('backface-visibility', 'hidden'); + @include vendor('transform', 'translateX(#{_size(navPanel) * -1})'); + @include vendor('transition', ('transform #{_duration(navPanel)} ease')); + @include vendor('background-image', 'linear-gradient(left, rgba(0,0,0,0) 95%, rgba(0,0,0,0.1))'); + display: block; + height: 100%; + left: 0; + overflow-y: auto; + position: fixed; + top: 0; + width: _size(navPanel); + z-index: _misc(z-index-base) + 2; + background: _palette(accent2, bg); + color: _palette(accent2, fg); + padding: 0.25em 1.5em; + + .link { + border-top: solid 1px rgba(255,255,255,0.05); + color: _palette(accent2, fg); + display: block; + font-size: 0.8em; + font-weight: _font(weight-bold); + height: 3.5em; + letter-spacing: 0.125em; + line-height: 3.5em; + text-decoration: none; + text-transform: uppercase; + + &:first-child { + border-top: 0; + } + + &.depth-0 { + color: _palette(accent2, fg-bold); + } + + .indent-1 { display: inline-block; width: 1.25em; } + .indent-2 { display: inline-block; width: 2.5em; } + .indent-3 { display: inline-block; width: 3.75em; } + .indent-4 { display: inline-block; width: 5em; } + .indent-5 { display: inline-block; width: 6.25em; } + } + } + + body { + &.navPanel-visible { + #page-wrapper { + @include vendor('transform', 'translateX(#{_size(navPanel)})'); + } + + #navButton { + @include vendor('transform', 'translateX(#{_size(navPanel)})'); + } + + #navPanel { + @include vendor('transform', 'translateX(0)'); + } + } + } + + } + +/* Mobile */ + + @include breakpoint('<=mobile') { + + /* Basic */ + + body, input, select, textarea { + font-size: 12pt; + } + + /* Feature */ + + .feature { + margin: 0 auto _size(element-margin) auto; + max-width: 100%; + padding: 0; + text-align: center; + width: 30em; + + i { + left: 0; + margin: 0 auto _size(element-margin) auto; + position: relative; + top: 0; + } + } + + /* Image Feature */ + + .image-feature { + margin: 0 auto _size(element-margin) auto; + max-width: 100%; + width: 25em; + + .image { + max-height: none; + } + } + + /* Wrapper */ + + .wrapper { + padding: 2.5em 1.25em 0.5em 1.25em; + } + + /* Banner */ + + #banner { + padding: 6em 0; + + .inner { + padding: 2em 2.5em; + width: 100%; + + h2 { + font-size: 1.5em; + } + + p { + margin: (_size(element-margin) * 0.75) 0 0 0; + padding: (_size(element-margin) * 0.75) 0 0 0; + } + } + } + + /* One */ + + #one { + .device { + border-width: 20px; + margin-top: _size(element-margin); + max-width: 100%; + width: 25em; + + &:after { + height: 8px; + margin: -13px 0 0 -4px; + width: 8px; + } + } + } + + } + +/* Mobile (Portrait) */ + + @include breakpoint('<=mobilep') { + + /* Basic */ + + html, body { + min-width: 320px; + } + + body, input, select, textarea { + font-size: 12pt; + } + + h1, h2, h3, h4, h5, h6 { + br { + display: none; + } + } + + h2 { + font-size: 1.15em; + line-height: 1.75em; + } + + h3 { + font-size: 1em; + line-height: 1.5em; + } + + /* List */ + + ul { + &.actions { + margin: 0 0 _size(element-margin) 0; + + li { + display: block; + padding: (_size(element-margin) * 0.5) 0 0 0; + text-align: center; + width: 100%; + + &:first-child { + padding-top: 0; + } + + > * { + margin: 0 !important; + width: 100%; + + &.icon { + &:before { + margin-left: -2em; + } + } + } + } + + &.small { + li { + padding: (_size(element-margin) * 0.25) 0 0 0; + + &:first-child { + padding-top: 0; + } + } + } + } + } + + /* Button */ + + input[type="submit"], + input[type="reset"], + input[type="button"], + button, + .button { + padding: 0; + } + + /* One */ + + #one { + .device { + border-width: 15px; + + &:after { + height: 5px; + margin: -10px 0 0 -2.5px; + width: 5px; + } + } + } + + } \ No newline at end of file diff --git a/archive/beauty/assets/webfonts/fa-brands-400.eot b/archive/beauty/assets/webfonts/fa-brands-400.eot new file mode 100755 index 0000000..e79f40f Binary files /dev/null and b/archive/beauty/assets/webfonts/fa-brands-400.eot differ diff --git a/archive/beauty/assets/webfonts/fa-brands-400.svg b/archive/beauty/assets/webfonts/fa-brands-400.svg new file mode 100755 index 0000000..cc4c95c --- /dev/null +++ b/archive/beauty/assets/webfonts/fa-brands-400.svg @@ -0,0 +1,3442 @@ + + + + + +Created by FontForge 20190112 at Tue Jun 4 15:16:44 2019 + By Robert Madole +Copyright (c) Font Awesome + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/archive/beauty/assets/webfonts/fa-brands-400.ttf b/archive/beauty/assets/webfonts/fa-brands-400.ttf new file mode 100755 index 0000000..217ffe9 Binary files /dev/null and b/archive/beauty/assets/webfonts/fa-brands-400.ttf differ diff --git a/archive/beauty/assets/webfonts/fa-brands-400.woff b/archive/beauty/assets/webfonts/fa-brands-400.woff new file mode 100755 index 0000000..a2d8025 Binary files /dev/null and b/archive/beauty/assets/webfonts/fa-brands-400.woff differ diff --git a/archive/beauty/assets/webfonts/fa-brands-400.woff2 b/archive/beauty/assets/webfonts/fa-brands-400.woff2 new file mode 100755 index 0000000..e27b0bf Binary files /dev/null and b/archive/beauty/assets/webfonts/fa-brands-400.woff2 differ diff --git a/archive/beauty/assets/webfonts/fa-regular-400.eot b/archive/beauty/assets/webfonts/fa-regular-400.eot new file mode 100755 index 0000000..d62be2f Binary files /dev/null and b/archive/beauty/assets/webfonts/fa-regular-400.eot differ diff --git a/archive/beauty/assets/webfonts/fa-regular-400.svg b/archive/beauty/assets/webfonts/fa-regular-400.svg new file mode 100755 index 0000000..8e195fb --- /dev/null +++ b/archive/beauty/assets/webfonts/fa-regular-400.svg @@ -0,0 +1,803 @@ + + + + + +Created by FontForge 20190112 at Tue Jun 4 15:16:44 2019 + By Robert Madole +Copyright (c) Font Awesome + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/archive/beauty/assets/webfonts/fa-regular-400.ttf b/archive/beauty/assets/webfonts/fa-regular-400.ttf new file mode 100755 index 0000000..eb3cb5e Binary files /dev/null and b/archive/beauty/assets/webfonts/fa-regular-400.ttf differ diff --git a/archive/beauty/assets/webfonts/fa-regular-400.woff b/archive/beauty/assets/webfonts/fa-regular-400.woff new file mode 100755 index 0000000..43b1a9a Binary files /dev/null and b/archive/beauty/assets/webfonts/fa-regular-400.woff differ diff --git a/archive/beauty/assets/webfonts/fa-regular-400.woff2 b/archive/beauty/assets/webfonts/fa-regular-400.woff2 new file mode 100755 index 0000000..b9344a7 Binary files /dev/null and b/archive/beauty/assets/webfonts/fa-regular-400.woff2 differ diff --git a/archive/beauty/assets/webfonts/fa-solid-900.eot b/archive/beauty/assets/webfonts/fa-solid-900.eot new file mode 100755 index 0000000..c77baa8 Binary files /dev/null and b/archive/beauty/assets/webfonts/fa-solid-900.eot differ diff --git a/archive/beauty/assets/webfonts/fa-solid-900.svg b/archive/beauty/assets/webfonts/fa-solid-900.svg new file mode 100755 index 0000000..b6ae289 --- /dev/null +++ b/archive/beauty/assets/webfonts/fa-solid-900.svg @@ -0,0 +1,4649 @@ + + + + + +Created by FontForge 20190112 at Tue Jun 4 15:16:44 2019 + By Robert Madole +Copyright (c) Font Awesome + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/archive/beauty/assets/webfonts/fa-solid-900.ttf b/archive/beauty/assets/webfonts/fa-solid-900.ttf new file mode 100755 index 0000000..c6c3dd4 Binary files /dev/null and b/archive/beauty/assets/webfonts/fa-solid-900.ttf differ diff --git a/archive/beauty/assets/webfonts/fa-solid-900.woff b/archive/beauty/assets/webfonts/fa-solid-900.woff new file mode 100755 index 0000000..77c1786 Binary files /dev/null and b/archive/beauty/assets/webfonts/fa-solid-900.woff differ diff --git a/archive/beauty/assets/webfonts/fa-solid-900.woff2 b/archive/beauty/assets/webfonts/fa-solid-900.woff2 new file mode 100755 index 0000000..e30fb67 Binary files /dev/null and b/archive/beauty/assets/webfonts/fa-solid-900.woff2 differ diff --git a/archive/beauty/images/archive/1.jpg b/archive/beauty/images/archive/1.jpg new file mode 100755 index 0000000..19bf80d Binary files /dev/null and b/archive/beauty/images/archive/1.jpg differ diff --git a/archive/beauty/images/banner.jpg b/archive/beauty/images/banner.jpg new file mode 100755 index 0000000..b4a1fb0 Binary files /dev/null and b/archive/beauty/images/banner.jpg differ diff --git a/archive/beauty/images/evelin/1.jpg b/archive/beauty/images/evelin/1.jpg new file mode 100755 index 0000000..5c0ea37 Binary files /dev/null and b/archive/beauty/images/evelin/1.jpg differ diff --git a/archive/beauty/images/evelin/2.jpg b/archive/beauty/images/evelin/2.jpg new file mode 100755 index 0000000..3035f70 Binary files /dev/null and b/archive/beauty/images/evelin/2.jpg differ diff --git a/archive/beauty/images/evelin/3.jpg b/archive/beauty/images/evelin/3.jpg new file mode 100755 index 0000000..40e9292 Binary files /dev/null and b/archive/beauty/images/evelin/3.jpg differ diff --git a/archive/beauty/images/evelin/4.jpg b/archive/beauty/images/evelin/4.jpg new file mode 100755 index 0000000..4d87d2f Binary files /dev/null and b/archive/beauty/images/evelin/4.jpg differ diff --git a/archive/beauty/images/evelin/5.jpg b/archive/beauty/images/evelin/5.jpg new file mode 100755 index 0000000..a96d8c5 Binary files /dev/null and b/archive/beauty/images/evelin/5.jpg differ diff --git a/archive/beauty/images/evelin/6.jpg b/archive/beauty/images/evelin/6.jpg new file mode 100755 index 0000000..b6584f5 Binary files /dev/null and b/archive/beauty/images/evelin/6.jpg differ diff --git a/archive/beauty/images/evelin/evelin.jpg b/archive/beauty/images/evelin/evelin.jpg new file mode 100755 index 0000000..1a227aa Binary files /dev/null and b/archive/beauty/images/evelin/evelin.jpg differ diff --git a/archive/beauty/images/map.jpg b/archive/beauty/images/map.jpg new file mode 100755 index 0000000..db8551c Binary files /dev/null and b/archive/beauty/images/map.jpg differ diff --git a/archive/beauty/images/ollo_rose.png b/archive/beauty/images/ollo_rose.png new file mode 100755 index 0000000..4b4b99b Binary files /dev/null and b/archive/beauty/images/ollo_rose.png differ diff --git a/archive/beauty/index.html b/archive/beauty/index.html new file mode 100755 index 0000000..0719b6c --- /dev/null +++ b/archive/beauty/index.html @@ -0,0 +1,698 @@ + + + + + Studio Beve - Barber + + + + + + + + + + + + + + +
+ + + + + + +
+ +
+ + +
+
+
+
+ +

Om oss

+
+
+
+

+ Mitt navn er Evelin Bence, leder og skaperen av Studio Beve. Jeg anser det som + viktig at våre gjester under oppholdet hos oss – mens de stenger ute lit av støyen + fra omverdenen – kan lade sine batterier og kan vende tilbake til hverdagen + forskjønnet både innvendig og utvendig. +

+

+ Kvalitetstid, maksimal oppmerksomhet, de mest profesjonelle verktøyene, hånd + i hånd med profesjonalitet og kompetanse, utgjør grunnlaget for vår filosofi og + tjenester. +

+

+ Jeg mener at skjønnhet, mote og trend ikke er kjønnsspesifikke, og hos oss har + derfor alle mulighet til å bli vakrere på ett sted, uavhengig av kjønn. Hos Studio + Beve Barber og Studio Beve Beauty kan dere finne de tjenestene som er riktige + for dere. +

+

+ Med nesten 10 års erfaring fra skjønnhetsindustrien, inkludert mange års + internasjonal erfaring, tenkte jeg det var på tide å åpne mitt eget studio her i + Trondheim i Innheredsveien 92, hvor gjestene har mulighet til å parkere gratis + under behandlingene. +

+

+ Det er en ekstra glede for meg at jeg klarte å finne et tradisjonelt sted hvor det + allerede var en skjønnhetssalong på 50-tallet. Derfor har jeg nå muligheten til å + videreføre denne tradisjonen i et moderne miljø. + Bli vakker hos oss. Vi ser frem til å ønske deg velkommen. +

+
+
+ +

Bence Evelin
Eieren, Studio Beve

+
+ + + +
+
+
+ +

EVELIN Bence - vippestylist, make up artist, PMU-artist

+
+
+
+ +

+ "Min tiltrekning og kjærlighet til yrket var tydelig allerede som barn. Først + tilegnet jeg meg det grunnleggende om sminke på meg selv, og senere på + venninnene mine. Og som voksen var det ingen tvil om hvilken vei jeg skulle + gå. Jeg avsluttet studiene mine i skjønnhetspleie i 2016 og fikk også min + kvalifikasjon i vippeextension samme år. +

+

+ Jeg har alltid forsøkt, og streber fortsatt etter å gi mine gjester en så fullstendig + service som mulig. Derfor legger jeg særlig vekt på videreutdanning. Blant + instruktørene mine er det makeupartister eller sminketatovører som har vunnet + flere ungarske mesterskap. +

+

+ Min nyeste lidenskap er å lage sminketatoveringer. I dag tillater bruk av + toppmoderne teknologi og profesjonelle materialer meg å gi gjestene mine et + naturlig, individualisert utseende. Tjenestene i porteføljen min er uttrykk for den + naturlige retningen jeg representerer, det være seg sminke, sminketatoveringer + eller endog vippeextension. +

+

+ Jeg er stolt over at jeg gjennom årene har kunnet ta de glade smilene til fornøyde + gjester i mitt hjerte, i mitt hjemland Ukraina, og deretter i Ungarn. Jeg er også + glad for at selv om jeg bare har bodd i Norge siden april 2023, klarer jeg likevel + å etablere et godt forhold til gjestene mine og tilbringe tiden sammen med dem i + godt humør. Jeg legger også stor vekt på å lære det magiske norske språket slik + at jeg kan snakke med gjestene mine på morsmålet deres. +

+

+ Jeg tror at kontinuerlig utvikling, kvalitetsarbeid og engasjement hjelper meg til + å bli en bedre profesjonell dag for dag." +

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

Behandlinger

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

Priser

+

Prisen på alle hårbehandling inkluderer hårvask og styling.
10% studentrabatt ved framvising av ID, kan benyttes fra mandag til torsdag.
Åpningstilbud i desember og januar: 20% rabatt.

+
+
+

Vippeextensions

+
+
+
+
+ +
én vippe på hver naturlig vippe
+
+
+
kr 1200
+
+
+
+
+
+
+
+ +
hvis 60% eller mer av vippen mangler, må vi sette på nytt sett
+
+
+
kr 850
+
+
+
+
+
+
+
+ +
to vipper på hver naturlig vippe
+
+
+
kr 1350
+
+
+
+
+
+
+
+ +
hvis 60% eller mer av vippen mangler, må vi sette på nytt sett
+
+
+
kr 950
+
+
+
+
+
+
+
+ +
tre-fem vipper på hver naturlig vippe
+
+
+
kr 1650
+
+
+
+
+
+
+
+ +
hvis 60% eller mer av vippen mangler, må vi sette på nytt sett
+
+
+
kr 1150
+
+
+
+
+
+
+
+
+ +
Fjerning av vipper
+
+
+
kr 300
+
+
+
+
+
+

Sminke

+
+
+
+
+
+ +
Dagmakeup
+
+
+
kr 650
+
+
+
+
+
+
+
+
+ +
Sminke til spesielle anledninger
+
+
+
kr 950
+
+
+
+
+
+
+
+
+ +
Bryllupssminkep
+
+
+
kr 1600
+
+
+
+
+
+
+
+
+ +
Vipper til spesielle anledninger
+
+
+
kr 200
+
+
+
+
+
+

Øyenbryn- og vippestyling

+
+
+
+
+
+ +
Laminering, farging og forming av bryn
+
+
+
kr 900
+
+
+
+
+
+
+
+
+ +
Forming og farging av bryn
+
+
+
kr 450
+
+
+
+
+
+
+
+
+ +
Farging av vipper
+
+
+
kr 250
+
+
+
+
+
+
+
+
+ +
Forming av bryn
+
+
+
kr 250
+
+
+
+
+
+
+
+
+ +
Henna farging, inkl. forming av bryn
+
+
+
kr 550
+
+
+
+
+
+
+
+
+ +
Vippeløft, inkl. farging
+
+
+
kr 900
+
+
+
+
+
+
+
+
+ +
såfremt behandlingen ble gjort hos oss
+
+
+
kr 2800
+
+
+
+
+
+
+
+
+ +
inkl. én påfyll etter 4-8 uker
+
+
+
kr 3500
+
+
+
+
+
+

Voksing

+
+
+
+
+
+ +
Arm
+
+
+
kr 350
+
+
+
+
+
+
+
+
+ +
Dame intim bikinilinje
+
+
+
kr 300
+
+
+
+
+
+
+
+
+ +
Armhuler
+
+
+
kr 350
+
+
+
+
+
+
+
+
+ +
Hele benet
+
+
+
kr 700
+
+
+
+
+
+
+
+
+ +
Legg
+
+
+
kr 400
+
+
+
+
+
+
+
+
+ +
Rygg
+
+
+
kr 450
+
+
+
+
+
+
+
+
+ +
Leppe og hake
+
+
+
kr 300
+
+
+
+
+
+
+
+
+ +
Nese
+
+
+
kr 100
+
+
+
+
+
+
+
+ + +
+
+
+
+ +

Åpningstider

+

Gratis kunderparkering under behandlingen

+
+
+
+
+
+
Ukedager
+
+
+
10:00 to 18:00
+
+
+
+
+
Lørdag
+
+
+
10:00 to 16:00
+
+
+
+
+
Søndag
+
+
+
Stengt
+
+
+
+ +
+
+ + + + + + + +
+ + +
+
+ + + + + + + + + + + \ No newline at end of file diff --git a/archive/beauty/index_en.html b/archive/beauty/index_en.html new file mode 100755 index 0000000..7c4800a --- /dev/null +++ b/archive/beauty/index_en.html @@ -0,0 +1,681 @@ + + + + + Studio Beve - Barber + + + + + + + + + + + + + + +
+ + + + + + +
+ +
+ + +
+
+
+
+ +

About Us

+
+
+
+

+ My name is Evelin Bence, the leader and creator of Studio Beve. I consider it + important that our guests during their stay – resting a little from the noise of the + world – recharge their batteries and return to everyday life beautified inside as + well as outside. +

+

+ Quality time, maximum attention, the most professional tools, together with + professionalism and expertise, stand for the basis of our philosophy and + services. +

+

+ I believe that beauty, fashion, and trend are not gender-specific, so we have the + opportunity for everyone to become beautiful in one place, regardless of gender. + And among our Barber and Beauty departments, you can find the right services + for you. +

+

+ With nearly 10 years of experience in the beauty industry, including many years + of international experience, I thought it was time to open my own studio here in + Trondheim at Innheredsveien 92, where guests can park free of charge during + the treatments. +

+

+ It is an extra pleasure for me that I managed to find a traditional place where + there was already a beauty salon in the 50s. Therefore, I now have the + opportunity to carry on this tradition in a modern environment. + Become beautiful with us. We look forward to seeing you. +

+
+
+ +

Bence Evelin
Owner, Studio Beve

+
+ + + +
+
+
+ +

EVELIN Bence - lash stylist, make up artist, PMU artist

+
+
+
+ +

+ My attraction and love for the profession was already evident as a child. First, I acquired the basics of makeup on myself, and then on my girlfriends. As an adult, there was no question what my path should be. I finished my studies as a beautician in 2016, and also obtained my eyelash extension qualification in the same year. +

+

+ I have always strived – and still strive – to provide my guests with the fullest possible service. Therefore, I pay special attention to further training. Among my instructors you can find multiple Hungarian champion makeup artists or make-up tattooists. +

+

+ My latest passion is making makeup tattoos. Today, the use of state-of-the-art technology and professional materials allows me to provide my guests with a natural, individualized look. The services in my portfolio reflect the natural direction I represent, be it makeup, makeup tattoos or even eyelashes. +

+

+ I am proud that over the years I have been able to close the happy smiles of satisfied guests in my heart, in my native Ukraine, and then in Hungary. I am also pleased that although I have only been living in Norway since April 2023, I nevertheless manage to establish a good relationship with my guests and spend time with them in a good mood. I also place great emphasis on learning the magical Norwegian language so that I can talk to my guests in their native language. +

+

+ I believe that continuous development, quality work and dedication help me to become a better professional day by day. +

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

Treatments

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

Prices

+

The price of all hair treatments include hairwash and styling.
10% student reduction upon showing ID, available from Monday to Thursday.
Opening offer in December and January: 20% reduction

+
+
+

Eyelash extension

+
+
+
+
+ +
one lash on each natural lash
+
+
+
kr 1200
+
+
+
+
+
+
+
+ +
if 60% or more of the lash is missing, we need to replace it
+
+
+
kr 850
+
+
+
+
+
+
+
+ +
two lashes on each natural lash
+
+
+
kr 1350
+
+
+
+
+
+
+
+ +
if 60% or more of the lash is missing, we need to replace it
+
+
+
kr 950
+
+
+
+
+
+
+
+ +
three-five lashes on each natural lash
+
+
+
kr 1650
+
+
+
+
+
+
+
+ +
if 60% or more of the lash is missing, we need to replace it
+
+
+
kr 1150
+
+
+
+
+
+
+
+
+ +
Removal of lashes
+
+
+
kr 300
+
+
+
+
+
+

Makeup

+
+
+
+
+
+ +
Day makeup
+
+
+
kr 650
+
+
+
+
+
+
+
+
+ +
Makeup for special occations
+
+
+
kr 950
+
+
+
+
+
+
+
+
+ +
Wedding makeup
+
+
+
kr 1600
+
+
+
+
+
+
+
+
+ +
Lashes for special occations
+
+
+
kr 200
+
+
+
+
+
+

Eyebrow and eyelash styling

+
+
+
+
+
+ +
Brow lamination, dying and forming
+
+
+
kr 900
+
+
+
+
+
+
+
+
+ +
Brow forming and dying
+
+
+
kr 450
+
+
+
+
+
+
+
+
+ +
Lash dying
+
+
+
kr 250
+
+
+
+
+
+
+
+
+ +
Brow forming
+
+
+
kr 250
+
+
+
+
+
+
+
+
+ +
Henna dying, incl. brow forming
+
+
+
kr 550
+
+
+
+
+
+
+
+
+ +
Lash lift, incl. Dying
+
+
+
kr 900
+
+
+
+
+
+
+
+
+ +
if the treatment was done by us
+
+
+
kr 2800
+
+
+
+
+
+
+
+
+ +
incl. one refill after 4-8 week
+
+
+
kr 3500
+
+
+
+
+
+

Wax

+
+
+
+
+
+ +
Arm
+
+
+
kr 350
+
+
+
+
+
+
+
+
+ +
Lady intimate bikini line
+
+
+
kr 300
+
+
+
+
+
+
+
+
+ +
Armpit
+
+
+
kr 350
+
+
+
+
+
+
+
+
+ +
Whole leg
+
+
+
kr 700
+
+
+
+
+
+
+
+
+ +
Leg from knee down
+
+
+
kr 400
+
+
+
+
+
+
+
+
+ +
Back
+
+
+
kr 450
+
+
+
+
+
+
+
+
+ +
Lip and chin
+
+
+
kr 300
+
+
+
+
+
+
+
+
+ +
Nose
+
+
+
kr 100
+
+
+
+
+
+
+
+ + +
+
+
+
+ +

Working Hours

+

Free customer parking during treatments

+
+
+
+
+
+
Weekdays
+
+
+
10:00 to 18:00
+
+
+
+
+
Saturday
+
+
+
10:00 to 16:00
+
+
+
+
+
Sunday
+
+
+
Closed
+
+
+
+ +
+
+ + + + + + + +
+ + +
+
+ + + + + + + + + + + \ No newline at end of file diff --git a/archive/beauty/index_hu.html b/archive/beauty/index_hu.html new file mode 100755 index 0000000..2ae7ac9 --- /dev/null +++ b/archive/beauty/index_hu.html @@ -0,0 +1,696 @@ + + + + + Studio Beve - Barber + + + + + + + + + + + + + + +
+ + + + + + +
+ +
+ + +
+
+
+
+ +

Rólunk

+
+
+
+

+ Bence Evelin vagyok a Studio Beve vezetője és megálmodója. Fontosnak + tartom, hogy a vendégek a nálunk töltött idő alatt – egy kicsit megpihenve a világ zajától – feltöltődjenek, és kívül-belül egszépülve térjenek vissza a mindennapokhoz. +

+

+ A minőségi idő, a maximális figyelem, a legprofesszionálisabb eszközök, a + hivatástudattal és szakértelemmel karöltve jelentik a filozófiánk és + szolgáltatásaink alapjait. +

+

+ Hiszem, hogy a szépség, a divat és a trend nem nemhez kötött, így nálunk + lehetőség van arra, hogy mindenki egy helyen szépülhessen nemtől függetlenül. + A Barber és Beauty részlegeink között pedig megtalálhatjátok a számotokra + megfelelő szolgáltatásokat. +

+

+ Közel 10 éves szépségipari, és közte több éves nemzetközi tapasztalattal + elérkezettnek láttam az időt, hogy megnyissam saját stúdiómat itt + Trondheimben, az Innheredsveien 92 szám alatt, ahol a vendégeknek lehetősége + van ingyenes parkolásra is a kezelések időtartama alatt. +

+

+ Extra öröm számomra, hogy egy olyan tradicionális helyet sikerült találnom, + ahol az 50-es években már szépségszalon működött, ennek köszönhetően a + hagyományt, modern környezetben lehetőségem van tovább vinni. + Szépülj velünk, szeretettel várunk. +

+
+
+ +

Bence Evelin
Tulajdonos, Studio Beve

+
+ + + +
+
+
+ +

EVELIN Bence - szempilla- és szemöldök stylist, sminkes

+
+
+
+ +

+ "A szakma iránti vonzalmam, szeretetem már kisgyerekként megmutatkozott. + Először saját magamon, majd később a barátnőimen sajátítottam el a sminkelés + alapjait. Felnőttként pedig nem volt kérdés, hogy mi is az én utam. Kozmetikusi + tanulmányaimat 2016-ban fejeztem be és ugyanebben az évben szempillaépítő + képesítést is szereztem. +

+

+ Mindig törekedtem - és mai napig törekszem - arra, hogy a vendégeimnek minél + teljeskörűbb szolgáltatást tudjak nyújtani. Ezért kiemelt figyelmet fordítok a + továbbképzésekre. Oktatóim között megtalálhatóak többszörös magyar bajnok + sminkmesterek vagy épp sminktetoválók. +

+

+ A legújabb szenvedélyem a sminktetoválások készítése. Ma már a + csúcstechnológia és a professzionális alapanyagok használata lehetővé teszi, + hogy természetes, egyénre szabott megjelenést biztosíthassak a vendégeimnek. + A portfóliómban lévő szolgáltatásoknál a természetes irányt képviselem, legyen + szó sminkről, sminktetoválásról vagy épp műszempilláról. +

+

+ Büszke vagyok arra, hogy az évek alatt elégedett vendégek boldog mosolyát + zárhattam a szívembe, szülőhazámban Ukrajnában, majd Magyarországon. + Szintén örömmel tölt el, hogy noha még csak 2023 áprilisától élek Norvégiában, + mégis sikerül a vendégeimmel jó kapcsolatot kialakítani, a közös időt jó + hangulatban eltölteni. A varázslatos norvég nyelv elsajátítására is nagy + hangsúlyt fektetek, hogy a vendégeimmel, az anyanyelvükön tudjak beszélgetni. +

+

+ Hiszem, hogy a folyamatos fejlődés, a minőségi munka és az odaadás segít, + hogy napról-napra jobb szakember lehessek." +

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

Szolgáltatások

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

Árlista

+

Minden hajkezelés ára tartalmazza a hajmosást és a formázást.
10%-os diákkedvezmény, igazolvány felmutatásával, ami hétfőtől csütörtökig vehető igénybe.
20%-os nyitási akció decemberben és januárban.

+
+
+

Szempillaépítés

+
+
+
+
+ +
minden saját szempillára 1 műszempilla kerül
+
+
+
kr 1200
+
+
+
+
+
+
+
+ +
ha a szempillák több mint 60%-a hiányzik, akkor új szettel kell kalkulálni
+
+
+
kr 850
+
+
+
+
+
+
+
+ +
minden saját szempillára 2 műszempilla kerül
+
+
+
kr 1350
+
+
+
+
+
+
+
+ +
ha a szempillák több mint 60%-a hiányzik, akkor új szettel kell kalkulálni
+
+
+
kr 950
+
+
+
+
+
+
+
+ +
minden saját szempillára 3-5 műszempilla kerül
+
+
+
kr 1650
+
+
+
+
+
+
+
+ +
ha a szempillák több mint 60%-a hiányzik, akkor új szettel kell kalkulálni
+
+
+
kr 1150
+
+
+
+
+
+
+
+
+ +
Szempilla leoldása
+
+
+
kr 300
+
+
+
+
+
+

Smink

+
+
+
+
+
+ +
Nappali smink
+
+
+
kr 650
+
+
+
+
+
+
+
+
+ +
Alkalmi smink
+
+
+
kr 950
+
+
+
+
+
+
+
+
+ +
Menyasszonyi smink
+
+
+
kr 1600
+
+
+
+
+
+
+
+
+ +
Alkalmi műszampilla felhelyezése
+
+
+
kr 200
+
+
+
+
+
+

Szemöldök és szempilla

+
+
+
+
+
+ +
Szemöldök laminálás, formázással és festéssel
+
+
+
kr 900
+
+
+
+
+
+
+
+
+ +
Szemöldök festés és formázás
+
+
+
kr 450
+
+
+
+
+
+
+
+
+ +
Szempilla festés
+
+
+
kr 250
+
+
+
+
+
+
+
+
+ +
Szemöldök formázás
+
+
+
kr 250
+
+
+
+
+
+
+
+
+ +
Henna festés, tartalmazza a szemöldök formázást is
+
+
+
kr 550
+
+
+
+
+
+
+
+
+ +
Szempilla lifting, tartalmazza a festés is
+
+
+
kr 900
+
+
+
+
+
+
+
+
+ +
amennyiben általunk került elkészítésre
+
+
+
kr 2800
+
+
+
+
+
+
+
+
+ +
ingyenes egyszeri alkalmas frissítéssel 4-8 hét között
+
+
+
kr 3500
+
+
+
+
+
+

Gyanta

+
+
+
+
+
+ +
Kar
+
+
+
kr 350
+
+
+
+
+
+
+
+
+ +
Női intim bikinivonal
+
+
+
kr 300
+
+
+
+
+
+
+
+
+ +
Hónalj
+
+
+
kr 350
+
+
+
+
+
+
+
+
+ +
Teljes láb
+
+
+
kr 700
+
+
+
+
+
+
+
+
+ +
Láb térdig
+
+
+
kr 400
+
+
+
+
+
+
+
+
+ +
Hát
+
+
+
kr 450
+
+
+
+
+
+
+
+
+ +
Bajusz és áll
+
+
+
kr 300
+
+
+
+
+
+
+
+
+ +
Orr
+
+
+
kr 100
+
+
+
+
+
+
+
+ + +
+
+
+
+ +

Nyitvatartási idő

+

Ingyenes parkolás a szolgáltatások ideje alatt

+
+
+
+
+
+
Hétköznap
+
+
+
10:00 to 18:00
+
+
+
+
+
Szombat
+
+
+
10:00 to 16:00
+
+
+
+
+
Vasárnap
+
+
+
Zárva
+
+
+
+ +
+
+ + + + + + + +
+ + +
+
+ + + + + + + + + + + \ No newline at end of file diff --git a/archive/css/style.css b/archive/css/style.css new file mode 100755 index 0000000..aacdb77 --- /dev/null +++ b/archive/css/style.css @@ -0,0 +1,209 @@ +body, +html +{ + width: 100%; + height: 100%; + margin:0; +} + +body +{ + background-color: #18171c; +} + +.content +{ + min-width: 100%; + min-height: 100%; + margin:0; + padding:0 0 30px 0; + font-family: 'Roboto', sans-serif; + background-repeat: no-repeat; + background-position: bottom; + background-image: url(../img/bg.jpg); + background-size: cover; + z-index: 500; +} + +.tartalom +{ + padding: 0 20px 0 0; +} + +.csaktelefonon{ + display: none; +} + +.jobbalso{ + display: block; + padding: 0; + margin-right: 0!important; +} + +.jobbalso .front, .jobbalso .back +{ + background-color: rgba(65, 81, 97, 0.9); + border: 2px solid #fff; + color: #fff; + text-align: center; + margin-top: 20px; + margin-left: 20px; +} + +.back h2 a, .back h2 a:hover { + text-decoration: none; + font-family: 'Roboto', sans-serif; + color:#fff; +} + +span.reverse { + unicode-bidi: bidi-override; + direction: rtl; +} + + +.jobbalso .front img { + margin-top: 50px; + max-width: 48px; +} + +.jobbalso h1{ + font-family: 'Roboto', sans-serif; + font-size: 32px; + font-weight: 300; + margin-top: 0px; +} + + +.jobbalso h2 +{ + font-family: 'Roboto', sans-serif; + text-decoration: none; + font-size: 24px; + font-weight: 300; + margin-bottom: 10px; + margin-top: 60px; +} + +.jobbalso h3 +{ + font-family: 'Roboto', sans-serif; + font-size: 24px; + margin-top:0; + font-weight: 400; +} + +.footer +{ + height: 25px; + margin-top: -25px; + font-family: 'Roboto', sans-serif; + font-size: 10px; + text-align: center; + color: #fff; + text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.7); + z-index: 100; +} + +.footer span{ + text-align: center; +} + + +@media (min-width: 1400px){ + .container { + width: 1370px; + } +} +@media (max-width: 1399px){ +} + +@media (max-width: 1199px){ + .jobbalso .front img { + margin-top: 60px; + max-width: 40px; + } + .jobbalso h1{ + font-size: 26px; + } + .jobbalso h2{ + font-size: 20px; + margin-top: 70px; + } + .jobbalso h3{ + font-size: 20px; + } +} +@media (max-width: 991px){ + .balfelso, .jobbfelso, .balalso, .jobbalso +{ + height: 160px; +} + .jobbalso .front img { + margin-top: 45px; + max-width: 40px; + } + .jobbalso h1{ + font-size: 22px; + } + .jobbalso h2{ + font-size: 16px; + margin-top: 55px; + } + .jobbalso h3{ + font-size: 16px; + } + +} + +@media (max-width: 767px){ + .container{ + padding-right: 0px; + } + .balfelso, .jobbfelso, .balalso, .jobbalso +{ + float:left; + margin: 0; + margin-top: 10px; +} + .jobbalso .front, .jobbalso .back{ + margin: 0; + } + .csaktelefonon{ + border: 2px solid #fff; + margin-top: 10px; + display: block; + padding: 0; + } + + .csaktelefonon img{ + margin: 0; + padding: 0; + max-width: 100%; + } +} + +@media (max-width: 500px){ + letter-spacing: 4px; + } + .jobbalso .front img { + margin-top: 45px; + max-width: 40px; + } + .jobbalso h1{ + font-size: 22px; + } + .jobbalso h2{ + font-size: 16px; + margin-top: 55px; + } + .jobbalso h3{ + font-size: 16px; + } +} + + + + + + diff --git a/archive/eredeti dns.txt b/archive/eredeti dns.txt new file mode 100755 index 0000000..a992e72 --- /dev/null +++ b/archive/eredeti dns.txt @@ -0,0 +1 @@ +ns2.m.glbns.com \ No newline at end of file diff --git a/archive/images/IMG_5785.jpg b/archive/images/IMG_5785.jpg new file mode 100755 index 0000000..6054777 Binary files /dev/null and b/archive/images/IMG_5785.jpg differ diff --git a/archive/images/IMG_9996.jpg b/archive/images/IMG_9996.jpg new file mode 100755 index 0000000..35ca50e Binary files /dev/null and b/archive/images/IMG_9996.jpg differ diff --git a/archive/images/archive/barber.jpg b/archive/images/archive/barber.jpg new file mode 100755 index 0000000..45de761 Binary files /dev/null and b/archive/images/archive/barber.jpg differ diff --git a/archive/images/archive/beauty.jpg b/archive/images/archive/beauty.jpg new file mode 100755 index 0000000..6c17370 Binary files /dev/null and b/archive/images/archive/beauty.jpg differ diff --git a/archive/images/archive/bg.jpg b/archive/images/archive/bg.jpg new file mode 100755 index 0000000..969182b Binary files /dev/null and b/archive/images/archive/bg.jpg differ diff --git a/archive/images/archive/icons/eye.png b/archive/images/archive/icons/eye.png new file mode 100755 index 0000000..5a31bc0 Binary files /dev/null and b/archive/images/archive/icons/eye.png differ diff --git a/archive/images/archive/icons/eyebrow (1).png b/archive/images/archive/icons/eyebrow (1).png new file mode 100755 index 0000000..e7ded06 Binary files /dev/null and b/archive/images/archive/icons/eyebrow (1).png differ diff --git a/archive/images/archive/icons/eyebrow.png b/archive/images/archive/icons/eyebrow.png new file mode 100755 index 0000000..6ef9c13 Binary files /dev/null and b/archive/images/archive/icons/eyebrow.png differ diff --git a/archive/images/archive/icons/make-up.png b/archive/images/archive/icons/make-up.png new file mode 100755 index 0000000..6d98bd7 Binary files /dev/null and b/archive/images/archive/icons/make-up.png differ diff --git a/archive/images/archive/icons/manicure.png b/archive/images/archive/icons/manicure.png new file mode 100755 index 0000000..8cae5b9 Binary files /dev/null and b/archive/images/archive/icons/manicure.png differ diff --git a/archive/images/archive/icons/wax.png b/archive/images/archive/icons/wax.png new file mode 100755 index 0000000..3d0db7c Binary files /dev/null and b/archive/images/archive/icons/wax.png differ diff --git a/archive/images/archive/im/shutterstock_1129845197.jpg b/archive/images/archive/im/shutterstock_1129845197.jpg new file mode 100755 index 0000000..323540a Binary files /dev/null and b/archive/images/archive/im/shutterstock_1129845197.jpg differ diff --git a/archive/images/archive/im/shutterstock_1687056223.jpg b/archive/images/archive/im/shutterstock_1687056223.jpg new file mode 100755 index 0000000..769b176 Binary files /dev/null and b/archive/images/archive/im/shutterstock_1687056223.jpg differ diff --git a/archive/images/archive/im/shutterstock_1992097385.jpg b/archive/images/archive/im/shutterstock_1992097385.jpg new file mode 100755 index 0000000..80ef2da Binary files /dev/null and b/archive/images/archive/im/shutterstock_1992097385.jpg differ diff --git a/archive/images/archive/im/shutterstock_512009329.jpg b/archive/images/archive/im/shutterstock_512009329.jpg new file mode 100755 index 0000000..1c2f9b0 Binary files /dev/null and b/archive/images/archive/im/shutterstock_512009329.jpg differ diff --git a/archive/images/archive/im/shutterstock_512009329.png b/archive/images/archive/im/shutterstock_512009329.png new file mode 100755 index 0000000..19ec786 Binary files /dev/null and b/archive/images/archive/im/shutterstock_512009329.png differ diff --git a/archive/images/archive/logo.svg b/archive/images/archive/logo.svg new file mode 100755 index 0000000..1775260 --- /dev/null +++ b/archive/images/archive/logo.svg @@ -0,0 +1,14 @@ + + + + + + diff --git a/archive/images/archive/pic01.jpg b/archive/images/archive/pic01.jpg new file mode 100755 index 0000000..642a6b2 Binary files /dev/null and b/archive/images/archive/pic01.jpg differ diff --git a/archive/images/archive/pic02.jpg b/archive/images/archive/pic02.jpg new file mode 100755 index 0000000..5bddb6d Binary files /dev/null and b/archive/images/archive/pic02.jpg differ diff --git a/archive/images/archive/pic04.jpg b/archive/images/archive/pic04.jpg new file mode 100755 index 0000000..7deb571 Binary files /dev/null and b/archive/images/archive/pic04.jpg differ diff --git a/archive/images/archive/pic05.jpg b/archive/images/archive/pic05.jpg new file mode 100755 index 0000000..8f5e523 Binary files /dev/null and b/archive/images/archive/pic05.jpg differ diff --git a/archive/images/archive/pic06.jpg b/archive/images/archive/pic06.jpg new file mode 100755 index 0000000..64722c0 Binary files /dev/null and b/archive/images/archive/pic06.jpg differ diff --git a/archive/images/archive/pic07.jpg b/archive/images/archive/pic07.jpg new file mode 100755 index 0000000..d64aba8 Binary files /dev/null and b/archive/images/archive/pic07.jpg differ diff --git a/archive/images/archive/pic08.jpg b/archive/images/archive/pic08.jpg new file mode 100755 index 0000000..11bed52 Binary files /dev/null and b/archive/images/archive/pic08.jpg differ diff --git a/archive/images/archive/pic10.jpg b/archive/images/archive/pic10.jpg new file mode 100755 index 0000000..e4d7328 Binary files /dev/null and b/archive/images/archive/pic10.jpg differ diff --git a/archive/images/archive/pic11.jpg b/archive/images/archive/pic11.jpg new file mode 100755 index 0000000..a975380 Binary files /dev/null and b/archive/images/archive/pic11.jpg differ diff --git a/archive/images/archive/pic12.jpg b/archive/images/archive/pic12.jpg new file mode 100755 index 0000000..cc68345 Binary files /dev/null and b/archive/images/archive/pic12.jpg differ diff --git a/archive/images/archive/pic13.jpg b/archive/images/archive/pic13.jpg new file mode 100755 index 0000000..dc892a2 Binary files /dev/null and b/archive/images/archive/pic13.jpg differ diff --git a/archive/images/archive/pic14.jpg b/archive/images/archive/pic14.jpg new file mode 100755 index 0000000..ab6cd9a Binary files /dev/null and b/archive/images/archive/pic14.jpg differ diff --git a/archive/images/archive/pic15.jpg b/archive/images/archive/pic15.jpg new file mode 100755 index 0000000..0e94d0a Binary files /dev/null and b/archive/images/archive/pic15.jpg differ diff --git a/archive/images/archive/shutterstock_1684029229.jpg b/archive/images/archive/shutterstock_1684029229.jpg new file mode 100755 index 0000000..f028af8 Binary files /dev/null and b/archive/images/archive/shutterstock_1684029229.jpg differ diff --git a/archive/images/archive/shutterstock_1922411420.jpg b/archive/images/archive/shutterstock_1922411420.jpg new file mode 100755 index 0000000..bf7781b Binary files /dev/null and b/archive/images/archive/shutterstock_1922411420.jpg differ diff --git a/archive/images/barber.jpg b/archive/images/barber.jpg new file mode 100755 index 0000000..bca9dbd Binary files /dev/null and b/archive/images/barber.jpg differ diff --git a/archive/images/beauty.jpg b/archive/images/beauty.jpg new file mode 100755 index 0000000..6c82be5 Binary files /dev/null and b/archive/images/beauty.jpg differ diff --git a/archive/images/bg.jpg b/archive/images/bg.jpg new file mode 100755 index 0000000..4927098 Binary files /dev/null and b/archive/images/bg.jpg differ diff --git a/archive/images/evelin.JPG b/archive/images/evelin.JPG new file mode 100755 index 0000000..456f250 Binary files /dev/null and b/archive/images/evelin.JPG differ diff --git a/archive/images/favicon/apple-touch-icon-114x114-precomposed.png b/archive/images/favicon/apple-touch-icon-114x114-precomposed.png new file mode 100755 index 0000000..20da139 Binary files /dev/null and b/archive/images/favicon/apple-touch-icon-114x114-precomposed.png differ diff --git a/archive/images/favicon/favicon.gif b/archive/images/favicon/favicon.gif new file mode 100755 index 0000000..1284674 Binary files /dev/null and b/archive/images/favicon/favicon.gif differ diff --git a/archive/images/favicon/favicon.ico b/archive/images/favicon/favicon.ico new file mode 100755 index 0000000..23adfa4 Binary files /dev/null and b/archive/images/favicon/favicon.ico differ diff --git a/archive/images/favicon/favicon.png b/archive/images/favicon/favicon.png new file mode 100755 index 0000000..3157696 Binary files /dev/null and b/archive/images/favicon/favicon.png differ diff --git a/archive/images/favicon/speeddial-160px.png b/archive/images/favicon/speeddial-160px.png new file mode 100755 index 0000000..2a99b44 Binary files /dev/null and b/archive/images/favicon/speeddial-160px.png differ diff --git a/archive/images/logo.png b/archive/images/logo.png new file mode 100755 index 0000000..09c98cc Binary files /dev/null and b/archive/images/logo.png differ diff --git a/archive/images/logo_black.png b/archive/images/logo_black.png new file mode 100755 index 0000000..2cf4ca2 Binary files /dev/null and b/archive/images/logo_black.png differ diff --git a/archive/images/logo_gold.png b/archive/images/logo_gold.png new file mode 100755 index 0000000..0fd25d3 Binary files /dev/null and b/archive/images/logo_gold.png differ diff --git a/archive/images/logo_white.png b/archive/images/logo_white.png new file mode 100755 index 0000000..60bf2fc Binary files /dev/null and b/archive/images/logo_white.png differ diff --git a/archive/images/ollo.png b/archive/images/ollo.png new file mode 100755 index 0000000..8e18663 Binary files /dev/null and b/archive/images/ollo.png differ diff --git a/archive/images/pic03.jpg b/archive/images/pic03.jpg new file mode 100755 index 0000000..1754490 Binary files /dev/null and b/archive/images/pic03.jpg differ diff --git a/archive/images/pic09.jpg b/archive/images/pic09.jpg new file mode 100755 index 0000000..7f77fe0 Binary files /dev/null and b/archive/images/pic09.jpg differ diff --git a/archive/images/service-banner-1-rose.png b/archive/images/service-banner-1-rose.png new file mode 100755 index 0000000..bf66650 Binary files /dev/null and b/archive/images/service-banner-1-rose.png differ diff --git a/archive/images/service-banner-1.png b/archive/images/service-banner-1.png new file mode 100755 index 0000000..9984969 Binary files /dev/null and b/archive/images/service-banner-1.png differ diff --git a/archive/images/service-banner-beauty.png b/archive/images/service-banner-beauty.png new file mode 100755 index 0000000..dbdf878 Binary files /dev/null and b/archive/images/service-banner-beauty.png differ diff --git a/archive/images/service-banner.png b/archive/images/service-banner.png new file mode 100755 index 0000000..27bc702 Binary files /dev/null and b/archive/images/service-banner.png differ diff --git a/archive/images/service-icon-orig.png b/archive/images/service-icon-orig.png new file mode 100755 index 0000000..7ae5ae4 Binary files /dev/null and b/archive/images/service-icon-orig.png differ diff --git a/archive/images/service-icon-rose.png b/archive/images/service-icon-rose.png new file mode 100755 index 0000000..9de79e8 Binary files /dev/null and b/archive/images/service-icon-rose.png differ diff --git a/archive/images/service-icon.png b/archive/images/service-icon.png new file mode 100755 index 0000000..6bb6ebe Binary files /dev/null and b/archive/images/service-icon.png differ diff --git a/archive/img/bg.jpg b/archive/img/bg.jpg new file mode 100755 index 0000000..1f04ea6 Binary files /dev/null and b/archive/img/bg.jpg differ diff --git a/archive/img/logo.png b/archive/img/logo.png new file mode 100755 index 0000000..abd6162 Binary files /dev/null and b/archive/img/logo.png differ diff --git a/archive/img/mail_red.png b/archive/img/mail_red.png new file mode 100755 index 0000000..e3791ff Binary files /dev/null and b/archive/img/mail_red.png differ diff --git a/archive/index.html b/archive/index.html new file mode 100755 index 0000000..17a0111 --- /dev/null +++ b/archive/index.html @@ -0,0 +1,80 @@ + + + + + Studio Beve - Beauty & Barber Shop + + + + + + + + + + + + + + + +
+ + + + + + + +
+
+
+ + +
+
+ + +
+
+
+ + + +
+ + + + + + + + + + \ No newline at end of file diff --git a/archive/js/jquery.flip.js b/archive/js/jquery.flip.js new file mode 100755 index 0000000..34c556a --- /dev/null +++ b/archive/js/jquery.flip.js @@ -0,0 +1,369 @@ +/*! flip - v1.1.2 - 2016-10-20 +* https://github.com/nnattawat/flip +* Copyright (c) 2016 Nattawat Nonsung; Licensed MIT */ +(function( $ ) { + /* + * Private attributes and method + */ + + // Function from David Walsh: http://davidwalsh.name/css-animation-callback licensed with http://opensource.org/licenses/MIT + var whichTransitionEvent = function() { + var t, el = document.createElement("fakeelement"), + transitions = { + "transition" : "transitionend", + "OTransition" : "oTransitionEnd", + "MozTransition" : "transitionend", + "WebkitTransition": "webkitTransitionEnd" + }; + + for (t in transitions) { + if (el.style[t] !== undefined) { + return transitions[t]; + } + } + }; + + /* + * Model declaration + */ + var Flip = function($el, options, callback) { + // Define default setting + this.setting = { + axis: "y", + reverse: false, + trigger: "click", + speed: 500, + forceHeight: false, + forceWidth: false, + autoSize: true, + front: '.front', + back: '.back' + }; + + this.setting = $.extend(this.setting, options); + + if (typeof options.axis === 'string' && (options.axis.toLowerCase() === 'x' || options.axis.toLowerCase() === 'y')) { + this.setting.axis = options.axis.toLowerCase(); + } + + if (typeof options.reverse === "boolean") { + this.setting.reverse = options.reverse; + } + + if (typeof options.trigger === 'string') { + this.setting.trigger = options.trigger.toLowerCase(); + } + + var speed = parseInt(options.speed); + if (!isNaN(speed)) { + this.setting.speed = speed; + } + + if (typeof options.forceHeight === "boolean") { + this.setting.forceHeight = options.forceHeight; + } + + if (typeof options.forceWidth === "boolean") { + this.setting.forceWidth = options.forceWidth; + } + + if (typeof options.autoSize === "boolean") { + this.setting.autoSize = options.autoSize; + } + + if (typeof options.front === 'string' || options.front instanceof $) { + this.setting.front = options.front; + } + + if (typeof options.back === 'string' || options.back instanceof $) { + this.setting.back = options.back; + } + + // Other attributes + this.element = $el; + this.frontElement = this.getFrontElement(); + this.backElement = this.getBackElement(); + this.isFlipped = false; + + this.init(callback); + }; + + /* + * Public methods + */ + $.extend(Flip.prototype, { + + flipDone: function(callback) { + var self = this; + // Providing a nicely wrapped up callback because transform is essentially async + self.element.one(whichTransitionEvent(), function() { + self.element.trigger('flip:done'); + if (typeof callback === 'function') { + callback.call(self.element); + } + }); + }, + + flip: function(callback) { + if (this.isFlipped) { + return; + } + + this.isFlipped = true; + + var rotateAxis = "rotate" + this.setting.axis; + this.frontElement.css({ + transform: rotateAxis + (this.setting.reverse ? "(-180deg)" : "(180deg)"), + "z-index": "0" + }); + + this.backElement.css({ + transform: rotateAxis + "(0deg)", + "z-index": "1" + }); + this.flipDone(callback); + }, + + unflip: function(callback) { + if (!this.isFlipped) { + return; + } + + this.isFlipped = false; + + var rotateAxis = "rotate" + this.setting.axis; + this.frontElement.css({ + transform: rotateAxis + "(0deg)", + "z-index": "1" + }); + + this.backElement.css({ + transform: rotateAxis + (this.setting.reverse ? "(180deg)" : "(-180deg)"), + "z-index": "0" + }); + this.flipDone(callback); + }, + + getFrontElement: function() { + if (this.setting.front instanceof $) { + return this.setting.front; + } else { + return this.element.find(this.setting.front); + } + }, + + getBackElement: function() { + if (this.setting.back instanceof $) { + return this.setting.back; + } else { + return this.element.find(this.setting.back); + } + }, + + init: function(callback) { + var self = this; + + var faces = self.frontElement.add(self.backElement); + var rotateAxis = "rotate" + self.setting.axis; + var perspective = self.element["outer" + (rotateAxis === "rotatex" ? "Height" : "Width")]() * 2; + var elementCss = { + 'perspective': perspective, + 'position': 'relative' + }; + var backElementCss = { + "transform": rotateAxis + "(" + (self.setting.reverse ? "180deg" : "-180deg") + ")", + "z-index": "0", + "position": "relative" + }; + var faceElementCss = { + "backface-visibility": "hidden", + "transform-style": "preserve-3d", + "position": "absolute", + "z-index": "1" + }; + + if (self.setting.forceHeight) { + faces.outerHeight(self.element.height()); + } else if (self.setting.autoSize) { + faceElementCss.height = '100%'; + } + + if (self.setting.forceWidth) { + faces.outerWidth(self.element.width()); + } else if (self.setting.autoSize) { + faceElementCss.width = '100%'; + } + + // Back face always visible on Chrome #39 + if ((window.chrome || (window.Intl && Intl.v8BreakIterator)) && 'CSS' in window) { + //Blink Engine, add preserve-3d to self.element + elementCss["-webkit-transform-style"] = "preserve-3d"; + } + + + faces.css(faceElementCss).find('*').css({ + "backface-visibility": "hidden" + }); + + self.element.css(elementCss); + self.backElement.css(backElementCss); + + // #39 + // not forcing width/height may cause an initial flip to show up on + // page load when we apply the style to reverse the backface... + // To prevent self we first apply the basic styles and then give the + // browser a moment to apply them. Only afterwards do we add the transition. + setTimeout(function() { + // By now the browser should have applied the styles, so the transition + // will only affect subsequent flips. + var speedInSec = self.setting.speed / 1000 || 0.5; + faces.css({ + "transition": "all " + speedInSec + "s ease-out" + }); + + // This allows flip to be called for setup with only a callback (default settings) + if (typeof callback === 'function') { + callback.call(self.element); + } + + // While this used to work with a setTimeout of zero, at some point that became + // unstable and the initial flip returned. The reason for this is unknown but we + // will temporarily use a short delay of 20 to mitigate this issue. + }, 20); + + self.attachEvents(); + }, + + clickHandler: function(event) { + if (!event) { event = window.event; } + if (this.element.find($(event.target).closest('button, a, input[type="submit"]')).length) { + return; + } + + if (this.isFlipped) { + this.unflip(); + } else { + this.flip(); + } + }, + + hoverHandler: function() { + var self = this; + self.element.off('mouseleave.flip'); + + self.flip(); + + setTimeout(function() { + self.element.on('mouseleave.flip', $.proxy(self.unflip, self)); + if (!self.element.is(":hover")) { + self.unflip(); + } + }, (self.setting.speed + 150)); + }, + + attachEvents: function() { + var self = this; + if (self.setting.trigger === "click") { + self.element.on($.fn.tap ? "tap.flip" : "click.flip", $.proxy(self.clickHandler, self)); + } else if (self.setting.trigger === "hover") { + self.element.on('mouseenter.flip', $.proxy(self.hoverHandler, self)); + self.element.on('mouseleave.flip', $.proxy(self.unflip, self)); + } + }, + + flipChanged: function(callback) { + this.element.trigger('flip:change'); + if (typeof callback === 'function') { + callback.call(this.element); + } + }, + + changeSettings: function(options, callback) { + var self = this; + var changeNeeded = false; + + if (options.axis !== undefined && self.setting.axis !== options.axis.toLowerCase()) { + self.setting.axis = options.axis.toLowerCase(); + changeNeeded = true; + } + + if (options.reverse !== undefined && self.setting.reverse !== options.reverse) { + self.setting.reverse = options.reverse; + changeNeeded = true; + } + + if (changeNeeded) { + var faces = self.frontElement.add(self.backElement); + var savedTrans = faces.css(["transition-property", "transition-timing-function", "transition-duration", "transition-delay"]); + + faces.css({ + transition: "none" + }); + + // This sets up the first flip in the new direction automatically + var rotateAxis = "rotate" + self.setting.axis; + + if (self.isFlipped) { + self.frontElement.css({ + transform: rotateAxis + (self.setting.reverse ? "(-180deg)" : "(180deg)"), + "z-index": "0" + }); + } else { + self.backElement.css({ + transform: rotateAxis + (self.setting.reverse ? "(180deg)" : "(-180deg)"), + "z-index": "0" + }); + } + // Providing a nicely wrapped up callback because transform is essentially async + setTimeout(function() { + faces.css(savedTrans); + self.flipChanged(callback); + }, 0); + } else { + // If we didnt have to set the axis we can just call back. + self.flipChanged(callback); + } + } + + }); + + /* + * jQuery collection methods + */ + $.fn.flip = function (options, callback) { + if (typeof options === 'function') { + callback = options; + } + + if (typeof options === "string" || typeof options === "boolean") { + this.each(function() { + var flip = $(this).data('flip-model'); + + if (options === "toggle") { + options = !flip.isFlipped; + } + + if (options) { + flip.flip(callback); + } else { + flip.unflip(callback); + } + }); + } else { + this.each(function() { + if ($(this).data('flip-model')) { // The element has been initiated, all we have to do is change applicable settings + var flip = $(this).data('flip-model'); + + if (options && (options.axis !== undefined || options.reverse !== undefined)) { + flip.changeSettings(options, callback); + } + } else { // Init + $(this).data('flip-model', new Flip($(this), (options || {}), callback)); + } + }); + } + + return this; + }; + +}( jQuery )); diff --git a/archive/js/jquery.flip.min.js b/archive/js/jquery.flip.min.js new file mode 100755 index 0000000..3615e5d --- /dev/null +++ b/archive/js/jquery.flip.min.js @@ -0,0 +1,6 @@ +/*! flip - v1.1.2 - 2016-10-20 +* https://github.com/nnattawat/flip +* Copyright (c) 2016 Nattawat Nonsung; Licensed MIT */ + +!function(a){var b=function(){var a,b=document.createElement("fakeelement"),c={transition:"transitionend",OTransition:"oTransitionEnd",MozTransition:"transitionend",WebkitTransition:"webkitTransitionEnd"};for(a in c)if(void 0!==b.style[a])return c[a]},c=function(b,c,d){this.setting={axis:"y",reverse:!1,trigger:"click",speed:500,forceHeight:!1,forceWidth:!1,autoSize:!0,front:".front",back:".back"},this.setting=a.extend(this.setting,c),"string"!=typeof c.axis||"x"!==c.axis.toLowerCase()&&"y"!==c.axis.toLowerCase()||(this.setting.axis=c.axis.toLowerCase()),"boolean"==typeof c.reverse&&(this.setting.reverse=c.reverse),"string"==typeof c.trigger&&(this.setting.trigger=c.trigger.toLowerCase());var e=parseInt(c.speed);isNaN(e)||(this.setting.speed=e),"boolean"==typeof c.forceHeight&&(this.setting.forceHeight=c.forceHeight),"boolean"==typeof c.forceWidth&&(this.setting.forceWidth=c.forceWidth),"boolean"==typeof c.autoSize&&(this.setting.autoSize=c.autoSize),("string"==typeof c.front||c.front instanceof a)&&(this.setting.front=c.front),("string"==typeof c.back||c.back instanceof a)&&(this.setting.back=c.back),this.element=b,this.frontElement=this.getFrontElement(),this.backElement=this.getBackElement(),this.isFlipped=!1,this.init(d)};a.extend(c.prototype,{flipDone:function(a){var c=this;c.element.one(b(),function(){c.element.trigger("flip:done"),"function"==typeof a&&a.call(c.element)})},flip:function(a){if(!this.isFlipped){this.isFlipped=!0;var b="rotate"+this.setting.axis;this.frontElement.css({transform:b+(this.setting.reverse?"(-180deg)":"(180deg)"),"z-index":"0"}),this.backElement.css({transform:b+"(0deg)","z-index":"1"}),this.flipDone(a)}},unflip:function(a){if(this.isFlipped){this.isFlipped=!1;var b="rotate"+this.setting.axis;this.frontElement.css({transform:b+"(0deg)","z-index":"1"}),this.backElement.css({transform:b+(this.setting.reverse?"(180deg)":"(-180deg)"),"z-index":"0"}),this.flipDone(a)}},getFrontElement:function(){return this.setting.front instanceof a?this.setting.front:this.element.find(this.setting.front)},getBackElement:function(){return this.setting.back instanceof a?this.setting.back:this.element.find(this.setting.back)},init:function(a){var b=this,c=b.frontElement.add(b.backElement),d="rotate"+b.setting.axis,e=2*b.element["outer"+("rotatex"===d?"Height":"Width")](),f={perspective:e,position:"relative"},g={transform:d+"("+(b.setting.reverse?"180deg":"-180deg")+")","z-index":"0",position:"relative"},h={"backface-visibility":"hidden","transform-style":"preserve-3d",position:"absolute","z-index":"1"};b.setting.forceHeight?c.outerHeight(b.element.height()):b.setting.autoSize&&(h.height="100%"),b.setting.forceWidth?c.outerWidth(b.element.width()):b.setting.autoSize&&(h.width="100%"),(window.chrome||window.Intl&&Intl.v8BreakIterator)&&"CSS"in window&&(f["-webkit-transform-style"]="preserve-3d"),c.css(h).find("*").css({"backface-visibility":"hidden"}),b.element.css(f),b.backElement.css(g),setTimeout(function(){var d=b.setting.speed/1e3||.5;c.css({transition:"all "+d+"s ease-out"}),"function"==typeof a&&a.call(b.element)},20),b.attachEvents()},clickHandler:function(b){b||(b=window.event),this.element.find(a(b.target).closest('button, a, input[type="submit"]')).length||(this.isFlipped?this.unflip():this.flip())},hoverHandler:function(){var b=this;b.element.off("mouseleave.flip"),b.flip(),setTimeout(function(){b.element.on("mouseleave.flip",a.proxy(b.unflip,b)),b.element.is(":hover")||b.unflip()},b.setting.speed+150)},attachEvents:function(){var b=this;"click"===b.setting.trigger?b.element.on(a.fn.tap?"tap.flip":"click.flip",a.proxy(b.clickHandler,b)):"hover"===b.setting.trigger&&(b.element.on("mouseenter.flip",a.proxy(b.hoverHandler,b)),b.element.on("mouseleave.flip",a.proxy(b.unflip,b)))},flipChanged:function(a){this.element.trigger("flip:change"),"function"==typeof a&&a.call(this.element)},changeSettings:function(a,b){var c=this,d=!1;if(void 0!==a.axis&&c.setting.axis!==a.axis.toLowerCase()&&(c.setting.axis=a.axis.toLowerCase(),d=!0),void 0!==a.reverse&&c.setting.reverse!==a.reverse&&(c.setting.reverse=a.reverse,d=!0),d){var e=c.frontElement.add(c.backElement),f=e.css(["transition-property","transition-timing-function","transition-duration","transition-delay"]);e.css({transition:"none"});var g="rotate"+c.setting.axis;c.isFlipped?c.frontElement.css({transform:g+(c.setting.reverse?"(-180deg)":"(180deg)"),"z-index":"0"}):c.backElement.css({transform:g+(c.setting.reverse?"(180deg)":"(-180deg)"),"z-index":"0"}),setTimeout(function(){e.css(f),c.flipChanged(b)},0)}else c.flipChanged(b)}}),a.fn.flip=function(b,d){return"function"==typeof b&&(d=b),"string"==typeof b||"boolean"==typeof b?this.each(function(){var c=a(this).data("flip-model");"toggle"===b&&(b=!c.isFlipped),b?c.flip(d):c.unflip(d)}):this.each(function(){if(a(this).data("flip-model")){var e=a(this).data("flip-model");!b||void 0===b.axis&&void 0===b.reverse||e.changeSettings(b,d)}else a(this).data("flip-model",new c(a(this),b||{},d))}),this}}(jQuery); +//# sourceMappingURL=jquery.flip.min.js.map \ No newline at end of file diff --git a/assets/css/barber.css b/assets/css/barber.css new file mode 100755 index 0000000..f620802 --- /dev/null +++ b/assets/css/barber.css @@ -0,0 +1,4578 @@ +@import url(../css/fontawesome-all.min.css); +@import url("https://fonts.googleapis.com/css?family=Open+Sans:300,600,300italic,600italic"); + +/* + Catalyst by Pixelarity + pixelarity.com | hello@pixelarity.com + License: pixelarity.com/license +*/ + + +html{ + scroll-behavior: smooth; +} + +html, body, div, span, applet, object, +iframe, h1, h2, h3, h4, h5, h6, p, blockquote, +pre, a, abbr, acronym, address, big, cite, +code, del, dfn, em, img, ins, kbd, q, s, samp, +small, strike, strong, sub, sup, tt, var, b, +u, i, center, dl, dt, dd, ol, ul, li, fieldset, +form, label, legend, table, caption, tbody, +tfoot, thead, tr, th, td, article, aside, +canvas, details, embed, figure, figcaption, +footer, header, hgroup, menu, nav, output, ruby, +section, summary, time, mark, audio, video { + margin: 0; + padding: 0; + border: 0; + font-size: 100%; + font: inherit; + vertical-align: baseline;} + +article, aside, details, figcaption, figure, +footer, header, hgroup, menu, nav, section { + display: block;} + +body { + line-height: 1; + font-family: 'Poppins', sans-serif; +} + +ol, ul { + list-style: none; +} + +blockquote, q { + quotes: none; +} + + blockquote:before, blockquote:after, q:before, q:after { + content: ''; + content: none; + } + +table { + border-collapse: collapse; + border-spacing: 0; +} + +body { + -webkit-text-size-adjust: none; +} + +mark { + background-color: transparent; + color: inherit; +} + +input::-moz-focus-inner { + border: 0; + padding: 0; +} + +input, select, textarea { + -moz-appearance: none; + -webkit-appearance: none; + -ms-appearance: none; + appearance: none; +} + +.profileRow{ + background-color: #e5d2b9; + border: 1px solid #9e8462; +} + +.profileRadioBtn{ + /*background-color: #9e8462;*/ +} + +#totalPanelBtn{ + background-color: #9e8462; +} + +#totalPanel{ + border: 1px solid #9e8462; + background-color: #fff9f0; +} + +.serviceInfoIcon .fa-info-circle{ + color:#9e8462; +} + +.serviceCheckCol input[type="checkbox"]{ + border:1px solid #9e8462; +} + +.bookingButton{ + background-color: #9e8462!important; +} + +.availableBookingTime{ + background-color: #e5d2b9; +} + +.activeStep{ + background-color:#9e8462; +} + +.bookingName, .bookingEmail, .bookingPhone{ + background-color: #fff9f0; + border:1px solid #9e8462!important; +} + + +.bookingEmailTitle, .bookingPhoneTitle{ + color:lightgray; +} + +.bookingTitle{ + color:#9e8462; +} + +.stepTitle{ + color:#9e8462; +} + +.stepLine { + border-top: 1px solid #9e8462; +} + +.stepCircle { + border: 1px solid #9e8462; + background-color: #fff9f0; +} + +.panel-heading{ + color:#9e8462!important; +} + +.serviceCol h4{ + color:#9e8462!important; +} + +.serviceHeader .serviceNameCol, +.serviceHeader .servicePriceCol{ + color:#9e8462!important; +} + +.BookingStepContainer { + border: 1px solid #9e8462; +} + +.bookingSubmit{ + background-color: #9e8462!important; +} + +/* Basic */ + + html { + box-sizing: border-box; + } + + *, *:before, *:after { + box-sizing: inherit; + } + + body { + background: #fff; + } + + body.is-preload *, body.is-preload *:before, body.is-preload *:after { + -moz-animation: none !important; + -webkit-animation: none !important; + -ms-animation: none !important; + animation: none !important; + -moz-transition: none !important; + -webkit-transition: none !important; + -ms-transition: none !important; + transition: none !important; + } + + body, input, select, textarea { + color: #4a4a4a; + background: #000; + font-family: "Poppins", sans-serif; + font-size: 13pt; + font-weight: 300; + line-height: 1.75em; + } + + a { + color: #51c5e8; + text-decoration: underline; + } + + a:hover { + text-decoration: none; + } + + strong, b { + color: #2a2a2a; + font-weight: 600; + } + + em, i { + font-style: italic; + } + + p { + margin: 0 0 2em 0; + } + + h1, h2, h3, h4, h5, h6 { + color: #2a2a2a; + font-weight: 600; + letter-spacing: 0.125em; + line-height: 1em; + margin: 0 0 1em 0; + } + + h1 a, h2 a, h3 a, h4 a, h5 a, h6 a { + color: inherit; + text-decoration: none; + } + + h2 { + font-size: 1.5em; + line-height: 1.75em; + } + + h3 { + font-size: 1.25em; + line-height: 1.5em; + } + + h4 { + font-size: 1.1em; + line-height: 1.5em; + } + + h5 { + font-size: 0.9em; + line-height: 1.5em; + } + + h6 { + font-size: 0.7em; + line-height: 1.5em; + } + + sub { + font-size: 0.8em; + position: relative; + top: 0.5em; + } + + sup { + font-size: 0.8em; + position: relative; + top: -0.5em; + } + + hr { + border: 0; + border-bottom: solid 3px #eee; + margin: 3em 0; + } + + hr.major { + margin: 5em 0; + } + + blockquote { + border-left: solid 8px #eee; + font-style: italic; + margin: 0 0 2em 0; + padding: 0.5em 0 0.5em 2em; + } + + pre { + -webkit-overflow-scrolling: touch; + background: rgba(144, 144, 144, 0.05); + font-family: "Courier New", monospace; + font-size: 0.9em; + line-height: 1.5em; + margin: 0 0 2em 0; + overflow-x: auto; + padding: 1em 1.5em; + } + + code { + background: rgba(144, 144, 144, 0.05); + font-family: "Courier New", monospace; + font-size: 0.9em; + margin: 0 0.25em; + padding: 0.25em 0.65em; + } + + .align-left { + text-align: left; + } + + .align-center { + text-align: center; + } + + .align-right { + text-align: right; + } + + + .ui-widget-content { + border: 1px solid #e5d2b9!important; + background: #e5d2b9!important; + color: #333333!important; + } + + .ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default, .ui-button, html .ui-button.ui-state-disabled:hover, html .ui-button.ui-state-disabled:active { + border: 1px solid #e5d2b9!important; + background: #9e8462 url(images/ui-bg_glass_100_f6f6f6_1x400.png) 50% 50% repeat-x; + font-weight: bold!important; + color: #a5705b!important; + } + + table thead { + border-bottom: solid 2px #9e8462!important; + } + + .ui-widget-header { + border: 1px solid #9e8462!important; + background: #9e8462!important; + } + + .widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight { + border: 1px solid #9e8462!important; + background: #e5d2b9!important; + } + + + + .ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active, a.ui-button:active, .ui-button:active, .ui-button.ui-state-active:hover { + border: 1px solid #a5705b; + background: #ffffff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x; + } + + .ui-state-active{ + background: #d9c7b0 url(images/ui-bg_glass_100_f6f6f6_1x400.png) 50% 50% repeat-x!important; + } + + table tbody tr { + border: solid 1px #e5d2b9!important; + border-left: 0; + border-right: 0; + } + + table tbody tr:nth-child(2n + 1) { + background-color: #f4ede5!important + } + + .ui-state-highlight{ + border: 1px solid #a5705b!important; + background: #e5d2b9!important; + } +/* + .ui-datepicker-week-end a { + background-image: none!important; + background-color: rgb(173, 40, 40)!important; + color:white!important; + } + */ + + #datepicker table tr td:last-child{ + } + + #datepicker table tr td:last-child a{ + background-image: none!important; + /*background-color: rgb(173, 40, 40)!important;*/ + color:red!important; + } + + .ui-state-disabled { + cursor: default !important; + pointer-events: none; + opacity: 0!important; + + } + +/* Row */ + + .row { + display: flex; + flex-wrap: wrap; + box-sizing: border-box; + align-items: stretch; + } + + .row > * { + box-sizing: border-box; + } + + .row.gtr-uniform > * > :last-child { + margin-bottom: 0; + } + + .row.aln-left { + justify-content: flex-start; + } + + .row.aln-center { + justify-content: center; + } + + .row.aln-right { + justify-content: flex-end; + } + + .row.aln-top { + align-items: flex-start; + } + + .row.aln-middle { + align-items: center; + } + + .row.aln-bottom { + align-items: flex-end; + } + + .row > .imp { + order: -1; + } + + .row > .col-1 { + width: 8.33333%; + } + + .row > .off-1 { + margin-left: 8.33333%; + } + + .row > .col-2 { + width: 16.66667%; + } + + .row > .off-2 { + margin-left: 16.66667%; + } + + .row > .col-3 { + width: 25%; + } + + .row > .off-3 { + margin-left: 25%; + } + + .row > .col-4 { + width: 33.33333%; + } + + .row > .off-4 { + margin-left: 33.33333%; + } + + .row > .col-5 { + width: 41.66667%; + } + + .row > .off-5 { + margin-left: 41.66667%; + } + + .row > .col-6 { + width: 50%; + } + + .row > .off-6 { + margin-left: 50%; + } + + .row > .col-7 { + width: 58.33333%; + } + + .row > .off-7 { + margin-left: 58.33333%; + } + + .row > .col-8 { + width: 66.66667%; + } + + .row > .off-8 { + margin-left: 66.66667%; + } + + .row > .col-9 { + width: 75%; + } + + .row > .off-9 { + margin-left: 75%; + } + + .row > .col-10 { + width: 83.33333%; + } + + .row > .off-10 { + margin-left: 83.33333%; + } + + .row > .col-11 { + width: 91.66667%; + } + + .row > .off-11 { + margin-left: 91.66667%; + } + + .row > .col-12 { + width: 100%; + } + + .row > .off-12 { + margin-left: 100%; + } + + .row.gtr-0 { + margin-top: 0; + margin-left: 0em; + } + + .row.gtr-0 > * { + padding: 0 0 0 0em; + } + + .row.gtr-0.gtr-uniform { + margin-top: 0em; + } + + .row.gtr-0.gtr-uniform > * { + padding-top: 0em; + } + + .row.gtr-25 { + margin-top: 0; + margin-left: -0.75em; + } + + .row.gtr-25 > * { + padding: 0 0 0 0.75em; + } + + .row.gtr-25.gtr-uniform { + margin-top: -0.75em; + } + + .row.gtr-25.gtr-uniform > * { + padding-top: 0.75em; + } + + .row.gtr-50 { + margin-top: 0; + margin-left: -1.5em; + } + + .row.gtr-50 > * { + padding: 0 0 0 1.5em; + } + + .row.gtr-50.gtr-uniform { + margin-top: -1.5em; + } + + .row.gtr-50.gtr-uniform > * { + padding-top: 1.5em; + } + + .row { + margin-top: 0; + margin-left: -3em; + } + + .row > * { + padding: 0 0 0 3em; + } + + .row.gtr-uniform { + margin-top: -3em; + } + + .row.gtr-uniform > * { + padding-top: 3em; + } + + .row.gtr-150 { + margin-top: 0; + margin-left: -4.5em; + } + + .row.gtr-150 > * { + padding: 0 0 0 4.5em; + } + + .row.gtr-150.gtr-uniform { + margin-top: -4.5em; + } + + .row.gtr-150.gtr-uniform > * { + padding-top: 4.5em; + } + + .row.gtr-200 { + margin-top: 0; + margin-left: -6em; + } + + .row.gtr-200 > * { + padding: 0 0 0 6em; + } + + .row.gtr-200.gtr-uniform { + margin-top: -6em; + } + + .row.gtr-200.gtr-uniform > * { + padding-top: 6em; + } + + @media screen and (max-width: 1680px) { + + .row { + display: flex; + flex-wrap: wrap; + box-sizing: border-box; + align-items: stretch; + } + + .row > * { + box-sizing: border-box; + } + + .row.gtr-uniform > * > :last-child { + margin-bottom: 0; + } + + .row.aln-left { + justify-content: flex-start; + } + + .row.aln-center { + justify-content: center; + } + + .row.aln-right { + justify-content: flex-end; + } + + .row.aln-top { + align-items: flex-start; + } + + .row.aln-middle { + align-items: center; + } + + .row.aln-bottom { + align-items: flex-end; + } + + .row > .imp-wide { + order: -1; + } + + .row > .col-1-wide { + width: 8.33333%; + } + + .row > .off-1-wide { + margin-left: 8.33333%; + } + + .row > .col-2-wide { + width: 16.66667%; + } + + .row > .off-2-wide { + margin-left: 16.66667%; + } + + .row > .col-3-wide { + width: 25%; + } + + .row > .off-3-wide { + margin-left: 25%; + } + + .row > .col-4-wide { + width: 33.33333%; + } + + .row > .off-4-wide { + margin-left: 33.33333%; + } + + .row > .col-5-wide { + width: 41.66667%; + } + + .row > .off-5-wide { + margin-left: 41.66667%; + } + + .row > .col-6-wide { + width: 50%; + } + + .row > .off-6-wide { + margin-left: 50%; + } + + .row > .col-7-wide { + width: 58.33333%; + } + + .row > .off-7-wide { + margin-left: 58.33333%; + } + + .row > .col-8-wide { + width: 66.66667%; + } + + .row > .off-8-wide { + margin-left: 66.66667%; + } + + .row > .col-9-wide { + width: 75%; + } + + .row > .off-9-wide { + margin-left: 75%; + } + + .row > .col-10-wide { + width: 83.33333%; + } + + .row > .off-10-wide { + margin-left: 83.33333%; + } + + .row > .col-11-wide { + width: 91.66667%; + } + + .row > .off-11-wide { + margin-left: 91.66667%; + } + + .row > .col-12-wide { + width: 100%; + } + + .row > .off-12-wide { + margin-left: 100%; + } + + .row.gtr-0 { + margin-top: 0; + margin-left: 0em; + } + + .row.gtr-0 > * { + padding: 0 0 0 0em; + } + + .row.gtr-0.gtr-uniform { + margin-top: 0em; + } + + .row.gtr-0.gtr-uniform > * { + padding-top: 0em; + } + + .row.gtr-25 { + margin-top: 0; + margin-left: -0.75em; + } + + .row.gtr-25 > * { + padding: 0 0 0 0.75em; + } + + .row.gtr-25.gtr-uniform { + margin-top: -0.75em; + } + + .row.gtr-25.gtr-uniform > * { + padding-top: 0.75em; + } + + .row.gtr-50 { + margin-top: 0; + margin-left: -1.5em; + } + + .row.gtr-50 > * { + padding: 0 0 0 1.5em; + } + + .row.gtr-50.gtr-uniform { + margin-top: -1.5em; + } + + .row.gtr-50.gtr-uniform > * { + padding-top: 1.5em; + } + + .row { + margin-top: 0; + margin-left: -3em; + } + + .row > * { + padding: 0 0 0 3em; + } + + .row.gtr-uniform { + margin-top: -3em; + } + + .row.gtr-uniform > * { + padding-top: 3em; + } + + .row.gtr-150 { + margin-top: 0; + margin-left: -4.5em; + } + + .row.gtr-150 > * { + padding: 0 0 0 4.5em; + } + + .row.gtr-150.gtr-uniform { + margin-top: -4.5em; + } + + .row.gtr-150.gtr-uniform > * { + padding-top: 4.5em; + } + + .row.gtr-200 { + margin-top: 0; + margin-left: -6em; + } + + .row.gtr-200 > * { + padding: 0 0 0 6em; + } + + .row.gtr-200.gtr-uniform { + margin-top: -6em; + } + + .row.gtr-200.gtr-uniform > * { + padding-top: 6em; + } + + } + + @media screen and (max-width: 1280px) { + + .row { + display: flex; + flex-wrap: wrap; + box-sizing: border-box; + align-items: stretch; + } + + .row > * { + box-sizing: border-box; + } + + .row.gtr-uniform > * > :last-child { + margin-bottom: 0; + } + + .row.aln-left { + justify-content: flex-start; + } + + .row.aln-center { + justify-content: center; + } + + .row.aln-right { + justify-content: flex-end; + } + + .row.aln-top { + align-items: flex-start; + } + + .row.aln-middle { + align-items: center; + } + + .row.aln-bottom { + align-items: flex-end; + } + + .row > .imp-normal { + order: -1; + } + + .row > .col-1-normal { + width: 8.33333%; + } + + .row > .off-1-normal { + margin-left: 8.33333%; + } + + .row > .col-2-normal { + width: 16.66667%; + } + + .row > .off-2-normal { + margin-left: 16.66667%; + } + + .row > .col-3-normal { + width: 25%; + } + + .row > .off-3-normal { + margin-left: 25%; + } + + .row > .col-4-normal { + width: 33.33333%; + } + + .row > .off-4-normal { + margin-left: 33.33333%; + } + + .row > .col-5-normal { + width: 41.66667%; + } + + .row > .off-5-normal { + margin-left: 41.66667%; + } + + .row > .col-6-normal { + width: 50%; + } + + .row > .off-6-normal { + margin-left: 50%; + } + + .row > .col-7-normal { + width: 58.33333%; + } + + .row > .off-7-normal { + margin-left: 58.33333%; + } + + .row > .col-8-normal { + width: 66.66667%; + } + + .row > .off-8-normal { + margin-left: 66.66667%; + } + + .row > .col-9-normal { + width: 75%; + } + + .row > .off-9-normal { + margin-left: 75%; + } + + .row > .col-10-normal { + width: 83.33333%; + } + + .row > .off-10-normal { + margin-left: 83.33333%; + } + + .row > .col-11-normal { + width: 91.66667%; + } + + .row > .off-11-normal { + margin-left: 91.66667%; + } + + .row > .col-12-normal { + width: 100%; + } + + .row > .off-12-normal { + margin-left: 100%; + } + + .row.gtr-0 { + margin-top: 0; + margin-left: 0em; + } + + .row.gtr-0 > * { + padding: 0 0 0 0em; + } + + .row.gtr-0.gtr-uniform { + margin-top: 0em; + } + + .row.gtr-0.gtr-uniform > * { + padding-top: 0em; + } + + .row.gtr-25 { + margin-top: 0; + margin-left: -0.5em; + } + + .row.gtr-25 > * { + padding: 0 0 0 0.5em; + } + + .row.gtr-25.gtr-uniform { + margin-top: -0.5em; + } + + .row.gtr-25.gtr-uniform > * { + padding-top: 0.5em; + } + + .row.gtr-50 { + margin-top: 0; + margin-left: -1em; + } + + .row.gtr-50 > * { + padding: 0 0 0 1em; + } + + .row.gtr-50.gtr-uniform { + margin-top: -1em; + } + + .row.gtr-50.gtr-uniform > * { + padding-top: 1em; + } + + .row { + margin-top: 0; + margin-left: -2em; + } + + .row > * { + padding: 0 0 0 2em; + } + + .row.gtr-uniform { + margin-top: -2em; + } + + .row.gtr-uniform > * { + padding-top: 2em; + } + + .row.gtr-150 { + margin-top: 0; + margin-left: -3em; + } + + .row.gtr-150 > * { + padding: 0 0 0 3em; + } + + .row.gtr-150.gtr-uniform { + margin-top: -3em; + } + + .row.gtr-150.gtr-uniform > * { + padding-top: 3em; + } + + .row.gtr-200 { + margin-top: 0; + margin-left: -4em; + } + + .row.gtr-200 > * { + padding: 0 0 0 4em; + } + + .row.gtr-200.gtr-uniform { + margin-top: -4em; + } + + .row.gtr-200.gtr-uniform > * { + padding-top: 4em; + } + + } + + @media screen and (max-width: 980px) { + + .row { + display: flex; + flex-wrap: wrap; + box-sizing: border-box; + align-items: stretch; + } + + .row > * { + box-sizing: border-box; + } + + .row.gtr-uniform > * > :last-child { + margin-bottom: 0; + } + + .row.aln-left { + justify-content: flex-start; + } + + .row.aln-center { + justify-content: center; + } + + .row.aln-right { + justify-content: flex-end; + } + + .row.aln-top { + align-items: flex-start; + } + + .row.aln-middle { + align-items: center; + } + + .row.aln-bottom { + align-items: flex-end; + } + + .row > .imp-narrow { + order: -1; + } + + .row > .col-1-narrow { + width: 8.33333%; + } + + .row > .off-1-narrow { + margin-left: 8.33333%; + } + + .row > .col-2-narrow { + width: 16.66667%; + } + + .row > .off-2-narrow { + margin-left: 16.66667%; + } + + .row > .col-3-narrow { + width: 25%; + } + + .row > .off-3-narrow { + margin-left: 25%; + } + + .row > .col-4-narrow { + width: 33.33333%; + } + + .row > .off-4-narrow { + margin-left: 33.33333%; + } + + .row > .col-5-narrow { + width: 41.66667%; + } + + .row > .off-5-narrow { + margin-left: 41.66667%; + } + + .row > .col-6-narrow { + width: 50%; + } + + .row > .off-6-narrow { + margin-left: 50%; + } + + .row > .col-7-narrow { + width: 58.33333%; + } + + .row > .off-7-narrow { + margin-left: 58.33333%; + } + + .row > .col-8-narrow { + width: 66.66667%; + } + + .row > .off-8-narrow { + margin-left: 66.66667%; + } + + .row > .col-9-narrow { + width: 75%; + } + + .row > .off-9-narrow { + margin-left: 75%; + } + + .row > .col-10-narrow { + width: 83.33333%; + } + + .row > .off-10-narrow { + margin-left: 83.33333%; + } + + .row > .col-11-narrow { + width: 91.66667%; + } + + .row > .off-11-narrow { + margin-left: 91.66667%; + } + + .row > .col-12-narrow { + width: 100%; + } + + .row > .off-12-narrow { + margin-left: 100%; + } + + .row.gtr-0 { + margin-top: 0; + margin-left: 0em; + } + + .row.gtr-0 > * { + padding: 0 0 0 0em; + } + + .row.gtr-0.gtr-uniform { + margin-top: 0em; + } + + .row.gtr-0.gtr-uniform > * { + padding-top: 0em; + } + + .row.gtr-25 { + margin-top: 0; + margin-left: -0.5em; + } + + .row.gtr-25 > * { + padding: 0 0 0 0.5em; + } + + .row.gtr-25.gtr-uniform { + margin-top: -0.5em; + } + + .row.gtr-25.gtr-uniform > * { + padding-top: 0.5em; + } + + .row.gtr-50 { + margin-top: 0; + margin-left: -1em; + } + + .row.gtr-50 > * { + padding: 0 0 0 1em; + } + + .row.gtr-50.gtr-uniform { + margin-top: -1em; + } + + .row.gtr-50.gtr-uniform > * { + padding-top: 1em; + } + + .row { + margin-top: 0; + margin-left: -2em; + } + + .row > * { + padding: 0 0 0 2em; + } + + .row.gtr-uniform { + margin-top: -2em; + } + + .row.gtr-uniform > * { + padding-top: 2em; + } + + .row.gtr-150 { + margin-top: 0; + margin-left: -3em; + } + + .row.gtr-150 > * { + padding: 0 0 0 3em; + } + + .row.gtr-150.gtr-uniform { + margin-top: -3em; + } + + .row.gtr-150.gtr-uniform > * { + padding-top: 3em; + } + + .row.gtr-200 { + margin-top: 0; + margin-left: -4em; + } + + .row.gtr-200 > * { + padding: 0 0 0 4em; + } + + .row.gtr-200.gtr-uniform { + margin-top: -4em; + } + + .row.gtr-200.gtr-uniform > * { + padding-top: 4em; + } + + } + + @media screen and (max-width: 736px) { + + .row { + display: flex; + flex-wrap: wrap; + box-sizing: border-box; + align-items: stretch; + } + + .row > * { + box-sizing: border-box; + } + + .row.gtr-uniform > * > :last-child { + margin-bottom: 0; + } + + .row.aln-left { + justify-content: flex-start; + } + + .row.aln-center { + justify-content: center; + } + + .row.aln-right { + justify-content: flex-end; + } + + .row.aln-top { + align-items: flex-start; + } + + .row.aln-middle { + align-items: center; + } + + .row.aln-bottom { + align-items: flex-end; + } + + .row > .imp-mobile { + order: -1; + } + + .row > .col-1-mobile { + width: 8.33333%; + } + + .row > .off-1-mobile { + margin-left: 8.33333%; + } + + .row > .col-2-mobile { + width: 16.66667%; + } + + .row > .off-2-mobile { + margin-left: 16.66667%; + } + + .row > .col-3-mobile { + width: 25%; + } + + .row > .off-3-mobile { + margin-left: 25%; + } + + .row > .col-4-mobile { + width: 33.33333%; + } + + .row > .off-4-mobile { + margin-left: 33.33333%; + } + + .row > .col-5-mobile { + width: 41.66667%; + } + + .row > .off-5-mobile { + margin-left: 41.66667%; + } + + .row > .col-6-mobile { + width: 50%; + } + + .row > .off-6-mobile { + margin-left: 50%; + } + + .row > .col-7-mobile { + width: 58.33333%; + } + + .row > .off-7-mobile { + margin-left: 58.33333%; + } + + .row > .col-8-mobile { + width: 66.66667%; + } + + .row > .off-8-mobile { + margin-left: 66.66667%; + } + + .row > .col-9-mobile { + width: 75%; + } + + .row > .off-9-mobile { + margin-left: 75%; + } + + .row > .col-10-mobile { + width: 83.33333%; + } + + .row > .off-10-mobile { + margin-left: 83.33333%; + } + + .row > .col-11-mobile { + width: 91.66667%; + } + + .row > .off-11-mobile { + margin-left: 91.66667%; + } + + .row > .col-12-mobile { + width: 100%; + } + + .row > .off-12-mobile { + margin-left: 100%; + } + + .row.gtr-0 { + margin-top: 0; + margin-left: 0em; + } + + .row.gtr-0 > * { + padding: 0 0 0 0em; + } + + .row.gtr-0.gtr-uniform { + margin-top: 0em; + } + + .row.gtr-0.gtr-uniform > * { + padding-top: 0em; + } + + .row.gtr-25 { + margin-top: 0; + margin-left: -0.5em; + } + + .row.gtr-25 > * { + padding: 0 0 0 0.5em; + } + + .row.gtr-25.gtr-uniform { + margin-top: -0.5em; + } + + .row.gtr-25.gtr-uniform > * { + padding-top: 0.5em; + } + + .row.gtr-50 { + margin-top: 0; + margin-left: -1em; + } + + .row.gtr-50 > * { + padding: 0 0 0 1em; + } + + .row.gtr-50.gtr-uniform { + margin-top: -1em; + } + + .row.gtr-50.gtr-uniform > * { + padding-top: 1em; + } + + .row { + margin-top: 0; + margin-left: -2em; + } + + .row > * { + padding: 0 0 0 2em; + } + + .row.gtr-uniform { + margin-top: -2em; + } + + .row.gtr-uniform > * { + padding-top: 2em; + } + + .row.gtr-150 { + margin-top: 0; + margin-left: -3em; + } + + .row.gtr-150 > * { + padding: 0 0 0 3em; + } + + .row.gtr-150.gtr-uniform { + margin-top: -3em; + } + + .row.gtr-150.gtr-uniform > * { + padding-top: 3em; + } + + .row.gtr-200 { + margin-top: 0; + margin-left: -4em; + } + + .row.gtr-200 > * { + padding: 0 0 0 4em; + } + + .row.gtr-200.gtr-uniform { + margin-top: -4em; + } + + .row.gtr-200.gtr-uniform > * { + padding-top: 4em; + } + + } + + @media screen and (max-width: 480px) { + + .row { + display: flex; + flex-wrap: wrap; + box-sizing: border-box; + align-items: stretch; + } + + .row > * { + box-sizing: border-box; + } + + .row.gtr-uniform > * > :last-child { + margin-bottom: 0; + } + + .row.aln-left { + justify-content: flex-start; + } + + .row.aln-center { + justify-content: center; + } + + .row.aln-right { + justify-content: flex-end; + } + + .row.aln-top { + align-items: flex-start; + } + + .row.aln-middle { + align-items: center; + } + + .row.aln-bottom { + align-items: flex-end; + } + + .row > .imp-mobilep { + order: -1; + } + + .row > .col-1-mobilep { + width: 8.33333%; + } + + .row > .off-1-mobilep { + margin-left: 8.33333%; + } + + .row > .col-2-mobilep { + width: 16.66667%; + } + + .row > .off-2-mobilep { + margin-left: 16.66667%; + } + + .row > .col-3-mobilep { + width: 25%; + } + + .row > .off-3-mobilep { + margin-left: 25%; + } + + .row > .col-4-mobilep { + width: 33.33333%; + } + + .row > .off-4-mobilep { + margin-left: 33.33333%; + } + + .row > .col-5-mobilep { + width: 41.66667%; + } + + .row > .off-5-mobilep { + margin-left: 41.66667%; + } + + .row > .col-6-mobilep { + width: 50%; + } + + .row > .off-6-mobilep { + margin-left: 50%; + } + + .row > .col-7-mobilep { + width: 58.33333%; + } + + .row > .off-7-mobilep { + margin-left: 58.33333%; + } + + .row > .col-8-mobilep { + width: 66.66667%; + } + + .row > .off-8-mobilep { + margin-left: 66.66667%; + } + + .row > .col-9-mobilep { + width: 75%; + } + + .row > .off-9-mobilep { + margin-left: 75%; + } + + .row > .col-10-mobilep { + width: 83.33333%; + } + + .row > .off-10-mobilep { + margin-left: 83.33333%; + } + + .row > .col-11-mobilep { + width: 91.66667%; + } + + .row > .off-11-mobilep { + margin-left: 91.66667%; + } + + .row > .col-12-mobilep { + width: 100%; + } + + .row > .off-12-mobilep { + margin-left: 100%; + } + + .row.gtr-0 { + margin-top: 0; + margin-left: 0em; + } + + .row.gtr-0 > * { + padding: 0 0 0 0em; + } + + .row.gtr-0.gtr-uniform { + margin-top: 0em; + } + + .row.gtr-0.gtr-uniform > * { + padding-top: 0em; + } + + .row.gtr-25 { + margin-top: 0; + margin-left: -0.5em; + } + + .row.gtr-25 > * { + padding: 0 0 0 0.5em; + } + + .row.gtr-25.gtr-uniform { + margin-top: -0.5em; + } + + .row.gtr-25.gtr-uniform > * { + padding-top: 0.5em; + } + + .row.gtr-50 { + margin-top: 0; + margin-left: -1em; + } + + .row.gtr-50 > * { + padding: 0 0 0 1em; + } + + .row.gtr-50.gtr-uniform { + margin-top: -1em; + } + + .row.gtr-50.gtr-uniform > * { + padding-top: 1em; + } + + .row { + margin-top: 0; + margin-left: -2em; + } + + .row > * { + padding: 0 0 0 2em; + } + + .row.gtr-uniform { + margin-top: -2em; + } + + .row.gtr-uniform > * { + padding-top: 2em; + } + + .row.gtr-150 { + margin-top: 0; + margin-left: -3em; + } + + .row.gtr-150 > * { + padding: 0 0 0 3em; + } + + .row.gtr-150.gtr-uniform { + margin-top: -3em; + } + + .row.gtr-150.gtr-uniform > * { + padding-top: 3em; + } + + .row.gtr-200 { + margin-top: 0; + margin-left: -4em; + } + + .row.gtr-200 > * { + padding: 0 0 0 4em; + } + + .row.gtr-200.gtr-uniform { + margin-top: -4em; + } + + .row.gtr-200.gtr-uniform > * { + padding-top: 4em; + } + + } + +/* Container */ + + .container { + margin: 0 auto; + width: 1200px; + } + + .container.medium { + width: 900px; + } + + @media screen and (max-width: 1680px) { + + .container { + width: 1080px; + } + + .container.medium { + width: 810px; + } + + } + + @media screen and (max-width: 1280px) { + + .container { + width: 960px; + } + + .container.medium { + width: 720px; + } + + } + + @media screen and (max-width: 980px) { + + .container { + width: 90%; + } + + .container.medium { + width: 90%; + } + + } + + @media screen and (max-width: 736px) { + + .container { + width: 100%; + } + + .container.medium { + width: 100%; + } + + } + +/* Section/Article */ + + section.special, article.special { + text-align: center; + } + + header.major { + text-align: center; + position: relative; + } + + header.major:after { + background: #eee; + content: ''; + display: inline-block; + height: 3px; + margin: 0 0 2em 0; + width: 6em; + } + + header.major.alt { + text-align: center; + margin-bottom: 2em; + } + + header p { + letter-spacing: 0.125em; + margin: 0 0 1.5em 0; + position: relative; + text-transform: uppercase; + } + + header h2 + p { + font-size: 1em; + margin-top: -0.85em; + line-height: 1.75em; + } + + header h3 + p { + font-size: 0.9em; + margin-top: -0.75em; + line-height: 1.75em; + } + + header h4 + p, + header h5 + p, + header h6 + p { + font-size: 0.8em; + margin-top: -0.75em; + line-height: 1.75em; + } + +/* Form */ + + form { + margin: 0 0 2em 0; + } + + label { + color: #2a2a2a; + display: block; + font-size: 0.9em; + font-weight: 600; + margin: 0 0 1em 0; + } + + input[type="text"], + input[type="password"], + input[type="email"], + select, + textarea { + -moz-appearance: none; + -webkit-appearance: none; + -ms-appearance: none; + appearance: none; + border: none; + border: solid 2px #eee; + border-radius: 0; + color: inherit; + display: block; + outline: 0; + padding: 0 1em; + text-decoration: none; + width: 100%; + } + + input[type="text"]:invalid, + input[type="password"]:invalid, + input[type="email"]:invalid, + select:invalid, + textarea:invalid { + box-shadow: none; + } + + input[type="text"]:focus, + input[type="password"]:focus, + input[type="email"]:focus, + select:focus, + textarea:focus { + border-color: #51c5e8; + } + + select { + background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='40' height='40' preserveAspectRatio='none' viewBox='0 0 40 40'%3E%3Cpath d='M9.4,12.3l10.4,10.4l10.4-10.4c0.2-0.2,0.5-0.4,0.9-0.4c0.3,0,0.6,0.1,0.9,0.4l3.3,3.3c0.2,0.2,0.4,0.5,0.4,0.9 c0,0.4-0.1,0.6-0.4,0.9L20.7,31.9c-0.2,0.2-0.5,0.4-0.9,0.4c-0.3,0-0.6-0.1-0.9-0.4L4.3,17.3c-0.2-0.2-0.4-0.5-0.4-0.9 c0-0.4,0.1-0.6,0.4-0.9l3.3-3.3c0.2-0.2,0.5-0.4,0.9-0.4S9.1,12.1,9.4,12.3z' fill='%23eee' /%3E%3C/svg%3E"); + background-size: 1.25em; + background-repeat: no-repeat; + background-position: calc(100% - 1em) center; + height: 3.5em; + padding-right: 3.5em; + text-overflow: ellipsis; + } + + select:focus::-ms-value { + background-color: transparent; + } + + select::-ms-expand { + display: none; + } + + select option { + color: #2a2a2a; + background: #fff; + } + + input[type="text"], + input[type="password"], + input[type="email"], + select { + height: 3.5em; + } + + textarea { + padding: 0.75em 1em; + } + + input[type="checkbox"], + input[type="radio"] { + -moz-appearance: none; + -webkit-appearance: none; + -ms-appearance: none; + appearance: none; + display: block; + float: left; + margin-right: -2em; + opacity: 0; + width: 1em; + z-index: -1; + } + + input[type="checkbox"] + label, + input[type="radio"] + label { + text-decoration: none; + color: #4a4a4a; + cursor: pointer; + display: inline-block; + font-size: 1em; + font-weight: 300; + padding-left: 2.85em; + padding-right: 0.75em; + position: relative; + } + + input[type="checkbox"] + label:before, + input[type="radio"] + label:before { + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + display: inline-block; + font-style: normal; + font-variant: normal; + text-rendering: auto; + line-height: 1; + text-transform: none !important; + font-family: 'Font Awesome 5 Free'; + font-weight: 900; + } + + input[type="checkbox"] + label:before, + input[type="radio"] + label:before { + background: rgba(144, 144, 144, 0.05); + border: solid 2px #eee; + content: ''; + display: inline-block; + font-size: 0.8em; + height: 2.1em; + left: 0; + line-height: 1.925em; + position: absolute; + text-align: center; + top: 0; + width: 2.1em; + } + + input[type="checkbox"]:checked + label:before, + input[type="radio"]:checked + label:before { + background: #1d2726; + border-color: #1d2726; + color: #ffffff; + content: '\f00c'; + } + + input[type="checkbox"]:focus + label:before, + input[type="radio"]:focus + label:before { + border-color: #51c5e8; + } + + input[type="radio"] + label:before { + border-radius: 100%; + } + + ::-webkit-input-placeholder { + color: #bbb !important; + opacity: 1.0; + } + + :-moz-placeholder { + color: #bbb !important; + opacity: 1.0; + } + + ::-moz-placeholder { + color: #bbb !important; + opacity: 1.0; + } + + :-ms-input-placeholder { + color: #bbb !important; + opacity: 1.0; + } + +/* Box */ + + .box { + border: solid 2px #eee; + margin-bottom: 2em; + padding: 1.5em; + } + + .box > :last-child, + .box > :last-child > :last-child, + .box > :last-child > :last-child > :last-child { + margin-bottom: 0; + } + + .box.alt { + border: 0; + padding: 0; + } + +/* Icon */ + + .icon { + text-decoration: none; + border-bottom: none; + position: relative; + } + + .icon:before { + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + display: inline-block; + font-style: normal; + font-variant: normal; + text-rendering: auto; + line-height: 1; + text-transform: none !important; + font-family: 'Font Awesome 5 Free'; + font-weight: 400; + } + + .icon.solid:before { + font-weight: 900; + } + + .icon.brands:before { + font-family: 'Font Awesome 5 Brands'; + } + + .icon > .label { + display: none; + } + +/* Image */ + + .image { + border: 0; + display: inline-block; + position: relative; + } + + .image:before { + background: url("images/overlay.png"); + content: ''; + display: block; + height: 100%; + left: 0; + position: absolute; + top: 0; + width: 100%; + } + + .image img { + display: block; + } + + .image.left { + float: left; + margin: 0 1.5em 1em 0; + top: 0.25em; + } + + .image.right { + float: right; + margin: 0 0 1em 1.5em; + top: 0.25em; + } + + .image.fit { + display: block; + margin: 0 0 3em 0; + width: 100%; + } + + .image.fit img { + display: block; + width: 100%; + } + +/* List */ + + ol { + list-style: decimal; + margin: 0 0 2em 0; + padding-left: 1.25em; + } + + ol li { + padding-left: 0.25em; + } + + ul { + list-style: disc; + margin: 0 0 2em 0; + padding-left: 1em; + } + + ul li { + padding-left: 0.5em; + } + + ul.alt { + list-style: none; + padding-left: 0; + } + + ul.alt li { + border-top: solid 1px #eee; + padding: 0.5em 0; + } + + ul.alt li:first-child { + border-top: 0; + padding-top: 0; + } + + dl { + margin: 0 0 2em 0; + } + +/* Actions */ + + ul.actions { + display: -moz-flex; + display: -webkit-flex; + display: -ms-flex; + display: flex; + cursor: default; + list-style: none; + margin-left: -1em; + padding-left: 0; + } + + ul.actions li { + padding: 0 0 0 1em; + vertical-align: middle; + } + + ul.actions.special { + -moz-justify-content: center; + -webkit-justify-content: center; + -ms-justify-content: center; + justify-content: center; + width: 100%; + margin-left: 0; + } + + ul.actions.special li:first-child { + padding-left: 0; + } + + ul.actions.stacked { + -moz-flex-direction: column; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + margin-left: 0; + } + + ul.actions.stacked li { + padding: 1.3em 0 0 0; + } + + ul.actions.stacked li:first-child { + padding-top: 0; + } + + ul.actions.fit { + width: calc(100% + 1em); + } + + ul.actions.fit li { + -moz-flex-grow: 1; + -webkit-flex-grow: 1; + -ms-flex-grow: 1; + flex-grow: 1; + -moz-flex-shrink: 1; + -webkit-flex-shrink: 1; + -ms-flex-shrink: 1; + flex-shrink: 1; + width: 100%; + } + + ul.actions.fit li > * { + width: 100%; + } + + ul.actions.fit.stacked { + width: 100%; + } + + @media screen and (max-width: 480px) { + + ul.actions:not(.fixed) { + -moz-flex-direction: column; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + margin-left: 0; + width: 100% !important; + } + + ul.actions:not(.fixed) li { + -moz-flex-grow: 1; + -webkit-flex-grow: 1; + -ms-flex-grow: 1; + flex-grow: 1; + -moz-flex-shrink: 1; + -webkit-flex-shrink: 1; + -ms-flex-shrink: 1; + flex-shrink: 1; + padding: 1em 0 0 0; + text-align: center; + width: 100%; + } + + ul.actions:not(.fixed) li > * { + width: 100%; + } + + ul.actions:not(.fixed) li:first-child { + padding-top: 0; + } + + ul.actions:not(.fixed) li input[type="submit"], + ul.actions:not(.fixed) li input[type="reset"], + ul.actions:not(.fixed) li input[type="button"], + ul.actions:not(.fixed) li button, + ul.actions:not(.fixed) li .button { + width: 100%; + } + + ul.actions:not(.fixed) li input[type="submit"].icon:before, + ul.actions:not(.fixed) li input[type="reset"].icon:before, + ul.actions:not(.fixed) li input[type="button"].icon:before, + ul.actions:not(.fixed) li button.icon:before, + ul.actions:not(.fixed) li .button.icon:before { + margin-left: -0.5em; + } + + } + +/* Icons */ + + ul.icons { + cursor: default; + list-style: none; + padding-left: 0; + } + + ul.icons li { + display: inline-block; + padding: 0 1em 0 0; + } + + ul.icons li:last-child { + padding-right: 0; + } + + ul.icons li .icon:before { + font-size: 1.5em; + } + +/* Table */ + + .table-wrapper { + -webkit-overflow-scrolling: touch; + overflow-x: auto; + } + + table { + margin: 0 0 2em 0; + width: 100%; + } + + table tbody tr { + border: solid 1px #eee; + border-left: 0; + border-right: 0; + } + + table tbody tr:nth-child(2n + 1) { + background-color: rgba(144, 144, 144, 0.05); + } + + table td { + padding: 0.75em 0.75em; + } + + table th { + color: #2a2a2a; + font-size: 0.9em; + font-weight: 600; + padding: 0 0.75em 0.75em 0.75em; + text-align: left; + } + + table thead { + border-bottom: solid 2px #eee; + } + + table tfoot { + border-top: solid 2px #eee; + } + + table.alt { + border-collapse: separate; + } + + table.alt tbody tr td { + border: solid 1px #eee; + border-left-width: 0; + border-top-width: 0; + } + + table.alt tbody tr td:first-child { + border-left-width: 1px; + } + + table.alt tbody tr:first-child td { + border-top-width: 1px; + } + + table.alt thead { + border-bottom: 0; + } + + table.alt tfoot { + border-top: 0; + } + +/* Button */ + + input[type="submit"], + input[type="reset"], + input[type="button"], + button, + .button { + -moz-appearance: none; + -webkit-appearance: none; + -ms-appearance: none; + appearance: none; + -moz-transition: background-color 0.2s ease-in-out, color 0.2s ease-in-out; + -webkit-transition: background-color 0.2s ease-in-out, color 0.2s ease-in-out; + -ms-transition: background-color 0.2s ease-in-out, color 0.2s ease-in-out; + transition: background-color 0.2s ease-in-out, color 0.2s ease-in-out; + background-color: #1d2726; + border-radius: 0; + border: 0; + color: #ffffff !important; + cursor: pointer; + display: inline-block; + font-size: 0.9em; + font-weight: 600; + height: 4em; + letter-spacing: 0.125em; + line-height: 4em; + overflow: hidden; + padding: 0 2.75em; + text-align: center; + text-decoration: none; + text-overflow: ellipsis; + text-transform: uppercase; + white-space: nowrap; + } + + input[type="submit"]:hover, + input[type="reset"]:hover, + input[type="button"]:hover, + button:hover, + .button:hover { + background-color: #283634; + } + + input[type="submit"]:active, + input[type="reset"]:active, + input[type="button"]:active, + button:active, + .button:active { + background-color: #121818; + } + + input[type="submit"].icon, + input[type="reset"].icon, + input[type="button"].icon, + button.icon, + .button.icon { + padding-left: 2.35em; + } + + input[type="submit"].icon:before, + input[type="reset"].icon:before, + input[type="button"].icon:before, + button.icon:before, + .button.icon:before { + margin-right: 0.5em; + } + + input[type="submit"].fit, + input[type="reset"].fit, + input[type="button"].fit, + button.fit, + .button.fit { + width: 100%; + } + + input[type="submit"].small, + input[type="reset"].small, + input[type="button"].small, + button.small, + .button.small { + font-size: 0.8em; + height: 3.5em; + line-height: 3.5em; + padding: 0 2em; + } + + input[type="submit"].large, + input[type="reset"].large, + input[type="button"].large, + button.large, + .button.large { + font-size: 1.25em; + height: 3.15em; + line-height: 3.15em; + } + + input[type="submit"].alt, + input[type="reset"].alt, + input[type="button"].alt, + button.alt, + .button.alt { + background-color: transparent; + box-shadow: inset 0 0 0 2px #eee; + color: #2a2a2a !important; + } + + input[type="submit"].alt:hover, + input[type="reset"].alt:hover, + input[type="button"].alt:hover, + button.alt:hover, + .button.alt:hover { + background-color: rgba(144, 144, 144, 0.05); + } + + input[type="submit"].alt:active, + input[type="reset"].alt:active, + input[type="button"].alt:active, + button.alt:active, + .button.alt:active { + background-color: rgba(144, 144, 144, 0.1); + } + + input[type="submit"].alt.icon:before, + input[type="reset"].alt.icon:before, + input[type="button"].alt.icon:before, + button.alt.icon:before, + .button.alt.icon:before { + color: #bbb; + } + + input[type="submit"].primary, + input[type="reset"].primary, + input[type="button"].primary, + button.primary, + .button.primary { + background-color: #51c5e8; + color: #ffffff !important; + } + + input[type="submit"].primary:hover, + input[type="reset"].primary:hover, + input[type="button"].primary:hover, + button.primary:hover, + .button.primary:hover { + background-color: #68cdeb; + } + + input[type="submit"].primary:active, + input[type="reset"].primary:active, + input[type="button"].primary:active, + button.primary:active, + .button.primary:active { + background-color: #3abde5; + } + + input[type="submit"].disabled, input[type="submit"]:disabled, + input[type="reset"].disabled, + input[type="reset"]:disabled, + input[type="button"].disabled, + input[type="button"]:disabled, + button.disabled, + button:disabled, + .button.disabled, + .button:disabled { + background-color: #4a4a4a !important; + box-shadow: inset 0 -0.15em 0 0 rgba(0, 0, 0, 0.15); + color: #fff !important; + cursor: default; + opacity: 0.25; + } + +/* Feature */ + + .feature { + margin: 0 0 2em 0; + padding: 2em 0 2em 9em; + position: relative; + } + + .feature i { + border-radius: 100%; + border: solid 3px #eee; + color: #51c5e8; + display: block; + height: 7em; + left: 0; + line-height: 7.25em; + margin-top: -0.5em; + position: absolute; + text-align: center; + top: 2em; + width: 7em; + } + + .feature i:before { + font-size: 40px; + } + + .feature h3 { + margin-bottom: 0.5em; + } + + .feature p { + margin-bottom: 0; + } + +/* Image Feature */ + + .image-feature { + position: relative; + text-align: center; + margin: 0 0.5em 2em 0.5em; + } + + .image-feature > a { + display: block; + } + + .image-feature header { + background: #fff; + left: 0; + padding: 1.5em 0; + position: absolute; + top: 0; + width: 100%; + z-index: 1; + } + + .image-feature header:before { + -moz-transform: rotate(45deg); + -webkit-transform: rotate(45deg); + -ms-transform: rotate(45deg); + transform: rotate(45deg); + background: #fff; + bottom: -0.5em; + content: ''; + display: block; + height: 1em; + left: 50%; + margin-left: -0.5em; + position: absolute; + width: 1em; + } + + .image-feature header h3 { + font-size: 1em; + margin: 0; + } + + .image-feature .image { + margin: 0; + } + + .image-feature p { + margin: 0; + } + + .image-feature footer { + background: #1d2726; + background: rgba(29, 39, 38, 0.9); + bottom: 0; + color: #fff; + left: 0; + padding: 1.5em; + position: absolute; + width: 100%; + z-index: 1; + } + + .image-feature footer input[type="submit"].alt, + .image-feature footer input[type="reset"].alt, + .image-feature footer input[type="button"].alt, + .image-feature footer button.alt, + .image-feature footer .button.alt { + box-shadow: inset 0 0 0 2px rgba(255, 255, 255, 0.25); + color: #fff !important; + } + +/* Wrapper */ + + .wrapper { + padding: 4em 0 4em 0; + } + + .wrapper.style1 { + background: #141414; + color: #888; + } + + .wrapper.style1 h2, .wrapper.style1 h3, .wrapper.style1 strong { + color: #ffffff; + } + + .wrapper.style1 header.major:after { + background: rgba(255, 255, 255, 0.25); + } + + .wrapper.style2 { + background: #000; + } + + .wrapper.style3 { + background: #f4f4f4; + } + + .wrapper.style4 { + background: #fafafa; + } + +/* Header */ + + +.logo-kep{ + width: 70px; + line-height: 5em; + vertical-align: middle; + margin-left: 5em; +} + +.booktime{ + background-color: #9e8462; + color: #000; + margin-left:2em; + padding-left: 10px; + padding-right: 10px; +} + + #page-wrapper { + padding-top: 3em; + } + + #header { + background: #000; + color: #fff; + cursor: default; + height: 5em; + left: 0; + line-height: 5em; + position: fixed; + top: 0; + width: 100%; + z-index: 10000; + } + + #header h1 { + color: #9e8462; + height: inherit; + left: 10.5em; + line-height: inherit; + margin: 0; + padding: 0; + position: absolute; + top: 0; + } + + #header h1 a { + font-size: 1em; + } + + #header h1 a:before { + color: #51c5e8; + margin-right: 0.35em; + } + + #header nav { + font-weight: 600; + height: inherit; + letter-spacing: 0.125em; + line-height: inherit; + position: absolute; + right: 1.5em; + text-transform: uppercase; + top: 0; + vertical-align: middle; + } + + #header nav > ul { + list-style: none; + line-height: 4.5em; + margin: 0; + padding-left: 0; + vertical-align: middle; + } + + #header nav > ul > li { + display: inline-block; + margin-left: 2em; + /*padding-left: 0;*/ + } + + #header nav > ul > li.booktime { + margin-right: 2em; + } + + #header nav > ul > li.socialmedia-menu { + color: #fff; + font-size: 30px; + margin: auto 0 auto 0; +} + + + #header nav > ul > li.language { + padding-left: 0; + margin: 0; + font-size: 12px; + color: #888; + -moz-transition: color 0.2s ease-in-out; + -webkit-transition: color 0.2s ease-in-out; + -ms-transition: color 0.2s ease-in-out; + transition: color 0.2s ease-in-out; + } + #header nav > ul > li.language:hover { + color: #fff; + } + + #header nav > ul > li a { + -moz-transition: color 0.2s ease-in-out; + -webkit-transition: color 0.2s ease-in-out; + -ms-transition: color 0.2s ease-in-out; + transition: color 0.2s ease-in-out; + color: #fff; + display: inline-block; + text-decoration: none; + font-size: 0.8em; + } + + #header nav > ul > li a:before { + margin-right: 0.5em; + /*opacity: 0.5;*/ + } + + #header nav > ul > li a:hover { + color: #9e8462; + } + + #header nav > ul > li.booktime a:hover { + color: #000; + } + + #header nav > ul > li.active > a { + color: #fff; + } + + #header nav > ul > li:first-child { + margin-left: 0; + } + + #header nav > ul > li input[type="submit"], + #header nav > ul > li input[type="reset"], + #header nav > ul > li input[type="button"], + #header nav > ul > li button, + #header nav > ul > li .button { + font-size: 1em; + height: 2.25em; + line-height: 2.25em; + margin-bottom: 0; + padding: 0 1em; + position: relative; + top: -0.125em; + vertical-align: middle; + } + + #header nav > ul > li > ul { + display: none; + } + + #header .container { + position: relative; + } + + #header .container h1 { + left: 0; + } + + #header .container nav { + right: 0; + } + + .dropotron { + background: #1d2726; + color: #fff; + font-weight: 600; + letter-spacing: 0.125em; + list-style: none; + margin-top: -1em; + min-width: 14em; + padding: 1.25em 0; + text-transform: uppercase; + } + + .dropotron.level-0 { + font-size: 0.8em; + margin-top: 1em; + } + + .dropotron.level-0:before { + -moz-transform: rotate(45deg); + -webkit-transform: rotate(45deg); + -ms-transform: rotate(45deg); + transform: rotate(45deg); + background: #1d2726; + content: ''; + display: block; + height: 1em; + position: absolute; + right: 1.5em; + top: -0.5em; + width: 1em; + } + + .dropotron li > a { + -moz-transition: color 0.2s ease-in-out; + -webkit-transition: color 0.2s ease-in-out; + -ms-transition: color 0.2s ease-in-out; + transition: color 0.2s ease-in-out; + color: #ccc; + display: block; + padding: 0.125em 1.25em; + text-decoration: none; + } + + .dropotron li > a:hover { + color: #fff; + } + + .dropotron li.active > a { + color: #fff; + } + +/* Banner */ + + #banner { + background-color: #141414; + /*background-attachment: scroll, fixed; + background-image: url("images/overlay.png"), url("../../images/banner.jpg"); + background-position: top left, center center; + background-repeat: no-repeat; + background-size: cover; + background-size: auto, cover;*/ + color: #fff; + padding: 0em 0; + position: relative; + text-align: center; + } + + #banner img{ + width: 100%; + } + + #banner:after { + -moz-transition: opacity 1s ease-in-out; + -webkit-transition: opacity 1s ease-in-out; + -ms-transition: opacity 1s ease-in-out; + transition: opacity 1s ease-in-out; + background: #313148; + content: ''; + height: 100%; + left: 0; + opacity: 0; + position: absolute; + top: 0; + width: 100%; + z-index: 1; + } + + #banner :last-child { + margin-bottom: 0; + } + + #banner .inner { + background: #1d2726; + background: rgba(29, 39, 38, 0.9); + display: inline-block; + padding: 3.5em 5em; + position: relative; + z-index: 2; + } + + #banner .inner h2 { + color: inherit; + font-size: 2.5em; + line-height: 1.35em; + margin: 0; + padding: 0; + } + + #banner .inner p { + font-size: 1em; + letter-spacing: 0.125em; + line-height: 2em; + margin: 2em 0 0 0; + padding: 2em 0 0 0; + position: relative; + text-transform: uppercase; + top: -0.25em; + } + + #banner .inner p:before { + background: #888; + background: rgba(255, 255, 255, 0.25); + content: ''; + display: block; + height: 3px; + left: 50%; + margin: 0 0 0 -3em; + position: absolute; + top: 0; + width: 6em; + } + + #banner .inner .actions { + margin-top: 2em; + } + + #banner .inner input[type="submit"].alt, + #banner .inner input[type="reset"].alt, + #banner .inner input[type="button"].alt, + #banner .inner button.alt, + #banner .inner .button.alt { + box-shadow: inset 0 0 0 2px rgba(255, 255, 255, 0.25); + color: #fff !important; + } + + body.is-preload #banner:after { + opacity: 1.0; + } + + .prices-category{ + /*font-family: 'Abril Fatface', cursive;*/ + text-align: center; + margin-top: 2em; + margin-bottom: 2em; + } + + +/* Mobile booking */ + +#mobil-menu{ + display: none; + background: #9e8462; +} + +.mobil-menucont ul { + list-style: none; + font-size: 1em; + line-height: 4.5em; + text-align: center; + margin: 0; + padding-left: 0; + vertical-align: middle; +} + +.mobil-menucont ul li{ + color: #fff; + margin: 0 0.5em; + display: inline; +} + +.mobil-menucont ul li a{ + color: #fff; + text-decoration: none; + } + +.mobil-menucont ul .mobil-menu-book{ + margin-right: 2em; + padding: 0.5em 0.5em; + font-weight: 600; +} + + + @media screen and (max-width: 980px) { + #mobil-menu{ + display: block; + } +} + +/* Main */ + + #main > header.major { + margin: 0 0 2em 0; + text-align: center; + } + + header.major h2{ + font-family: 'Abril Fatface', cursive; + color: #fff; + font-size: 50px; + font-weight: 400; + margin-bottom: 0; + } + + + header.major h4{ + font-size: 13px; + color: #888888; + } + + + +.one-half { + float: left; + width: 100%; + padding: 0 40px; + position: relative; + text-align: left; + overflow: hidden; +} + +.category-content { + position: relative; + display: inline-block; + width: 100%; + padding-bottom: 15px; + padding-top: 18px; + border-bottom: 1px solid #3d3d3d;} + +.category-text-left { + float: left; +} + +.main-title a { + text-decoration: none; + font-size: 16px; + color: #ffffff; + font-weight: 500; + -webkit-transition: all 0.5s ease; + -moz-transition: all 0.5s ease; + -o-transition: all 0.5s ease; + transition: all 0.5s ease; +} + +.sub-title { + font-size: 13px; + color: #888888; + font-weight: 400; + padding-right: 40px; + letter-spacing: 0.6px; +} + +.category-text-right { + float: right; +} + +.category-content .price { + font-size: 16px; + color: #9e8462; + letter-spacing: 0.5px; + font-weight: 600; + display: inline-block; + -webkit-transition: all 0.5s ease; + -moz-transition: all 0.5s ease; + -o-transition: all 0.5s ease; + transition: all 0.5s ease; +} + + +.common-home .box-heading:before, .box.related .box-heading:before { + content: ""; + background: url(../../assets/img/ollo.png) no-repeat scroll; + width: 75px; + height: 65px; + position: absolute; + top: 0; + left: 0; + right: 0; + margin: 0 auto; + display: inline-block; +} + + +/* About Us */ + +#aboutus .container .inner .dolgozo-nev{ + width: 100%; + text-align: center; + margin-bottom: 2em; +} +#aboutus .container .inner hr { + margin: 4em auto 4em auto; + border-bottom: solid 3px #888; + width: 40%; +} + +#aboutus .container .inner .dolgozo-nev .dolgozo-kep{ + width: 150px; + border-radius: 50%; + margin-bottom: 1em; +} + +#aboutus .container .inner .dolgozo-nev h4{ + color: #fff; +} + +#aboutus .container .inner .dolgozo-nev h4 span{ + color: #888; +} + +.bemutatkozas, .bemutatkozas-dolgozo{ + display: flex; + width: 100%; +} + +.bem-bal, .bem-dolgozo-bal{ + width: 60%; +} + +.bem-bal h4{ + color: #fff; +} + +.bem-bal p{ + text-align: justify; +} + +.bem-dolgozo-bal p{ + text-align: justify; + font-style: italic; + +} + +.bem-jobb{ + width: 40%; + margin-left: 4em; + float: right; +} + +.bem-jobb img{ + width: 100%; +} + +.bem-jobb h4{ + margin-top: 1em; + text-align: center; + color: #9e8462; +} + +.bem-jobb h4 span{ + color: #fff; +} +.bem-dolgozo-jobb{ + width: 40%; + float: right; + text-align: right; + margin: auto; + +} + +.bem-dolgozo-jobb img{ + opacity: 0.8; + margin-left: 10px; + margin-right: 10ox; + width: 40%; + transition: opacity .25s ease-in-out; + -moz-transition: opacity .25s ease-in-out; + -webkit-transition: opacity .25s ease-in-out; +} + +.bem-dolgozo-jobb img:hover{ + opacity: 1; + +} + + + +/* Treatments - Our Services */ + + #treatments{ + clear: both; + } + + .service-block { + width: 100%; + display: block; + } + + + .service-area .one-third { + + width: 28%; + padding: 0; + overflow: hidden; + } + + .service-area .one-third.service-part1, .service-area .one-third.service-part4 { + width: 30%; + padding: 0; + float: left; + overflow: hidden; + } + + .service-area .one-third.service-part2 { + width: 42%; + /*margin-top:30px; + margin-bottom: 30px;*/ + padding: 0 30px; + float:left; + overflow: hidden; + } + + .service-area .one-third .service img { + -webkit-transform: rotateY(0deg); + -moz-transform: rotateY(0deg); + -ms-transform: rotateY(0deg); + -o-transform: rotateY(0deg); + transform: rotateY(0deg); + transition: all 0.9s ease 0s; + -webkit-transition: all 0.9s ease 0s; + -moz-transition: all 0.9s ease 0s; + -ms-transition: all 0.9s ease 0s; + -o-transition: all 0.9s ease 0s; + max-width: 100%; + } + + .service-area .one-third .service:hover img { + -webkit-transform: rotateY(-180deg); + -moz-transform: rotateY(-180deg); + -ms-transform: rotateY(-180deg); + -o-transform: rotateY(-180deg); + transform: rotateY(-180deg); + transition: all 0.9s ease 0s; + -webkit-transition: all 0.9s ease 0s; + -moz-transition: all 0.9s ease 0s; + -ms-transition: all 0.9s ease 0s; + -o-transition: all 0.9s ease 0s; + } + + + .service-area .one-third .service .service-text .service-icon { + background: url(../../assets/img/service-icon.png) no-repeat scroll; + float: right; + height: 80px; + border-radius: 50%; + width: 80px; + position: relative; + background-color: #333333; + display: inline-block; + transition: all 0.5s ease 0s; + -webkit-transition: all 0.5s ease 0s; + -moz-transition: all 0.5s ease 0s; + -ms-transition: all 0.5s ease 0s; + -o-transition: all 0.5s ease 0s; + } + + .service .service-text .service-content .main-title { + font-size: 14px; + font-weight: 600; + color: #ffffff; + text-transform: capitalize; + letter-spacing: 0.8px; + padding-bottom: 10px; + } + + .service .service-text .service-content .sub-title-serv { + font-size: 13px; + color: #888888; + font-weight: 400; + line-height: 20px; + letter-spacing: 0.6px; + } + + .service-area .one-third .service .service-text .service-content { + margin-right: 100px; + } + + .service-area .one-third .service .service-text { + padding: 0 0px 95px; + text-align: right; + } + + .service-area .one-third .service.service3 .service-text .service-content { + margin-right: 0px; + margin-left: 100px; + } + + .service-area .one-third .service.service3 .service-text { + text-align: left; + } + + + + .service-area .one-third .service.service3 .service-text .service-icon { + float: left; + } + + .service-area .one-third .service .service-text .service-icon.icon1 { + background-position: center -65px; + } + .service-area .one-third .service .service-text:hover .service-icon.icon1 { + background-position:center 22px; + } + .service-area .one-third .service .service-text .service-icon.icon2 { + background-position:center -417px; + } + .service-area .one-third .service .service-text:hover .service-icon.icon2 { + background-position: center -330px; + } + .service-area .one-third .service .service-text .service-icon.icon3 { + background-position:center -765px; + } + .service-area .one-third .service .service-text:hover .service-icon.icon3 { + background-position: center -678px; + } + .service-area .one-third .service.service3 .service-text .service-icon.icon1 { + background-position: center -242px; + } + .service-area .one-third .service.service3 .service-text:hover .service-icon.icon1 { + background-position: center -155px; + } + .service-area .one-third .service.service3 .service-text .service-icon.icon2 { + background-position: center -590px; + } + .service-area .one-third .service.service3 .service-text:hover .service-icon.icon2 { + background-position:center -503px; + } + .service-area .one-third.service-part3 .service .service-text .service-icon.icon3 { + background-position: center -939px; + } + .service-area .one-third.service-part3 .service .service-text:hover .service-icon.icon3 { + background-position:center -852px; + } + .service-area .one-third .service .service-text:hover .service-content .main-title { + color: #9e8462; + } + + + +/* One */ + + #one { + padding-top:10em; + padding-bottom: 5em; + } + + #one p { + font-size: 1.25em; + line-height: 1.75em; + margin: -0.5em 0 0 0; + } + + #one .inner { + display: inline-block; + margin-top: -6em; + padding-right: 6em; + vertical-align: middle; + width: 100%; + } + + #one .device { + border: solid 40px #fff; + border-bottom: 0; + border-radius: 20px; + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; + display: inline-block; + margin-bottom: 0; + position: relative; + vertical-align: middle; + width: 100%; + } + + #one .device:after { + background: #eee; + border-radius: 100%; + content: ''; + height: 10px; + left: 50%; + margin: -23px 0 0 -5px; + position: absolute; + top: 0; + width: 10px; + } + + +/*two */ + + .nyitvatartas .about-content { + position: relative; + display: inline-block; + width: 100%; + padding: 25px 0px 15px; + border-bottom: 1px solid #3d3d3d; + font-size: 16px; + font-weight: 600; + } + + .nyitvatartas .title, .nyitvatartas .time{ + color: #fff; + } + + .nyitvartas .closed{ + color: #9e8462; + } + + .nyitvatartas .about-content .about-text-left { + float: left; + } + + .nyitvatartas .about-content .about-text-right { + float: right; +} + + + +/* Footer */ + +#footer .footer-div{ + display: flex; +} + + +#footer .footer-div .companyname{ + color: #fff; + font-family: 'Abril Fatface', cursive; + font-size: 24px; + margin-bottom: 20px; +} + +#footer .footer-div .companyname span{ + border-bottom: solid 5px #fff; + } + +#footer .footer-div ul{ + margin: 0; + list-style: none; +} + +#footer .footer-logo{ + max-width: 100px; +} + + #footer { + background: #9e8462; + color: #fff; + padding: 2em 0 0 0; + text-align: center; + } + + #footer .icons { + font-size: 24px; + margin: 0 0 1em 0; + padding-left: 0; + } + + #footer .icons li { + margin-top: 0.5em; + font-size: 16px; + padding: 0 1em 0 1em; + } + + #footer .icons li:last-child { + padding-right: 0; + } + + #footer .icons li a { + -moz-transition: color 0.2s ease-in-out; + -webkit-transition: color 0.2s ease-in-out; + -ms-transition: color 0.2s ease-in-out; + transition: color 0.2s ease-in-out; + color: #fff; + } + + #footer .icons li a:hover { + color: #000; + } + + .footer-bal{ + margin: 0 10px; + width: 30%; + + } + + .footer-bal .contact-block a{ + text-decoration: none; + color: #fff; +} + + + .footer-jobb{ + width: 60%; + margin:0; + float: left; + } + + .footer-jobb img{ + width: 100%; + margin:0; + } + + + #footer .copyright { + background: #141414; + font-size: 0.9em; + padding: 1em 0 1em 0; + margin: 2em 0 0 0; + } + +/* Wide */ + + @media screen and (max-width: 1680px) { + + /* Basic */ + + body, input, select, textarea { + font-size: 11pt; + } + + } + +/* Normal */ + + @media screen and (max-width: 1175px) { + + } + + @media screen and (max-width: 1280px) { + + /* Basic */ + + body, input, select, textarea { + font-size: 11pt; + } + + /* Feature */ + + .feature { + padding-left: 7em; + } + + .feature i { + height: 5.25em; + line-height: 5.5em; + margin-top: 0; + width: 5.25em; + } + + .feature i:before { + font-size: 32px; + } + + /* Wrapper */ + + .wrapper { + padding: 4em 0 2em 0; + } + + #header nav > ul > li{ + margin-left: 0.5em; + } + + /* Banner */ + + #banner { + background-attachment: scroll; + padding: 0 0; + } + + #banner .inner { + padding: 3em 4em; + } + + #banner .inner h2 { + font-size: 2.25em; + } + + /* Main */ + + #main { + padding: 2em 0; + } + + .service-area .one-third .service .service-text{ + padding: 0 0 45px; + } + + .main-title a {font-size: 14px;} + + .sub-title{font-size:10px;} + + + /* One */ + + #one .inner { + margin-top: -4em; + padding-right: 4em; + } + + #one .device { + border-width: 35px; + } + + #one .device:after { + margin-top: -22px; + } + + + + + #header { + display: none; + } + + #mobil-menu{ + display: block; + } + + + #navPanel, #navButton { + display: none; + } + + #page-wrapper { + padding-top: 0; + } + + + #mobil-menu{ + display: block; + } + + #header nav { + padding-left: 240px; + } + + #page-wrapper { + -moz-backface-visibility: hidden; + -webkit-backface-visibility: hidden; + -ms-backface-visibility: hidden; + backface-visibility: hidden; + -moz-transition: -moz-transform 0.5s ease; + -webkit-transition: -webkit-transform 0.5s ease; + -ms-transition: -ms-transform 0.5s ease; + transition: transform 0.5s ease; + padding-bottom: 1px; + } + + #navButton { + -moz-backface-visibility: hidden; + -webkit-backface-visibility: hidden; + -ms-backface-visibility: hidden; + backface-visibility: hidden; + -moz-transition: -moz-transform 0.5s ease; + -webkit-transition: -webkit-transform 0.5s ease; + -ms-transition: -ms-transform 0.5s ease; + transition: transform 0.5s ease; + display: block; + height: 4em; + left: 0; + position: fixed; + top: 0; + width: 6em; + z-index: 10001; + } + + #navButton .toggle { + text-decoration: none; + height: 100%; + left: 0; + position: absolute; + top: 0; + width: 100%; + } + + #navButton .toggle:before { + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + display: inline-block; + font-style: normal; + font-variant: normal; + text-rendering: auto; + line-height: 1; + text-transform: none !important; + font-family: 'Font Awesome 5 Free'; + font-weight: 900; + } + + #navButton .toggle:before { + background: rgba(29, 39, 38, 0.75); + color: #ffffff; + content: '\f0c9'; + display: block; + font-size: 18px; + height: 2.35em; + left: 0.5em; + line-height: 2.35em; + position: absolute; + text-align: center; + top: 0.5em; + width: 3em; + } + + #navPanel { + -moz-backface-visibility: hidden; + -webkit-backface-visibility: hidden; + -ms-backface-visibility: hidden; + backface-visibility: hidden; + -moz-transform: translateX(-275px); + -webkit-transform: translateX(-275px); + -ms-transform: translateX(-275px); + transform: translateX(-275px); + -moz-transition: -moz-transform 0.5s ease; + -webkit-transition: -webkit-transform 0.5s ease; + -ms-transition: -ms-transform 0.5s ease; + transition: transform 0.5s ease; + background-image: -moz-linear-gradient(left, rgba(0,0,0,0) 95%, rgba(0,0,0,0.1)); + background-image: -webkit-linear-gradient(left, rgba(0,0,0,0) 95%, rgba(0,0,0,0.1)); + background-image: -ms-linear-gradient(left, rgba(0,0,0,0) 95%, rgba(0,0,0,0.1)); + background-image: linear-gradient(left, rgba(0,0,0,0) 95%, rgba(0,0,0,0.1)); + display: block; + height: 100%; + left: 0; + overflow-y: auto; + position: fixed; + top: 0; + width: 275px; + z-index: 10002; + background: #1d2726; + color: #c7c9c9; + padding: 0.25em 1.5em; + } + + #navPanel .link { + border-top: solid 1px rgba(255, 255, 255, 0.05); + color: #c7c9c9; + display: block; + font-size: 0.8em; + font-weight: 600; + height: 3.5em; + letter-spacing: 0.125em; + line-height: 3.5em; + text-decoration: none; + text-transform: uppercase; + } + + #navPanel .link:first-child { + border-top: 0; + } + + #navPanel .link.depth-0 { + color: #ffffff; + } + + #navPanel .link .indent-1 { + display: inline-block; + width: 1.25em; + } + + #navPanel .link .indent-2 { + display: inline-block; + width: 2.5em; + } + + #navPanel .link .indent-3 { + display: inline-block; + width: 3.75em; + } + + #navPanel .link .indent-4 { + display: inline-block; + width: 5em; + } + + #navPanel .link .indent-5 { + display: inline-block; + width: 6.25em; + } + + body.navPanel-visible #page-wrapper { + -moz-transform: translateX(275px); + -webkit-transform: translateX(275px); + -ms-transform: translateX(275px); + transform: translateX(275px); + } + + body.navPanel-visible #navButton { + -moz-transform: translateX(275px); + -webkit-transform: translateX(275px); + -ms-transform: translateX(275px); + transform: translateX(275px); + } + + body.navPanel-visible #navPanel { + -moz-transform: translateX(0); + -webkit-transform: translateX(0); + -ms-transform: translateX(0); + transform: translateX(0); + } + + } + +/* Narrow */ + + + @media screen and (max-width: 980px) { + + /* Basic */ + + html, body { + overflow-x: hidden; + } + + body, input, select, textarea { + font-size: 12pt; + } + + h2 { + font-size: 1.25em; + line-height: 1.75em; + } + + h3 { + font-size: 1.1em; + line-height: 1.5em; + } + + h4 { + font-size: 1em; + line-height: 1.5em; + } + + /* Section/Article */ + + section.special, article.special { + text-align: center; + } + + header h2 + p { + font-size: 0.9em; + } + + header h3 + p { + font-size: 0.8em; + } + + header h4 + p, + header h5 + p, + header h6 + p { + font-size: 0.8em; + } + + /* Feature */ + + .feature { + padding-left: 9em; + } + + .feature i { + height: 7em; + line-height: 7.5em; + margin-top: -0.5em; + width: 7em; + } + + .feature i:before { + font-size: 42px; + } + + /* Image Feature */ + + .image-feature .image { + max-height: 30em; + overflow: hidden; + } + + /* Header */ + + #page-wrapper { + padding-top: 0; + } + + #header { + display: none; + } + + #mobil-menu{ + display: block; + } + /* + #navPanel, #navButton { + display: none; + }*/ + + /* Banner */ + + #banner { + padding: 0em 0; + } + + #banner .inner { + padding: 3em; + } + + #banner .inner h2 { + font-size: 2em; + } + + + + /* Main */ + + #main > header.major { + margin: 0; + } + + .bem-jobb{margin-left:2em;} + + .bem-bal p, .bem-dolgozo-bal p {font-size:14px; margin: 0 0 0.5em 0;} + + .bem-dolgozo-jobb {width: 30%;} + + .bem-dolgozo-jobb img{width: 70%;} + + header.major h2 {font-size: 36px;} + + + /* One */ + + #one {padding-top: 2em;} + + #one p { + font-size: 1em; + } + + #one .inner { + display: block; + margin: 0 auto; + max-width: 100%; + padding: 0; + text-align: center; + width: 35em; + } + + #one .device { + display: block; + margin: 4em auto 0 auto; + max-width: 100%; + width: 30em; + } + + .service-area .one-third.service-part1{width: 50%; padding-right: 10px;} + .service-area .one-third.service-part2{display: none;} + .service-area .one-third.service-part3{width:50%;padding-left: 10px;} + + .one-half {float: none; width: 100%;} + #footer .footer-div{display:block;} + .footer-bal{width: 100%;} + .footer-jobb{width: 100%; float: none; margin-top:2em;} + + + /* Off-Canvas Navigation */ + + #page-wrapper { + -moz-backface-visibility: hidden; + -webkit-backface-visibility: hidden; + -ms-backface-visibility: hidden; + backface-visibility: hidden; + -moz-transition: -moz-transform 0.5s ease; + -webkit-transition: -webkit-transform 0.5s ease; + -ms-transition: -ms-transform 0.5s ease; + transition: transform 0.5s ease; + padding-bottom: 1px; + } + + #navButton { + -moz-backface-visibility: hidden; + -webkit-backface-visibility: hidden; + -ms-backface-visibility: hidden; + backface-visibility: hidden; + -moz-transition: -moz-transform 0.5s ease; + -webkit-transition: -webkit-transform 0.5s ease; + -ms-transition: -ms-transform 0.5s ease; + transition: transform 0.5s ease; + display: block; + height: 4em; + left: 0; + position: fixed; + top: 0; + width: 6em; + z-index: 10001; + } + + #navButton .toggle { + text-decoration: none; + height: 100%; + left: 0; + position: absolute; + top: 0; + width: 100%; + } + + #navButton .toggle:before { + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + display: inline-block; + font-style: normal; + font-variant: normal; + text-rendering: auto; + line-height: 1; + text-transform: none !important; + font-family: 'Font Awesome 5 Free'; + font-weight: 900; + } + + #navButton .toggle:before { + background: rgba(29, 39, 38, 0.75); + color: #ffffff; + content: '\f0c9'; + display: block; + font-size: 18px; + height: 2.35em; + left: 0.5em; + line-height: 2.35em; + position: absolute; + text-align: center; + top: 0.5em; + width: 3em; + } + + #navPanel { + -moz-backface-visibility: hidden; + -webkit-backface-visibility: hidden; + -ms-backface-visibility: hidden; + backface-visibility: hidden; + -moz-transform: translateX(-275px); + -webkit-transform: translateX(-275px); + -ms-transform: translateX(-275px); + transform: translateX(-275px); + -moz-transition: -moz-transform 0.5s ease; + -webkit-transition: -webkit-transform 0.5s ease; + -ms-transition: -ms-transform 0.5s ease; + transition: transform 0.5s ease; + background-image: -moz-linear-gradient(left, rgba(0,0,0,0) 95%, rgba(0,0,0,0.1)); + background-image: -webkit-linear-gradient(left, rgba(0,0,0,0) 95%, rgba(0,0,0,0.1)); + background-image: -ms-linear-gradient(left, rgba(0,0,0,0) 95%, rgba(0,0,0,0.1)); + background-image: linear-gradient(left, rgba(0,0,0,0) 95%, rgba(0,0,0,0.1)); + display: block; + height: 100%; + left: 0; + overflow-y: auto; + position: fixed; + top: 0; + width: 275px; + z-index: 10002; + background: #1d2726; + color: #c7c9c9; + padding: 0.25em 1.5em; + } + + #navPanel .link { + border-top: solid 1px rgba(255, 255, 255, 0.05); + color: #c7c9c9; + display: block; + font-size: 0.8em; + font-weight: 600; + height: 3.5em; + letter-spacing: 0.125em; + line-height: 3.5em; + text-decoration: none; + text-transform: uppercase; + } + + #navPanel .link:first-child { + border-top: 0; + } + + #navPanel .link.depth-0 { + color: #ffffff; + } + + #navPanel .link .indent-1 { + display: inline-block; + width: 1.25em; + } + + #navPanel .link .indent-2 { + display: inline-block; + width: 2.5em; + } + + #navPanel .link .indent-3 { + display: inline-block; + width: 3.75em; + } + + #navPanel .link .indent-4 { + display: inline-block; + width: 5em; + } + + #navPanel .link .indent-5 { + display: inline-block; + width: 6.25em; + } + + body.navPanel-visible #page-wrapper { + -moz-transform: translateX(275px); + -webkit-transform: translateX(275px); + -ms-transform: translateX(275px); + transform: translateX(275px); + } + + body.navPanel-visible #navButton { + -moz-transform: translateX(275px); + -webkit-transform: translateX(275px); + -ms-transform: translateX(275px); + transform: translateX(275px); + } + + body.navPanel-visible #navPanel { + -moz-transform: translateX(0); + -webkit-transform: translateX(0); + -ms-transform: translateX(0); + transform: translateX(0); + } + + } + +/* Mobile */ + + @media screen and (max-width: 736px) { + + /* Basic */ + + body, input, select, textarea { + font-size: 12pt; + } + + /* Feature */ + + .feature { + margin: 0 auto 2em auto; + max-width: 100%; + padding: 0; + text-align: center; + width: 30em; + } + + .feature i { + left: 0; + margin: 0 auto 2em auto; + position: relative; + top: 0; + } + + /* Image Feature */ + + .image-feature { + margin: 0 auto 2em auto; + max-width: 100%; + width: 25em; + } + + .image-feature .image { + max-height: none; + } + + /* Wrapper */ + + .wrapper { + padding: 2.5em 1.25em 0.5em 1.25em; + } + + /* Banner */ + + #banner { + padding: 6em 0; + } + + #banner .inner { + padding: 2em 2.5em; + width: 100%; + } + + #banner .inner h2 { + font-size: 1.5em; + } + + #banner .inner p { + margin: 1.5em 0 0 0; + padding: 1.5em 0 0 0; + } + + /* One */ + + #one .device { + border-width: 20px; + margin-top: 2em; + max-width: 100%; + width: 25em; + } + + #one .device:after { + height: 8px; + margin: -13px 0 0 -4px; + width: 8px; + } + + + .bookingContainer { + width: 95%!important; + margin-right: 10px!important; + margin-left: 10px!important; + } + + .bookingResultsWrapper { + width: 665px!important; + margin-left: 0!important; + } + + #bookingStep3 { + min-height: 720px!important; + } + + .serviceInfoCol { + padding-left: 5px!important; + } + + .serviceCol h4 { + margin-left: 0!important; + } + + .serviceNameCol { + padding-left: 0!important; + } + + .serviceTable { + width: 93%!important; + margin-left: 5px!important; + margin-right: 0!important; + padding: 0 5px!important; + margin-bottom: 100px!important; + } + + .bookingResultsWrapper { + width: 100%!important; + float: none!important; + } + + .bookingCalendar { + float: none!important; + } + + .availableTimes { + margin-bottom: 60px!important; + } + + .bookingContainer { + margin-top: -12px!important; + } + + } + +/* Mobile (Portrait) */ + + @media screen and (max-width: 480px) { + + #banner{padding:0;} + .service-part2{display: none;} + .one-third{width: 100%;} + .service-area .one-third.service-part1{width: 100%;} + .service-area .one-third.service-part3{width: 100%;} + .service-area .one-third .service .service-text {text-align: center; padding-bottom: 30px;} + .service-area .one-third .service .service-text .service-icon {float: none;} + .service-area .one-third .service .service-text .service-content {margin: 0;} + .service .service-text .service-content .sub-title-serv {padding: 0 20px 0 20px;} + .service-area .one-third .service.service3 .service-text .service-icon {float: none;} + .service-area .one-third .service.service3 .service-text {text-align:center;} + .service-area .one-third .service.service3 .service-text .service-content {margin-left: 0;} + .service-area .one-third {width: 100%;} + + #one{padding-top: 3em;} + + .bemutatkozas{display: block;} + .bem-bal{width: 100%;} + .bem-jobb{width: 100%; margin-bottom: 2em;} + + .bemutatkozas-dolgozo{display: block;} + .bem-dolgozo-bal {width: 100%;} + .bem-dolgozo-jobb {width: 100%; float: none; text-align: center;} + + #czcategorylistblock .czcategorylist-wrapper .category_lists .one-half .category-content {width: 100%; } + .one-half{width:100%; float: none;} + + .category-text-left{float: none;} + .category-text-right {display: block; float: left;} + + #two {margin-bottom: 3em;} + header.major h2 {font-size: 32px;} + + #footer .footer-div {display: block;} + .footer-bal{width:100%;} + .footer-jobb{width:100%; float: none; margin-top:2em;} + + + /* Basic */ + + html, body { + min-width: 320px; + } + + body, input, select, textarea { + font-size: 12pt; + } + + h1 br, h2 br, h3 br, h4 br, h5 br, h6 br { + display: none; + } + + h2 { + font-size: 1.15em; + line-height: 1.75em; + } + + h3 { + font-size: 1em; + line-height: 1.5em; + } + + /* List */ + + ul.actions { + margin: 0 0 2em 0; + } + + ul.actions li { + display: block; + padding: 1em 0 0 0; + text-align: center; + width: 100%; + } + + ul.actions li:first-child { + padding-top: 0; + } + + ul.actions li > * { + margin: 0 !important; + width: 100%; + } + + ul.actions li > *.icon:before { + margin-left: -2em; + } + + ul.actions.small li { + padding: 0.5em 0 0 0; + } + + ul.actions.small li:first-child { + padding-top: 0; + } + + /* Button */ + + input[type="submit"], + input[type="reset"], + input[type="button"], + button, + .button { + padding: 0; + } + + /* One */ + + #one .device { + border-width: 15px; + } + + #one .device:after { + height: 5px; + margin: -10px 0 0 -2.5px; + width: 5px; + } + + } \ No newline at end of file diff --git a/assets/css/barber_20240425.css b/assets/css/barber_20240425.css new file mode 100755 index 0000000..c380078 --- /dev/null +++ b/assets/css/barber_20240425.css @@ -0,0 +1,4369 @@ +@import url(../css/fontawesome-all.min.css); +@import url("https://fonts.googleapis.com/css?family=Open+Sans:300,600,300italic,600italic"); + +/* + Catalyst by Pixelarity + pixelarity.com | hello@pixelarity.com + License: pixelarity.com/license +*/ + + +html{ + scroll-behavior: smooth; +} + +html, body, div, span, applet, object, +iframe, h1, h2, h3, h4, h5, h6, p, blockquote, +pre, a, abbr, acronym, address, big, cite, +code, del, dfn, em, img, ins, kbd, q, s, samp, +small, strike, strong, sub, sup, tt, var, b, +u, i, center, dl, dt, dd, ol, ul, li, fieldset, +form, label, legend, table, caption, tbody, +tfoot, thead, tr, th, td, article, aside, +canvas, details, embed, figure, figcaption, +footer, header, hgroup, menu, nav, output, ruby, +section, summary, time, mark, audio, video { + margin: 0; + padding: 0; + border: 0; + font-size: 100%; + font: inherit; + vertical-align: baseline;} + +article, aside, details, figcaption, figure, +footer, header, hgroup, menu, nav, section { + display: block;} + +body { + line-height: 1; + font-family: 'Poppins', sans-serif; +} + +ol, ul { + list-style: none; +} + +blockquote, q { + quotes: none; +} + + blockquote:before, blockquote:after, q:before, q:after { + content: ''; + content: none; + } + +table { + border-collapse: collapse; + border-spacing: 0; +} + +body { + -webkit-text-size-adjust: none; +} + +mark { + background-color: transparent; + color: inherit; +} + +input::-moz-focus-inner { + border: 0; + padding: 0; +} + +input, select, textarea { + -moz-appearance: none; + -webkit-appearance: none; + -ms-appearance: none; + appearance: none; +} + +.profileRow{ + background-color: #e5d2b9; + border: 1px solid #9e8462; +} + +.profileRadioBtn{ + /*background-color: #9e8462;*/ +} + +#totalPanelBtn{ + background-color: #9e8462; +} + +#totalPanel{ + border: 1px solid #9e8462; + background-color: #fff9f0; +} + +.serviceInfoIcon .fa-info-circle{ + color:#9e8462; +} + +.serviceCheckCol input[type="checkbox"]{ + border:1px solid #9e8462; +} + +.bookingButton{ + background-color: #9e8462!important; +} + +.availableBookingTime{ + background-color: #e5d2b9; +} + +.activeStep{ + background-color:#9e8462; +} + +.bookingName, .bookingEmail, .bookingPhone{ + background-color: #fff9f0; + border:1px solid #9e8462!important; +} + + +.bookingEmailTitle, .bookingPhoneTitle{ + color:lightgray; +} + +.bookingTitle{ + color:#9e8462; +} + +.stepTitle{ + color:#9e8462; +} + +.stepLine { + border-top: 1px solid #9e8462; +} + +.stepCircle { + border: 1px solid #9e8462; + background-color: #fff9f0; +} + +.panel-heading{ + color:#9e8462!important; +} + +.serviceCol h4{ + color:#9e8462!important; +} + +.serviceHeader .serviceNameCol, +.serviceHeader .servicePriceCol{ + color:#9e8462!important; +} + +.BookingStepContainer { + border: 1px solid #9e8462; +} + +.bookingSubmit{ + background-color: #9e8462!important; +} + +/* Basic */ + + html { + box-sizing: border-box; + } + + *, *:before, *:after { + box-sizing: inherit; + } + + body { + background: #fff; + } + + body.is-preload *, body.is-preload *:before, body.is-preload *:after { + -moz-animation: none !important; + -webkit-animation: none !important; + -ms-animation: none !important; + animation: none !important; + -moz-transition: none !important; + -webkit-transition: none !important; + -ms-transition: none !important; + transition: none !important; + } + + body, input, select, textarea { + color: #4a4a4a; + background: #000; + font-family: "Poppins", sans-serif; + font-size: 13pt; + font-weight: 300; + line-height: 1.75em; + } + + a { + color: #51c5e8; + text-decoration: underline; + } + + a:hover { + text-decoration: none; + } + + strong, b { + color: #2a2a2a; + font-weight: 600; + } + + em, i { + font-style: italic; + } + + p { + margin: 0 0 2em 0; + } + + h1, h2, h3, h4, h5, h6 { + color: #2a2a2a; + font-weight: 600; + letter-spacing: 0.125em; + line-height: 1em; + margin: 0 0 1em 0; + } + + h1 a, h2 a, h3 a, h4 a, h5 a, h6 a { + color: inherit; + text-decoration: none; + } + + h2 { + font-size: 1.5em; + line-height: 1.75em; + } + + h3 { + font-size: 1.25em; + line-height: 1.5em; + } + + h4 { + font-size: 1.1em; + line-height: 1.5em; + } + + h5 { + font-size: 0.9em; + line-height: 1.5em; + } + + h6 { + font-size: 0.7em; + line-height: 1.5em; + } + + sub { + font-size: 0.8em; + position: relative; + top: 0.5em; + } + + sup { + font-size: 0.8em; + position: relative; + top: -0.5em; + } + + hr { + border: 0; + border-bottom: solid 3px #eee; + margin: 3em 0; + } + + hr.major { + margin: 5em 0; + } + + blockquote { + border-left: solid 8px #eee; + font-style: italic; + margin: 0 0 2em 0; + padding: 0.5em 0 0.5em 2em; + } + + pre { + -webkit-overflow-scrolling: touch; + background: rgba(144, 144, 144, 0.05); + font-family: "Courier New", monospace; + font-size: 0.9em; + line-height: 1.5em; + margin: 0 0 2em 0; + overflow-x: auto; + padding: 1em 1.5em; + } + + code { + background: rgba(144, 144, 144, 0.05); + font-family: "Courier New", monospace; + font-size: 0.9em; + margin: 0 0.25em; + padding: 0.25em 0.65em; + } + + .align-left { + text-align: left; + } + + .align-center { + text-align: center; + } + + .align-right { + text-align: right; + } + + + .ui-widget-content { + border: 1px solid #e5d2b9!important; + background: #e5d2b9!important; + color: #333333!important; + } + + .ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default, .ui-button, html .ui-button.ui-state-disabled:hover, html .ui-button.ui-state-disabled:active { + border: 1px solid #e5d2b9!important; + background: #9e8462 url(images/ui-bg_glass_100_f6f6f6_1x400.png) 50% 50% repeat-x; + font-weight: bold!important; + color: #a5705b!important; + } + + table thead { + border-bottom: solid 2px #9e8462!important; + } + + .ui-widget-header { + border: 1px solid #9e8462!important; + background: #9e8462!important; + } + + .widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight { + border: 1px solid #9e8462!important; + background: #e5d2b9!important; + } + + + + .ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active, a.ui-button:active, .ui-button:active, .ui-button.ui-state-active:hover { + border: 1px solid #a5705b; + background: #ffffff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x; + } + + .ui-state-active{ + background: #d9c7b0 url(images/ui-bg_glass_100_f6f6f6_1x400.png) 50% 50% repeat-x!important; + } + + table tbody tr { + border: solid 1px #e5d2b9!important; + border-left: 0; + border-right: 0; + } + + table tbody tr:nth-child(2n + 1) { + background-color: #f4ede5!important + } + + .ui-state-highlight{ + border: 1px solid #a5705b!important; + background: #e5d2b9!important; + } +/* + .ui-datepicker-week-end a { + background-image: none!important; + background-color: rgb(173, 40, 40)!important; + color:white!important; + } + */ + + #datepicker table tr td:last-child{ + } + + #datepicker table tr td:last-child a{ + background-image: none!important; + /*background-color: rgb(173, 40, 40)!important;*/ + color:red!important; + } + + .ui-state-disabled { + cursor: default !important; + pointer-events: none; + opacity: 0!important; + + } + +/* Row */ + + .row { + display: flex; + flex-wrap: wrap; + box-sizing: border-box; + align-items: stretch; + } + + .row > * { + box-sizing: border-box; + } + + .row.gtr-uniform > * > :last-child { + margin-bottom: 0; + } + + .row.aln-left { + justify-content: flex-start; + } + + .row.aln-center { + justify-content: center; + } + + .row.aln-right { + justify-content: flex-end; + } + + .row.aln-top { + align-items: flex-start; + } + + .row.aln-middle { + align-items: center; + } + + .row.aln-bottom { + align-items: flex-end; + } + + .row > .imp { + order: -1; + } + + .row > .col-1 { + width: 8.33333%; + } + + .row > .off-1 { + margin-left: 8.33333%; + } + + .row > .col-2 { + width: 16.66667%; + } + + .row > .off-2 { + margin-left: 16.66667%; + } + + .row > .col-3 { + width: 25%; + } + + .row > .off-3 { + margin-left: 25%; + } + + .row > .col-4 { + width: 33.33333%; + } + + .row > .off-4 { + margin-left: 33.33333%; + } + + .row > .col-5 { + width: 41.66667%; + } + + .row > .off-5 { + margin-left: 41.66667%; + } + + .row > .col-6 { + width: 50%; + } + + .row > .off-6 { + margin-left: 50%; + } + + .row > .col-7 { + width: 58.33333%; + } + + .row > .off-7 { + margin-left: 58.33333%; + } + + .row > .col-8 { + width: 66.66667%; + } + + .row > .off-8 { + margin-left: 66.66667%; + } + + .row > .col-9 { + width: 75%; + } + + .row > .off-9 { + margin-left: 75%; + } + + .row > .col-10 { + width: 83.33333%; + } + + .row > .off-10 { + margin-left: 83.33333%; + } + + .row > .col-11 { + width: 91.66667%; + } + + .row > .off-11 { + margin-left: 91.66667%; + } + + .row > .col-12 { + width: 100%; + } + + .row > .off-12 { + margin-left: 100%; + } + + .row.gtr-0 { + margin-top: 0; + margin-left: 0em; + } + + .row.gtr-0 > * { + padding: 0 0 0 0em; + } + + .row.gtr-0.gtr-uniform { + margin-top: 0em; + } + + .row.gtr-0.gtr-uniform > * { + padding-top: 0em; + } + + .row.gtr-25 { + margin-top: 0; + margin-left: -0.75em; + } + + .row.gtr-25 > * { + padding: 0 0 0 0.75em; + } + + .row.gtr-25.gtr-uniform { + margin-top: -0.75em; + } + + .row.gtr-25.gtr-uniform > * { + padding-top: 0.75em; + } + + .row.gtr-50 { + margin-top: 0; + margin-left: -1.5em; + } + + .row.gtr-50 > * { + padding: 0 0 0 1.5em; + } + + .row.gtr-50.gtr-uniform { + margin-top: -1.5em; + } + + .row.gtr-50.gtr-uniform > * { + padding-top: 1.5em; + } + + .row { + margin-top: 0; + margin-left: -3em; + } + + .row > * { + padding: 0 0 0 3em; + } + + .row.gtr-uniform { + margin-top: -3em; + } + + .row.gtr-uniform > * { + padding-top: 3em; + } + + .row.gtr-150 { + margin-top: 0; + margin-left: -4.5em; + } + + .row.gtr-150 > * { + padding: 0 0 0 4.5em; + } + + .row.gtr-150.gtr-uniform { + margin-top: -4.5em; + } + + .row.gtr-150.gtr-uniform > * { + padding-top: 4.5em; + } + + .row.gtr-200 { + margin-top: 0; + margin-left: -6em; + } + + .row.gtr-200 > * { + padding: 0 0 0 6em; + } + + .row.gtr-200.gtr-uniform { + margin-top: -6em; + } + + .row.gtr-200.gtr-uniform > * { + padding-top: 6em; + } + + @media screen and (max-width: 1680px) { + + .row { + display: flex; + flex-wrap: wrap; + box-sizing: border-box; + align-items: stretch; + } + + .row > * { + box-sizing: border-box; + } + + .row.gtr-uniform > * > :last-child { + margin-bottom: 0; + } + + .row.aln-left { + justify-content: flex-start; + } + + .row.aln-center { + justify-content: center; + } + + .row.aln-right { + justify-content: flex-end; + } + + .row.aln-top { + align-items: flex-start; + } + + .row.aln-middle { + align-items: center; + } + + .row.aln-bottom { + align-items: flex-end; + } + + .row > .imp-wide { + order: -1; + } + + .row > .col-1-wide { + width: 8.33333%; + } + + .row > .off-1-wide { + margin-left: 8.33333%; + } + + .row > .col-2-wide { + width: 16.66667%; + } + + .row > .off-2-wide { + margin-left: 16.66667%; + } + + .row > .col-3-wide { + width: 25%; + } + + .row > .off-3-wide { + margin-left: 25%; + } + + .row > .col-4-wide { + width: 33.33333%; + } + + .row > .off-4-wide { + margin-left: 33.33333%; + } + + .row > .col-5-wide { + width: 41.66667%; + } + + .row > .off-5-wide { + margin-left: 41.66667%; + } + + .row > .col-6-wide { + width: 50%; + } + + .row > .off-6-wide { + margin-left: 50%; + } + + .row > .col-7-wide { + width: 58.33333%; + } + + .row > .off-7-wide { + margin-left: 58.33333%; + } + + .row > .col-8-wide { + width: 66.66667%; + } + + .row > .off-8-wide { + margin-left: 66.66667%; + } + + .row > .col-9-wide { + width: 75%; + } + + .row > .off-9-wide { + margin-left: 75%; + } + + .row > .col-10-wide { + width: 83.33333%; + } + + .row > .off-10-wide { + margin-left: 83.33333%; + } + + .row > .col-11-wide { + width: 91.66667%; + } + + .row > .off-11-wide { + margin-left: 91.66667%; + } + + .row > .col-12-wide { + width: 100%; + } + + .row > .off-12-wide { + margin-left: 100%; + } + + .row.gtr-0 { + margin-top: 0; + margin-left: 0em; + } + + .row.gtr-0 > * { + padding: 0 0 0 0em; + } + + .row.gtr-0.gtr-uniform { + margin-top: 0em; + } + + .row.gtr-0.gtr-uniform > * { + padding-top: 0em; + } + + .row.gtr-25 { + margin-top: 0; + margin-left: -0.75em; + } + + .row.gtr-25 > * { + padding: 0 0 0 0.75em; + } + + .row.gtr-25.gtr-uniform { + margin-top: -0.75em; + } + + .row.gtr-25.gtr-uniform > * { + padding-top: 0.75em; + } + + .row.gtr-50 { + margin-top: 0; + margin-left: -1.5em; + } + + .row.gtr-50 > * { + padding: 0 0 0 1.5em; + } + + .row.gtr-50.gtr-uniform { + margin-top: -1.5em; + } + + .row.gtr-50.gtr-uniform > * { + padding-top: 1.5em; + } + + .row { + margin-top: 0; + margin-left: -3em; + } + + .row > * { + padding: 0 0 0 3em; + } + + .row.gtr-uniform { + margin-top: -3em; + } + + .row.gtr-uniform > * { + padding-top: 3em; + } + + .row.gtr-150 { + margin-top: 0; + margin-left: -4.5em; + } + + .row.gtr-150 > * { + padding: 0 0 0 4.5em; + } + + .row.gtr-150.gtr-uniform { + margin-top: -4.5em; + } + + .row.gtr-150.gtr-uniform > * { + padding-top: 4.5em; + } + + .row.gtr-200 { + margin-top: 0; + margin-left: -6em; + } + + .row.gtr-200 > * { + padding: 0 0 0 6em; + } + + .row.gtr-200.gtr-uniform { + margin-top: -6em; + } + + .row.gtr-200.gtr-uniform > * { + padding-top: 6em; + } + + } + + @media screen and (max-width: 1280px) { + + .row { + display: flex; + flex-wrap: wrap; + box-sizing: border-box; + align-items: stretch; + } + + .row > * { + box-sizing: border-box; + } + + .row.gtr-uniform > * > :last-child { + margin-bottom: 0; + } + + .row.aln-left { + justify-content: flex-start; + } + + .row.aln-center { + justify-content: center; + } + + .row.aln-right { + justify-content: flex-end; + } + + .row.aln-top { + align-items: flex-start; + } + + .row.aln-middle { + align-items: center; + } + + .row.aln-bottom { + align-items: flex-end; + } + + .row > .imp-normal { + order: -1; + } + + .row > .col-1-normal { + width: 8.33333%; + } + + .row > .off-1-normal { + margin-left: 8.33333%; + } + + .row > .col-2-normal { + width: 16.66667%; + } + + .row > .off-2-normal { + margin-left: 16.66667%; + } + + .row > .col-3-normal { + width: 25%; + } + + .row > .off-3-normal { + margin-left: 25%; + } + + .row > .col-4-normal { + width: 33.33333%; + } + + .row > .off-4-normal { + margin-left: 33.33333%; + } + + .row > .col-5-normal { + width: 41.66667%; + } + + .row > .off-5-normal { + margin-left: 41.66667%; + } + + .row > .col-6-normal { + width: 50%; + } + + .row > .off-6-normal { + margin-left: 50%; + } + + .row > .col-7-normal { + width: 58.33333%; + } + + .row > .off-7-normal { + margin-left: 58.33333%; + } + + .row > .col-8-normal { + width: 66.66667%; + } + + .row > .off-8-normal { + margin-left: 66.66667%; + } + + .row > .col-9-normal { + width: 75%; + } + + .row > .off-9-normal { + margin-left: 75%; + } + + .row > .col-10-normal { + width: 83.33333%; + } + + .row > .off-10-normal { + margin-left: 83.33333%; + } + + .row > .col-11-normal { + width: 91.66667%; + } + + .row > .off-11-normal { + margin-left: 91.66667%; + } + + .row > .col-12-normal { + width: 100%; + } + + .row > .off-12-normal { + margin-left: 100%; + } + + .row.gtr-0 { + margin-top: 0; + margin-left: 0em; + } + + .row.gtr-0 > * { + padding: 0 0 0 0em; + } + + .row.gtr-0.gtr-uniform { + margin-top: 0em; + } + + .row.gtr-0.gtr-uniform > * { + padding-top: 0em; + } + + .row.gtr-25 { + margin-top: 0; + margin-left: -0.5em; + } + + .row.gtr-25 > * { + padding: 0 0 0 0.5em; + } + + .row.gtr-25.gtr-uniform { + margin-top: -0.5em; + } + + .row.gtr-25.gtr-uniform > * { + padding-top: 0.5em; + } + + .row.gtr-50 { + margin-top: 0; + margin-left: -1em; + } + + .row.gtr-50 > * { + padding: 0 0 0 1em; + } + + .row.gtr-50.gtr-uniform { + margin-top: -1em; + } + + .row.gtr-50.gtr-uniform > * { + padding-top: 1em; + } + + .row { + margin-top: 0; + margin-left: -2em; + } + + .row > * { + padding: 0 0 0 2em; + } + + .row.gtr-uniform { + margin-top: -2em; + } + + .row.gtr-uniform > * { + padding-top: 2em; + } + + .row.gtr-150 { + margin-top: 0; + margin-left: -3em; + } + + .row.gtr-150 > * { + padding: 0 0 0 3em; + } + + .row.gtr-150.gtr-uniform { + margin-top: -3em; + } + + .row.gtr-150.gtr-uniform > * { + padding-top: 3em; + } + + .row.gtr-200 { + margin-top: 0; + margin-left: -4em; + } + + .row.gtr-200 > * { + padding: 0 0 0 4em; + } + + .row.gtr-200.gtr-uniform { + margin-top: -4em; + } + + .row.gtr-200.gtr-uniform > * { + padding-top: 4em; + } + + } + + @media screen and (max-width: 980px) { + + .row { + display: flex; + flex-wrap: wrap; + box-sizing: border-box; + align-items: stretch; + } + + .row > * { + box-sizing: border-box; + } + + .row.gtr-uniform > * > :last-child { + margin-bottom: 0; + } + + .row.aln-left { + justify-content: flex-start; + } + + .row.aln-center { + justify-content: center; + } + + .row.aln-right { + justify-content: flex-end; + } + + .row.aln-top { + align-items: flex-start; + } + + .row.aln-middle { + align-items: center; + } + + .row.aln-bottom { + align-items: flex-end; + } + + .row > .imp-narrow { + order: -1; + } + + .row > .col-1-narrow { + width: 8.33333%; + } + + .row > .off-1-narrow { + margin-left: 8.33333%; + } + + .row > .col-2-narrow { + width: 16.66667%; + } + + .row > .off-2-narrow { + margin-left: 16.66667%; + } + + .row > .col-3-narrow { + width: 25%; + } + + .row > .off-3-narrow { + margin-left: 25%; + } + + .row > .col-4-narrow { + width: 33.33333%; + } + + .row > .off-4-narrow { + margin-left: 33.33333%; + } + + .row > .col-5-narrow { + width: 41.66667%; + } + + .row > .off-5-narrow { + margin-left: 41.66667%; + } + + .row > .col-6-narrow { + width: 50%; + } + + .row > .off-6-narrow { + margin-left: 50%; + } + + .row > .col-7-narrow { + width: 58.33333%; + } + + .row > .off-7-narrow { + margin-left: 58.33333%; + } + + .row > .col-8-narrow { + width: 66.66667%; + } + + .row > .off-8-narrow { + margin-left: 66.66667%; + } + + .row > .col-9-narrow { + width: 75%; + } + + .row > .off-9-narrow { + margin-left: 75%; + } + + .row > .col-10-narrow { + width: 83.33333%; + } + + .row > .off-10-narrow { + margin-left: 83.33333%; + } + + .row > .col-11-narrow { + width: 91.66667%; + } + + .row > .off-11-narrow { + margin-left: 91.66667%; + } + + .row > .col-12-narrow { + width: 100%; + } + + .row > .off-12-narrow { + margin-left: 100%; + } + + .row.gtr-0 { + margin-top: 0; + margin-left: 0em; + } + + .row.gtr-0 > * { + padding: 0 0 0 0em; + } + + .row.gtr-0.gtr-uniform { + margin-top: 0em; + } + + .row.gtr-0.gtr-uniform > * { + padding-top: 0em; + } + + .row.gtr-25 { + margin-top: 0; + margin-left: -0.5em; + } + + .row.gtr-25 > * { + padding: 0 0 0 0.5em; + } + + .row.gtr-25.gtr-uniform { + margin-top: -0.5em; + } + + .row.gtr-25.gtr-uniform > * { + padding-top: 0.5em; + } + + .row.gtr-50 { + margin-top: 0; + margin-left: -1em; + } + + .row.gtr-50 > * { + padding: 0 0 0 1em; + } + + .row.gtr-50.gtr-uniform { + margin-top: -1em; + } + + .row.gtr-50.gtr-uniform > * { + padding-top: 1em; + } + + .row { + margin-top: 0; + margin-left: -2em; + } + + .row > * { + padding: 0 0 0 2em; + } + + .row.gtr-uniform { + margin-top: -2em; + } + + .row.gtr-uniform > * { + padding-top: 2em; + } + + .row.gtr-150 { + margin-top: 0; + margin-left: -3em; + } + + .row.gtr-150 > * { + padding: 0 0 0 3em; + } + + .row.gtr-150.gtr-uniform { + margin-top: -3em; + } + + .row.gtr-150.gtr-uniform > * { + padding-top: 3em; + } + + .row.gtr-200 { + margin-top: 0; + margin-left: -4em; + } + + .row.gtr-200 > * { + padding: 0 0 0 4em; + } + + .row.gtr-200.gtr-uniform { + margin-top: -4em; + } + + .row.gtr-200.gtr-uniform > * { + padding-top: 4em; + } + + } + + @media screen and (max-width: 736px) { + + .row { + display: flex; + flex-wrap: wrap; + box-sizing: border-box; + align-items: stretch; + } + + .row > * { + box-sizing: border-box; + } + + .row.gtr-uniform > * > :last-child { + margin-bottom: 0; + } + + .row.aln-left { + justify-content: flex-start; + } + + .row.aln-center { + justify-content: center; + } + + .row.aln-right { + justify-content: flex-end; + } + + .row.aln-top { + align-items: flex-start; + } + + .row.aln-middle { + align-items: center; + } + + .row.aln-bottom { + align-items: flex-end; + } + + .row > .imp-mobile { + order: -1; + } + + .row > .col-1-mobile { + width: 8.33333%; + } + + .row > .off-1-mobile { + margin-left: 8.33333%; + } + + .row > .col-2-mobile { + width: 16.66667%; + } + + .row > .off-2-mobile { + margin-left: 16.66667%; + } + + .row > .col-3-mobile { + width: 25%; + } + + .row > .off-3-mobile { + margin-left: 25%; + } + + .row > .col-4-mobile { + width: 33.33333%; + } + + .row > .off-4-mobile { + margin-left: 33.33333%; + } + + .row > .col-5-mobile { + width: 41.66667%; + } + + .row > .off-5-mobile { + margin-left: 41.66667%; + } + + .row > .col-6-mobile { + width: 50%; + } + + .row > .off-6-mobile { + margin-left: 50%; + } + + .row > .col-7-mobile { + width: 58.33333%; + } + + .row > .off-7-mobile { + margin-left: 58.33333%; + } + + .row > .col-8-mobile { + width: 66.66667%; + } + + .row > .off-8-mobile { + margin-left: 66.66667%; + } + + .row > .col-9-mobile { + width: 75%; + } + + .row > .off-9-mobile { + margin-left: 75%; + } + + .row > .col-10-mobile { + width: 83.33333%; + } + + .row > .off-10-mobile { + margin-left: 83.33333%; + } + + .row > .col-11-mobile { + width: 91.66667%; + } + + .row > .off-11-mobile { + margin-left: 91.66667%; + } + + .row > .col-12-mobile { + width: 100%; + } + + .row > .off-12-mobile { + margin-left: 100%; + } + + .row.gtr-0 { + margin-top: 0; + margin-left: 0em; + } + + .row.gtr-0 > * { + padding: 0 0 0 0em; + } + + .row.gtr-0.gtr-uniform { + margin-top: 0em; + } + + .row.gtr-0.gtr-uniform > * { + padding-top: 0em; + } + + .row.gtr-25 { + margin-top: 0; + margin-left: -0.5em; + } + + .row.gtr-25 > * { + padding: 0 0 0 0.5em; + } + + .row.gtr-25.gtr-uniform { + margin-top: -0.5em; + } + + .row.gtr-25.gtr-uniform > * { + padding-top: 0.5em; + } + + .row.gtr-50 { + margin-top: 0; + margin-left: -1em; + } + + .row.gtr-50 > * { + padding: 0 0 0 1em; + } + + .row.gtr-50.gtr-uniform { + margin-top: -1em; + } + + .row.gtr-50.gtr-uniform > * { + padding-top: 1em; + } + + .row { + margin-top: 0; + margin-left: -2em; + } + + .row > * { + padding: 0 0 0 2em; + } + + .row.gtr-uniform { + margin-top: -2em; + } + + .row.gtr-uniform > * { + padding-top: 2em; + } + + .row.gtr-150 { + margin-top: 0; + margin-left: -3em; + } + + .row.gtr-150 > * { + padding: 0 0 0 3em; + } + + .row.gtr-150.gtr-uniform { + margin-top: -3em; + } + + .row.gtr-150.gtr-uniform > * { + padding-top: 3em; + } + + .row.gtr-200 { + margin-top: 0; + margin-left: -4em; + } + + .row.gtr-200 > * { + padding: 0 0 0 4em; + } + + .row.gtr-200.gtr-uniform { + margin-top: -4em; + } + + .row.gtr-200.gtr-uniform > * { + padding-top: 4em; + } + + } + + @media screen and (max-width: 480px) { + + .row { + display: flex; + flex-wrap: wrap; + box-sizing: border-box; + align-items: stretch; + } + + .row > * { + box-sizing: border-box; + } + + .row.gtr-uniform > * > :last-child { + margin-bottom: 0; + } + + .row.aln-left { + justify-content: flex-start; + } + + .row.aln-center { + justify-content: center; + } + + .row.aln-right { + justify-content: flex-end; + } + + .row.aln-top { + align-items: flex-start; + } + + .row.aln-middle { + align-items: center; + } + + .row.aln-bottom { + align-items: flex-end; + } + + .row > .imp-mobilep { + order: -1; + } + + .row > .col-1-mobilep { + width: 8.33333%; + } + + .row > .off-1-mobilep { + margin-left: 8.33333%; + } + + .row > .col-2-mobilep { + width: 16.66667%; + } + + .row > .off-2-mobilep { + margin-left: 16.66667%; + } + + .row > .col-3-mobilep { + width: 25%; + } + + .row > .off-3-mobilep { + margin-left: 25%; + } + + .row > .col-4-mobilep { + width: 33.33333%; + } + + .row > .off-4-mobilep { + margin-left: 33.33333%; + } + + .row > .col-5-mobilep { + width: 41.66667%; + } + + .row > .off-5-mobilep { + margin-left: 41.66667%; + } + + .row > .col-6-mobilep { + width: 50%; + } + + .row > .off-6-mobilep { + margin-left: 50%; + } + + .row > .col-7-mobilep { + width: 58.33333%; + } + + .row > .off-7-mobilep { + margin-left: 58.33333%; + } + + .row > .col-8-mobilep { + width: 66.66667%; + } + + .row > .off-8-mobilep { + margin-left: 66.66667%; + } + + .row > .col-9-mobilep { + width: 75%; + } + + .row > .off-9-mobilep { + margin-left: 75%; + } + + .row > .col-10-mobilep { + width: 83.33333%; + } + + .row > .off-10-mobilep { + margin-left: 83.33333%; + } + + .row > .col-11-mobilep { + width: 91.66667%; + } + + .row > .off-11-mobilep { + margin-left: 91.66667%; + } + + .row > .col-12-mobilep { + width: 100%; + } + + .row > .off-12-mobilep { + margin-left: 100%; + } + + .row.gtr-0 { + margin-top: 0; + margin-left: 0em; + } + + .row.gtr-0 > * { + padding: 0 0 0 0em; + } + + .row.gtr-0.gtr-uniform { + margin-top: 0em; + } + + .row.gtr-0.gtr-uniform > * { + padding-top: 0em; + } + + .row.gtr-25 { + margin-top: 0; + margin-left: -0.5em; + } + + .row.gtr-25 > * { + padding: 0 0 0 0.5em; + } + + .row.gtr-25.gtr-uniform { + margin-top: -0.5em; + } + + .row.gtr-25.gtr-uniform > * { + padding-top: 0.5em; + } + + .row.gtr-50 { + margin-top: 0; + margin-left: -1em; + } + + .row.gtr-50 > * { + padding: 0 0 0 1em; + } + + .row.gtr-50.gtr-uniform { + margin-top: -1em; + } + + .row.gtr-50.gtr-uniform > * { + padding-top: 1em; + } + + .row { + margin-top: 0; + margin-left: -2em; + } + + .row > * { + padding: 0 0 0 2em; + } + + .row.gtr-uniform { + margin-top: -2em; + } + + .row.gtr-uniform > * { + padding-top: 2em; + } + + .row.gtr-150 { + margin-top: 0; + margin-left: -3em; + } + + .row.gtr-150 > * { + padding: 0 0 0 3em; + } + + .row.gtr-150.gtr-uniform { + margin-top: -3em; + } + + .row.gtr-150.gtr-uniform > * { + padding-top: 3em; + } + + .row.gtr-200 { + margin-top: 0; + margin-left: -4em; + } + + .row.gtr-200 > * { + padding: 0 0 0 4em; + } + + .row.gtr-200.gtr-uniform { + margin-top: -4em; + } + + .row.gtr-200.gtr-uniform > * { + padding-top: 4em; + } + + } + +/* Container */ + + .container { + margin: 0 auto; + width: 1200px; + } + + .container.medium { + width: 900px; + } + + @media screen and (max-width: 1680px) { + + .container { + width: 1080px; + } + + .container.medium { + width: 810px; + } + + } + + @media screen and (max-width: 1280px) { + + .container { + width: 960px; + } + + .container.medium { + width: 720px; + } + + } + + @media screen and (max-width: 980px) { + + .container { + width: 90%; + } + + .container.medium { + width: 90%; + } + + } + + @media screen and (max-width: 736px) { + + .container { + width: 100%; + } + + .container.medium { + width: 100%; + } + + } + +/* Section/Article */ + + section.special, article.special { + text-align: center; + } + + header.major { + text-align: center; + position: relative; + } + + header.major:after { + background: #eee; + content: ''; + display: inline-block; + height: 3px; + margin: 0 0 2em 0; + width: 6em; + } + + header.major.alt { + text-align: center; + margin-bottom: 2em; + } + + header p { + letter-spacing: 0.125em; + margin: 0 0 1.5em 0; + position: relative; + text-transform: uppercase; + } + + header h2 + p { + font-size: 1em; + margin-top: -0.85em; + line-height: 1.75em; + } + + header h3 + p { + font-size: 0.9em; + margin-top: -0.75em; + line-height: 1.75em; + } + + header h4 + p, + header h5 + p, + header h6 + p { + font-size: 0.8em; + margin-top: -0.75em; + line-height: 1.75em; + } + +/* Form */ + + form { + margin: 0 0 2em 0; + } + + label { + color: #2a2a2a; + display: block; + font-size: 0.9em; + font-weight: 600; + margin: 0 0 1em 0; + } + + input[type="text"], + input[type="password"], + input[type="email"], + select, + textarea { + -moz-appearance: none; + -webkit-appearance: none; + -ms-appearance: none; + appearance: none; + border: none; + border: solid 2px #eee; + border-radius: 0; + color: inherit; + display: block; + outline: 0; + padding: 0 1em; + text-decoration: none; + width: 100%; + } + + input[type="text"]:invalid, + input[type="password"]:invalid, + input[type="email"]:invalid, + select:invalid, + textarea:invalid { + box-shadow: none; + } + + input[type="text"]:focus, + input[type="password"]:focus, + input[type="email"]:focus, + select:focus, + textarea:focus { + border-color: #51c5e8; + } + + select { + background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='40' height='40' preserveAspectRatio='none' viewBox='0 0 40 40'%3E%3Cpath d='M9.4,12.3l10.4,10.4l10.4-10.4c0.2-0.2,0.5-0.4,0.9-0.4c0.3,0,0.6,0.1,0.9,0.4l3.3,3.3c0.2,0.2,0.4,0.5,0.4,0.9 c0,0.4-0.1,0.6-0.4,0.9L20.7,31.9c-0.2,0.2-0.5,0.4-0.9,0.4c-0.3,0-0.6-0.1-0.9-0.4L4.3,17.3c-0.2-0.2-0.4-0.5-0.4-0.9 c0-0.4,0.1-0.6,0.4-0.9l3.3-3.3c0.2-0.2,0.5-0.4,0.9-0.4S9.1,12.1,9.4,12.3z' fill='%23eee' /%3E%3C/svg%3E"); + background-size: 1.25em; + background-repeat: no-repeat; + background-position: calc(100% - 1em) center; + height: 3.5em; + padding-right: 3.5em; + text-overflow: ellipsis; + } + + select:focus::-ms-value { + background-color: transparent; + } + + select::-ms-expand { + display: none; + } + + select option { + color: #2a2a2a; + background: #fff; + } + + input[type="text"], + input[type="password"], + input[type="email"], + select { + height: 3.5em; + } + + textarea { + padding: 0.75em 1em; + } + + input[type="checkbox"], + input[type="radio"] { + -moz-appearance: none; + -webkit-appearance: none; + -ms-appearance: none; + appearance: none; + display: block; + float: left; + margin-right: -2em; + opacity: 0; + width: 1em; + z-index: -1; + } + + input[type="checkbox"] + label, + input[type="radio"] + label { + text-decoration: none; + color: #4a4a4a; + cursor: pointer; + display: inline-block; + font-size: 1em; + font-weight: 300; + padding-left: 2.85em; + padding-right: 0.75em; + position: relative; + } + + input[type="checkbox"] + label:before, + input[type="radio"] + label:before { + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + display: inline-block; + font-style: normal; + font-variant: normal; + text-rendering: auto; + line-height: 1; + text-transform: none !important; + font-family: 'Font Awesome 5 Free'; + font-weight: 900; + } + + input[type="checkbox"] + label:before, + input[type="radio"] + label:before { + background: rgba(144, 144, 144, 0.05); + border: solid 2px #eee; + content: ''; + display: inline-block; + font-size: 0.8em; + height: 2.1em; + left: 0; + line-height: 1.925em; + position: absolute; + text-align: center; + top: 0; + width: 2.1em; + } + + input[type="checkbox"]:checked + label:before, + input[type="radio"]:checked + label:before { + background: #1d2726; + border-color: #1d2726; + color: #ffffff; + content: '\f00c'; + } + + input[type="checkbox"]:focus + label:before, + input[type="radio"]:focus + label:before { + border-color: #51c5e8; + } + + input[type="radio"] + label:before { + border-radius: 100%; + } + + ::-webkit-input-placeholder { + color: #bbb !important; + opacity: 1.0; + } + + :-moz-placeholder { + color: #bbb !important; + opacity: 1.0; + } + + ::-moz-placeholder { + color: #bbb !important; + opacity: 1.0; + } + + :-ms-input-placeholder { + color: #bbb !important; + opacity: 1.0; + } + +/* Box */ + + .box { + border: solid 2px #eee; + margin-bottom: 2em; + padding: 1.5em; + } + + .box > :last-child, + .box > :last-child > :last-child, + .box > :last-child > :last-child > :last-child { + margin-bottom: 0; + } + + .box.alt { + border: 0; + padding: 0; + } + +/* Icon */ + + .icon { + text-decoration: none; + border-bottom: none; + position: relative; + } + + .icon:before { + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + display: inline-block; + font-style: normal; + font-variant: normal; + text-rendering: auto; + line-height: 1; + text-transform: none !important; + font-family: 'Font Awesome 5 Free'; + font-weight: 400; + } + + .icon.solid:before { + font-weight: 900; + } + + .icon.brands:before { + font-family: 'Font Awesome 5 Brands'; + } + + .icon > .label { + display: none; + } + +/* Image */ + + .image { + border: 0; + display: inline-block; + position: relative; + } + + .image:before { + background: url("images/overlay.png"); + content: ''; + display: block; + height: 100%; + left: 0; + position: absolute; + top: 0; + width: 100%; + } + + .image img { + display: block; + } + + .image.left { + float: left; + margin: 0 1.5em 1em 0; + top: 0.25em; + } + + .image.right { + float: right; + margin: 0 0 1em 1.5em; + top: 0.25em; + } + + .image.fit { + display: block; + margin: 0 0 3em 0; + width: 100%; + } + + .image.fit img { + display: block; + width: 100%; + } + +/* List */ + + ol { + list-style: decimal; + margin: 0 0 2em 0; + padding-left: 1.25em; + } + + ol li { + padding-left: 0.25em; + } + + ul { + list-style: disc; + margin: 0 0 2em 0; + padding-left: 1em; + } + + ul li { + padding-left: 0.5em; + } + + ul.alt { + list-style: none; + padding-left: 0; + } + + ul.alt li { + border-top: solid 1px #eee; + padding: 0.5em 0; + } + + ul.alt li:first-child { + border-top: 0; + padding-top: 0; + } + + dl { + margin: 0 0 2em 0; + } + +/* Actions */ + + ul.actions { + display: -moz-flex; + display: -webkit-flex; + display: -ms-flex; + display: flex; + cursor: default; + list-style: none; + margin-left: -1em; + padding-left: 0; + } + + ul.actions li { + padding: 0 0 0 1em; + vertical-align: middle; + } + + ul.actions.special { + -moz-justify-content: center; + -webkit-justify-content: center; + -ms-justify-content: center; + justify-content: center; + width: 100%; + margin-left: 0; + } + + ul.actions.special li:first-child { + padding-left: 0; + } + + ul.actions.stacked { + -moz-flex-direction: column; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + margin-left: 0; + } + + ul.actions.stacked li { + padding: 1.3em 0 0 0; + } + + ul.actions.stacked li:first-child { + padding-top: 0; + } + + ul.actions.fit { + width: calc(100% + 1em); + } + + ul.actions.fit li { + -moz-flex-grow: 1; + -webkit-flex-grow: 1; + -ms-flex-grow: 1; + flex-grow: 1; + -moz-flex-shrink: 1; + -webkit-flex-shrink: 1; + -ms-flex-shrink: 1; + flex-shrink: 1; + width: 100%; + } + + ul.actions.fit li > * { + width: 100%; + } + + ul.actions.fit.stacked { + width: 100%; + } + + @media screen and (max-width: 480px) { + + ul.actions:not(.fixed) { + -moz-flex-direction: column; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + margin-left: 0; + width: 100% !important; + } + + ul.actions:not(.fixed) li { + -moz-flex-grow: 1; + -webkit-flex-grow: 1; + -ms-flex-grow: 1; + flex-grow: 1; + -moz-flex-shrink: 1; + -webkit-flex-shrink: 1; + -ms-flex-shrink: 1; + flex-shrink: 1; + padding: 1em 0 0 0; + text-align: center; + width: 100%; + } + + ul.actions:not(.fixed) li > * { + width: 100%; + } + + ul.actions:not(.fixed) li:first-child { + padding-top: 0; + } + + ul.actions:not(.fixed) li input[type="submit"], + ul.actions:not(.fixed) li input[type="reset"], + ul.actions:not(.fixed) li input[type="button"], + ul.actions:not(.fixed) li button, + ul.actions:not(.fixed) li .button { + width: 100%; + } + + ul.actions:not(.fixed) li input[type="submit"].icon:before, + ul.actions:not(.fixed) li input[type="reset"].icon:before, + ul.actions:not(.fixed) li input[type="button"].icon:before, + ul.actions:not(.fixed) li button.icon:before, + ul.actions:not(.fixed) li .button.icon:before { + margin-left: -0.5em; + } + + } + +/* Icons */ + + ul.icons { + cursor: default; + list-style: none; + padding-left: 0; + } + + ul.icons li { + display: inline-block; + padding: 0 1em 0 0; + } + + ul.icons li:last-child { + padding-right: 0; + } + + ul.icons li .icon:before { + font-size: 1.5em; + } + +/* Table */ + + .table-wrapper { + -webkit-overflow-scrolling: touch; + overflow-x: auto; + } + + table { + margin: 0 0 2em 0; + width: 100%; + } + + table tbody tr { + border: solid 1px #eee; + border-left: 0; + border-right: 0; + } + + table tbody tr:nth-child(2n + 1) { + background-color: rgba(144, 144, 144, 0.05); + } + + table td { + padding: 0.75em 0.75em; + } + + table th { + color: #2a2a2a; + font-size: 0.9em; + font-weight: 600; + padding: 0 0.75em 0.75em 0.75em; + text-align: left; + } + + table thead { + border-bottom: solid 2px #eee; + } + + table tfoot { + border-top: solid 2px #eee; + } + + table.alt { + border-collapse: separate; + } + + table.alt tbody tr td { + border: solid 1px #eee; + border-left-width: 0; + border-top-width: 0; + } + + table.alt tbody tr td:first-child { + border-left-width: 1px; + } + + table.alt tbody tr:first-child td { + border-top-width: 1px; + } + + table.alt thead { + border-bottom: 0; + } + + table.alt tfoot { + border-top: 0; + } + +/* Button */ + + input[type="submit"], + input[type="reset"], + input[type="button"], + button, + .button { + -moz-appearance: none; + -webkit-appearance: none; + -ms-appearance: none; + appearance: none; + -moz-transition: background-color 0.2s ease-in-out, color 0.2s ease-in-out; + -webkit-transition: background-color 0.2s ease-in-out, color 0.2s ease-in-out; + -ms-transition: background-color 0.2s ease-in-out, color 0.2s ease-in-out; + transition: background-color 0.2s ease-in-out, color 0.2s ease-in-out; + background-color: #1d2726; + border-radius: 0; + border: 0; + color: #ffffff !important; + cursor: pointer; + display: inline-block; + font-size: 0.9em; + font-weight: 600; + height: 4em; + letter-spacing: 0.125em; + line-height: 4em; + overflow: hidden; + padding: 0 2.75em; + text-align: center; + text-decoration: none; + text-overflow: ellipsis; + text-transform: uppercase; + white-space: nowrap; + } + + input[type="submit"]:hover, + input[type="reset"]:hover, + input[type="button"]:hover, + button:hover, + .button:hover { + background-color: #283634; + } + + input[type="submit"]:active, + input[type="reset"]:active, + input[type="button"]:active, + button:active, + .button:active { + background-color: #121818; + } + + input[type="submit"].icon, + input[type="reset"].icon, + input[type="button"].icon, + button.icon, + .button.icon { + padding-left: 2.35em; + } + + input[type="submit"].icon:before, + input[type="reset"].icon:before, + input[type="button"].icon:before, + button.icon:before, + .button.icon:before { + margin-right: 0.5em; + } + + input[type="submit"].fit, + input[type="reset"].fit, + input[type="button"].fit, + button.fit, + .button.fit { + width: 100%; + } + + input[type="submit"].small, + input[type="reset"].small, + input[type="button"].small, + button.small, + .button.small { + font-size: 0.8em; + height: 3.5em; + line-height: 3.5em; + padding: 0 2em; + } + + input[type="submit"].large, + input[type="reset"].large, + input[type="button"].large, + button.large, + .button.large { + font-size: 1.25em; + height: 3.15em; + line-height: 3.15em; + } + + input[type="submit"].alt, + input[type="reset"].alt, + input[type="button"].alt, + button.alt, + .button.alt { + background-color: transparent; + box-shadow: inset 0 0 0 2px #eee; + color: #2a2a2a !important; + } + + input[type="submit"].alt:hover, + input[type="reset"].alt:hover, + input[type="button"].alt:hover, + button.alt:hover, + .button.alt:hover { + background-color: rgba(144, 144, 144, 0.05); + } + + input[type="submit"].alt:active, + input[type="reset"].alt:active, + input[type="button"].alt:active, + button.alt:active, + .button.alt:active { + background-color: rgba(144, 144, 144, 0.1); + } + + input[type="submit"].alt.icon:before, + input[type="reset"].alt.icon:before, + input[type="button"].alt.icon:before, + button.alt.icon:before, + .button.alt.icon:before { + color: #bbb; + } + + input[type="submit"].primary, + input[type="reset"].primary, + input[type="button"].primary, + button.primary, + .button.primary { + background-color: #51c5e8; + color: #ffffff !important; + } + + input[type="submit"].primary:hover, + input[type="reset"].primary:hover, + input[type="button"].primary:hover, + button.primary:hover, + .button.primary:hover { + background-color: #68cdeb; + } + + input[type="submit"].primary:active, + input[type="reset"].primary:active, + input[type="button"].primary:active, + button.primary:active, + .button.primary:active { + background-color: #3abde5; + } + + input[type="submit"].disabled, input[type="submit"]:disabled, + input[type="reset"].disabled, + input[type="reset"]:disabled, + input[type="button"].disabled, + input[type="button"]:disabled, + button.disabled, + button:disabled, + .button.disabled, + .button:disabled { + background-color: #4a4a4a !important; + box-shadow: inset 0 -0.15em 0 0 rgba(0, 0, 0, 0.15); + color: #fff !important; + cursor: default; + opacity: 0.25; + } + +/* Feature */ + + .feature { + margin: 0 0 2em 0; + padding: 2em 0 2em 9em; + position: relative; + } + + .feature i { + border-radius: 100%; + border: solid 3px #eee; + color: #51c5e8; + display: block; + height: 7em; + left: 0; + line-height: 7.25em; + margin-top: -0.5em; + position: absolute; + text-align: center; + top: 2em; + width: 7em; + } + + .feature i:before { + font-size: 40px; + } + + .feature h3 { + margin-bottom: 0.5em; + } + + .feature p { + margin-bottom: 0; + } + +/* Image Feature */ + + .image-feature { + position: relative; + text-align: center; + margin: 0 0.5em 2em 0.5em; + } + + .image-feature > a { + display: block; + } + + .image-feature header { + background: #fff; + left: 0; + padding: 1.5em 0; + position: absolute; + top: 0; + width: 100%; + z-index: 1; + } + + .image-feature header:before { + -moz-transform: rotate(45deg); + -webkit-transform: rotate(45deg); + -ms-transform: rotate(45deg); + transform: rotate(45deg); + background: #fff; + bottom: -0.5em; + content: ''; + display: block; + height: 1em; + left: 50%; + margin-left: -0.5em; + position: absolute; + width: 1em; + } + + .image-feature header h3 { + font-size: 1em; + margin: 0; + } + + .image-feature .image { + margin: 0; + } + + .image-feature p { + margin: 0; + } + + .image-feature footer { + background: #1d2726; + background: rgba(29, 39, 38, 0.9); + bottom: 0; + color: #fff; + left: 0; + padding: 1.5em; + position: absolute; + width: 100%; + z-index: 1; + } + + .image-feature footer input[type="submit"].alt, + .image-feature footer input[type="reset"].alt, + .image-feature footer input[type="button"].alt, + .image-feature footer button.alt, + .image-feature footer .button.alt { + box-shadow: inset 0 0 0 2px rgba(255, 255, 255, 0.25); + color: #fff !important; + } + +/* Wrapper */ + + .wrapper { + padding: 4em 0 4em 0; + } + + .wrapper.style1 { + background: #141414; + color: #888; + } + + .wrapper.style1 h2, .wrapper.style1 h3, .wrapper.style1 strong { + color: #ffffff; + } + + .wrapper.style1 header.major:after { + background: rgba(255, 255, 255, 0.25); + } + + .wrapper.style2 { + background: #000; + } + + .wrapper.style3 { + background: #f4f4f4; + } + + .wrapper.style4 { + background: #fafafa; + } + +/* Header */ + + +.logo-kep{ + width: 70px; + line-height: 5em; + vertical-align: middle; + margin-left: 5em; +} + +.booktime{ + background-color: #9e8462; + color: #000; + margin-left:2em; + padding-left: 10px; + padding-right: 10px; +} + + #page-wrapper { + padding-top: 3em; + } + + #header { + background: #000; + color: #fff; + cursor: default; + height: 5em; + left: 0; + line-height: 5em; + position: fixed; + top: 0; + width: 100%; + z-index: 10000; + } + + #header h1 { + color: #9e8462; + height: inherit; + left: 10.5em; + line-height: inherit; + margin: 0; + padding: 0; + position: absolute; + top: 0; + } + + #header h1 a { + font-size: 1em; + } + + #header h1 a:before { + color: #51c5e8; + margin-right: 0.35em; + } + + #header nav { + font-weight: 600; + height: inherit; + letter-spacing: 0.125em; + line-height: inherit; + position: absolute; + right: 1.5em; + text-transform: uppercase; + top: 0; + vertical-align: middle; + } + + #header nav > ul { + list-style: none; + line-height: 4.5em; + margin: 0; + padding-left: 0; + vertical-align: middle; + } + + #header nav > ul > li { + display: inline-block; + margin-left: 2em; + /*padding-left: 0;*/ + } + + #header nav > ul > li.booktime { + margin-right: 2em; + } + + #header nav > ul > li.socialmedia-menu { + color: #fff; + font-size: 30px; + margin: auto 0 auto 0; +} + + + #header nav > ul > li.language { + padding-left: 0; + margin: 0; + font-size: 12px; + color: #888; + -moz-transition: color 0.2s ease-in-out; + -webkit-transition: color 0.2s ease-in-out; + -ms-transition: color 0.2s ease-in-out; + transition: color 0.2s ease-in-out; + } + #header nav > ul > li.language:hover { + color: #fff; + } + + #header nav > ul > li a { + -moz-transition: color 0.2s ease-in-out; + -webkit-transition: color 0.2s ease-in-out; + -ms-transition: color 0.2s ease-in-out; + transition: color 0.2s ease-in-out; + color: #fff; + display: inline-block; + text-decoration: none; + font-size: 0.8em; + } + + #header nav > ul > li a:before { + margin-right: 0.5em; + /*opacity: 0.5;*/ + } + + #header nav > ul > li a:hover { + color: #9e8462; + } + + #header nav > ul > li.booktime a:hover { + color: #000; + } + + #header nav > ul > li.active > a { + color: #fff; + } + + #header nav > ul > li:first-child { + margin-left: 0; + } + + #header nav > ul > li input[type="submit"], + #header nav > ul > li input[type="reset"], + #header nav > ul > li input[type="button"], + #header nav > ul > li button, + #header nav > ul > li .button { + font-size: 1em; + height: 2.25em; + line-height: 2.25em; + margin-bottom: 0; + padding: 0 1em; + position: relative; + top: -0.125em; + vertical-align: middle; + } + + #header nav > ul > li > ul { + display: none; + } + + #header .container { + position: relative; + } + + #header .container h1 { + left: 0; + } + + #header .container nav { + right: 0; + } + + .dropotron { + background: #1d2726; + color: #fff; + font-weight: 600; + letter-spacing: 0.125em; + list-style: none; + margin-top: -1em; + min-width: 14em; + padding: 1.25em 0; + text-transform: uppercase; + } + + .dropotron.level-0 { + font-size: 0.8em; + margin-top: 1em; + } + + .dropotron.level-0:before { + -moz-transform: rotate(45deg); + -webkit-transform: rotate(45deg); + -ms-transform: rotate(45deg); + transform: rotate(45deg); + background: #1d2726; + content: ''; + display: block; + height: 1em; + position: absolute; + right: 1.5em; + top: -0.5em; + width: 1em; + } + + .dropotron li > a { + -moz-transition: color 0.2s ease-in-out; + -webkit-transition: color 0.2s ease-in-out; + -ms-transition: color 0.2s ease-in-out; + transition: color 0.2s ease-in-out; + color: #ccc; + display: block; + padding: 0.125em 1.25em; + text-decoration: none; + } + + .dropotron li > a:hover { + color: #fff; + } + + .dropotron li.active > a { + color: #fff; + } + +/* Banner */ + + #banner { + background-color: #141414; + /*background-attachment: scroll, fixed; + background-image: url("images/overlay.png"), url("../../images/banner.jpg"); + background-position: top left, center center; + background-repeat: no-repeat; + background-size: cover; + background-size: auto, cover;*/ + color: #fff; + padding: 0em 0; + position: relative; + text-align: center; + } + + #banner img{ + width: 100%; + } + + #banner:after { + -moz-transition: opacity 1s ease-in-out; + -webkit-transition: opacity 1s ease-in-out; + -ms-transition: opacity 1s ease-in-out; + transition: opacity 1s ease-in-out; + background: #313148; + content: ''; + height: 100%; + left: 0; + opacity: 0; + position: absolute; + top: 0; + width: 100%; + z-index: 1; + } + + #banner :last-child { + margin-bottom: 0; + } + + #banner .inner { + background: #1d2726; + background: rgba(29, 39, 38, 0.9); + display: inline-block; + padding: 3.5em 5em; + position: relative; + z-index: 2; + } + + #banner .inner h2 { + color: inherit; + font-size: 2.5em; + line-height: 1.35em; + margin: 0; + padding: 0; + } + + #banner .inner p { + font-size: 1em; + letter-spacing: 0.125em; + line-height: 2em; + margin: 2em 0 0 0; + padding: 2em 0 0 0; + position: relative; + text-transform: uppercase; + top: -0.25em; + } + + #banner .inner p:before { + background: #888; + background: rgba(255, 255, 255, 0.25); + content: ''; + display: block; + height: 3px; + left: 50%; + margin: 0 0 0 -3em; + position: absolute; + top: 0; + width: 6em; + } + + #banner .inner .actions { + margin-top: 2em; + } + + #banner .inner input[type="submit"].alt, + #banner .inner input[type="reset"].alt, + #banner .inner input[type="button"].alt, + #banner .inner button.alt, + #banner .inner .button.alt { + box-shadow: inset 0 0 0 2px rgba(255, 255, 255, 0.25); + color: #fff !important; + } + + body.is-preload #banner:after { + opacity: 1.0; + } + + +/* Mobile booking */ + +#mobil-menu{ + display: none; + background: #9e8462; +} + +.mobil-menucont ul { + list-style: none; + font-size: 1em; + line-height: 4.5em; + text-align: center; + margin: 0; + padding-left: 0; + vertical-align: middle; +} + +.mobil-menucont ul li{ + color: #fff; + margin: 0 0.5em; + display: inline; +} + +.mobil-menucont ul li a{ + color: #fff; + text-decoration: none; + } + +.mobil-menucont ul .mobil-menu-book{ + margin-right: 2em; + padding: 0.5em 0.5em; + font-weight: 600; +} + + + @media screen and (max-width: 980px) { + #mobil-menu{ + display: block; + } +} + +/* Main */ + + #main > header.major { + margin: 0 0 2em 0; + text-align: center; + } + + header.major h2{ + font-family: 'Abril Fatface', cursive; + color: #fff; + font-size: 50px; + font-weight: 400; + margin-bottom: 0; + } + + + header.major h4{ + font-size: 13px; + color: #888888; + } + + + +.one-half { + float: left; + width: 100%; + padding: 0 40px; + position: relative; + text-align: left; + overflow: hidden; +} + +.category-content { + position: relative; + display: inline-block; + width: 100%; + padding-bottom: 15px; + padding-top: 18px; + border-bottom: 1px solid #3d3d3d;} + +.category-text-left { + float: left; +} + +.main-title a { + text-decoration: none; + font-size: 16px; + color: #ffffff; + font-weight: 500; + -webkit-transition: all 0.5s ease; + -moz-transition: all 0.5s ease; + -o-transition: all 0.5s ease; + transition: all 0.5s ease; +} + +.sub-title { + font-size: 13px; + color: #888888; + font-weight: 400; + padding-right: 40px; + letter-spacing: 0.6px; +} + +.category-text-right { + float: right; +} + +.category-content .price { + font-size: 16px; + color: #9e8462; + letter-spacing: 0.5px; + font-weight: 600; + display: inline-block; + -webkit-transition: all 0.5s ease; + -moz-transition: all 0.5s ease; + -o-transition: all 0.5s ease; + transition: all 0.5s ease; +} + + +.common-home .box-heading:before, .box.related .box-heading:before { + content: ""; + background: url(../../assets/img/ollo.png) no-repeat scroll; + width: 75px; + height: 65px; + position: absolute; + top: 0; + left: 0; + right: 0; + margin: 0 auto; + display: inline-block; +} + + +/* About Us */ + +#aboutus .container .inner .dolgozo-nev{ + width: 100%; + text-align: center; + margin-bottom: 2em; +} +#aboutus .container .inner hr { + margin: 4em auto 4em auto; + border-bottom: solid 3px #888; + width: 40%; +} + +#aboutus .container .inner .dolgozo-nev .dolgozo-kep{ + width: 150px; + border-radius: 50%; + margin-bottom: 1em; +} + +#aboutus .container .inner .dolgozo-nev h4{ + color: #fff; +} + +#aboutus .container .inner .dolgozo-nev h4 span{ + color: #888; +} + +.bemutatkozas, .bemutatkozas-dolgozo{ + display: flex; + width: 100%; +} + +.bem-bal, .bem-dolgozo-bal{ + width: 60%; +} + +.bem-bal h4{ + color: #fff; +} + +.bem-bal p{ + text-align: justify; +} + +.bem-dolgozo-bal p{ + text-align: justify; + font-style: italic; + +} + +.bem-jobb{ + width: 40%; + margin-left: 4em; + float: right; +} + +.bem-jobb img{ + width: 100%; +} + +.bem-jobb h4{ + margin-top: 1em; + text-align: center; + color: #9e8462; +} + +.bem-jobb h4 span{ + color: #fff; +} +.bem-dolgozo-jobb{ + width: 40%; + float: right; + text-align: right; + margin: auto; + +} + +.bem-dolgozo-jobb img{ + opacity: 0.8; + margin-left: 10px; + margin-right: 10ox; + width: 40%; + transition: opacity .25s ease-in-out; + -moz-transition: opacity .25s ease-in-out; + -webkit-transition: opacity .25s ease-in-out; +} + +.bem-dolgozo-jobb img:hover{ + opacity: 1; + +} + + + +/* Treatments - Our Services */ + + #treatments{ + clear: both; + } + + .service-block { + width: 100%; + display: block; + } + + + .service-area .one-third { + + width: 28%; + padding: 0; + overflow: hidden; + } + + .service-area .one-third.service-part1, .service-area .one-third.service-part4 { + width: 30%; + padding: 0; + float: left; + overflow: hidden; + } + + .service-area .one-third.service-part2 { + width: 42%; + /*margin-top:30px; + margin-bottom: 30px;*/ + padding: 0 30px; + float:left; + overflow: hidden; + } + + .service-area .one-third .service img { + -webkit-transform: rotateY(0deg); + -moz-transform: rotateY(0deg); + -ms-transform: rotateY(0deg); + -o-transform: rotateY(0deg); + transform: rotateY(0deg); + transition: all 0.9s ease 0s; + -webkit-transition: all 0.9s ease 0s; + -moz-transition: all 0.9s ease 0s; + -ms-transition: all 0.9s ease 0s; + -o-transition: all 0.9s ease 0s; + max-width: 100%; + } + + .service-area .one-third .service:hover img { + -webkit-transform: rotateY(-180deg); + -moz-transform: rotateY(-180deg); + -ms-transform: rotateY(-180deg); + -o-transform: rotateY(-180deg); + transform: rotateY(-180deg); + transition: all 0.9s ease 0s; + -webkit-transition: all 0.9s ease 0s; + -moz-transition: all 0.9s ease 0s; + -ms-transition: all 0.9s ease 0s; + -o-transition: all 0.9s ease 0s; + } + + + .service-area .one-third .service .service-text .service-icon { + background: url(../../assets/img/service-icon.png) no-repeat scroll; + float: right; + height: 80px; + border-radius: 50%; + width: 80px; + position: relative; + background-color: #333333; + display: inline-block; + transition: all 0.5s ease 0s; + -webkit-transition: all 0.5s ease 0s; + -moz-transition: all 0.5s ease 0s; + -ms-transition: all 0.5s ease 0s; + -o-transition: all 0.5s ease 0s; + } + + .service .service-text .service-content .main-title { + font-size: 14px; + font-weight: 600; + color: #ffffff; + text-transform: capitalize; + letter-spacing: 0.8px; + padding-bottom: 10px; + } + + .service .service-text .service-content .sub-title-serv { + font-size: 13px; + color: #888888; + font-weight: 400; + line-height: 20px; + letter-spacing: 0.6px; + } + + .service-area .one-third .service .service-text .service-content { + margin-right: 100px; + } + + .service-area .one-third .service .service-text { + padding: 0 0px 95px; + text-align: right; + } + + .service-area .one-third .service.service3 .service-text .service-content { + margin-right: 0px; + margin-left: 100px; + } + + .service-area .one-third .service.service3 .service-text { + text-align: left; + } + + + + .service-area .one-third .service.service3 .service-text .service-icon { + float: left; + } + + .service-area .one-third .service .service-text .service-icon.icon1 { + background-position: center -65px; + } + .service-area .one-third .service .service-text:hover .service-icon.icon1 { + background-position:center 22px; + } + .service-area .one-third .service .service-text .service-icon.icon2 { + background-position:center -417px; + } + .service-area .one-third .service .service-text:hover .service-icon.icon2 { + background-position: center -330px; + } + .service-area .one-third .service .service-text .service-icon.icon3 { + background-position:center -765px; + } + .service-area .one-third .service .service-text:hover .service-icon.icon3 { + background-position: center -678px; + } + .service-area .one-third .service.service3 .service-text .service-icon.icon1 { + background-position: center -242px; + } + .service-area .one-third .service.service3 .service-text:hover .service-icon.icon1 { + background-position: center -155px; + } + .service-area .one-third .service.service3 .service-text .service-icon.icon2 { + background-position: center -590px; + } + .service-area .one-third .service.service3 .service-text:hover .service-icon.icon2 { + background-position:center -503px; + } + .service-area .one-third.service-part3 .service .service-text .service-icon.icon3 { + background-position: center -939px; + } + .service-area .one-third.service-part3 .service .service-text:hover .service-icon.icon3 { + background-position:center -852px; + } + .service-area .one-third .service .service-text:hover .service-content .main-title { + color: #9e8462; + } + + + +/* One */ + + #one { + padding-top:10em; + padding-bottom: 5em; + } + + #one p { + font-size: 1.25em; + line-height: 1.75em; + margin: -0.5em 0 0 0; + } + + #one .inner { + display: inline-block; + margin-top: -6em; + padding-right: 6em; + vertical-align: middle; + width: 100%; + } + + #one .device { + border: solid 40px #fff; + border-bottom: 0; + border-radius: 20px; + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; + display: inline-block; + margin-bottom: 0; + position: relative; + vertical-align: middle; + width: 100%; + } + + #one .device:after { + background: #eee; + border-radius: 100%; + content: ''; + height: 10px; + left: 50%; + margin: -23px 0 0 -5px; + position: absolute; + top: 0; + width: 10px; + } + + +/*two */ + + .nyitvatartas .about-content { + position: relative; + display: inline-block; + width: 100%; + padding: 25px 0px 15px; + border-bottom: 1px solid #3d3d3d; + font-size: 16px; + font-weight: 600; + } + + .nyitvatartas .title, .nyitvatartas .time{ + color: #fff; + } + + .nyitvartas .closed{ + color: #9e8462; + } + + .nyitvatartas .about-content .about-text-left { + float: left; + } + + .nyitvatartas .about-content .about-text-right { + float: right; +} + + + +/* Footer */ + +#footer .footer-div{ + display: flex; +} + + +#footer .footer-div .companyname{ + color: #fff; + font-family: 'Abril Fatface', cursive; + font-size: 24px; + margin-bottom: 20px; +} + +#footer .footer-div .companyname span{ + border-bottom: solid 5px #fff; + } + +#footer .footer-div ul{ + margin: 0; + list-style: none; +} + +#footer .footer-logo{ + max-width: 100px; +} + + #footer { + background: #9e8462; + color: #fff; + padding: 2em 0 0 0; + text-align: center; + } + + #footer .icons { + font-size: 24px; + margin: 0 0 1em 0; + padding-left: 0; + } + + #footer .icons li { + margin-top: 0.5em; + font-size: 16px; + padding: 0 1em 0 1em; + } + + #footer .icons li:last-child { + padding-right: 0; + } + + #footer .icons li a { + -moz-transition: color 0.2s ease-in-out; + -webkit-transition: color 0.2s ease-in-out; + -ms-transition: color 0.2s ease-in-out; + transition: color 0.2s ease-in-out; + color: #fff; + } + + #footer .icons li a:hover { + color: #000; + } + + .footer-bal{ + margin: 0 10px; + width: 30%; + + } + + .footer-bal .contact-block a{ + text-decoration: none; + color: #fff; +} + + + .footer-jobb{ + width: 60%; + margin:0; + float: left; + } + + .footer-jobb img{ + width: 100%; + margin:0; + } + + + #footer .copyright { + background: #141414; + font-size: 0.9em; + padding: 1em 0 1em 0; + margin: 2em 0 0 0; + } + +/* Wide */ + + @media screen and (max-width: 1680px) { + + /* Basic */ + + body, input, select, textarea { + font-size: 11pt; + } + + } + +/* Normal */ + + @media screen and (max-width: 1280px) { + + /* Basic */ + + body, input, select, textarea { + font-size: 11pt; + } + + /* Feature */ + + .feature { + padding-left: 7em; + } + + .feature i { + height: 5.25em; + line-height: 5.5em; + margin-top: 0; + width: 5.25em; + } + + .feature i:before { + font-size: 32px; + } + + /* Wrapper */ + + .wrapper { + padding: 4em 0 2em 0; + } + + #header nav > ul > li{ + margin-left: 0.5em; + } + + /* Banner */ + + #banner { + background-attachment: scroll; + padding: 0 0; + } + + #banner .inner { + padding: 3em 4em; + } + + #banner .inner h2 { + font-size: 2.25em; + } + + /* Main */ + + #main { + padding: 2em 0; + } + + .service-area .one-third .service .service-text{ + padding: 0 0 45px; + } + + .main-title a {font-size: 14px;} + + .sub-title{font-size:10px;} + + + /* One */ + + #one .inner { + margin-top: -4em; + padding-right: 4em; + } + + #one .device { + border-width: 35px; + } + + #one .device:after { + margin-top: -22px; + } + + } + +/* Narrow */ + + #navPanel, #navButton { + display: none; + } + + @media screen and (max-width: 980px) { + + /* Basic */ + + html, body { + overflow-x: hidden; + } + + body, input, select, textarea { + font-size: 12pt; + } + + h2 { + font-size: 1.25em; + line-height: 1.75em; + } + + h3 { + font-size: 1.1em; + line-height: 1.5em; + } + + h4 { + font-size: 1em; + line-height: 1.5em; + } + + /* Section/Article */ + + section.special, article.special { + text-align: center; + } + + header h2 + p { + font-size: 0.9em; + } + + header h3 + p { + font-size: 0.8em; + } + + header h4 + p, + header h5 + p, + header h6 + p { + font-size: 0.8em; + } + + /* Feature */ + + .feature { + padding-left: 9em; + } + + .feature i { + height: 7em; + line-height: 7.5em; + margin-top: -0.5em; + width: 7em; + } + + .feature i:before { + font-size: 42px; + } + + /* Image Feature */ + + .image-feature .image { + max-height: 30em; + overflow: hidden; + } + + /* Header */ + + #page-wrapper { + padding-top: 0; + } + + #header { + display: none; + } + + /* Banner */ + + #banner { + padding: 0em 0; + } + + #banner .inner { + padding: 3em; + } + + #banner .inner h2 { + font-size: 2em; + } + + + + /* Main */ + + #main > header.major { + margin: 0; + } + + .bem-jobb{margin-left:2em;} + + .bem-bal p, .bem-dolgozo-bal p {font-size:14px; margin: 0 0 0.5em 0;} + + .bem-dolgozo-jobb {width: 30%;} + + .bem-dolgozo-jobb img{width: 70%;} + + header.major h2 {font-size: 36px;} + + + /* One */ + + #one {padding-top: 2em;} + + #one p { + font-size: 1em; + } + + #one .inner { + display: block; + margin: 0 auto; + max-width: 100%; + padding: 0; + text-align: center; + width: 35em; + } + + #one .device { + display: block; + margin: 4em auto 0 auto; + max-width: 100%; + width: 30em; + } + + .service-area .one-third.service-part1{width: 50%; padding-right: 10px;} + .service-area .one-third.service-part2{display: none;} + .service-area .one-third.service-part3{width:50%;padding-left: 10px;} + + .one-half {float: none; width: 100%;} + #footer .footer-div{display:block;} + .footer-bal{width: 100%;} + .footer-jobb{width: 100%; float: none; margin-top:2em;} + + + /* Off-Canvas Navigation */ + + #page-wrapper { + -moz-backface-visibility: hidden; + -webkit-backface-visibility: hidden; + -ms-backface-visibility: hidden; + backface-visibility: hidden; + -moz-transition: -moz-transform 0.5s ease; + -webkit-transition: -webkit-transform 0.5s ease; + -ms-transition: -ms-transform 0.5s ease; + transition: transform 0.5s ease; + padding-bottom: 1px; + } + + #navButton { + -moz-backface-visibility: hidden; + -webkit-backface-visibility: hidden; + -ms-backface-visibility: hidden; + backface-visibility: hidden; + -moz-transition: -moz-transform 0.5s ease; + -webkit-transition: -webkit-transform 0.5s ease; + -ms-transition: -ms-transform 0.5s ease; + transition: transform 0.5s ease; + display: block; + height: 4em; + left: 0; + position: fixed; + top: 0; + width: 6em; + z-index: 10001; + } + + #navButton .toggle { + text-decoration: none; + height: 100%; + left: 0; + position: absolute; + top: 0; + width: 100%; + } + + #navButton .toggle:before { + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + display: inline-block; + font-style: normal; + font-variant: normal; + text-rendering: auto; + line-height: 1; + text-transform: none !important; + font-family: 'Font Awesome 5 Free'; + font-weight: 900; + } + + #navButton .toggle:before { + background: rgba(29, 39, 38, 0.75); + color: #ffffff; + content: '\f0c9'; + display: block; + font-size: 18px; + height: 2.35em; + left: 0.5em; + line-height: 2.35em; + position: absolute; + text-align: center; + top: 0.5em; + width: 3em; + } + + #navPanel { + -moz-backface-visibility: hidden; + -webkit-backface-visibility: hidden; + -ms-backface-visibility: hidden; + backface-visibility: hidden; + -moz-transform: translateX(-275px); + -webkit-transform: translateX(-275px); + -ms-transform: translateX(-275px); + transform: translateX(-275px); + -moz-transition: -moz-transform 0.5s ease; + -webkit-transition: -webkit-transform 0.5s ease; + -ms-transition: -ms-transform 0.5s ease; + transition: transform 0.5s ease; + background-image: -moz-linear-gradient(left, rgba(0,0,0,0) 95%, rgba(0,0,0,0.1)); + background-image: -webkit-linear-gradient(left, rgba(0,0,0,0) 95%, rgba(0,0,0,0.1)); + background-image: -ms-linear-gradient(left, rgba(0,0,0,0) 95%, rgba(0,0,0,0.1)); + background-image: linear-gradient(left, rgba(0,0,0,0) 95%, rgba(0,0,0,0.1)); + display: block; + height: 100%; + left: 0; + overflow-y: auto; + position: fixed; + top: 0; + width: 275px; + z-index: 10002; + background: #1d2726; + color: #c7c9c9; + padding: 0.25em 1.5em; + } + + #navPanel .link { + border-top: solid 1px rgba(255, 255, 255, 0.05); + color: #c7c9c9; + display: block; + font-size: 0.8em; + font-weight: 600; + height: 3.5em; + letter-spacing: 0.125em; + line-height: 3.5em; + text-decoration: none; + text-transform: uppercase; + } + + #navPanel .link:first-child { + border-top: 0; + } + + #navPanel .link.depth-0 { + color: #ffffff; + } + + #navPanel .link .indent-1 { + display: inline-block; + width: 1.25em; + } + + #navPanel .link .indent-2 { + display: inline-block; + width: 2.5em; + } + + #navPanel .link .indent-3 { + display: inline-block; + width: 3.75em; + } + + #navPanel .link .indent-4 { + display: inline-block; + width: 5em; + } + + #navPanel .link .indent-5 { + display: inline-block; + width: 6.25em; + } + + body.navPanel-visible #page-wrapper { + -moz-transform: translateX(275px); + -webkit-transform: translateX(275px); + -ms-transform: translateX(275px); + transform: translateX(275px); + } + + body.navPanel-visible #navButton { + -moz-transform: translateX(275px); + -webkit-transform: translateX(275px); + -ms-transform: translateX(275px); + transform: translateX(275px); + } + + body.navPanel-visible #navPanel { + -moz-transform: translateX(0); + -webkit-transform: translateX(0); + -ms-transform: translateX(0); + transform: translateX(0); + } + + } + +/* Mobile */ + + @media screen and (max-width: 736px) { + + /* Basic */ + + body, input, select, textarea { + font-size: 12pt; + } + + /* Feature */ + + .feature { + margin: 0 auto 2em auto; + max-width: 100%; + padding: 0; + text-align: center; + width: 30em; + } + + .feature i { + left: 0; + margin: 0 auto 2em auto; + position: relative; + top: 0; + } + + /* Image Feature */ + + .image-feature { + margin: 0 auto 2em auto; + max-width: 100%; + width: 25em; + } + + .image-feature .image { + max-height: none; + } + + /* Wrapper */ + + .wrapper { + padding: 2.5em 1.25em 0.5em 1.25em; + } + + /* Banner */ + + #banner { + padding: 6em 0; + } + + #banner .inner { + padding: 2em 2.5em; + width: 100%; + } + + #banner .inner h2 { + font-size: 1.5em; + } + + #banner .inner p { + margin: 1.5em 0 0 0; + padding: 1.5em 0 0 0; + } + + /* One */ + + #one .device { + border-width: 20px; + margin-top: 2em; + max-width: 100%; + width: 25em; + } + + #one .device:after { + height: 8px; + margin: -13px 0 0 -4px; + width: 8px; + } + + + .bookingContainer { + width: 95%!important; + margin-right: 10px!important; + margin-left: 10px!important; + } + + .bookingResultsWrapper { + width: 665px!important; + margin-left: 0!important; + } + + #bookingStep3 { + min-height: 720px!important; + } + + .serviceInfoCol { + padding-left: 5px!important; + } + + .serviceCol h4 { + margin-left: 0!important; + } + + .serviceNameCol { + padding-left: 0!important; + } + + .serviceTable { + width: 93%!important; + margin-left: 5px!important; + margin-right: 0!important; + padding: 0 5px!important; + margin-bottom: 100px!important; + } + + .bookingResultsWrapper { + width: 100%!important; + float: none!important; + } + + .bookingCalendar { + float: none!important; + } + + .availableTimes { + margin-bottom: 60px!important; + } + + .bookingContainer { + margin-top: -12px!important; + } + + } + +/* Mobile (Portrait) */ + + @media screen and (max-width: 480px) { + + #banner{padding:0;} + .service-part2{display: none;} + .one-third{width: 100%;} + .service-area .one-third.service-part1{width: 100%;} + .service-area .one-third.service-part3{width: 100%;} + .service-area .one-third .service .service-text {text-align: center; padding-bottom: 30px;} + .service-area .one-third .service .service-text .service-icon {float: none;} + .service-area .one-third .service .service-text .service-content {margin: 0;} + .service .service-text .service-content .sub-title-serv {padding: 0 20px 0 20px;} + .service-area .one-third .service.service3 .service-text .service-icon {float: none;} + .service-area .one-third .service.service3 .service-text {text-align:center;} + .service-area .one-third .service.service3 .service-text .service-content {margin-left: 0;} + .service-area .one-third {width: 100%;} + + #one{padding-top: 3em;} + + .bemutatkozas{display: block;} + .bem-bal{width: 100%;} + .bem-jobb{width: 100%; margin-bottom: 2em;} + + .bemutatkozas-dolgozo{display: block;} + .bem-dolgozo-bal {width: 100%;} + .bem-dolgozo-jobb {width: 100%; float: none; text-align: center;} + + #czcategorylistblock .czcategorylist-wrapper .category_lists .one-half .category-content {width: 100%; } + .one-half{width:100%; float: none;} + + .category-text-left{float: none;} + .category-text-right {display: block; float: left;} + + #two {margin-bottom: 3em;} + header.major h2 {font-size: 32px;} + + #footer .footer-div {display: block;} + .footer-bal{width:100%;} + .footer-jobb{width:100%; float: none; margin-top:2em;} + + + /* Basic */ + + html, body { + min-width: 320px; + } + + body, input, select, textarea { + font-size: 12pt; + } + + h1 br, h2 br, h3 br, h4 br, h5 br, h6 br { + display: none; + } + + h2 { + font-size: 1.15em; + line-height: 1.75em; + } + + h3 { + font-size: 1em; + line-height: 1.5em; + } + + /* List */ + + ul.actions { + margin: 0 0 2em 0; + } + + ul.actions li { + display: block; + padding: 1em 0 0 0; + text-align: center; + width: 100%; + } + + ul.actions li:first-child { + padding-top: 0; + } + + ul.actions li > * { + margin: 0 !important; + width: 100%; + } + + ul.actions li > *.icon:before { + margin-left: -2em; + } + + ul.actions.small li { + padding: 0.5em 0 0 0; + } + + ul.actions.small li:first-child { + padding-top: 0; + } + + /* Button */ + + input[type="submit"], + input[type="reset"], + input[type="button"], + button, + .button { + padding: 0; + } + + /* One */ + + #one .device { + border-width: 15px; + } + + #one .device:after { + height: 5px; + margin: -10px 0 0 -2.5px; + width: 5px; + } + + } \ No newline at end of file diff --git a/assets/css/barber_old.css b/assets/css/barber_old.css new file mode 100755 index 0000000..4e614aa --- /dev/null +++ b/assets/css/barber_old.css @@ -0,0 +1,4376 @@ +@import url(../css/fontawesome-all.min.css); +@import url("https://fonts.googleapis.com/css?family=Open+Sans:300,600,300italic,600italic"); + +/* + Catalyst by Pixelarity + pixelarity.com | hello@pixelarity.com + License: pixelarity.com/license +*/ + + +html{ + scroll-behavior: smooth; +} + +html, body, div, span, applet, object, +iframe, h1, h2, h3, h4, h5, h6, p, blockquote, +pre, a, abbr, acronym, address, big, cite, +code, del, dfn, em, img, ins, kbd, q, s, samp, +small, strike, strong, sub, sup, tt, var, b, +u, i, center, dl, dt, dd, ol, ul, li, fieldset, +form, label, legend, table, caption, tbody, +tfoot, thead, tr, th, td, article, aside, +canvas, details, embed, figure, figcaption, +footer, header, hgroup, menu, nav, output, ruby, +section, summary, time, mark, audio, video { + margin: 0; + padding: 0; + border: 0; + font-size: 100%; + font: inherit; + vertical-align: baseline;} + +article, aside, details, figcaption, figure, +footer, header, hgroup, menu, nav, section { + display: block;} + +body { + line-height: 1; + font-family: 'Poppins', sans-serif; +} + +ol, ul { + list-style: none; +} + +blockquote, q { + quotes: none; +} + + blockquote:before, blockquote:after, q:before, q:after { + content: ''; + content: none; + } + +table { + border-collapse: collapse; + border-spacing: 0; +} + +body { + -webkit-text-size-adjust: none; +} + +mark { + background-color: transparent; + color: inherit; +} + +input::-moz-focus-inner { + border: 0; + padding: 0; +} + +input, select, textarea { + -moz-appearance: none; + -webkit-appearance: none; + -ms-appearance: none; + appearance: none; +} + +.profileRow{ + background-color: #e5d2b9; + border: 1px solid #9e8462; +} + +.profileRadioBtn{ + /*background-color: #9e8462;*/ +} + +#totalPanelBtn{ + background-color: #9e8462; +} + +#totalPanel{ + border: 1px solid #9e8462; + background-color: #fff9f0; +} + +.serviceInfoIcon .fa-info-circle{ + color:#9e8462; +} + +.serviceCheckCol input[type="checkbox"]{ + border:1px solid #9e8462; +} + +.bookingButton{ + background-color: #9e8462!important; +} + +.availableBookingTime{ + background-color: #e5d2b9; +} + +.activeStep{ + background-color:#9e8462; +} + +.bookingName, .bookingEmail, .bookingPhone{ + background-color: #fff9f0; + border:1px solid #9e8462!important; +} + + +.bookingEmailTitle, .bookingPhoneTitle{ + color:lightgray; +} + +.bookingTitle{ + color:#9e8462; +} + +.stepTitle{ + color:#9e8462; +} + +.stepLine { + border-top: 1px solid #9e8462; +} + +.stepCircle { + border: 1px solid #9e8462; + background-color: #fff9f0; +} + +.panel-heading{ + color:#9e8462!important; +} + +.serviceCol h4{ + color:#9e8462!important; +} + +.serviceHeader .serviceNameCol, +.serviceHeader .servicePriceCol{ + color:#9e8462!important; +} + +.BookingStepContainer { + border: 1px solid #9e8462; +} + +.bookingSubmit{ + background-color: #9e8462!important; +} + +/* Basic */ + + html { + box-sizing: border-box; + } + + *, *:before, *:after { + box-sizing: inherit; + } + + body { + background: #fff; + } + + body.is-preload *, body.is-preload *:before, body.is-preload *:after { + -moz-animation: none !important; + -webkit-animation: none !important; + -ms-animation: none !important; + animation: none !important; + -moz-transition: none !important; + -webkit-transition: none !important; + -ms-transition: none !important; + transition: none !important; + } + + body, input, select, textarea { + color: #4a4a4a; + background: #000; + font-family: "Poppins", sans-serif; + font-size: 13pt; + font-weight: 300; + line-height: 1.75em; + } + + a { + color: #51c5e8; + text-decoration: underline; + } + + a:hover { + text-decoration: none; + } + + strong, b { + color: #2a2a2a; + font-weight: 600; + } + + em, i { + font-style: italic; + } + + p { + margin: 0 0 2em 0; + } + + h1, h2, h3, h4, h5, h6 { + color: #2a2a2a; + font-weight: 600; + letter-spacing: 0.125em; + line-height: 1em; + margin: 0 0 1em 0; + } + + h1 a, h2 a, h3 a, h4 a, h5 a, h6 a { + color: inherit; + text-decoration: none; + } + + h2 { + font-size: 1.5em; + line-height: 1.75em; + } + + h3 { + font-size: 1.25em; + line-height: 1.5em; + } + + h4 { + font-size: 1.1em; + line-height: 1.5em; + } + + h5 { + font-size: 0.9em; + line-height: 1.5em; + } + + h6 { + font-size: 0.7em; + line-height: 1.5em; + } + + sub { + font-size: 0.8em; + position: relative; + top: 0.5em; + } + + sup { + font-size: 0.8em; + position: relative; + top: -0.5em; + } + + hr { + border: 0; + border-bottom: solid 3px #eee; + margin: 3em 0; + } + + hr.major { + margin: 5em 0; + } + + blockquote { + border-left: solid 8px #eee; + font-style: italic; + margin: 0 0 2em 0; + padding: 0.5em 0 0.5em 2em; + } + + pre { + -webkit-overflow-scrolling: touch; + background: rgba(144, 144, 144, 0.05); + font-family: "Courier New", monospace; + font-size: 0.9em; + line-height: 1.5em; + margin: 0 0 2em 0; + overflow-x: auto; + padding: 1em 1.5em; + } + + code { + background: rgba(144, 144, 144, 0.05); + font-family: "Courier New", monospace; + font-size: 0.9em; + margin: 0 0.25em; + padding: 0.25em 0.65em; + } + + .align-left { + text-align: left; + } + + .align-center { + text-align: center; + } + + .align-right { + text-align: right; + } + + + .ui-widget-content { + border: 1px solid #e5d2b9!important; + background: #e5d2b9!important; + color: #333333!important; + } + + .ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default, .ui-button, html .ui-button.ui-state-disabled:hover, html .ui-button.ui-state-disabled:active { + border: 1px solid #e5d2b9!important; + background: #9e8462 url(images/ui-bg_glass_100_f6f6f6_1x400.png) 50% 50% repeat-x; + font-weight: bold!important; + color: #a5705b!important; + } + + table thead { + border-bottom: solid 2px #9e8462!important; + } + + .ui-widget-header { + border: 1px solid #9e8462!important; + background: #9e8462!important; + } + + .widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight { + border: 1px solid #9e8462!important; + background: #e5d2b9!important; + } + + + + .ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active, a.ui-button:active, .ui-button:active, .ui-button.ui-state-active:hover { + border: 1px solid #a5705b; + background: #ffffff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x; + } + + .ui-state-active{ + background: #d9c7b0 url(images/ui-bg_glass_100_f6f6f6_1x400.png) 50% 50% repeat-x!important; + } + + table tbody tr { + border: solid 1px #e5d2b9!important; + border-left: 0; + border-right: 0; + } + + table tbody tr:nth-child(2n + 1) { + background-color: #f4ede5!important + } + + .ui-state-highlight{ + border: 1px solid #a5705b!important; + background: #e5d2b9!important; + } +/* + .ui-datepicker-week-end a { + background-image: none!important; + background-color: rgb(173, 40, 40)!important; + color:white!important; + } + */ + + #datepicker table tr td:last-child{ + } + + #datepicker table tr td:last-child a{ + background-image: none!important; + /*background-color: rgb(173, 40, 40)!important;*/ + color:red!important; + } + + .ui-state-disabled { + cursor: default !important; + pointer-events: none; + opacity: 0!important; + + } + +/* Row */ + + .row { + display: flex; + flex-wrap: wrap; + box-sizing: border-box; + align-items: stretch; + } + + .row > * { + box-sizing: border-box; + } + + .row.gtr-uniform > * > :last-child { + margin-bottom: 0; + } + + .row.aln-left { + justify-content: flex-start; + } + + .row.aln-center { + justify-content: center; + } + + .row.aln-right { + justify-content: flex-end; + } + + .row.aln-top { + align-items: flex-start; + } + + .row.aln-middle { + align-items: center; + } + + .row.aln-bottom { + align-items: flex-end; + } + + .row > .imp { + order: -1; + } + + .row > .col-1 { + width: 8.33333%; + } + + .row > .off-1 { + margin-left: 8.33333%; + } + + .row > .col-2 { + width: 16.66667%; + } + + .row > .off-2 { + margin-left: 16.66667%; + } + + .row > .col-3 { + width: 25%; + } + + .row > .off-3 { + margin-left: 25%; + } + + .row > .col-4 { + width: 33.33333%; + } + + .row > .off-4 { + margin-left: 33.33333%; + } + + .row > .col-5 { + width: 41.66667%; + } + + .row > .off-5 { + margin-left: 41.66667%; + } + + .row > .col-6 { + width: 50%; + } + + .row > .off-6 { + margin-left: 50%; + } + + .row > .col-7 { + width: 58.33333%; + } + + .row > .off-7 { + margin-left: 58.33333%; + } + + .row > .col-8 { + width: 66.66667%; + } + + .row > .off-8 { + margin-left: 66.66667%; + } + + .row > .col-9 { + width: 75%; + } + + .row > .off-9 { + margin-left: 75%; + } + + .row > .col-10 { + width: 83.33333%; + } + + .row > .off-10 { + margin-left: 83.33333%; + } + + .row > .col-11 { + width: 91.66667%; + } + + .row > .off-11 { + margin-left: 91.66667%; + } + + .row > .col-12 { + width: 100%; + } + + .row > .off-12 { + margin-left: 100%; + } + + .row.gtr-0 { + margin-top: 0; + margin-left: 0em; + } + + .row.gtr-0 > * { + padding: 0 0 0 0em; + } + + .row.gtr-0.gtr-uniform { + margin-top: 0em; + } + + .row.gtr-0.gtr-uniform > * { + padding-top: 0em; + } + + .row.gtr-25 { + margin-top: 0; + margin-left: -0.75em; + } + + .row.gtr-25 > * { + padding: 0 0 0 0.75em; + } + + .row.gtr-25.gtr-uniform { + margin-top: -0.75em; + } + + .row.gtr-25.gtr-uniform > * { + padding-top: 0.75em; + } + + .row.gtr-50 { + margin-top: 0; + margin-left: -1.5em; + } + + .row.gtr-50 > * { + padding: 0 0 0 1.5em; + } + + .row.gtr-50.gtr-uniform { + margin-top: -1.5em; + } + + .row.gtr-50.gtr-uniform > * { + padding-top: 1.5em; + } + + .row { + margin-top: 0; + margin-left: -3em; + } + + .row > * { + padding: 0 0 0 3em; + } + + .row.gtr-uniform { + margin-top: -3em; + } + + .row.gtr-uniform > * { + padding-top: 3em; + } + + .row.gtr-150 { + margin-top: 0; + margin-left: -4.5em; + } + + .row.gtr-150 > * { + padding: 0 0 0 4.5em; + } + + .row.gtr-150.gtr-uniform { + margin-top: -4.5em; + } + + .row.gtr-150.gtr-uniform > * { + padding-top: 4.5em; + } + + .row.gtr-200 { + margin-top: 0; + margin-left: -6em; + } + + .row.gtr-200 > * { + padding: 0 0 0 6em; + } + + .row.gtr-200.gtr-uniform { + margin-top: -6em; + } + + .row.gtr-200.gtr-uniform > * { + padding-top: 6em; + } + + @media screen and (max-width: 1680px) { + + .row { + display: flex; + flex-wrap: wrap; + box-sizing: border-box; + align-items: stretch; + } + + .row > * { + box-sizing: border-box; + } + + .row.gtr-uniform > * > :last-child { + margin-bottom: 0; + } + + .row.aln-left { + justify-content: flex-start; + } + + .row.aln-center { + justify-content: center; + } + + .row.aln-right { + justify-content: flex-end; + } + + .row.aln-top { + align-items: flex-start; + } + + .row.aln-middle { + align-items: center; + } + + .row.aln-bottom { + align-items: flex-end; + } + + .row > .imp-wide { + order: -1; + } + + .row > .col-1-wide { + width: 8.33333%; + } + + .row > .off-1-wide { + margin-left: 8.33333%; + } + + .row > .col-2-wide { + width: 16.66667%; + } + + .row > .off-2-wide { + margin-left: 16.66667%; + } + + .row > .col-3-wide { + width: 25%; + } + + .row > .off-3-wide { + margin-left: 25%; + } + + .row > .col-4-wide { + width: 33.33333%; + } + + .row > .off-4-wide { + margin-left: 33.33333%; + } + + .row > .col-5-wide { + width: 41.66667%; + } + + .row > .off-5-wide { + margin-left: 41.66667%; + } + + .row > .col-6-wide { + width: 50%; + } + + .row > .off-6-wide { + margin-left: 50%; + } + + .row > .col-7-wide { + width: 58.33333%; + } + + .row > .off-7-wide { + margin-left: 58.33333%; + } + + .row > .col-8-wide { + width: 66.66667%; + } + + .row > .off-8-wide { + margin-left: 66.66667%; + } + + .row > .col-9-wide { + width: 75%; + } + + .row > .off-9-wide { + margin-left: 75%; + } + + .row > .col-10-wide { + width: 83.33333%; + } + + .row > .off-10-wide { + margin-left: 83.33333%; + } + + .row > .col-11-wide { + width: 91.66667%; + } + + .row > .off-11-wide { + margin-left: 91.66667%; + } + + .row > .col-12-wide { + width: 100%; + } + + .row > .off-12-wide { + margin-left: 100%; + } + + .row.gtr-0 { + margin-top: 0; + margin-left: 0em; + } + + .row.gtr-0 > * { + padding: 0 0 0 0em; + } + + .row.gtr-0.gtr-uniform { + margin-top: 0em; + } + + .row.gtr-0.gtr-uniform > * { + padding-top: 0em; + } + + .row.gtr-25 { + margin-top: 0; + margin-left: -0.75em; + } + + .row.gtr-25 > * { + padding: 0 0 0 0.75em; + } + + .row.gtr-25.gtr-uniform { + margin-top: -0.75em; + } + + .row.gtr-25.gtr-uniform > * { + padding-top: 0.75em; + } + + .row.gtr-50 { + margin-top: 0; + margin-left: -1.5em; + } + + .row.gtr-50 > * { + padding: 0 0 0 1.5em; + } + + .row.gtr-50.gtr-uniform { + margin-top: -1.5em; + } + + .row.gtr-50.gtr-uniform > * { + padding-top: 1.5em; + } + + .row { + margin-top: 0; + margin-left: -3em; + } + + .row > * { + padding: 0 0 0 3em; + } + + .row.gtr-uniform { + margin-top: -3em; + } + + .row.gtr-uniform > * { + padding-top: 3em; + } + + .row.gtr-150 { + margin-top: 0; + margin-left: -4.5em; + } + + .row.gtr-150 > * { + padding: 0 0 0 4.5em; + } + + .row.gtr-150.gtr-uniform { + margin-top: -4.5em; + } + + .row.gtr-150.gtr-uniform > * { + padding-top: 4.5em; + } + + .row.gtr-200 { + margin-top: 0; + margin-left: -6em; + } + + .row.gtr-200 > * { + padding: 0 0 0 6em; + } + + .row.gtr-200.gtr-uniform { + margin-top: -6em; + } + + .row.gtr-200.gtr-uniform > * { + padding-top: 6em; + } + + } + + @media screen and (max-width: 1280px) { + + .row { + display: flex; + flex-wrap: wrap; + box-sizing: border-box; + align-items: stretch; + } + + .row > * { + box-sizing: border-box; + } + + .row.gtr-uniform > * > :last-child { + margin-bottom: 0; + } + + .row.aln-left { + justify-content: flex-start; + } + + .row.aln-center { + justify-content: center; + } + + .row.aln-right { + justify-content: flex-end; + } + + .row.aln-top { + align-items: flex-start; + } + + .row.aln-middle { + align-items: center; + } + + .row.aln-bottom { + align-items: flex-end; + } + + .row > .imp-normal { + order: -1; + } + + .row > .col-1-normal { + width: 8.33333%; + } + + .row > .off-1-normal { + margin-left: 8.33333%; + } + + .row > .col-2-normal { + width: 16.66667%; + } + + .row > .off-2-normal { + margin-left: 16.66667%; + } + + .row > .col-3-normal { + width: 25%; + } + + .row > .off-3-normal { + margin-left: 25%; + } + + .row > .col-4-normal { + width: 33.33333%; + } + + .row > .off-4-normal { + margin-left: 33.33333%; + } + + .row > .col-5-normal { + width: 41.66667%; + } + + .row > .off-5-normal { + margin-left: 41.66667%; + } + + .row > .col-6-normal { + width: 50%; + } + + .row > .off-6-normal { + margin-left: 50%; + } + + .row > .col-7-normal { + width: 58.33333%; + } + + .row > .off-7-normal { + margin-left: 58.33333%; + } + + .row > .col-8-normal { + width: 66.66667%; + } + + .row > .off-8-normal { + margin-left: 66.66667%; + } + + .row > .col-9-normal { + width: 75%; + } + + .row > .off-9-normal { + margin-left: 75%; + } + + .row > .col-10-normal { + width: 83.33333%; + } + + .row > .off-10-normal { + margin-left: 83.33333%; + } + + .row > .col-11-normal { + width: 91.66667%; + } + + .row > .off-11-normal { + margin-left: 91.66667%; + } + + .row > .col-12-normal { + width: 100%; + } + + .row > .off-12-normal { + margin-left: 100%; + } + + .row.gtr-0 { + margin-top: 0; + margin-left: 0em; + } + + .row.gtr-0 > * { + padding: 0 0 0 0em; + } + + .row.gtr-0.gtr-uniform { + margin-top: 0em; + } + + .row.gtr-0.gtr-uniform > * { + padding-top: 0em; + } + + .row.gtr-25 { + margin-top: 0; + margin-left: -0.5em; + } + + .row.gtr-25 > * { + padding: 0 0 0 0.5em; + } + + .row.gtr-25.gtr-uniform { + margin-top: -0.5em; + } + + .row.gtr-25.gtr-uniform > * { + padding-top: 0.5em; + } + + .row.gtr-50 { + margin-top: 0; + margin-left: -1em; + } + + .row.gtr-50 > * { + padding: 0 0 0 1em; + } + + .row.gtr-50.gtr-uniform { + margin-top: -1em; + } + + .row.gtr-50.gtr-uniform > * { + padding-top: 1em; + } + + .row { + margin-top: 0; + margin-left: -2em; + } + + .row > * { + padding: 0 0 0 2em; + } + + .row.gtr-uniform { + margin-top: -2em; + } + + .row.gtr-uniform > * { + padding-top: 2em; + } + + .row.gtr-150 { + margin-top: 0; + margin-left: -3em; + } + + .row.gtr-150 > * { + padding: 0 0 0 3em; + } + + .row.gtr-150.gtr-uniform { + margin-top: -3em; + } + + .row.gtr-150.gtr-uniform > * { + padding-top: 3em; + } + + .row.gtr-200 { + margin-top: 0; + margin-left: -4em; + } + + .row.gtr-200 > * { + padding: 0 0 0 4em; + } + + .row.gtr-200.gtr-uniform { + margin-top: -4em; + } + + .row.gtr-200.gtr-uniform > * { + padding-top: 4em; + } + + } + + @media screen and (max-width: 980px) { + + .row { + display: flex; + flex-wrap: wrap; + box-sizing: border-box; + align-items: stretch; + } + + .row > * { + box-sizing: border-box; + } + + .row.gtr-uniform > * > :last-child { + margin-bottom: 0; + } + + .row.aln-left { + justify-content: flex-start; + } + + .row.aln-center { + justify-content: center; + } + + .row.aln-right { + justify-content: flex-end; + } + + .row.aln-top { + align-items: flex-start; + } + + .row.aln-middle { + align-items: center; + } + + .row.aln-bottom { + align-items: flex-end; + } + + .row > .imp-narrow { + order: -1; + } + + .row > .col-1-narrow { + width: 8.33333%; + } + + .row > .off-1-narrow { + margin-left: 8.33333%; + } + + .row > .col-2-narrow { + width: 16.66667%; + } + + .row > .off-2-narrow { + margin-left: 16.66667%; + } + + .row > .col-3-narrow { + width: 25%; + } + + .row > .off-3-narrow { + margin-left: 25%; + } + + .row > .col-4-narrow { + width: 33.33333%; + } + + .row > .off-4-narrow { + margin-left: 33.33333%; + } + + .row > .col-5-narrow { + width: 41.66667%; + } + + .row > .off-5-narrow { + margin-left: 41.66667%; + } + + .row > .col-6-narrow { + width: 50%; + } + + .row > .off-6-narrow { + margin-left: 50%; + } + + .row > .col-7-narrow { + width: 58.33333%; + } + + .row > .off-7-narrow { + margin-left: 58.33333%; + } + + .row > .col-8-narrow { + width: 66.66667%; + } + + .row > .off-8-narrow { + margin-left: 66.66667%; + } + + .row > .col-9-narrow { + width: 75%; + } + + .row > .off-9-narrow { + margin-left: 75%; + } + + .row > .col-10-narrow { + width: 83.33333%; + } + + .row > .off-10-narrow { + margin-left: 83.33333%; + } + + .row > .col-11-narrow { + width: 91.66667%; + } + + .row > .off-11-narrow { + margin-left: 91.66667%; + } + + .row > .col-12-narrow { + width: 100%; + } + + .row > .off-12-narrow { + margin-left: 100%; + } + + .row.gtr-0 { + margin-top: 0; + margin-left: 0em; + } + + .row.gtr-0 > * { + padding: 0 0 0 0em; + } + + .row.gtr-0.gtr-uniform { + margin-top: 0em; + } + + .row.gtr-0.gtr-uniform > * { + padding-top: 0em; + } + + .row.gtr-25 { + margin-top: 0; + margin-left: -0.5em; + } + + .row.gtr-25 > * { + padding: 0 0 0 0.5em; + } + + .row.gtr-25.gtr-uniform { + margin-top: -0.5em; + } + + .row.gtr-25.gtr-uniform > * { + padding-top: 0.5em; + } + + .row.gtr-50 { + margin-top: 0; + margin-left: -1em; + } + + .row.gtr-50 > * { + padding: 0 0 0 1em; + } + + .row.gtr-50.gtr-uniform { + margin-top: -1em; + } + + .row.gtr-50.gtr-uniform > * { + padding-top: 1em; + } + + .row { + margin-top: 0; + margin-left: -2em; + } + + .row > * { + padding: 0 0 0 2em; + } + + .row.gtr-uniform { + margin-top: -2em; + } + + .row.gtr-uniform > * { + padding-top: 2em; + } + + .row.gtr-150 { + margin-top: 0; + margin-left: -3em; + } + + .row.gtr-150 > * { + padding: 0 0 0 3em; + } + + .row.gtr-150.gtr-uniform { + margin-top: -3em; + } + + .row.gtr-150.gtr-uniform > * { + padding-top: 3em; + } + + .row.gtr-200 { + margin-top: 0; + margin-left: -4em; + } + + .row.gtr-200 > * { + padding: 0 0 0 4em; + } + + .row.gtr-200.gtr-uniform { + margin-top: -4em; + } + + .row.gtr-200.gtr-uniform > * { + padding-top: 4em; + } + + } + + @media screen and (max-width: 736px) { + + .row { + display: flex; + flex-wrap: wrap; + box-sizing: border-box; + align-items: stretch; + } + + .row > * { + box-sizing: border-box; + } + + .row.gtr-uniform > * > :last-child { + margin-bottom: 0; + } + + .row.aln-left { + justify-content: flex-start; + } + + .row.aln-center { + justify-content: center; + } + + .row.aln-right { + justify-content: flex-end; + } + + .row.aln-top { + align-items: flex-start; + } + + .row.aln-middle { + align-items: center; + } + + .row.aln-bottom { + align-items: flex-end; + } + + .row > .imp-mobile { + order: -1; + } + + .row > .col-1-mobile { + width: 8.33333%; + } + + .row > .off-1-mobile { + margin-left: 8.33333%; + } + + .row > .col-2-mobile { + width: 16.66667%; + } + + .row > .off-2-mobile { + margin-left: 16.66667%; + } + + .row > .col-3-mobile { + width: 25%; + } + + .row > .off-3-mobile { + margin-left: 25%; + } + + .row > .col-4-mobile { + width: 33.33333%; + } + + .row > .off-4-mobile { + margin-left: 33.33333%; + } + + .row > .col-5-mobile { + width: 41.66667%; + } + + .row > .off-5-mobile { + margin-left: 41.66667%; + } + + .row > .col-6-mobile { + width: 50%; + } + + .row > .off-6-mobile { + margin-left: 50%; + } + + .row > .col-7-mobile { + width: 58.33333%; + } + + .row > .off-7-mobile { + margin-left: 58.33333%; + } + + .row > .col-8-mobile { + width: 66.66667%; + } + + .row > .off-8-mobile { + margin-left: 66.66667%; + } + + .row > .col-9-mobile { + width: 75%; + } + + .row > .off-9-mobile { + margin-left: 75%; + } + + .row > .col-10-mobile { + width: 83.33333%; + } + + .row > .off-10-mobile { + margin-left: 83.33333%; + } + + .row > .col-11-mobile { + width: 91.66667%; + } + + .row > .off-11-mobile { + margin-left: 91.66667%; + } + + .row > .col-12-mobile { + width: 100%; + } + + .row > .off-12-mobile { + margin-left: 100%; + } + + .row.gtr-0 { + margin-top: 0; + margin-left: 0em; + } + + .row.gtr-0 > * { + padding: 0 0 0 0em; + } + + .row.gtr-0.gtr-uniform { + margin-top: 0em; + } + + .row.gtr-0.gtr-uniform > * { + padding-top: 0em; + } + + .row.gtr-25 { + margin-top: 0; + margin-left: -0.5em; + } + + .row.gtr-25 > * { + padding: 0 0 0 0.5em; + } + + .row.gtr-25.gtr-uniform { + margin-top: -0.5em; + } + + .row.gtr-25.gtr-uniform > * { + padding-top: 0.5em; + } + + .row.gtr-50 { + margin-top: 0; + margin-left: -1em; + } + + .row.gtr-50 > * { + padding: 0 0 0 1em; + } + + .row.gtr-50.gtr-uniform { + margin-top: -1em; + } + + .row.gtr-50.gtr-uniform > * { + padding-top: 1em; + } + + .row { + margin-top: 0; + margin-left: -2em; + } + + .row > * { + padding: 0 0 0 2em; + } + + .row.gtr-uniform { + margin-top: -2em; + } + + .row.gtr-uniform > * { + padding-top: 2em; + } + + .row.gtr-150 { + margin-top: 0; + margin-left: -3em; + } + + .row.gtr-150 > * { + padding: 0 0 0 3em; + } + + .row.gtr-150.gtr-uniform { + margin-top: -3em; + } + + .row.gtr-150.gtr-uniform > * { + padding-top: 3em; + } + + .row.gtr-200 { + margin-top: 0; + margin-left: -4em; + } + + .row.gtr-200 > * { + padding: 0 0 0 4em; + } + + .row.gtr-200.gtr-uniform { + margin-top: -4em; + } + + .row.gtr-200.gtr-uniform > * { + padding-top: 4em; + } + + } + + @media screen and (max-width: 480px) { + + .row { + display: flex; + flex-wrap: wrap; + box-sizing: border-box; + align-items: stretch; + } + + .row > * { + box-sizing: border-box; + } + + .row.gtr-uniform > * > :last-child { + margin-bottom: 0; + } + + .row.aln-left { + justify-content: flex-start; + } + + .row.aln-center { + justify-content: center; + } + + .row.aln-right { + justify-content: flex-end; + } + + .row.aln-top { + align-items: flex-start; + } + + .row.aln-middle { + align-items: center; + } + + .row.aln-bottom { + align-items: flex-end; + } + + .row > .imp-mobilep { + order: -1; + } + + .row > .col-1-mobilep { + width: 8.33333%; + } + + .row > .off-1-mobilep { + margin-left: 8.33333%; + } + + .row > .col-2-mobilep { + width: 16.66667%; + } + + .row > .off-2-mobilep { + margin-left: 16.66667%; + } + + .row > .col-3-mobilep { + width: 25%; + } + + .row > .off-3-mobilep { + margin-left: 25%; + } + + .row > .col-4-mobilep { + width: 33.33333%; + } + + .row > .off-4-mobilep { + margin-left: 33.33333%; + } + + .row > .col-5-mobilep { + width: 41.66667%; + } + + .row > .off-5-mobilep { + margin-left: 41.66667%; + } + + .row > .col-6-mobilep { + width: 50%; + } + + .row > .off-6-mobilep { + margin-left: 50%; + } + + .row > .col-7-mobilep { + width: 58.33333%; + } + + .row > .off-7-mobilep { + margin-left: 58.33333%; + } + + .row > .col-8-mobilep { + width: 66.66667%; + } + + .row > .off-8-mobilep { + margin-left: 66.66667%; + } + + .row > .col-9-mobilep { + width: 75%; + } + + .row > .off-9-mobilep { + margin-left: 75%; + } + + .row > .col-10-mobilep { + width: 83.33333%; + } + + .row > .off-10-mobilep { + margin-left: 83.33333%; + } + + .row > .col-11-mobilep { + width: 91.66667%; + } + + .row > .off-11-mobilep { + margin-left: 91.66667%; + } + + .row > .col-12-mobilep { + width: 100%; + } + + .row > .off-12-mobilep { + margin-left: 100%; + } + + .row.gtr-0 { + margin-top: 0; + margin-left: 0em; + } + + .row.gtr-0 > * { + padding: 0 0 0 0em; + } + + .row.gtr-0.gtr-uniform { + margin-top: 0em; + } + + .row.gtr-0.gtr-uniform > * { + padding-top: 0em; + } + + .row.gtr-25 { + margin-top: 0; + margin-left: -0.5em; + } + + .row.gtr-25 > * { + padding: 0 0 0 0.5em; + } + + .row.gtr-25.gtr-uniform { + margin-top: -0.5em; + } + + .row.gtr-25.gtr-uniform > * { + padding-top: 0.5em; + } + + .row.gtr-50 { + margin-top: 0; + margin-left: -1em; + } + + .row.gtr-50 > * { + padding: 0 0 0 1em; + } + + .row.gtr-50.gtr-uniform { + margin-top: -1em; + } + + .row.gtr-50.gtr-uniform > * { + padding-top: 1em; + } + + .row { + margin-top: 0; + margin-left: -2em; + } + + .row > * { + padding: 0 0 0 2em; + } + + .row.gtr-uniform { + margin-top: -2em; + } + + .row.gtr-uniform > * { + padding-top: 2em; + } + + .row.gtr-150 { + margin-top: 0; + margin-left: -3em; + } + + .row.gtr-150 > * { + padding: 0 0 0 3em; + } + + .row.gtr-150.gtr-uniform { + margin-top: -3em; + } + + .row.gtr-150.gtr-uniform > * { + padding-top: 3em; + } + + .row.gtr-200 { + margin-top: 0; + margin-left: -4em; + } + + .row.gtr-200 > * { + padding: 0 0 0 4em; + } + + .row.gtr-200.gtr-uniform { + margin-top: -4em; + } + + .row.gtr-200.gtr-uniform > * { + padding-top: 4em; + } + + } + +/* Container */ + + .container { + margin: 0 auto; + width: 1200px; + } + + .container.medium { + width: 900px; + } + + @media screen and (max-width: 1680px) { + + .container { + width: 1080px; + } + + .container.medium { + width: 810px; + } + + } + + @media screen and (max-width: 1280px) { + + .container { + width: 960px; + } + + .container.medium { + width: 720px; + } + + } + + @media screen and (max-width: 980px) { + + .container { + width: 90%; + } + + .container.medium { + width: 90%; + } + + } + + @media screen and (max-width: 736px) { + + .container { + width: 100%; + } + + .container.medium { + width: 100%; + } + + } + +/* Section/Article */ + + section.special, article.special { + text-align: center; + } + + header.major { + text-align: center; + position: relative; + } + + header.major:after { + background: #eee; + content: ''; + display: inline-block; + height: 3px; + margin: 0 0 2em 0; + width: 6em; + } + + header.major.alt { + text-align: center; + margin-bottom: 2em; + } + + header p { + letter-spacing: 0.125em; + margin: 0 0 1.5em 0; + position: relative; + text-transform: uppercase; + } + + header h2 + p { + font-size: 1em; + margin-top: -0.85em; + line-height: 1.75em; + } + + header h3 + p { + font-size: 0.9em; + margin-top: -0.75em; + line-height: 1.75em; + } + + header h4 + p, + header h5 + p, + header h6 + p { + font-size: 0.8em; + margin-top: -0.75em; + line-height: 1.75em; + } + +/* Form */ + + form { + margin: 0 0 2em 0; + } + + label { + color: #2a2a2a; + display: block; + font-size: 0.9em; + font-weight: 600; + margin: 0 0 1em 0; + } + + input[type="text"], + input[type="password"], + input[type="email"], + select, + textarea { + -moz-appearance: none; + -webkit-appearance: none; + -ms-appearance: none; + appearance: none; + border: none; + border: solid 2px #eee; + border-radius: 0; + color: inherit; + display: block; + outline: 0; + padding: 0 1em; + text-decoration: none; + width: 100%; + } + + input[type="text"]:invalid, + input[type="password"]:invalid, + input[type="email"]:invalid, + select:invalid, + textarea:invalid { + box-shadow: none; + } + + input[type="text"]:focus, + input[type="password"]:focus, + input[type="email"]:focus, + select:focus, + textarea:focus { + border-color: #51c5e8; + } + + select { + background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='40' height='40' preserveAspectRatio='none' viewBox='0 0 40 40'%3E%3Cpath d='M9.4,12.3l10.4,10.4l10.4-10.4c0.2-0.2,0.5-0.4,0.9-0.4c0.3,0,0.6,0.1,0.9,0.4l3.3,3.3c0.2,0.2,0.4,0.5,0.4,0.9 c0,0.4-0.1,0.6-0.4,0.9L20.7,31.9c-0.2,0.2-0.5,0.4-0.9,0.4c-0.3,0-0.6-0.1-0.9-0.4L4.3,17.3c-0.2-0.2-0.4-0.5-0.4-0.9 c0-0.4,0.1-0.6,0.4-0.9l3.3-3.3c0.2-0.2,0.5-0.4,0.9-0.4S9.1,12.1,9.4,12.3z' fill='%23eee' /%3E%3C/svg%3E"); + background-size: 1.25em; + background-repeat: no-repeat; + background-position: calc(100% - 1em) center; + height: 3.5em; + padding-right: 3.5em; + text-overflow: ellipsis; + } + + select:focus::-ms-value { + background-color: transparent; + } + + select::-ms-expand { + display: none; + } + + select option { + color: #2a2a2a; + background: #fff; + } + + input[type="text"], + input[type="password"], + input[type="email"], + select { + height: 3.5em; + } + + textarea { + padding: 0.75em 1em; + } + + input[type="checkbox"], + input[type="radio"] { + -moz-appearance: none; + -webkit-appearance: none; + -ms-appearance: none; + appearance: none; + display: block; + float: left; + margin-right: -2em; + opacity: 0; + width: 1em; + z-index: -1; + } + + input[type="checkbox"] + label, + input[type="radio"] + label { + text-decoration: none; + color: #4a4a4a; + cursor: pointer; + display: inline-block; + font-size: 1em; + font-weight: 300; + padding-left: 2.85em; + padding-right: 0.75em; + position: relative; + } + + input[type="checkbox"] + label:before, + input[type="radio"] + label:before { + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + display: inline-block; + font-style: normal; + font-variant: normal; + text-rendering: auto; + line-height: 1; + text-transform: none !important; + font-family: 'Font Awesome 5 Free'; + font-weight: 900; + } + + input[type="checkbox"] + label:before, + input[type="radio"] + label:before { + background: rgba(144, 144, 144, 0.05); + border: solid 2px #eee; + content: ''; + display: inline-block; + font-size: 0.8em; + height: 2.1em; + left: 0; + line-height: 1.925em; + position: absolute; + text-align: center; + top: 0; + width: 2.1em; + } + + input[type="checkbox"]:checked + label:before, + input[type="radio"]:checked + label:before { + background: #1d2726; + border-color: #1d2726; + color: #ffffff; + content: '\f00c'; + } + + input[type="checkbox"]:focus + label:before, + input[type="radio"]:focus + label:before { + border-color: #51c5e8; + } + + input[type="radio"] + label:before { + border-radius: 100%; + } + + ::-webkit-input-placeholder { + color: #bbb !important; + opacity: 1.0; + } + + :-moz-placeholder { + color: #bbb !important; + opacity: 1.0; + } + + ::-moz-placeholder { + color: #bbb !important; + opacity: 1.0; + } + + :-ms-input-placeholder { + color: #bbb !important; + opacity: 1.0; + } + +/* Box */ + + .box { + border: solid 2px #eee; + margin-bottom: 2em; + padding: 1.5em; + } + + .box > :last-child, + .box > :last-child > :last-child, + .box > :last-child > :last-child > :last-child { + margin-bottom: 0; + } + + .box.alt { + border: 0; + padding: 0; + } + +/* Icon */ + + .icon { + text-decoration: none; + border-bottom: none; + position: relative; + } + + .icon:before { + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + display: inline-block; + font-style: normal; + font-variant: normal; + text-rendering: auto; + line-height: 1; + text-transform: none !important; + font-family: 'Font Awesome 5 Free'; + font-weight: 400; + } + + .icon.solid:before { + font-weight: 900; + } + + .icon.brands:before { + font-family: 'Font Awesome 5 Brands'; + } + + .icon > .label { + display: none; + } + +/* Image */ + + .image { + border: 0; + display: inline-block; + position: relative; + } + + .image:before { + background: url("images/overlay.png"); + content: ''; + display: block; + height: 100%; + left: 0; + position: absolute; + top: 0; + width: 100%; + } + + .image img { + display: block; + } + + .image.left { + float: left; + margin: 0 1.5em 1em 0; + top: 0.25em; + } + + .image.right { + float: right; + margin: 0 0 1em 1.5em; + top: 0.25em; + } + + .image.fit { + display: block; + margin: 0 0 3em 0; + width: 100%; + } + + .image.fit img { + display: block; + width: 100%; + } + +/* List */ + + ol { + list-style: decimal; + margin: 0 0 2em 0; + padding-left: 1.25em; + } + + ol li { + padding-left: 0.25em; + } + + ul { + list-style: disc; + margin: 0 0 2em 0; + padding-left: 1em; + } + + ul li { + padding-left: 0.5em; + } + + ul.alt { + list-style: none; + padding-left: 0; + } + + ul.alt li { + border-top: solid 1px #eee; + padding: 0.5em 0; + } + + ul.alt li:first-child { + border-top: 0; + padding-top: 0; + } + + dl { + margin: 0 0 2em 0; + } + +/* Actions */ + + ul.actions { + display: -moz-flex; + display: -webkit-flex; + display: -ms-flex; + display: flex; + cursor: default; + list-style: none; + margin-left: -1em; + padding-left: 0; + } + + ul.actions li { + padding: 0 0 0 1em; + vertical-align: middle; + } + + ul.actions.special { + -moz-justify-content: center; + -webkit-justify-content: center; + -ms-justify-content: center; + justify-content: center; + width: 100%; + margin-left: 0; + } + + ul.actions.special li:first-child { + padding-left: 0; + } + + ul.actions.stacked { + -moz-flex-direction: column; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + margin-left: 0; + } + + ul.actions.stacked li { + padding: 1.3em 0 0 0; + } + + ul.actions.stacked li:first-child { + padding-top: 0; + } + + ul.actions.fit { + width: calc(100% + 1em); + } + + ul.actions.fit li { + -moz-flex-grow: 1; + -webkit-flex-grow: 1; + -ms-flex-grow: 1; + flex-grow: 1; + -moz-flex-shrink: 1; + -webkit-flex-shrink: 1; + -ms-flex-shrink: 1; + flex-shrink: 1; + width: 100%; + } + + ul.actions.fit li > * { + width: 100%; + } + + ul.actions.fit.stacked { + width: 100%; + } + + @media screen and (max-width: 480px) { + + ul.actions:not(.fixed) { + -moz-flex-direction: column; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + margin-left: 0; + width: 100% !important; + } + + ul.actions:not(.fixed) li { + -moz-flex-grow: 1; + -webkit-flex-grow: 1; + -ms-flex-grow: 1; + flex-grow: 1; + -moz-flex-shrink: 1; + -webkit-flex-shrink: 1; + -ms-flex-shrink: 1; + flex-shrink: 1; + padding: 1em 0 0 0; + text-align: center; + width: 100%; + } + + ul.actions:not(.fixed) li > * { + width: 100%; + } + + ul.actions:not(.fixed) li:first-child { + padding-top: 0; + } + + ul.actions:not(.fixed) li input[type="submit"], + ul.actions:not(.fixed) li input[type="reset"], + ul.actions:not(.fixed) li input[type="button"], + ul.actions:not(.fixed) li button, + ul.actions:not(.fixed) li .button { + width: 100%; + } + + ul.actions:not(.fixed) li input[type="submit"].icon:before, + ul.actions:not(.fixed) li input[type="reset"].icon:before, + ul.actions:not(.fixed) li input[type="button"].icon:before, + ul.actions:not(.fixed) li button.icon:before, + ul.actions:not(.fixed) li .button.icon:before { + margin-left: -0.5em; + } + + } + +/* Icons */ + + ul.icons { + cursor: default; + list-style: none; + padding-left: 0; + } + + ul.icons li { + display: inline-block; + padding: 0 1em 0 0; + } + + ul.icons li:last-child { + padding-right: 0; + } + + ul.icons li .icon:before { + font-size: 1.5em; + } + +/* Table */ + + .table-wrapper { + -webkit-overflow-scrolling: touch; + overflow-x: auto; + } + + table { + margin: 0 0 2em 0; + width: 100%; + } + + table tbody tr { + border: solid 1px #eee; + border-left: 0; + border-right: 0; + } + + table tbody tr:nth-child(2n + 1) { + background-color: rgba(144, 144, 144, 0.05); + } + + table td { + padding: 0.75em 0.75em; + } + + table th { + color: #2a2a2a; + font-size: 0.9em; + font-weight: 600; + padding: 0 0.75em 0.75em 0.75em; + text-align: left; + } + + table thead { + border-bottom: solid 2px #eee; + } + + table tfoot { + border-top: solid 2px #eee; + } + + table.alt { + border-collapse: separate; + } + + table.alt tbody tr td { + border: solid 1px #eee; + border-left-width: 0; + border-top-width: 0; + } + + table.alt tbody tr td:first-child { + border-left-width: 1px; + } + + table.alt tbody tr:first-child td { + border-top-width: 1px; + } + + table.alt thead { + border-bottom: 0; + } + + table.alt tfoot { + border-top: 0; + } + +/* Button */ + + input[type="submit"], + input[type="reset"], + input[type="button"], + button, + .button { + -moz-appearance: none; + -webkit-appearance: none; + -ms-appearance: none; + appearance: none; + -moz-transition: background-color 0.2s ease-in-out, color 0.2s ease-in-out; + -webkit-transition: background-color 0.2s ease-in-out, color 0.2s ease-in-out; + -ms-transition: background-color 0.2s ease-in-out, color 0.2s ease-in-out; + transition: background-color 0.2s ease-in-out, color 0.2s ease-in-out; + background-color: #1d2726; + border-radius: 0; + border: 0; + color: #ffffff !important; + cursor: pointer; + display: inline-block; + font-size: 0.9em; + font-weight: 600; + height: 4em; + letter-spacing: 0.125em; + line-height: 4em; + overflow: hidden; + padding: 0 2.75em; + text-align: center; + text-decoration: none; + text-overflow: ellipsis; + text-transform: uppercase; + white-space: nowrap; + } + + input[type="submit"]:hover, + input[type="reset"]:hover, + input[type="button"]:hover, + button:hover, + .button:hover { + background-color: #283634; + } + + input[type="submit"]:active, + input[type="reset"]:active, + input[type="button"]:active, + button:active, + .button:active { + background-color: #121818; + } + + input[type="submit"].icon, + input[type="reset"].icon, + input[type="button"].icon, + button.icon, + .button.icon { + padding-left: 2.35em; + } + + input[type="submit"].icon:before, + input[type="reset"].icon:before, + input[type="button"].icon:before, + button.icon:before, + .button.icon:before { + margin-right: 0.5em; + } + + input[type="submit"].fit, + input[type="reset"].fit, + input[type="button"].fit, + button.fit, + .button.fit { + width: 100%; + } + + input[type="submit"].small, + input[type="reset"].small, + input[type="button"].small, + button.small, + .button.small { + font-size: 0.8em; + height: 3.5em; + line-height: 3.5em; + padding: 0 2em; + } + + input[type="submit"].large, + input[type="reset"].large, + input[type="button"].large, + button.large, + .button.large { + font-size: 1.25em; + height: 3.15em; + line-height: 3.15em; + } + + input[type="submit"].alt, + input[type="reset"].alt, + input[type="button"].alt, + button.alt, + .button.alt { + background-color: transparent; + box-shadow: inset 0 0 0 2px #eee; + color: #2a2a2a !important; + } + + input[type="submit"].alt:hover, + input[type="reset"].alt:hover, + input[type="button"].alt:hover, + button.alt:hover, + .button.alt:hover { + background-color: rgba(144, 144, 144, 0.05); + } + + input[type="submit"].alt:active, + input[type="reset"].alt:active, + input[type="button"].alt:active, + button.alt:active, + .button.alt:active { + background-color: rgba(144, 144, 144, 0.1); + } + + input[type="submit"].alt.icon:before, + input[type="reset"].alt.icon:before, + input[type="button"].alt.icon:before, + button.alt.icon:before, + .button.alt.icon:before { + color: #bbb; + } + + input[type="submit"].primary, + input[type="reset"].primary, + input[type="button"].primary, + button.primary, + .button.primary { + background-color: #51c5e8; + color: #ffffff !important; + } + + input[type="submit"].primary:hover, + input[type="reset"].primary:hover, + input[type="button"].primary:hover, + button.primary:hover, + .button.primary:hover { + background-color: #68cdeb; + } + + input[type="submit"].primary:active, + input[type="reset"].primary:active, + input[type="button"].primary:active, + button.primary:active, + .button.primary:active { + background-color: #3abde5; + } + + input[type="submit"].disabled, input[type="submit"]:disabled, + input[type="reset"].disabled, + input[type="reset"]:disabled, + input[type="button"].disabled, + input[type="button"]:disabled, + button.disabled, + button:disabled, + .button.disabled, + .button:disabled { + background-color: #4a4a4a !important; + box-shadow: inset 0 -0.15em 0 0 rgba(0, 0, 0, 0.15); + color: #fff !important; + cursor: default; + opacity: 0.25; + } + +/* Feature */ + + .feature { + margin: 0 0 2em 0; + padding: 2em 0 2em 9em; + position: relative; + } + + .feature i { + border-radius: 100%; + border: solid 3px #eee; + color: #51c5e8; + display: block; + height: 7em; + left: 0; + line-height: 7.25em; + margin-top: -0.5em; + position: absolute; + text-align: center; + top: 2em; + width: 7em; + } + + .feature i:before { + font-size: 40px; + } + + .feature h3 { + margin-bottom: 0.5em; + } + + .feature p { + margin-bottom: 0; + } + +/* Image Feature */ + + .image-feature { + position: relative; + text-align: center; + margin: 0 0.5em 2em 0.5em; + } + + .image-feature > a { + display: block; + } + + .image-feature header { + background: #fff; + left: 0; + padding: 1.5em 0; + position: absolute; + top: 0; + width: 100%; + z-index: 1; + } + + .image-feature header:before { + -moz-transform: rotate(45deg); + -webkit-transform: rotate(45deg); + -ms-transform: rotate(45deg); + transform: rotate(45deg); + background: #fff; + bottom: -0.5em; + content: ''; + display: block; + height: 1em; + left: 50%; + margin-left: -0.5em; + position: absolute; + width: 1em; + } + + .image-feature header h3 { + font-size: 1em; + margin: 0; + } + + .image-feature .image { + margin: 0; + } + + .image-feature p { + margin: 0; + } + + .image-feature footer { + background: #1d2726; + background: rgba(29, 39, 38, 0.9); + bottom: 0; + color: #fff; + left: 0; + padding: 1.5em; + position: absolute; + width: 100%; + z-index: 1; + } + + .image-feature footer input[type="submit"].alt, + .image-feature footer input[type="reset"].alt, + .image-feature footer input[type="button"].alt, + .image-feature footer button.alt, + .image-feature footer .button.alt { + box-shadow: inset 0 0 0 2px rgba(255, 255, 255, 0.25); + color: #fff !important; + } + +/* Wrapper */ + + .wrapper { + padding: 4em 0 4em 0; + } + + .wrapper.style1 { + background: #141414; + color: #888; + } + + .wrapper.style1 h2, .wrapper.style1 h3, .wrapper.style1 strong { + color: #ffffff; + } + + .wrapper.style1 header.major:after { + background: rgba(255, 255, 255, 0.25); + } + + .wrapper.style2 { + background: #000; + } + + .wrapper.style3 { + background: #f4f4f4; + } + + .wrapper.style4 { + background: #fafafa; + } + +/* Header */ + + +.logo-kep{ + width: 70px; + line-height: 5em; + vertical-align: middle; + margin-left: 5em; +} + +.booktime{ + background-color: #9e8462; + color: #000; + margin-left:2em; + padding-left: 10px; + padding-right: 10px; +} + + #page-wrapper { + padding-top: 3em; + } + + #header { + background: #000; + color: #fff; + cursor: default; + height: 5em; + left: 0; + line-height: 5em; + position: fixed; + top: 0; + width: 100%; + z-index: 10000; + } + + #header h1 { + color: #9e8462; + height: inherit; + left: 10.5em; + line-height: inherit; + margin: 0; + padding: 0; + position: absolute; + top: 0; + } + + #header h1 a { + font-size: 1em; + } + + #header h1 a:before { + color: #51c5e8; + margin-right: 0.35em; + } + + #header nav { + font-weight: 600; + height: inherit; + letter-spacing: 0.125em; + line-height: inherit; + position: absolute; + right: 1.5em; + text-transform: uppercase; + top: 0; + vertical-align: middle; + } + + #header nav > ul { + list-style: none; + line-height: 4.5em; + margin: 0; + padding-left: 0; + vertical-align: middle; + } + + #header nav > ul > li { + display: inline-block; + margin-left: 2em; + /*padding-left: 0;*/ + } + + #header nav > ul > li.booktime { + margin-right: 2em; + } + + #header nav > ul > li.socialmedia-menu { + color: #fff; + font-size: 30px; + margin: auto 0 auto 0; +} + + + #header nav > ul > li.language { + padding-left: 0; + margin: 0; + font-size: 12px; + color: #888; + -moz-transition: color 0.2s ease-in-out; + -webkit-transition: color 0.2s ease-in-out; + -ms-transition: color 0.2s ease-in-out; + transition: color 0.2s ease-in-out; + } + #header nav > ul > li.language:hover { + color: #fff; + } + + #header nav > ul > li a { + -moz-transition: color 0.2s ease-in-out; + -webkit-transition: color 0.2s ease-in-out; + -ms-transition: color 0.2s ease-in-out; + transition: color 0.2s ease-in-out; + color: #fff; + display: inline-block; + text-decoration: none; + font-size: 0.8em; + } + + #header nav > ul > li a:before { + margin-right: 0.5em; + /*opacity: 0.5;*/ + } + + #header nav > ul > li a:hover { + color: #9e8462; + } + + #header nav > ul > li.booktime a:hover { + color: #000; + } + + #header nav > ul > li.active > a { + color: #fff; + } + + #header nav > ul > li:first-child { + margin-left: 0; + } + + #header nav > ul > li input[type="submit"], + #header nav > ul > li input[type="reset"], + #header nav > ul > li input[type="button"], + #header nav > ul > li button, + #header nav > ul > li .button { + font-size: 1em; + height: 2.25em; + line-height: 2.25em; + margin-bottom: 0; + padding: 0 1em; + position: relative; + top: -0.125em; + vertical-align: middle; + } + + #header nav > ul > li > ul { + display: none; + } + + #header .container { + position: relative; + } + + #header .container h1 { + left: 0; + } + + #header .container nav { + right: 0; + } + + .dropotron { + background: #1d2726; + color: #fff; + font-weight: 600; + letter-spacing: 0.125em; + list-style: none; + margin-top: -1em; + min-width: 14em; + padding: 1.25em 0; + text-transform: uppercase; + } + + .dropotron.level-0 { + font-size: 0.8em; + margin-top: 1em; + } + + .dropotron.level-0:before { + -moz-transform: rotate(45deg); + -webkit-transform: rotate(45deg); + -ms-transform: rotate(45deg); + transform: rotate(45deg); + background: #1d2726; + content: ''; + display: block; + height: 1em; + position: absolute; + right: 1.5em; + top: -0.5em; + width: 1em; + } + + .dropotron li > a { + -moz-transition: color 0.2s ease-in-out; + -webkit-transition: color 0.2s ease-in-out; + -ms-transition: color 0.2s ease-in-out; + transition: color 0.2s ease-in-out; + color: #ccc; + display: block; + padding: 0.125em 1.25em; + text-decoration: none; + } + + .dropotron li > a:hover { + color: #fff; + } + + .dropotron li.active > a { + color: #fff; + } + +/* Banner */ + + #banner { + background-color: #141414; + /*background-attachment: scroll, fixed; + background-image: url("images/overlay.png"), url("../../images/banner.jpg"); + background-position: top left, center center; + background-repeat: no-repeat; + background-size: cover; + background-size: auto, cover;*/ + color: #fff; + padding: 0em 0; + position: relative; + text-align: center; + } + + #banner img{ + width: 100%; + } + + #banner:after { + -moz-transition: opacity 1s ease-in-out; + -webkit-transition: opacity 1s ease-in-out; + -ms-transition: opacity 1s ease-in-out; + transition: opacity 1s ease-in-out; + background: #313148; + content: ''; + height: 100%; + left: 0; + opacity: 0; + position: absolute; + top: 0; + width: 100%; + z-index: 1; + } + + #banner :last-child { + margin-bottom: 0; + } + + #banner .inner { + background: #1d2726; + background: rgba(29, 39, 38, 0.9); + display: inline-block; + padding: 3.5em 5em; + position: relative; + z-index: 2; + } + + #banner .inner h2 { + color: inherit; + font-size: 2.5em; + line-height: 1.35em; + margin: 0; + padding: 0; + } + + #banner .inner p { + font-size: 1em; + letter-spacing: 0.125em; + line-height: 2em; + margin: 2em 0 0 0; + padding: 2em 0 0 0; + position: relative; + text-transform: uppercase; + top: -0.25em; + } + + #banner .inner p:before { + background: #888; + background: rgba(255, 255, 255, 0.25); + content: ''; + display: block; + height: 3px; + left: 50%; + margin: 0 0 0 -3em; + position: absolute; + top: 0; + width: 6em; + } + + #banner .inner .actions { + margin-top: 2em; + } + + #banner .inner input[type="submit"].alt, + #banner .inner input[type="reset"].alt, + #banner .inner input[type="button"].alt, + #banner .inner button.alt, + #banner .inner .button.alt { + box-shadow: inset 0 0 0 2px rgba(255, 255, 255, 0.25); + color: #fff !important; + } + + body.is-preload #banner:after { + opacity: 1.0; + } + + .prices-category{ + /*font-family: 'Abril Fatface', cursive;*/ + text-align: center; + margin-top: 2em; + margin-bottom: 2em; + } + + +/* Mobile booking */ + +#mobil-menu{ + display: none; + background: #9e8462; +} + +.mobil-menucont ul { + list-style: none; + font-size: 1em; + line-height: 4.5em; + text-align: center; + margin: 0; + padding-left: 0; + vertical-align: middle; +} + +.mobil-menucont ul li{ + color: #fff; + margin: 0 0.5em; + display: inline; +} + +.mobil-menucont ul li a{ + color: #fff; + text-decoration: none; + } + +.mobil-menucont ul .mobil-menu-book{ + margin-right: 2em; + padding: 0.5em 0.5em; + font-weight: 600; +} + + + @media screen and (max-width: 980px) { + #mobil-menu{ + display: block; + } +} + +/* Main */ + + #main > header.major { + margin: 0 0 2em 0; + text-align: center; + } + + header.major h2{ + font-family: 'Abril Fatface', cursive; + color: #fff; + font-size: 50px; + font-weight: 400; + margin-bottom: 0; + } + + + header.major h4{ + font-size: 13px; + color: #888888; + } + + + +.one-half { + float: left; + width: 100%; + padding: 0 40px; + position: relative; + text-align: left; + overflow: hidden; +} + +.category-content { + position: relative; + display: inline-block; + width: 100%; + padding-bottom: 15px; + padding-top: 18px; + border-bottom: 1px solid #3d3d3d;} + +.category-text-left { + float: left; +} + +.main-title a { + text-decoration: none; + font-size: 16px; + color: #ffffff; + font-weight: 500; + -webkit-transition: all 0.5s ease; + -moz-transition: all 0.5s ease; + -o-transition: all 0.5s ease; + transition: all 0.5s ease; +} + +.sub-title { + font-size: 13px; + color: #888888; + font-weight: 400; + padding-right: 40px; + letter-spacing: 0.6px; +} + +.category-text-right { + float: right; +} + +.category-content .price { + font-size: 16px; + color: #9e8462; + letter-spacing: 0.5px; + font-weight: 600; + display: inline-block; + -webkit-transition: all 0.5s ease; + -moz-transition: all 0.5s ease; + -o-transition: all 0.5s ease; + transition: all 0.5s ease; +} + + +.common-home .box-heading:before, .box.related .box-heading:before { + content: ""; + background: url(../../assets/img/ollo.png) no-repeat scroll; + width: 75px; + height: 65px; + position: absolute; + top: 0; + left: 0; + right: 0; + margin: 0 auto; + display: inline-block; +} + + +/* About Us */ + +#aboutus .container .inner .dolgozo-nev{ + width: 100%; + text-align: center; + margin-bottom: 2em; +} +#aboutus .container .inner hr { + margin: 4em auto 4em auto; + border-bottom: solid 3px #888; + width: 40%; +} + +#aboutus .container .inner .dolgozo-nev .dolgozo-kep{ + width: 150px; + border-radius: 50%; + margin-bottom: 1em; +} + +#aboutus .container .inner .dolgozo-nev h4{ + color: #fff; +} + +#aboutus .container .inner .dolgozo-nev h4 span{ + color: #888; +} + +.bemutatkozas, .bemutatkozas-dolgozo{ + display: flex; + width: 100%; +} + +.bem-bal, .bem-dolgozo-bal{ + width: 60%; +} + +.bem-bal h4{ + color: #fff; +} + +.bem-bal p{ + text-align: justify; +} + +.bem-dolgozo-bal p{ + text-align: justify; + font-style: italic; + +} + +.bem-jobb{ + width: 40%; + margin-left: 4em; + float: right; +} + +.bem-jobb img{ + width: 100%; +} + +.bem-jobb h4{ + margin-top: 1em; + text-align: center; + color: #9e8462; +} + +.bem-jobb h4 span{ + color: #fff; +} +.bem-dolgozo-jobb{ + width: 40%; + float: right; + text-align: right; + margin: auto; + +} + +.bem-dolgozo-jobb img{ + opacity: 0.8; + margin-left: 10px; + margin-right: 10ox; + width: 40%; + transition: opacity .25s ease-in-out; + -moz-transition: opacity .25s ease-in-out; + -webkit-transition: opacity .25s ease-in-out; +} + +.bem-dolgozo-jobb img:hover{ + opacity: 1; + +} + + + +/* Treatments - Our Services */ + + #treatments{ + clear: both; + } + + .service-block { + width: 100%; + display: block; + } + + + .service-area .one-third { + + width: 28%; + padding: 0; + overflow: hidden; + } + + .service-area .one-third.service-part1, .service-area .one-third.service-part4 { + width: 30%; + padding: 0; + float: left; + overflow: hidden; + } + + .service-area .one-third.service-part2 { + width: 42%; + /*margin-top:30px; + margin-bottom: 30px;*/ + padding: 0 30px; + float:left; + overflow: hidden; + } + + .service-area .one-third .service img { + -webkit-transform: rotateY(0deg); + -moz-transform: rotateY(0deg); + -ms-transform: rotateY(0deg); + -o-transform: rotateY(0deg); + transform: rotateY(0deg); + transition: all 0.9s ease 0s; + -webkit-transition: all 0.9s ease 0s; + -moz-transition: all 0.9s ease 0s; + -ms-transition: all 0.9s ease 0s; + -o-transition: all 0.9s ease 0s; + max-width: 100%; + } + + .service-area .one-third .service:hover img { + -webkit-transform: rotateY(-180deg); + -moz-transform: rotateY(-180deg); + -ms-transform: rotateY(-180deg); + -o-transform: rotateY(-180deg); + transform: rotateY(-180deg); + transition: all 0.9s ease 0s; + -webkit-transition: all 0.9s ease 0s; + -moz-transition: all 0.9s ease 0s; + -ms-transition: all 0.9s ease 0s; + -o-transition: all 0.9s ease 0s; + } + + + .service-area .one-third .service .service-text .service-icon { + background: url(../../assets/img/service-icon.png) no-repeat scroll; + float: right; + height: 80px; + border-radius: 50%; + width: 80px; + position: relative; + background-color: #333333; + display: inline-block; + transition: all 0.5s ease 0s; + -webkit-transition: all 0.5s ease 0s; + -moz-transition: all 0.5s ease 0s; + -ms-transition: all 0.5s ease 0s; + -o-transition: all 0.5s ease 0s; + } + + .service .service-text .service-content .main-title { + font-size: 14px; + font-weight: 600; + color: #ffffff; + text-transform: capitalize; + letter-spacing: 0.8px; + padding-bottom: 10px; + } + + .service .service-text .service-content .sub-title-serv { + font-size: 13px; + color: #888888; + font-weight: 400; + line-height: 20px; + letter-spacing: 0.6px; + } + + .service-area .one-third .service .service-text .service-content { + margin-right: 100px; + } + + .service-area .one-third .service .service-text { + padding: 0 0px 95px; + text-align: right; + } + + .service-area .one-third .service.service3 .service-text .service-content { + margin-right: 0px; + margin-left: 100px; + } + + .service-area .one-third .service.service3 .service-text { + text-align: left; + } + + + + .service-area .one-third .service.service3 .service-text .service-icon { + float: left; + } + + .service-area .one-third .service .service-text .service-icon.icon1 { + background-position: center -65px; + } + .service-area .one-third .service .service-text:hover .service-icon.icon1 { + background-position:center 22px; + } + .service-area .one-third .service .service-text .service-icon.icon2 { + background-position:center -417px; + } + .service-area .one-third .service .service-text:hover .service-icon.icon2 { + background-position: center -330px; + } + .service-area .one-third .service .service-text .service-icon.icon3 { + background-position:center -765px; + } + .service-area .one-third .service .service-text:hover .service-icon.icon3 { + background-position: center -678px; + } + .service-area .one-third .service.service3 .service-text .service-icon.icon1 { + background-position: center -242px; + } + .service-area .one-third .service.service3 .service-text:hover .service-icon.icon1 { + background-position: center -155px; + } + .service-area .one-third .service.service3 .service-text .service-icon.icon2 { + background-position: center -590px; + } + .service-area .one-third .service.service3 .service-text:hover .service-icon.icon2 { + background-position:center -503px; + } + .service-area .one-third.service-part3 .service .service-text .service-icon.icon3 { + background-position: center -939px; + } + .service-area .one-third.service-part3 .service .service-text:hover .service-icon.icon3 { + background-position:center -852px; + } + .service-area .one-third .service .service-text:hover .service-content .main-title { + color: #9e8462; + } + + + +/* One */ + + #one { + padding-top:10em; + padding-bottom: 5em; + } + + #one p { + font-size: 1.25em; + line-height: 1.75em; + margin: -0.5em 0 0 0; + } + + #one .inner { + display: inline-block; + margin-top: -6em; + padding-right: 6em; + vertical-align: middle; + width: 100%; + } + + #one .device { + border: solid 40px #fff; + border-bottom: 0; + border-radius: 20px; + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; + display: inline-block; + margin-bottom: 0; + position: relative; + vertical-align: middle; + width: 100%; + } + + #one .device:after { + background: #eee; + border-radius: 100%; + content: ''; + height: 10px; + left: 50%; + margin: -23px 0 0 -5px; + position: absolute; + top: 0; + width: 10px; + } + + +/*two */ + + .nyitvatartas .about-content { + position: relative; + display: inline-block; + width: 100%; + padding: 25px 0px 15px; + border-bottom: 1px solid #3d3d3d; + font-size: 16px; + font-weight: 600; + } + + .nyitvatartas .title, .nyitvatartas .time{ + color: #fff; + } + + .nyitvartas .closed{ + color: #9e8462; + } + + .nyitvatartas .about-content .about-text-left { + float: left; + } + + .nyitvatartas .about-content .about-text-right { + float: right; +} + + + +/* Footer */ + +#footer .footer-div{ + display: flex; +} + + +#footer .footer-div .companyname{ + color: #fff; + font-family: 'Abril Fatface', cursive; + font-size: 24px; + margin-bottom: 20px; +} + +#footer .footer-div .companyname span{ + border-bottom: solid 5px #fff; + } + +#footer .footer-div ul{ + margin: 0; + list-style: none; +} + +#footer .footer-logo{ + max-width: 100px; +} + + #footer { + background: #9e8462; + color: #fff; + padding: 2em 0 0 0; + text-align: center; + } + + #footer .icons { + font-size: 24px; + margin: 0 0 1em 0; + padding-left: 0; + } + + #footer .icons li { + margin-top: 0.5em; + font-size: 16px; + padding: 0 1em 0 1em; + } + + #footer .icons li:last-child { + padding-right: 0; + } + + #footer .icons li a { + -moz-transition: color 0.2s ease-in-out; + -webkit-transition: color 0.2s ease-in-out; + -ms-transition: color 0.2s ease-in-out; + transition: color 0.2s ease-in-out; + color: #fff; + } + + #footer .icons li a:hover { + color: #000; + } + + .footer-bal{ + margin: 0 10px; + width: 30%; + + } + + .footer-bal .contact-block a{ + text-decoration: none; + color: #fff; +} + + + .footer-jobb{ + width: 60%; + margin:0; + float: left; + } + + .footer-jobb img{ + width: 100%; + margin:0; + } + + + #footer .copyright { + background: #141414; + font-size: 0.9em; + padding: 1em 0 1em 0; + margin: 2em 0 0 0; + } + +/* Wide */ + + @media screen and (max-width: 1680px) { + + /* Basic */ + + body, input, select, textarea { + font-size: 11pt; + } + + } + +/* Normal */ + + @media screen and (max-width: 1280px) { + + /* Basic */ + + body, input, select, textarea { + font-size: 11pt; + } + + /* Feature */ + + .feature { + padding-left: 7em; + } + + .feature i { + height: 5.25em; + line-height: 5.5em; + margin-top: 0; + width: 5.25em; + } + + .feature i:before { + font-size: 32px; + } + + /* Wrapper */ + + .wrapper { + padding: 4em 0 2em 0; + } + + #header nav > ul > li{ + margin-left: 0.5em; + } + + /* Banner */ + + #banner { + background-attachment: scroll; + padding: 0 0; + } + + #banner .inner { + padding: 3em 4em; + } + + #banner .inner h2 { + font-size: 2.25em; + } + + /* Main */ + + #main { + padding: 2em 0; + } + + .service-area .one-third .service .service-text{ + padding: 0 0 45px; + } + + .main-title a {font-size: 14px;} + + .sub-title{font-size:10px;} + + + /* One */ + + #one .inner { + margin-top: -4em; + padding-right: 4em; + } + + #one .device { + border-width: 35px; + } + + #one .device:after { + margin-top: -22px; + } + + } + +/* Narrow */ + + #navPanel, #navButton { + display: none; + } + + @media screen and (max-width: 980px) { + + /* Basic */ + + html, body { + overflow-x: hidden; + } + + body, input, select, textarea { + font-size: 12pt; + } + + h2 { + font-size: 1.25em; + line-height: 1.75em; + } + + h3 { + font-size: 1.1em; + line-height: 1.5em; + } + + h4 { + font-size: 1em; + line-height: 1.5em; + } + + /* Section/Article */ + + section.special, article.special { + text-align: center; + } + + header h2 + p { + font-size: 0.9em; + } + + header h3 + p { + font-size: 0.8em; + } + + header h4 + p, + header h5 + p, + header h6 + p { + font-size: 0.8em; + } + + /* Feature */ + + .feature { + padding-left: 9em; + } + + .feature i { + height: 7em; + line-height: 7.5em; + margin-top: -0.5em; + width: 7em; + } + + .feature i:before { + font-size: 42px; + } + + /* Image Feature */ + + .image-feature .image { + max-height: 30em; + overflow: hidden; + } + + /* Header */ + + #page-wrapper { + padding-top: 0; + } + + #header { + display: none; + } + + /* Banner */ + + #banner { + padding: 0em 0; + } + + #banner .inner { + padding: 3em; + } + + #banner .inner h2 { + font-size: 2em; + } + + + + /* Main */ + + #main > header.major { + margin: 0; + } + + .bem-jobb{margin-left:2em;} + + .bem-bal p, .bem-dolgozo-bal p {font-size:14px; margin: 0 0 0.5em 0;} + + .bem-dolgozo-jobb {width: 30%;} + + .bem-dolgozo-jobb img{width: 70%;} + + header.major h2 {font-size: 36px;} + + + /* One */ + + #one {padding-top: 2em;} + + #one p { + font-size: 1em; + } + + #one .inner { + display: block; + margin: 0 auto; + max-width: 100%; + padding: 0; + text-align: center; + width: 35em; + } + + #one .device { + display: block; + margin: 4em auto 0 auto; + max-width: 100%; + width: 30em; + } + + .service-area .one-third.service-part1{width: 50%; padding-right: 10px;} + .service-area .one-third.service-part2{display: none;} + .service-area .one-third.service-part3{width:50%;padding-left: 10px;} + + .one-half {float: none; width: 100%;} + #footer .footer-div{display:block;} + .footer-bal{width: 100%;} + .footer-jobb{width: 100%; float: none; margin-top:2em;} + + + /* Off-Canvas Navigation */ + + #page-wrapper { + -moz-backface-visibility: hidden; + -webkit-backface-visibility: hidden; + -ms-backface-visibility: hidden; + backface-visibility: hidden; + -moz-transition: -moz-transform 0.5s ease; + -webkit-transition: -webkit-transform 0.5s ease; + -ms-transition: -ms-transform 0.5s ease; + transition: transform 0.5s ease; + padding-bottom: 1px; + } + + #navButton { + -moz-backface-visibility: hidden; + -webkit-backface-visibility: hidden; + -ms-backface-visibility: hidden; + backface-visibility: hidden; + -moz-transition: -moz-transform 0.5s ease; + -webkit-transition: -webkit-transform 0.5s ease; + -ms-transition: -ms-transform 0.5s ease; + transition: transform 0.5s ease; + display: block; + height: 4em; + left: 0; + position: fixed; + top: 0; + width: 6em; + z-index: 10001; + } + + #navButton .toggle { + text-decoration: none; + height: 100%; + left: 0; + position: absolute; + top: 0; + width: 100%; + } + + #navButton .toggle:before { + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + display: inline-block; + font-style: normal; + font-variant: normal; + text-rendering: auto; + line-height: 1; + text-transform: none !important; + font-family: 'Font Awesome 5 Free'; + font-weight: 900; + } + + #navButton .toggle:before { + background: rgba(29, 39, 38, 0.75); + color: #ffffff; + content: '\f0c9'; + display: block; + font-size: 18px; + height: 2.35em; + left: 0.5em; + line-height: 2.35em; + position: absolute; + text-align: center; + top: 0.5em; + width: 3em; + } + + #navPanel { + -moz-backface-visibility: hidden; + -webkit-backface-visibility: hidden; + -ms-backface-visibility: hidden; + backface-visibility: hidden; + -moz-transform: translateX(-275px); + -webkit-transform: translateX(-275px); + -ms-transform: translateX(-275px); + transform: translateX(-275px); + -moz-transition: -moz-transform 0.5s ease; + -webkit-transition: -webkit-transform 0.5s ease; + -ms-transition: -ms-transform 0.5s ease; + transition: transform 0.5s ease; + background-image: -moz-linear-gradient(left, rgba(0,0,0,0) 95%, rgba(0,0,0,0.1)); + background-image: -webkit-linear-gradient(left, rgba(0,0,0,0) 95%, rgba(0,0,0,0.1)); + background-image: -ms-linear-gradient(left, rgba(0,0,0,0) 95%, rgba(0,0,0,0.1)); + background-image: linear-gradient(left, rgba(0,0,0,0) 95%, rgba(0,0,0,0.1)); + display: block; + height: 100%; + left: 0; + overflow-y: auto; + position: fixed; + top: 0; + width: 275px; + z-index: 10002; + background: #1d2726; + color: #c7c9c9; + padding: 0.25em 1.5em; + } + + #navPanel .link { + border-top: solid 1px rgba(255, 255, 255, 0.05); + color: #c7c9c9; + display: block; + font-size: 0.8em; + font-weight: 600; + height: 3.5em; + letter-spacing: 0.125em; + line-height: 3.5em; + text-decoration: none; + text-transform: uppercase; + } + + #navPanel .link:first-child { + border-top: 0; + } + + #navPanel .link.depth-0 { + color: #ffffff; + } + + #navPanel .link .indent-1 { + display: inline-block; + width: 1.25em; + } + + #navPanel .link .indent-2 { + display: inline-block; + width: 2.5em; + } + + #navPanel .link .indent-3 { + display: inline-block; + width: 3.75em; + } + + #navPanel .link .indent-4 { + display: inline-block; + width: 5em; + } + + #navPanel .link .indent-5 { + display: inline-block; + width: 6.25em; + } + + body.navPanel-visible #page-wrapper { + -moz-transform: translateX(275px); + -webkit-transform: translateX(275px); + -ms-transform: translateX(275px); + transform: translateX(275px); + } + + body.navPanel-visible #navButton { + -moz-transform: translateX(275px); + -webkit-transform: translateX(275px); + -ms-transform: translateX(275px); + transform: translateX(275px); + } + + body.navPanel-visible #navPanel { + -moz-transform: translateX(0); + -webkit-transform: translateX(0); + -ms-transform: translateX(0); + transform: translateX(0); + } + + } + +/* Mobile */ + + @media screen and (max-width: 736px) { + + /* Basic */ + + body, input, select, textarea { + font-size: 12pt; + } + + /* Feature */ + + .feature { + margin: 0 auto 2em auto; + max-width: 100%; + padding: 0; + text-align: center; + width: 30em; + } + + .feature i { + left: 0; + margin: 0 auto 2em auto; + position: relative; + top: 0; + } + + /* Image Feature */ + + .image-feature { + margin: 0 auto 2em auto; + max-width: 100%; + width: 25em; + } + + .image-feature .image { + max-height: none; + } + + /* Wrapper */ + + .wrapper { + padding: 2.5em 1.25em 0.5em 1.25em; + } + + /* Banner */ + + #banner { + padding: 6em 0; + } + + #banner .inner { + padding: 2em 2.5em; + width: 100%; + } + + #banner .inner h2 { + font-size: 1.5em; + } + + #banner .inner p { + margin: 1.5em 0 0 0; + padding: 1.5em 0 0 0; + } + + /* One */ + + #one .device { + border-width: 20px; + margin-top: 2em; + max-width: 100%; + width: 25em; + } + + #one .device:after { + height: 8px; + margin: -13px 0 0 -4px; + width: 8px; + } + + + .bookingContainer { + width: 95%!important; + margin-right: 10px!important; + margin-left: 10px!important; + } + + .bookingResultsWrapper { + width: 665px!important; + margin-left: 0!important; + } + + #bookingStep3 { + min-height: 720px!important; + } + + .serviceInfoCol { + padding-left: 5px!important; + } + + .serviceCol h4 { + margin-left: 0!important; + } + + .serviceNameCol { + padding-left: 0!important; + } + + .serviceTable { + width: 93%!important; + margin-left: 5px!important; + margin-right: 0!important; + padding: 0 5px!important; + margin-bottom: 100px!important; + } + + .bookingResultsWrapper { + width: 100%!important; + float: none!important; + } + + .bookingCalendar { + float: none!important; + } + + .availableTimes { + margin-bottom: 60px!important; + } + + .bookingContainer { + margin-top: -12px!important; + } + + } + +/* Mobile (Portrait) */ + + @media screen and (max-width: 480px) { + + #banner{padding:0;} + .service-part2{display: none;} + .one-third{width: 100%;} + .service-area .one-third.service-part1{width: 100%;} + .service-area .one-third.service-part3{width: 100%;} + .service-area .one-third .service .service-text {text-align: center; padding-bottom: 30px;} + .service-area .one-third .service .service-text .service-icon {float: none;} + .service-area .one-third .service .service-text .service-content {margin: 0;} + .service .service-text .service-content .sub-title-serv {padding: 0 20px 0 20px;} + .service-area .one-third .service.service3 .service-text .service-icon {float: none;} + .service-area .one-third .service.service3 .service-text {text-align:center;} + .service-area .one-third .service.service3 .service-text .service-content {margin-left: 0;} + .service-area .one-third {width: 100%;} + + #one{padding-top: 3em;} + + .bemutatkozas{display: block;} + .bem-bal{width: 100%;} + .bem-jobb{width: 100%; margin-bottom: 2em;} + + .bemutatkozas-dolgozo{display: block;} + .bem-dolgozo-bal {width: 100%;} + .bem-dolgozo-jobb {width: 100%; float: none; text-align: center;} + + #czcategorylistblock .czcategorylist-wrapper .category_lists .one-half .category-content {width: 100%; } + .one-half{width:100%; float: none;} + + .category-text-left{float: none;} + .category-text-right {display: block; float: left;} + + #two {margin-bottom: 3em;} + header.major h2 {font-size: 32px;} + + #footer .footer-div {display: block;} + .footer-bal{width:100%;} + .footer-jobb{width:100%; float: none; margin-top:2em;} + + + /* Basic */ + + html, body { + min-width: 320px; + } + + body, input, select, textarea { + font-size: 12pt; + } + + h1 br, h2 br, h3 br, h4 br, h5 br, h6 br { + display: none; + } + + h2 { + font-size: 1.15em; + line-height: 1.75em; + } + + h3 { + font-size: 1em; + line-height: 1.5em; + } + + /* List */ + + ul.actions { + margin: 0 0 2em 0; + } + + ul.actions li { + display: block; + padding: 1em 0 0 0; + text-align: center; + width: 100%; + } + + ul.actions li:first-child { + padding-top: 0; + } + + ul.actions li > * { + margin: 0 !important; + width: 100%; + } + + ul.actions li > *.icon:before { + margin-left: -2em; + } + + ul.actions.small li { + padding: 0.5em 0 0 0; + } + + ul.actions.small li:first-child { + padding-top: 0; + } + + /* Button */ + + input[type="submit"], + input[type="reset"], + input[type="button"], + button, + .button { + padding: 0; + } + + /* One */ + + #one .device { + border-width: 15px; + } + + #one .device:after { + height: 5px; + margin: -10px 0 0 -2.5px; + width: 5px; + } + + } \ No newline at end of file diff --git a/assets/css/beauty.css b/assets/css/beauty.css new file mode 100755 index 0000000..40436d7 --- /dev/null +++ b/assets/css/beauty.css @@ -0,0 +1,4570 @@ +@import url(../css/fontawesome-all.min.css); +@import url("https://fonts.googleapis.com/css?family=Open+Sans:300,600,300italic,600italic"); + +/* + Catalyst by Pixelarity + pixelarity.com | hello@pixelarity.com + License: pixelarity.com/license +*/ + + +html{ + scroll-behavior: smooth; +} + +html, body, div, span, applet, object, +iframe, h1, h2, h3, h4, h5, h6, p, blockquote, +pre, a, abbr, acronym, address, big, cite, +code, del, dfn, em, img, ins, kbd, q, s, samp, +small, strike, strong, sub, sup, tt, var, b, +u, i, center, dl, dt, dd, ol, ul, li, fieldset, +form, label, legend, table, caption, tbody, +tfoot, thead, tr, th, td, article, aside, +canvas, details, embed, figure, figcaption, +footer, header, hgroup, menu, nav, output, ruby, +section, summary, time, mark, audio, video { + margin: 0; + padding: 0; + border: 0; + font-size: 100%; + font: inherit; + vertical-align: baseline;} + +article, aside, details, figcaption, figure, +footer, header, hgroup, menu, nav, section { + display: block;} + +body { + line-height: 1; + font-family: 'Poppins', sans-serif; +} + +ol, ul { + list-style: none; +} + +blockquote, q { + quotes: none; +} + + blockquote:before, blockquote:after, q:before, q:after { + content: ''; + content: none; + } + +table { + border-collapse: collapse; + border-spacing: 0; +} + +body { + -webkit-text-size-adjust: none; +} + +mark { + background-color: transparent; + color: inherit; +} + +input::-moz-focus-inner { + border: 0; + padding: 0; +} + +input, select, textarea { + -moz-appearance: none; + -webkit-appearance: none; + -ms-appearance: none; + appearance: none; +} + +.profileRow{ + background-color: #f5d3c8; + border: 1px solid #a5705b; +} + +.profileRadioBtn{ + /*background-color: #a5705b;*/ +} + +#totalPanelBtn{ + background-color: #a5705b; +} + +#totalPanel{ + border: 1px solid #a5705b; + background-color: #fff7f5; +} + +.serviceInfoIcon .fa-info-circle{ + color:#a5705b; +} + +.serviceCheckCol input[type="checkbox"]{ + border:1px solid #a5705b; +} + +.bookingButton{ + background-color: #a5705b!important; +} + +.availableBookingTime{ + background-color: #f5d3c8; +} + +.activeStep{ + background-color:#a5705b; +} + +.bookingName, .bookingEmail, .bookingPhone{ + background-color: #fff7f5; + border:1px solid #a5705b!important; +} + +.bookingEmailTitle, .bookingPhoneTitle{ + color:gray; +} + +.bookingTitle{ + color:#a5705b; +} + +.stepTitle{ + color:#a5705b; +} + +.stepLine { + border-top: 1px solid #9e8462; +} + +.stepCircle { + border: 1px solid #a5705b; + background-color: #f5d3c8; +} + +.panel-heading{ + color:#a5705b!important; + text-transform: uppercase!important; +} + +.serviceCol h4{ + color:#a5705b!important; +} + +.serviceHeader .serviceNameCol, +.serviceHeader .servicePriceCol{ + color:#E4AD9C!important; + font-weight:normal!important; +} + +.BookingStepContainer { + border: 1px solid #a5705b; +} + +.bookingSubmit{ + background-color: #a5705b!important; +} + +/* Basic */ + + html { + box-sizing: border-box; + } + + *, *:before, *:after { + box-sizing: inherit; + } + + body { + background: #fff; + } + + body.is-preload *, body.is-preload *:before, body.is-preload *:after { + -moz-animation: none !important; + -webkit-animation: none !important; + -ms-animation: none !important; + animation: none !important; + -moz-transition: none !important; + -webkit-transition: none !important; + -ms-transition: none !important; + transition: none !important; + } + + body, input, select, textarea { + color: #4a4a4a; + background: #fff; + font-family: "Poppins", sans-serif; + font-size: 13pt; + font-weight: 300; + line-height: 1.75em; + } + + a { + color: #51c5e8; + text-decoration: underline; + } + + a:hover { + text-decoration: none; + } + + strong, b { + color: #2a2a2a; + font-weight: 600; + } + + em, i { + font-style: italic; + } + + p { + margin: 0 0 2em 0; + } + + h1, h2, h3, h4, h5, h6 { + color: #2a2a2a; + font-weight: 600; + letter-spacing: 0.125em; + line-height: 1em; + margin: 0 0 1em 0; + } + + h1 a, h2 a, h3 a, h4 a, h5 a, h6 a { + color: inherit; + text-decoration: none; + } + + h2 { + font-size: 1.5em; + line-height: 1.75em; + } + + h3 { + font-size: 1.25em; + line-height: 1.5em; + /*color: #a5705b;*/ + color: #E4AD9C; + } + + h4 { + font-size: 1.1em; + line-height: 1.5em; + } + + h5 { + font-size: 0.9em; + line-height: 1.5em; + } + + h6 { + font-size: 0.7em; + line-height: 1.5em; + } + + sub { + font-size: 0.8em; + position: relative; + top: 0.5em; + } + + sup { + font-size: 0.8em; + position: relative; + top: -0.5em; + } + + hr { + border: 0; + border-bottom: solid 3px #eee; + margin: 3em 0; + } + + hr.major { + margin: 5em 0; + } + + blockquote { + border-left: solid 8px #eee; + font-style: italic; + margin: 0 0 2em 0; + padding: 0.5em 0 0.5em 2em; + } + + pre { + -webkit-overflow-scrolling: touch; + background: rgba(144, 144, 144, 0.05); + font-family: "Courier New", monospace; + font-size: 0.9em; + line-height: 1.5em; + margin: 0 0 2em 0; + overflow-x: auto; + padding: 1em 1.5em; + } + + code { + background: rgba(144, 144, 144, 0.05); + font-family: "Courier New", monospace; + font-size: 0.9em; + margin: 0 0.25em; + padding: 0.25em 0.65em; + } + + .align-left { + text-align: left; + } + + .align-center { + text-align: center; + } + + .align-right { + text-align: right; + } + +/* Row */ + + .row { + display: flex; + flex-wrap: wrap; + box-sizing: border-box; + align-items: stretch; + } + + .row > * { + box-sizing: border-box; + } + + .row.gtr-uniform > * > :last-child { + margin-bottom: 0; + } + + .row.aln-left { + justify-content: flex-start; + } + + .row.aln-center { + justify-content: center; + } + + .row.aln-right { + justify-content: flex-end; + } + + .row.aln-top { + align-items: flex-start; + } + + .row.aln-middle { + align-items: center; + } + + .row.aln-bottom { + align-items: flex-end; + } + + .row > .imp { + order: -1; + } + + .row > .col-1 { + width: 8.33333%; + } + + .row > .off-1 { + margin-left: 8.33333%; + } + + .row > .col-2 { + width: 16.66667%; + } + + .row > .off-2 { + margin-left: 16.66667%; + } + + .row > .col-3 { + width: 25%; + } + + .row > .off-3 { + margin-left: 25%; + } + + .row > .col-4 { + width: 33.33333%; + } + + .row > .off-4 { + margin-left: 33.33333%; + } + + .row > .col-5 { + width: 41.66667%; + } + + .row > .off-5 { + margin-left: 41.66667%; + } + + .row > .col-6 { + width: 50%; + } + + .row > .off-6 { + margin-left: 50%; + } + + .row > .col-7 { + width: 58.33333%; + } + + .row > .off-7 { + margin-left: 58.33333%; + } + + .row > .col-8 { + width: 66.66667%; + } + + .row > .off-8 { + margin-left: 66.66667%; + } + + .row > .col-9 { + width: 75%; + } + + .row > .off-9 { + margin-left: 75%; + } + + .row > .col-10 { + width: 83.33333%; + } + + .row > .off-10 { + margin-left: 83.33333%; + } + + .row > .col-11 { + width: 91.66667%; + } + + .row > .off-11 { + margin-left: 91.66667%; + } + + .row > .col-12 { + width: 100%; + } + + .row > .off-12 { + margin-left: 100%; + } + + .row.gtr-0 { + margin-top: 0; + margin-left: 0em; + } + + .row.gtr-0 > * { + padding: 0 0 0 0em; + } + + .row.gtr-0.gtr-uniform { + margin-top: 0em; + } + + .row.gtr-0.gtr-uniform > * { + padding-top: 0em; + } + + .row.gtr-25 { + margin-top: 0; + margin-left: -0.75em; + } + + .row.gtr-25 > * { + padding: 0 0 0 0.75em; + } + + .row.gtr-25.gtr-uniform { + margin-top: -0.75em; + } + + .row.gtr-25.gtr-uniform > * { + padding-top: 0.75em; + } + + .row.gtr-50 { + margin-top: 0; + margin-left: -1.5em; + } + + .row.gtr-50 > * { + padding: 0 0 0 1.5em; + } + + .row.gtr-50.gtr-uniform { + margin-top: -1.5em; + } + + .row.gtr-50.gtr-uniform > * { + padding-top: 1.5em; + } + + .row { + margin-top: 0; + margin-left: -3em; + } + + .row > * { + padding: 0 0 0 3em; + } + + .row.gtr-uniform { + margin-top: -3em; + } + + .row.gtr-uniform > * { + padding-top: 3em; + } + + .row.gtr-150 { + margin-top: 0; + margin-left: -4.5em; + } + + .row.gtr-150 > * { + padding: 0 0 0 4.5em; + } + + .row.gtr-150.gtr-uniform { + margin-top: -4.5em; + } + + .row.gtr-150.gtr-uniform > * { + padding-top: 4.5em; + } + + .row.gtr-200 { + margin-top: 0; + margin-left: -6em; + } + + .row.gtr-200 > * { + padding: 0 0 0 6em; + } + + .row.gtr-200.gtr-uniform { + margin-top: -6em; + } + + .row.gtr-200.gtr-uniform > * { + padding-top: 6em; + } + + @media screen and (max-width: 1680px) { + + .row { + display: flex; + flex-wrap: wrap; + box-sizing: border-box; + align-items: stretch; + } + + .row > * { + box-sizing: border-box; + } + + .row.gtr-uniform > * > :last-child { + margin-bottom: 0; + } + + .row.aln-left { + justify-content: flex-start; + } + + .row.aln-center { + justify-content: center; + } + + .row.aln-right { + justify-content: flex-end; + } + + .row.aln-top { + align-items: flex-start; + } + + .row.aln-middle { + align-items: center; + } + + .row.aln-bottom { + align-items: flex-end; + } + + .row > .imp-wide { + order: -1; + } + + .row > .col-1-wide { + width: 8.33333%; + } + + .row > .off-1-wide { + margin-left: 8.33333%; + } + + .row > .col-2-wide { + width: 16.66667%; + } + + .row > .off-2-wide { + margin-left: 16.66667%; + } + + .row > .col-3-wide { + width: 25%; + } + + .row > .off-3-wide { + margin-left: 25%; + } + + .row > .col-4-wide { + width: 33.33333%; + } + + .row > .off-4-wide { + margin-left: 33.33333%; + } + + .row > .col-5-wide { + width: 41.66667%; + } + + .row > .off-5-wide { + margin-left: 41.66667%; + } + + .row > .col-6-wide { + width: 50%; + } + + .row > .off-6-wide { + margin-left: 50%; + } + + .row > .col-7-wide { + width: 58.33333%; + } + + .row > .off-7-wide { + margin-left: 58.33333%; + } + + .row > .col-8-wide { + width: 66.66667%; + } + + .row > .off-8-wide { + margin-left: 66.66667%; + } + + .row > .col-9-wide { + width: 75%; + } + + .row > .off-9-wide { + margin-left: 75%; + } + + .row > .col-10-wide { + width: 83.33333%; + } + + .row > .off-10-wide { + margin-left: 83.33333%; + } + + .row > .col-11-wide { + width: 91.66667%; + } + + .row > .off-11-wide { + margin-left: 91.66667%; + } + + .row > .col-12-wide { + width: 100%; + } + + .row > .off-12-wide { + margin-left: 100%; + } + + .row.gtr-0 { + margin-top: 0; + margin-left: 0em; + } + + .row.gtr-0 > * { + padding: 0 0 0 0em; + } + + .row.gtr-0.gtr-uniform { + margin-top: 0em; + } + + .row.gtr-0.gtr-uniform > * { + padding-top: 0em; + } + + .row.gtr-25 { + margin-top: 0; + margin-left: -0.75em; + } + + .row.gtr-25 > * { + padding: 0 0 0 0.75em; + } + + .row.gtr-25.gtr-uniform { + margin-top: -0.75em; + } + + .row.gtr-25.gtr-uniform > * { + padding-top: 0.75em; + } + + .row.gtr-50 { + margin-top: 0; + margin-left: -1.5em; + } + + .row.gtr-50 > * { + padding: 0 0 0 1.5em; + } + + .row.gtr-50.gtr-uniform { + margin-top: -1.5em; + } + + .row.gtr-50.gtr-uniform > * { + padding-top: 1.5em; + } + + .row { + margin-top: 0; + margin-left: -3em; + } + + .row > * { + padding: 0 0 0 3em; + } + + .row.gtr-uniform { + margin-top: -3em; + } + + .row.gtr-uniform > * { + padding-top: 3em; + } + + .row.gtr-150 { + margin-top: 0; + margin-left: -4.5em; + } + + .row.gtr-150 > * { + padding: 0 0 0 4.5em; + } + + .row.gtr-150.gtr-uniform { + margin-top: -4.5em; + } + + .row.gtr-150.gtr-uniform > * { + padding-top: 4.5em; + } + + .row.gtr-200 { + margin-top: 0; + margin-left: -6em; + } + + .row.gtr-200 > * { + padding: 0 0 0 6em; + } + + .row.gtr-200.gtr-uniform { + margin-top: -6em; + } + + .row.gtr-200.gtr-uniform > * { + padding-top: 6em; + } + + } + + @media screen and (max-width: 1280px) { + + .row { + display: flex; + flex-wrap: wrap; + box-sizing: border-box; + align-items: stretch; + } + + .row > * { + box-sizing: border-box; + } + + .row.gtr-uniform > * > :last-child { + margin-bottom: 0; + } + + .row.aln-left { + justify-content: flex-start; + } + + .row.aln-center { + justify-content: center; + } + + .row.aln-right { + justify-content: flex-end; + } + + .row.aln-top { + align-items: flex-start; + } + + .row.aln-middle { + align-items: center; + } + + .row.aln-bottom { + align-items: flex-end; + } + + .row > .imp-normal { + order: -1; + } + + .row > .col-1-normal { + width: 8.33333%; + } + + .row > .off-1-normal { + margin-left: 8.33333%; + } + + .row > .col-2-normal { + width: 16.66667%; + } + + .row > .off-2-normal { + margin-left: 16.66667%; + } + + .row > .col-3-normal { + width: 25%; + } + + .row > .off-3-normal { + margin-left: 25%; + } + + .row > .col-4-normal { + width: 33.33333%; + } + + .row > .off-4-normal { + margin-left: 33.33333%; + } + + .row > .col-5-normal { + width: 41.66667%; + } + + .row > .off-5-normal { + margin-left: 41.66667%; + } + + .row > .col-6-normal { + width: 50%; + } + + .row > .off-6-normal { + margin-left: 50%; + } + + .row > .col-7-normal { + width: 58.33333%; + } + + .row > .off-7-normal { + margin-left: 58.33333%; + } + + .row > .col-8-normal { + width: 66.66667%; + } + + .row > .off-8-normal { + margin-left: 66.66667%; + } + + .row > .col-9-normal { + width: 75%; + } + + .row > .off-9-normal { + margin-left: 75%; + } + + .row > .col-10-normal { + width: 83.33333%; + } + + .row > .off-10-normal { + margin-left: 83.33333%; + } + + .row > .col-11-normal { + width: 91.66667%; + } + + .row > .off-11-normal { + margin-left: 91.66667%; + } + + .row > .col-12-normal { + width: 100%; + } + + .row > .off-12-normal { + margin-left: 100%; + } + + .row.gtr-0 { + margin-top: 0; + margin-left: 0em; + } + + .row.gtr-0 > * { + padding: 0 0 0 0em; + } + + .row.gtr-0.gtr-uniform { + margin-top: 0em; + } + + .row.gtr-0.gtr-uniform > * { + padding-top: 0em; + } + + .row.gtr-25 { + margin-top: 0; + margin-left: -0.5em; + } + + .row.gtr-25 > * { + padding: 0 0 0 0.5em; + } + + .row.gtr-25.gtr-uniform { + margin-top: -0.5em; + } + + .row.gtr-25.gtr-uniform > * { + padding-top: 0.5em; + } + + .row.gtr-50 { + margin-top: 0; + margin-left: -1em; + } + + .row.gtr-50 > * { + padding: 0 0 0 1em; + } + + .row.gtr-50.gtr-uniform { + margin-top: -1em; + } + + .row.gtr-50.gtr-uniform > * { + padding-top: 1em; + } + + .row { + margin-top: 0; + margin-left: -2em; + } + + .row > * { + padding: 0 0 0 2em; + } + + .row.gtr-uniform { + margin-top: -2em; + } + + .row.gtr-uniform > * { + padding-top: 2em; + } + + .row.gtr-150 { + margin-top: 0; + margin-left: -3em; + } + + .row.gtr-150 > * { + padding: 0 0 0 3em; + } + + .row.gtr-150.gtr-uniform { + margin-top: -3em; + } + + .row.gtr-150.gtr-uniform > * { + padding-top: 3em; + } + + .row.gtr-200 { + margin-top: 0; + margin-left: -4em; + } + + .row.gtr-200 > * { + padding: 0 0 0 4em; + } + + .row.gtr-200.gtr-uniform { + margin-top: -4em; + } + + .row.gtr-200.gtr-uniform > * { + padding-top: 4em; + } + + } + + @media screen and (max-width: 980px) { + + .row { + display: flex; + flex-wrap: wrap; + box-sizing: border-box; + align-items: stretch; + } + + .row > * { + box-sizing: border-box; + } + + .row.gtr-uniform > * > :last-child { + margin-bottom: 0; + } + + .row.aln-left { + justify-content: flex-start; + } + + .row.aln-center { + justify-content: center; + } + + .row.aln-right { + justify-content: flex-end; + } + + .row.aln-top { + align-items: flex-start; + } + + .row.aln-middle { + align-items: center; + } + + .row.aln-bottom { + align-items: flex-end; + } + + .row > .imp-narrow { + order: -1; + } + + .row > .col-1-narrow { + width: 8.33333%; + } + + .row > .off-1-narrow { + margin-left: 8.33333%; + } + + .row > .col-2-narrow { + width: 16.66667%; + } + + .row > .off-2-narrow { + margin-left: 16.66667%; + } + + .row > .col-3-narrow { + width: 25%; + } + + .row > .off-3-narrow { + margin-left: 25%; + } + + .row > .col-4-narrow { + width: 33.33333%; + } + + .row > .off-4-narrow { + margin-left: 33.33333%; + } + + .row > .col-5-narrow { + width: 41.66667%; + } + + .row > .off-5-narrow { + margin-left: 41.66667%; + } + + .row > .col-6-narrow { + width: 50%; + } + + .row > .off-6-narrow { + margin-left: 50%; + } + + .row > .col-7-narrow { + width: 58.33333%; + } + + .row > .off-7-narrow { + margin-left: 58.33333%; + } + + .row > .col-8-narrow { + width: 66.66667%; + } + + .row > .off-8-narrow { + margin-left: 66.66667%; + } + + .row > .col-9-narrow { + width: 75%; + } + + .row > .off-9-narrow { + margin-left: 75%; + } + + .row > .col-10-narrow { + width: 83.33333%; + } + + .row > .off-10-narrow { + margin-left: 83.33333%; + } + + .row > .col-11-narrow { + width: 91.66667%; + } + + .row > .off-11-narrow { + margin-left: 91.66667%; + } + + .row > .col-12-narrow { + width: 100%; + } + + .row > .off-12-narrow { + margin-left: 100%; + } + + .row.gtr-0 { + margin-top: 0; + margin-left: 0em; + } + + .row.gtr-0 > * { + padding: 0 0 0 0em; + } + + .row.gtr-0.gtr-uniform { + margin-top: 0em; + } + + .row.gtr-0.gtr-uniform > * { + padding-top: 0em; + } + + .row.gtr-25 { + margin-top: 0; + margin-left: -0.5em; + } + + .row.gtr-25 > * { + padding: 0 0 0 0.5em; + } + + .row.gtr-25.gtr-uniform { + margin-top: -0.5em; + } + + .row.gtr-25.gtr-uniform > * { + padding-top: 0.5em; + } + + .row.gtr-50 { + margin-top: 0; + margin-left: -1em; + } + + .row.gtr-50 > * { + padding: 0 0 0 1em; + } + + .row.gtr-50.gtr-uniform { + margin-top: -1em; + } + + .row.gtr-50.gtr-uniform > * { + padding-top: 1em; + } + + .row { + margin-top: 0; + margin-left: -2em; + } + + .row > * { + padding: 0 0 0 2em; + } + + .row.gtr-uniform { + margin-top: -2em; + } + + .row.gtr-uniform > * { + padding-top: 2em; + } + + .row.gtr-150 { + margin-top: 0; + margin-left: -3em; + } + + .row.gtr-150 > * { + padding: 0 0 0 3em; + } + + .row.gtr-150.gtr-uniform { + margin-top: -3em; + } + + .row.gtr-150.gtr-uniform > * { + padding-top: 3em; + } + + .row.gtr-200 { + margin-top: 0; + margin-left: -4em; + } + + .row.gtr-200 > * { + padding: 0 0 0 4em; + } + + .row.gtr-200.gtr-uniform { + margin-top: -4em; + } + + .row.gtr-200.gtr-uniform > * { + padding-top: 4em; + } + + } + + @media screen and (max-width: 736px) { + + .row { + display: flex; + flex-wrap: wrap; + box-sizing: border-box; + align-items: stretch; + } + + .row > * { + box-sizing: border-box; + } + + .row.gtr-uniform > * > :last-child { + margin-bottom: 0; + } + + .row.aln-left { + justify-content: flex-start; + } + + .row.aln-center { + justify-content: center; + } + + .row.aln-right { + justify-content: flex-end; + } + + .row.aln-top { + align-items: flex-start; + } + + .row.aln-middle { + align-items: center; + } + + .row.aln-bottom { + align-items: flex-end; + } + + .row > .imp-mobile { + order: -1; + } + + .row > .col-1-mobile { + width: 8.33333%; + } + + .row > .off-1-mobile { + margin-left: 8.33333%; + } + + .row > .col-2-mobile { + width: 16.66667%; + } + + .row > .off-2-mobile { + margin-left: 16.66667%; + } + + .row > .col-3-mobile { + width: 25%; + } + + .row > .off-3-mobile { + margin-left: 25%; + } + + .row > .col-4-mobile { + width: 33.33333%; + } + + .row > .off-4-mobile { + margin-left: 33.33333%; + } + + .row > .col-5-mobile { + width: 41.66667%; + } + + .row > .off-5-mobile { + margin-left: 41.66667%; + } + + .row > .col-6-mobile { + width: 50%; + } + + .row > .off-6-mobile { + margin-left: 50%; + } + + .row > .col-7-mobile { + width: 58.33333%; + } + + .row > .off-7-mobile { + margin-left: 58.33333%; + } + + .row > .col-8-mobile { + width: 66.66667%; + } + + .row > .off-8-mobile { + margin-left: 66.66667%; + } + + .row > .col-9-mobile { + width: 75%; + } + + .row > .off-9-mobile { + margin-left: 75%; + } + + .row > .col-10-mobile { + width: 83.33333%; + } + + .row > .off-10-mobile { + margin-left: 83.33333%; + } + + .row > .col-11-mobile { + width: 91.66667%; + } + + .row > .off-11-mobile { + margin-left: 91.66667%; + } + + .row > .col-12-mobile { + width: 100%; + } + + .row > .off-12-mobile { + margin-left: 100%; + } + + .row.gtr-0 { + margin-top: 0; + margin-left: 0em; + } + + .row.gtr-0 > * { + padding: 0 0 0 0em; + } + + .row.gtr-0.gtr-uniform { + margin-top: 0em; + } + + .row.gtr-0.gtr-uniform > * { + padding-top: 0em; + } + + .row.gtr-25 { + margin-top: 0; + margin-left: -0.5em; + } + + .row.gtr-25 > * { + padding: 0 0 0 0.5em; + } + + .row.gtr-25.gtr-uniform { + margin-top: -0.5em; + } + + .row.gtr-25.gtr-uniform > * { + padding-top: 0.5em; + } + + .row.gtr-50 { + margin-top: 0; + margin-left: -1em; + } + + .row.gtr-50 > * { + padding: 0 0 0 1em; + } + + .row.gtr-50.gtr-uniform { + margin-top: -1em; + } + + .row.gtr-50.gtr-uniform > * { + padding-top: 1em; + } + + .row { + margin-top: 0; + margin-left: -2em; + } + + .row > * { + padding: 0 0 0 2em; + } + + .row.gtr-uniform { + margin-top: -2em; + } + + .row.gtr-uniform > * { + padding-top: 2em; + } + + .row.gtr-150 { + margin-top: 0; + margin-left: -3em; + } + + .row.gtr-150 > * { + padding: 0 0 0 3em; + } + + .row.gtr-150.gtr-uniform { + margin-top: -3em; + } + + .row.gtr-150.gtr-uniform > * { + padding-top: 3em; + } + + .row.gtr-200 { + margin-top: 0; + margin-left: -4em; + } + + .row.gtr-200 > * { + padding: 0 0 0 4em; + } + + .row.gtr-200.gtr-uniform { + margin-top: -4em; + } + + .row.gtr-200.gtr-uniform > * { + padding-top: 4em; + } + + } + + @media screen and (max-width: 480px) { + + .row { + display: flex; + flex-wrap: wrap; + box-sizing: border-box; + align-items: stretch; + } + + .row > * { + box-sizing: border-box; + } + + .row.gtr-uniform > * > :last-child { + margin-bottom: 0; + } + + .row.aln-left { + justify-content: flex-start; + } + + .row.aln-center { + justify-content: center; + } + + .row.aln-right { + justify-content: flex-end; + } + + .row.aln-top { + align-items: flex-start; + } + + .row.aln-middle { + align-items: center; + } + + .row.aln-bottom { + align-items: flex-end; + } + + .row > .imp-mobilep { + order: -1; + } + + .row > .col-1-mobilep { + width: 8.33333%; + } + + .row > .off-1-mobilep { + margin-left: 8.33333%; + } + + .row > .col-2-mobilep { + width: 16.66667%; + } + + .row > .off-2-mobilep { + margin-left: 16.66667%; + } + + .row > .col-3-mobilep { + width: 25%; + } + + .row > .off-3-mobilep { + margin-left: 25%; + } + + .row > .col-4-mobilep { + width: 33.33333%; + } + + .row > .off-4-mobilep { + margin-left: 33.33333%; + } + + .row > .col-5-mobilep { + width: 41.66667%; + } + + .row > .off-5-mobilep { + margin-left: 41.66667%; + } + + .row > .col-6-mobilep { + width: 50%; + } + + .row > .off-6-mobilep { + margin-left: 50%; + } + + .row > .col-7-mobilep { + width: 58.33333%; + } + + .row > .off-7-mobilep { + margin-left: 58.33333%; + } + + .row > .col-8-mobilep { + width: 66.66667%; + } + + .row > .off-8-mobilep { + margin-left: 66.66667%; + } + + .row > .col-9-mobilep { + width: 75%; + } + + .row > .off-9-mobilep { + margin-left: 75%; + } + + .row > .col-10-mobilep { + width: 83.33333%; + } + + .row > .off-10-mobilep { + margin-left: 83.33333%; + } + + .row > .col-11-mobilep { + width: 91.66667%; + } + + .row > .off-11-mobilep { + margin-left: 91.66667%; + } + + .row > .col-12-mobilep { + width: 100%; + } + + .row > .off-12-mobilep { + margin-left: 100%; + } + + .row.gtr-0 { + margin-top: 0; + margin-left: 0em; + } + + .row.gtr-0 > * { + padding: 0 0 0 0em; + } + + .row.gtr-0.gtr-uniform { + margin-top: 0em; + } + + .row.gtr-0.gtr-uniform > * { + padding-top: 0em; + } + + .row.gtr-25 { + margin-top: 0; + margin-left: -0.5em; + } + + .row.gtr-25 > * { + padding: 0 0 0 0.5em; + } + + .row.gtr-25.gtr-uniform { + margin-top: -0.5em; + } + + .row.gtr-25.gtr-uniform > * { + padding-top: 0.5em; + } + + .row.gtr-50 { + margin-top: 0; + margin-left: -1em; + } + + .row.gtr-50 > * { + padding: 0 0 0 1em; + } + + .row.gtr-50.gtr-uniform { + margin-top: -1em; + } + + .row.gtr-50.gtr-uniform > * { + padding-top: 1em; + } + + .row { + margin-top: 0; + margin-left: -2em; + } + + .row > * { + padding: 0 0 0 2em; + } + + .row.gtr-uniform { + margin-top: -2em; + } + + .row.gtr-uniform > * { + padding-top: 2em; + } + + .row.gtr-150 { + margin-top: 0; + margin-left: -3em; + } + + .row.gtr-150 > * { + padding: 0 0 0 3em; + } + + .row.gtr-150.gtr-uniform { + margin-top: -3em; + } + + .row.gtr-150.gtr-uniform > * { + padding-top: 3em; + } + + .row.gtr-200 { + margin-top: 0; + margin-left: -4em; + } + + .row.gtr-200 > * { + padding: 0 0 0 4em; + } + + .row.gtr-200.gtr-uniform { + margin-top: -4em; + } + + .row.gtr-200.gtr-uniform > * { + padding-top: 4em; + } + + } + +/* Container */ + + .container { + margin: 0 auto; + width: 1200px; + } + + .container.medium { + width: 900px; + } + + @media screen and (max-width: 1680px) { + + .container { + width: 1080px; + } + + .container.medium { + width: 810px; + } + + } + + @media screen and (max-width: 1280px) { + + .container { + width: 960px; + } + + .container.medium { + width: 720px; + } + + } + + @media screen and (max-width: 980px) { + + .container { + width: 90%; + } + + .container.medium { + width: 90%; + } + + } + + @media screen and (max-width: 736px) { + + .container { + width: 100%; + } + + .container.medium { + width: 100%; + } + + } + +/* Section/Article */ + + section.special, article.special { + text-align: center; + } + + header.major { + text-align: center; + position: relative; + } + + header.major:after { + background: #888; + content: ''; + display: inline-block; + height: 3px; + margin: 0 0 2em 0; + width: 6em; + } + + header.major.alt { + text-align: center; + margin-bottom: 2em; + } + + header p { + letter-spacing: 0.125em; + margin: 0 0 1.5em 0; + position: relative; + text-transform: uppercase; + } + + header h2 + p { + font-size: 1em; + margin-top: -0.85em; + line-height: 1.75em; + } + + header h3 + p { + font-size: 0.9em; + margin-top: -0.75em; + line-height: 1.75em; + } + + header h4 + p, + header h5 + p, + header h6 + p { + font-size: 0.8em; + margin-top: -0.75em; + line-height: 1.75em; + } + +/* Form */ + + form { + margin: 0 0 2em 0; + } + + label { + color: #2a2a2a; + display: block; + font-size: 0.9em; + font-weight: 600; + margin: 0 0 1em 0; + } + + input[type="text"], + input[type="password"], + input[type="email"], + select, + textarea { + -moz-appearance: none; + -webkit-appearance: none; + -ms-appearance: none; + appearance: none; + border: none; + border: solid 2px #eee; + border-radius: 0; + color: inherit; + display: block; + outline: 0; + padding: 0 1em; + text-decoration: none; + width: 100%; + } + + input[type="text"]:invalid, + input[type="password"]:invalid, + input[type="email"]:invalid, + select:invalid, + textarea:invalid { + box-shadow: none; + } + + input[type="text"]:focus, + input[type="password"]:focus, + input[type="email"]:focus, + select:focus, + textarea:focus { + border-color: #51c5e8; + } + + select { + background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='40' height='40' preserveAspectRatio='none' viewBox='0 0 40 40'%3E%3Cpath d='M9.4,12.3l10.4,10.4l10.4-10.4c0.2-0.2,0.5-0.4,0.9-0.4c0.3,0,0.6,0.1,0.9,0.4l3.3,3.3c0.2,0.2,0.4,0.5,0.4,0.9 c0,0.4-0.1,0.6-0.4,0.9L20.7,31.9c-0.2,0.2-0.5,0.4-0.9,0.4c-0.3,0-0.6-0.1-0.9-0.4L4.3,17.3c-0.2-0.2-0.4-0.5-0.4-0.9 c0-0.4,0.1-0.6,0.4-0.9l3.3-3.3c0.2-0.2,0.5-0.4,0.9-0.4S9.1,12.1,9.4,12.3z' fill='%23eee' /%3E%3C/svg%3E"); + background-size: 1.25em; + background-repeat: no-repeat; + background-position: calc(100% - 1em) center; + height: 3.5em; + padding-right: 3.5em; + text-overflow: ellipsis; + } + + select:focus::-ms-value { + background-color: transparent; + } + + select::-ms-expand { + display: none; + } + + select option { + color: #2a2a2a; + background: #fff; + } + + input[type="text"], + input[type="password"], + input[type="email"], + select { + height: 3.5em; + } + + textarea { + padding: 0.75em 1em; + } + + input[type="checkbox"], + input[type="radio"] { + -moz-appearance: none; + -webkit-appearance: none; + -ms-appearance: none; + appearance: none; + display: block; + float: left; + margin-right: -2em; + opacity: 0; + width: 1em; + z-index: -1; + } + + input[type="checkbox"] + label, + input[type="radio"] + label { + text-decoration: none; + color: #4a4a4a; + cursor: pointer; + display: inline-block; + font-size: 1em; + font-weight: 300; + padding-left: 2.85em; + padding-right: 0.75em; + position: relative; + } + + input[type="checkbox"] + label:before, + input[type="radio"] + label:before { + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + display: inline-block; + font-style: normal; + font-variant: normal; + text-rendering: auto; + line-height: 1; + text-transform: none !important; + font-family: 'Font Awesome 5 Free'; + font-weight: 900; + } + + input[type="checkbox"] + label:before, + input[type="radio"] + label:before { + background: rgba(144, 144, 144, 0.05); + border: solid 2px #eee; + content: ''; + display: inline-block; + font-size: 0.8em; + height: 2.1em; + left: 0; + line-height: 1.925em; + position: absolute; + text-align: center; + top: 0; + width: 2.1em; + } + + input[type="checkbox"]:checked + label:before, + input[type="radio"]:checked + label:before { + background: #1d2726; + border-color: #1d2726; + color: #ffffff; + content: '\f00c'; + } + + input[type="checkbox"]:focus + label:before, + input[type="radio"]:focus + label:before { + border-color: #51c5e8; + } + + input[type="radio"] + label:before { + border-radius: 100%; + } + + ::-webkit-input-placeholder { + color: #bbb !important; + opacity: 1.0; + } + + :-moz-placeholder { + color: #bbb !important; + opacity: 1.0; + } + + ::-moz-placeholder { + color: #bbb !important; + opacity: 1.0; + } + + :-ms-input-placeholder { + color: #bbb !important; + opacity: 1.0; + } + +/* Box */ + + .box { + border: solid 2px #eee; + margin-bottom: 2em; + padding: 1.5em; + } + + .box > :last-child, + .box > :last-child > :last-child, + .box > :last-child > :last-child > :last-child { + margin-bottom: 0; + } + + .box.alt { + border: 0; + padding: 0; + } + +/* Icon */ + + .icon { + text-decoration: none; + border-bottom: none; + position: relative; + } + + .icon:before { + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + display: inline-block; + font-style: normal; + font-variant: normal; + text-rendering: auto; + line-height: 1; + text-transform: none !important; + font-family: 'Font Awesome 5 Free'; + font-weight: 400; + } + + .icon.solid:before { + font-weight: 900; + } + + .icon.brands:before { + font-family: 'Font Awesome 5 Brands'; + } + + .icon > .label { + display: none; + } + +/* Image */ + + .image { + border: 0; + display: inline-block; + position: relative; + } + + .image:before { + background: url("images/overlay.png"); + content: ''; + display: block; + height: 100%; + left: 0; + position: absolute; + top: 0; + width: 100%; + } + + .image img { + display: block; + } + + .image.left { + float: left; + margin: 0 1.5em 1em 0; + top: 0.25em; + } + + .image.right { + float: right; + margin: 0 0 1em 1.5em; + top: 0.25em; + } + + .image.fit { + display: block; + margin: 0 0 3em 0; + width: 100%; + } + + .image.fit img { + display: block; + width: 100%; + } + +/* List */ + + ol { + list-style: decimal; + margin: 0 0 2em 0; + padding-left: 1.25em; + } + + ol li { + padding-left: 0.25em; + } + + ul { + list-style: disc; + margin: 0 0 2em 0; + padding-left: 1em; + } + + ul li { + padding-left: 0.5em; + } + + ul.alt { + list-style: none; + padding-left: 0; + } + + ul.alt li { + border-top: solid 1px #eee; + padding: 0.5em 0; + } + + ul.alt li:first-child { + border-top: 0; + padding-top: 0; + } + + dl { + margin: 0 0 2em 0; + } + +/* Actions */ + + ul.actions { + display: -moz-flex; + display: -webkit-flex; + display: -ms-flex; + display: flex; + cursor: default; + list-style: none; + margin-left: -1em; + padding-left: 0; + } + + ul.actions li { + padding: 0 0 0 1em; + vertical-align: middle; + } + + ul.actions.special { + -moz-justify-content: center; + -webkit-justify-content: center; + -ms-justify-content: center; + justify-content: center; + width: 100%; + margin-left: 0; + } + + ul.actions.special li:first-child { + padding-left: 0; + } + + ul.actions.stacked { + -moz-flex-direction: column; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + margin-left: 0; + } + + ul.actions.stacked li { + padding: 1.3em 0 0 0; + } + + ul.actions.stacked li:first-child { + padding-top: 0; + } + + ul.actions.fit { + width: calc(100% + 1em); + } + + ul.actions.fit li { + -moz-flex-grow: 1; + -webkit-flex-grow: 1; + -ms-flex-grow: 1; + flex-grow: 1; + -moz-flex-shrink: 1; + -webkit-flex-shrink: 1; + -ms-flex-shrink: 1; + flex-shrink: 1; + width: 100%; + } + + ul.actions.fit li > * { + width: 100%; + } + + ul.actions.fit.stacked { + width: 100%; + } + + @media screen and (max-width: 480px) { + + ul.actions:not(.fixed) { + -moz-flex-direction: column; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + margin-left: 0; + width: 100% !important; + } + + ul.actions:not(.fixed) li { + -moz-flex-grow: 1; + -webkit-flex-grow: 1; + -ms-flex-grow: 1; + flex-grow: 1; + -moz-flex-shrink: 1; + -webkit-flex-shrink: 1; + -ms-flex-shrink: 1; + flex-shrink: 1; + padding: 1em 0 0 0; + text-align: center; + width: 100%; + } + + ul.actions:not(.fixed) li > * { + width: 100%; + } + + ul.actions:not(.fixed) li:first-child { + padding-top: 0; + } + + ul.actions:not(.fixed) li input[type="submit"], + ul.actions:not(.fixed) li input[type="reset"], + ul.actions:not(.fixed) li input[type="button"], + ul.actions:not(.fixed) li button, + ul.actions:not(.fixed) li .button { + width: 100%; + } + + ul.actions:not(.fixed) li input[type="submit"].icon:before, + ul.actions:not(.fixed) li input[type="reset"].icon:before, + ul.actions:not(.fixed) li input[type="button"].icon:before, + ul.actions:not(.fixed) li button.icon:before, + ul.actions:not(.fixed) li .button.icon:before { + margin-left: -0.5em; + } + + } + +/* Icons */ + + ul.icons { + cursor: default; + list-style: none; + padding-left: 0; + } + + ul.icons li { + display: inline-block; + padding: 0 1em 0 0; + } + + ul.icons li:last-child { + padding-right: 0; + } + + ul.icons li .icon:before { + font-size: 1.5em; + } + +/* Table */ + + .table-wrapper { + -webkit-overflow-scrolling: touch; + overflow-x: auto; + } + + table { + margin: 0 0 2em 0; + width: 100%; + } + + table tbody tr { + border: solid 1px #eee; + border-left: 0; + border-right: 0; + } + + table tbody tr:nth-child(2n + 1) { + background-color: rgba(144, 144, 144, 0.05); + } + + table td { + padding: 0.75em 0.75em; + } + + table th { + color: #2a2a2a; + font-size: 0.9em; + font-weight: 600; + padding: 0 0.75em 0.75em 0.75em; + text-align: left; + } + + table thead { + border-bottom: solid 2px #eee; + } + + table tfoot { + border-top: solid 2px #eee; + } + + table.alt { + border-collapse: separate; + } + + table.alt tbody tr td { + border: solid 1px #eee; + border-left-width: 0; + border-top-width: 0; + } + + table.alt tbody tr td:first-child { + border-left-width: 1px; + } + + table.alt tbody tr:first-child td { + border-top-width: 1px; + } + + table.alt thead { + border-bottom: 0; + } + + table.alt tfoot { + border-top: 0; + } + +/* Button */ + + input[type="submit"], + input[type="reset"], + input[type="button"], + button, + .button { + -moz-appearance: none; + -webkit-appearance: none; + -ms-appearance: none; + appearance: none; + -moz-transition: background-color 0.2s ease-in-out, color 0.2s ease-in-out; + -webkit-transition: background-color 0.2s ease-in-out, color 0.2s ease-in-out; + -ms-transition: background-color 0.2s ease-in-out, color 0.2s ease-in-out; + transition: background-color 0.2s ease-in-out, color 0.2s ease-in-out; + background-color: #1d2726; + border-radius: 0; + border: 0; + color: #ffffff !important; + cursor: pointer; + display: inline-block; + font-size: 0.9em; + font-weight: 600; + height: 4em; + letter-spacing: 0.125em; + line-height: 4em; + overflow: hidden; + padding: 0 2.75em; + text-align: center; + text-decoration: none; + text-overflow: ellipsis; + text-transform: uppercase; + white-space: nowrap; + } + + input[type="submit"]:hover, + input[type="reset"]:hover, + input[type="button"]:hover, + button:hover, + .button:hover { + background-color: #283634; + } + + input[type="submit"]:active, + input[type="reset"]:active, + input[type="button"]:active, + button:active, + .button:active { + background-color: #121818; + } + + input[type="submit"].icon, + input[type="reset"].icon, + input[type="button"].icon, + button.icon, + .button.icon { + padding-left: 2.35em; + } + + input[type="submit"].icon:before, + input[type="reset"].icon:before, + input[type="button"].icon:before, + button.icon:before, + .button.icon:before { + margin-right: 0.5em; + } + + input[type="submit"].fit, + input[type="reset"].fit, + input[type="button"].fit, + button.fit, + .button.fit { + width: 100%; + } + + input[type="submit"].small, + input[type="reset"].small, + input[type="button"].small, + button.small, + .button.small { + font-size: 0.8em; + height: 3.5em; + line-height: 3.5em; + padding: 0 2em; + } + + input[type="submit"].large, + input[type="reset"].large, + input[type="button"].large, + button.large, + .button.large { + font-size: 1.25em; + height: 3.15em; + line-height: 3.15em; + } + + input[type="submit"].alt, + input[type="reset"].alt, + input[type="button"].alt, + button.alt, + .button.alt { + background-color: transparent; + box-shadow: inset 0 0 0 2px #eee; + color: #2a2a2a !important; + } + + input[type="submit"].alt:hover, + input[type="reset"].alt:hover, + input[type="button"].alt:hover, + button.alt:hover, + .button.alt:hover { + background-color: rgba(144, 144, 144, 0.05); + } + + input[type="submit"].alt:active, + input[type="reset"].alt:active, + input[type="button"].alt:active, + button.alt:active, + .button.alt:active { + background-color: rgba(144, 144, 144, 0.1); + } + + input[type="submit"].alt.icon:before, + input[type="reset"].alt.icon:before, + input[type="button"].alt.icon:before, + button.alt.icon:before, + .button.alt.icon:before { + color: #bbb; + } + + input[type="submit"].primary, + input[type="reset"].primary, + input[type="button"].primary, + button.primary, + .button.primary { + background-color: #51c5e8; + color: #ffffff !important; + } + + input[type="submit"].primary:hover, + input[type="reset"].primary:hover, + input[type="button"].primary:hover, + button.primary:hover, + .button.primary:hover { + background-color: #68cdeb; + } + + input[type="submit"].primary:active, + input[type="reset"].primary:active, + input[type="button"].primary:active, + button.primary:active, + .button.primary:active { + background-color: #3abde5; + } + + input[type="submit"].disabled, input[type="submit"]:disabled, + input[type="reset"].disabled, + input[type="reset"]:disabled, + input[type="button"].disabled, + input[type="button"]:disabled, + button.disabled, + button:disabled, + .button.disabled, + .button:disabled { + background-color: #4a4a4a !important; + box-shadow: inset 0 -0.15em 0 0 rgba(0, 0, 0, 0.15); + color: #fff !important; + cursor: default; + opacity: 0.25; + } + +/* Feature */ + + .feature { + margin: 0 0 2em 0; + padding: 2em 0 2em 9em; + position: relative; + } + + .feature i { + border-radius: 100%; + border: solid 3px #eee; + color: #51c5e8; + display: block; + height: 7em; + left: 0; + line-height: 7.25em; + margin-top: -0.5em; + position: absolute; + text-align: center; + top: 2em; + width: 7em; + } + + .feature i:before { + font-size: 40px; + } + + .feature h3 { + margin-bottom: 0.5em; + } + + .feature p { + margin-bottom: 0; + } + +/* Image Feature */ + + .image-feature { + position: relative; + text-align: center; + margin: 0 0.5em 2em 0.5em; + } + + .image-feature > a { + display: block; + } + + .image-feature header { + background: #fff; + left: 0; + padding: 1.5em 0; + position: absolute; + top: 0; + width: 100%; + z-index: 1; + } + + .image-feature header:before { + -moz-transform: rotate(45deg); + -webkit-transform: rotate(45deg); + -ms-transform: rotate(45deg); + transform: rotate(45deg); + background: #fff; + bottom: -0.5em; + content: ''; + display: block; + height: 1em; + left: 50%; + margin-left: -0.5em; + position: absolute; + width: 1em; + } + + .image-feature header h3 { + font-size: 1em; + margin: 0; + } + + .image-feature .image { + margin: 0; + } + + .image-feature p { + margin: 0; + } + + .image-feature footer { + background: #1d2726; + background: rgba(29, 39, 38, 0.9); + bottom: 0; + color: #fff; + left: 0; + padding: 1.5em; + position: absolute; + width: 100%; + z-index: 1; + } + + .image-feature footer input[type="submit"].alt, + .image-feature footer input[type="reset"].alt, + .image-feature footer input[type="button"].alt, + .image-feature footer button.alt, + .image-feature footer .button.alt { + box-shadow: inset 0 0 0 2px rgba(255, 255, 255, 0.25); + color: #fff !important; + } + +/* Wrapper */ + + .wrapper { + padding: 4em 0 4em 0; + } + + .wrapper.style1 { + background: #fff; + color: #888; + } + + .wrapper.style1 h2, .wrapper.style1 h3, .wrapper.style1 strong { + color: #a5705b; + } + + .wrapper.style1 header.major:after { + background: rgba(0, 0, 0, 0.25); + } + + .wrapper.style2 { + background: #ffeee9; + } + + .wrapper.style3 { + background: #f4f4f4; + } + + .wrapper.style4 { + background: #fafafa; + } + +/* Header */ + + +.logo-kep{ + width: 70px; + line-height: 5em; + vertical-align: middle; + margin-left: 5em; +} + +.booktime{ + background-color: #E4AD9C; + color: #000; + margin-left:2em; + padding-left: 10px; + padding-right: 10px; +} + + #page-wrapper { + padding-top: 3em; + } + + #header { + background: #fff; + color: #000; + cursor: default; + height: 5em; + left: 0; + line-height: 5em; + position: fixed; + top: 0; + width: 100%; + z-index: 10000; + } + + #header h1 { + color: #E4AD9C; + height: inherit; + left: 10.5em; + line-height: inherit; + margin: 0; + padding: 0; + position: absolute; + top: 0; + } + + #header h1 a { + font-size: 1em; + } + + #header h1 a:before { + color: #51c5e8; + margin-right: 0.35em; + } + + #header nav { + font-weight: 600; + height: inherit; + letter-spacing: 0.125em; + line-height: inherit; + position: absolute; + right: 1.5em; + text-transform: uppercase; + top: 0; + vertical-align: middle; + } + + #header nav > ul { + list-style: none; + line-height: 4.5em; + margin: 0; + padding-left: 0; + vertical-align: middle; + } + + #header nav > ul > li { + display: inline-block; + margin-left: 2em; + /*padding-left: 0;*/ + } + + #header nav > ul > li.booktime { + margin-right: 2em; + } + + #header nav > ul > li.socialmedia-menu { + color: #fff; + font-size: 30px; + margin: auto 0 auto 0; +} + + + #header nav > ul > li.language { + padding-left: 0; + margin: 0; + font-size: 12px; + color: #888; + -moz-transition: color 0.2s ease-in-out; + -webkit-transition: color 0.2s ease-in-out; + -ms-transition: color 0.2s ease-in-out; + transition: color 0.2s ease-in-out; + } + #header nav > ul > li.language:hover { + color: #fff; + } + + #header nav > ul > li a { + -moz-transition: color 0.2s ease-in-out; + -webkit-transition: color 0.2s ease-in-out; + -ms-transition: color 0.2s ease-in-out; + transition: color 0.2s ease-in-out; + color: #E4AD9C; + display: inline-block; + text-decoration: none; + font-size: 0.8em; + } + + #header nav > ul > li a:before { + margin-right: 0.5em; + /*opacity: 0.5;*/ + } + + #header nav > ul > li a:hover { + color: #a5705b; + } + #header nav > ul > li.booktime a { + color: #fff; + } + + #header nav > ul > li.booktime a:hover { + color: #a5705b; + } + + #header nav > ul > li.active > a { + color: #fff; + } + + #header nav > ul > li:first-child { + margin-left: 0; + } + + #header nav > ul > li input[type="submit"], + #header nav > ul > li input[type="reset"], + #header nav > ul > li input[type="button"], + #header nav > ul > li button, + #header nav > ul > li .button { + font-size: 1em; + height: 2.25em; + line-height: 2.25em; + margin-bottom: 0; + padding: 0 1em; + position: relative; + top: -0.125em; + vertical-align: middle; + } + + #header nav > ul > li > ul { + display: none; + } + + #header .container { + position: relative; + } + + #header .container h1 { + left: 0; + } + + #header .container nav { + right: 0; + } + + .dropotron { + background: #1d2726; + color: #fff; + font-weight: 600; + letter-spacing: 0.125em; + list-style: none; + margin-top: -1em; + min-width: 14em; + padding: 1.25em 0; + text-transform: uppercase; + } + + .dropotron.level-0 { + font-size: 0.8em; + margin-top: 1em; + } + + .dropotron.level-0:before { + -moz-transform: rotate(45deg); + -webkit-transform: rotate(45deg); + -ms-transform: rotate(45deg); + transform: rotate(45deg); + background: #1d2726; + content: ''; + display: block; + height: 1em; + position: absolute; + right: 1.5em; + top: -0.5em; + width: 1em; + } + + .dropotron li > a { + -moz-transition: color 0.2s ease-in-out; + -webkit-transition: color 0.2s ease-in-out; + -ms-transition: color 0.2s ease-in-out; + transition: color 0.2s ease-in-out; + color: #ccc; + display: block; + padding: 0.125em 1.25em; + text-decoration: none; + } + + .dropotron li > a:hover { + color: #fff; + } + + .dropotron li.active > a { + color: #fff; + } + +/* Banner */ + + #banner { + background-color: #fff; + /*background-attachment: scroll, fixed; + background-image: url("images/overlay.png"), url("../../images/banner.jpg"); + background-position: top left, center center; + background-repeat: no-repeat; + background-size: cover; + background-size: auto, cover;*/ + color: #fff; + padding: 0em 0; + position: relative; + text-align: center; + } + + #banner img{ + width: 100%; + } + + #banner:after { + -moz-transition: opacity 1s ease-in-out; + -webkit-transition: opacity 1s ease-in-out; + -ms-transition: opacity 1s ease-in-out; + transition: opacity 1s ease-in-out; + background: #313148; + content: ''; + height: 100%; + left: 0; + opacity: 0; + position: absolute; + top: 0; + width: 100%; + z-index: 1; + } + + #banner :last-child { + margin-bottom: 0; + } + + #banner .inner { + background: #1d2726; + background: rgba(29, 39, 38, 0.9); + display: inline-block; + padding: 3.5em 5em; + position: relative; + z-index: 2; + } + + #banner .inner h2 { + color: inherit; + font-size: 2.5em; + line-height: 1.35em; + margin: 0; + padding: 0; + } + + #banner .inner p { + font-size: 1em; + letter-spacing: 0.125em; + line-height: 2em; + margin: 2em 0 0 0; + padding: 2em 0 0 0; + position: relative; + text-transform: uppercase; + top: -0.25em; + } + + #banner .inner p:before { + background: #888; + background: rgba(255, 255, 255, 0.25); + content: ''; + display: block; + height: 3px; + left: 50%; + margin: 0 0 0 -3em; + position: absolute; + top: 0; + width: 6em; + } + + #banner .inner .actions { + margin-top: 2em; + } + + #banner .inner input[type="submit"].alt, + #banner .inner input[type="reset"].alt, + #banner .inner input[type="button"].alt, + #banner .inner button.alt, + #banner .inner .button.alt { + box-shadow: inset 0 0 0 2px rgba(255, 255, 255, 0.25); + color: #fff !important; + } + + body.is-preload #banner:after { + opacity: 1.0; + } + +/* Mobile booking */ + +#mobil-menu{ + display: none; + background: #E4AD9C; +} + +.mobil-menucont ul { + list-style: none; + font-size: 1em; + line-height: 4.5em; + text-align: center; + margin: 0; + padding-left: 0; + vertical-align: middle; +} + +.mobil-menucont ul li{ + color: #fff; + margin: 0 0.5em; + display: inline; +} + +.mobil-menucont ul li a{ + color: #fff; + text-decoration: none; + } + +.mobil-menucont ul .mobil-menu-book{ + margin-right: 2em; + padding: 0.5em 0.5em; + font-weight: 600; +} + + + @media screen and (max-width: 980px) { + #mobil-menu{ + display: block; + } +} + +/* Main */ + + #main > header.major { + margin: 0 0 2em 0; + text-align: center; + } + + header.major h2{ + font-family: 'Abril Fatface', cursive; + color: #a5705b; + font-size: 50px; + font-weight: 400; + margin-bottom: 0; + } + + + header.major h4{ + font-size: 13px; + color: #888888; + } + +.one-half { + /*float: left;*/ + width: 100%; + padding: 0 0px; + position: relative; + text-align: left; + overflow: hidden; +} + +.prices-category{ + /*font-family: 'Abril Fatface', cursive;*/ + text-align: center; + margin-top: 2em; + margin-bottom: 2em; +} + +.prices-category h4{ + color: #E4AD9C; +} + + +.category-content { + position: relative; + display: inline-block; + width: 100%; + padding-bottom: 15px; + padding-top: 18px; + border-bottom: 1px solid #3d3d3d;} + +.category-text-left { + float: left; +} + +.main-title a { + text-decoration: none; + font-size: 16px; + color: #a5705b; + font-weight: 500; + -webkit-transition: all 0.5s ease; + -moz-transition: all 0.5s ease; + -o-transition: all 0.5s ease; + transition: all 0.5s ease; +} + +.sub-title { + font-size: 13px; + color: #888888; + font-weight: 400; + padding-right: 40px; + letter-spacing: 0.6px; +} + +.category-text-right { + float: right; +} + +.category-content .price { + font-size: 16px; + color: #E4AD9C; + letter-spacing: 0.5px; + font-weight: 600; + display: inline-block; + -webkit-transition: all 0.5s ease; + -moz-transition: all 0.5s ease; + -o-transition: all 0.5s ease; + transition: all 0.5s ease; +} + + +.common-home .box-heading:before, .box.related .box-heading:before { + content: ""; + background: url(../../assets/img/ollo.png) no-repeat scroll; + width: 75px; + height: 65px; + position: absolute; + top: 0; + left: 0; + right: 0; + margin: 0 auto; + display: inline-block; +} + + +/* About Us */ + +#aboutus .container .inner .dolgozo-nev{ + width: 100%; + text-align: center; + margin-bottom: 2em; +} +#aboutus .container .inner hr { + margin: 4em auto 4em auto; + border-bottom: solid 3px #888; + width: 40%; +} + +#aboutus .container .inner .dolgozo-nev .dolgozo-kep{ + width: 150px; + border-radius: 50%; + margin-bottom: 1em; +} + +#aboutus .container .inner .dolgozo-nev h4{ + color: #E4AD9C; +} + +#aboutus .container .inner .dolgozo-nev h4 span{ + color: #888; +} + +.bemutatkozas, .bemutatkozas-dolgozo{ + display: flex; + width: 100%; +} + +.bem-bal, .bem-dolgozo-bal{ + width: 60%; +} + +.bem-bal h4{ + color: #fff; +} + +.bem-bal p{ + text-align: justify; +} + +.bem-dolgozo-bal p{ + text-align: justify; + font-style: italic; + +} + +.bem-jobb{ + width: 40%; + margin-left: 4em; + float: right; +} + +.bem-jobb img{ + width: 100%; +} + +.bem-jobb h4{ + margin-top: 1em; + text-align: center; + color: #E4AD9C; +} + +.bem-jobb h4 span{ + color: #888; +} +.bem-dolgozo-jobb{ + width: 40%; + float: right; + text-align: right; + margin: auto; + +} + +.bem-dolgozo-jobb img{ + opacity: 0.8; + margin-left: 10px; + margin-right: 10ox; + width: 40%; + transition: opacity .25s ease-in-out; + -moz-transition: opacity .25s ease-in-out; + -webkit-transition: opacity .25s ease-in-out; +} + +.bem-dolgozo-jobb img:hover{ + opacity: 1; + +} + + + +/* Treatments - Our Services */ + + #treatments{ + clear: both; + } + + .service-block { + width: 100%; + display: block; + } + + + .service-area .one-third { + + width: 28%; + padding: 0; + overflow: hidden; + } + + .service-area .one-third.service-part1, .service-area .one-third.service-part4 { + width: 30%; + padding: 0; + float: left; + overflow: hidden; + } + + .service-area .one-third.service-part2 { + width: 42%; + /*margin-top:30px; + margin-bottom: 30px;*/ + padding: 0 30px; + float:left; + overflow: hidden; + } + + .service-area .one-third .service img { + -webkit-transform: rotateY(0deg); + -moz-transform: rotateY(0deg); + -ms-transform: rotateY(0deg); + -o-transform: rotateY(0deg); + transform: rotateY(0deg); + transition: all 0.9s ease 0s; + -webkit-transition: all 0.9s ease 0s; + -moz-transition: all 0.9s ease 0s; + -ms-transition: all 0.9s ease 0s; + -o-transition: all 0.9s ease 0s; + max-width: 100%; + } + + .service-area .one-third .service:hover img { + -webkit-transform: rotateY(-180deg); + -moz-transform: rotateY(-180deg); + -ms-transform: rotateY(-180deg); + -o-transform: rotateY(-180deg); + transform: rotateY(-180deg); + transition: all 0.9s ease 0s; + -webkit-transition: all 0.9s ease 0s; + -moz-transition: all 0.9s ease 0s; + -ms-transition: all 0.9s ease 0s; + -o-transition: all 0.9s ease 0s; + } + + + .service-area .one-third .service .service-text .service-icon { + background: url(../../assets/img/service-icon-rose.png) no-repeat scroll; + float: right; + height: 80px; + border-radius: 50%; + width: 80px; + position: relative; + background-color: #fff; + display: inline-block; + transition: all 0.5s ease 0s; + -webkit-transition: all 0.5s ease 0s; + -moz-transition: all 0.5s ease 0s; + -ms-transition: all 0.5s ease 0s; + -o-transition: all 0.5s ease 0s; + } + + .service .service-text .service-content .main-title { + font-size: 14px; + font-weight: 600; + color: #E4AD9C; + text-transform: capitalize; + letter-spacing: 0.8px; + padding-bottom: 10px; + } + + .service .service-text .service-content .sub-title-serv { + font-size: 13px; + color: #888888; + font-weight: 400; + line-height: 20px; + letter-spacing: 0.6px; + } + + .service-area .one-third .service .service-text .service-content { + margin-right: 100px; + } + + .service-area .one-third .service .service-text { + padding: 0 0px 95px; + text-align: right; + } + + .service-area .one-third .service.service3 .service-text .service-content { + margin-right: 0px; + margin-left: 100px; + } + + .service-area .one-third .service.service3 .service-text { + text-align: left; + } + + + + .service-area .one-third .service.service3 .service-text .service-icon { + float: left; + } + + .service-area .one-third .service .service-text .service-icon.icon1 { + background-position: center -65px; + } + .service-area .one-third .service .service-text:hover .service-icon.icon1 { + background-position:center 22px; + } + .service-area .one-third .service .service-text .service-icon.icon2 { + background-position:center -417px; + } + .service-area .one-third .service .service-text:hover .service-icon.icon2 { + background-position: center -330px; + } + .service-area .one-third .service .service-text .service-icon.icon3 { + background-position:center -765px; + } + .service-area .one-third .service .service-text:hover .service-icon.icon3 { + background-position: center -678px; + } + .service-area .one-third .service.service3 .service-text .service-icon.icon1 { + background-position: center -242px; + } + .service-area .one-third .service.service3 .service-text:hover .service-icon.icon1 { + background-position: center -155px; + } + .service-area .one-third .service.service3 .service-text .service-icon.icon2 { + background-position: center -590px; + } + .service-area .one-third .service.service3 .service-text:hover .service-icon.icon2 { + background-position:center -503px; + } + .service-area .one-third.service-part3 .service .service-text .service-icon.icon3 { + background-position: center -939px; + } + .service-area .one-third.service-part3 .service .service-text:hover .service-icon.icon3 { + background-position:center -852px; + } + .service-area .one-third .service .service-text:hover .service-content .main-title { + color: #a5705b; + } + + + +/* One */ + + #one { + padding-top:10em; + padding-bottom: 5em; + } + + #one p { + font-size: 1.25em; + line-height: 1.75em; + margin: -0.5em 0 0 0; + } + + #one .inner { + display: inline-block; + margin-top: -6em; + padding-right: 6em; + vertical-align: middle; + width: 100%; + } + + #one .device { + border: solid 40px #fff; + border-bottom: 0; + border-radius: 20px; + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; + display: inline-block; + margin-bottom: 0; + position: relative; + vertical-align: middle; + width: 100%; + } + + #one .device:after { + background: #eee; + border-radius: 100%; + content: ''; + height: 10px; + left: 50%; + margin: -23px 0 0 -5px; + position: absolute; + top: 0; + width: 10px; + } + + +/*two */ + + .nyitvatartas .about-content { + position: relative; + display: inline-block; + width: 100%; + padding: 25px 0px 15px; + border-bottom: 1px solid #3d3d3d; + font-size: 16px; + font-weight: 600; + } + + .nyitvatartas .title, .nyitvatartas .time{ + color: #888; + } + + .closed{ + color: rgba(228,173,156,0.6); + } + + .nyitvatartas .about-content .about-text-left { + float: left; + } + + .nyitvatartas .about-content .about-text-right { + float: right; +} + + + +/* Footer */ + +#footer .footer-div{ + display: flex; +} + + +#footer .footer-div .companyname{ + color: #fff; + font-family: 'Abril Fatface', cursive; + font-size: 24px; + margin-bottom: 20px; +} + +#footer .footer-div .companyname span{ + border-bottom: solid 5px #fff; + } + +#footer .footer-div ul{ + margin: 0; + list-style: none; +} + +#footer .footer-logo{ + max-width: 100px; +} + + #footer { + background: #a5705b; + color: #fff; + padding: 2em 0 0 0; + text-align: center; + } + + #footer .icons { + font-size: 24px; + margin: 0 0 1em 0; + padding-left: 0; + } + + #footer .icons li { + margin-top: 0.5em; + font-size: 16px; + padding: 0 1em 0 1em; + } + + #footer .icons li:last-child { + padding-right: 0; + } + + #footer .icons li a { + -moz-transition: color 0.2s ease-in-out; + -webkit-transition: color 0.2s ease-in-out; + -ms-transition: color 0.2s ease-in-out; + transition: color 0.2s ease-in-out; + color: #fff; + } + + #footer .icons li a:hover { + color: #E4AD9C; + } + + .footer-bal{ + margin: 0 10px; + width: 30%; + + } + + .footer-bal .contact-block a{ + text-decoration: none; + color: #fff; +} + + + .footer-jobb{ + width: 60%; + margin:0; + float: left; + } + + .footer-jobb img{ + width: 100%; + margin:0; + } + + + #footer .copyright { + color: #888; + background: #fff; + font-size: 0.9em; + padding: 1em 0 1em 0; + margin: 2em 0 0 0; + } + + .ui-widget-content { + border: 1px solid #f5d3c8!important; + background: #fff4f1!important; + color: #333333!important; + } + + .ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default, .ui-button, html .ui-button.ui-state-disabled:hover, html .ui-button.ui-state-disabled:active { + border: 1px solid #f5d3c8!important; + background: #e4ad9c url(images/ui-bg_glass_100_f6f6f6_1x400.png) 50% 50% repeat-x; + font-weight: bold!important; + color: #a5705b!important; + } + + table thead { + border-bottom: solid 2px #e4ad9c!important; + } + + .ui-widget-header { + border: 1px solid #a5705b!important; + background: #E4AD9C!important; + } + + .widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight { + border: 1px solid #e4ad9c!important; + background: #ebcec5!important; + } + + + + .ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active, a.ui-button:active, .ui-button:active, .ui-button.ui-state-active:hover { + border: 1px solid #a5705b; + background: #ffffff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x; + } + + .ui-state-active{ + background: #e4ad9c url(images/ui-bg_glass_100_f6f6f6_1x400.png) 50% 50% repeat-x!important; + } + + table tbody tr { + border: solid 1px #f5d3c8!important; + border-left: 0; + border-right: 0; + } + + table tbody tr:nth-child(2n + 1) { + background-color: rgb(255 244 241)!important; + } + + .ui-state-highlight{ + border: 1px solid #a5705b!important; + background: #f5d3c8!important; + } + + + + #datepicker table tr td:last-child a{ + background-image: none!important; + /*background-color: rgb(173, 40, 40)!important;*/ + color:red!important; + } + + .ui-state-disabled { + cursor: default !important; + pointer-events: none; + opacity: 0!important; + + } + + +/* Wide */ + + @media screen and (max-width: 1680px) { + + /* Basic */ + + body, input, select, textarea { + font-size: 11pt; + } + + } + +/* Normal */ + + @media screen and (max-width: 1280px) { + + /* Basic */ + + body, input, select, textarea { + font-size: 11pt; + } + + /* Feature */ + + .feature { + padding-left: 7em; + } + + .feature i { + height: 5.25em; + line-height: 5.5em; + margin-top: 0; + width: 5.25em; + } + + .feature i:before { + font-size: 32px; + } + + /* Wrapper */ + + .wrapper { + padding: 4em 0 2em 0; + } + + #header nav > ul > li{ + margin-left: 0.5em; + } + + /* Banner */ + + #banner { + background-attachment: scroll; + padding: 0 0; + } + + #banner .inner { + padding: 3em 4em; + } + + #banner .inner h2 { + font-size: 2.25em; + } + + /* Main */ + + #main { + padding: 2em 0; + } + + .service-area .one-third .service .service-text{ + padding: 0 0 45px; + } + + .main-title a {font-size: 14px;} + + .sub-title{font-size:10px;} + + + /* One */ + + #one .inner { + margin-top: -4em; + padding-right: 4em; + } + + #one .device { + border-width: 35px; + } + + #one .device:after { + margin-top: -22px; + } + + + #header { + display: none; + } + + #mobil-menu{ + display: block; + } + + + #navPanel, #navButton { + display: none; + } + + #page-wrapper { + padding-top: 0; + } + + + #mobil-menu{ + display: block; + } + + #header nav { + padding-left: 240px; + } + + #page-wrapper { + -moz-backface-visibility: hidden; + -webkit-backface-visibility: hidden; + -ms-backface-visibility: hidden; + backface-visibility: hidden; + -moz-transition: -moz-transform 0.5s ease; + -webkit-transition: -webkit-transform 0.5s ease; + -ms-transition: -ms-transform 0.5s ease; + transition: transform 0.5s ease; + padding-bottom: 1px; + } + + #navButton { + -moz-backface-visibility: hidden; + -webkit-backface-visibility: hidden; + -ms-backface-visibility: hidden; + backface-visibility: hidden; + -moz-transition: -moz-transform 0.5s ease; + -webkit-transition: -webkit-transform 0.5s ease; + -ms-transition: -ms-transform 0.5s ease; + transition: transform 0.5s ease; + display: block; + height: 4em; + left: 0; + position: fixed; + top: 0; + width: 6em; + z-index: 10001; + } + + #navButton .toggle { + text-decoration: none; + height: 100%; + left: 0; + position: absolute; + top: 0; + width: 100%; + } + + #navButton .toggle:before { + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + display: inline-block; + font-style: normal; + font-variant: normal; + text-rendering: auto; + line-height: 1; + text-transform: none !important; + font-family: 'Font Awesome 5 Free'; + font-weight: 900; + } + + #navButton .toggle:before { + background: rgba(29, 39, 38, 0.75); + color: #ffffff; + content: '\f0c9'; + display: block; + font-size: 18px; + height: 2.35em; + left: 0.5em; + line-height: 2.35em; + position: absolute; + text-align: center; + top: 0.5em; + width: 3em; + } + + #navPanel { + -moz-backface-visibility: hidden; + -webkit-backface-visibility: hidden; + -ms-backface-visibility: hidden; + backface-visibility: hidden; + -moz-transform: translateX(-275px); + -webkit-transform: translateX(-275px); + -ms-transform: translateX(-275px); + transform: translateX(-275px); + -moz-transition: -moz-transform 0.5s ease; + -webkit-transition: -webkit-transform 0.5s ease; + -ms-transition: -ms-transform 0.5s ease; + transition: transform 0.5s ease; + background-image: -moz-linear-gradient(left, rgba(0,0,0,0) 95%, rgba(0,0,0,0.1)); + background-image: -webkit-linear-gradient(left, rgba(0,0,0,0) 95%, rgba(0,0,0,0.1)); + background-image: -ms-linear-gradient(left, rgba(0,0,0,0) 95%, rgba(0,0,0,0.1)); + background-image: linear-gradient(left, rgba(0,0,0,0) 95%, rgba(0,0,0,0.1)); + display: block; + height: 100%; + left: 0; + overflow-y: auto; + position: fixed; + top: 0; + width: 275px; + z-index: 10002; + background: #1d2726; + color: #c7c9c9; + padding: 0.25em 1.5em; + } + + #navPanel .link { + border-top: solid 1px rgba(255, 255, 255, 0.05); + color: #c7c9c9; + display: block; + font-size: 0.8em; + font-weight: 600; + height: 3.5em; + letter-spacing: 0.125em; + line-height: 3.5em; + text-decoration: none; + text-transform: uppercase; + } + + #navPanel .link:first-child { + border-top: 0; + } + + #navPanel .link.depth-0 { + color: #ffffff; + } + + #navPanel .link .indent-1 { + display: inline-block; + width: 1.25em; + } + + #navPanel .link .indent-2 { + display: inline-block; + width: 2.5em; + } + + #navPanel .link .indent-3 { + display: inline-block; + width: 3.75em; + } + + #navPanel .link .indent-4 { + display: inline-block; + width: 5em; + } + + #navPanel .link .indent-5 { + display: inline-block; + width: 6.25em; + } + + body.navPanel-visible #page-wrapper { + -moz-transform: translateX(275px); + -webkit-transform: translateX(275px); + -ms-transform: translateX(275px); + transform: translateX(275px); + } + + body.navPanel-visible #navButton { + -moz-transform: translateX(275px); + -webkit-transform: translateX(275px); + -ms-transform: translateX(275px); + transform: translateX(275px); + } + + body.navPanel-visible #navPanel { + -moz-transform: translateX(0); + -webkit-transform: translateX(0); + -ms-transform: translateX(0); + transform: translateX(0); + } + + } + +/* Narrow */ + + + + @media screen and (max-width: 980px) { + + /* Basic */ + + html, body { + overflow-x: hidden; + } + + body, input, select, textarea { + font-size: 12pt; + } + + h2 { + font-size: 1.25em; + line-height: 1.75em; + } + + h3 { + font-size: 1.1em; + line-height: 1.5em; + } + + h4 { + font-size: 1em; + line-height: 1.5em; + } + + /* Section/Article */ + + section.special, article.special { + text-align: center; + } + + header h2 + p { + font-size: 0.9em; + } + + header h3 + p { + font-size: 0.8em; + } + + header h4 + p, + header h5 + p, + header h6 + p { + font-size: 0.8em; + } + + /* Feature */ + + .feature { + padding-left: 9em; + } + + .feature i { + height: 7em; + line-height: 7.5em; + margin-top: -0.5em; + width: 7em; + } + + .feature i:before { + font-size: 42px; + } + + /* Image Feature */ + + .image-feature .image { + max-height: 30em; + overflow: hidden; + } + + /* Header */ + + #page-wrapper { + padding-top: 0; + } + + #header { + display: none; + } + + /* Banner */ + + #banner { + padding: 0em 0; + } + + #banner .inner { + padding: 3em; + } + + #banner .inner h2 { + font-size: 2em; + } + + + + /* Main */ + + #main > header.major { + margin: 0; + } + + .bem-jobb{margin-left:2em;} + + .bem-bal p, .bem-dolgozo-bal p {font-size:14px; margin: 0 0 0.5em 0;} + + .bem-dolgozo-jobb {width: 30%;} + + .bem-dolgozo-jobb img{width: 70%;} + + header.major h2 {font-size: 36px;} + + + /* One */ + + #one {padding-top: 2em;} + + #one p { + font-size: 1em; + } + + #one .inner { + display: block; + margin: 0 auto; + max-width: 100%; + padding: 0; + text-align: center; + width: 35em; + } + + #one .device { + display: block; + margin: 4em auto 0 auto; + max-width: 100%; + width: 30em; + } + + .service-area .one-third.service-part1{width: 50%; padding-right: 10px;} + .service-area .one-third.service-part2{display: none;} + .service-area .one-third.service-part3{width:50%;padding-left: 10px;} + + .one-half {float: none; width: 100%;} + #footer .footer-div{display:block;} + .footer-bal{width: 100%;} + .footer-jobb{width: 100%; float: none; margin-top:2em;} + + + /* Off-Canvas Navigation */ + + #page-wrapper { + -moz-backface-visibility: hidden; + -webkit-backface-visibility: hidden; + -ms-backface-visibility: hidden; + backface-visibility: hidden; + -moz-transition: -moz-transform 0.5s ease; + -webkit-transition: -webkit-transform 0.5s ease; + -ms-transition: -ms-transform 0.5s ease; + transition: transform 0.5s ease; + padding-bottom: 1px; + } + + #navButton { + -moz-backface-visibility: hidden; + -webkit-backface-visibility: hidden; + -ms-backface-visibility: hidden; + backface-visibility: hidden; + -moz-transition: -moz-transform 0.5s ease; + -webkit-transition: -webkit-transform 0.5s ease; + -ms-transition: -ms-transform 0.5s ease; + transition: transform 0.5s ease; + display: block; + height: 4em; + left: 0; + position: fixed; + top: 0; + width: 6em; + z-index: 10001; + } + + #navButton .toggle { + text-decoration: none; + height: 100%; + left: 0; + position: absolute; + top: 0; + width: 100%; + } + + #navButton .toggle:before { + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + display: inline-block; + font-style: normal; + font-variant: normal; + text-rendering: auto; + line-height: 1; + text-transform: none !important; + font-family: 'Font Awesome 5 Free'; + font-weight: 900; + } + + #navButton .toggle:before { + background: rgba(29, 39, 38, 0.75); + color: #ffffff; + content: '\f0c9'; + display: block; + font-size: 18px; + height: 2.35em; + left: 0.5em; + line-height: 2.35em; + position: absolute; + text-align: center; + top: 0.5em; + width: 3em; + } + + #navPanel { + -moz-backface-visibility: hidden; + -webkit-backface-visibility: hidden; + -ms-backface-visibility: hidden; + backface-visibility: hidden; + -moz-transform: translateX(-275px); + -webkit-transform: translateX(-275px); + -ms-transform: translateX(-275px); + transform: translateX(-275px); + -moz-transition: -moz-transform 0.5s ease; + -webkit-transition: -webkit-transform 0.5s ease; + -ms-transition: -ms-transform 0.5s ease; + transition: transform 0.5s ease; + background-image: -moz-linear-gradient(left, rgba(0,0,0,0) 95%, rgba(0,0,0,0.1)); + background-image: -webkit-linear-gradient(left, rgba(0,0,0,0) 95%, rgba(0,0,0,0.1)); + background-image: -ms-linear-gradient(left, rgba(0,0,0,0) 95%, rgba(0,0,0,0.1)); + background-image: linear-gradient(left, rgba(0,0,0,0) 95%, rgba(0,0,0,0.1)); + display: block; + height: 100%; + left: 0; + overflow-y: auto; + position: fixed; + top: 0; + width: 275px; + z-index: 10002; + background: #1d2726; + color: #c7c9c9; + padding: 0.25em 1.5em; + } + + #navPanel .link { + border-top: solid 1px rgba(255, 255, 255, 0.05); + color: #c7c9c9; + display: block; + font-size: 0.8em; + font-weight: 600; + height: 3.5em; + letter-spacing: 0.125em; + line-height: 3.5em; + text-decoration: none; + text-transform: uppercase; + } + + #navPanel .link:first-child { + border-top: 0; + } + + #navPanel .link.depth-0 { + color: #ffffff; + } + + #navPanel .link .indent-1 { + display: inline-block; + width: 1.25em; + } + + #navPanel .link .indent-2 { + display: inline-block; + width: 2.5em; + } + + #navPanel .link .indent-3 { + display: inline-block; + width: 3.75em; + } + + #navPanel .link .indent-4 { + display: inline-block; + width: 5em; + } + + #navPanel .link .indent-5 { + display: inline-block; + width: 6.25em; + } + + body.navPanel-visible #page-wrapper { + -moz-transform: translateX(275px); + -webkit-transform: translateX(275px); + -ms-transform: translateX(275px); + transform: translateX(275px); + } + + body.navPanel-visible #navButton { + -moz-transform: translateX(275px); + -webkit-transform: translateX(275px); + -ms-transform: translateX(275px); + transform: translateX(275px); + } + + body.navPanel-visible #navPanel { + -moz-transform: translateX(0); + -webkit-transform: translateX(0); + -ms-transform: translateX(0); + transform: translateX(0); + } + + } + +/* Mobile */ + + @media screen and (max-width: 736px) { + + /* Basic */ + + body, input, select, textarea { + font-size: 12pt; + } + + /* Feature */ + + .feature { + margin: 0 auto 2em auto; + max-width: 100%; + padding: 0; + text-align: center; + width: 30em; + } + + .feature i { + left: 0; + margin: 0 auto 2em auto; + position: relative; + top: 0; + } + + /* Image Feature */ + + .image-feature { + margin: 0 auto 2em auto; + max-width: 100%; + width: 25em; + } + + .image-feature .image { + max-height: none; + } + + /* Wrapper */ + + .wrapper { + padding: 2.5em 1.25em 0.5em 1.25em; + } + + /* Banner */ + + #banner { + padding: 6em 0; + } + + #banner .inner { + padding: 2em 2.5em; + width: 100%; + } + + #banner .inner h2 { + font-size: 1.5em; + } + + #banner .inner p { + margin: 1.5em 0 0 0; + padding: 1.5em 0 0 0; + } + + /* One */ + + #one .device { + border-width: 20px; + margin-top: 2em; + max-width: 100%; + width: 25em; + } + + #one .device:after { + height: 8px; + margin: -13px 0 0 -4px; + width: 8px; + } + + .bookingContainer { + width: 95%!important; + margin-right: 10px!important; + margin-left: 10px!important; + } + + .bookingResultsWrapper { + width: 665px!important; + margin-left: 0!important; + } + + #bookingStep3 { + min-height: 720px!important; + } + + .serviceInfoCol { + padding-left: 5px!important; + } + + .serviceCol h4 { + margin-left: 0!important; + } + + .serviceNameCol { + padding-left: 0!important; + } + + .serviceTable { + width: 93%!important; + margin-left: 5px!important; + margin-right: 0!important; + padding: 0 5px!important; + margin-bottom: 100px!important; + } + + .bookingResultsWrapper { + width: 100%!important; + float: none!important; + } + + .bookingCalendar { + float: none!important; + } + + .availableTimes { + margin-bottom: 60px!important; + } + + .bookingContainer { + margin-top: -12px!important; + } + } + +/* Mobile (Portrait) */ + + @media screen and (max-width: 480px) { + + #banner{padding:0;} + .service-part2{display: none;} + .one-third{width: 100%;} + .service-area .one-third.service-part1{width: 100%;} + .service-area .one-third.service-part3{width: 100%;} + .service-area .one-third .service .service-text {text-align: center; padding-bottom: 30px;} + .service-area .one-third .service .service-text .service-icon {float: none;} + .service-area .one-third .service .service-text .service-content {margin: 0;} + .service .service-text .service-content .sub-title-serv {padding: 0 20px 0 20px;} + .service-area .one-third .service.service3 .service-text .service-icon {float: none;} + .service-area .one-third .service.service3 .service-text {text-align:center;} + .service-area .one-third .service.service3 .service-text .service-content {margin-left: 0;} + .service-area .one-third {width: 100%;} + + #one{padding-top: 3em;} + + .bemutatkozas{display: block;} + .bem-bal{width: 100%;} + .bem-jobb{width: 100%; margin-bottom: 2em;} + + .bemutatkozas-dolgozo{display: block;} + .bem-dolgozo-bal {width: 100%;} + .bem-dolgozo-jobb {width: 100%; float: none; text-align: center;} + + #czcategorylistblock .czcategorylist-wrapper .category_lists .one-half .category-content {width: 100%; } + .one-half{width:100%; float: none;} + + .category-text-left{float: none;} + .category-text-right {display: block; float: left;} + + #two {margin-bottom: 3em;} + header.major h2 {font-size: 32px;} + + #footer .footer-div {display: block;} + .footer-bal{width:100%;} + .footer-jobb{width:100%; float: none; margin-top:2em;} + + + /* Basic */ + + html, body { + min-width: 320px; + } + + body, input, select, textarea { + font-size: 12pt; + } + + h1 br, h2 br, h3 br, h4 br, h5 br, h6 br { + display: none; + } + + h2 { + font-size: 1.15em; + line-height: 1.75em; + } + + h3 { + font-size: 1em; + line-height: 1.5em; + } + + /* List */ + + ul.actions { + margin: 0 0 2em 0; + } + + ul.actions li { + display: block; + padding: 1em 0 0 0; + text-align: center; + width: 100%; + } + + ul.actions li:first-child { + padding-top: 0; + } + + ul.actions li > * { + margin: 0 !important; + width: 100%; + } + + ul.actions li > *.icon:before { + margin-left: -2em; + } + + ul.actions.small li { + padding: 0.5em 0 0 0; + } + + ul.actions.small li:first-child { + padding-top: 0; + } + + /* Button */ + + input[type="submit"], + input[type="reset"], + input[type="button"], + button, + .button { + padding: 0; + } + + /* One */ + + #one .device { + border-width: 15px; + } + + #one .device:after { + height: 5px; + margin: -10px 0 0 -2.5px; + width: 5px; + } + + } + + .priceSubTitle{ + font-size: 0.7em; + letter-spacing: initial; + margin-bottom: 0; + } \ No newline at end of file diff --git a/assets/css/beauty_20240425.css b/assets/css/beauty_20240425.css new file mode 100755 index 0000000..3f08073 --- /dev/null +++ b/assets/css/beauty_20240425.css @@ -0,0 +1,4373 @@ +@import url(../css/fontawesome-all.min.css); +@import url("https://fonts.googleapis.com/css?family=Open+Sans:300,600,300italic,600italic"); + +/* + Catalyst by Pixelarity + pixelarity.com | hello@pixelarity.com + License: pixelarity.com/license +*/ + + +html{ + scroll-behavior: smooth; +} + +html, body, div, span, applet, object, +iframe, h1, h2, h3, h4, h5, h6, p, blockquote, +pre, a, abbr, acronym, address, big, cite, +code, del, dfn, em, img, ins, kbd, q, s, samp, +small, strike, strong, sub, sup, tt, var, b, +u, i, center, dl, dt, dd, ol, ul, li, fieldset, +form, label, legend, table, caption, tbody, +tfoot, thead, tr, th, td, article, aside, +canvas, details, embed, figure, figcaption, +footer, header, hgroup, menu, nav, output, ruby, +section, summary, time, mark, audio, video { + margin: 0; + padding: 0; + border: 0; + font-size: 100%; + font: inherit; + vertical-align: baseline;} + +article, aside, details, figcaption, figure, +footer, header, hgroup, menu, nav, section { + display: block;} + +body { + line-height: 1; + font-family: 'Poppins', sans-serif; +} + +ol, ul { + list-style: none; +} + +blockquote, q { + quotes: none; +} + + blockquote:before, blockquote:after, q:before, q:after { + content: ''; + content: none; + } + +table { + border-collapse: collapse; + border-spacing: 0; +} + +body { + -webkit-text-size-adjust: none; +} + +mark { + background-color: transparent; + color: inherit; +} + +input::-moz-focus-inner { + border: 0; + padding: 0; +} + +input, select, textarea { + -moz-appearance: none; + -webkit-appearance: none; + -ms-appearance: none; + appearance: none; +} + +.profileRow{ + background-color: #f5d3c8; + border: 1px solid #a5705b; +} + +.profileRadioBtn{ + /*background-color: #a5705b;*/ +} + +#totalPanelBtn{ + background-color: #a5705b; +} + +#totalPanel{ + border: 1px solid #a5705b; + background-color: #fff7f5; +} + +.serviceInfoIcon .fa-info-circle{ + color:#a5705b; +} + +.serviceCheckCol input[type="checkbox"]{ + border:1px solid #a5705b; +} + +.bookingButton{ + background-color: #a5705b!important; +} + +.availableBookingTime{ + background-color: #f5d3c8; +} + +.activeStep{ + background-color:#a5705b; +} + +.bookingName, .bookingEmail, .bookingPhone{ + background-color: #fff7f5; + border:1px solid #a5705b!important; +} + +.bookingEmailTitle, .bookingPhoneTitle{ + color:gray; +} + +.bookingTitle{ + color:#a5705b; +} + +.stepTitle{ + color:#a5705b; +} + +.stepLine { + border-top: 1px solid #9e8462; +} + +.stepCircle { + border: 1px solid #a5705b; + background-color: #f5d3c8; +} + +.panel-heading{ + color:#a5705b!important; + text-transform: uppercase!important; +} + +.serviceCol h4{ + color:#a5705b!important; +} + +.serviceHeader .serviceNameCol, +.serviceHeader .servicePriceCol{ + color:#E4AD9C!important; + font-weight:normal!important; +} + +.BookingStepContainer { + border: 1px solid #a5705b; +} + +.bookingSubmit{ + background-color: #a5705b!important; +} + +/* Basic */ + + html { + box-sizing: border-box; + } + + *, *:before, *:after { + box-sizing: inherit; + } + + body { + background: #fff; + } + + body.is-preload *, body.is-preload *:before, body.is-preload *:after { + -moz-animation: none !important; + -webkit-animation: none !important; + -ms-animation: none !important; + animation: none !important; + -moz-transition: none !important; + -webkit-transition: none !important; + -ms-transition: none !important; + transition: none !important; + } + + body, input, select, textarea { + color: #4a4a4a; + background: #fff; + font-family: "Poppins", sans-serif; + font-size: 13pt; + font-weight: 300; + line-height: 1.75em; + } + + a { + color: #51c5e8; + text-decoration: underline; + } + + a:hover { + text-decoration: none; + } + + strong, b { + color: #2a2a2a; + font-weight: 600; + } + + em, i { + font-style: italic; + } + + p { + margin: 0 0 2em 0; + } + + h1, h2, h3, h4, h5, h6 { + color: #2a2a2a; + font-weight: 600; + letter-spacing: 0.125em; + line-height: 1em; + margin: 0 0 1em 0; + } + + h1 a, h2 a, h3 a, h4 a, h5 a, h6 a { + color: inherit; + text-decoration: none; + } + + h2 { + font-size: 1.5em; + line-height: 1.75em; + } + + h3 { + font-size: 1.25em; + line-height: 1.5em; + } + + h4 { + font-size: 1.1em; + line-height: 1.5em; + } + + h5 { + font-size: 0.9em; + line-height: 1.5em; + } + + h6 { + font-size: 0.7em; + line-height: 1.5em; + } + + sub { + font-size: 0.8em; + position: relative; + top: 0.5em; + } + + sup { + font-size: 0.8em; + position: relative; + top: -0.5em; + } + + hr { + border: 0; + border-bottom: solid 3px #eee; + margin: 3em 0; + } + + hr.major { + margin: 5em 0; + } + + blockquote { + border-left: solid 8px #eee; + font-style: italic; + margin: 0 0 2em 0; + padding: 0.5em 0 0.5em 2em; + } + + pre { + -webkit-overflow-scrolling: touch; + background: rgba(144, 144, 144, 0.05); + font-family: "Courier New", monospace; + font-size: 0.9em; + line-height: 1.5em; + margin: 0 0 2em 0; + overflow-x: auto; + padding: 1em 1.5em; + } + + code { + background: rgba(144, 144, 144, 0.05); + font-family: "Courier New", monospace; + font-size: 0.9em; + margin: 0 0.25em; + padding: 0.25em 0.65em; + } + + .align-left { + text-align: left; + } + + .align-center { + text-align: center; + } + + .align-right { + text-align: right; + } + +/* Row */ + + .row { + display: flex; + flex-wrap: wrap; + box-sizing: border-box; + align-items: stretch; + } + + .row > * { + box-sizing: border-box; + } + + .row.gtr-uniform > * > :last-child { + margin-bottom: 0; + } + + .row.aln-left { + justify-content: flex-start; + } + + .row.aln-center { + justify-content: center; + } + + .row.aln-right { + justify-content: flex-end; + } + + .row.aln-top { + align-items: flex-start; + } + + .row.aln-middle { + align-items: center; + } + + .row.aln-bottom { + align-items: flex-end; + } + + .row > .imp { + order: -1; + } + + .row > .col-1 { + width: 8.33333%; + } + + .row > .off-1 { + margin-left: 8.33333%; + } + + .row > .col-2 { + width: 16.66667%; + } + + .row > .off-2 { + margin-left: 16.66667%; + } + + .row > .col-3 { + width: 25%; + } + + .row > .off-3 { + margin-left: 25%; + } + + .row > .col-4 { + width: 33.33333%; + } + + .row > .off-4 { + margin-left: 33.33333%; + } + + .row > .col-5 { + width: 41.66667%; + } + + .row > .off-5 { + margin-left: 41.66667%; + } + + .row > .col-6 { + width: 50%; + } + + .row > .off-6 { + margin-left: 50%; + } + + .row > .col-7 { + width: 58.33333%; + } + + .row > .off-7 { + margin-left: 58.33333%; + } + + .row > .col-8 { + width: 66.66667%; + } + + .row > .off-8 { + margin-left: 66.66667%; + } + + .row > .col-9 { + width: 75%; + } + + .row > .off-9 { + margin-left: 75%; + } + + .row > .col-10 { + width: 83.33333%; + } + + .row > .off-10 { + margin-left: 83.33333%; + } + + .row > .col-11 { + width: 91.66667%; + } + + .row > .off-11 { + margin-left: 91.66667%; + } + + .row > .col-12 { + width: 100%; + } + + .row > .off-12 { + margin-left: 100%; + } + + .row.gtr-0 { + margin-top: 0; + margin-left: 0em; + } + + .row.gtr-0 > * { + padding: 0 0 0 0em; + } + + .row.gtr-0.gtr-uniform { + margin-top: 0em; + } + + .row.gtr-0.gtr-uniform > * { + padding-top: 0em; + } + + .row.gtr-25 { + margin-top: 0; + margin-left: -0.75em; + } + + .row.gtr-25 > * { + padding: 0 0 0 0.75em; + } + + .row.gtr-25.gtr-uniform { + margin-top: -0.75em; + } + + .row.gtr-25.gtr-uniform > * { + padding-top: 0.75em; + } + + .row.gtr-50 { + margin-top: 0; + margin-left: -1.5em; + } + + .row.gtr-50 > * { + padding: 0 0 0 1.5em; + } + + .row.gtr-50.gtr-uniform { + margin-top: -1.5em; + } + + .row.gtr-50.gtr-uniform > * { + padding-top: 1.5em; + } + + .row { + margin-top: 0; + margin-left: -3em; + } + + .row > * { + padding: 0 0 0 3em; + } + + .row.gtr-uniform { + margin-top: -3em; + } + + .row.gtr-uniform > * { + padding-top: 3em; + } + + .row.gtr-150 { + margin-top: 0; + margin-left: -4.5em; + } + + .row.gtr-150 > * { + padding: 0 0 0 4.5em; + } + + .row.gtr-150.gtr-uniform { + margin-top: -4.5em; + } + + .row.gtr-150.gtr-uniform > * { + padding-top: 4.5em; + } + + .row.gtr-200 { + margin-top: 0; + margin-left: -6em; + } + + .row.gtr-200 > * { + padding: 0 0 0 6em; + } + + .row.gtr-200.gtr-uniform { + margin-top: -6em; + } + + .row.gtr-200.gtr-uniform > * { + padding-top: 6em; + } + + @media screen and (max-width: 1680px) { + + .row { + display: flex; + flex-wrap: wrap; + box-sizing: border-box; + align-items: stretch; + } + + .row > * { + box-sizing: border-box; + } + + .row.gtr-uniform > * > :last-child { + margin-bottom: 0; + } + + .row.aln-left { + justify-content: flex-start; + } + + .row.aln-center { + justify-content: center; + } + + .row.aln-right { + justify-content: flex-end; + } + + .row.aln-top { + align-items: flex-start; + } + + .row.aln-middle { + align-items: center; + } + + .row.aln-bottom { + align-items: flex-end; + } + + .row > .imp-wide { + order: -1; + } + + .row > .col-1-wide { + width: 8.33333%; + } + + .row > .off-1-wide { + margin-left: 8.33333%; + } + + .row > .col-2-wide { + width: 16.66667%; + } + + .row > .off-2-wide { + margin-left: 16.66667%; + } + + .row > .col-3-wide { + width: 25%; + } + + .row > .off-3-wide { + margin-left: 25%; + } + + .row > .col-4-wide { + width: 33.33333%; + } + + .row > .off-4-wide { + margin-left: 33.33333%; + } + + .row > .col-5-wide { + width: 41.66667%; + } + + .row > .off-5-wide { + margin-left: 41.66667%; + } + + .row > .col-6-wide { + width: 50%; + } + + .row > .off-6-wide { + margin-left: 50%; + } + + .row > .col-7-wide { + width: 58.33333%; + } + + .row > .off-7-wide { + margin-left: 58.33333%; + } + + .row > .col-8-wide { + width: 66.66667%; + } + + .row > .off-8-wide { + margin-left: 66.66667%; + } + + .row > .col-9-wide { + width: 75%; + } + + .row > .off-9-wide { + margin-left: 75%; + } + + .row > .col-10-wide { + width: 83.33333%; + } + + .row > .off-10-wide { + margin-left: 83.33333%; + } + + .row > .col-11-wide { + width: 91.66667%; + } + + .row > .off-11-wide { + margin-left: 91.66667%; + } + + .row > .col-12-wide { + width: 100%; + } + + .row > .off-12-wide { + margin-left: 100%; + } + + .row.gtr-0 { + margin-top: 0; + margin-left: 0em; + } + + .row.gtr-0 > * { + padding: 0 0 0 0em; + } + + .row.gtr-0.gtr-uniform { + margin-top: 0em; + } + + .row.gtr-0.gtr-uniform > * { + padding-top: 0em; + } + + .row.gtr-25 { + margin-top: 0; + margin-left: -0.75em; + } + + .row.gtr-25 > * { + padding: 0 0 0 0.75em; + } + + .row.gtr-25.gtr-uniform { + margin-top: -0.75em; + } + + .row.gtr-25.gtr-uniform > * { + padding-top: 0.75em; + } + + .row.gtr-50 { + margin-top: 0; + margin-left: -1.5em; + } + + .row.gtr-50 > * { + padding: 0 0 0 1.5em; + } + + .row.gtr-50.gtr-uniform { + margin-top: -1.5em; + } + + .row.gtr-50.gtr-uniform > * { + padding-top: 1.5em; + } + + .row { + margin-top: 0; + margin-left: -3em; + } + + .row > * { + padding: 0 0 0 3em; + } + + .row.gtr-uniform { + margin-top: -3em; + } + + .row.gtr-uniform > * { + padding-top: 3em; + } + + .row.gtr-150 { + margin-top: 0; + margin-left: -4.5em; + } + + .row.gtr-150 > * { + padding: 0 0 0 4.5em; + } + + .row.gtr-150.gtr-uniform { + margin-top: -4.5em; + } + + .row.gtr-150.gtr-uniform > * { + padding-top: 4.5em; + } + + .row.gtr-200 { + margin-top: 0; + margin-left: -6em; + } + + .row.gtr-200 > * { + padding: 0 0 0 6em; + } + + .row.gtr-200.gtr-uniform { + margin-top: -6em; + } + + .row.gtr-200.gtr-uniform > * { + padding-top: 6em; + } + + } + + @media screen and (max-width: 1280px) { + + .row { + display: flex; + flex-wrap: wrap; + box-sizing: border-box; + align-items: stretch; + } + + .row > * { + box-sizing: border-box; + } + + .row.gtr-uniform > * > :last-child { + margin-bottom: 0; + } + + .row.aln-left { + justify-content: flex-start; + } + + .row.aln-center { + justify-content: center; + } + + .row.aln-right { + justify-content: flex-end; + } + + .row.aln-top { + align-items: flex-start; + } + + .row.aln-middle { + align-items: center; + } + + .row.aln-bottom { + align-items: flex-end; + } + + .row > .imp-normal { + order: -1; + } + + .row > .col-1-normal { + width: 8.33333%; + } + + .row > .off-1-normal { + margin-left: 8.33333%; + } + + .row > .col-2-normal { + width: 16.66667%; + } + + .row > .off-2-normal { + margin-left: 16.66667%; + } + + .row > .col-3-normal { + width: 25%; + } + + .row > .off-3-normal { + margin-left: 25%; + } + + .row > .col-4-normal { + width: 33.33333%; + } + + .row > .off-4-normal { + margin-left: 33.33333%; + } + + .row > .col-5-normal { + width: 41.66667%; + } + + .row > .off-5-normal { + margin-left: 41.66667%; + } + + .row > .col-6-normal { + width: 50%; + } + + .row > .off-6-normal { + margin-left: 50%; + } + + .row > .col-7-normal { + width: 58.33333%; + } + + .row > .off-7-normal { + margin-left: 58.33333%; + } + + .row > .col-8-normal { + width: 66.66667%; + } + + .row > .off-8-normal { + margin-left: 66.66667%; + } + + .row > .col-9-normal { + width: 75%; + } + + .row > .off-9-normal { + margin-left: 75%; + } + + .row > .col-10-normal { + width: 83.33333%; + } + + .row > .off-10-normal { + margin-left: 83.33333%; + } + + .row > .col-11-normal { + width: 91.66667%; + } + + .row > .off-11-normal { + margin-left: 91.66667%; + } + + .row > .col-12-normal { + width: 100%; + } + + .row > .off-12-normal { + margin-left: 100%; + } + + .row.gtr-0 { + margin-top: 0; + margin-left: 0em; + } + + .row.gtr-0 > * { + padding: 0 0 0 0em; + } + + .row.gtr-0.gtr-uniform { + margin-top: 0em; + } + + .row.gtr-0.gtr-uniform > * { + padding-top: 0em; + } + + .row.gtr-25 { + margin-top: 0; + margin-left: -0.5em; + } + + .row.gtr-25 > * { + padding: 0 0 0 0.5em; + } + + .row.gtr-25.gtr-uniform { + margin-top: -0.5em; + } + + .row.gtr-25.gtr-uniform > * { + padding-top: 0.5em; + } + + .row.gtr-50 { + margin-top: 0; + margin-left: -1em; + } + + .row.gtr-50 > * { + padding: 0 0 0 1em; + } + + .row.gtr-50.gtr-uniform { + margin-top: -1em; + } + + .row.gtr-50.gtr-uniform > * { + padding-top: 1em; + } + + .row { + margin-top: 0; + margin-left: -2em; + } + + .row > * { + padding: 0 0 0 2em; + } + + .row.gtr-uniform { + margin-top: -2em; + } + + .row.gtr-uniform > * { + padding-top: 2em; + } + + .row.gtr-150 { + margin-top: 0; + margin-left: -3em; + } + + .row.gtr-150 > * { + padding: 0 0 0 3em; + } + + .row.gtr-150.gtr-uniform { + margin-top: -3em; + } + + .row.gtr-150.gtr-uniform > * { + padding-top: 3em; + } + + .row.gtr-200 { + margin-top: 0; + margin-left: -4em; + } + + .row.gtr-200 > * { + padding: 0 0 0 4em; + } + + .row.gtr-200.gtr-uniform { + margin-top: -4em; + } + + .row.gtr-200.gtr-uniform > * { + padding-top: 4em; + } + + } + + @media screen and (max-width: 980px) { + + .row { + display: flex; + flex-wrap: wrap; + box-sizing: border-box; + align-items: stretch; + } + + .row > * { + box-sizing: border-box; + } + + .row.gtr-uniform > * > :last-child { + margin-bottom: 0; + } + + .row.aln-left { + justify-content: flex-start; + } + + .row.aln-center { + justify-content: center; + } + + .row.aln-right { + justify-content: flex-end; + } + + .row.aln-top { + align-items: flex-start; + } + + .row.aln-middle { + align-items: center; + } + + .row.aln-bottom { + align-items: flex-end; + } + + .row > .imp-narrow { + order: -1; + } + + .row > .col-1-narrow { + width: 8.33333%; + } + + .row > .off-1-narrow { + margin-left: 8.33333%; + } + + .row > .col-2-narrow { + width: 16.66667%; + } + + .row > .off-2-narrow { + margin-left: 16.66667%; + } + + .row > .col-3-narrow { + width: 25%; + } + + .row > .off-3-narrow { + margin-left: 25%; + } + + .row > .col-4-narrow { + width: 33.33333%; + } + + .row > .off-4-narrow { + margin-left: 33.33333%; + } + + .row > .col-5-narrow { + width: 41.66667%; + } + + .row > .off-5-narrow { + margin-left: 41.66667%; + } + + .row > .col-6-narrow { + width: 50%; + } + + .row > .off-6-narrow { + margin-left: 50%; + } + + .row > .col-7-narrow { + width: 58.33333%; + } + + .row > .off-7-narrow { + margin-left: 58.33333%; + } + + .row > .col-8-narrow { + width: 66.66667%; + } + + .row > .off-8-narrow { + margin-left: 66.66667%; + } + + .row > .col-9-narrow { + width: 75%; + } + + .row > .off-9-narrow { + margin-left: 75%; + } + + .row > .col-10-narrow { + width: 83.33333%; + } + + .row > .off-10-narrow { + margin-left: 83.33333%; + } + + .row > .col-11-narrow { + width: 91.66667%; + } + + .row > .off-11-narrow { + margin-left: 91.66667%; + } + + .row > .col-12-narrow { + width: 100%; + } + + .row > .off-12-narrow { + margin-left: 100%; + } + + .row.gtr-0 { + margin-top: 0; + margin-left: 0em; + } + + .row.gtr-0 > * { + padding: 0 0 0 0em; + } + + .row.gtr-0.gtr-uniform { + margin-top: 0em; + } + + .row.gtr-0.gtr-uniform > * { + padding-top: 0em; + } + + .row.gtr-25 { + margin-top: 0; + margin-left: -0.5em; + } + + .row.gtr-25 > * { + padding: 0 0 0 0.5em; + } + + .row.gtr-25.gtr-uniform { + margin-top: -0.5em; + } + + .row.gtr-25.gtr-uniform > * { + padding-top: 0.5em; + } + + .row.gtr-50 { + margin-top: 0; + margin-left: -1em; + } + + .row.gtr-50 > * { + padding: 0 0 0 1em; + } + + .row.gtr-50.gtr-uniform { + margin-top: -1em; + } + + .row.gtr-50.gtr-uniform > * { + padding-top: 1em; + } + + .row { + margin-top: 0; + margin-left: -2em; + } + + .row > * { + padding: 0 0 0 2em; + } + + .row.gtr-uniform { + margin-top: -2em; + } + + .row.gtr-uniform > * { + padding-top: 2em; + } + + .row.gtr-150 { + margin-top: 0; + margin-left: -3em; + } + + .row.gtr-150 > * { + padding: 0 0 0 3em; + } + + .row.gtr-150.gtr-uniform { + margin-top: -3em; + } + + .row.gtr-150.gtr-uniform > * { + padding-top: 3em; + } + + .row.gtr-200 { + margin-top: 0; + margin-left: -4em; + } + + .row.gtr-200 > * { + padding: 0 0 0 4em; + } + + .row.gtr-200.gtr-uniform { + margin-top: -4em; + } + + .row.gtr-200.gtr-uniform > * { + padding-top: 4em; + } + + } + + @media screen and (max-width: 736px) { + + .row { + display: flex; + flex-wrap: wrap; + box-sizing: border-box; + align-items: stretch; + } + + .row > * { + box-sizing: border-box; + } + + .row.gtr-uniform > * > :last-child { + margin-bottom: 0; + } + + .row.aln-left { + justify-content: flex-start; + } + + .row.aln-center { + justify-content: center; + } + + .row.aln-right { + justify-content: flex-end; + } + + .row.aln-top { + align-items: flex-start; + } + + .row.aln-middle { + align-items: center; + } + + .row.aln-bottom { + align-items: flex-end; + } + + .row > .imp-mobile { + order: -1; + } + + .row > .col-1-mobile { + width: 8.33333%; + } + + .row > .off-1-mobile { + margin-left: 8.33333%; + } + + .row > .col-2-mobile { + width: 16.66667%; + } + + .row > .off-2-mobile { + margin-left: 16.66667%; + } + + .row > .col-3-mobile { + width: 25%; + } + + .row > .off-3-mobile { + margin-left: 25%; + } + + .row > .col-4-mobile { + width: 33.33333%; + } + + .row > .off-4-mobile { + margin-left: 33.33333%; + } + + .row > .col-5-mobile { + width: 41.66667%; + } + + .row > .off-5-mobile { + margin-left: 41.66667%; + } + + .row > .col-6-mobile { + width: 50%; + } + + .row > .off-6-mobile { + margin-left: 50%; + } + + .row > .col-7-mobile { + width: 58.33333%; + } + + .row > .off-7-mobile { + margin-left: 58.33333%; + } + + .row > .col-8-mobile { + width: 66.66667%; + } + + .row > .off-8-mobile { + margin-left: 66.66667%; + } + + .row > .col-9-mobile { + width: 75%; + } + + .row > .off-9-mobile { + margin-left: 75%; + } + + .row > .col-10-mobile { + width: 83.33333%; + } + + .row > .off-10-mobile { + margin-left: 83.33333%; + } + + .row > .col-11-mobile { + width: 91.66667%; + } + + .row > .off-11-mobile { + margin-left: 91.66667%; + } + + .row > .col-12-mobile { + width: 100%; + } + + .row > .off-12-mobile { + margin-left: 100%; + } + + .row.gtr-0 { + margin-top: 0; + margin-left: 0em; + } + + .row.gtr-0 > * { + padding: 0 0 0 0em; + } + + .row.gtr-0.gtr-uniform { + margin-top: 0em; + } + + .row.gtr-0.gtr-uniform > * { + padding-top: 0em; + } + + .row.gtr-25 { + margin-top: 0; + margin-left: -0.5em; + } + + .row.gtr-25 > * { + padding: 0 0 0 0.5em; + } + + .row.gtr-25.gtr-uniform { + margin-top: -0.5em; + } + + .row.gtr-25.gtr-uniform > * { + padding-top: 0.5em; + } + + .row.gtr-50 { + margin-top: 0; + margin-left: -1em; + } + + .row.gtr-50 > * { + padding: 0 0 0 1em; + } + + .row.gtr-50.gtr-uniform { + margin-top: -1em; + } + + .row.gtr-50.gtr-uniform > * { + padding-top: 1em; + } + + .row { + margin-top: 0; + margin-left: -2em; + } + + .row > * { + padding: 0 0 0 2em; + } + + .row.gtr-uniform { + margin-top: -2em; + } + + .row.gtr-uniform > * { + padding-top: 2em; + } + + .row.gtr-150 { + margin-top: 0; + margin-left: -3em; + } + + .row.gtr-150 > * { + padding: 0 0 0 3em; + } + + .row.gtr-150.gtr-uniform { + margin-top: -3em; + } + + .row.gtr-150.gtr-uniform > * { + padding-top: 3em; + } + + .row.gtr-200 { + margin-top: 0; + margin-left: -4em; + } + + .row.gtr-200 > * { + padding: 0 0 0 4em; + } + + .row.gtr-200.gtr-uniform { + margin-top: -4em; + } + + .row.gtr-200.gtr-uniform > * { + padding-top: 4em; + } + + } + + @media screen and (max-width: 480px) { + + .row { + display: flex; + flex-wrap: wrap; + box-sizing: border-box; + align-items: stretch; + } + + .row > * { + box-sizing: border-box; + } + + .row.gtr-uniform > * > :last-child { + margin-bottom: 0; + } + + .row.aln-left { + justify-content: flex-start; + } + + .row.aln-center { + justify-content: center; + } + + .row.aln-right { + justify-content: flex-end; + } + + .row.aln-top { + align-items: flex-start; + } + + .row.aln-middle { + align-items: center; + } + + .row.aln-bottom { + align-items: flex-end; + } + + .row > .imp-mobilep { + order: -1; + } + + .row > .col-1-mobilep { + width: 8.33333%; + } + + .row > .off-1-mobilep { + margin-left: 8.33333%; + } + + .row > .col-2-mobilep { + width: 16.66667%; + } + + .row > .off-2-mobilep { + margin-left: 16.66667%; + } + + .row > .col-3-mobilep { + width: 25%; + } + + .row > .off-3-mobilep { + margin-left: 25%; + } + + .row > .col-4-mobilep { + width: 33.33333%; + } + + .row > .off-4-mobilep { + margin-left: 33.33333%; + } + + .row > .col-5-mobilep { + width: 41.66667%; + } + + .row > .off-5-mobilep { + margin-left: 41.66667%; + } + + .row > .col-6-mobilep { + width: 50%; + } + + .row > .off-6-mobilep { + margin-left: 50%; + } + + .row > .col-7-mobilep { + width: 58.33333%; + } + + .row > .off-7-mobilep { + margin-left: 58.33333%; + } + + .row > .col-8-mobilep { + width: 66.66667%; + } + + .row > .off-8-mobilep { + margin-left: 66.66667%; + } + + .row > .col-9-mobilep { + width: 75%; + } + + .row > .off-9-mobilep { + margin-left: 75%; + } + + .row > .col-10-mobilep { + width: 83.33333%; + } + + .row > .off-10-mobilep { + margin-left: 83.33333%; + } + + .row > .col-11-mobilep { + width: 91.66667%; + } + + .row > .off-11-mobilep { + margin-left: 91.66667%; + } + + .row > .col-12-mobilep { + width: 100%; + } + + .row > .off-12-mobilep { + margin-left: 100%; + } + + .row.gtr-0 { + margin-top: 0; + margin-left: 0em; + } + + .row.gtr-0 > * { + padding: 0 0 0 0em; + } + + .row.gtr-0.gtr-uniform { + margin-top: 0em; + } + + .row.gtr-0.gtr-uniform > * { + padding-top: 0em; + } + + .row.gtr-25 { + margin-top: 0; + margin-left: -0.5em; + } + + .row.gtr-25 > * { + padding: 0 0 0 0.5em; + } + + .row.gtr-25.gtr-uniform { + margin-top: -0.5em; + } + + .row.gtr-25.gtr-uniform > * { + padding-top: 0.5em; + } + + .row.gtr-50 { + margin-top: 0; + margin-left: -1em; + } + + .row.gtr-50 > * { + padding: 0 0 0 1em; + } + + .row.gtr-50.gtr-uniform { + margin-top: -1em; + } + + .row.gtr-50.gtr-uniform > * { + padding-top: 1em; + } + + .row { + margin-top: 0; + margin-left: -2em; + } + + .row > * { + padding: 0 0 0 2em; + } + + .row.gtr-uniform { + margin-top: -2em; + } + + .row.gtr-uniform > * { + padding-top: 2em; + } + + .row.gtr-150 { + margin-top: 0; + margin-left: -3em; + } + + .row.gtr-150 > * { + padding: 0 0 0 3em; + } + + .row.gtr-150.gtr-uniform { + margin-top: -3em; + } + + .row.gtr-150.gtr-uniform > * { + padding-top: 3em; + } + + .row.gtr-200 { + margin-top: 0; + margin-left: -4em; + } + + .row.gtr-200 > * { + padding: 0 0 0 4em; + } + + .row.gtr-200.gtr-uniform { + margin-top: -4em; + } + + .row.gtr-200.gtr-uniform > * { + padding-top: 4em; + } + + } + +/* Container */ + + .container { + margin: 0 auto; + width: 1200px; + } + + .container.medium { + width: 900px; + } + + @media screen and (max-width: 1680px) { + + .container { + width: 1080px; + } + + .container.medium { + width: 810px; + } + + } + + @media screen and (max-width: 1280px) { + + .container { + width: 960px; + } + + .container.medium { + width: 720px; + } + + } + + @media screen and (max-width: 980px) { + + .container { + width: 90%; + } + + .container.medium { + width: 90%; + } + + } + + @media screen and (max-width: 736px) { + + .container { + width: 100%; + } + + .container.medium { + width: 100%; + } + + } + +/* Section/Article */ + + section.special, article.special { + text-align: center; + } + + header.major { + text-align: center; + position: relative; + } + + header.major:after { + background: #888; + content: ''; + display: inline-block; + height: 3px; + margin: 0 0 2em 0; + width: 6em; + } + + header.major.alt { + text-align: center; + margin-bottom: 2em; + } + + header p { + letter-spacing: 0.125em; + margin: 0 0 1.5em 0; + position: relative; + text-transform: uppercase; + } + + header h2 + p { + font-size: 1em; + margin-top: -0.85em; + line-height: 1.75em; + } + + header h3 + p { + font-size: 0.9em; + margin-top: -0.75em; + line-height: 1.75em; + } + + header h4 + p, + header h5 + p, + header h6 + p { + font-size: 0.8em; + margin-top: -0.75em; + line-height: 1.75em; + } + +/* Form */ + + form { + margin: 0 0 2em 0; + } + + label { + color: #2a2a2a; + display: block; + font-size: 0.9em; + font-weight: 600; + margin: 0 0 1em 0; + } + + input[type="text"], + input[type="password"], + input[type="email"], + select, + textarea { + -moz-appearance: none; + -webkit-appearance: none; + -ms-appearance: none; + appearance: none; + border: none; + border: solid 2px #eee; + border-radius: 0; + color: inherit; + display: block; + outline: 0; + padding: 0 1em; + text-decoration: none; + width: 100%; + } + + input[type="text"]:invalid, + input[type="password"]:invalid, + input[type="email"]:invalid, + select:invalid, + textarea:invalid { + box-shadow: none; + } + + input[type="text"]:focus, + input[type="password"]:focus, + input[type="email"]:focus, + select:focus, + textarea:focus { + border-color: #51c5e8; + } + + select { + background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='40' height='40' preserveAspectRatio='none' viewBox='0 0 40 40'%3E%3Cpath d='M9.4,12.3l10.4,10.4l10.4-10.4c0.2-0.2,0.5-0.4,0.9-0.4c0.3,0,0.6,0.1,0.9,0.4l3.3,3.3c0.2,0.2,0.4,0.5,0.4,0.9 c0,0.4-0.1,0.6-0.4,0.9L20.7,31.9c-0.2,0.2-0.5,0.4-0.9,0.4c-0.3,0-0.6-0.1-0.9-0.4L4.3,17.3c-0.2-0.2-0.4-0.5-0.4-0.9 c0-0.4,0.1-0.6,0.4-0.9l3.3-3.3c0.2-0.2,0.5-0.4,0.9-0.4S9.1,12.1,9.4,12.3z' fill='%23eee' /%3E%3C/svg%3E"); + background-size: 1.25em; + background-repeat: no-repeat; + background-position: calc(100% - 1em) center; + height: 3.5em; + padding-right: 3.5em; + text-overflow: ellipsis; + } + + select:focus::-ms-value { + background-color: transparent; + } + + select::-ms-expand { + display: none; + } + + select option { + color: #2a2a2a; + background: #fff; + } + + input[type="text"], + input[type="password"], + input[type="email"], + select { + height: 3.5em; + } + + textarea { + padding: 0.75em 1em; + } + + input[type="checkbox"], + input[type="radio"] { + -moz-appearance: none; + -webkit-appearance: none; + -ms-appearance: none; + appearance: none; + display: block; + float: left; + margin-right: -2em; + opacity: 0; + width: 1em; + z-index: -1; + } + + input[type="checkbox"] + label, + input[type="radio"] + label { + text-decoration: none; + color: #4a4a4a; + cursor: pointer; + display: inline-block; + font-size: 1em; + font-weight: 300; + padding-left: 2.85em; + padding-right: 0.75em; + position: relative; + } + + input[type="checkbox"] + label:before, + input[type="radio"] + label:before { + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + display: inline-block; + font-style: normal; + font-variant: normal; + text-rendering: auto; + line-height: 1; + text-transform: none !important; + font-family: 'Font Awesome 5 Free'; + font-weight: 900; + } + + input[type="checkbox"] + label:before, + input[type="radio"] + label:before { + background: rgba(144, 144, 144, 0.05); + border: solid 2px #eee; + content: ''; + display: inline-block; + font-size: 0.8em; + height: 2.1em; + left: 0; + line-height: 1.925em; + position: absolute; + text-align: center; + top: 0; + width: 2.1em; + } + + input[type="checkbox"]:checked + label:before, + input[type="radio"]:checked + label:before { + background: #1d2726; + border-color: #1d2726; + color: #ffffff; + content: '\f00c'; + } + + input[type="checkbox"]:focus + label:before, + input[type="radio"]:focus + label:before { + border-color: #51c5e8; + } + + input[type="radio"] + label:before { + border-radius: 100%; + } + + ::-webkit-input-placeholder { + color: #bbb !important; + opacity: 1.0; + } + + :-moz-placeholder { + color: #bbb !important; + opacity: 1.0; + } + + ::-moz-placeholder { + color: #bbb !important; + opacity: 1.0; + } + + :-ms-input-placeholder { + color: #bbb !important; + opacity: 1.0; + } + +/* Box */ + + .box { + border: solid 2px #eee; + margin-bottom: 2em; + padding: 1.5em; + } + + .box > :last-child, + .box > :last-child > :last-child, + .box > :last-child > :last-child > :last-child { + margin-bottom: 0; + } + + .box.alt { + border: 0; + padding: 0; + } + +/* Icon */ + + .icon { + text-decoration: none; + border-bottom: none; + position: relative; + } + + .icon:before { + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + display: inline-block; + font-style: normal; + font-variant: normal; + text-rendering: auto; + line-height: 1; + text-transform: none !important; + font-family: 'Font Awesome 5 Free'; + font-weight: 400; + } + + .icon.solid:before { + font-weight: 900; + } + + .icon.brands:before { + font-family: 'Font Awesome 5 Brands'; + } + + .icon > .label { + display: none; + } + +/* Image */ + + .image { + border: 0; + display: inline-block; + position: relative; + } + + .image:before { + background: url("images/overlay.png"); + content: ''; + display: block; + height: 100%; + left: 0; + position: absolute; + top: 0; + width: 100%; + } + + .image img { + display: block; + } + + .image.left { + float: left; + margin: 0 1.5em 1em 0; + top: 0.25em; + } + + .image.right { + float: right; + margin: 0 0 1em 1.5em; + top: 0.25em; + } + + .image.fit { + display: block; + margin: 0 0 3em 0; + width: 100%; + } + + .image.fit img { + display: block; + width: 100%; + } + +/* List */ + + ol { + list-style: decimal; + margin: 0 0 2em 0; + padding-left: 1.25em; + } + + ol li { + padding-left: 0.25em; + } + + ul { + list-style: disc; + margin: 0 0 2em 0; + padding-left: 1em; + } + + ul li { + padding-left: 0.5em; + } + + ul.alt { + list-style: none; + padding-left: 0; + } + + ul.alt li { + border-top: solid 1px #eee; + padding: 0.5em 0; + } + + ul.alt li:first-child { + border-top: 0; + padding-top: 0; + } + + dl { + margin: 0 0 2em 0; + } + +/* Actions */ + + ul.actions { + display: -moz-flex; + display: -webkit-flex; + display: -ms-flex; + display: flex; + cursor: default; + list-style: none; + margin-left: -1em; + padding-left: 0; + } + + ul.actions li { + padding: 0 0 0 1em; + vertical-align: middle; + } + + ul.actions.special { + -moz-justify-content: center; + -webkit-justify-content: center; + -ms-justify-content: center; + justify-content: center; + width: 100%; + margin-left: 0; + } + + ul.actions.special li:first-child { + padding-left: 0; + } + + ul.actions.stacked { + -moz-flex-direction: column; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + margin-left: 0; + } + + ul.actions.stacked li { + padding: 1.3em 0 0 0; + } + + ul.actions.stacked li:first-child { + padding-top: 0; + } + + ul.actions.fit { + width: calc(100% + 1em); + } + + ul.actions.fit li { + -moz-flex-grow: 1; + -webkit-flex-grow: 1; + -ms-flex-grow: 1; + flex-grow: 1; + -moz-flex-shrink: 1; + -webkit-flex-shrink: 1; + -ms-flex-shrink: 1; + flex-shrink: 1; + width: 100%; + } + + ul.actions.fit li > * { + width: 100%; + } + + ul.actions.fit.stacked { + width: 100%; + } + + @media screen and (max-width: 480px) { + + ul.actions:not(.fixed) { + -moz-flex-direction: column; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + margin-left: 0; + width: 100% !important; + } + + ul.actions:not(.fixed) li { + -moz-flex-grow: 1; + -webkit-flex-grow: 1; + -ms-flex-grow: 1; + flex-grow: 1; + -moz-flex-shrink: 1; + -webkit-flex-shrink: 1; + -ms-flex-shrink: 1; + flex-shrink: 1; + padding: 1em 0 0 0; + text-align: center; + width: 100%; + } + + ul.actions:not(.fixed) li > * { + width: 100%; + } + + ul.actions:not(.fixed) li:first-child { + padding-top: 0; + } + + ul.actions:not(.fixed) li input[type="submit"], + ul.actions:not(.fixed) li input[type="reset"], + ul.actions:not(.fixed) li input[type="button"], + ul.actions:not(.fixed) li button, + ul.actions:not(.fixed) li .button { + width: 100%; + } + + ul.actions:not(.fixed) li input[type="submit"].icon:before, + ul.actions:not(.fixed) li input[type="reset"].icon:before, + ul.actions:not(.fixed) li input[type="button"].icon:before, + ul.actions:not(.fixed) li button.icon:before, + ul.actions:not(.fixed) li .button.icon:before { + margin-left: -0.5em; + } + + } + +/* Icons */ + + ul.icons { + cursor: default; + list-style: none; + padding-left: 0; + } + + ul.icons li { + display: inline-block; + padding: 0 1em 0 0; + } + + ul.icons li:last-child { + padding-right: 0; + } + + ul.icons li .icon:before { + font-size: 1.5em; + } + +/* Table */ + + .table-wrapper { + -webkit-overflow-scrolling: touch; + overflow-x: auto; + } + + table { + margin: 0 0 2em 0; + width: 100%; + } + + table tbody tr { + border: solid 1px #eee; + border-left: 0; + border-right: 0; + } + + table tbody tr:nth-child(2n + 1) { + background-color: rgba(144, 144, 144, 0.05); + } + + table td { + padding: 0.75em 0.75em; + } + + table th { + color: #2a2a2a; + font-size: 0.9em; + font-weight: 600; + padding: 0 0.75em 0.75em 0.75em; + text-align: left; + } + + table thead { + border-bottom: solid 2px #eee; + } + + table tfoot { + border-top: solid 2px #eee; + } + + table.alt { + border-collapse: separate; + } + + table.alt tbody tr td { + border: solid 1px #eee; + border-left-width: 0; + border-top-width: 0; + } + + table.alt tbody tr td:first-child { + border-left-width: 1px; + } + + table.alt tbody tr:first-child td { + border-top-width: 1px; + } + + table.alt thead { + border-bottom: 0; + } + + table.alt tfoot { + border-top: 0; + } + +/* Button */ + + input[type="submit"], + input[type="reset"], + input[type="button"], + button, + .button { + -moz-appearance: none; + -webkit-appearance: none; + -ms-appearance: none; + appearance: none; + -moz-transition: background-color 0.2s ease-in-out, color 0.2s ease-in-out; + -webkit-transition: background-color 0.2s ease-in-out, color 0.2s ease-in-out; + -ms-transition: background-color 0.2s ease-in-out, color 0.2s ease-in-out; + transition: background-color 0.2s ease-in-out, color 0.2s ease-in-out; + background-color: #1d2726; + border-radius: 0; + border: 0; + color: #ffffff !important; + cursor: pointer; + display: inline-block; + font-size: 0.9em; + font-weight: 600; + height: 4em; + letter-spacing: 0.125em; + line-height: 4em; + overflow: hidden; + padding: 0 2.75em; + text-align: center; + text-decoration: none; + text-overflow: ellipsis; + text-transform: uppercase; + white-space: nowrap; + } + + input[type="submit"]:hover, + input[type="reset"]:hover, + input[type="button"]:hover, + button:hover, + .button:hover { + background-color: #283634; + } + + input[type="submit"]:active, + input[type="reset"]:active, + input[type="button"]:active, + button:active, + .button:active { + background-color: #121818; + } + + input[type="submit"].icon, + input[type="reset"].icon, + input[type="button"].icon, + button.icon, + .button.icon { + padding-left: 2.35em; + } + + input[type="submit"].icon:before, + input[type="reset"].icon:before, + input[type="button"].icon:before, + button.icon:before, + .button.icon:before { + margin-right: 0.5em; + } + + input[type="submit"].fit, + input[type="reset"].fit, + input[type="button"].fit, + button.fit, + .button.fit { + width: 100%; + } + + input[type="submit"].small, + input[type="reset"].small, + input[type="button"].small, + button.small, + .button.small { + font-size: 0.8em; + height: 3.5em; + line-height: 3.5em; + padding: 0 2em; + } + + input[type="submit"].large, + input[type="reset"].large, + input[type="button"].large, + button.large, + .button.large { + font-size: 1.25em; + height: 3.15em; + line-height: 3.15em; + } + + input[type="submit"].alt, + input[type="reset"].alt, + input[type="button"].alt, + button.alt, + .button.alt { + background-color: transparent; + box-shadow: inset 0 0 0 2px #eee; + color: #2a2a2a !important; + } + + input[type="submit"].alt:hover, + input[type="reset"].alt:hover, + input[type="button"].alt:hover, + button.alt:hover, + .button.alt:hover { + background-color: rgba(144, 144, 144, 0.05); + } + + input[type="submit"].alt:active, + input[type="reset"].alt:active, + input[type="button"].alt:active, + button.alt:active, + .button.alt:active { + background-color: rgba(144, 144, 144, 0.1); + } + + input[type="submit"].alt.icon:before, + input[type="reset"].alt.icon:before, + input[type="button"].alt.icon:before, + button.alt.icon:before, + .button.alt.icon:before { + color: #bbb; + } + + input[type="submit"].primary, + input[type="reset"].primary, + input[type="button"].primary, + button.primary, + .button.primary { + background-color: #51c5e8; + color: #ffffff !important; + } + + input[type="submit"].primary:hover, + input[type="reset"].primary:hover, + input[type="button"].primary:hover, + button.primary:hover, + .button.primary:hover { + background-color: #68cdeb; + } + + input[type="submit"].primary:active, + input[type="reset"].primary:active, + input[type="button"].primary:active, + button.primary:active, + .button.primary:active { + background-color: #3abde5; + } + + input[type="submit"].disabled, input[type="submit"]:disabled, + input[type="reset"].disabled, + input[type="reset"]:disabled, + input[type="button"].disabled, + input[type="button"]:disabled, + button.disabled, + button:disabled, + .button.disabled, + .button:disabled { + background-color: #4a4a4a !important; + box-shadow: inset 0 -0.15em 0 0 rgba(0, 0, 0, 0.15); + color: #fff !important; + cursor: default; + opacity: 0.25; + } + +/* Feature */ + + .feature { + margin: 0 0 2em 0; + padding: 2em 0 2em 9em; + position: relative; + } + + .feature i { + border-radius: 100%; + border: solid 3px #eee; + color: #51c5e8; + display: block; + height: 7em; + left: 0; + line-height: 7.25em; + margin-top: -0.5em; + position: absolute; + text-align: center; + top: 2em; + width: 7em; + } + + .feature i:before { + font-size: 40px; + } + + .feature h3 { + margin-bottom: 0.5em; + } + + .feature p { + margin-bottom: 0; + } + +/* Image Feature */ + + .image-feature { + position: relative; + text-align: center; + margin: 0 0.5em 2em 0.5em; + } + + .image-feature > a { + display: block; + } + + .image-feature header { + background: #fff; + left: 0; + padding: 1.5em 0; + position: absolute; + top: 0; + width: 100%; + z-index: 1; + } + + .image-feature header:before { + -moz-transform: rotate(45deg); + -webkit-transform: rotate(45deg); + -ms-transform: rotate(45deg); + transform: rotate(45deg); + background: #fff; + bottom: -0.5em; + content: ''; + display: block; + height: 1em; + left: 50%; + margin-left: -0.5em; + position: absolute; + width: 1em; + } + + .image-feature header h3 { + font-size: 1em; + margin: 0; + } + + .image-feature .image { + margin: 0; + } + + .image-feature p { + margin: 0; + } + + .image-feature footer { + background: #1d2726; + background: rgba(29, 39, 38, 0.9); + bottom: 0; + color: #fff; + left: 0; + padding: 1.5em; + position: absolute; + width: 100%; + z-index: 1; + } + + .image-feature footer input[type="submit"].alt, + .image-feature footer input[type="reset"].alt, + .image-feature footer input[type="button"].alt, + .image-feature footer button.alt, + .image-feature footer .button.alt { + box-shadow: inset 0 0 0 2px rgba(255, 255, 255, 0.25); + color: #fff !important; + } + +/* Wrapper */ + + .wrapper { + padding: 4em 0 4em 0; + } + + .wrapper.style1 { + background: #fff; + color: #888; + } + + .wrapper.style1 h2, .wrapper.style1 h3, .wrapper.style1 strong { + color: #a5705b; + } + + .wrapper.style1 header.major:after { + background: rgba(0, 0, 0, 0.25); + } + + .wrapper.style2 { + background: #ffeee9; + } + + .wrapper.style3 { + background: #f4f4f4; + } + + .wrapper.style4 { + background: #fafafa; + } + +/* Header */ + + +.logo-kep{ + width: 70px; + line-height: 5em; + vertical-align: middle; + margin-left: 5em; +} + +.booktime{ + background-color: #E4AD9C; + color: #000; + margin-left:2em; + padding-left: 10px; + padding-right: 10px; +} + + #page-wrapper { + padding-top: 3em; + } + + #header { + background: #fff; + color: #000; + cursor: default; + height: 5em; + left: 0; + line-height: 5em; + position: fixed; + top: 0; + width: 100%; + z-index: 10000; + } + + #header h1 { + color: #E4AD9C; + height: inherit; + left: 10.5em; + line-height: inherit; + margin: 0; + padding: 0; + position: absolute; + top: 0; + } + + #header h1 a { + font-size: 1em; + } + + #header h1 a:before { + color: #51c5e8; + margin-right: 0.35em; + } + + #header nav { + font-weight: 600; + height: inherit; + letter-spacing: 0.125em; + line-height: inherit; + position: absolute; + right: 1.5em; + text-transform: uppercase; + top: 0; + vertical-align: middle; + } + + #header nav > ul { + list-style: none; + line-height: 4.5em; + margin: 0; + padding-left: 0; + vertical-align: middle; + } + + #header nav > ul > li { + display: inline-block; + margin-left: 2em; + /*padding-left: 0;*/ + } + + #header nav > ul > li.booktime { + margin-right: 2em; + } + + #header nav > ul > li.socialmedia-menu { + color: #fff; + font-size: 30px; + margin: auto 0 auto 0; +} + + + #header nav > ul > li.language { + padding-left: 0; + margin: 0; + font-size: 12px; + color: #888; + -moz-transition: color 0.2s ease-in-out; + -webkit-transition: color 0.2s ease-in-out; + -ms-transition: color 0.2s ease-in-out; + transition: color 0.2s ease-in-out; + } + #header nav > ul > li.language:hover { + color: #fff; + } + + #header nav > ul > li a { + -moz-transition: color 0.2s ease-in-out; + -webkit-transition: color 0.2s ease-in-out; + -ms-transition: color 0.2s ease-in-out; + transition: color 0.2s ease-in-out; + color: #E4AD9C; + display: inline-block; + text-decoration: none; + font-size: 0.8em; + } + + #header nav > ul > li a:before { + margin-right: 0.5em; + /*opacity: 0.5;*/ + } + + #header nav > ul > li a:hover { + color: #a5705b; + } + #header nav > ul > li.booktime a { + color: #fff; + } + + #header nav > ul > li.booktime a:hover { + color: #a5705b; + } + + #header nav > ul > li.active > a { + color: #fff; + } + + #header nav > ul > li:first-child { + margin-left: 0; + } + + #header nav > ul > li input[type="submit"], + #header nav > ul > li input[type="reset"], + #header nav > ul > li input[type="button"], + #header nav > ul > li button, + #header nav > ul > li .button { + font-size: 1em; + height: 2.25em; + line-height: 2.25em; + margin-bottom: 0; + padding: 0 1em; + position: relative; + top: -0.125em; + vertical-align: middle; + } + + #header nav > ul > li > ul { + display: none; + } + + #header .container { + position: relative; + } + + #header .container h1 { + left: 0; + } + + #header .container nav { + right: 0; + } + + .dropotron { + background: #1d2726; + color: #fff; + font-weight: 600; + letter-spacing: 0.125em; + list-style: none; + margin-top: -1em; + min-width: 14em; + padding: 1.25em 0; + text-transform: uppercase; + } + + .dropotron.level-0 { + font-size: 0.8em; + margin-top: 1em; + } + + .dropotron.level-0:before { + -moz-transform: rotate(45deg); + -webkit-transform: rotate(45deg); + -ms-transform: rotate(45deg); + transform: rotate(45deg); + background: #1d2726; + content: ''; + display: block; + height: 1em; + position: absolute; + right: 1.5em; + top: -0.5em; + width: 1em; + } + + .dropotron li > a { + -moz-transition: color 0.2s ease-in-out; + -webkit-transition: color 0.2s ease-in-out; + -ms-transition: color 0.2s ease-in-out; + transition: color 0.2s ease-in-out; + color: #ccc; + display: block; + padding: 0.125em 1.25em; + text-decoration: none; + } + + .dropotron li > a:hover { + color: #fff; + } + + .dropotron li.active > a { + color: #fff; + } + +/* Banner */ + + #banner { + background-color: #fff; + /*background-attachment: scroll, fixed; + background-image: url("images/overlay.png"), url("../../images/banner.jpg"); + background-position: top left, center center; + background-repeat: no-repeat; + background-size: cover; + background-size: auto, cover;*/ + color: #fff; + padding: 0em 0; + position: relative; + text-align: center; + } + + #banner img{ + width: 100%; + } + + #banner:after { + -moz-transition: opacity 1s ease-in-out; + -webkit-transition: opacity 1s ease-in-out; + -ms-transition: opacity 1s ease-in-out; + transition: opacity 1s ease-in-out; + background: #313148; + content: ''; + height: 100%; + left: 0; + opacity: 0; + position: absolute; + top: 0; + width: 100%; + z-index: 1; + } + + #banner :last-child { + margin-bottom: 0; + } + + #banner .inner { + background: #1d2726; + background: rgba(29, 39, 38, 0.9); + display: inline-block; + padding: 3.5em 5em; + position: relative; + z-index: 2; + } + + #banner .inner h2 { + color: inherit; + font-size: 2.5em; + line-height: 1.35em; + margin: 0; + padding: 0; + } + + #banner .inner p { + font-size: 1em; + letter-spacing: 0.125em; + line-height: 2em; + margin: 2em 0 0 0; + padding: 2em 0 0 0; + position: relative; + text-transform: uppercase; + top: -0.25em; + } + + #banner .inner p:before { + background: #888; + background: rgba(255, 255, 255, 0.25); + content: ''; + display: block; + height: 3px; + left: 50%; + margin: 0 0 0 -3em; + position: absolute; + top: 0; + width: 6em; + } + + #banner .inner .actions { + margin-top: 2em; + } + + #banner .inner input[type="submit"].alt, + #banner .inner input[type="reset"].alt, + #banner .inner input[type="button"].alt, + #banner .inner button.alt, + #banner .inner .button.alt { + box-shadow: inset 0 0 0 2px rgba(255, 255, 255, 0.25); + color: #fff !important; + } + + body.is-preload #banner:after { + opacity: 1.0; + } + +/* Mobile booking */ + +#mobil-menu{ + display: none; + background: #E4AD9C; +} + +.mobil-menucont ul { + list-style: none; + font-size: 1em; + line-height: 4.5em; + text-align: center; + margin: 0; + padding-left: 0; + vertical-align: middle; +} + +.mobil-menucont ul li{ + color: #fff; + margin: 0 0.5em; + display: inline; +} + +.mobil-menucont ul li a{ + color: #fff; + text-decoration: none; + } + +.mobil-menucont ul .mobil-menu-book{ + margin-right: 2em; + padding: 0.5em 0.5em; + font-weight: 600; +} + + + @media screen and (max-width: 980px) { + #mobil-menu{ + display: block; + } +} + +/* Main */ + + #main > header.major { + margin: 0 0 2em 0; + text-align: center; + } + + header.major h2{ + font-family: 'Abril Fatface', cursive; + color: #a5705b; + font-size: 50px; + font-weight: 400; + margin-bottom: 0; + } + + + header.major h4{ + font-size: 13px; + color: #888888; + } + +.one-half { + /*float: left;*/ + width: 100%; + padding: 0 0px; + position: relative; + text-align: left; + overflow: hidden; +} + +.prices-category{ + /*font-family: 'Abril Fatface', cursive;*/ + text-align: center; + margin-top: 2em; + margin-bottom: 2em; +} + +.prices-category h4{ + color: #E4AD9C; +} + + +.category-content { + position: relative; + display: inline-block; + width: 100%; + padding-bottom: 15px; + padding-top: 18px; + border-bottom: 1px solid #3d3d3d;} + +.category-text-left { + float: left; +} + +.main-title a { + text-decoration: none; + font-size: 16px; + color: #a5705b; + font-weight: 500; + -webkit-transition: all 0.5s ease; + -moz-transition: all 0.5s ease; + -o-transition: all 0.5s ease; + transition: all 0.5s ease; +} + +.sub-title { + font-size: 13px; + color: #888888; + font-weight: 400; + padding-right: 40px; + letter-spacing: 0.6px; +} + +.category-text-right { + float: right; +} + +.category-content .price { + font-size: 16px; + color: #E4AD9C; + letter-spacing: 0.5px; + font-weight: 600; + display: inline-block; + -webkit-transition: all 0.5s ease; + -moz-transition: all 0.5s ease; + -o-transition: all 0.5s ease; + transition: all 0.5s ease; +} + + +.common-home .box-heading:before, .box.related .box-heading:before { + content: ""; + background: url(../../assets/img/ollo.png) no-repeat scroll; + width: 75px; + height: 65px; + position: absolute; + top: 0; + left: 0; + right: 0; + margin: 0 auto; + display: inline-block; +} + + +/* About Us */ + +#aboutus .container .inner .dolgozo-nev{ + width: 100%; + text-align: center; + margin-bottom: 2em; +} +#aboutus .container .inner hr { + margin: 4em auto 4em auto; + border-bottom: solid 3px #888; + width: 40%; +} + +#aboutus .container .inner .dolgozo-nev .dolgozo-kep{ + width: 150px; + border-radius: 50%; + margin-bottom: 1em; +} + +#aboutus .container .inner .dolgozo-nev h4{ + color: #E4AD9C; +} + +#aboutus .container .inner .dolgozo-nev h4 span{ + color: #888; +} + +.bemutatkozas, .bemutatkozas-dolgozo{ + display: flex; + width: 100%; +} + +.bem-bal, .bem-dolgozo-bal{ + width: 60%; +} + +.bem-bal h4{ + color: #fff; +} + +.bem-bal p{ + text-align: justify; +} + +.bem-dolgozo-bal p{ + text-align: justify; + font-style: italic; + +} + +.bem-jobb{ + width: 40%; + margin-left: 4em; + float: right; +} + +.bem-jobb img{ + width: 100%; +} + +.bem-jobb h4{ + margin-top: 1em; + text-align: center; + color: #E4AD9C; +} + +.bem-jobb h4 span{ + color: #888; +} +.bem-dolgozo-jobb{ + width: 40%; + float: right; + text-align: right; + margin: auto; + +} + +.bem-dolgozo-jobb img{ + opacity: 0.8; + margin-left: 10px; + margin-right: 10ox; + width: 40%; + transition: opacity .25s ease-in-out; + -moz-transition: opacity .25s ease-in-out; + -webkit-transition: opacity .25s ease-in-out; +} + +.bem-dolgozo-jobb img:hover{ + opacity: 1; + +} + + + +/* Treatments - Our Services */ + + #treatments{ + clear: both; + } + + .service-block { + width: 100%; + display: block; + } + + + .service-area .one-third { + + width: 28%; + padding: 0; + overflow: hidden; + } + + .service-area .one-third.service-part1, .service-area .one-third.service-part4 { + width: 30%; + padding: 0; + float: left; + overflow: hidden; + } + + .service-area .one-third.service-part2 { + width: 42%; + /*margin-top:30px; + margin-bottom: 30px;*/ + padding: 0 30px; + float:left; + overflow: hidden; + } + + .service-area .one-third .service img { + -webkit-transform: rotateY(0deg); + -moz-transform: rotateY(0deg); + -ms-transform: rotateY(0deg); + -o-transform: rotateY(0deg); + transform: rotateY(0deg); + transition: all 0.9s ease 0s; + -webkit-transition: all 0.9s ease 0s; + -moz-transition: all 0.9s ease 0s; + -ms-transition: all 0.9s ease 0s; + -o-transition: all 0.9s ease 0s; + max-width: 100%; + } + + .service-area .one-third .service:hover img { + -webkit-transform: rotateY(-180deg); + -moz-transform: rotateY(-180deg); + -ms-transform: rotateY(-180deg); + -o-transform: rotateY(-180deg); + transform: rotateY(-180deg); + transition: all 0.9s ease 0s; + -webkit-transition: all 0.9s ease 0s; + -moz-transition: all 0.9s ease 0s; + -ms-transition: all 0.9s ease 0s; + -o-transition: all 0.9s ease 0s; + } + + + .service-area .one-third .service .service-text .service-icon { + background: url(../../assets/img/service-icon-rose.png) no-repeat scroll; + float: right; + height: 80px; + border-radius: 50%; + width: 80px; + position: relative; + background-color: #fff; + display: inline-block; + transition: all 0.5s ease 0s; + -webkit-transition: all 0.5s ease 0s; + -moz-transition: all 0.5s ease 0s; + -ms-transition: all 0.5s ease 0s; + -o-transition: all 0.5s ease 0s; + } + + .service .service-text .service-content .main-title { + font-size: 14px; + font-weight: 600; + color: #E4AD9C; + text-transform: capitalize; + letter-spacing: 0.8px; + padding-bottom: 10px; + } + + .service .service-text .service-content .sub-title-serv { + font-size: 13px; + color: #888888; + font-weight: 400; + line-height: 20px; + letter-spacing: 0.6px; + } + + .service-area .one-third .service .service-text .service-content { + margin-right: 100px; + } + + .service-area .one-third .service .service-text { + padding: 0 0px 95px; + text-align: right; + } + + .service-area .one-third .service.service3 .service-text .service-content { + margin-right: 0px; + margin-left: 100px; + } + + .service-area .one-third .service.service3 .service-text { + text-align: left; + } + + + + .service-area .one-third .service.service3 .service-text .service-icon { + float: left; + } + + .service-area .one-third .service .service-text .service-icon.icon1 { + background-position: center -65px; + } + .service-area .one-third .service .service-text:hover .service-icon.icon1 { + background-position:center 22px; + } + .service-area .one-third .service .service-text .service-icon.icon2 { + background-position:center -417px; + } + .service-area .one-third .service .service-text:hover .service-icon.icon2 { + background-position: center -330px; + } + .service-area .one-third .service .service-text .service-icon.icon3 { + background-position:center -765px; + } + .service-area .one-third .service .service-text:hover .service-icon.icon3 { + background-position: center -678px; + } + .service-area .one-third .service.service3 .service-text .service-icon.icon1 { + background-position: center -242px; + } + .service-area .one-third .service.service3 .service-text:hover .service-icon.icon1 { + background-position: center -155px; + } + .service-area .one-third .service.service3 .service-text .service-icon.icon2 { + background-position: center -590px; + } + .service-area .one-third .service.service3 .service-text:hover .service-icon.icon2 { + background-position:center -503px; + } + .service-area .one-third.service-part3 .service .service-text .service-icon.icon3 { + background-position: center -939px; + } + .service-area .one-third.service-part3 .service .service-text:hover .service-icon.icon3 { + background-position:center -852px; + } + .service-area .one-third .service .service-text:hover .service-content .main-title { + color: #a5705b; + } + + + +/* One */ + + #one { + padding-top:10em; + padding-bottom: 5em; + } + + #one p { + font-size: 1.25em; + line-height: 1.75em; + margin: -0.5em 0 0 0; + } + + #one .inner { + display: inline-block; + margin-top: -6em; + padding-right: 6em; + vertical-align: middle; + width: 100%; + } + + #one .device { + border: solid 40px #fff; + border-bottom: 0; + border-radius: 20px; + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; + display: inline-block; + margin-bottom: 0; + position: relative; + vertical-align: middle; + width: 100%; + } + + #one .device:after { + background: #eee; + border-radius: 100%; + content: ''; + height: 10px; + left: 50%; + margin: -23px 0 0 -5px; + position: absolute; + top: 0; + width: 10px; + } + + +/*two */ + + .nyitvatartas .about-content { + position: relative; + display: inline-block; + width: 100%; + padding: 25px 0px 15px; + border-bottom: 1px solid #3d3d3d; + font-size: 16px; + font-weight: 600; + } + + .nyitvatartas .title, .nyitvatartas .time{ + color: #888; + } + + .closed{ + color: rgba(228,173,156,0.6); + } + + .nyitvatartas .about-content .about-text-left { + float: left; + } + + .nyitvatartas .about-content .about-text-right { + float: right; +} + + + +/* Footer */ + +#footer .footer-div{ + display: flex; +} + + +#footer .footer-div .companyname{ + color: #fff; + font-family: 'Abril Fatface', cursive; + font-size: 24px; + margin-bottom: 20px; +} + +#footer .footer-div .companyname span{ + border-bottom: solid 5px #fff; + } + +#footer .footer-div ul{ + margin: 0; + list-style: none; +} + +#footer .footer-logo{ + max-width: 100px; +} + + #footer { + background: #a5705b; + color: #fff; + padding: 2em 0 0 0; + text-align: center; + } + + #footer .icons { + font-size: 24px; + margin: 0 0 1em 0; + padding-left: 0; + } + + #footer .icons li { + margin-top: 0.5em; + font-size: 16px; + padding: 0 1em 0 1em; + } + + #footer .icons li:last-child { + padding-right: 0; + } + + #footer .icons li a { + -moz-transition: color 0.2s ease-in-out; + -webkit-transition: color 0.2s ease-in-out; + -ms-transition: color 0.2s ease-in-out; + transition: color 0.2s ease-in-out; + color: #fff; + } + + #footer .icons li a:hover { + color: #E4AD9C; + } + + .footer-bal{ + margin: 0 10px; + width: 30%; + + } + + .footer-bal .contact-block a{ + text-decoration: none; + color: #fff; +} + + + .footer-jobb{ + width: 60%; + margin:0; + float: left; + } + + .footer-jobb img{ + width: 100%; + margin:0; + } + + + #footer .copyright { + color: #888; + background: #fff; + font-size: 0.9em; + padding: 1em 0 1em 0; + margin: 2em 0 0 0; + } + + .ui-widget-content { + border: 1px solid #f5d3c8!important; + background: #fff4f1!important; + color: #333333!important; + } + + .ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default, .ui-button, html .ui-button.ui-state-disabled:hover, html .ui-button.ui-state-disabled:active { + border: 1px solid #f5d3c8!important; + background: #e4ad9c url(images/ui-bg_glass_100_f6f6f6_1x400.png) 50% 50% repeat-x; + font-weight: bold!important; + color: #a5705b!important; + } + + table thead { + border-bottom: solid 2px #e4ad9c!important; + } + + .ui-widget-header { + border: 1px solid #a5705b!important; + background: #E4AD9C!important; + } + + .widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight { + border: 1px solid #e4ad9c!important; + background: #ebcec5!important; + } + + + + .ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active, a.ui-button:active, .ui-button:active, .ui-button.ui-state-active:hover { + border: 1px solid #a5705b; + background: #ffffff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x; + } + + .ui-state-active{ + background: #e4ad9c url(images/ui-bg_glass_100_f6f6f6_1x400.png) 50% 50% repeat-x!important; + } + + table tbody tr { + border: solid 1px #f5d3c8!important; + border-left: 0; + border-right: 0; + } + + table tbody tr:nth-child(2n + 1) { + background-color: rgb(255 244 241)!important; + } + + .ui-state-highlight{ + border: 1px solid #a5705b!important; + background: #f5d3c8!important; + } + + + + #datepicker table tr td:last-child a{ + background-image: none!important; + /*background-color: rgb(173, 40, 40)!important;*/ + color:red!important; + } + + .ui-state-disabled { + cursor: default !important; + pointer-events: none; + opacity: 0!important; + + } + + +/* Wide */ + + @media screen and (max-width: 1680px) { + + /* Basic */ + + body, input, select, textarea { + font-size: 11pt; + } + + } + +/* Normal */ + + @media screen and (max-width: 1280px) { + + /* Basic */ + + body, input, select, textarea { + font-size: 11pt; + } + + /* Feature */ + + .feature { + padding-left: 7em; + } + + .feature i { + height: 5.25em; + line-height: 5.5em; + margin-top: 0; + width: 5.25em; + } + + .feature i:before { + font-size: 32px; + } + + /* Wrapper */ + + .wrapper { + padding: 4em 0 2em 0; + } + + #header nav > ul > li{ + margin-left: 0.5em; + } + + /* Banner */ + + #banner { + background-attachment: scroll; + padding: 0 0; + } + + #banner .inner { + padding: 3em 4em; + } + + #banner .inner h2 { + font-size: 2.25em; + } + + /* Main */ + + #main { + padding: 2em 0; + } + + .service-area .one-third .service .service-text{ + padding: 0 0 45px; + } + + .main-title a {font-size: 14px;} + + .sub-title{font-size:10px;} + + + /* One */ + + #one .inner { + margin-top: -4em; + padding-right: 4em; + } + + #one .device { + border-width: 35px; + } + + #one .device:after { + margin-top: -22px; + } + + } + +/* Narrow */ + + #navPanel, #navButton { + display: none; + } + + @media screen and (max-width: 980px) { + + /* Basic */ + + html, body { + overflow-x: hidden; + } + + body, input, select, textarea { + font-size: 12pt; + } + + h2 { + font-size: 1.25em; + line-height: 1.75em; + } + + h3 { + font-size: 1.1em; + line-height: 1.5em; + } + + h4 { + font-size: 1em; + line-height: 1.5em; + } + + /* Section/Article */ + + section.special, article.special { + text-align: center; + } + + header h2 + p { + font-size: 0.9em; + } + + header h3 + p { + font-size: 0.8em; + } + + header h4 + p, + header h5 + p, + header h6 + p { + font-size: 0.8em; + } + + /* Feature */ + + .feature { + padding-left: 9em; + } + + .feature i { + height: 7em; + line-height: 7.5em; + margin-top: -0.5em; + width: 7em; + } + + .feature i:before { + font-size: 42px; + } + + /* Image Feature */ + + .image-feature .image { + max-height: 30em; + overflow: hidden; + } + + /* Header */ + + #page-wrapper { + padding-top: 0; + } + + #header { + display: none; + } + + /* Banner */ + + #banner { + padding: 0em 0; + } + + #banner .inner { + padding: 3em; + } + + #banner .inner h2 { + font-size: 2em; + } + + + + /* Main */ + + #main > header.major { + margin: 0; + } + + .bem-jobb{margin-left:2em;} + + .bem-bal p, .bem-dolgozo-bal p {font-size:14px; margin: 0 0 0.5em 0;} + + .bem-dolgozo-jobb {width: 30%;} + + .bem-dolgozo-jobb img{width: 70%;} + + header.major h2 {font-size: 36px;} + + + /* One */ + + #one {padding-top: 2em;} + + #one p { + font-size: 1em; + } + + #one .inner { + display: block; + margin: 0 auto; + max-width: 100%; + padding: 0; + text-align: center; + width: 35em; + } + + #one .device { + display: block; + margin: 4em auto 0 auto; + max-width: 100%; + width: 30em; + } + + .service-area .one-third.service-part1{width: 50%; padding-right: 10px;} + .service-area .one-third.service-part2{display: none;} + .service-area .one-third.service-part3{width:50%;padding-left: 10px;} + + .one-half {float: none; width: 100%;} + #footer .footer-div{display:block;} + .footer-bal{width: 100%;} + .footer-jobb{width: 100%; float: none; margin-top:2em;} + + + /* Off-Canvas Navigation */ + + #page-wrapper { + -moz-backface-visibility: hidden; + -webkit-backface-visibility: hidden; + -ms-backface-visibility: hidden; + backface-visibility: hidden; + -moz-transition: -moz-transform 0.5s ease; + -webkit-transition: -webkit-transform 0.5s ease; + -ms-transition: -ms-transform 0.5s ease; + transition: transform 0.5s ease; + padding-bottom: 1px; + } + + #navButton { + -moz-backface-visibility: hidden; + -webkit-backface-visibility: hidden; + -ms-backface-visibility: hidden; + backface-visibility: hidden; + -moz-transition: -moz-transform 0.5s ease; + -webkit-transition: -webkit-transform 0.5s ease; + -ms-transition: -ms-transform 0.5s ease; + transition: transform 0.5s ease; + display: block; + height: 4em; + left: 0; + position: fixed; + top: 0; + width: 6em; + z-index: 10001; + } + + #navButton .toggle { + text-decoration: none; + height: 100%; + left: 0; + position: absolute; + top: 0; + width: 100%; + } + + #navButton .toggle:before { + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + display: inline-block; + font-style: normal; + font-variant: normal; + text-rendering: auto; + line-height: 1; + text-transform: none !important; + font-family: 'Font Awesome 5 Free'; + font-weight: 900; + } + + #navButton .toggle:before { + background: rgba(29, 39, 38, 0.75); + color: #ffffff; + content: '\f0c9'; + display: block; + font-size: 18px; + height: 2.35em; + left: 0.5em; + line-height: 2.35em; + position: absolute; + text-align: center; + top: 0.5em; + width: 3em; + } + + #navPanel { + -moz-backface-visibility: hidden; + -webkit-backface-visibility: hidden; + -ms-backface-visibility: hidden; + backface-visibility: hidden; + -moz-transform: translateX(-275px); + -webkit-transform: translateX(-275px); + -ms-transform: translateX(-275px); + transform: translateX(-275px); + -moz-transition: -moz-transform 0.5s ease; + -webkit-transition: -webkit-transform 0.5s ease; + -ms-transition: -ms-transform 0.5s ease; + transition: transform 0.5s ease; + background-image: -moz-linear-gradient(left, rgba(0,0,0,0) 95%, rgba(0,0,0,0.1)); + background-image: -webkit-linear-gradient(left, rgba(0,0,0,0) 95%, rgba(0,0,0,0.1)); + background-image: -ms-linear-gradient(left, rgba(0,0,0,0) 95%, rgba(0,0,0,0.1)); + background-image: linear-gradient(left, rgba(0,0,0,0) 95%, rgba(0,0,0,0.1)); + display: block; + height: 100%; + left: 0; + overflow-y: auto; + position: fixed; + top: 0; + width: 275px; + z-index: 10002; + background: #1d2726; + color: #c7c9c9; + padding: 0.25em 1.5em; + } + + #navPanel .link { + border-top: solid 1px rgba(255, 255, 255, 0.05); + color: #c7c9c9; + display: block; + font-size: 0.8em; + font-weight: 600; + height: 3.5em; + letter-spacing: 0.125em; + line-height: 3.5em; + text-decoration: none; + text-transform: uppercase; + } + + #navPanel .link:first-child { + border-top: 0; + } + + #navPanel .link.depth-0 { + color: #ffffff; + } + + #navPanel .link .indent-1 { + display: inline-block; + width: 1.25em; + } + + #navPanel .link .indent-2 { + display: inline-block; + width: 2.5em; + } + + #navPanel .link .indent-3 { + display: inline-block; + width: 3.75em; + } + + #navPanel .link .indent-4 { + display: inline-block; + width: 5em; + } + + #navPanel .link .indent-5 { + display: inline-block; + width: 6.25em; + } + + body.navPanel-visible #page-wrapper { + -moz-transform: translateX(275px); + -webkit-transform: translateX(275px); + -ms-transform: translateX(275px); + transform: translateX(275px); + } + + body.navPanel-visible #navButton { + -moz-transform: translateX(275px); + -webkit-transform: translateX(275px); + -ms-transform: translateX(275px); + transform: translateX(275px); + } + + body.navPanel-visible #navPanel { + -moz-transform: translateX(0); + -webkit-transform: translateX(0); + -ms-transform: translateX(0); + transform: translateX(0); + } + + } + +/* Mobile */ + + @media screen and (max-width: 736px) { + + /* Basic */ + + body, input, select, textarea { + font-size: 12pt; + } + + /* Feature */ + + .feature { + margin: 0 auto 2em auto; + max-width: 100%; + padding: 0; + text-align: center; + width: 30em; + } + + .feature i { + left: 0; + margin: 0 auto 2em auto; + position: relative; + top: 0; + } + + /* Image Feature */ + + .image-feature { + margin: 0 auto 2em auto; + max-width: 100%; + width: 25em; + } + + .image-feature .image { + max-height: none; + } + + /* Wrapper */ + + .wrapper { + padding: 2.5em 1.25em 0.5em 1.25em; + } + + /* Banner */ + + #banner { + padding: 6em 0; + } + + #banner .inner { + padding: 2em 2.5em; + width: 100%; + } + + #banner .inner h2 { + font-size: 1.5em; + } + + #banner .inner p { + margin: 1.5em 0 0 0; + padding: 1.5em 0 0 0; + } + + /* One */ + + #one .device { + border-width: 20px; + margin-top: 2em; + max-width: 100%; + width: 25em; + } + + #one .device:after { + height: 8px; + margin: -13px 0 0 -4px; + width: 8px; + } + + .bookingContainer { + width: 95%!important; + margin-right: 10px!important; + margin-left: 10px!important; + } + + .bookingResultsWrapper { + width: 665px!important; + margin-left: 0!important; + } + + #bookingStep3 { + min-height: 720px!important; + } + + .serviceInfoCol { + padding-left: 5px!important; + } + + .serviceCol h4 { + margin-left: 0!important; + } + + .serviceNameCol { + padding-left: 0!important; + } + + .serviceTable { + width: 93%!important; + margin-left: 5px!important; + margin-right: 0!important; + padding: 0 5px!important; + margin-bottom: 100px!important; + } + + .bookingResultsWrapper { + width: 100%!important; + float: none!important; + } + + .bookingCalendar { + float: none!important; + } + + .availableTimes { + margin-bottom: 60px!important; + } + + .bookingContainer { + margin-top: -12px!important; + } + } + +/* Mobile (Portrait) */ + + @media screen and (max-width: 480px) { + + #banner{padding:0;} + .service-part2{display: none;} + .one-third{width: 100%;} + .service-area .one-third.service-part1{width: 100%;} + .service-area .one-third.service-part3{width: 100%;} + .service-area .one-third .service .service-text {text-align: center; padding-bottom: 30px;} + .service-area .one-third .service .service-text .service-icon {float: none;} + .service-area .one-third .service .service-text .service-content {margin: 0;} + .service .service-text .service-content .sub-title-serv {padding: 0 20px 0 20px;} + .service-area .one-third .service.service3 .service-text .service-icon {float: none;} + .service-area .one-third .service.service3 .service-text {text-align:center;} + .service-area .one-third .service.service3 .service-text .service-content {margin-left: 0;} + .service-area .one-third {width: 100%;} + + #one{padding-top: 3em;} + + .bemutatkozas{display: block;} + .bem-bal{width: 100%;} + .bem-jobb{width: 100%; margin-bottom: 2em;} + + .bemutatkozas-dolgozo{display: block;} + .bem-dolgozo-bal {width: 100%;} + .bem-dolgozo-jobb {width: 100%; float: none; text-align: center;} + + #czcategorylistblock .czcategorylist-wrapper .category_lists .one-half .category-content {width: 100%; } + .one-half{width:100%; float: none;} + + .category-text-left{float: none;} + .category-text-right {display: block; float: left;} + + #two {margin-bottom: 3em;} + header.major h2 {font-size: 32px;} + + #footer .footer-div {display: block;} + .footer-bal{width:100%;} + .footer-jobb{width:100%; float: none; margin-top:2em;} + + + /* Basic */ + + html, body { + min-width: 320px; + } + + body, input, select, textarea { + font-size: 12pt; + } + + h1 br, h2 br, h3 br, h4 br, h5 br, h6 br { + display: none; + } + + h2 { + font-size: 1.15em; + line-height: 1.75em; + } + + h3 { + font-size: 1em; + line-height: 1.5em; + } + + /* List */ + + ul.actions { + margin: 0 0 2em 0; + } + + ul.actions li { + display: block; + padding: 1em 0 0 0; + text-align: center; + width: 100%; + } + + ul.actions li:first-child { + padding-top: 0; + } + + ul.actions li > * { + margin: 0 !important; + width: 100%; + } + + ul.actions li > *.icon:before { + margin-left: -2em; + } + + ul.actions.small li { + padding: 0.5em 0 0 0; + } + + ul.actions.small li:first-child { + padding-top: 0; + } + + /* Button */ + + input[type="submit"], + input[type="reset"], + input[type="button"], + button, + .button { + padding: 0; + } + + /* One */ + + #one .device { + border-width: 15px; + } + + #one .device:after { + height: 5px; + margin: -10px 0 0 -2.5px; + width: 5px; + } + + } \ No newline at end of file diff --git a/assets/css/beauty_20250312.css b/assets/css/beauty_20250312.css new file mode 100755 index 0000000..b6c343d --- /dev/null +++ b/assets/css/beauty_20250312.css @@ -0,0 +1,4562 @@ +@import url(../css/fontawesome-all.min.css); +@import url("https://fonts.googleapis.com/css?family=Open+Sans:300,600,300italic,600italic"); + +/* + Catalyst by Pixelarity + pixelarity.com | hello@pixelarity.com + License: pixelarity.com/license +*/ + + +html{ + scroll-behavior: smooth; +} + +html, body, div, span, applet, object, +iframe, h1, h2, h3, h4, h5, h6, p, blockquote, +pre, a, abbr, acronym, address, big, cite, +code, del, dfn, em, img, ins, kbd, q, s, samp, +small, strike, strong, sub, sup, tt, var, b, +u, i, center, dl, dt, dd, ol, ul, li, fieldset, +form, label, legend, table, caption, tbody, +tfoot, thead, tr, th, td, article, aside, +canvas, details, embed, figure, figcaption, +footer, header, hgroup, menu, nav, output, ruby, +section, summary, time, mark, audio, video { + margin: 0; + padding: 0; + border: 0; + font-size: 100%; + font: inherit; + vertical-align: baseline;} + +article, aside, details, figcaption, figure, +footer, header, hgroup, menu, nav, section { + display: block;} + +body { + line-height: 1; + font-family: 'Poppins', sans-serif; +} + +ol, ul { + list-style: none; +} + +blockquote, q { + quotes: none; +} + + blockquote:before, blockquote:after, q:before, q:after { + content: ''; + content: none; + } + +table { + border-collapse: collapse; + border-spacing: 0; +} + +body { + -webkit-text-size-adjust: none; +} + +mark { + background-color: transparent; + color: inherit; +} + +input::-moz-focus-inner { + border: 0; + padding: 0; +} + +input, select, textarea { + -moz-appearance: none; + -webkit-appearance: none; + -ms-appearance: none; + appearance: none; +} + +.profileRow{ + background-color: #f5d3c8; + border: 1px solid #a5705b; +} + +.profileRadioBtn{ + /*background-color: #a5705b;*/ +} + +#totalPanelBtn{ + background-color: #a5705b; +} + +#totalPanel{ + border: 1px solid #a5705b; + background-color: #fff7f5; +} + +.serviceInfoIcon .fa-info-circle{ + color:#a5705b; +} + +.serviceCheckCol input[type="checkbox"]{ + border:1px solid #a5705b; +} + +.bookingButton{ + background-color: #a5705b!important; +} + +.availableBookingTime{ + background-color: #f5d3c8; +} + +.activeStep{ + background-color:#a5705b; +} + +.bookingName, .bookingEmail, .bookingPhone{ + background-color: #fff7f5; + border:1px solid #a5705b!important; +} + +.bookingEmailTitle, .bookingPhoneTitle{ + color:gray; +} + +.bookingTitle{ + color:#a5705b; +} + +.stepTitle{ + color:#a5705b; +} + +.stepLine { + border-top: 1px solid #9e8462; +} + +.stepCircle { + border: 1px solid #a5705b; + background-color: #f5d3c8; +} + +.panel-heading{ + color:#a5705b!important; + text-transform: uppercase!important; +} + +.serviceCol h4{ + color:#a5705b!important; +} + +.serviceHeader .serviceNameCol, +.serviceHeader .servicePriceCol{ + color:#E4AD9C!important; + font-weight:normal!important; +} + +.BookingStepContainer { + border: 1px solid #a5705b; +} + +.bookingSubmit{ + background-color: #a5705b!important; +} + +/* Basic */ + + html { + box-sizing: border-box; + } + + *, *:before, *:after { + box-sizing: inherit; + } + + body { + background: #fff; + } + + body.is-preload *, body.is-preload *:before, body.is-preload *:after { + -moz-animation: none !important; + -webkit-animation: none !important; + -ms-animation: none !important; + animation: none !important; + -moz-transition: none !important; + -webkit-transition: none !important; + -ms-transition: none !important; + transition: none !important; + } + + body, input, select, textarea { + color: #4a4a4a; + background: #fff; + font-family: "Poppins", sans-serif; + font-size: 13pt; + font-weight: 300; + line-height: 1.75em; + } + + a { + color: #51c5e8; + text-decoration: underline; + } + + a:hover { + text-decoration: none; + } + + strong, b { + color: #2a2a2a; + font-weight: 600; + } + + em, i { + font-style: italic; + } + + p { + margin: 0 0 2em 0; + } + + h1, h2, h3, h4, h5, h6 { + color: #2a2a2a; + font-weight: 600; + letter-spacing: 0.125em; + line-height: 1em; + margin: 0 0 1em 0; + } + + h1 a, h2 a, h3 a, h4 a, h5 a, h6 a { + color: inherit; + text-decoration: none; + } + + h2 { + font-size: 1.5em; + line-height: 1.75em; + } + + h3 { + font-size: 1.25em; + line-height: 1.5em; + } + + h4 { + font-size: 1.1em; + line-height: 1.5em; + } + + h5 { + font-size: 0.9em; + line-height: 1.5em; + } + + h6 { + font-size: 0.7em; + line-height: 1.5em; + } + + sub { + font-size: 0.8em; + position: relative; + top: 0.5em; + } + + sup { + font-size: 0.8em; + position: relative; + top: -0.5em; + } + + hr { + border: 0; + border-bottom: solid 3px #eee; + margin: 3em 0; + } + + hr.major { + margin: 5em 0; + } + + blockquote { + border-left: solid 8px #eee; + font-style: italic; + margin: 0 0 2em 0; + padding: 0.5em 0 0.5em 2em; + } + + pre { + -webkit-overflow-scrolling: touch; + background: rgba(144, 144, 144, 0.05); + font-family: "Courier New", monospace; + font-size: 0.9em; + line-height: 1.5em; + margin: 0 0 2em 0; + overflow-x: auto; + padding: 1em 1.5em; + } + + code { + background: rgba(144, 144, 144, 0.05); + font-family: "Courier New", monospace; + font-size: 0.9em; + margin: 0 0.25em; + padding: 0.25em 0.65em; + } + + .align-left { + text-align: left; + } + + .align-center { + text-align: center; + } + + .align-right { + text-align: right; + } + +/* Row */ + + .row { + display: flex; + flex-wrap: wrap; + box-sizing: border-box; + align-items: stretch; + } + + .row > * { + box-sizing: border-box; + } + + .row.gtr-uniform > * > :last-child { + margin-bottom: 0; + } + + .row.aln-left { + justify-content: flex-start; + } + + .row.aln-center { + justify-content: center; + } + + .row.aln-right { + justify-content: flex-end; + } + + .row.aln-top { + align-items: flex-start; + } + + .row.aln-middle { + align-items: center; + } + + .row.aln-bottom { + align-items: flex-end; + } + + .row > .imp { + order: -1; + } + + .row > .col-1 { + width: 8.33333%; + } + + .row > .off-1 { + margin-left: 8.33333%; + } + + .row > .col-2 { + width: 16.66667%; + } + + .row > .off-2 { + margin-left: 16.66667%; + } + + .row > .col-3 { + width: 25%; + } + + .row > .off-3 { + margin-left: 25%; + } + + .row > .col-4 { + width: 33.33333%; + } + + .row > .off-4 { + margin-left: 33.33333%; + } + + .row > .col-5 { + width: 41.66667%; + } + + .row > .off-5 { + margin-left: 41.66667%; + } + + .row > .col-6 { + width: 50%; + } + + .row > .off-6 { + margin-left: 50%; + } + + .row > .col-7 { + width: 58.33333%; + } + + .row > .off-7 { + margin-left: 58.33333%; + } + + .row > .col-8 { + width: 66.66667%; + } + + .row > .off-8 { + margin-left: 66.66667%; + } + + .row > .col-9 { + width: 75%; + } + + .row > .off-9 { + margin-left: 75%; + } + + .row > .col-10 { + width: 83.33333%; + } + + .row > .off-10 { + margin-left: 83.33333%; + } + + .row > .col-11 { + width: 91.66667%; + } + + .row > .off-11 { + margin-left: 91.66667%; + } + + .row > .col-12 { + width: 100%; + } + + .row > .off-12 { + margin-left: 100%; + } + + .row.gtr-0 { + margin-top: 0; + margin-left: 0em; + } + + .row.gtr-0 > * { + padding: 0 0 0 0em; + } + + .row.gtr-0.gtr-uniform { + margin-top: 0em; + } + + .row.gtr-0.gtr-uniform > * { + padding-top: 0em; + } + + .row.gtr-25 { + margin-top: 0; + margin-left: -0.75em; + } + + .row.gtr-25 > * { + padding: 0 0 0 0.75em; + } + + .row.gtr-25.gtr-uniform { + margin-top: -0.75em; + } + + .row.gtr-25.gtr-uniform > * { + padding-top: 0.75em; + } + + .row.gtr-50 { + margin-top: 0; + margin-left: -1.5em; + } + + .row.gtr-50 > * { + padding: 0 0 0 1.5em; + } + + .row.gtr-50.gtr-uniform { + margin-top: -1.5em; + } + + .row.gtr-50.gtr-uniform > * { + padding-top: 1.5em; + } + + .row { + margin-top: 0; + margin-left: -3em; + } + + .row > * { + padding: 0 0 0 3em; + } + + .row.gtr-uniform { + margin-top: -3em; + } + + .row.gtr-uniform > * { + padding-top: 3em; + } + + .row.gtr-150 { + margin-top: 0; + margin-left: -4.5em; + } + + .row.gtr-150 > * { + padding: 0 0 0 4.5em; + } + + .row.gtr-150.gtr-uniform { + margin-top: -4.5em; + } + + .row.gtr-150.gtr-uniform > * { + padding-top: 4.5em; + } + + .row.gtr-200 { + margin-top: 0; + margin-left: -6em; + } + + .row.gtr-200 > * { + padding: 0 0 0 6em; + } + + .row.gtr-200.gtr-uniform { + margin-top: -6em; + } + + .row.gtr-200.gtr-uniform > * { + padding-top: 6em; + } + + @media screen and (max-width: 1680px) { + + .row { + display: flex; + flex-wrap: wrap; + box-sizing: border-box; + align-items: stretch; + } + + .row > * { + box-sizing: border-box; + } + + .row.gtr-uniform > * > :last-child { + margin-bottom: 0; + } + + .row.aln-left { + justify-content: flex-start; + } + + .row.aln-center { + justify-content: center; + } + + .row.aln-right { + justify-content: flex-end; + } + + .row.aln-top { + align-items: flex-start; + } + + .row.aln-middle { + align-items: center; + } + + .row.aln-bottom { + align-items: flex-end; + } + + .row > .imp-wide { + order: -1; + } + + .row > .col-1-wide { + width: 8.33333%; + } + + .row > .off-1-wide { + margin-left: 8.33333%; + } + + .row > .col-2-wide { + width: 16.66667%; + } + + .row > .off-2-wide { + margin-left: 16.66667%; + } + + .row > .col-3-wide { + width: 25%; + } + + .row > .off-3-wide { + margin-left: 25%; + } + + .row > .col-4-wide { + width: 33.33333%; + } + + .row > .off-4-wide { + margin-left: 33.33333%; + } + + .row > .col-5-wide { + width: 41.66667%; + } + + .row > .off-5-wide { + margin-left: 41.66667%; + } + + .row > .col-6-wide { + width: 50%; + } + + .row > .off-6-wide { + margin-left: 50%; + } + + .row > .col-7-wide { + width: 58.33333%; + } + + .row > .off-7-wide { + margin-left: 58.33333%; + } + + .row > .col-8-wide { + width: 66.66667%; + } + + .row > .off-8-wide { + margin-left: 66.66667%; + } + + .row > .col-9-wide { + width: 75%; + } + + .row > .off-9-wide { + margin-left: 75%; + } + + .row > .col-10-wide { + width: 83.33333%; + } + + .row > .off-10-wide { + margin-left: 83.33333%; + } + + .row > .col-11-wide { + width: 91.66667%; + } + + .row > .off-11-wide { + margin-left: 91.66667%; + } + + .row > .col-12-wide { + width: 100%; + } + + .row > .off-12-wide { + margin-left: 100%; + } + + .row.gtr-0 { + margin-top: 0; + margin-left: 0em; + } + + .row.gtr-0 > * { + padding: 0 0 0 0em; + } + + .row.gtr-0.gtr-uniform { + margin-top: 0em; + } + + .row.gtr-0.gtr-uniform > * { + padding-top: 0em; + } + + .row.gtr-25 { + margin-top: 0; + margin-left: -0.75em; + } + + .row.gtr-25 > * { + padding: 0 0 0 0.75em; + } + + .row.gtr-25.gtr-uniform { + margin-top: -0.75em; + } + + .row.gtr-25.gtr-uniform > * { + padding-top: 0.75em; + } + + .row.gtr-50 { + margin-top: 0; + margin-left: -1.5em; + } + + .row.gtr-50 > * { + padding: 0 0 0 1.5em; + } + + .row.gtr-50.gtr-uniform { + margin-top: -1.5em; + } + + .row.gtr-50.gtr-uniform > * { + padding-top: 1.5em; + } + + .row { + margin-top: 0; + margin-left: -3em; + } + + .row > * { + padding: 0 0 0 3em; + } + + .row.gtr-uniform { + margin-top: -3em; + } + + .row.gtr-uniform > * { + padding-top: 3em; + } + + .row.gtr-150 { + margin-top: 0; + margin-left: -4.5em; + } + + .row.gtr-150 > * { + padding: 0 0 0 4.5em; + } + + .row.gtr-150.gtr-uniform { + margin-top: -4.5em; + } + + .row.gtr-150.gtr-uniform > * { + padding-top: 4.5em; + } + + .row.gtr-200 { + margin-top: 0; + margin-left: -6em; + } + + .row.gtr-200 > * { + padding: 0 0 0 6em; + } + + .row.gtr-200.gtr-uniform { + margin-top: -6em; + } + + .row.gtr-200.gtr-uniform > * { + padding-top: 6em; + } + + } + + @media screen and (max-width: 1280px) { + + .row { + display: flex; + flex-wrap: wrap; + box-sizing: border-box; + align-items: stretch; + } + + .row > * { + box-sizing: border-box; + } + + .row.gtr-uniform > * > :last-child { + margin-bottom: 0; + } + + .row.aln-left { + justify-content: flex-start; + } + + .row.aln-center { + justify-content: center; + } + + .row.aln-right { + justify-content: flex-end; + } + + .row.aln-top { + align-items: flex-start; + } + + .row.aln-middle { + align-items: center; + } + + .row.aln-bottom { + align-items: flex-end; + } + + .row > .imp-normal { + order: -1; + } + + .row > .col-1-normal { + width: 8.33333%; + } + + .row > .off-1-normal { + margin-left: 8.33333%; + } + + .row > .col-2-normal { + width: 16.66667%; + } + + .row > .off-2-normal { + margin-left: 16.66667%; + } + + .row > .col-3-normal { + width: 25%; + } + + .row > .off-3-normal { + margin-left: 25%; + } + + .row > .col-4-normal { + width: 33.33333%; + } + + .row > .off-4-normal { + margin-left: 33.33333%; + } + + .row > .col-5-normal { + width: 41.66667%; + } + + .row > .off-5-normal { + margin-left: 41.66667%; + } + + .row > .col-6-normal { + width: 50%; + } + + .row > .off-6-normal { + margin-left: 50%; + } + + .row > .col-7-normal { + width: 58.33333%; + } + + .row > .off-7-normal { + margin-left: 58.33333%; + } + + .row > .col-8-normal { + width: 66.66667%; + } + + .row > .off-8-normal { + margin-left: 66.66667%; + } + + .row > .col-9-normal { + width: 75%; + } + + .row > .off-9-normal { + margin-left: 75%; + } + + .row > .col-10-normal { + width: 83.33333%; + } + + .row > .off-10-normal { + margin-left: 83.33333%; + } + + .row > .col-11-normal { + width: 91.66667%; + } + + .row > .off-11-normal { + margin-left: 91.66667%; + } + + .row > .col-12-normal { + width: 100%; + } + + .row > .off-12-normal { + margin-left: 100%; + } + + .row.gtr-0 { + margin-top: 0; + margin-left: 0em; + } + + .row.gtr-0 > * { + padding: 0 0 0 0em; + } + + .row.gtr-0.gtr-uniform { + margin-top: 0em; + } + + .row.gtr-0.gtr-uniform > * { + padding-top: 0em; + } + + .row.gtr-25 { + margin-top: 0; + margin-left: -0.5em; + } + + .row.gtr-25 > * { + padding: 0 0 0 0.5em; + } + + .row.gtr-25.gtr-uniform { + margin-top: -0.5em; + } + + .row.gtr-25.gtr-uniform > * { + padding-top: 0.5em; + } + + .row.gtr-50 { + margin-top: 0; + margin-left: -1em; + } + + .row.gtr-50 > * { + padding: 0 0 0 1em; + } + + .row.gtr-50.gtr-uniform { + margin-top: -1em; + } + + .row.gtr-50.gtr-uniform > * { + padding-top: 1em; + } + + .row { + margin-top: 0; + margin-left: -2em; + } + + .row > * { + padding: 0 0 0 2em; + } + + .row.gtr-uniform { + margin-top: -2em; + } + + .row.gtr-uniform > * { + padding-top: 2em; + } + + .row.gtr-150 { + margin-top: 0; + margin-left: -3em; + } + + .row.gtr-150 > * { + padding: 0 0 0 3em; + } + + .row.gtr-150.gtr-uniform { + margin-top: -3em; + } + + .row.gtr-150.gtr-uniform > * { + padding-top: 3em; + } + + .row.gtr-200 { + margin-top: 0; + margin-left: -4em; + } + + .row.gtr-200 > * { + padding: 0 0 0 4em; + } + + .row.gtr-200.gtr-uniform { + margin-top: -4em; + } + + .row.gtr-200.gtr-uniform > * { + padding-top: 4em; + } + + } + + @media screen and (max-width: 980px) { + + .row { + display: flex; + flex-wrap: wrap; + box-sizing: border-box; + align-items: stretch; + } + + .row > * { + box-sizing: border-box; + } + + .row.gtr-uniform > * > :last-child { + margin-bottom: 0; + } + + .row.aln-left { + justify-content: flex-start; + } + + .row.aln-center { + justify-content: center; + } + + .row.aln-right { + justify-content: flex-end; + } + + .row.aln-top { + align-items: flex-start; + } + + .row.aln-middle { + align-items: center; + } + + .row.aln-bottom { + align-items: flex-end; + } + + .row > .imp-narrow { + order: -1; + } + + .row > .col-1-narrow { + width: 8.33333%; + } + + .row > .off-1-narrow { + margin-left: 8.33333%; + } + + .row > .col-2-narrow { + width: 16.66667%; + } + + .row > .off-2-narrow { + margin-left: 16.66667%; + } + + .row > .col-3-narrow { + width: 25%; + } + + .row > .off-3-narrow { + margin-left: 25%; + } + + .row > .col-4-narrow { + width: 33.33333%; + } + + .row > .off-4-narrow { + margin-left: 33.33333%; + } + + .row > .col-5-narrow { + width: 41.66667%; + } + + .row > .off-5-narrow { + margin-left: 41.66667%; + } + + .row > .col-6-narrow { + width: 50%; + } + + .row > .off-6-narrow { + margin-left: 50%; + } + + .row > .col-7-narrow { + width: 58.33333%; + } + + .row > .off-7-narrow { + margin-left: 58.33333%; + } + + .row > .col-8-narrow { + width: 66.66667%; + } + + .row > .off-8-narrow { + margin-left: 66.66667%; + } + + .row > .col-9-narrow { + width: 75%; + } + + .row > .off-9-narrow { + margin-left: 75%; + } + + .row > .col-10-narrow { + width: 83.33333%; + } + + .row > .off-10-narrow { + margin-left: 83.33333%; + } + + .row > .col-11-narrow { + width: 91.66667%; + } + + .row > .off-11-narrow { + margin-left: 91.66667%; + } + + .row > .col-12-narrow { + width: 100%; + } + + .row > .off-12-narrow { + margin-left: 100%; + } + + .row.gtr-0 { + margin-top: 0; + margin-left: 0em; + } + + .row.gtr-0 > * { + padding: 0 0 0 0em; + } + + .row.gtr-0.gtr-uniform { + margin-top: 0em; + } + + .row.gtr-0.gtr-uniform > * { + padding-top: 0em; + } + + .row.gtr-25 { + margin-top: 0; + margin-left: -0.5em; + } + + .row.gtr-25 > * { + padding: 0 0 0 0.5em; + } + + .row.gtr-25.gtr-uniform { + margin-top: -0.5em; + } + + .row.gtr-25.gtr-uniform > * { + padding-top: 0.5em; + } + + .row.gtr-50 { + margin-top: 0; + margin-left: -1em; + } + + .row.gtr-50 > * { + padding: 0 0 0 1em; + } + + .row.gtr-50.gtr-uniform { + margin-top: -1em; + } + + .row.gtr-50.gtr-uniform > * { + padding-top: 1em; + } + + .row { + margin-top: 0; + margin-left: -2em; + } + + .row > * { + padding: 0 0 0 2em; + } + + .row.gtr-uniform { + margin-top: -2em; + } + + .row.gtr-uniform > * { + padding-top: 2em; + } + + .row.gtr-150 { + margin-top: 0; + margin-left: -3em; + } + + .row.gtr-150 > * { + padding: 0 0 0 3em; + } + + .row.gtr-150.gtr-uniform { + margin-top: -3em; + } + + .row.gtr-150.gtr-uniform > * { + padding-top: 3em; + } + + .row.gtr-200 { + margin-top: 0; + margin-left: -4em; + } + + .row.gtr-200 > * { + padding: 0 0 0 4em; + } + + .row.gtr-200.gtr-uniform { + margin-top: -4em; + } + + .row.gtr-200.gtr-uniform > * { + padding-top: 4em; + } + + } + + @media screen and (max-width: 736px) { + + .row { + display: flex; + flex-wrap: wrap; + box-sizing: border-box; + align-items: stretch; + } + + .row > * { + box-sizing: border-box; + } + + .row.gtr-uniform > * > :last-child { + margin-bottom: 0; + } + + .row.aln-left { + justify-content: flex-start; + } + + .row.aln-center { + justify-content: center; + } + + .row.aln-right { + justify-content: flex-end; + } + + .row.aln-top { + align-items: flex-start; + } + + .row.aln-middle { + align-items: center; + } + + .row.aln-bottom { + align-items: flex-end; + } + + .row > .imp-mobile { + order: -1; + } + + .row > .col-1-mobile { + width: 8.33333%; + } + + .row > .off-1-mobile { + margin-left: 8.33333%; + } + + .row > .col-2-mobile { + width: 16.66667%; + } + + .row > .off-2-mobile { + margin-left: 16.66667%; + } + + .row > .col-3-mobile { + width: 25%; + } + + .row > .off-3-mobile { + margin-left: 25%; + } + + .row > .col-4-mobile { + width: 33.33333%; + } + + .row > .off-4-mobile { + margin-left: 33.33333%; + } + + .row > .col-5-mobile { + width: 41.66667%; + } + + .row > .off-5-mobile { + margin-left: 41.66667%; + } + + .row > .col-6-mobile { + width: 50%; + } + + .row > .off-6-mobile { + margin-left: 50%; + } + + .row > .col-7-mobile { + width: 58.33333%; + } + + .row > .off-7-mobile { + margin-left: 58.33333%; + } + + .row > .col-8-mobile { + width: 66.66667%; + } + + .row > .off-8-mobile { + margin-left: 66.66667%; + } + + .row > .col-9-mobile { + width: 75%; + } + + .row > .off-9-mobile { + margin-left: 75%; + } + + .row > .col-10-mobile { + width: 83.33333%; + } + + .row > .off-10-mobile { + margin-left: 83.33333%; + } + + .row > .col-11-mobile { + width: 91.66667%; + } + + .row > .off-11-mobile { + margin-left: 91.66667%; + } + + .row > .col-12-mobile { + width: 100%; + } + + .row > .off-12-mobile { + margin-left: 100%; + } + + .row.gtr-0 { + margin-top: 0; + margin-left: 0em; + } + + .row.gtr-0 > * { + padding: 0 0 0 0em; + } + + .row.gtr-0.gtr-uniform { + margin-top: 0em; + } + + .row.gtr-0.gtr-uniform > * { + padding-top: 0em; + } + + .row.gtr-25 { + margin-top: 0; + margin-left: -0.5em; + } + + .row.gtr-25 > * { + padding: 0 0 0 0.5em; + } + + .row.gtr-25.gtr-uniform { + margin-top: -0.5em; + } + + .row.gtr-25.gtr-uniform > * { + padding-top: 0.5em; + } + + .row.gtr-50 { + margin-top: 0; + margin-left: -1em; + } + + .row.gtr-50 > * { + padding: 0 0 0 1em; + } + + .row.gtr-50.gtr-uniform { + margin-top: -1em; + } + + .row.gtr-50.gtr-uniform > * { + padding-top: 1em; + } + + .row { + margin-top: 0; + margin-left: -2em; + } + + .row > * { + padding: 0 0 0 2em; + } + + .row.gtr-uniform { + margin-top: -2em; + } + + .row.gtr-uniform > * { + padding-top: 2em; + } + + .row.gtr-150 { + margin-top: 0; + margin-left: -3em; + } + + .row.gtr-150 > * { + padding: 0 0 0 3em; + } + + .row.gtr-150.gtr-uniform { + margin-top: -3em; + } + + .row.gtr-150.gtr-uniform > * { + padding-top: 3em; + } + + .row.gtr-200 { + margin-top: 0; + margin-left: -4em; + } + + .row.gtr-200 > * { + padding: 0 0 0 4em; + } + + .row.gtr-200.gtr-uniform { + margin-top: -4em; + } + + .row.gtr-200.gtr-uniform > * { + padding-top: 4em; + } + + } + + @media screen and (max-width: 480px) { + + .row { + display: flex; + flex-wrap: wrap; + box-sizing: border-box; + align-items: stretch; + } + + .row > * { + box-sizing: border-box; + } + + .row.gtr-uniform > * > :last-child { + margin-bottom: 0; + } + + .row.aln-left { + justify-content: flex-start; + } + + .row.aln-center { + justify-content: center; + } + + .row.aln-right { + justify-content: flex-end; + } + + .row.aln-top { + align-items: flex-start; + } + + .row.aln-middle { + align-items: center; + } + + .row.aln-bottom { + align-items: flex-end; + } + + .row > .imp-mobilep { + order: -1; + } + + .row > .col-1-mobilep { + width: 8.33333%; + } + + .row > .off-1-mobilep { + margin-left: 8.33333%; + } + + .row > .col-2-mobilep { + width: 16.66667%; + } + + .row > .off-2-mobilep { + margin-left: 16.66667%; + } + + .row > .col-3-mobilep { + width: 25%; + } + + .row > .off-3-mobilep { + margin-left: 25%; + } + + .row > .col-4-mobilep { + width: 33.33333%; + } + + .row > .off-4-mobilep { + margin-left: 33.33333%; + } + + .row > .col-5-mobilep { + width: 41.66667%; + } + + .row > .off-5-mobilep { + margin-left: 41.66667%; + } + + .row > .col-6-mobilep { + width: 50%; + } + + .row > .off-6-mobilep { + margin-left: 50%; + } + + .row > .col-7-mobilep { + width: 58.33333%; + } + + .row > .off-7-mobilep { + margin-left: 58.33333%; + } + + .row > .col-8-mobilep { + width: 66.66667%; + } + + .row > .off-8-mobilep { + margin-left: 66.66667%; + } + + .row > .col-9-mobilep { + width: 75%; + } + + .row > .off-9-mobilep { + margin-left: 75%; + } + + .row > .col-10-mobilep { + width: 83.33333%; + } + + .row > .off-10-mobilep { + margin-left: 83.33333%; + } + + .row > .col-11-mobilep { + width: 91.66667%; + } + + .row > .off-11-mobilep { + margin-left: 91.66667%; + } + + .row > .col-12-mobilep { + width: 100%; + } + + .row > .off-12-mobilep { + margin-left: 100%; + } + + .row.gtr-0 { + margin-top: 0; + margin-left: 0em; + } + + .row.gtr-0 > * { + padding: 0 0 0 0em; + } + + .row.gtr-0.gtr-uniform { + margin-top: 0em; + } + + .row.gtr-0.gtr-uniform > * { + padding-top: 0em; + } + + .row.gtr-25 { + margin-top: 0; + margin-left: -0.5em; + } + + .row.gtr-25 > * { + padding: 0 0 0 0.5em; + } + + .row.gtr-25.gtr-uniform { + margin-top: -0.5em; + } + + .row.gtr-25.gtr-uniform > * { + padding-top: 0.5em; + } + + .row.gtr-50 { + margin-top: 0; + margin-left: -1em; + } + + .row.gtr-50 > * { + padding: 0 0 0 1em; + } + + .row.gtr-50.gtr-uniform { + margin-top: -1em; + } + + .row.gtr-50.gtr-uniform > * { + padding-top: 1em; + } + + .row { + margin-top: 0; + margin-left: -2em; + } + + .row > * { + padding: 0 0 0 2em; + } + + .row.gtr-uniform { + margin-top: -2em; + } + + .row.gtr-uniform > * { + padding-top: 2em; + } + + .row.gtr-150 { + margin-top: 0; + margin-left: -3em; + } + + .row.gtr-150 > * { + padding: 0 0 0 3em; + } + + .row.gtr-150.gtr-uniform { + margin-top: -3em; + } + + .row.gtr-150.gtr-uniform > * { + padding-top: 3em; + } + + .row.gtr-200 { + margin-top: 0; + margin-left: -4em; + } + + .row.gtr-200 > * { + padding: 0 0 0 4em; + } + + .row.gtr-200.gtr-uniform { + margin-top: -4em; + } + + .row.gtr-200.gtr-uniform > * { + padding-top: 4em; + } + + } + +/* Container */ + + .container { + margin: 0 auto; + width: 1200px; + } + + .container.medium { + width: 900px; + } + + @media screen and (max-width: 1680px) { + + .container { + width: 1080px; + } + + .container.medium { + width: 810px; + } + + } + + @media screen and (max-width: 1280px) { + + .container { + width: 960px; + } + + .container.medium { + width: 720px; + } + + } + + @media screen and (max-width: 980px) { + + .container { + width: 90%; + } + + .container.medium { + width: 90%; + } + + } + + @media screen and (max-width: 736px) { + + .container { + width: 100%; + } + + .container.medium { + width: 100%; + } + + } + +/* Section/Article */ + + section.special, article.special { + text-align: center; + } + + header.major { + text-align: center; + position: relative; + } + + header.major:after { + background: #888; + content: ''; + display: inline-block; + height: 3px; + margin: 0 0 2em 0; + width: 6em; + } + + header.major.alt { + text-align: center; + margin-bottom: 2em; + } + + header p { + letter-spacing: 0.125em; + margin: 0 0 1.5em 0; + position: relative; + text-transform: uppercase; + } + + header h2 + p { + font-size: 1em; + margin-top: -0.85em; + line-height: 1.75em; + } + + header h3 + p { + font-size: 0.9em; + margin-top: -0.75em; + line-height: 1.75em; + } + + header h4 + p, + header h5 + p, + header h6 + p { + font-size: 0.8em; + margin-top: -0.75em; + line-height: 1.75em; + } + +/* Form */ + + form { + margin: 0 0 2em 0; + } + + label { + color: #2a2a2a; + display: block; + font-size: 0.9em; + font-weight: 600; + margin: 0 0 1em 0; + } + + input[type="text"], + input[type="password"], + input[type="email"], + select, + textarea { + -moz-appearance: none; + -webkit-appearance: none; + -ms-appearance: none; + appearance: none; + border: none; + border: solid 2px #eee; + border-radius: 0; + color: inherit; + display: block; + outline: 0; + padding: 0 1em; + text-decoration: none; + width: 100%; + } + + input[type="text"]:invalid, + input[type="password"]:invalid, + input[type="email"]:invalid, + select:invalid, + textarea:invalid { + box-shadow: none; + } + + input[type="text"]:focus, + input[type="password"]:focus, + input[type="email"]:focus, + select:focus, + textarea:focus { + border-color: #51c5e8; + } + + select { + background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='40' height='40' preserveAspectRatio='none' viewBox='0 0 40 40'%3E%3Cpath d='M9.4,12.3l10.4,10.4l10.4-10.4c0.2-0.2,0.5-0.4,0.9-0.4c0.3,0,0.6,0.1,0.9,0.4l3.3,3.3c0.2,0.2,0.4,0.5,0.4,0.9 c0,0.4-0.1,0.6-0.4,0.9L20.7,31.9c-0.2,0.2-0.5,0.4-0.9,0.4c-0.3,0-0.6-0.1-0.9-0.4L4.3,17.3c-0.2-0.2-0.4-0.5-0.4-0.9 c0-0.4,0.1-0.6,0.4-0.9l3.3-3.3c0.2-0.2,0.5-0.4,0.9-0.4S9.1,12.1,9.4,12.3z' fill='%23eee' /%3E%3C/svg%3E"); + background-size: 1.25em; + background-repeat: no-repeat; + background-position: calc(100% - 1em) center; + height: 3.5em; + padding-right: 3.5em; + text-overflow: ellipsis; + } + + select:focus::-ms-value { + background-color: transparent; + } + + select::-ms-expand { + display: none; + } + + select option { + color: #2a2a2a; + background: #fff; + } + + input[type="text"], + input[type="password"], + input[type="email"], + select { + height: 3.5em; + } + + textarea { + padding: 0.75em 1em; + } + + input[type="checkbox"], + input[type="radio"] { + -moz-appearance: none; + -webkit-appearance: none; + -ms-appearance: none; + appearance: none; + display: block; + float: left; + margin-right: -2em; + opacity: 0; + width: 1em; + z-index: -1; + } + + input[type="checkbox"] + label, + input[type="radio"] + label { + text-decoration: none; + color: #4a4a4a; + cursor: pointer; + display: inline-block; + font-size: 1em; + font-weight: 300; + padding-left: 2.85em; + padding-right: 0.75em; + position: relative; + } + + input[type="checkbox"] + label:before, + input[type="radio"] + label:before { + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + display: inline-block; + font-style: normal; + font-variant: normal; + text-rendering: auto; + line-height: 1; + text-transform: none !important; + font-family: 'Font Awesome 5 Free'; + font-weight: 900; + } + + input[type="checkbox"] + label:before, + input[type="radio"] + label:before { + background: rgba(144, 144, 144, 0.05); + border: solid 2px #eee; + content: ''; + display: inline-block; + font-size: 0.8em; + height: 2.1em; + left: 0; + line-height: 1.925em; + position: absolute; + text-align: center; + top: 0; + width: 2.1em; + } + + input[type="checkbox"]:checked + label:before, + input[type="radio"]:checked + label:before { + background: #1d2726; + border-color: #1d2726; + color: #ffffff; + content: '\f00c'; + } + + input[type="checkbox"]:focus + label:before, + input[type="radio"]:focus + label:before { + border-color: #51c5e8; + } + + input[type="radio"] + label:before { + border-radius: 100%; + } + + ::-webkit-input-placeholder { + color: #bbb !important; + opacity: 1.0; + } + + :-moz-placeholder { + color: #bbb !important; + opacity: 1.0; + } + + ::-moz-placeholder { + color: #bbb !important; + opacity: 1.0; + } + + :-ms-input-placeholder { + color: #bbb !important; + opacity: 1.0; + } + +/* Box */ + + .box { + border: solid 2px #eee; + margin-bottom: 2em; + padding: 1.5em; + } + + .box > :last-child, + .box > :last-child > :last-child, + .box > :last-child > :last-child > :last-child { + margin-bottom: 0; + } + + .box.alt { + border: 0; + padding: 0; + } + +/* Icon */ + + .icon { + text-decoration: none; + border-bottom: none; + position: relative; + } + + .icon:before { + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + display: inline-block; + font-style: normal; + font-variant: normal; + text-rendering: auto; + line-height: 1; + text-transform: none !important; + font-family: 'Font Awesome 5 Free'; + font-weight: 400; + } + + .icon.solid:before { + font-weight: 900; + } + + .icon.brands:before { + font-family: 'Font Awesome 5 Brands'; + } + + .icon > .label { + display: none; + } + +/* Image */ + + .image { + border: 0; + display: inline-block; + position: relative; + } + + .image:before { + background: url("images/overlay.png"); + content: ''; + display: block; + height: 100%; + left: 0; + position: absolute; + top: 0; + width: 100%; + } + + .image img { + display: block; + } + + .image.left { + float: left; + margin: 0 1.5em 1em 0; + top: 0.25em; + } + + .image.right { + float: right; + margin: 0 0 1em 1.5em; + top: 0.25em; + } + + .image.fit { + display: block; + margin: 0 0 3em 0; + width: 100%; + } + + .image.fit img { + display: block; + width: 100%; + } + +/* List */ + + ol { + list-style: decimal; + margin: 0 0 2em 0; + padding-left: 1.25em; + } + + ol li { + padding-left: 0.25em; + } + + ul { + list-style: disc; + margin: 0 0 2em 0; + padding-left: 1em; + } + + ul li { + padding-left: 0.5em; + } + + ul.alt { + list-style: none; + padding-left: 0; + } + + ul.alt li { + border-top: solid 1px #eee; + padding: 0.5em 0; + } + + ul.alt li:first-child { + border-top: 0; + padding-top: 0; + } + + dl { + margin: 0 0 2em 0; + } + +/* Actions */ + + ul.actions { + display: -moz-flex; + display: -webkit-flex; + display: -ms-flex; + display: flex; + cursor: default; + list-style: none; + margin-left: -1em; + padding-left: 0; + } + + ul.actions li { + padding: 0 0 0 1em; + vertical-align: middle; + } + + ul.actions.special { + -moz-justify-content: center; + -webkit-justify-content: center; + -ms-justify-content: center; + justify-content: center; + width: 100%; + margin-left: 0; + } + + ul.actions.special li:first-child { + padding-left: 0; + } + + ul.actions.stacked { + -moz-flex-direction: column; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + margin-left: 0; + } + + ul.actions.stacked li { + padding: 1.3em 0 0 0; + } + + ul.actions.stacked li:first-child { + padding-top: 0; + } + + ul.actions.fit { + width: calc(100% + 1em); + } + + ul.actions.fit li { + -moz-flex-grow: 1; + -webkit-flex-grow: 1; + -ms-flex-grow: 1; + flex-grow: 1; + -moz-flex-shrink: 1; + -webkit-flex-shrink: 1; + -ms-flex-shrink: 1; + flex-shrink: 1; + width: 100%; + } + + ul.actions.fit li > * { + width: 100%; + } + + ul.actions.fit.stacked { + width: 100%; + } + + @media screen and (max-width: 480px) { + + ul.actions:not(.fixed) { + -moz-flex-direction: column; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + margin-left: 0; + width: 100% !important; + } + + ul.actions:not(.fixed) li { + -moz-flex-grow: 1; + -webkit-flex-grow: 1; + -ms-flex-grow: 1; + flex-grow: 1; + -moz-flex-shrink: 1; + -webkit-flex-shrink: 1; + -ms-flex-shrink: 1; + flex-shrink: 1; + padding: 1em 0 0 0; + text-align: center; + width: 100%; + } + + ul.actions:not(.fixed) li > * { + width: 100%; + } + + ul.actions:not(.fixed) li:first-child { + padding-top: 0; + } + + ul.actions:not(.fixed) li input[type="submit"], + ul.actions:not(.fixed) li input[type="reset"], + ul.actions:not(.fixed) li input[type="button"], + ul.actions:not(.fixed) li button, + ul.actions:not(.fixed) li .button { + width: 100%; + } + + ul.actions:not(.fixed) li input[type="submit"].icon:before, + ul.actions:not(.fixed) li input[type="reset"].icon:before, + ul.actions:not(.fixed) li input[type="button"].icon:before, + ul.actions:not(.fixed) li button.icon:before, + ul.actions:not(.fixed) li .button.icon:before { + margin-left: -0.5em; + } + + } + +/* Icons */ + + ul.icons { + cursor: default; + list-style: none; + padding-left: 0; + } + + ul.icons li { + display: inline-block; + padding: 0 1em 0 0; + } + + ul.icons li:last-child { + padding-right: 0; + } + + ul.icons li .icon:before { + font-size: 1.5em; + } + +/* Table */ + + .table-wrapper { + -webkit-overflow-scrolling: touch; + overflow-x: auto; + } + + table { + margin: 0 0 2em 0; + width: 100%; + } + + table tbody tr { + border: solid 1px #eee; + border-left: 0; + border-right: 0; + } + + table tbody tr:nth-child(2n + 1) { + background-color: rgba(144, 144, 144, 0.05); + } + + table td { + padding: 0.75em 0.75em; + } + + table th { + color: #2a2a2a; + font-size: 0.9em; + font-weight: 600; + padding: 0 0.75em 0.75em 0.75em; + text-align: left; + } + + table thead { + border-bottom: solid 2px #eee; + } + + table tfoot { + border-top: solid 2px #eee; + } + + table.alt { + border-collapse: separate; + } + + table.alt tbody tr td { + border: solid 1px #eee; + border-left-width: 0; + border-top-width: 0; + } + + table.alt tbody tr td:first-child { + border-left-width: 1px; + } + + table.alt tbody tr:first-child td { + border-top-width: 1px; + } + + table.alt thead { + border-bottom: 0; + } + + table.alt tfoot { + border-top: 0; + } + +/* Button */ + + input[type="submit"], + input[type="reset"], + input[type="button"], + button, + .button { + -moz-appearance: none; + -webkit-appearance: none; + -ms-appearance: none; + appearance: none; + -moz-transition: background-color 0.2s ease-in-out, color 0.2s ease-in-out; + -webkit-transition: background-color 0.2s ease-in-out, color 0.2s ease-in-out; + -ms-transition: background-color 0.2s ease-in-out, color 0.2s ease-in-out; + transition: background-color 0.2s ease-in-out, color 0.2s ease-in-out; + background-color: #1d2726; + border-radius: 0; + border: 0; + color: #ffffff !important; + cursor: pointer; + display: inline-block; + font-size: 0.9em; + font-weight: 600; + height: 4em; + letter-spacing: 0.125em; + line-height: 4em; + overflow: hidden; + padding: 0 2.75em; + text-align: center; + text-decoration: none; + text-overflow: ellipsis; + text-transform: uppercase; + white-space: nowrap; + } + + input[type="submit"]:hover, + input[type="reset"]:hover, + input[type="button"]:hover, + button:hover, + .button:hover { + background-color: #283634; + } + + input[type="submit"]:active, + input[type="reset"]:active, + input[type="button"]:active, + button:active, + .button:active { + background-color: #121818; + } + + input[type="submit"].icon, + input[type="reset"].icon, + input[type="button"].icon, + button.icon, + .button.icon { + padding-left: 2.35em; + } + + input[type="submit"].icon:before, + input[type="reset"].icon:before, + input[type="button"].icon:before, + button.icon:before, + .button.icon:before { + margin-right: 0.5em; + } + + input[type="submit"].fit, + input[type="reset"].fit, + input[type="button"].fit, + button.fit, + .button.fit { + width: 100%; + } + + input[type="submit"].small, + input[type="reset"].small, + input[type="button"].small, + button.small, + .button.small { + font-size: 0.8em; + height: 3.5em; + line-height: 3.5em; + padding: 0 2em; + } + + input[type="submit"].large, + input[type="reset"].large, + input[type="button"].large, + button.large, + .button.large { + font-size: 1.25em; + height: 3.15em; + line-height: 3.15em; + } + + input[type="submit"].alt, + input[type="reset"].alt, + input[type="button"].alt, + button.alt, + .button.alt { + background-color: transparent; + box-shadow: inset 0 0 0 2px #eee; + color: #2a2a2a !important; + } + + input[type="submit"].alt:hover, + input[type="reset"].alt:hover, + input[type="button"].alt:hover, + button.alt:hover, + .button.alt:hover { + background-color: rgba(144, 144, 144, 0.05); + } + + input[type="submit"].alt:active, + input[type="reset"].alt:active, + input[type="button"].alt:active, + button.alt:active, + .button.alt:active { + background-color: rgba(144, 144, 144, 0.1); + } + + input[type="submit"].alt.icon:before, + input[type="reset"].alt.icon:before, + input[type="button"].alt.icon:before, + button.alt.icon:before, + .button.alt.icon:before { + color: #bbb; + } + + input[type="submit"].primary, + input[type="reset"].primary, + input[type="button"].primary, + button.primary, + .button.primary { + background-color: #51c5e8; + color: #ffffff !important; + } + + input[type="submit"].primary:hover, + input[type="reset"].primary:hover, + input[type="button"].primary:hover, + button.primary:hover, + .button.primary:hover { + background-color: #68cdeb; + } + + input[type="submit"].primary:active, + input[type="reset"].primary:active, + input[type="button"].primary:active, + button.primary:active, + .button.primary:active { + background-color: #3abde5; + } + + input[type="submit"].disabled, input[type="submit"]:disabled, + input[type="reset"].disabled, + input[type="reset"]:disabled, + input[type="button"].disabled, + input[type="button"]:disabled, + button.disabled, + button:disabled, + .button.disabled, + .button:disabled { + background-color: #4a4a4a !important; + box-shadow: inset 0 -0.15em 0 0 rgba(0, 0, 0, 0.15); + color: #fff !important; + cursor: default; + opacity: 0.25; + } + +/* Feature */ + + .feature { + margin: 0 0 2em 0; + padding: 2em 0 2em 9em; + position: relative; + } + + .feature i { + border-radius: 100%; + border: solid 3px #eee; + color: #51c5e8; + display: block; + height: 7em; + left: 0; + line-height: 7.25em; + margin-top: -0.5em; + position: absolute; + text-align: center; + top: 2em; + width: 7em; + } + + .feature i:before { + font-size: 40px; + } + + .feature h3 { + margin-bottom: 0.5em; + } + + .feature p { + margin-bottom: 0; + } + +/* Image Feature */ + + .image-feature { + position: relative; + text-align: center; + margin: 0 0.5em 2em 0.5em; + } + + .image-feature > a { + display: block; + } + + .image-feature header { + background: #fff; + left: 0; + padding: 1.5em 0; + position: absolute; + top: 0; + width: 100%; + z-index: 1; + } + + .image-feature header:before { + -moz-transform: rotate(45deg); + -webkit-transform: rotate(45deg); + -ms-transform: rotate(45deg); + transform: rotate(45deg); + background: #fff; + bottom: -0.5em; + content: ''; + display: block; + height: 1em; + left: 50%; + margin-left: -0.5em; + position: absolute; + width: 1em; + } + + .image-feature header h3 { + font-size: 1em; + margin: 0; + } + + .image-feature .image { + margin: 0; + } + + .image-feature p { + margin: 0; + } + + .image-feature footer { + background: #1d2726; + background: rgba(29, 39, 38, 0.9); + bottom: 0; + color: #fff; + left: 0; + padding: 1.5em; + position: absolute; + width: 100%; + z-index: 1; + } + + .image-feature footer input[type="submit"].alt, + .image-feature footer input[type="reset"].alt, + .image-feature footer input[type="button"].alt, + .image-feature footer button.alt, + .image-feature footer .button.alt { + box-shadow: inset 0 0 0 2px rgba(255, 255, 255, 0.25); + color: #fff !important; + } + +/* Wrapper */ + + .wrapper { + padding: 4em 0 4em 0; + } + + .wrapper.style1 { + background: #fff; + color: #888; + } + + .wrapper.style1 h2, .wrapper.style1 h3, .wrapper.style1 strong { + color: #a5705b; + } + + .wrapper.style1 header.major:after { + background: rgba(0, 0, 0, 0.25); + } + + .wrapper.style2 { + background: #ffeee9; + } + + .wrapper.style3 { + background: #f4f4f4; + } + + .wrapper.style4 { + background: #fafafa; + } + +/* Header */ + + +.logo-kep{ + width: 70px; + line-height: 5em; + vertical-align: middle; + margin-left: 5em; +} + +.booktime{ + background-color: #E4AD9C; + color: #000; + margin-left:2em; + padding-left: 10px; + padding-right: 10px; +} + + #page-wrapper { + padding-top: 3em; + } + + #header { + background: #fff; + color: #000; + cursor: default; + height: 5em; + left: 0; + line-height: 5em; + position: fixed; + top: 0; + width: 100%; + z-index: 10000; + } + + #header h1 { + color: #E4AD9C; + height: inherit; + left: 10.5em; + line-height: inherit; + margin: 0; + padding: 0; + position: absolute; + top: 0; + } + + #header h1 a { + font-size: 1em; + } + + #header h1 a:before { + color: #51c5e8; + margin-right: 0.35em; + } + + #header nav { + font-weight: 600; + height: inherit; + letter-spacing: 0.125em; + line-height: inherit; + position: absolute; + right: 1.5em; + text-transform: uppercase; + top: 0; + vertical-align: middle; + } + + #header nav > ul { + list-style: none; + line-height: 4.5em; + margin: 0; + padding-left: 0; + vertical-align: middle; + } + + #header nav > ul > li { + display: inline-block; + margin-left: 2em; + /*padding-left: 0;*/ + } + + #header nav > ul > li.booktime { + margin-right: 2em; + } + + #header nav > ul > li.socialmedia-menu { + color: #fff; + font-size: 30px; + margin: auto 0 auto 0; +} + + + #header nav > ul > li.language { + padding-left: 0; + margin: 0; + font-size: 12px; + color: #888; + -moz-transition: color 0.2s ease-in-out; + -webkit-transition: color 0.2s ease-in-out; + -ms-transition: color 0.2s ease-in-out; + transition: color 0.2s ease-in-out; + } + #header nav > ul > li.language:hover { + color: #fff; + } + + #header nav > ul > li a { + -moz-transition: color 0.2s ease-in-out; + -webkit-transition: color 0.2s ease-in-out; + -ms-transition: color 0.2s ease-in-out; + transition: color 0.2s ease-in-out; + color: #E4AD9C; + display: inline-block; + text-decoration: none; + font-size: 0.8em; + } + + #header nav > ul > li a:before { + margin-right: 0.5em; + /*opacity: 0.5;*/ + } + + #header nav > ul > li a:hover { + color: #a5705b; + } + #header nav > ul > li.booktime a { + color: #fff; + } + + #header nav > ul > li.booktime a:hover { + color: #a5705b; + } + + #header nav > ul > li.active > a { + color: #fff; + } + + #header nav > ul > li:first-child { + margin-left: 0; + } + + #header nav > ul > li input[type="submit"], + #header nav > ul > li input[type="reset"], + #header nav > ul > li input[type="button"], + #header nav > ul > li button, + #header nav > ul > li .button { + font-size: 1em; + height: 2.25em; + line-height: 2.25em; + margin-bottom: 0; + padding: 0 1em; + position: relative; + top: -0.125em; + vertical-align: middle; + } + + #header nav > ul > li > ul { + display: none; + } + + #header .container { + position: relative; + } + + #header .container h1 { + left: 0; + } + + #header .container nav { + right: 0; + } + + .dropotron { + background: #1d2726; + color: #fff; + font-weight: 600; + letter-spacing: 0.125em; + list-style: none; + margin-top: -1em; + min-width: 14em; + padding: 1.25em 0; + text-transform: uppercase; + } + + .dropotron.level-0 { + font-size: 0.8em; + margin-top: 1em; + } + + .dropotron.level-0:before { + -moz-transform: rotate(45deg); + -webkit-transform: rotate(45deg); + -ms-transform: rotate(45deg); + transform: rotate(45deg); + background: #1d2726; + content: ''; + display: block; + height: 1em; + position: absolute; + right: 1.5em; + top: -0.5em; + width: 1em; + } + + .dropotron li > a { + -moz-transition: color 0.2s ease-in-out; + -webkit-transition: color 0.2s ease-in-out; + -ms-transition: color 0.2s ease-in-out; + transition: color 0.2s ease-in-out; + color: #ccc; + display: block; + padding: 0.125em 1.25em; + text-decoration: none; + } + + .dropotron li > a:hover { + color: #fff; + } + + .dropotron li.active > a { + color: #fff; + } + +/* Banner */ + + #banner { + background-color: #fff; + /*background-attachment: scroll, fixed; + background-image: url("images/overlay.png"), url("../../images/banner.jpg"); + background-position: top left, center center; + background-repeat: no-repeat; + background-size: cover; + background-size: auto, cover;*/ + color: #fff; + padding: 0em 0; + position: relative; + text-align: center; + } + + #banner img{ + width: 100%; + } + + #banner:after { + -moz-transition: opacity 1s ease-in-out; + -webkit-transition: opacity 1s ease-in-out; + -ms-transition: opacity 1s ease-in-out; + transition: opacity 1s ease-in-out; + background: #313148; + content: ''; + height: 100%; + left: 0; + opacity: 0; + position: absolute; + top: 0; + width: 100%; + z-index: 1; + } + + #banner :last-child { + margin-bottom: 0; + } + + #banner .inner { + background: #1d2726; + background: rgba(29, 39, 38, 0.9); + display: inline-block; + padding: 3.5em 5em; + position: relative; + z-index: 2; + } + + #banner .inner h2 { + color: inherit; + font-size: 2.5em; + line-height: 1.35em; + margin: 0; + padding: 0; + } + + #banner .inner p { + font-size: 1em; + letter-spacing: 0.125em; + line-height: 2em; + margin: 2em 0 0 0; + padding: 2em 0 0 0; + position: relative; + text-transform: uppercase; + top: -0.25em; + } + + #banner .inner p:before { + background: #888; + background: rgba(255, 255, 255, 0.25); + content: ''; + display: block; + height: 3px; + left: 50%; + margin: 0 0 0 -3em; + position: absolute; + top: 0; + width: 6em; + } + + #banner .inner .actions { + margin-top: 2em; + } + + #banner .inner input[type="submit"].alt, + #banner .inner input[type="reset"].alt, + #banner .inner input[type="button"].alt, + #banner .inner button.alt, + #banner .inner .button.alt { + box-shadow: inset 0 0 0 2px rgba(255, 255, 255, 0.25); + color: #fff !important; + } + + body.is-preload #banner:after { + opacity: 1.0; + } + +/* Mobile booking */ + +#mobil-menu{ + display: none; + background: #E4AD9C; +} + +.mobil-menucont ul { + list-style: none; + font-size: 1em; + line-height: 4.5em; + text-align: center; + margin: 0; + padding-left: 0; + vertical-align: middle; +} + +.mobil-menucont ul li{ + color: #fff; + margin: 0 0.5em; + display: inline; +} + +.mobil-menucont ul li a{ + color: #fff; + text-decoration: none; + } + +.mobil-menucont ul .mobil-menu-book{ + margin-right: 2em; + padding: 0.5em 0.5em; + font-weight: 600; +} + + + @media screen and (max-width: 980px) { + #mobil-menu{ + display: block; + } +} + +/* Main */ + + #main > header.major { + margin: 0 0 2em 0; + text-align: center; + } + + header.major h2{ + font-family: 'Abril Fatface', cursive; + color: #a5705b; + font-size: 50px; + font-weight: 400; + margin-bottom: 0; + } + + + header.major h4{ + font-size: 13px; + color: #888888; + } + +.one-half { + /*float: left;*/ + width: 100%; + padding: 0 0px; + position: relative; + text-align: left; + overflow: hidden; +} + +.prices-category{ + /*font-family: 'Abril Fatface', cursive;*/ + text-align: center; + margin-top: 2em; + margin-bottom: 2em; +} + +.prices-category h4{ + color: #E4AD9C; +} + + +.category-content { + position: relative; + display: inline-block; + width: 100%; + padding-bottom: 15px; + padding-top: 18px; + border-bottom: 1px solid #3d3d3d;} + +.category-text-left { + float: left; +} + +.main-title a { + text-decoration: none; + font-size: 16px; + color: #a5705b; + font-weight: 500; + -webkit-transition: all 0.5s ease; + -moz-transition: all 0.5s ease; + -o-transition: all 0.5s ease; + transition: all 0.5s ease; +} + +.sub-title { + font-size: 13px; + color: #888888; + font-weight: 400; + padding-right: 40px; + letter-spacing: 0.6px; +} + +.category-text-right { + float: right; +} + +.category-content .price { + font-size: 16px; + color: #E4AD9C; + letter-spacing: 0.5px; + font-weight: 600; + display: inline-block; + -webkit-transition: all 0.5s ease; + -moz-transition: all 0.5s ease; + -o-transition: all 0.5s ease; + transition: all 0.5s ease; +} + + +.common-home .box-heading:before, .box.related .box-heading:before { + content: ""; + background: url(../../assets/img/ollo.png) no-repeat scroll; + width: 75px; + height: 65px; + position: absolute; + top: 0; + left: 0; + right: 0; + margin: 0 auto; + display: inline-block; +} + + +/* About Us */ + +#aboutus .container .inner .dolgozo-nev{ + width: 100%; + text-align: center; + margin-bottom: 2em; +} +#aboutus .container .inner hr { + margin: 4em auto 4em auto; + border-bottom: solid 3px #888; + width: 40%; +} + +#aboutus .container .inner .dolgozo-nev .dolgozo-kep{ + width: 150px; + border-radius: 50%; + margin-bottom: 1em; +} + +#aboutus .container .inner .dolgozo-nev h4{ + color: #E4AD9C; +} + +#aboutus .container .inner .dolgozo-nev h4 span{ + color: #888; +} + +.bemutatkozas, .bemutatkozas-dolgozo{ + display: flex; + width: 100%; +} + +.bem-bal, .bem-dolgozo-bal{ + width: 60%; +} + +.bem-bal h4{ + color: #fff; +} + +.bem-bal p{ + text-align: justify; +} + +.bem-dolgozo-bal p{ + text-align: justify; + font-style: italic; + +} + +.bem-jobb{ + width: 40%; + margin-left: 4em; + float: right; +} + +.bem-jobb img{ + width: 100%; +} + +.bem-jobb h4{ + margin-top: 1em; + text-align: center; + color: #E4AD9C; +} + +.bem-jobb h4 span{ + color: #888; +} +.bem-dolgozo-jobb{ + width: 40%; + float: right; + text-align: right; + margin: auto; + +} + +.bem-dolgozo-jobb img{ + opacity: 0.8; + margin-left: 10px; + margin-right: 10ox; + width: 40%; + transition: opacity .25s ease-in-out; + -moz-transition: opacity .25s ease-in-out; + -webkit-transition: opacity .25s ease-in-out; +} + +.bem-dolgozo-jobb img:hover{ + opacity: 1; + +} + + + +/* Treatments - Our Services */ + + #treatments{ + clear: both; + } + + .service-block { + width: 100%; + display: block; + } + + + .service-area .one-third { + + width: 28%; + padding: 0; + overflow: hidden; + } + + .service-area .one-third.service-part1, .service-area .one-third.service-part4 { + width: 30%; + padding: 0; + float: left; + overflow: hidden; + } + + .service-area .one-third.service-part2 { + width: 42%; + /*margin-top:30px; + margin-bottom: 30px;*/ + padding: 0 30px; + float:left; + overflow: hidden; + } + + .service-area .one-third .service img { + -webkit-transform: rotateY(0deg); + -moz-transform: rotateY(0deg); + -ms-transform: rotateY(0deg); + -o-transform: rotateY(0deg); + transform: rotateY(0deg); + transition: all 0.9s ease 0s; + -webkit-transition: all 0.9s ease 0s; + -moz-transition: all 0.9s ease 0s; + -ms-transition: all 0.9s ease 0s; + -o-transition: all 0.9s ease 0s; + max-width: 100%; + } + + .service-area .one-third .service:hover img { + -webkit-transform: rotateY(-180deg); + -moz-transform: rotateY(-180deg); + -ms-transform: rotateY(-180deg); + -o-transform: rotateY(-180deg); + transform: rotateY(-180deg); + transition: all 0.9s ease 0s; + -webkit-transition: all 0.9s ease 0s; + -moz-transition: all 0.9s ease 0s; + -ms-transition: all 0.9s ease 0s; + -o-transition: all 0.9s ease 0s; + } + + + .service-area .one-third .service .service-text .service-icon { + background: url(../../assets/img/service-icon-rose.png) no-repeat scroll; + float: right; + height: 80px; + border-radius: 50%; + width: 80px; + position: relative; + background-color: #fff; + display: inline-block; + transition: all 0.5s ease 0s; + -webkit-transition: all 0.5s ease 0s; + -moz-transition: all 0.5s ease 0s; + -ms-transition: all 0.5s ease 0s; + -o-transition: all 0.5s ease 0s; + } + + .service .service-text .service-content .main-title { + font-size: 14px; + font-weight: 600; + color: #E4AD9C; + text-transform: capitalize; + letter-spacing: 0.8px; + padding-bottom: 10px; + } + + .service .service-text .service-content .sub-title-serv { + font-size: 13px; + color: #888888; + font-weight: 400; + line-height: 20px; + letter-spacing: 0.6px; + } + + .service-area .one-third .service .service-text .service-content { + margin-right: 100px; + } + + .service-area .one-third .service .service-text { + padding: 0 0px 95px; + text-align: right; + } + + .service-area .one-third .service.service3 .service-text .service-content { + margin-right: 0px; + margin-left: 100px; + } + + .service-area .one-third .service.service3 .service-text { + text-align: left; + } + + + + .service-area .one-third .service.service3 .service-text .service-icon { + float: left; + } + + .service-area .one-third .service .service-text .service-icon.icon1 { + background-position: center -65px; + } + .service-area .one-third .service .service-text:hover .service-icon.icon1 { + background-position:center 22px; + } + .service-area .one-third .service .service-text .service-icon.icon2 { + background-position:center -417px; + } + .service-area .one-third .service .service-text:hover .service-icon.icon2 { + background-position: center -330px; + } + .service-area .one-third .service .service-text .service-icon.icon3 { + background-position:center -765px; + } + .service-area .one-third .service .service-text:hover .service-icon.icon3 { + background-position: center -678px; + } + .service-area .one-third .service.service3 .service-text .service-icon.icon1 { + background-position: center -242px; + } + .service-area .one-third .service.service3 .service-text:hover .service-icon.icon1 { + background-position: center -155px; + } + .service-area .one-third .service.service3 .service-text .service-icon.icon2 { + background-position: center -590px; + } + .service-area .one-third .service.service3 .service-text:hover .service-icon.icon2 { + background-position:center -503px; + } + .service-area .one-third.service-part3 .service .service-text .service-icon.icon3 { + background-position: center -939px; + } + .service-area .one-third.service-part3 .service .service-text:hover .service-icon.icon3 { + background-position:center -852px; + } + .service-area .one-third .service .service-text:hover .service-content .main-title { + color: #a5705b; + } + + + +/* One */ + + #one { + padding-top:10em; + padding-bottom: 5em; + } + + #one p { + font-size: 1.25em; + line-height: 1.75em; + margin: -0.5em 0 0 0; + } + + #one .inner { + display: inline-block; + margin-top: -6em; + padding-right: 6em; + vertical-align: middle; + width: 100%; + } + + #one .device { + border: solid 40px #fff; + border-bottom: 0; + border-radius: 20px; + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; + display: inline-block; + margin-bottom: 0; + position: relative; + vertical-align: middle; + width: 100%; + } + + #one .device:after { + background: #eee; + border-radius: 100%; + content: ''; + height: 10px; + left: 50%; + margin: -23px 0 0 -5px; + position: absolute; + top: 0; + width: 10px; + } + + +/*two */ + + .nyitvatartas .about-content { + position: relative; + display: inline-block; + width: 100%; + padding: 25px 0px 15px; + border-bottom: 1px solid #3d3d3d; + font-size: 16px; + font-weight: 600; + } + + .nyitvatartas .title, .nyitvatartas .time{ + color: #888; + } + + .closed{ + color: rgba(228,173,156,0.6); + } + + .nyitvatartas .about-content .about-text-left { + float: left; + } + + .nyitvatartas .about-content .about-text-right { + float: right; +} + + + +/* Footer */ + +#footer .footer-div{ + display: flex; +} + + +#footer .footer-div .companyname{ + color: #fff; + font-family: 'Abril Fatface', cursive; + font-size: 24px; + margin-bottom: 20px; +} + +#footer .footer-div .companyname span{ + border-bottom: solid 5px #fff; + } + +#footer .footer-div ul{ + margin: 0; + list-style: none; +} + +#footer .footer-logo{ + max-width: 100px; +} + + #footer { + background: #a5705b; + color: #fff; + padding: 2em 0 0 0; + text-align: center; + } + + #footer .icons { + font-size: 24px; + margin: 0 0 1em 0; + padding-left: 0; + } + + #footer .icons li { + margin-top: 0.5em; + font-size: 16px; + padding: 0 1em 0 1em; + } + + #footer .icons li:last-child { + padding-right: 0; + } + + #footer .icons li a { + -moz-transition: color 0.2s ease-in-out; + -webkit-transition: color 0.2s ease-in-out; + -ms-transition: color 0.2s ease-in-out; + transition: color 0.2s ease-in-out; + color: #fff; + } + + #footer .icons li a:hover { + color: #E4AD9C; + } + + .footer-bal{ + margin: 0 10px; + width: 30%; + + } + + .footer-bal .contact-block a{ + text-decoration: none; + color: #fff; +} + + + .footer-jobb{ + width: 60%; + margin:0; + float: left; + } + + .footer-jobb img{ + width: 100%; + margin:0; + } + + + #footer .copyright { + color: #888; + background: #fff; + font-size: 0.9em; + padding: 1em 0 1em 0; + margin: 2em 0 0 0; + } + + .ui-widget-content { + border: 1px solid #f5d3c8!important; + background: #fff4f1!important; + color: #333333!important; + } + + .ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default, .ui-button, html .ui-button.ui-state-disabled:hover, html .ui-button.ui-state-disabled:active { + border: 1px solid #f5d3c8!important; + background: #e4ad9c url(images/ui-bg_glass_100_f6f6f6_1x400.png) 50% 50% repeat-x; + font-weight: bold!important; + color: #a5705b!important; + } + + table thead { + border-bottom: solid 2px #e4ad9c!important; + } + + .ui-widget-header { + border: 1px solid #a5705b!important; + background: #E4AD9C!important; + } + + .widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight { + border: 1px solid #e4ad9c!important; + background: #ebcec5!important; + } + + + + .ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active, a.ui-button:active, .ui-button:active, .ui-button.ui-state-active:hover { + border: 1px solid #a5705b; + background: #ffffff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x; + } + + .ui-state-active{ + background: #e4ad9c url(images/ui-bg_glass_100_f6f6f6_1x400.png) 50% 50% repeat-x!important; + } + + table tbody tr { + border: solid 1px #f5d3c8!important; + border-left: 0; + border-right: 0; + } + + table tbody tr:nth-child(2n + 1) { + background-color: rgb(255 244 241)!important; + } + + .ui-state-highlight{ + border: 1px solid #a5705b!important; + background: #f5d3c8!important; + } + + + + #datepicker table tr td:last-child a{ + background-image: none!important; + /*background-color: rgb(173, 40, 40)!important;*/ + color:red!important; + } + + .ui-state-disabled { + cursor: default !important; + pointer-events: none; + opacity: 0!important; + + } + + +/* Wide */ + + @media screen and (max-width: 1680px) { + + /* Basic */ + + body, input, select, textarea { + font-size: 11pt; + } + + } + +/* Normal */ + + @media screen and (max-width: 1280px) { + + /* Basic */ + + body, input, select, textarea { + font-size: 11pt; + } + + /* Feature */ + + .feature { + padding-left: 7em; + } + + .feature i { + height: 5.25em; + line-height: 5.5em; + margin-top: 0; + width: 5.25em; + } + + .feature i:before { + font-size: 32px; + } + + /* Wrapper */ + + .wrapper { + padding: 4em 0 2em 0; + } + + #header nav > ul > li{ + margin-left: 0.5em; + } + + /* Banner */ + + #banner { + background-attachment: scroll; + padding: 0 0; + } + + #banner .inner { + padding: 3em 4em; + } + + #banner .inner h2 { + font-size: 2.25em; + } + + /* Main */ + + #main { + padding: 2em 0; + } + + .service-area .one-third .service .service-text{ + padding: 0 0 45px; + } + + .main-title a {font-size: 14px;} + + .sub-title{font-size:10px;} + + + /* One */ + + #one .inner { + margin-top: -4em; + padding-right: 4em; + } + + #one .device { + border-width: 35px; + } + + #one .device:after { + margin-top: -22px; + } + + + #header { + display: none; + } + + #mobil-menu{ + display: block; + } + + + #navPanel, #navButton { + display: none; + } + + #page-wrapper { + padding-top: 0; + } + + + #mobil-menu{ + display: block; + } + + #header nav { + padding-left: 240px; + } + + #page-wrapper { + -moz-backface-visibility: hidden; + -webkit-backface-visibility: hidden; + -ms-backface-visibility: hidden; + backface-visibility: hidden; + -moz-transition: -moz-transform 0.5s ease; + -webkit-transition: -webkit-transform 0.5s ease; + -ms-transition: -ms-transform 0.5s ease; + transition: transform 0.5s ease; + padding-bottom: 1px; + } + + #navButton { + -moz-backface-visibility: hidden; + -webkit-backface-visibility: hidden; + -ms-backface-visibility: hidden; + backface-visibility: hidden; + -moz-transition: -moz-transform 0.5s ease; + -webkit-transition: -webkit-transform 0.5s ease; + -ms-transition: -ms-transform 0.5s ease; + transition: transform 0.5s ease; + display: block; + height: 4em; + left: 0; + position: fixed; + top: 0; + width: 6em; + z-index: 10001; + } + + #navButton .toggle { + text-decoration: none; + height: 100%; + left: 0; + position: absolute; + top: 0; + width: 100%; + } + + #navButton .toggle:before { + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + display: inline-block; + font-style: normal; + font-variant: normal; + text-rendering: auto; + line-height: 1; + text-transform: none !important; + font-family: 'Font Awesome 5 Free'; + font-weight: 900; + } + + #navButton .toggle:before { + background: rgba(29, 39, 38, 0.75); + color: #ffffff; + content: '\f0c9'; + display: block; + font-size: 18px; + height: 2.35em; + left: 0.5em; + line-height: 2.35em; + position: absolute; + text-align: center; + top: 0.5em; + width: 3em; + } + + #navPanel { + -moz-backface-visibility: hidden; + -webkit-backface-visibility: hidden; + -ms-backface-visibility: hidden; + backface-visibility: hidden; + -moz-transform: translateX(-275px); + -webkit-transform: translateX(-275px); + -ms-transform: translateX(-275px); + transform: translateX(-275px); + -moz-transition: -moz-transform 0.5s ease; + -webkit-transition: -webkit-transform 0.5s ease; + -ms-transition: -ms-transform 0.5s ease; + transition: transform 0.5s ease; + background-image: -moz-linear-gradient(left, rgba(0,0,0,0) 95%, rgba(0,0,0,0.1)); + background-image: -webkit-linear-gradient(left, rgba(0,0,0,0) 95%, rgba(0,0,0,0.1)); + background-image: -ms-linear-gradient(left, rgba(0,0,0,0) 95%, rgba(0,0,0,0.1)); + background-image: linear-gradient(left, rgba(0,0,0,0) 95%, rgba(0,0,0,0.1)); + display: block; + height: 100%; + left: 0; + overflow-y: auto; + position: fixed; + top: 0; + width: 275px; + z-index: 10002; + background: #1d2726; + color: #c7c9c9; + padding: 0.25em 1.5em; + } + + #navPanel .link { + border-top: solid 1px rgba(255, 255, 255, 0.05); + color: #c7c9c9; + display: block; + font-size: 0.8em; + font-weight: 600; + height: 3.5em; + letter-spacing: 0.125em; + line-height: 3.5em; + text-decoration: none; + text-transform: uppercase; + } + + #navPanel .link:first-child { + border-top: 0; + } + + #navPanel .link.depth-0 { + color: #ffffff; + } + + #navPanel .link .indent-1 { + display: inline-block; + width: 1.25em; + } + + #navPanel .link .indent-2 { + display: inline-block; + width: 2.5em; + } + + #navPanel .link .indent-3 { + display: inline-block; + width: 3.75em; + } + + #navPanel .link .indent-4 { + display: inline-block; + width: 5em; + } + + #navPanel .link .indent-5 { + display: inline-block; + width: 6.25em; + } + + body.navPanel-visible #page-wrapper { + -moz-transform: translateX(275px); + -webkit-transform: translateX(275px); + -ms-transform: translateX(275px); + transform: translateX(275px); + } + + body.navPanel-visible #navButton { + -moz-transform: translateX(275px); + -webkit-transform: translateX(275px); + -ms-transform: translateX(275px); + transform: translateX(275px); + } + + body.navPanel-visible #navPanel { + -moz-transform: translateX(0); + -webkit-transform: translateX(0); + -ms-transform: translateX(0); + transform: translateX(0); + } + + } + +/* Narrow */ + + + + @media screen and (max-width: 980px) { + + /* Basic */ + + html, body { + overflow-x: hidden; + } + + body, input, select, textarea { + font-size: 12pt; + } + + h2 { + font-size: 1.25em; + line-height: 1.75em; + } + + h3 { + font-size: 1.1em; + line-height: 1.5em; + } + + h4 { + font-size: 1em; + line-height: 1.5em; + } + + /* Section/Article */ + + section.special, article.special { + text-align: center; + } + + header h2 + p { + font-size: 0.9em; + } + + header h3 + p { + font-size: 0.8em; + } + + header h4 + p, + header h5 + p, + header h6 + p { + font-size: 0.8em; + } + + /* Feature */ + + .feature { + padding-left: 9em; + } + + .feature i { + height: 7em; + line-height: 7.5em; + margin-top: -0.5em; + width: 7em; + } + + .feature i:before { + font-size: 42px; + } + + /* Image Feature */ + + .image-feature .image { + max-height: 30em; + overflow: hidden; + } + + /* Header */ + + #page-wrapper { + padding-top: 0; + } + + #header { + display: none; + } + + /* Banner */ + + #banner { + padding: 0em 0; + } + + #banner .inner { + padding: 3em; + } + + #banner .inner h2 { + font-size: 2em; + } + + + + /* Main */ + + #main > header.major { + margin: 0; + } + + .bem-jobb{margin-left:2em;} + + .bem-bal p, .bem-dolgozo-bal p {font-size:14px; margin: 0 0 0.5em 0;} + + .bem-dolgozo-jobb {width: 30%;} + + .bem-dolgozo-jobb img{width: 70%;} + + header.major h2 {font-size: 36px;} + + + /* One */ + + #one {padding-top: 2em;} + + #one p { + font-size: 1em; + } + + #one .inner { + display: block; + margin: 0 auto; + max-width: 100%; + padding: 0; + text-align: center; + width: 35em; + } + + #one .device { + display: block; + margin: 4em auto 0 auto; + max-width: 100%; + width: 30em; + } + + .service-area .one-third.service-part1{width: 50%; padding-right: 10px;} + .service-area .one-third.service-part2{display: none;} + .service-area .one-third.service-part3{width:50%;padding-left: 10px;} + + .one-half {float: none; width: 100%;} + #footer .footer-div{display:block;} + .footer-bal{width: 100%;} + .footer-jobb{width: 100%; float: none; margin-top:2em;} + + + /* Off-Canvas Navigation */ + + #page-wrapper { + -moz-backface-visibility: hidden; + -webkit-backface-visibility: hidden; + -ms-backface-visibility: hidden; + backface-visibility: hidden; + -moz-transition: -moz-transform 0.5s ease; + -webkit-transition: -webkit-transform 0.5s ease; + -ms-transition: -ms-transform 0.5s ease; + transition: transform 0.5s ease; + padding-bottom: 1px; + } + + #navButton { + -moz-backface-visibility: hidden; + -webkit-backface-visibility: hidden; + -ms-backface-visibility: hidden; + backface-visibility: hidden; + -moz-transition: -moz-transform 0.5s ease; + -webkit-transition: -webkit-transform 0.5s ease; + -ms-transition: -ms-transform 0.5s ease; + transition: transform 0.5s ease; + display: block; + height: 4em; + left: 0; + position: fixed; + top: 0; + width: 6em; + z-index: 10001; + } + + #navButton .toggle { + text-decoration: none; + height: 100%; + left: 0; + position: absolute; + top: 0; + width: 100%; + } + + #navButton .toggle:before { + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + display: inline-block; + font-style: normal; + font-variant: normal; + text-rendering: auto; + line-height: 1; + text-transform: none !important; + font-family: 'Font Awesome 5 Free'; + font-weight: 900; + } + + #navButton .toggle:before { + background: rgba(29, 39, 38, 0.75); + color: #ffffff; + content: '\f0c9'; + display: block; + font-size: 18px; + height: 2.35em; + left: 0.5em; + line-height: 2.35em; + position: absolute; + text-align: center; + top: 0.5em; + width: 3em; + } + + #navPanel { + -moz-backface-visibility: hidden; + -webkit-backface-visibility: hidden; + -ms-backface-visibility: hidden; + backface-visibility: hidden; + -moz-transform: translateX(-275px); + -webkit-transform: translateX(-275px); + -ms-transform: translateX(-275px); + transform: translateX(-275px); + -moz-transition: -moz-transform 0.5s ease; + -webkit-transition: -webkit-transform 0.5s ease; + -ms-transition: -ms-transform 0.5s ease; + transition: transform 0.5s ease; + background-image: -moz-linear-gradient(left, rgba(0,0,0,0) 95%, rgba(0,0,0,0.1)); + background-image: -webkit-linear-gradient(left, rgba(0,0,0,0) 95%, rgba(0,0,0,0.1)); + background-image: -ms-linear-gradient(left, rgba(0,0,0,0) 95%, rgba(0,0,0,0.1)); + background-image: linear-gradient(left, rgba(0,0,0,0) 95%, rgba(0,0,0,0.1)); + display: block; + height: 100%; + left: 0; + overflow-y: auto; + position: fixed; + top: 0; + width: 275px; + z-index: 10002; + background: #1d2726; + color: #c7c9c9; + padding: 0.25em 1.5em; + } + + #navPanel .link { + border-top: solid 1px rgba(255, 255, 255, 0.05); + color: #c7c9c9; + display: block; + font-size: 0.8em; + font-weight: 600; + height: 3.5em; + letter-spacing: 0.125em; + line-height: 3.5em; + text-decoration: none; + text-transform: uppercase; + } + + #navPanel .link:first-child { + border-top: 0; + } + + #navPanel .link.depth-0 { + color: #ffffff; + } + + #navPanel .link .indent-1 { + display: inline-block; + width: 1.25em; + } + + #navPanel .link .indent-2 { + display: inline-block; + width: 2.5em; + } + + #navPanel .link .indent-3 { + display: inline-block; + width: 3.75em; + } + + #navPanel .link .indent-4 { + display: inline-block; + width: 5em; + } + + #navPanel .link .indent-5 { + display: inline-block; + width: 6.25em; + } + + body.navPanel-visible #page-wrapper { + -moz-transform: translateX(275px); + -webkit-transform: translateX(275px); + -ms-transform: translateX(275px); + transform: translateX(275px); + } + + body.navPanel-visible #navButton { + -moz-transform: translateX(275px); + -webkit-transform: translateX(275px); + -ms-transform: translateX(275px); + transform: translateX(275px); + } + + body.navPanel-visible #navPanel { + -moz-transform: translateX(0); + -webkit-transform: translateX(0); + -ms-transform: translateX(0); + transform: translateX(0); + } + + } + +/* Mobile */ + + @media screen and (max-width: 736px) { + + /* Basic */ + + body, input, select, textarea { + font-size: 12pt; + } + + /* Feature */ + + .feature { + margin: 0 auto 2em auto; + max-width: 100%; + padding: 0; + text-align: center; + width: 30em; + } + + .feature i { + left: 0; + margin: 0 auto 2em auto; + position: relative; + top: 0; + } + + /* Image Feature */ + + .image-feature { + margin: 0 auto 2em auto; + max-width: 100%; + width: 25em; + } + + .image-feature .image { + max-height: none; + } + + /* Wrapper */ + + .wrapper { + padding: 2.5em 1.25em 0.5em 1.25em; + } + + /* Banner */ + + #banner { + padding: 6em 0; + } + + #banner .inner { + padding: 2em 2.5em; + width: 100%; + } + + #banner .inner h2 { + font-size: 1.5em; + } + + #banner .inner p { + margin: 1.5em 0 0 0; + padding: 1.5em 0 0 0; + } + + /* One */ + + #one .device { + border-width: 20px; + margin-top: 2em; + max-width: 100%; + width: 25em; + } + + #one .device:after { + height: 8px; + margin: -13px 0 0 -4px; + width: 8px; + } + + .bookingContainer { + width: 95%!important; + margin-right: 10px!important; + margin-left: 10px!important; + } + + .bookingResultsWrapper { + width: 665px!important; + margin-left: 0!important; + } + + #bookingStep3 { + min-height: 720px!important; + } + + .serviceInfoCol { + padding-left: 5px!important; + } + + .serviceCol h4 { + margin-left: 0!important; + } + + .serviceNameCol { + padding-left: 0!important; + } + + .serviceTable { + width: 93%!important; + margin-left: 5px!important; + margin-right: 0!important; + padding: 0 5px!important; + margin-bottom: 100px!important; + } + + .bookingResultsWrapper { + width: 100%!important; + float: none!important; + } + + .bookingCalendar { + float: none!important; + } + + .availableTimes { + margin-bottom: 60px!important; + } + + .bookingContainer { + margin-top: -12px!important; + } + } + +/* Mobile (Portrait) */ + + @media screen and (max-width: 480px) { + + #banner{padding:0;} + .service-part2{display: none;} + .one-third{width: 100%;} + .service-area .one-third.service-part1{width: 100%;} + .service-area .one-third.service-part3{width: 100%;} + .service-area .one-third .service .service-text {text-align: center; padding-bottom: 30px;} + .service-area .one-third .service .service-text .service-icon {float: none;} + .service-area .one-third .service .service-text .service-content {margin: 0;} + .service .service-text .service-content .sub-title-serv {padding: 0 20px 0 20px;} + .service-area .one-third .service.service3 .service-text .service-icon {float: none;} + .service-area .one-third .service.service3 .service-text {text-align:center;} + .service-area .one-third .service.service3 .service-text .service-content {margin-left: 0;} + .service-area .one-third {width: 100%;} + + #one{padding-top: 3em;} + + .bemutatkozas{display: block;} + .bem-bal{width: 100%;} + .bem-jobb{width: 100%; margin-bottom: 2em;} + + .bemutatkozas-dolgozo{display: block;} + .bem-dolgozo-bal {width: 100%;} + .bem-dolgozo-jobb {width: 100%; float: none; text-align: center;} + + #czcategorylistblock .czcategorylist-wrapper .category_lists .one-half .category-content {width: 100%; } + .one-half{width:100%; float: none;} + + .category-text-left{float: none;} + .category-text-right {display: block; float: left;} + + #two {margin-bottom: 3em;} + header.major h2 {font-size: 32px;} + + #footer .footer-div {display: block;} + .footer-bal{width:100%;} + .footer-jobb{width:100%; float: none; margin-top:2em;} + + + /* Basic */ + + html, body { + min-width: 320px; + } + + body, input, select, textarea { + font-size: 12pt; + } + + h1 br, h2 br, h3 br, h4 br, h5 br, h6 br { + display: none; + } + + h2 { + font-size: 1.15em; + line-height: 1.75em; + } + + h3 { + font-size: 1em; + line-height: 1.5em; + } + + /* List */ + + ul.actions { + margin: 0 0 2em 0; + } + + ul.actions li { + display: block; + padding: 1em 0 0 0; + text-align: center; + width: 100%; + } + + ul.actions li:first-child { + padding-top: 0; + } + + ul.actions li > * { + margin: 0 !important; + width: 100%; + } + + ul.actions li > *.icon:before { + margin-left: -2em; + } + + ul.actions.small li { + padding: 0.5em 0 0 0; + } + + ul.actions.small li:first-child { + padding-top: 0; + } + + /* Button */ + + input[type="submit"], + input[type="reset"], + input[type="button"], + button, + .button { + padding: 0; + } + + /* One */ + + #one .device { + border-width: 15px; + } + + #one .device:after { + height: 5px; + margin: -10px 0 0 -2.5px; + width: 5px; + } + + } \ No newline at end of file diff --git a/assets/css/calendar.css b/assets/css/calendar.css new file mode 100755 index 0000000..d09c843 --- /dev/null +++ b/assets/css/calendar.css @@ -0,0 +1,305 @@ +.dayHasEvent{ + padding:5px; + border-radius:10px; + background-color: #e8c393; + color:black; +} + +.calendarContent{ + display:inline-block; + height: 30rem; + width: max-content; + min-width: 600px; + background-color: white; + border-radius: 25px; + overflow: hidden; + padding: 35px 50px 0px 50px; +} + +.calendar { + display:inline-block; + height: 30rem; + width: max-content; + background-color: white; + border-radius: 25px; + overflow: hidden; + padding: 35px 50px 0px 50px; +} + +.calendar { + box-shadow: rgba(100, 100, 111, 0.2) 0px 7px 29px 0px; +} + +.calendar-header { + background: #9e8462; + display: flex; + justify-content: space-between; + border-radius: 7px; + align-items: center; + font-weight: 700; + color: #ffffff; + padding: 10px; +}; + +.calendar-body { + padding: 10px; +} + +.calendar-week-days { + display: grid; + grid-template-columns: repeat(7, 1fr); + font-weight: 600; + cursor: pointer; + color: rgb(104, 104, 104); +} + +.calendar-week-days div:hover { + color: black; + transform: scale(1.2); + transition: all .2s ease-in-out; +} + +.calendar-week-days div { + display: grid; + place-items: center; + color: #9e8462; + height: 50px; +} + +.calendar-days { + display: grid; + grid-template-columns: repeat(7, 1fr); + gap: 2px; + color: #0A0921; +} + +.calendar-days div { + width: 37px; + height: 33px; + display: flex; + align-items: center; + justify-content: center; + padding: 5px; + position: relative; + cursor: pointer; + animation: to-top 1s forwards; +} + +.month-picker { + padding: 5px 10px; + border-radius: 10px; + cursor: pointer; +} + +.year-picker { + display: flex; + align-items: center; +} + +.year-change { + height: 30px; + width: 30px; + border-radius: 50%; + display: grid; + place-items: center; + margin: 0px 10px; + cursor: pointer; +} + +.year-change:hover { + background-color: #9e8462; + transition: all .2s ease-in-out; + transform: scale(1.12); +} + +.calendar-footer { + padding: 10px; + display: flex; + justify-content: flex-end; + align-items: center; +} + +#year:hover { + cursor: pointer; + transform: scale(1.2); + transition: all 0.2 ease-in-out; +} + +.calendar-days div span { + position: absolute; +} + +.calendar-days div:hover { + transition: width 0.2s ease-in-out, height 0.2s ease-in-out; + background-color: #e5cdaf; + border-radius: 20%; + color: #f8fbff; +} + +.calendar-days div.current-date { + color: #f8fbff; + background-color: #9e8462; + border-radius: 20%; +} + +.month-list { + position: relative; + left: 0; + top: -215px; + background-color: #ebebeb; + color: #151426; + display: grid; + grid-template-columns: repeat(3, auto); + gap: 5px; + border-radius: 20px; +} + +.month-list>div { + display: grid; + place-content: center; + margin: 5px 10px; + transition: all 0.2s ease-in-out; +} + +.month-list>div>div { + border-radius: 15px; + padding: 10px; + cursor: pointer; +} + +.month-list>div>div:hover { + background-color: #9e8462; + color: #f8fbff; + transform: scale(0.9); + transition: all 0.2s ease-in-out; +} + +.month-list.show { + visibility: visible; + pointer-events: visible; + transition: 0.6s ease-in-out; + animation: to-left .71s forwards; +} + +.month-list.hideonce { + visibility: hidden; +} + +.month-list.hide { + animation: to-right 1s forwards; + visibility: none; + pointer-events: none; +} + +.date-time-formate { + height: 4rem; + width: 100%; + font-family: Dubai Light, Century Gothic; + position: relative; + display: flex; + top: 50px; + justify-content: center; + align-items: center; +} + +.day-text-formate { + font-family: Microsoft JhengHei UI; + font-size: 1.4rem; + padding-right: 5%; + border-right: 3px solid #9e8462; +} + +.date-time-value { + display: block; + position: relative; + text-align: center; + padding-left: 5%; +} + +.time-formate { + font-size: 1.5rem; +} + +.time-formate.hideTime { + animation: hidetime 1.5s forwards; +} + +.day-text-formate.hidetime { + animation: hidetime 1.5s forwards; +} + +.date-formate.hideTime { + animation: hidetime 1.5s forwards; +} + +.day-text-formate.showtime { + animation: showtime 1s forwards; +} + +.time-formate.showtime { + animation: showtime 1s forwards; +} + +.date-formate.showtime { + animation: showtime 1s forwards; +} + +@keyframes to-top { + 0% { + transform: translateY(0); + opacity: 0; + } + + 100% { + transform: translateY(100%); + opacity: 1; + } +} + +@keyframes to-left { + 0% { + transform: translatex(230%); + opacity: 1; + } + + 100% { + transform: translatex(0); + opacity: 1; + } +} + +@keyframes to-right { + 10% { + transform: translatex(0); + opacity: 1; + } + + 100% { + transform: translatex(-150%); + opacity: 1; + } +} + +@keyframes showtime { + 0% { + transform: translatex(250%); + opacity: 1; + } + + 100% { + transform: translatex(0%); + opacity: 1; + } +} + +@keyframes hidetime { + 0% { + transform: translatex(0%); + opacity: 1; + } + + 100% { + transform: translatex(-370%); + opacity: 1; + } +} \ No newline at end of file diff --git a/assets/css/fontawesome-all.min.css b/assets/css/fontawesome-all.min.css new file mode 100755 index 0000000..d6f129c --- /dev/null +++ b/assets/css/fontawesome-all.min.css @@ -0,0 +1,206 @@ +/*! + * Font Awesome Free 5.9.0 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) + */ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +.fa,.fab,.fal,.far,.fas{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-.0667em}.fa-xs{font-size:.75em}.fa-sm{font-size:.875em}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:2.5em;padding-left:0}.fa-ul>li{position:relative}.fa-li{left:-2em;position:absolute;text-align:center;width:2em;line-height:inherit}.fa-border{border:.08em solid #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.fab.fa-pull-left,.fal.fa-pull-left,.far.fa-pull-left,.fas.fa-pull-left{margin-right:.3em}.fa.fa-pull-right,.fab.fa-pull-right,.fal.fa-pull-right,.far.fa-pull-right,.fas.fa-pull-right{margin-left:.3em}.fa-spin{animation:fa-spin 2s infinite linear}.fa-pulse{animation:fa-spin 1s infinite steps(8)}@keyframes fa-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";transform:scaleX(-1)}.fa-flip-vertical{transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical,.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{transform:scale(-1)}:root .fa-flip-both,:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270{filter:none}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-500px:before{content:"\f26e"}.fa-accessible-icon:before{content:"\f368"}.fa-accusoft:before{content:"\f369"}.fa-acquisitions-incorporated:before{content:"\f6af"}.fa-ad:before{content:"\f641"}.fa-address-book:before{content:"\f2b9"}.fa-address-card:before{content:"\f2bb"}.fa-adjust:before{content:"\f042"}.fa-adn:before{content:"\f170"}.fa-adobe:before{content:"\f778"}.fa-adversal:before{content:"\f36a"}.fa-affiliatetheme:before{content:"\f36b"}.fa-air-freshener:before{content:"\f5d0"}.fa-airbnb:before{content:"\f834"}.fa-algolia:before{content:"\f36c"}.fa-align-center:before{content:"\f037"}.fa-align-justify:before{content:"\f039"}.fa-align-left:before{content:"\f036"}.fa-align-right:before{content:"\f038"}.fa-alipay:before{content:"\f642"}.fa-allergies:before{content:"\f461"}.fa-amazon:before{content:"\f270"}.fa-amazon-pay:before{content:"\f42c"}.fa-ambulance:before{content:"\f0f9"}.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-amilia:before{content:"\f36d"}.fa-anchor:before{content:"\f13d"}.fa-android:before{content:"\f17b"}.fa-angellist:before{content:"\f209"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-down:before{content:"\f107"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angry:before{content:"\f556"}.fa-angrycreative:before{content:"\f36e"}.fa-angular:before{content:"\f420"}.fa-ankh:before{content:"\f644"}.fa-app-store:before{content:"\f36f"}.fa-app-store-ios:before{content:"\f370"}.fa-apper:before{content:"\f371"}.fa-apple:before{content:"\f179"}.fa-apple-alt:before{content:"\f5d1"}.fa-apple-pay:before{content:"\f415"}.fa-archive:before{content:"\f187"}.fa-archway:before{content:"\f557"}.fa-arrow-alt-circle-down:before{content:"\f358"}.fa-arrow-alt-circle-left:before{content:"\f359"}.fa-arrow-alt-circle-right:before{content:"\f35a"}.fa-arrow-alt-circle-up:before{content:"\f35b"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-down:before{content:"\f063"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrows-alt:before{content:"\f0b2"}.fa-arrows-alt-h:before{content:"\f337"}.fa-arrows-alt-v:before{content:"\f338"}.fa-artstation:before{content:"\f77a"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asterisk:before{content:"\f069"}.fa-asymmetrik:before{content:"\f372"}.fa-at:before{content:"\f1fa"}.fa-atlas:before{content:"\f558"}.fa-atlassian:before{content:"\f77b"}.fa-atom:before{content:"\f5d2"}.fa-audible:before{content:"\f373"}.fa-audio-description:before{content:"\f29e"}.fa-autoprefixer:before{content:"\f41c"}.fa-avianex:before{content:"\f374"}.fa-aviato:before{content:"\f421"}.fa-award:before{content:"\f559"}.fa-aws:before{content:"\f375"}.fa-baby:before{content:"\f77c"}.fa-baby-carriage:before{content:"\f77d"}.fa-backspace:before{content:"\f55a"}.fa-backward:before{content:"\f04a"}.fa-bacon:before{content:"\f7e5"}.fa-balance-scale:before{content:"\f24e"}.fa-balance-scale-left:before{content:"\f515"}.fa-balance-scale-right:before{content:"\f516"}.fa-ban:before{content:"\f05e"}.fa-band-aid:before{content:"\f462"}.fa-bandcamp:before{content:"\f2d5"}.fa-barcode:before{content:"\f02a"}.fa-bars:before{content:"\f0c9"}.fa-baseball-ball:before{content:"\f433"}.fa-basketball-ball:before{content:"\f434"}.fa-bath:before{content:"\f2cd"}.fa-battery-empty:before{content:"\f244"}.fa-battery-full:before{content:"\f240"}.fa-battery-half:before{content:"\f242"}.fa-battery-quarter:before{content:"\f243"}.fa-battery-three-quarters:before{content:"\f241"}.fa-battle-net:before{content:"\f835"}.fa-bed:before{content:"\f236"}.fa-beer:before{content:"\f0fc"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-bell:before{content:"\f0f3"}.fa-bell-slash:before{content:"\f1f6"}.fa-bezier-curve:before{content:"\f55b"}.fa-bible:before{content:"\f647"}.fa-bicycle:before{content:"\f206"}.fa-biking:before{content:"\f84a"}.fa-bimobject:before{content:"\f378"}.fa-binoculars:before{content:"\f1e5"}.fa-biohazard:before{content:"\f780"}.fa-birthday-cake:before{content:"\f1fd"}.fa-bitbucket:before{content:"\f171"}.fa-bitcoin:before{content:"\f379"}.fa-bity:before{content:"\f37a"}.fa-black-tie:before{content:"\f27e"}.fa-blackberry:before{content:"\f37b"}.fa-blender:before{content:"\f517"}.fa-blender-phone:before{content:"\f6b6"}.fa-blind:before{content:"\f29d"}.fa-blog:before{content:"\f781"}.fa-blogger:before{content:"\f37c"}.fa-blogger-b:before{content:"\f37d"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-bold:before{content:"\f032"}.fa-bolt:before{content:"\f0e7"}.fa-bomb:before{content:"\f1e2"}.fa-bone:before{content:"\f5d7"}.fa-bong:before{content:"\f55c"}.fa-book:before{content:"\f02d"}.fa-book-dead:before{content:"\f6b7"}.fa-book-medical:before{content:"\f7e6"}.fa-book-open:before{content:"\f518"}.fa-book-reader:before{content:"\f5da"}.fa-bookmark:before{content:"\f02e"}.fa-bootstrap:before{content:"\f836"}.fa-border-all:before{content:"\f84c"}.fa-border-none:before{content:"\f850"}.fa-border-style:before{content:"\f853"}.fa-bowling-ball:before{content:"\f436"}.fa-box:before{content:"\f466"}.fa-box-open:before{content:"\f49e"}.fa-boxes:before{content:"\f468"}.fa-braille:before{content:"\f2a1"}.fa-brain:before{content:"\f5dc"}.fa-bread-slice:before{content:"\f7ec"}.fa-briefcase:before{content:"\f0b1"}.fa-briefcase-medical:before{content:"\f469"}.fa-broadcast-tower:before{content:"\f519"}.fa-broom:before{content:"\f51a"}.fa-brush:before{content:"\f55d"}.fa-btc:before{content:"\f15a"}.fa-buffer:before{content:"\f837"}.fa-bug:before{content:"\f188"}.fa-building:before{content:"\f1ad"}.fa-bullhorn:before{content:"\f0a1"}.fa-bullseye:before{content:"\f140"}.fa-burn:before{content:"\f46a"}.fa-buromobelexperte:before{content:"\f37f"}.fa-bus:before{content:"\f207"}.fa-bus-alt:before{content:"\f55e"}.fa-business-time:before{content:"\f64a"}.fa-buysellads:before{content:"\f20d"}.fa-calculator:before{content:"\f1ec"}.fa-calendar:before{content:"\f133"}.fa-calendar-alt:before{content:"\f073"}.fa-calendar-check:before{content:"\f274"}.fa-calendar-day:before{content:"\f783"}.fa-calendar-minus:before{content:"\f272"}.fa-calendar-plus:before{content:"\f271"}.fa-calendar-times:before{content:"\f273"}.fa-calendar-week:before{content:"\f784"}.fa-camera:before{content:"\f030"}.fa-camera-retro:before{content:"\f083"}.fa-campground:before{content:"\f6bb"}.fa-canadian-maple-leaf:before{content:"\f785"}.fa-candy-cane:before{content:"\f786"}.fa-cannabis:before{content:"\f55f"}.fa-capsules:before{content:"\f46b"}.fa-car:before{content:"\f1b9"}.fa-car-alt:before{content:"\f5de"}.fa-car-battery:before{content:"\f5df"}.fa-car-crash:before{content:"\f5e1"}.fa-car-side:before{content:"\f5e4"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-caret-square-down:before{content:"\f150"}.fa-caret-square-left:before{content:"\f191"}.fa-caret-square-right:before{content:"\f152"}.fa-caret-square-up:before{content:"\f151"}.fa-caret-up:before{content:"\f0d8"}.fa-carrot:before{content:"\f787"}.fa-cart-arrow-down:before{content:"\f218"}.fa-cart-plus:before{content:"\f217"}.fa-cash-register:before{content:"\f788"}.fa-cat:before{content:"\f6be"}.fa-cc-amazon-pay:before{content:"\f42d"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-apple-pay:before{content:"\f416"}.fa-cc-diners-club:before{content:"\f24c"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-cc-visa:before{content:"\f1f0"}.fa-centercode:before{content:"\f380"}.fa-centos:before{content:"\f789"}.fa-certificate:before{content:"\f0a3"}.fa-chair:before{content:"\f6c0"}.fa-chalkboard:before{content:"\f51b"}.fa-chalkboard-teacher:before{content:"\f51c"}.fa-charging-station:before{content:"\f5e7"}.fa-chart-area:before{content:"\f1fe"}.fa-chart-bar:before{content:"\f080"}.fa-chart-line:before{content:"\f201"}.fa-chart-pie:before{content:"\f200"}.fa-check:before{content:"\f00c"}.fa-check-circle:before{content:"\f058"}.fa-check-double:before{content:"\f560"}.fa-check-square:before{content:"\f14a"}.fa-cheese:before{content:"\f7ef"}.fa-chess:before{content:"\f439"}.fa-chess-bishop:before{content:"\f43a"}.fa-chess-board:before{content:"\f43c"}.fa-chess-king:before{content:"\f43f"}.fa-chess-knight:before{content:"\f441"}.fa-chess-pawn:before{content:"\f443"}.fa-chess-queen:before{content:"\f445"}.fa-chess-rook:before{content:"\f447"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-down:before{content:"\f078"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-chevron-up:before{content:"\f077"}.fa-child:before{content:"\f1ae"}.fa-chrome:before{content:"\f268"}.fa-chromecast:before{content:"\f838"}.fa-church:before{content:"\f51d"}.fa-circle:before{content:"\f111"}.fa-circle-notch:before{content:"\f1ce"}.fa-city:before{content:"\f64f"}.fa-clinic-medical:before{content:"\f7f2"}.fa-clipboard:before{content:"\f328"}.fa-clipboard-check:before{content:"\f46c"}.fa-clipboard-list:before{content:"\f46d"}.fa-clock:before{content:"\f017"}.fa-clone:before{content:"\f24d"}.fa-closed-captioning:before{content:"\f20a"}.fa-cloud:before{content:"\f0c2"}.fa-cloud-download-alt:before{content:"\f381"}.fa-cloud-meatball:before{content:"\f73b"}.fa-cloud-moon:before{content:"\f6c3"}.fa-cloud-moon-rain:before{content:"\f73c"}.fa-cloud-rain:before{content:"\f73d"}.fa-cloud-showers-heavy:before{content:"\f740"}.fa-cloud-sun:before{content:"\f6c4"}.fa-cloud-sun-rain:before{content:"\f743"}.fa-cloud-upload-alt:before{content:"\f382"}.fa-cloudscale:before{content:"\f383"}.fa-cloudsmith:before{content:"\f384"}.fa-cloudversify:before{content:"\f385"}.fa-cocktail:before{content:"\f561"}.fa-code:before{content:"\f121"}.fa-code-branch:before{content:"\f126"}.fa-codepen:before{content:"\f1cb"}.fa-codiepie:before{content:"\f284"}.fa-coffee:before{content:"\f0f4"}.fa-cog:before{content:"\f013"}.fa-cogs:before{content:"\f085"}.fa-coins:before{content:"\f51e"}.fa-columns:before{content:"\f0db"}.fa-comment:before{content:"\f075"}.fa-comment-alt:before{content:"\f27a"}.fa-comment-dollar:before{content:"\f651"}.fa-comment-dots:before{content:"\f4ad"}.fa-comment-medical:before{content:"\f7f5"}.fa-comment-slash:before{content:"\f4b3"}.fa-comments:before{content:"\f086"}.fa-comments-dollar:before{content:"\f653"}.fa-compact-disc:before{content:"\f51f"}.fa-compass:before{content:"\f14e"}.fa-compress:before{content:"\f066"}.fa-compress-arrows-alt:before{content:"\f78c"}.fa-concierge-bell:before{content:"\f562"}.fa-confluence:before{content:"\f78d"}.fa-connectdevelop:before{content:"\f20e"}.fa-contao:before{content:"\f26d"}.fa-cookie:before{content:"\f563"}.fa-cookie-bite:before{content:"\f564"}.fa-copy:before{content:"\f0c5"}.fa-copyright:before{content:"\f1f9"}.fa-couch:before{content:"\f4b8"}.fa-cpanel:before{content:"\f388"}.fa-creative-commons:before{content:"\f25e"}.fa-creative-commons-by:before{content:"\f4e7"}.fa-creative-commons-nc:before{content:"\f4e8"}.fa-creative-commons-nc-eu:before{content:"\f4e9"}.fa-creative-commons-nc-jp:before{content:"\f4ea"}.fa-creative-commons-nd:before{content:"\f4eb"}.fa-creative-commons-pd:before{content:"\f4ec"}.fa-creative-commons-pd-alt:before{content:"\f4ed"}.fa-creative-commons-remix:before{content:"\f4ee"}.fa-creative-commons-sa:before{content:"\f4ef"}.fa-creative-commons-sampling:before{content:"\f4f0"}.fa-creative-commons-sampling-plus:before{content:"\f4f1"}.fa-creative-commons-share:before{content:"\f4f2"}.fa-creative-commons-zero:before{content:"\f4f3"}.fa-credit-card:before{content:"\f09d"}.fa-critical-role:before{content:"\f6c9"}.fa-crop:before{content:"\f125"}.fa-crop-alt:before{content:"\f565"}.fa-cross:before{content:"\f654"}.fa-crosshairs:before{content:"\f05b"}.fa-crow:before{content:"\f520"}.fa-crown:before{content:"\f521"}.fa-crutch:before{content:"\f7f7"}.fa-css3:before{content:"\f13c"}.fa-css3-alt:before{content:"\f38b"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-cut:before{content:"\f0c4"}.fa-cuttlefish:before{content:"\f38c"}.fa-d-and-d:before{content:"\f38d"}.fa-d-and-d-beyond:before{content:"\f6ca"}.fa-dashcube:before{content:"\f210"}.fa-database:before{content:"\f1c0"}.fa-deaf:before{content:"\f2a4"}.fa-delicious:before{content:"\f1a5"}.fa-democrat:before{content:"\f747"}.fa-deploydog:before{content:"\f38e"}.fa-deskpro:before{content:"\f38f"}.fa-desktop:before{content:"\f108"}.fa-dev:before{content:"\f6cc"}.fa-deviantart:before{content:"\f1bd"}.fa-dharmachakra:before{content:"\f655"}.fa-dhl:before{content:"\f790"}.fa-diagnoses:before{content:"\f470"}.fa-diaspora:before{content:"\f791"}.fa-dice:before{content:"\f522"}.fa-dice-d20:before{content:"\f6cf"}.fa-dice-d6:before{content:"\f6d1"}.fa-dice-five:before{content:"\f523"}.fa-dice-four:before{content:"\f524"}.fa-dice-one:before{content:"\f525"}.fa-dice-six:before{content:"\f526"}.fa-dice-three:before{content:"\f527"}.fa-dice-two:before{content:"\f528"}.fa-digg:before{content:"\f1a6"}.fa-digital-ocean:before{content:"\f391"}.fa-digital-tachograph:before{content:"\f566"}.fa-directions:before{content:"\f5eb"}.fa-discord:before{content:"\f392"}.fa-discourse:before{content:"\f393"}.fa-divide:before{content:"\f529"}.fa-dizzy:before{content:"\f567"}.fa-dna:before{content:"\f471"}.fa-dochub:before{content:"\f394"}.fa-docker:before{content:"\f395"}.fa-dog:before{content:"\f6d3"}.fa-dollar-sign:before{content:"\f155"}.fa-dolly:before{content:"\f472"}.fa-dolly-flatbed:before{content:"\f474"}.fa-donate:before{content:"\f4b9"}.fa-door-closed:before{content:"\f52a"}.fa-door-open:before{content:"\f52b"}.fa-dot-circle:before{content:"\f192"}.fa-dove:before{content:"\f4ba"}.fa-download:before{content:"\f019"}.fa-draft2digital:before{content:"\f396"}.fa-drafting-compass:before{content:"\f568"}.fa-dragon:before{content:"\f6d5"}.fa-draw-polygon:before{content:"\f5ee"}.fa-dribbble:before{content:"\f17d"}.fa-dribbble-square:before{content:"\f397"}.fa-dropbox:before{content:"\f16b"}.fa-drum:before{content:"\f569"}.fa-drum-steelpan:before{content:"\f56a"}.fa-drumstick-bite:before{content:"\f6d7"}.fa-drupal:before{content:"\f1a9"}.fa-dumbbell:before{content:"\f44b"}.fa-dumpster:before{content:"\f793"}.fa-dumpster-fire:before{content:"\f794"}.fa-dungeon:before{content:"\f6d9"}.fa-dyalog:before{content:"\f399"}.fa-earlybirds:before{content:"\f39a"}.fa-ebay:before{content:"\f4f4"}.fa-edge:before{content:"\f282"}.fa-edit:before{content:"\f044"}.fa-egg:before{content:"\f7fb"}.fa-eject:before{content:"\f052"}.fa-elementor:before{content:"\f430"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-ello:before{content:"\f5f1"}.fa-ember:before{content:"\f423"}.fa-empire:before{content:"\f1d1"}.fa-envelope:before{content:"\f0e0"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-text:before{content:"\f658"}.fa-envelope-square:before{content:"\f199"}.fa-envira:before{content:"\f299"}.fa-equals:before{content:"\f52c"}.fa-eraser:before{content:"\f12d"}.fa-erlang:before{content:"\f39d"}.fa-ethereum:before{content:"\f42e"}.fa-ethernet:before{content:"\f796"}.fa-etsy:before{content:"\f2d7"}.fa-euro-sign:before{content:"\f153"}.fa-evernote:before{content:"\f839"}.fa-exchange-alt:before{content:"\f362"}.fa-exclamation:before{content:"\f12a"}.fa-exclamation-circle:before{content:"\f06a"}.fa-exclamation-triangle:before{content:"\f071"}.fa-expand:before{content:"\f065"}.fa-expand-arrows-alt:before{content:"\f31e"}.fa-expeditedssl:before{content:"\f23e"}.fa-external-link-alt:before{content:"\f35d"}.fa-external-link-square-alt:before{content:"\f360"}.fa-eye:before{content:"\f06e"}.fa-eye-dropper:before{content:"\f1fb"}.fa-eye-slash:before{content:"\f070"}.fa-facebook:before{content:"\f09a"}.fa-facebook-f:before{content:"\f39e"}.fa-facebook-messenger:before{content:"\f39f"}.fa-facebook-square:before{content:"\f082"}.fa-fan:before{content:"\f863"}.fa-fantasy-flight-games:before{content:"\f6dc"}.fa-fast-backward:before{content:"\f049"}.fa-fast-forward:before{content:"\f050"}.fa-fax:before{content:"\f1ac"}.fa-feather:before{content:"\f52d"}.fa-feather-alt:before{content:"\f56b"}.fa-fedex:before{content:"\f797"}.fa-fedora:before{content:"\f798"}.fa-female:before{content:"\f182"}.fa-fighter-jet:before{content:"\f0fb"}.fa-figma:before{content:"\f799"}.fa-file:before{content:"\f15b"}.fa-file-alt:before{content:"\f15c"}.fa-file-archive:before{content:"\f1c6"}.fa-file-audio:before{content:"\f1c7"}.fa-file-code:before{content:"\f1c9"}.fa-file-contract:before{content:"\f56c"}.fa-file-csv:before{content:"\f6dd"}.fa-file-download:before{content:"\f56d"}.fa-file-excel:before{content:"\f1c3"}.fa-file-export:before{content:"\f56e"}.fa-file-image:before{content:"\f1c5"}.fa-file-import:before{content:"\f56f"}.fa-file-invoice:before{content:"\f570"}.fa-file-invoice-dollar:before{content:"\f571"}.fa-file-medical:before{content:"\f477"}.fa-file-medical-alt:before{content:"\f478"}.fa-file-pdf:before{content:"\f1c1"}.fa-file-powerpoint:before{content:"\f1c4"}.fa-file-prescription:before{content:"\f572"}.fa-file-signature:before{content:"\f573"}.fa-file-upload:before{content:"\f574"}.fa-file-video:before{content:"\f1c8"}.fa-file-word:before{content:"\f1c2"}.fa-fill:before{content:"\f575"}.fa-fill-drip:before{content:"\f576"}.fa-film:before{content:"\f008"}.fa-filter:before{content:"\f0b0"}.fa-fingerprint:before{content:"\f577"}.fa-fire:before{content:"\f06d"}.fa-fire-alt:before{content:"\f7e4"}.fa-fire-extinguisher:before{content:"\f134"}.fa-firefox:before{content:"\f269"}.fa-first-aid:before{content:"\f479"}.fa-first-order:before{content:"\f2b0"}.fa-first-order-alt:before{content:"\f50a"}.fa-firstdraft:before{content:"\f3a1"}.fa-fish:before{content:"\f578"}.fa-fist-raised:before{content:"\f6de"}.fa-flag:before{content:"\f024"}.fa-flag-checkered:before{content:"\f11e"}.fa-flag-usa:before{content:"\f74d"}.fa-flask:before{content:"\f0c3"}.fa-flickr:before{content:"\f16e"}.fa-flipboard:before{content:"\f44d"}.fa-flushed:before{content:"\f579"}.fa-fly:before{content:"\f417"}.fa-folder:before{content:"\f07b"}.fa-folder-minus:before{content:"\f65d"}.fa-folder-open:before{content:"\f07c"}.fa-folder-plus:before{content:"\f65e"}.fa-font:before{content:"\f031"}.fa-font-awesome:before{content:"\f2b4"}.fa-font-awesome-alt:before{content:"\f35c"}.fa-font-awesome-flag:before{content:"\f425"}.fa-font-awesome-logo-full:before{content:"\f4e6"}.fa-fonticons:before{content:"\f280"}.fa-fonticons-fi:before{content:"\f3a2"}.fa-football-ball:before{content:"\f44e"}.fa-fort-awesome:before{content:"\f286"}.fa-fort-awesome-alt:before{content:"\f3a3"}.fa-forumbee:before{content:"\f211"}.fa-forward:before{content:"\f04e"}.fa-foursquare:before{content:"\f180"}.fa-free-code-camp:before{content:"\f2c5"}.fa-freebsd:before{content:"\f3a4"}.fa-frog:before{content:"\f52e"}.fa-frown:before{content:"\f119"}.fa-frown-open:before{content:"\f57a"}.fa-fulcrum:before{content:"\f50b"}.fa-funnel-dollar:before{content:"\f662"}.fa-futbol:before{content:"\f1e3"}.fa-galactic-republic:before{content:"\f50c"}.fa-galactic-senate:before{content:"\f50d"}.fa-gamepad:before{content:"\f11b"}.fa-gas-pump:before{content:"\f52f"}.fa-gavel:before{content:"\f0e3"}.fa-gem:before{content:"\f3a5"}.fa-genderless:before{content:"\f22d"}.fa-get-pocket:before{content:"\f265"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-ghost:before{content:"\f6e2"}.fa-gift:before{content:"\f06b"}.fa-gifts:before{content:"\f79c"}.fa-git:before{content:"\f1d3"}.fa-git-alt:before{content:"\f841"}.fa-git-square:before{content:"\f1d2"}.fa-github:before{content:"\f09b"}.fa-github-alt:before{content:"\f113"}.fa-github-square:before{content:"\f092"}.fa-gitkraken:before{content:"\f3a6"}.fa-gitlab:before{content:"\f296"}.fa-gitter:before{content:"\f426"}.fa-glass-cheers:before{content:"\f79f"}.fa-glass-martini:before{content:"\f000"}.fa-glass-martini-alt:before{content:"\f57b"}.fa-glass-whiskey:before{content:"\f7a0"}.fa-glasses:before{content:"\f530"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-globe:before{content:"\f0ac"}.fa-globe-africa:before{content:"\f57c"}.fa-globe-americas:before{content:"\f57d"}.fa-globe-asia:before{content:"\f57e"}.fa-globe-europe:before{content:"\f7a2"}.fa-gofore:before{content:"\f3a7"}.fa-golf-ball:before{content:"\f450"}.fa-goodreads:before{content:"\f3a8"}.fa-goodreads-g:before{content:"\f3a9"}.fa-google:before{content:"\f1a0"}.fa-google-drive:before{content:"\f3aa"}.fa-google-play:before{content:"\f3ab"}.fa-google-plus:before{content:"\f2b3"}.fa-google-plus-g:before{content:"\f0d5"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-wallet:before{content:"\f1ee"}.fa-gopuram:before{content:"\f664"}.fa-graduation-cap:before{content:"\f19d"}.fa-gratipay:before{content:"\f184"}.fa-grav:before{content:"\f2d6"}.fa-greater-than:before{content:"\f531"}.fa-greater-than-equal:before{content:"\f532"}.fa-grimace:before{content:"\f57f"}.fa-grin:before{content:"\f580"}.fa-grin-alt:before{content:"\f581"}.fa-grin-beam:before{content:"\f582"}.fa-grin-beam-sweat:before{content:"\f583"}.fa-grin-hearts:before{content:"\f584"}.fa-grin-squint:before{content:"\f585"}.fa-grin-squint-tears:before{content:"\f586"}.fa-grin-stars:before{content:"\f587"}.fa-grin-tears:before{content:"\f588"}.fa-grin-tongue:before{content:"\f589"}.fa-grin-tongue-squint:before{content:"\f58a"}.fa-grin-tongue-wink:before{content:"\f58b"}.fa-grin-wink:before{content:"\f58c"}.fa-grip-horizontal:before{content:"\f58d"}.fa-grip-lines:before{content:"\f7a4"}.fa-grip-lines-vertical:before{content:"\f7a5"}.fa-grip-vertical:before{content:"\f58e"}.fa-gripfire:before{content:"\f3ac"}.fa-grunt:before{content:"\f3ad"}.fa-guitar:before{content:"\f7a6"}.fa-gulp:before{content:"\f3ae"}.fa-h-square:before{content:"\f0fd"}.fa-hacker-news:before{content:"\f1d4"}.fa-hacker-news-square:before{content:"\f3af"}.fa-hackerrank:before{content:"\f5f7"}.fa-hamburger:before{content:"\f805"}.fa-hammer:before{content:"\f6e3"}.fa-hamsa:before{content:"\f665"}.fa-hand-holding:before{content:"\f4bd"}.fa-hand-holding-heart:before{content:"\f4be"}.fa-hand-holding-usd:before{content:"\f4c0"}.fa-hand-lizard:before{content:"\f258"}.fa-hand-middle-finger:before{content:"\f806"}.fa-hand-paper:before{content:"\f256"}.fa-hand-peace:before{content:"\f25b"}.fa-hand-point-down:before{content:"\f0a7"}.fa-hand-point-left:before{content:"\f0a5"}.fa-hand-point-right:before{content:"\f0a4"}.fa-hand-point-up:before{content:"\f0a6"}.fa-hand-pointer:before{content:"\f25a"}.fa-hand-rock:before{content:"\f255"}.fa-hand-scissors:before{content:"\f257"}.fa-hand-spock:before{content:"\f259"}.fa-hands:before{content:"\f4c2"}.fa-hands-helping:before{content:"\f4c4"}.fa-handshake:before{content:"\f2b5"}.fa-hanukiah:before{content:"\f6e6"}.fa-hard-hat:before{content:"\f807"}.fa-hashtag:before{content:"\f292"}.fa-hat-wizard:before{content:"\f6e8"}.fa-haykal:before{content:"\f666"}.fa-hdd:before{content:"\f0a0"}.fa-heading:before{content:"\f1dc"}.fa-headphones:before{content:"\f025"}.fa-headphones-alt:before{content:"\f58f"}.fa-headset:before{content:"\f590"}.fa-heart:before{content:"\f004"}.fa-heart-broken:before{content:"\f7a9"}.fa-heartbeat:before{content:"\f21e"}.fa-helicopter:before{content:"\f533"}.fa-highlighter:before{content:"\f591"}.fa-hiking:before{content:"\f6ec"}.fa-hippo:before{content:"\f6ed"}.fa-hips:before{content:"\f452"}.fa-hire-a-helper:before{content:"\f3b0"}.fa-history:before{content:"\f1da"}.fa-hockey-puck:before{content:"\f453"}.fa-holly-berry:before{content:"\f7aa"}.fa-home:before{content:"\f015"}.fa-hooli:before{content:"\f427"}.fa-hornbill:before{content:"\f592"}.fa-horse:before{content:"\f6f0"}.fa-horse-head:before{content:"\f7ab"}.fa-hospital:before{content:"\f0f8"}.fa-hospital-alt:before{content:"\f47d"}.fa-hospital-symbol:before{content:"\f47e"}.fa-hot-tub:before{content:"\f593"}.fa-hotdog:before{content:"\f80f"}.fa-hotel:before{content:"\f594"}.fa-hotjar:before{content:"\f3b1"}.fa-hourglass:before{content:"\f254"}.fa-hourglass-end:before{content:"\f253"}.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-start:before{content:"\f251"}.fa-house-damage:before{content:"\f6f1"}.fa-houzz:before{content:"\f27c"}.fa-hryvnia:before{content:"\f6f2"}.fa-html5:before{content:"\f13b"}.fa-hubspot:before{content:"\f3b2"}.fa-i-cursor:before{content:"\f246"}.fa-ice-cream:before{content:"\f810"}.fa-icicles:before{content:"\f7ad"}.fa-icons:before{content:"\f86d"}.fa-id-badge:before{content:"\f2c1"}.fa-id-card:before{content:"\f2c2"}.fa-id-card-alt:before{content:"\f47f"}.fa-igloo:before{content:"\f7ae"}.fa-image:before{content:"\f03e"}.fa-images:before{content:"\f302"}.fa-imdb:before{content:"\f2d8"}.fa-inbox:before{content:"\f01c"}.fa-indent:before{content:"\f03c"}.fa-industry:before{content:"\f275"}.fa-infinity:before{content:"\f534"}.fa-info:before{content:"\f129"}.fa-info-circle:before{content:"\f05a"}.fa-instagram:before{content:"\f16d"}.fa-intercom:before{content:"\f7af"}.fa-internet-explorer:before{content:"\f26b"}.fa-invision:before{content:"\f7b0"}.fa-ioxhost:before{content:"\f208"}.fa-italic:before{content:"\f033"}.fa-itch-io:before{content:"\f83a"}.fa-itunes:before{content:"\f3b4"}.fa-itunes-note:before{content:"\f3b5"}.fa-java:before{content:"\f4e4"}.fa-jedi:before{content:"\f669"}.fa-jedi-order:before{content:"\f50e"}.fa-jenkins:before{content:"\f3b6"}.fa-jira:before{content:"\f7b1"}.fa-joget:before{content:"\f3b7"}.fa-joint:before{content:"\f595"}.fa-joomla:before{content:"\f1aa"}.fa-journal-whills:before{content:"\f66a"}.fa-js:before{content:"\f3b8"}.fa-js-square:before{content:"\f3b9"}.fa-jsfiddle:before{content:"\f1cc"}.fa-kaaba:before{content:"\f66b"}.fa-kaggle:before{content:"\f5fa"}.fa-key:before{content:"\f084"}.fa-keybase:before{content:"\f4f5"}.fa-keyboard:before{content:"\f11c"}.fa-keycdn:before{content:"\f3ba"}.fa-khanda:before{content:"\f66d"}.fa-kickstarter:before{content:"\f3bb"}.fa-kickstarter-k:before{content:"\f3bc"}.fa-kiss:before{content:"\f596"}.fa-kiss-beam:before{content:"\f597"}.fa-kiss-wink-heart:before{content:"\f598"}.fa-kiwi-bird:before{content:"\f535"}.fa-korvue:before{content:"\f42f"}.fa-landmark:before{content:"\f66f"}.fa-language:before{content:"\f1ab"}.fa-laptop:before{content:"\f109"}.fa-laptop-code:before{content:"\f5fc"}.fa-laptop-medical:before{content:"\f812"}.fa-laravel:before{content:"\f3bd"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-laugh:before{content:"\f599"}.fa-laugh-beam:before{content:"\f59a"}.fa-laugh-squint:before{content:"\f59b"}.fa-laugh-wink:before{content:"\f59c"}.fa-layer-group:before{content:"\f5fd"}.fa-leaf:before{content:"\f06c"}.fa-leanpub:before{content:"\f212"}.fa-lemon:before{content:"\f094"}.fa-less:before{content:"\f41d"}.fa-less-than:before{content:"\f536"}.fa-less-than-equal:before{content:"\f537"}.fa-level-down-alt:before{content:"\f3be"}.fa-level-up-alt:before{content:"\f3bf"}.fa-life-ring:before{content:"\f1cd"}.fa-lightbulb:before{content:"\f0eb"}.fa-line:before{content:"\f3c0"}.fa-link:before{content:"\f0c1"}.fa-linkedin:before{content:"\f08c"}.fa-linkedin-in:before{content:"\f0e1"}.fa-linode:before{content:"\f2b8"}.fa-linux:before{content:"\f17c"}.fa-lira-sign:before{content:"\f195"}.fa-list:before{content:"\f03a"}.fa-list-alt:before{content:"\f022"}.fa-list-ol:before{content:"\f0cb"}.fa-list-ul:before{content:"\f0ca"}.fa-location-arrow:before{content:"\f124"}.fa-lock:before{content:"\f023"}.fa-lock-open:before{content:"\f3c1"}.fa-long-arrow-alt-down:before{content:"\f309"}.fa-long-arrow-alt-left:before{content:"\f30a"}.fa-long-arrow-alt-right:before{content:"\f30b"}.fa-long-arrow-alt-up:before{content:"\f30c"}.fa-low-vision:before{content:"\f2a8"}.fa-luggage-cart:before{content:"\f59d"}.fa-lyft:before{content:"\f3c3"}.fa-magento:before{content:"\f3c4"}.fa-magic:before{content:"\f0d0"}.fa-magnet:before{content:"\f076"}.fa-mail-bulk:before{content:"\f674"}.fa-mailchimp:before{content:"\f59e"}.fa-male:before{content:"\f183"}.fa-mandalorian:before{content:"\f50f"}.fa-map:before{content:"\f279"}.fa-map-marked:before{content:"\f59f"}.fa-map-marked-alt:before{content:"\f5a0"}.fa-map-marker:before{content:"\f041"}.fa-map-marker-alt:before{content:"\f3c5"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-markdown:before{content:"\f60f"}.fa-marker:before{content:"\f5a1"}.fa-mars:before{content:"\f222"}.fa-mars-double:before{content:"\f227"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mask:before{content:"\f6fa"}.fa-mastodon:before{content:"\f4f6"}.fa-maxcdn:before{content:"\f136"}.fa-medal:before{content:"\f5a2"}.fa-medapps:before{content:"\f3c6"}.fa-medium:before{content:"\f23a"}.fa-medium-m:before{content:"\f3c7"}.fa-medkit:before{content:"\f0fa"}.fa-medrt:before{content:"\f3c8"}.fa-meetup:before{content:"\f2e0"}.fa-megaport:before{content:"\f5a3"}.fa-meh:before{content:"\f11a"}.fa-meh-blank:before{content:"\f5a4"}.fa-meh-rolling-eyes:before{content:"\f5a5"}.fa-memory:before{content:"\f538"}.fa-mendeley:before{content:"\f7b3"}.fa-menorah:before{content:"\f676"}.fa-mercury:before{content:"\f223"}.fa-meteor:before{content:"\f753"}.fa-microchip:before{content:"\f2db"}.fa-microphone:before{content:"\f130"}.fa-microphone-alt:before{content:"\f3c9"}.fa-microphone-alt-slash:before{content:"\f539"}.fa-microphone-slash:before{content:"\f131"}.fa-microscope:before{content:"\f610"}.fa-microsoft:before{content:"\f3ca"}.fa-minus:before{content:"\f068"}.fa-minus-circle:before{content:"\f056"}.fa-minus-square:before{content:"\f146"}.fa-mitten:before{content:"\f7b5"}.fa-mix:before{content:"\f3cb"}.fa-mixcloud:before{content:"\f289"}.fa-mizuni:before{content:"\f3cc"}.fa-mobile:before{content:"\f10b"}.fa-mobile-alt:before{content:"\f3cd"}.fa-modx:before{content:"\f285"}.fa-monero:before{content:"\f3d0"}.fa-money-bill:before{content:"\f0d6"}.fa-money-bill-alt:before{content:"\f3d1"}.fa-money-bill-wave:before{content:"\f53a"}.fa-money-bill-wave-alt:before{content:"\f53b"}.fa-money-check:before{content:"\f53c"}.fa-money-check-alt:before{content:"\f53d"}.fa-monument:before{content:"\f5a6"}.fa-moon:before{content:"\f186"}.fa-mortar-pestle:before{content:"\f5a7"}.fa-mosque:before{content:"\f678"}.fa-motorcycle:before{content:"\f21c"}.fa-mountain:before{content:"\f6fc"}.fa-mouse-pointer:before{content:"\f245"}.fa-mug-hot:before{content:"\f7b6"}.fa-music:before{content:"\f001"}.fa-napster:before{content:"\f3d2"}.fa-neos:before{content:"\f612"}.fa-network-wired:before{content:"\f6ff"}.fa-neuter:before{content:"\f22c"}.fa-newspaper:before{content:"\f1ea"}.fa-nimblr:before{content:"\f5a8"}.fa-node:before{content:"\f419"}.fa-node-js:before{content:"\f3d3"}.fa-not-equal:before{content:"\f53e"}.fa-notes-medical:before{content:"\f481"}.fa-npm:before{content:"\f3d4"}.fa-ns8:before{content:"\f3d5"}.fa-nutritionix:before{content:"\f3d6"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-oil-can:before{content:"\f613"}.fa-old-republic:before{content:"\f510"}.fa-om:before{content:"\f679"}.fa-opencart:before{content:"\f23d"}.fa-openid:before{content:"\f19b"}.fa-opera:before{content:"\f26a"}.fa-optin-monster:before{content:"\f23c"}.fa-osi:before{content:"\f41a"}.fa-otter:before{content:"\f700"}.fa-outdent:before{content:"\f03b"}.fa-page4:before{content:"\f3d7"}.fa-pagelines:before{content:"\f18c"}.fa-pager:before{content:"\f815"}.fa-paint-brush:before{content:"\f1fc"}.fa-paint-roller:before{content:"\f5aa"}.fa-palette:before{content:"\f53f"}.fa-palfed:before{content:"\f3d8"}.fa-pallet:before{content:"\f482"}.fa-paper-plane:before{content:"\f1d8"}.fa-paperclip:before{content:"\f0c6"}.fa-parachute-box:before{content:"\f4cd"}.fa-paragraph:before{content:"\f1dd"}.fa-parking:before{content:"\f540"}.fa-passport:before{content:"\f5ab"}.fa-pastafarianism:before{content:"\f67b"}.fa-paste:before{content:"\f0ea"}.fa-patreon:before{content:"\f3d9"}.fa-pause:before{content:"\f04c"}.fa-pause-circle:before{content:"\f28b"}.fa-paw:before{content:"\f1b0"}.fa-paypal:before{content:"\f1ed"}.fa-peace:before{content:"\f67c"}.fa-pen:before{content:"\f304"}.fa-pen-alt:before{content:"\f305"}.fa-pen-fancy:before{content:"\f5ac"}.fa-pen-nib:before{content:"\f5ad"}.fa-pen-square:before{content:"\f14b"}.fa-pencil-alt:before{content:"\f303"}.fa-pencil-ruler:before{content:"\f5ae"}.fa-penny-arcade:before{content:"\f704"}.fa-people-carry:before{content:"\f4ce"}.fa-pepper-hot:before{content:"\f816"}.fa-percent:before{content:"\f295"}.fa-percentage:before{content:"\f541"}.fa-periscope:before{content:"\f3da"}.fa-person-booth:before{content:"\f756"}.fa-phabricator:before{content:"\f3db"}.fa-phoenix-framework:before{content:"\f3dc"}.fa-phoenix-squadron:before{content:"\f511"}.fa-phone:before{content:"\f095"}.fa-phone-alt:before{content:"\f879"}.fa-phone-slash:before{content:"\f3dd"}.fa-phone-square:before{content:"\f098"}.fa-phone-square-alt:before{content:"\f87b"}.fa-phone-volume:before{content:"\f2a0"}.fa-photo-video:before{content:"\f87c"}.fa-php:before{content:"\f457"}.fa-pied-piper:before{content:"\f2ae"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-pied-piper-hat:before{content:"\f4e5"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-piggy-bank:before{content:"\f4d3"}.fa-pills:before{content:"\f484"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-p:before{content:"\f231"}.fa-pinterest-square:before{content:"\f0d3"}.fa-pizza-slice:before{content:"\f818"}.fa-place-of-worship:before{content:"\f67f"}.fa-plane:before{content:"\f072"}.fa-plane-arrival:before{content:"\f5af"}.fa-plane-departure:before{content:"\f5b0"}.fa-play:before{content:"\f04b"}.fa-play-circle:before{content:"\f144"}.fa-playstation:before{content:"\f3df"}.fa-plug:before{content:"\f1e6"}.fa-plus:before{content:"\f067"}.fa-plus-circle:before{content:"\f055"}.fa-plus-square:before{content:"\f0fe"}.fa-podcast:before{content:"\f2ce"}.fa-poll:before{content:"\f681"}.fa-poll-h:before{content:"\f682"}.fa-poo:before{content:"\f2fe"}.fa-poo-storm:before{content:"\f75a"}.fa-poop:before{content:"\f619"}.fa-portrait:before{content:"\f3e0"}.fa-pound-sign:before{content:"\f154"}.fa-power-off:before{content:"\f011"}.fa-pray:before{content:"\f683"}.fa-praying-hands:before{content:"\f684"}.fa-prescription:before{content:"\f5b1"}.fa-prescription-bottle:before{content:"\f485"}.fa-prescription-bottle-alt:before{content:"\f486"}.fa-print:before{content:"\f02f"}.fa-procedures:before{content:"\f487"}.fa-product-hunt:before{content:"\f288"}.fa-project-diagram:before{content:"\f542"}.fa-pushed:before{content:"\f3e1"}.fa-puzzle-piece:before{content:"\f12e"}.fa-python:before{content:"\f3e2"}.fa-qq:before{content:"\f1d6"}.fa-qrcode:before{content:"\f029"}.fa-question:before{content:"\f128"}.fa-question-circle:before{content:"\f059"}.fa-quidditch:before{content:"\f458"}.fa-quinscape:before{content:"\f459"}.fa-quora:before{content:"\f2c4"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-quran:before{content:"\f687"}.fa-r-project:before{content:"\f4f7"}.fa-radiation:before{content:"\f7b9"}.fa-radiation-alt:before{content:"\f7ba"}.fa-rainbow:before{content:"\f75b"}.fa-random:before{content:"\f074"}.fa-raspberry-pi:before{content:"\f7bb"}.fa-ravelry:before{content:"\f2d9"}.fa-react:before{content:"\f41b"}.fa-reacteurope:before{content:"\f75d"}.fa-readme:before{content:"\f4d5"}.fa-rebel:before{content:"\f1d0"}.fa-receipt:before{content:"\f543"}.fa-recycle:before{content:"\f1b8"}.fa-red-river:before{content:"\f3e3"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-alien:before{content:"\f281"}.fa-reddit-square:before{content:"\f1a2"}.fa-redhat:before{content:"\f7bc"}.fa-redo:before{content:"\f01e"}.fa-redo-alt:before{content:"\f2f9"}.fa-registered:before{content:"\f25d"}.fa-remove-format:before{content:"\f87d"}.fa-renren:before{content:"\f18b"}.fa-reply:before{content:"\f3e5"}.fa-reply-all:before{content:"\f122"}.fa-replyd:before{content:"\f3e6"}.fa-republican:before{content:"\f75e"}.fa-researchgate:before{content:"\f4f8"}.fa-resolving:before{content:"\f3e7"}.fa-restroom:before{content:"\f7bd"}.fa-retweet:before{content:"\f079"}.fa-rev:before{content:"\f5b2"}.fa-ribbon:before{content:"\f4d6"}.fa-ring:before{content:"\f70b"}.fa-road:before{content:"\f018"}.fa-robot:before{content:"\f544"}.fa-rocket:before{content:"\f135"}.fa-rocketchat:before{content:"\f3e8"}.fa-rockrms:before{content:"\f3e9"}.fa-route:before{content:"\f4d7"}.fa-rss:before{content:"\f09e"}.fa-rss-square:before{content:"\f143"}.fa-ruble-sign:before{content:"\f158"}.fa-ruler:before{content:"\f545"}.fa-ruler-combined:before{content:"\f546"}.fa-ruler-horizontal:before{content:"\f547"}.fa-ruler-vertical:before{content:"\f548"}.fa-running:before{content:"\f70c"}.fa-rupee-sign:before{content:"\f156"}.fa-sad-cry:before{content:"\f5b3"}.fa-sad-tear:before{content:"\f5b4"}.fa-safari:before{content:"\f267"}.fa-salesforce:before{content:"\f83b"}.fa-sass:before{content:"\f41e"}.fa-satellite:before{content:"\f7bf"}.fa-satellite-dish:before{content:"\f7c0"}.fa-save:before{content:"\f0c7"}.fa-schlix:before{content:"\f3ea"}.fa-school:before{content:"\f549"}.fa-screwdriver:before{content:"\f54a"}.fa-scribd:before{content:"\f28a"}.fa-scroll:before{content:"\f70e"}.fa-sd-card:before{content:"\f7c2"}.fa-search:before{content:"\f002"}.fa-search-dollar:before{content:"\f688"}.fa-search-location:before{content:"\f689"}.fa-search-minus:before{content:"\f010"}.fa-search-plus:before{content:"\f00e"}.fa-searchengin:before{content:"\f3eb"}.fa-seedling:before{content:"\f4d8"}.fa-sellcast:before{content:"\f2da"}.fa-sellsy:before{content:"\f213"}.fa-server:before{content:"\f233"}.fa-servicestack:before{content:"\f3ec"}.fa-shapes:before{content:"\f61f"}.fa-share:before{content:"\f064"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-share-square:before{content:"\f14d"}.fa-shekel-sign:before{content:"\f20b"}.fa-shield-alt:before{content:"\f3ed"}.fa-ship:before{content:"\f21a"}.fa-shipping-fast:before{content:"\f48b"}.fa-shirtsinbulk:before{content:"\f214"}.fa-shoe-prints:before{content:"\f54b"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-shopping-cart:before{content:"\f07a"}.fa-shopware:before{content:"\f5b5"}.fa-shower:before{content:"\f2cc"}.fa-shuttle-van:before{content:"\f5b6"}.fa-sign:before{content:"\f4d9"}.fa-sign-in-alt:before{content:"\f2f6"}.fa-sign-language:before{content:"\f2a7"}.fa-sign-out-alt:before{content:"\f2f5"}.fa-signal:before{content:"\f012"}.fa-signature:before{content:"\f5b7"}.fa-sim-card:before{content:"\f7c4"}.fa-simplybuilt:before{content:"\f215"}.fa-sistrix:before{content:"\f3ee"}.fa-sitemap:before{content:"\f0e8"}.fa-sith:before{content:"\f512"}.fa-skating:before{content:"\f7c5"}.fa-sketch:before{content:"\f7c6"}.fa-skiing:before{content:"\f7c9"}.fa-skiing-nordic:before{content:"\f7ca"}.fa-skull:before{content:"\f54c"}.fa-skull-crossbones:before{content:"\f714"}.fa-skyatlas:before{content:"\f216"}.fa-skype:before{content:"\f17e"}.fa-slack:before{content:"\f198"}.fa-slack-hash:before{content:"\f3ef"}.fa-slash:before{content:"\f715"}.fa-sleigh:before{content:"\f7cc"}.fa-sliders-h:before{content:"\f1de"}.fa-slideshare:before{content:"\f1e7"}.fa-smile:before{content:"\f118"}.fa-smile-beam:before{content:"\f5b8"}.fa-smile-wink:before{content:"\f4da"}.fa-smog:before{content:"\f75f"}.fa-smoking:before{content:"\f48d"}.fa-smoking-ban:before{content:"\f54d"}.fa-sms:before{content:"\f7cd"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-snowboarding:before{content:"\f7ce"}.fa-snowflake:before{content:"\f2dc"}.fa-snowman:before{content:"\f7d0"}.fa-snowplow:before{content:"\f7d2"}.fa-socks:before{content:"\f696"}.fa-solar-panel:before{content:"\f5ba"}.fa-sort:before{content:"\f0dc"}.fa-sort-alpha-down:before{content:"\f15d"}.fa-sort-alpha-down-alt:before{content:"\f881"}.fa-sort-alpha-up:before{content:"\f15e"}.fa-sort-alpha-up-alt:before{content:"\f882"}.fa-sort-amount-down:before{content:"\f160"}.fa-sort-amount-down-alt:before{content:"\f884"}.fa-sort-amount-up:before{content:"\f161"}.fa-sort-amount-up-alt:before{content:"\f885"}.fa-sort-down:before{content:"\f0dd"}.fa-sort-numeric-down:before{content:"\f162"}.fa-sort-numeric-down-alt:before{content:"\f886"}.fa-sort-numeric-up:before{content:"\f163"}.fa-sort-numeric-up-alt:before{content:"\f887"}.fa-sort-up:before{content:"\f0de"}.fa-soundcloud:before{content:"\f1be"}.fa-sourcetree:before{content:"\f7d3"}.fa-spa:before{content:"\f5bb"}.fa-space-shuttle:before{content:"\f197"}.fa-speakap:before{content:"\f3f3"}.fa-speaker-deck:before{content:"\f83c"}.fa-spell-check:before{content:"\f891"}.fa-spider:before{content:"\f717"}.fa-spinner:before{content:"\f110"}.fa-splotch:before{content:"\f5bc"}.fa-spotify:before{content:"\f1bc"}.fa-spray-can:before{content:"\f5bd"}.fa-square:before{content:"\f0c8"}.fa-square-full:before{content:"\f45c"}.fa-square-root-alt:before{content:"\f698"}.fa-squarespace:before{content:"\f5be"}.fa-stack-exchange:before{content:"\f18d"}.fa-stack-overflow:before{content:"\f16c"}.fa-stackpath:before{content:"\f842"}.fa-stamp:before{content:"\f5bf"}.fa-star:before{content:"\f005"}.fa-star-and-crescent:before{content:"\f699"}.fa-star-half:before{content:"\f089"}.fa-star-half-alt:before{content:"\f5c0"}.fa-star-of-david:before{content:"\f69a"}.fa-star-of-life:before{content:"\f621"}.fa-staylinked:before{content:"\f3f5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-steam-symbol:before{content:"\f3f6"}.fa-step-backward:before{content:"\f048"}.fa-step-forward:before{content:"\f051"}.fa-stethoscope:before{content:"\f0f1"}.fa-sticker-mule:before{content:"\f3f7"}.fa-sticky-note:before{content:"\f249"}.fa-stop:before{content:"\f04d"}.fa-stop-circle:before{content:"\f28d"}.fa-stopwatch:before{content:"\f2f2"}.fa-store:before{content:"\f54e"}.fa-store-alt:before{content:"\f54f"}.fa-strava:before{content:"\f428"}.fa-stream:before{content:"\f550"}.fa-street-view:before{content:"\f21d"}.fa-strikethrough:before{content:"\f0cc"}.fa-stripe:before{content:"\f429"}.fa-stripe-s:before{content:"\f42a"}.fa-stroopwafel:before{content:"\f551"}.fa-studiovinari:before{content:"\f3f8"}.fa-stumbleupon:before{content:"\f1a4"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-subscript:before{content:"\f12c"}.fa-subway:before{content:"\f239"}.fa-suitcase:before{content:"\f0f2"}.fa-suitcase-rolling:before{content:"\f5c1"}.fa-sun:before{content:"\f185"}.fa-superpowers:before{content:"\f2dd"}.fa-superscript:before{content:"\f12b"}.fa-supple:before{content:"\f3f9"}.fa-surprise:before{content:"\f5c2"}.fa-suse:before{content:"\f7d6"}.fa-swatchbook:before{content:"\f5c3"}.fa-swimmer:before{content:"\f5c4"}.fa-swimming-pool:before{content:"\f5c5"}.fa-symfony:before{content:"\f83d"}.fa-synagogue:before{content:"\f69b"}.fa-sync:before{content:"\f021"}.fa-sync-alt:before{content:"\f2f1"}.fa-syringe:before{content:"\f48e"}.fa-table:before{content:"\f0ce"}.fa-table-tennis:before{content:"\f45d"}.fa-tablet:before{content:"\f10a"}.fa-tablet-alt:before{content:"\f3fa"}.fa-tablets:before{content:"\f490"}.fa-tachometer-alt:before{content:"\f3fd"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-tape:before{content:"\f4db"}.fa-tasks:before{content:"\f0ae"}.fa-taxi:before{content:"\f1ba"}.fa-teamspeak:before{content:"\f4f9"}.fa-teeth:before{content:"\f62e"}.fa-teeth-open:before{content:"\f62f"}.fa-telegram:before{content:"\f2c6"}.fa-telegram-plane:before{content:"\f3fe"}.fa-temperature-high:before{content:"\f769"}.fa-temperature-low:before{content:"\f76b"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-tenge:before{content:"\f7d7"}.fa-terminal:before{content:"\f120"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-th:before{content:"\f00a"}.fa-th-large:before{content:"\f009"}.fa-th-list:before{content:"\f00b"}.fa-the-red-yeti:before{content:"\f69d"}.fa-theater-masks:before{content:"\f630"}.fa-themeco:before{content:"\f5c6"}.fa-themeisle:before{content:"\f2b2"}.fa-thermometer:before{content:"\f491"}.fa-thermometer-empty:before{content:"\f2cb"}.fa-thermometer-full:before{content:"\f2c7"}.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-think-peaks:before{content:"\f731"}.fa-thumbs-down:before{content:"\f165"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbtack:before{content:"\f08d"}.fa-ticket-alt:before{content:"\f3ff"}.fa-times:before{content:"\f00d"}.fa-times-circle:before{content:"\f057"}.fa-tint:before{content:"\f043"}.fa-tint-slash:before{content:"\f5c7"}.fa-tired:before{content:"\f5c8"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-toilet:before{content:"\f7d8"}.fa-toilet-paper:before{content:"\f71e"}.fa-toolbox:before{content:"\f552"}.fa-tools:before{content:"\f7d9"}.fa-tooth:before{content:"\f5c9"}.fa-torah:before{content:"\f6a0"}.fa-torii-gate:before{content:"\f6a1"}.fa-tractor:before{content:"\f722"}.fa-trade-federation:before{content:"\f513"}.fa-trademark:before{content:"\f25c"}.fa-traffic-light:before{content:"\f637"}.fa-train:before{content:"\f238"}.fa-tram:before{content:"\f7da"}.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-trash:before{content:"\f1f8"}.fa-trash-alt:before{content:"\f2ed"}.fa-trash-restore:before{content:"\f829"}.fa-trash-restore-alt:before{content:"\f82a"}.fa-tree:before{content:"\f1bb"}.fa-trello:before{content:"\f181"}.fa-tripadvisor:before{content:"\f262"}.fa-trophy:before{content:"\f091"}.fa-truck:before{content:"\f0d1"}.fa-truck-loading:before{content:"\f4de"}.fa-truck-monster:before{content:"\f63b"}.fa-truck-moving:before{content:"\f4df"}.fa-truck-pickup:before{content:"\f63c"}.fa-tshirt:before{content:"\f553"}.fa-tty:before{content:"\f1e4"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-tv:before{content:"\f26c"}.fa-twitch:before{content:"\f1e8"}.fa-twitter:before{content:"\f099"}.fa-twitter-square:before{content:"\f081"}.fa-typo3:before{content:"\f42b"}.fa-uber:before{content:"\f402"}.fa-ubuntu:before{content:"\f7df"}.fa-uikit:before{content:"\f403"}.fa-umbrella:before{content:"\f0e9"}.fa-umbrella-beach:before{content:"\f5ca"}.fa-underline:before{content:"\f0cd"}.fa-undo:before{content:"\f0e2"}.fa-undo-alt:before{content:"\f2ea"}.fa-uniregistry:before{content:"\f404"}.fa-universal-access:before{content:"\f29a"}.fa-university:before{content:"\f19c"}.fa-unlink:before{content:"\f127"}.fa-unlock:before{content:"\f09c"}.fa-unlock-alt:before{content:"\f13e"}.fa-untappd:before{content:"\f405"}.fa-upload:before{content:"\f093"}.fa-ups:before{content:"\f7e0"}.fa-usb:before{content:"\f287"}.fa-user:before{content:"\f007"}.fa-user-alt:before{content:"\f406"}.fa-user-alt-slash:before{content:"\f4fa"}.fa-user-astronaut:before{content:"\f4fb"}.fa-user-check:before{content:"\f4fc"}.fa-user-circle:before{content:"\f2bd"}.fa-user-clock:before{content:"\f4fd"}.fa-user-cog:before{content:"\f4fe"}.fa-user-edit:before{content:"\f4ff"}.fa-user-friends:before{content:"\f500"}.fa-user-graduate:before{content:"\f501"}.fa-user-injured:before{content:"\f728"}.fa-user-lock:before{content:"\f502"}.fa-user-md:before{content:"\f0f0"}.fa-user-minus:before{content:"\f503"}.fa-user-ninja:before{content:"\f504"}.fa-user-nurse:before{content:"\f82f"}.fa-user-plus:before{content:"\f234"}.fa-user-secret:before{content:"\f21b"}.fa-user-shield:before{content:"\f505"}.fa-user-slash:before{content:"\f506"}.fa-user-tag:before{content:"\f507"}.fa-user-tie:before{content:"\f508"}.fa-user-times:before{content:"\f235"}.fa-users:before{content:"\f0c0"}.fa-users-cog:before{content:"\f509"}.fa-usps:before{content:"\f7e1"}.fa-ussunnah:before{content:"\f407"}.fa-utensil-spoon:before{content:"\f2e5"}.fa-utensils:before{content:"\f2e7"}.fa-vaadin:before{content:"\f408"}.fa-vector-square:before{content:"\f5cb"}.fa-venus:before{content:"\f221"}.fa-venus-double:before{content:"\f226"}.fa-venus-mars:before{content:"\f228"}.fa-viacoin:before{content:"\f237"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-vial:before{content:"\f492"}.fa-vials:before{content:"\f493"}.fa-viber:before{content:"\f409"}.fa-video:before{content:"\f03d"}.fa-video-slash:before{content:"\f4e2"}.fa-vihara:before{content:"\f6a7"}.fa-vimeo:before{content:"\f40a"}.fa-vimeo-square:before{content:"\f194"}.fa-vimeo-v:before{content:"\f27d"}.fa-vine:before{content:"\f1ca"}.fa-vk:before{content:"\f189"}.fa-vnv:before{content:"\f40b"}.fa-voicemail:before{content:"\f897"}.fa-volleyball-ball:before{content:"\f45f"}.fa-volume-down:before{content:"\f027"}.fa-volume-mute:before{content:"\f6a9"}.fa-volume-off:before{content:"\f026"}.fa-volume-up:before{content:"\f028"}.fa-vote-yea:before{content:"\f772"}.fa-vr-cardboard:before{content:"\f729"}.fa-vuejs:before{content:"\f41f"}.fa-walking:before{content:"\f554"}.fa-wallet:before{content:"\f555"}.fa-warehouse:before{content:"\f494"}.fa-water:before{content:"\f773"}.fa-wave-square:before{content:"\f83e"}.fa-waze:before{content:"\f83f"}.fa-weebly:before{content:"\f5cc"}.fa-weibo:before{content:"\f18a"}.fa-weight:before{content:"\f496"}.fa-weight-hanging:before{content:"\f5cd"}.fa-weixin:before{content:"\f1d7"}.fa-whatsapp:before{content:"\f232"}.fa-whatsapp-square:before{content:"\f40c"}.fa-wheelchair:before{content:"\f193"}.fa-whmcs:before{content:"\f40d"}.fa-wifi:before{content:"\f1eb"}.fa-wikipedia-w:before{content:"\f266"}.fa-wind:before{content:"\f72e"}.fa-window-close:before{content:"\f410"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-windows:before{content:"\f17a"}.fa-wine-bottle:before{content:"\f72f"}.fa-wine-glass:before{content:"\f4e3"}.fa-wine-glass-alt:before{content:"\f5ce"}.fa-wix:before{content:"\f5cf"}.fa-wizards-of-the-coast:before{content:"\f730"}.fa-wolf-pack-battalion:before{content:"\f514"}.fa-won-sign:before{content:"\f159"}.fa-wordpress:before{content:"\f19a"}.fa-wordpress-simple:before{content:"\f411"}.fa-wpbeginner:before{content:"\f297"}.fa-wpexplorer:before{content:"\f2de"}.fa-wpforms:before{content:"\f298"}.fa-wpressr:before{content:"\f3e4"}.fa-wrench:before{content:"\f0ad"}.fa-x-ray:before{content:"\f497"}.fa-xbox:before{content:"\f412"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-y-combinator:before{content:"\f23b"}.fa-yahoo:before{content:"\f19e"}.fa-yammer:before{content:"\f840"}.fa-yandex:before{content:"\f413"}.fa-yandex-international:before{content:"\f414"}.fa-yarn:before{content:"\f7e3"}.fa-yelp:before{content:"\f1e9"}.fa-yen-sign:before{content:"\f157"}.fa-yin-yang:before{content:"\f6ad"}.fa-yoast:before{content:"\f2b1"}.fa-youtube:before{content:"\f167"}.fa-youtube-square:before{content:"\f431"}.fa-zhihu:before{content:"\f63f"}.sr-only{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sr-only-focusable:active,.sr-only-focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}@font-face{font-family:"Font Awesome 5 Brands";font-style:normal;font-weight:normal;font-display:auto;src:url(../webfonts/fa-brands-400.eot);src:url(../webfonts/fa-brands-400.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.woff) format("woff"),url(../webfonts/fa-brands-400.ttf) format("truetype"),url(../webfonts/fa-brands-400.svg#fontawesome) format("svg")}.fab{font-family:"Font Awesome 5 Brands"}@font-face{font-family:"Font Awesome 5 Free";font-style:normal;font-weight:400;font-display:auto;src:url(../webfonts/fa-regular-400.eot);src:url(../webfonts/fa-regular-400.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.woff) format("woff"),url(../webfonts/fa-regular-400.ttf) format("truetype"),url(../webfonts/fa-regular-400.svg#fontawesome) format("svg")}.far{font-weight:400}@font-face{font-family:"Font Awesome 5 Free";font-style:normal;font-weight:900;font-display:auto;src:url(../webfonts/fa-solid-900.eot);src:url(../webfonts/fa-solid-900.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.woff) format("woff"),url(../webfonts/fa-solid-900.ttf) format("truetype"),url(../webfonts/fa-solid-900.svg#fontawesome) format("svg")}.fa,.far,.fas{font-family:"Font Awesome 5 Free"}.fa,.fas{font-weight:900} \ No newline at end of file diff --git a/assets/css/main.css b/assets/css/main.css new file mode 100755 index 0000000..b25cfe5 --- /dev/null +++ b/assets/css/main.css @@ -0,0 +1,6940 @@ +@import url(../css/fontawesome-all.min.css); + +@import url("https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,700,900"); + + + +/* + + Phantom by Pixelarity + + pixelarity.com | hello@pixelarity.com + + License: pixelarity.com/license + +*/ + + + +html, body, div, span, applet, object, + +iframe, h1, h2, h3, h4, h5, h6, p, blockquote, + +pre, a, abbr, acronym, address, big, cite, + +code, del, dfn, em, img, ins, kbd, q, s, samp, + +small, strike, strong, sub, sup, tt, var, b, + +u, i, center, dl, dt, dd, ol, ul, li, fieldset, + +form, label, legend, table, caption, tbody, + +tfoot, thead, tr, th, td, article, aside, + +canvas, details, embed, figure, figcaption, + +footer, header, hgroup, menu, nav, output, ruby, + +section, summary, time, mark, audio, video { + + margin: 0; + + padding: 0; + + border: 0; + + font-size: 100%; + + font: inherit; + + vertical-align: baseline;} + + + +article, aside, details, figcaption, figure, + +footer, header, hgroup, menu, nav, section { + + display: block;} + + + +html{ + + background-color: #000; + + background-image: url(../../assets/img/bg.jpg); + + background-size: cover; + +} + + + + + +body { + + line-height: 1; + +} + + + +ol, ul { + + list-style: none; + +} + + + +blockquote, q { + + quotes: none; + +} + + + + blockquote:before, blockquote:after, q:before, q:after { + + content: ''; + + content: none; + + } + + + +table { + + border-collapse: collapse; + + border-spacing: 0; + +} + + + +body { + + -webkit-text-size-adjust: none; + +} + + + +mark { + + background-color: transparent; + + color: inherit; + +} + + + +input::-moz-focus-inner { + + border: 0; + + padding: 0; + +} + + + +input, select, textarea { + + -moz-appearance: none; + + -webkit-appearance: none; + + -ms-appearance: none; + + appearance: none; + +} + + + +/* Basic */ + + + + @-ms-viewport { + + width: device-width; + + } + + + + body { + + -ms-overflow-style: scrollbar; + + } + + + + @media screen and (max-width: 480px) { + + + + html, body { + + min-width: 320px; + + } + + + + } + + + + html { + + box-sizing: border-box; + + } + + + + *, *:before, *:after { + + box-sizing: inherit; + + } + + + + body.is-preload *, body.is-preload *:before, body.is-preload *:after { + + -moz-animation: none !important; + + -webkit-animation: none !important; + + -ms-animation: none !important; + + animation: none !important; + + -moz-transition: none !important; + + -webkit-transition: none !important; + + -ms-transition: none !important; + + transition: none !important; + + } + + + +/* Type */ + + + + body, input, select, textarea { + + color: #585858; + + font-family: "Source Sans Pro", Helvetica, sans-serif; + + font-size: 16pt; + + font-weight: 300; + + line-height: 1.75; + + } + + + + @media screen and (max-width: 1680px) { + + + + body, input, select, textarea { + + font-size: 14pt; + + } + + + + } + + + + @media screen and (max-width: 1280px) { + + + + body, input, select, textarea { + + font-size: 12pt; + + } + + + + } + + + + a { + + -moz-transition: border-bottom-color 0.2s ease, color 0.2s ease; + + -webkit-transition: border-bottom-color 0.2s ease, color 0.2s ease; + + -ms-transition: border-bottom-color 0.2s ease, color 0.2s ease; + + transition: border-bottom-color 0.2s ease, color 0.2s ease; + + text-decoration: none; + + color: #585858; + + border-bottom: dotted 1px rgba(88, 88, 88, 0.5); + + } + + + + a:hover { + + border-bottom-color: transparent; + + color: #f2849e !important; + + } + + + + strong, b { + + font-weight: 900; + + } + + + + em, i { + + font-style: italic; + + } + + + + p { + + margin: 0 0 2em 0; + + } + + + + h1 { + + font-size: 2.75em; + + font-weight: 700; + + line-height: 1.3; + + margin: 0 0 1em 0; + + letter-spacing: -0.035em; + + } + + + + h1 a { + + color: inherit; + + } + + + + @media screen and (max-width: 736px) { + + + + h1 { + + font-size: 2em; + + margin: 0 0 1em 0; + + } + + + + } + + + + @media screen and (max-width: 360px) { + + + + h1 { + + font-size: 1.75em; + + } + + + + } + + + + h2, h3, h4, h5, h6 { + + font-weight: 900; + + line-height: 1.5; + + margin: 0 0 2em 0; + + text-transform: uppercase; + + letter-spacing: 0.35em; + + } + + + + h2 a, h3 a, h4 a, h5 a, h6 a { + + color: inherit; + + } + + + + h2 { + + font-size: 1.1em; + + } + + + + h3 { + + font-size: 1em; + + } + + + + h4 { + + font-size: 0.8em; + + } + + + + h5 { + + font-size: 0.8em; + + } + + + + h6 { + + font-size: 0.8em; + + } + + + + @media screen and (max-width: 980px) { + + + + h1 br, h2 br, h3 br, h4 br, h5 br, h6 br { + + display: none; + + } + + + + } + + + + @media screen and (max-width: 736px) { + + + + h2 { + + font-size: 1em; + + } + + + + h3 { + + font-size: 0.8em; + + } + + + + } + + + + sub { + + font-size: 0.8em; + + position: relative; + + top: 0.5em; + + } + + + + sup { + + font-size: 0.8em; + + position: relative; + + top: -0.5em; + + } + + + + blockquote { + + border-left: solid 4px #c9c9c9; + + font-style: italic; + + margin: 0 0 2em 0; + + padding: 0.5em 0 0.5em 2em; + + } + + + + code { + + background: rgba(144, 144, 144, 0.075); + + border-radius: 4px; + + border: solid 1px #c9c9c9; + + font-family: "Courier New", monospace; + + font-size: 0.9em; + + margin: 0 0.25em; + + padding: 0.25em 0.65em; + + } + + + + pre { + + -webkit-overflow-scrolling: touch; + + font-family: "Courier New", monospace; + + font-size: 0.9em; + + margin: 0 0 2em 0; + + } + + + + pre code { + + display: block; + + line-height: 1.75; + + padding: 1em 1.5em; + + overflow-x: auto; + + } + + + + hr { + + border: 0; + + border-bottom: solid 1px #c9c9c9; + + margin: 2em 0; + + } + + + + hr.major { + + margin: 3em 0; + + } + + + + .align-left { + + text-align: left; + + } + + + + .align-center { + + text-align: center; + + } + + + + .align-right { + + text-align: right; + + } + + + +/* Row */ + + + + .row { + + display: flex; + + flex-wrap: wrap; + + box-sizing: border-box; + + align-items: stretch; + + } + + + + .row > * { + + box-sizing: border-box; + + } + + + + .row.gtr-uniform > * > :last-child { + + margin-bottom: 0; + + } + + + + .row.aln-left { + + justify-content: flex-start; + + } + + + + .row.aln-center { + + justify-content: center; + + } + + + + .row.aln-right { + + justify-content: flex-end; + + } + + + + .row.aln-top { + + align-items: flex-start; + + } + + + + .row.aln-middle { + + align-items: center; + + } + + + + .row.aln-bottom { + + align-items: flex-end; + + } + + + + .row > .imp { + + order: -1; + + } + + + + .row > .col-1 { + + width: 8.33333%; + + } + + + + .row > .off-1 { + + margin-left: 8.33333%; + + } + + + + .row > .col-2 { + + width: 16.66667%; + + } + + + + .row > .off-2 { + + margin-left: 16.66667%; + + } + + + + .row > .col-3 { + + width: 25%; + + } + + + + .row > .off-3 { + + margin-left: 25%; + + } + + + + .row > .col-4 { + + width: 33.33333%; + + } + + + + .row > .off-4 { + + margin-left: 33.33333%; + + } + + + + .row > .col-5 { + + width: 41.66667%; + + } + + + + .row > .off-5 { + + margin-left: 41.66667%; + + } + + + + .row > .col-6 { + + width: 50%; + + } + + + + .row > .off-6 { + + margin-left: 50%; + + } + + + + .row > .col-7 { + + width: 58.33333%; + + } + + + + .row > .off-7 { + + margin-left: 58.33333%; + + } + + + + .row > .col-8 { + + width: 66.66667%; + + } + + + + .row > .off-8 { + + margin-left: 66.66667%; + + } + + + + .row > .col-9 { + + width: 75%; + + } + + + + .row > .off-9 { + + margin-left: 75%; + + } + + + + .row > .col-10 { + + width: 83.33333%; + + } + + + + .row > .off-10 { + + margin-left: 83.33333%; + + } + + + + .row > .col-11 { + + width: 91.66667%; + + } + + + + .row > .off-11 { + + margin-left: 91.66667%; + + } + + + + .row > .col-12 { + + width: 100%; + + } + + + + .row > .off-12 { + + margin-left: 100%; + + } + + + + .row.gtr-0 { + + margin-top: 0; + + margin-left: 0em; + + } + + + + .row.gtr-0 > * { + + padding: 0 0 0 0em; + + } + + + + .row.gtr-0.gtr-uniform { + + margin-top: 0em; + + } + + + + .row.gtr-0.gtr-uniform > * { + + padding-top: 0em; + + } + + + + .row.gtr-25 { + + margin-top: 0; + + margin-left: -0.5em; + + } + + + + .row.gtr-25 > * { + + padding: 0 0 0 0.5em; + + } + + + + .row.gtr-25.gtr-uniform { + + margin-top: -0.5em; + + } + + + + .row.gtr-25.gtr-uniform > * { + + padding-top: 0.5em; + + } + + + + .row.gtr-50 { + + margin-top: 0; + + margin-left: -1em; + + } + + + + .row.gtr-50 > * { + + padding: 0 0 0 1em; + + } + + + + .row.gtr-50.gtr-uniform { + + margin-top: -1em; + + } + + + + .row.gtr-50.gtr-uniform > * { + + padding-top: 1em; + + } + + + + .row { + + margin-top: 0; + + margin-left: -2em; + + } + + + + .row > * { + + padding: 0 0 0 2em; + + } + + + + .row.gtr-uniform { + + margin-top: -2em; + + } + + + + .row.gtr-uniform > * { + + padding-top: 2em; + + } + + + + .row.gtr-150 { + + margin-top: 0; + + margin-left: -3em; + + } + + + + .row.gtr-150 > * { + + padding: 0 0 0 3em; + + } + + + + .row.gtr-150.gtr-uniform { + + margin-top: -3em; + + } + + + + .row.gtr-150.gtr-uniform > * { + + padding-top: 3em; + + } + + + + .row.gtr-200 { + + margin-top: 0; + + margin-left: -4em; + + } + + + + .row.gtr-200 > * { + + padding: 0 0 0 4em; + + } + + + + .row.gtr-200.gtr-uniform { + + margin-top: -4em; + + } + + + + .row.gtr-200.gtr-uniform > * { + + padding-top: 4em; + + } + + + + @media screen and (max-width: 1680px) { + + + + .row { + + display: flex; + + flex-wrap: wrap; + + box-sizing: border-box; + + align-items: stretch; + + } + + + + .row > * { + + box-sizing: border-box; + + } + + + + .row.gtr-uniform > * > :last-child { + + margin-bottom: 0; + + } + + + + .row.aln-left { + + justify-content: flex-start; + + } + + + + .row.aln-center { + + justify-content: center; + + } + + + + .row.aln-right { + + justify-content: flex-end; + + } + + + + .row.aln-top { + + align-items: flex-start; + + } + + + + .row.aln-middle { + + align-items: center; + + } + + + + .row.aln-bottom { + + align-items: flex-end; + + } + + + + .row > .imp-xlarge { + + order: -1; + + } + + + + .row > .col-1-xlarge { + + width: 8.33333%; + + } + + + + .row > .off-1-xlarge { + + margin-left: 8.33333%; + + } + + + + .row > .col-2-xlarge { + + width: 16.66667%; + + } + + + + .row > .off-2-xlarge { + + margin-left: 16.66667%; + + } + + + + .row > .col-3-xlarge { + + width: 25%; + + } + + + + .row > .off-3-xlarge { + + margin-left: 25%; + + } + + + + .row > .col-4-xlarge { + + width: 33.33333%; + + } + + + + .row > .off-4-xlarge { + + margin-left: 33.33333%; + + } + + + + .row > .col-5-xlarge { + + width: 41.66667%; + + } + + + + .row > .off-5-xlarge { + + margin-left: 41.66667%; + + } + + + + .row > .col-6-xlarge { + + width: 50%; + + } + + + + .row > .off-6-xlarge { + + margin-left: 50%; + + } + + + + .row > .col-7-xlarge { + + width: 58.33333%; + + } + + + + .row > .off-7-xlarge { + + margin-left: 58.33333%; + + } + + + + .row > .col-8-xlarge { + + width: 66.66667%; + + } + + + + .row > .off-8-xlarge { + + margin-left: 66.66667%; + + } + + + + .row > .col-9-xlarge { + + width: 75%; + + } + + + + .row > .off-9-xlarge { + + margin-left: 75%; + + } + + + + .row > .col-10-xlarge { + + width: 83.33333%; + + } + + + + .row > .off-10-xlarge { + + margin-left: 83.33333%; + + } + + + + .row > .col-11-xlarge { + + width: 91.66667%; + + } + + + + .row > .off-11-xlarge { + + margin-left: 91.66667%; + + } + + + + .row > .col-12-xlarge { + + width: 100%; + + } + + + + .row > .off-12-xlarge { + + margin-left: 100%; + + } + + + + .row.gtr-0 { + + margin-top: 0; + + margin-left: 0em; + + } + + + + .row.gtr-0 > * { + + padding: 0 0 0 0em; + + } + + + + .row.gtr-0.gtr-uniform { + + margin-top: 0em; + + } + + + + .row.gtr-0.gtr-uniform > * { + + padding-top: 0em; + + } + + + + .row.gtr-25 { + + margin-top: 0; + + margin-left: -0.5em; + + } + + + + .row.gtr-25 > * { + + padding: 0 0 0 0.5em; + + } + + + + .row.gtr-25.gtr-uniform { + + margin-top: -0.5em; + + } + + + + .row.gtr-25.gtr-uniform > * { + + padding-top: 0.5em; + + } + + + + .row.gtr-50 { + + margin-top: 0; + + margin-left: -1em; + + } + + + + .row.gtr-50 > * { + + padding: 0 0 0 1em; + + } + + + + .row.gtr-50.gtr-uniform { + + margin-top: -1em; + + } + + + + .row.gtr-50.gtr-uniform > * { + + padding-top: 1em; + + } + + + + .row { + + margin-top: 0; + + margin-left: -2em; + + } + + + + .row > * { + + padding: 0 0 0 2em; + + } + + + + .row.gtr-uniform { + + margin-top: -2em; + + } + + + + .row.gtr-uniform > * { + + padding-top: 2em; + + } + + + + .row.gtr-150 { + + margin-top: 0; + + margin-left: -3em; + + } + + + + .row.gtr-150 > * { + + padding: 0 0 0 3em; + + } + + + + .row.gtr-150.gtr-uniform { + + margin-top: -3em; + + } + + + + .row.gtr-150.gtr-uniform > * { + + padding-top: 3em; + + } + + + + .row.gtr-200 { + + margin-top: 0; + + margin-left: -4em; + + } + + + + .row.gtr-200 > * { + + padding: 0 0 0 4em; + + } + + + + .row.gtr-200.gtr-uniform { + + margin-top: -4em; + + } + + + + .row.gtr-200.gtr-uniform > * { + + padding-top: 4em; + + } + + + + } + + + + @media screen and (max-width: 1280px) { + + + + .row { + + display: flex; + + flex-wrap: wrap; + + box-sizing: border-box; + + align-items: stretch; + + } + + + + .row > * { + + box-sizing: border-box; + + } + + + + .row.gtr-uniform > * > :last-child { + + margin-bottom: 0; + + } + + + + .row.aln-left { + + justify-content: flex-start; + + } + + + + .row.aln-center { + + justify-content: center; + + } + + + + .row.aln-right { + + justify-content: flex-end; + + } + + + + .row.aln-top { + + align-items: flex-start; + + } + + + + .row.aln-middle { + + align-items: center; + + } + + + + .row.aln-bottom { + + align-items: flex-end; + + } + + + + .row > .imp-large { + + order: -1; + + } + + + + .row > .col-1-large { + + width: 8.33333%; + + } + + + + .row > .off-1-large { + + margin-left: 8.33333%; + + } + + + + .row > .col-2-large { + + width: 16.66667%; + + } + + + + .row > .off-2-large { + + margin-left: 16.66667%; + + } + + + + .row > .col-3-large { + + width: 25%; + + } + + + + .row > .off-3-large { + + margin-left: 25%; + + } + + + + .row > .col-4-large { + + width: 33.33333%; + + } + + + + .row > .off-4-large { + + margin-left: 33.33333%; + + } + + + + .row > .col-5-large { + + width: 41.66667%; + + } + + + + .row > .off-5-large { + + margin-left: 41.66667%; + + } + + + + .row > .col-6-large { + + width: 50%; + + } + + + + .row > .off-6-large { + + margin-left: 50%; + + } + + + + .row > .col-7-large { + + width: 58.33333%; + + } + + + + .row > .off-7-large { + + margin-left: 58.33333%; + + } + + + + .row > .col-8-large { + + width: 66.66667%; + + } + + + + .row > .off-8-large { + + margin-left: 66.66667%; + + } + + + + .row > .col-9-large { + + width: 75%; + + } + + + + .row > .off-9-large { + + margin-left: 75%; + + } + + + + .row > .col-10-large { + + width: 83.33333%; + + } + + + + .row > .off-10-large { + + margin-left: 83.33333%; + + } + + + + .row > .col-11-large { + + width: 91.66667%; + + } + + + + .row > .off-11-large { + + margin-left: 91.66667%; + + } + + + + .row > .col-12-large { + + width: 100%; + + } + + + + .row > .off-12-large { + + margin-left: 100%; + + } + + + + .row.gtr-0 { + + margin-top: 0; + + margin-left: 0em; + + } + + + + .row.gtr-0 > * { + + padding: 0 0 0 0em; + + } + + + + .row.gtr-0.gtr-uniform { + + margin-top: 0em; + + } + + + + .row.gtr-0.gtr-uniform > * { + + padding-top: 0em; + + } + + + + .row.gtr-25 { + + margin-top: 0; + + margin-left: -0.5em; + + } + + + + .row.gtr-25 > * { + + padding: 0 0 0 0.5em; + + } + + + + .row.gtr-25.gtr-uniform { + + margin-top: -0.5em; + + } + + + + .row.gtr-25.gtr-uniform > * { + + padding-top: 0.5em; + + } + + + + .row.gtr-50 { + + margin-top: 0; + + margin-left: -1em; + + } + + + + .row.gtr-50 > * { + + padding: 0 0 0 1em; + + } + + + + .row.gtr-50.gtr-uniform { + + margin-top: -1em; + + } + + + + .row.gtr-50.gtr-uniform > * { + + padding-top: 1em; + + } + + + + .row { + + margin-top: 0; + + margin-left: -2em; + + } + + + + .row > * { + + padding: 0 0 0 2em; + + } + + + + .row.gtr-uniform { + + margin-top: -2em; + + } + + + + .row.gtr-uniform > * { + + padding-top: 2em; + + } + + + + .row.gtr-150 { + + margin-top: 0; + + margin-left: -3em; + + } + + + + .row.gtr-150 > * { + + padding: 0 0 0 3em; + + } + + + + .row.gtr-150.gtr-uniform { + + margin-top: -3em; + + } + + + + .row.gtr-150.gtr-uniform > * { + + padding-top: 3em; + + } + + + + .row.gtr-200 { + + margin-top: 0; + + margin-left: -4em; + + } + + + + .row.gtr-200 > * { + + padding: 0 0 0 4em; + + } + + + + .row.gtr-200.gtr-uniform { + + margin-top: -4em; + + } + + + + .row.gtr-200.gtr-uniform > * { + + padding-top: 4em; + + } + + + + } + + + + @media screen and (max-width: 980px) { + + + + .row { + + display: flex; + + flex-wrap: wrap; + + box-sizing: border-box; + + align-items: stretch; + + } + + + + .row > * { + + box-sizing: border-box; + + } + + + + .row.gtr-uniform > * > :last-child { + + margin-bottom: 0; + + } + + + + .row.aln-left { + + justify-content: flex-start; + + } + + + + .row.aln-center { + + justify-content: center; + + } + + + + .row.aln-right { + + justify-content: flex-end; + + } + + + + .row.aln-top { + + align-items: flex-start; + + } + + + + .row.aln-middle { + + align-items: center; + + } + + + + .row.aln-bottom { + + align-items: flex-end; + + } + + + + .row > .imp-medium { + + order: -1; + + } + + + + .row > .col-1-medium { + + width: 8.33333%; + + } + + + + .row > .off-1-medium { + + margin-left: 8.33333%; + + } + + + + .row > .col-2-medium { + + width: 16.66667%; + + } + + + + .row > .off-2-medium { + + margin-left: 16.66667%; + + } + + + + .row > .col-3-medium { + + width: 25%; + + } + + + + .row > .off-3-medium { + + margin-left: 25%; + + } + + + + .row > .col-4-medium { + + width: 33.33333%; + + } + + + + .row > .off-4-medium { + + margin-left: 33.33333%; + + } + + + + .row > .col-5-medium { + + width: 41.66667%; + + } + + + + .row > .off-5-medium { + + margin-left: 41.66667%; + + } + + + + .row > .col-6-medium { + + width: 50%; + + } + + + + .row > .off-6-medium { + + margin-left: 50%; + + } + + + + .row > .col-7-medium { + + width: 58.33333%; + + } + + + + .row > .off-7-medium { + + margin-left: 58.33333%; + + } + + + + .row > .col-8-medium { + + width: 66.66667%; + + } + + + + .row > .off-8-medium { + + margin-left: 66.66667%; + + } + + + + .row > .col-9-medium { + + width: 75%; + + } + + + + .row > .off-9-medium { + + margin-left: 75%; + + } + + + + .row > .col-10-medium { + + width: 83.33333%; + + } + + + + .row > .off-10-medium { + + margin-left: 83.33333%; + + } + + + + .row > .col-11-medium { + + width: 91.66667%; + + } + + + + .row > .off-11-medium { + + margin-left: 91.66667%; + + } + + + + .row > .col-12-medium { + + width: 100%; + + } + + + + .row > .off-12-medium { + + margin-left: 100%; + + } + + + + .row.gtr-0 { + + margin-top: 0; + + margin-left: 0em; + + } + + + + .row.gtr-0 > * { + + padding: 0 0 0 0em; + + } + + + + .row.gtr-0.gtr-uniform { + + margin-top: 0em; + + } + + + + .row.gtr-0.gtr-uniform > * { + + padding-top: 0em; + + } + + + + .row.gtr-25 { + + margin-top: 0; + + margin-left: -0.375em; + + } + + + + .row.gtr-25 > * { + + padding: 0 0 0 0.375em; + + } + + + + .row.gtr-25.gtr-uniform { + + margin-top: -0.375em; + + } + + + + .row.gtr-25.gtr-uniform > * { + + padding-top: 0.375em; + + } + + + + .row.gtr-50 { + + margin-top: 0; + + margin-left: -0.75em; + + } + + + + .row.gtr-50 > * { + + padding: 0 0 0 0.75em; + + } + + + + .row.gtr-50.gtr-uniform { + + margin-top: -0.75em; + + } + + + + .row.gtr-50.gtr-uniform > * { + + padding-top: 0.75em; + + } + + + + .row { + + margin-top: 0; + + margin-left: -1.5em; + + } + + + + .row > * { + + padding: 0 0 0 1.5em; + + } + + + + .row.gtr-uniform { + + margin-top: -1.5em; + + } + + + + .row.gtr-uniform > * { + + padding-top: 1.5em; + + } + + + + .row.gtr-150 { + + margin-top: 0; + + margin-left: -2.25em; + + } + + + + .row.gtr-150 > * { + + padding: 0 0 0 2.25em; + + } + + + + .row.gtr-150.gtr-uniform { + + margin-top: -2.25em; + + } + + + + .row.gtr-150.gtr-uniform > * { + + padding-top: 2.25em; + + } + + + + .row.gtr-200 { + + margin-top: 0; + + margin-left: -3em; + + } + + + + .row.gtr-200 > * { + + padding: 0 0 0 3em; + + } + + + + .row.gtr-200.gtr-uniform { + + margin-top: -3em; + + } + + + + .row.gtr-200.gtr-uniform > * { + + padding-top: 3em; + + } + + + + } + + + + @media screen and (max-width: 736px) { + + + + .row { + + display: flex; + + flex-wrap: wrap; + + box-sizing: border-box; + + align-items: stretch; + + } + + + + .row > * { + + box-sizing: border-box; + + } + + + + .row.gtr-uniform > * > :last-child { + + margin-bottom: 0; + + } + + + + .row.aln-left { + + justify-content: flex-start; + + } + + + + .row.aln-center { + + justify-content: center; + + } + + + + .row.aln-right { + + justify-content: flex-end; + + } + + + + .row.aln-top { + + align-items: flex-start; + + } + + + + .row.aln-middle { + + align-items: center; + + } + + + + .row.aln-bottom { + + align-items: flex-end; + + } + + + + .row > .imp-small { + + order: -1; + + } + + + + .row > .col-1-small { + + width: 8.33333%; + + } + + + + .row > .off-1-small { + + margin-left: 8.33333%; + + } + + + + .row > .col-2-small { + + width: 16.66667%; + + } + + + + .row > .off-2-small { + + margin-left: 16.66667%; + + } + + + + .row > .col-3-small { + + width: 25%; + + } + + + + .row > .off-3-small { + + margin-left: 25%; + + } + + + + .row > .col-4-small { + + width: 33.33333%; + + } + + + + .row > .off-4-small { + + margin-left: 33.33333%; + + } + + + + .row > .col-5-small { + + width: 41.66667%; + + } + + + + .row > .off-5-small { + + margin-left: 41.66667%; + + } + + + + .row > .col-6-small { + + width: 50%; + + } + + + + .row > .off-6-small { + + margin-left: 50%; + + } + + + + .row > .col-7-small { + + width: 58.33333%; + + } + + + + .row > .off-7-small { + + margin-left: 58.33333%; + + } + + + + .row > .col-8-small { + + width: 66.66667%; + + } + + + + .row > .off-8-small { + + margin-left: 66.66667%; + + } + + + + .row > .col-9-small { + + width: 75%; + + } + + + + .row > .off-9-small { + + margin-left: 75%; + + } + + + + .row > .col-10-small { + + width: 83.33333%; + + } + + + + .row > .off-10-small { + + margin-left: 83.33333%; + + } + + + + .row > .col-11-small { + + width: 91.66667%; + + } + + + + .row > .off-11-small { + + margin-left: 91.66667%; + + } + + + + .row > .col-12-small { + + width: 100%; + + } + + + + .row > .off-12-small { + + margin-left: 100%; + + } + + + + .row.gtr-0 { + + margin-top: 0; + + margin-left: 0em; + + } + + + + .row.gtr-0 > * { + + padding: 0 0 0 0em; + + } + + + + .row.gtr-0.gtr-uniform { + + margin-top: 0em; + + } + + + + .row.gtr-0.gtr-uniform > * { + + padding-top: 0em; + + } + + + + .row.gtr-25 { + + margin-top: 0; + + margin-left: -0.25em; + + } + + + + .row.gtr-25 > * { + + padding: 0 0 0 0.25em; + + } + + + + .row.gtr-25.gtr-uniform { + + margin-top: -0.25em; + + } + + + + .row.gtr-25.gtr-uniform > * { + + padding-top: 0.25em; + + } + + + + .row.gtr-50 { + + margin-top: 0; + + margin-left: -0.5em; + + } + + + + .row.gtr-50 > * { + + padding: 0 0 0 0.5em; + + } + + + + .row.gtr-50.gtr-uniform { + + margin-top: -0.5em; + + } + + + + .row.gtr-50.gtr-uniform > * { + + padding-top: 0.5em; + + } + + + + .row { + + margin-top: 0; + + margin-left: -1em; + + } + + + + .row > * { + + padding: 0 0 0 1em; + + } + + + + .row.gtr-uniform { + + margin-top: -1em; + + } + + + + .row.gtr-uniform > * { + + padding-top: 1em; + + } + + + + .row.gtr-150 { + + margin-top: 0; + + margin-left: -1.5em; + + } + + + + .row.gtr-150 > * { + + padding: 0 0 0 1.5em; + + } + + + + .row.gtr-150.gtr-uniform { + + margin-top: -1.5em; + + } + + + + .row.gtr-150.gtr-uniform > * { + + padding-top: 1.5em; + + } + + + + .row.gtr-200 { + + margin-top: 0; + + margin-left: -2em; + + } + + + + .row.gtr-200 > * { + + padding: 0 0 0 2em; + + } + + + + .row.gtr-200.gtr-uniform { + + margin-top: -2em; + + } + + + + .row.gtr-200.gtr-uniform > * { + + padding-top: 2em; + + } + + + + } + + + + @media screen and (max-width: 480px) { + + + + .row { + + display: flex; + + flex-wrap: wrap; + + box-sizing: border-box; + + align-items: stretch; + + } + + + + .row > * { + + box-sizing: border-box; + + } + + + + .row.gtr-uniform > * > :last-child { + + margin-bottom: 0; + + } + + + + .row.aln-left { + + justify-content: flex-start; + + } + + + + .row.aln-center { + + justify-content: center; + + } + + + + .row.aln-right { + + justify-content: flex-end; + + } + + + + .row.aln-top { + + align-items: flex-start; + + } + + + + .row.aln-middle { + + align-items: center; + + } + + + + .row.aln-bottom { + + align-items: flex-end; + + } + + + + .row > .imp-xsmall { + + order: -1; + + } + + + + .row > .col-1-xsmall { + + width: 8.33333%; + + } + + + + .row > .off-1-xsmall { + + margin-left: 8.33333%; + + } + + + + .row > .col-2-xsmall { + + width: 16.66667%; + + } + + + + .row > .off-2-xsmall { + + margin-left: 16.66667%; + + } + + + + .row > .col-3-xsmall { + + width: 25%; + + } + + + + .row > .off-3-xsmall { + + margin-left: 25%; + + } + + + + .row > .col-4-xsmall { + + width: 33.33333%; + + } + + + + .row > .off-4-xsmall { + + margin-left: 33.33333%; + + } + + + + .row > .col-5-xsmall { + + width: 41.66667%; + + } + + + + .row > .off-5-xsmall { + + margin-left: 41.66667%; + + } + + + + .row > .col-6-xsmall { + + width: 50%; + + } + + + + .row > .off-6-xsmall { + + margin-left: 50%; + + } + + + + .row > .col-7-xsmall { + + width: 58.33333%; + + } + + + + .row > .off-7-xsmall { + + margin-left: 58.33333%; + + } + + + + .row > .col-8-xsmall { + + width: 66.66667%; + + } + + + + .row > .off-8-xsmall { + + margin-left: 66.66667%; + + } + + + + .row > .col-9-xsmall { + + width: 75%; + + } + + + + .row > .off-9-xsmall { + + margin-left: 75%; + + } + + + + .row > .col-10-xsmall { + + width: 83.33333%; + + } + + + + .row > .off-10-xsmall { + + margin-left: 83.33333%; + + } + + + + .row > .col-11-xsmall { + + width: 91.66667%; + + } + + + + .row > .off-11-xsmall { + + margin-left: 91.66667%; + + } + + + + .row > .col-12-xsmall { + + width: 100%; + + } + + + + .row > .off-12-xsmall { + + margin-left: 100%; + + } + + + + .row.gtr-0 { + + margin-top: 0; + + margin-left: 0em; + + } + + + + .row.gtr-0 > * { + + padding: 0 0 0 0em; + + } + + + + .row.gtr-0.gtr-uniform { + + margin-top: 0em; + + } + + + + .row.gtr-0.gtr-uniform > * { + + padding-top: 0em; + + } + + + + .row.gtr-25 { + + margin-top: 0; + + margin-left: -0.25em; + + } + + + + .row.gtr-25 > * { + + padding: 0 0 0 0.25em; + + } + + + + .row.gtr-25.gtr-uniform { + + margin-top: -0.25em; + + } + + + + .row.gtr-25.gtr-uniform > * { + + padding-top: 0.25em; + + } + + + + .row.gtr-50 { + + margin-top: 0; + + margin-left: -0.5em; + + } + + + + .row.gtr-50 > * { + + padding: 0 0 0 0.5em; + + } + + + + .row.gtr-50.gtr-uniform { + + margin-top: -0.5em; + + } + + + + .row.gtr-50.gtr-uniform > * { + + padding-top: 0.5em; + + } + + + + .row { + + margin-top: 0; + + margin-left: -1em; + + } + + + + .row > * { + + padding: 0 0 0 1em; + + } + + + + .row.gtr-uniform { + + margin-top: -1em; + + } + + + + .row.gtr-uniform > * { + + padding-top: 1em; + + } + + + + .row.gtr-150 { + + margin-top: 0; + + margin-left: -1.5em; + + } + + + + .row.gtr-150 > * { + + padding: 0 0 0 1.5em; + + } + + + + .row.gtr-150.gtr-uniform { + + margin-top: -1.5em; + + } + + + + .row.gtr-150.gtr-uniform > * { + + padding-top: 1.5em; + + } + + + + .row.gtr-200 { + + margin-top: 0; + + margin-left: -2em; + + } + + + + .row.gtr-200 > * { + + padding: 0 0 0 2em; + + } + + + + .row.gtr-200.gtr-uniform { + + margin-top: -2em; + + } + + + + .row.gtr-200.gtr-uniform > * { + + padding-top: 2em; + + } + + + + } + + + +/* Section/Article */ + + + + section.special, article.special { + + text-align: center; + + } + + + + header p { + + margin-top: -1em; + + } + + + + @media screen and (max-width: 736px) { + + + + header p { + + margin-top: 0; + + } + + + + } + + + +/* Icon */ + + + + .icon { + + text-decoration: none; + + border-bottom: none; + + position: relative; + + } + + + + .icon:before { + + -moz-osx-font-smoothing: grayscale; + + -webkit-font-smoothing: antialiased; + + display: inline-block; + + font-style: normal; + + font-variant: normal; + + text-rendering: auto; + + line-height: 1; + + text-transform: none !important; + + font-family: 'Font Awesome 5 Free'; + + font-weight: 400; + + } + + + + .icon > .label { + + display: none; + + } + + + + .icon:before { + + line-height: inherit; + + } + + + + .icon.solid:before { + + font-weight: 900; + + } + + + + .icon.brands:before { + + font-family: 'Font Awesome 5 Brands'; + + } + + + + .icon.style2 { + + -moz-transition: background-color 0.2s ease-in-out, color 0.2s ease-in-out, border-color 0.2s ease-in-out; + + -webkit-transition: background-color 0.2s ease-in-out, color 0.2s ease-in-out, border-color 0.2s ease-in-out; + + -ms-transition: background-color 0.2s ease-in-out, color 0.2s ease-in-out, border-color 0.2s ease-in-out; + + transition: background-color 0.2s ease-in-out, color 0.2s ease-in-out, border-color 0.2s ease-in-out; + + background-color: transparent; + + border: solid 1px #c9c9c9; + + border-radius: 4px; + + width: 2.65em; + + height: 2.65em; + + display: inline-block; + + text-align: center; + + line-height: 2.65em; + + color: inherit; + + } + + + + .icon.style2:before { + + font-size: 1.1em; + + } + + + + .icon.style2:hover { + + color: #f2849e; + + border-color: #f2849e; + + } + + + + .icon.style2:active { + + background-color: rgba(242, 132, 158, 0.1); + + } + + + +/* List */ + + + + ol { + + list-style: decimal; + + margin: 0 0 2em 0; + + padding-left: 1.25em; + + } + + + + ol li { + + padding-left: 0.25em; + + } + + + + ul { + + list-style: disc; + + margin: 0 0 2em 0; + + padding-left: 1em; + + } + + + + ul li { + + padding-left: 0.5em; + + } + + + + ul.alt { + + list-style: none; + + padding-left: 0; + + } + + + + ul.alt li { + + border-top: solid 1px #c9c9c9; + + padding: 0.5em 0; + + } + + + + ul.alt li:first-child { + + border-top: 0; + + padding-top: 0; + + } + + + + dl { + + margin: 0 0 2em 0; + + } + + + + dl dt { + + display: block; + + font-weight: 900; + + margin: 0 0 1em 0; + + } + + + + dl dd { + + margin-left: 2em; + + } + + + +/* Actions */ + + + + ul.actions { + + display: -moz-flex; + + display: -webkit-flex; + + display: -ms-flex; + + display: flex; + + cursor: default; + + list-style: none; + + margin-left: -1em; + + padding-left: 0; + + } + + + + ul.actions li { + + padding: 0 0 0 1em; + + vertical-align: middle; + + } + + + + ul.actions.special { + + -moz-justify-content: center; + + -webkit-justify-content: center; + + -ms-justify-content: center; + + justify-content: center; + + width: 100%; + + margin-left: 0; + + } + + + + ul.actions.special li:first-child { + + padding-left: 0; + + } + + + + ul.actions.stacked { + + -moz-flex-direction: column; + + -webkit-flex-direction: column; + + -ms-flex-direction: column; + + flex-direction: column; + + margin-left: 0; + + } + + + + ul.actions.stacked li { + + padding: 1.3em 0 0 0; + + } + + + + ul.actions.stacked li:first-child { + + padding-top: 0; + + } + + + + ul.actions.fit { + + width: calc(100% + 1em); + + } + + + + ul.actions.fit li { + + -moz-flex-grow: 1; + + -webkit-flex-grow: 1; + + -ms-flex-grow: 1; + + flex-grow: 1; + + -moz-flex-shrink: 1; + + -webkit-flex-shrink: 1; + + -ms-flex-shrink: 1; + + flex-shrink: 1; + + width: 100%; + + } + + + + ul.actions.fit li > * { + + width: 100%; + + } + + + + ul.actions.fit.stacked { + + width: 100%; + + } + + + + @media screen and (max-width: 480px) { + + + + ul.actions:not(.fixed) { + + -moz-flex-direction: column; + + -webkit-flex-direction: column; + + -ms-flex-direction: column; + + flex-direction: column; + + margin-left: 0; + + width: 100% !important; + + } + + + + ul.actions:not(.fixed) li { + + -moz-flex-grow: 1; + + -webkit-flex-grow: 1; + + -ms-flex-grow: 1; + + flex-grow: 1; + + -moz-flex-shrink: 1; + + -webkit-flex-shrink: 1; + + -ms-flex-shrink: 1; + + flex-shrink: 1; + + padding: 1em 0 0 0; + + text-align: center; + + width: 100%; + + } + + + + ul.actions:not(.fixed) li > * { + + width: 100%; + + } + + + + ul.actions:not(.fixed) li:first-child { + + padding-top: 0; + + } + + + + ul.actions:not(.fixed) li input[type="submit"], + + ul.actions:not(.fixed) li input[type="reset"], + + ul.actions:not(.fixed) li input[type="button"], + + ul.actions:not(.fixed) li button, + + ul.actions:not(.fixed) li .button { + + width: 100%; + + } + + + + ul.actions:not(.fixed) li input[type="submit"].icon:before, + + ul.actions:not(.fixed) li input[type="reset"].icon:before, + + ul.actions:not(.fixed) li input[type="button"].icon:before, + + ul.actions:not(.fixed) li button.icon:before, + + ul.actions:not(.fixed) li .button.icon:before { + + margin-left: -0.5rem; + + } + + + + } + + + +/* Icons */ + + + + ul.icons { + + cursor: default; + + list-style: none; + + padding-left: 0; + + margin: -1em 0 2em -1em; + + } + + + + ul.icons li { + + display: inline-block; + + padding: 1em 0 0 1em; + + } + + + +/* Form */ + + + + form { + + margin: 0 0 2em 0; + + overflow-x: hidden; + + } + + + + form > :last-child { + + margin-bottom: 0; + + } + + + + form > .fields { + + display: -moz-flex; + + display: -webkit-flex; + + display: -ms-flex; + + display: flex; + + -moz-flex-wrap: wrap; + + -webkit-flex-wrap: wrap; + + -ms-flex-wrap: wrap; + + flex-wrap: wrap; + + width: calc(100% + 3em); + + margin: -1.5em 0 2em -1.5em; + + } + + + + form > .fields > .field { + + -moz-flex-grow: 0; + + -webkit-flex-grow: 0; + + -ms-flex-grow: 0; + + flex-grow: 0; + + -moz-flex-shrink: 0; + + -webkit-flex-shrink: 0; + + -ms-flex-shrink: 0; + + flex-shrink: 0; + + padding: 1.5em 0 0 1.5em; + + width: calc(100% - 1.5em); + + } + + + + form > .fields > .field.half { + + width: calc(50% - 0.75em); + + } + + + + form > .fields > .field.third { + + width: calc(100%/3 - 0.5em); + + } + + + + form > .fields > .field.quarter { + + width: calc(25% - 0.375em); + + } + + + + @media screen and (max-width: 480px) { + + + + form > .fields { + + width: calc(100% + 3em); + + margin: -1.5em 0 2em -1.5em; + + } + + + + form > .fields > .field { + + padding: 1.5em 0 0 1.5em; + + width: calc(100% - 1.5em); + + } + + + + form > .fields > .field.half { + + width: calc(100% - 1.5em); + + } + + + + form > .fields > .field.third { + + width: calc(100% - 1.5em); + + } + + + + form > .fields > .field.quarter { + + width: calc(100% - 1.5em); + + } + + + + } + + + + label { + + display: block; + + font-size: 0.9em; + + font-weight: 900; + + margin: 0 0 1em 0; + + } + + + + input[type="text"], + + input[type="password"], + + input[type="email"], + + input[type="tel"], + + select, + + textarea { + + -moz-appearance: none; + + -webkit-appearance: none; + + -ms-appearance: none; + + appearance: none; + + background-color: transparent; + + border: none; + + border-radius: 0; + + border-bottom: solid 1px #c9c9c9; + + color: inherit; + + display: block; + + outline: 0; + + padding: 0; + + text-decoration: none; + + width: 100%; + + } + + + + input[type="text"]:invalid, + + input[type="password"]:invalid, + + input[type="email"]:invalid, + + input[type="tel"]:invalid, + + select:invalid, + + textarea:invalid { + + box-shadow: none; + + } + + + + input[type="text"]:focus, + + input[type="password"]:focus, + + input[type="email"]:focus, + + input[type="tel"]:focus, + + select:focus, + + textarea:focus { + + border-bottom-color: #f2849e; + + box-shadow: inset 0 -1px 0 0 #f2849e; + + } + + + + select { + + background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='40' height='40' preserveAspectRatio='none' viewBox='0 0 40 40'%3E%3Cpath d='M9.4,12.3l10.4,10.4l10.4-10.4c0.2-0.2,0.5-0.4,0.9-0.4c0.3,0,0.6,0.1,0.9,0.4l3.3,3.3c0.2,0.2,0.4,0.5,0.4,0.9 c0,0.4-0.1,0.6-0.4,0.9L20.7,31.9c-0.2,0.2-0.5,0.4-0.9,0.4c-0.3,0-0.6-0.1-0.9-0.4L4.3,17.3c-0.2-0.2-0.4-0.5-0.4-0.9 c0-0.4,0.1-0.6,0.4-0.9l3.3-3.3c0.2-0.2,0.5-0.4,0.9-0.4S9.1,12.1,9.4,12.3z' fill='%23c9c9c9' /%3E%3C/svg%3E"); + + background-size: 1.25rem; + + background-repeat: no-repeat; + + background-position: calc(100% - 1rem) center; + + height: 3em; + + padding-right: 3em; + + text-overflow: ellipsis; + + } + + + + select option { + + background: #ffffff; + + } + + + + select:focus::-ms-value { + + background-color: transparent; + + } + + + + select::-ms-expand { + + display: none; + + } + + + + input[type="text"], + + input[type="password"], + + input[type="email"], + + select { + + height: 3em; + + } + + + + textarea { + + padding: 0; + + min-height: 3.75em; + + } + + + + input[type="checkbox"], + + input[type="radio"] { + + -moz-appearance: none; + + -webkit-appearance: none; + + -ms-appearance: none; + + appearance: none; + + display: block; + + float: left; + + margin-right: -2em; + + opacity: 0; + + width: 1em; + + z-index: -1; + + } + + + + input[type="checkbox"] + label, + + input[type="radio"] + label { + + text-decoration: none; + + color: #585858; + + cursor: pointer; + + display: inline-block; + + font-size: 1em; + + font-weight: 300; + + padding-left: 2.55em; + + padding-right: 0.75em; + + position: relative; + + } + + + + input[type="checkbox"] + label:before, + + input[type="radio"] + label:before { + + -moz-osx-font-smoothing: grayscale; + + -webkit-font-smoothing: antialiased; + + display: inline-block; + + font-style: normal; + + font-variant: normal; + + text-rendering: auto; + + line-height: 1; + + text-transform: none !important; + + font-family: 'Font Awesome 5 Free'; + + font-weight: 900; + + } + + + + input[type="checkbox"] + label:before, + + input[type="radio"] + label:before { + + border-radius: 4px; + + border: solid 1px #c9c9c9; + + content: ''; + + display: inline-block; + + font-size: 0.8em; + + height: 2.25em; + + left: 0; + + line-height: 2.25em; + + position: absolute; + + text-align: center; + + top: 0; + + width: 2.25em; + + } + + + + input[type="checkbox"]:checked + label:before, + + input[type="radio"]:checked + label:before { + + background: #585858; + + border-color: #585858; + + color: #ffffff; + + content: '\f00c'; + + } + + + + input[type="checkbox"]:focus + label:before, + + input[type="radio"]:focus + label:before { + + border-color: #f2849e; + + box-shadow: 0 0 0 1px #f2849e; + + } + + + + input[type="checkbox"] + label:before { + + border-radius: 4px; + + } + + + + input[type="radio"] + label:before { + + border-radius: 100%; + + } + + + +/* Box */ + + + + .box { + + border-radius: 4px; + + border: solid 1px #c9c9c9; + + margin-bottom: 2em; + + padding: 1.5em; + + } + + + + .box > :last-child, + + .box > :last-child > :last-child, + + .box > :last-child > :last-child > :last-child { + + margin-bottom: 0; + + } + + + + .box.alt { + + border: 0; + + border-radius: 0; + + padding: 0; + + } + + + +/* Image */ + + + + .image { + + border-radius: 4px; + + border: 0; + + display: inline-block; + + position: relative; + + } + + + + .image img { + + border-radius: 4px; + + display: block; + + } + + + + .image.left, .image.right { + + max-width: 40%; + + } + + + + .image.left img, .image.right img { + + width: 100%; + + } + + + + .image.left { + + float: left; + + padding: 0 1.5em 1em 0; + + top: 0.25em; + + } + + + + .image.right { + + float: right; + + padding: 0 0 1em 1.5em; + + top: 0.25em; + + } + + + + .image.fit { + + display: block; + + margin: 0 0 2em 0; + + width: 100%; + + } + + + + .image.fit img { + + width: 100%; + + } + + + + .image.main { + + display: block; + + margin: 0 0 3em 0; + + width: 100%; + + } + + + + .image.main img { + + width: 100%; + + } + + + + @media screen and (max-width: 736px) { + + + + .image.main { + + margin: 0 0 2em 0; + + } + + + + } + + + +/* Table */ + + + + .table-wrapper { + + -webkit-overflow-scrolling: touch; + + overflow-x: auto; + + } + + + + table { + + margin: 0 0 2em 0; + + width: 100%; + + } + + + + table tbody tr { + + border: solid 1px #c9c9c9; + + border-left: 0; + + border-right: 0; + + } + + + + table tbody tr:nth-child(2n + 1) { + + background-color: rgba(144, 144, 144, 0.075); + + } + + + + table td { + + padding: 0.75em 0.75em; + + } + + + + table th { + + font-size: 0.9em; + + font-weight: 900; + + padding: 0 0.75em 0.75em 0.75em; + + text-align: left; + + } + + + + table thead { + + border-bottom: solid 2px #c9c9c9; + + } + + + + table tfoot { + + border-top: solid 2px #c9c9c9; + + } + + + + table.alt { + + border-collapse: separate; + + } + + + + table.alt tbody tr td { + + border: solid 1px #c9c9c9; + + border-left-width: 0; + + border-top-width: 0; + + } + + + + table.alt tbody tr td:first-child { + + border-left-width: 1px; + + } + + + + table.alt tbody tr:first-child td { + + border-top-width: 1px; + + } + + + + table.alt thead { + + border-bottom: 0; + + } + + + + table.alt tfoot { + + border-top: 0; + + } + + + +/* Button */ + + + + input[type="submit"], + + input[type="reset"], + + input[type="button"], + + button, + + .button { + + -moz-appearance: none; + + -webkit-appearance: none; + + -ms-appearance: none; + + appearance: none; + + -moz-transition: background-color 0.2s ease-in-out, color 0.2s ease-in-out, box-shadow 0.2s ease-in-out; + + -webkit-transition: background-color 0.2s ease-in-out, color 0.2s ease-in-out, box-shadow 0.2s ease-in-out; + + -ms-transition: background-color 0.2s ease-in-out, color 0.2s ease-in-out, box-shadow 0.2s ease-in-out; + + transition: background-color 0.2s ease-in-out, color 0.2s ease-in-out, box-shadow 0.2s ease-in-out; + + background-color: transparent; + + border-radius: 4px; + + border: 0; + + box-shadow: inset 0 0 0 2px #585858; + + color: #585858 !important; + + cursor: pointer; + + display: inline-block; + + font-size: 0.8em; + + font-weight: 900; + + height: 3.5em; + + letter-spacing: 0.35em; + + line-height: 3.45em; + + overflow: hidden; + + padding: 0 1.25em 0 1.6em; + + text-align: center; + + text-decoration: none; + + text-overflow: ellipsis; + + text-transform: uppercase; + + white-space: nowrap; + + } + + + + input[type="submit"].icon:before, + + input[type="reset"].icon:before, + + input[type="button"].icon:before, + + button.icon:before, + + .button.icon:before { + + margin-right: 0.5em; + + } + + + + input[type="submit"].fit, + + input[type="reset"].fit, + + input[type="button"].fit, + + button.fit, + + .button.fit { + + width: 100%; + + } + + + + input[type="submit"]:hover, + + input[type="reset"]:hover, + + input[type="button"]:hover, + + button:hover, + + .button:hover { + + color: #f2849e !important; + + box-shadow: inset 0 0 0 2px #f2849e; + + } + + + + input[type="submit"]:active, + + input[type="reset"]:active, + + input[type="button"]:active, + + button:active, + + .button:active { + + background-color: rgba(242, 132, 158, 0.1); + + } + + + + input[type="submit"].small, + + input[type="reset"].small, + + input[type="button"].small, + + button.small, + + .button.small { + + font-size: 0.6em; + + } + + + + input[type="submit"].large, + + input[type="reset"].large, + + input[type="button"].large, + + button.large, + + .button.large { + + font-size: 1em; + + } + + + + input[type="submit"].primary, + + input[type="reset"].primary, + + input[type="button"].primary, + + button.primary, + + .button.primary { + + box-shadow: none; + + background-color: #585858; + + color: #ffffff !important; + + } + + + + input[type="submit"].primary:hover, + + input[type="reset"].primary:hover, + + input[type="button"].primary:hover, + + button.primary:hover, + + .button.primary:hover { + + background-color: #f2849e; + + } + + + + input[type="submit"].primary:active, + + input[type="reset"].primary:active, + + input[type="button"].primary:active, + + button.primary:active, + + .button.primary:active { + + background-color: #ee5f81; + + } + + + + input[type="submit"].disabled, input[type="submit"]:disabled, + + input[type="reset"].disabled, + + input[type="reset"]:disabled, + + input[type="button"].disabled, + + input[type="button"]:disabled, + + button.disabled, + + button:disabled, + + .button.disabled, + + .button:disabled { + + pointer-events: none; + + opacity: 0.25; + + } + + + +/* Tiles */ + + + + .tiles { + + display: -moz-flex; + + display: -webkit-flex; + + display: -ms-flex; + + display: flex; + + -moz-flex-wrap: wrap; + + -webkit-flex-wrap: wrap; + + -ms-flex-wrap: wrap; + + flex-wrap: wrap; + + margin-left: 0%; + + margin-right: 0%; + + position: relative; + + + + } + + + + .tiles article { + + -moz-transition: -moz-transform 0.5s ease, opacity 0.5s ease; + + -webkit-transition: -webkit-transform 0.5s ease, opacity 0.5s ease; + + -ms-transition: -ms-transform 0.5s ease, opacity 0.5s ease; + + transition: transform 0.5s ease, opacity 0.5s ease; + + position: relative; + + width: 40%; + + /* width: calc(33.33333% - 2.5em); */ + + margin: 0; + + + + } + + + + .tiles article:hover { + + background: #9e8462; + + } + + + + .tiles article.style1{ + + border: 10px solid #E4AD9C; + + background: #000; + + border-radius: 50px; + + margin-right: 0; + + margin-left: 5em; + + -moz-transition: background 0.2s ease-in-out; + + -webkit-transition: background 0.2s ease-in-out; + + -ms-transition: background 0.2s ease-in-out; + + transition: background 0.2s ease-in-out; + + } + + + + .tiles article.style2{ + + margin-left: 5%; + + background: #000; + + margin-left: 0; + + margin-right: 5em; + + border-radius: 50px; + + border: 10px solid #9e8462; + + -moz-transition: background 0.2s ease-in-out; + + -webkit-transition: background 0.2s ease-in-out; + + -ms-transition: background 0.2s ease-in-out; + + transition: background 0.2s ease-in-out; + + } + + + + .tiles article.style1:hover{ + + background: #E4AD9C; + + } + + + + .tiles article.style2:hover{ + + background: #9e8462; + + } + + + + .tiles article > .image { + + -moz-transition: -moz-transform 0.5s ease; + + -webkit-transition: -webkit-transform 0.5s ease; + + -ms-transition: -ms-transform 0.5s ease; + + transition: transform 0.5s ease; + + position: relative; + + display: block; + + width: 100%; + + opacity: 0.3; + + border-radius: 30px; + + overflow: hidden; + + } + + + + .tiles article > .image img { + + display: block; + + width: 100%; + + } + + + + .tiles article > .image:before { + + pointer-events: none; + + -moz-transition: background-color 0.5s ease, opacity 0.5s ease; + + -webkit-transition: background-color 0.5s ease, opacity 0.5s ease; + + -ms-transition: background-color 0.5s ease, opacity 0.5s ease; + + transition: background-color 0.5s ease, opacity 0.5s ease; + + content: ''; + + display: block; + + position: absolute; + + top: 0; + + left: 0; + + width: 100%; + + height: 100%; + + opacity: 1.0; + + z-index: 1; + + opacity: 0.8; + + } + + + + .tiles article > .image:after { + + pointer-events: none; + + -moz-transition: opacity 0.5s ease; + + -webkit-transition: opacity 0.5s ease; + + -ms-transition: opacity 0.5s ease; + + transition: opacity 0.5s ease; + + content: ''; + + display: block; + + position: absolute; + + top: 0; + + left: 0; + + width: 100%; + + height: 100%; + + /*background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='100' height='100' viewBox='0 0 100 100' preserveAspectRatio='none'%3E%3Cstyle%3Eline %7B stroke-width: 0.25px%3B stroke: %23ffffff%3B %7D%3C/style%3E%3Cline x1='0' y1='0' x2='100' y2='100' /%3E%3Cline x1='100' y1='0' x2='0' y2='100' /%3E%3C/svg%3E");*/ + + background-position: center; + + background-repeat: no-repeat; + + background-size: 100% 100%; + + opacity: 0.25; + + z-index: 2; + + } + + + + .tiles article > a { + + display: -moz-flex; + + display: -webkit-flex; + + display: -ms-flex; + + display: flex; + + -moz-flex-direction: column; + + -webkit-flex-direction: column; + + -ms-flex-direction: column; + + flex-direction: column; + + -moz-align-items: center; + + -webkit-align-items: center; + + -ms-align-items: center; + + align-items: center; + + -moz-justify-content: center; + + -webkit-justify-content: center; + + -ms-justify-content: center; + + justify-content: center; + + -moz-transition: background-color 0.5s ease, -moz-transform 0.5s ease; + + -webkit-transition: background-color 0.5s ease, -webkit-transform 0.5s ease; + + -ms-transition: background-color 0.5s ease, -ms-transform 0.5s ease; + + transition: background-color 0.5s ease, transform 0.5s ease; + + position: absolute; + + top: 0; + + left: 0; + + width: 100%; + + height: 100%; + + padding: 3em; + + border-radius: 4px; + + border-bottom: 0; + + color: #ffffff; + + text-align: center; + + text-decoration: none; + + z-index: 3; + + } + + + + .tiles article > a > :last-child { + + margin: 0; + + } + + + + .tiles article > a:hover { + + color: #ffffff !important; + + } + + + + .tiles article > a h2 { + + font-size: 52px; + + font-family: 'Abril Fatface', cursive; + + margin: 0; + + } + + + + .tiles article > a .content { + + -moz-transition: max-height 0.5s ease, opacity 0.5s ease; + + -webkit-transition: max-height 0.5s ease, opacity 0.5s ease; + + -ms-transition: max-height 0.5s ease, opacity 0.5s ease; + + transition: max-height 0.5s ease, opacity 0.5s ease; + + width: 100%; + + max-height: 0; + + line-height: 1.5; + + margin-top: 0.35em; + + opacity: 0; + + } + + + + .tiles article > a .content > :last-child { + + margin-bottom: 0; + + } + + + + .tiles article.style1 > .image:before { + + background-image: url(../../assets/img/beauty.jpg); + + background-size: cover; + + background-color: #efae9c; + + } + + + + .tiles article.style2 > .image:before { + + background-size: cover; + + background-image: url(../../assets/img/barber.jpg); + + background-color: #a16d58; + + } + + + + body:not(.is-touch) .tiles article:hover > .image { + + -moz-transform: scale(1.1); + + border-radius: 50px; + + -webkit-transform: scale(1.1); + + -ms-transform: scale(1.1); + + transform: scale(1.1); + + } + + + + body:not(.is-touch) .tiles article:hover > .image:before { + + background-color: #333333; + + opacity: 0.35; + + } + + + + body:not(.is-touch) .tiles article:hover > .image:after { + + opacity: 0; + + } + + + + body:not(.is-touch) .tiles article:hover .content { + + max-height: 15em; + + opacity: 1; + + } + + + + * + .tiles { + + margin-top: 3em; + + } + + + + body.is-preload .tiles article { + + -moz-transform: scale(0.9); + + -webkit-transform: scale(0.9); + + -ms-transform: scale(0.9); + + transform: scale(0.9); + + opacity: 0; + + } + + + + body.is-touch .tiles article .content { + + max-height: 15em; + + opacity: 1; + + } + + + + @media screen and (max-width: 1280px) { + + + + .tiles { + + margin: -1.25em 0 0 -1.25em; + + } + + + + .tiles article { + + width: calc(33.33333% - 1.25em); + + margin: 1.25em 0 0 1.25em; + + } + + + + } + + + + @media screen and (max-width: 980px) { + + + + .tiles { + + margin: -2.5em 0 0 -2.5em; + + } + + + + .tiles article { + + width: calc(50% - 2.5em); + + margin: 2.5em 0 0 2.5em; + + } + + + + } + + + + @media screen and (max-width: 736px) { + + + + .tiles { + + margin: -1.25em 0 0 -1.25em; + + } + + + + .tiles article { + + width: calc(50% - 1.25em); + + margin: 1.25em 0 0 1.25em; + + } + + + + .tiles article:hover > .image { + + -moz-transform: scale(1.0); + + -webkit-transform: scale(1.0); + + -ms-transform: scale(1.0); + + transform: scale(1.0); + + } + + + + } + + + + @media screen and (max-width: 480px) { + + + + .tiles { + + margin: 45px; + + } + + + + .tiles article { + + width: 100%; + + margin: 1.25em 0 2em 0; + + } + + + + .tiles article > a h2 {font-size: 24px;} + + + + } + + + +/* Header */ + + + + #header { + + padding: 8em 0 0.1em 0 ; + + text-align: center; + + } + + + +.inner header{ + + margin-top: 100px; + + text-align: center; + +} + + + +.header-logo{ + + width: 20%; + +} + + + + #header .logo { + + display: block; + + border-bottom: 0; + + color: inherit; + + font-weight: 900; + + letter-spacing: 0.35em; + + margin: 0 0 2.5em 0; + + text-decoration: none; + + text-transform: uppercase; + + display: inline-block; + + } + + + + #header .logo > * { + + display: inline-block; + + vertical-align: middle; + + } + + + + #header .logo .symbol { + + margin-right: 0.65em; + + } + + + + #header .logo .symbol img { + + display: block; + + width: 2em; + + height: 2em; + + } + + + + #header nav { + + position: fixed; + + right: 2em; + + top: 2em; + + z-index: 10000; + + } + + + + #header nav ul { + + display: -moz-flex; + + display: -webkit-flex; + + display: -ms-flex; + + display: flex; + + -moz-align-items: center; + + -webkit-align-items: center; + + -ms-align-items: center; + + align-items: center; + + list-style: none; + + margin: 0; + + padding: 0; + + } + + + + #header nav ul li { + + display: block; + + padding: 0; + + } + + + + #header nav ul li a { + + display: block; + + position: relative; + + height: 3em; + + line-height: 3em; + + padding: 0 1.5em; + + background-color: rgba(255, 255, 255, 0.5); + + border-radius: 4px; + + border: 0; + + font-size: 0.8em; + + font-weight: 900; + + letter-spacing: 0.35em; + + text-transform: uppercase; + + } + + + + #header nav ul li a[href="#menu"] { + + -webkit-tap-highlight-color: transparent; + + width: 4em; + + text-indent: 4em; + + font-size: 1em; + + overflow: hidden; + + padding: 0; + + white-space: nowrap; + + } + + + + #header nav ul li a[href="#menu"]:before, #header nav ul li a[href="#menu"]:after { + + -moz-transition: opacity 0.2s ease; + + -webkit-transition: opacity 0.2s ease; + + -ms-transition: opacity 0.2s ease; + + transition: opacity 0.2s ease; + + content: ''; + + display: block; + + position: absolute; + + top: 0; + + left: 0; + + width: 100%; + + height: 100%; + + background-position: center; + + background-repeat: no-repeat; + + background-size: 2em 2em; + + } + + + + #header nav ul li a[href="#menu"]:before { + + background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='100' height='100' viewBox='0 0 100 100' preserveAspectRatio='none'%3E%3Cstyle%3Eline %7B stroke-width: 8px%3B stroke: %23f2849e%3B %7D%3C/style%3E%3Cline x1='0' y1='25' x2='100' y2='25' /%3E%3Cline x1='0' y1='50' x2='100' y2='50' /%3E%3Cline x1='0' y1='75' x2='100' y2='75' /%3E%3C/svg%3E"); + + opacity: 0; + + } + + + + #header nav ul li a[href="#menu"]:after { + + background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='100' height='100' viewBox='0 0 100 100' preserveAspectRatio='none'%3E%3Cstyle%3Eline %7B stroke-width: 8px%3B stroke: %23585858%3B %7D%3C/style%3E%3Cline x1='0' y1='25' x2='100' y2='25' /%3E%3Cline x1='0' y1='50' x2='100' y2='50' /%3E%3Cline x1='0' y1='75' x2='100' y2='75' /%3E%3C/svg%3E"); + + opacity: 1; + + } + + + + #header nav ul li a[href="#menu"]:hover:before { + + opacity: 1; + + } + + + + #header nav ul li a[href="#menu"]:hover:after { + + opacity: 0; + + } + + + + @media screen and (max-width: 736px) { + + + + #header { + + padding: 4em 0 0.1em 0 ; + + } + + + + #header nav { + + right: 0.5em; + + top: 0.5em; + + } + + + + #header nav ul li a[href="#menu"]:before, #header nav ul li a[href="#menu"]:after { + + background-size: 1.5em 1.5em; + + } + + + + } + + + + + + @media screen and (max-width: 480px) { + + + + .header-logo{ + + width: 50%; + + margin-bottom: 0em; + +} + + + +} + + + + + + + +/* Menu */ + + + + #wrapper { + + -moz-transition: opacity 0.45s ease; + + -webkit-transition: opacity 0.45s ease; + + -ms-transition: opacity 0.45s ease; + + transition: opacity 0.45s ease; + + opacity: 1; + + } + + + + #menu { + + -moz-transform: translateX(22em); + + -webkit-transform: translateX(22em); + + -ms-transform: translateX(22em); + + transform: translateX(22em); + + -moz-transition: -moz-transform 0.45s ease, visibility 0.45s; + + -webkit-transition: -webkit-transform 0.45s ease, visibility 0.45s; + + -ms-transition: -ms-transform 0.45s ease, visibility 0.45s; + + transition: transform 0.45s ease, visibility 0.45s; + + position: fixed; + + top: 0; + + right: 0; + + width: 22em; + + max-width: 80%; + + height: 100%; + + -webkit-overflow-scrolling: touch; + + background: #585858; + + color: #ffffff; + + cursor: default; + + visibility: hidden; + + z-index: 10002; + + } + + + + #menu > .inner { + + -moz-transition: opacity 0.45s ease; + + -webkit-transition: opacity 0.45s ease; + + -ms-transition: opacity 0.45s ease; + + transition: opacity 0.45s ease; + + -webkit-overflow-scrolling: touch; + + position: absolute; + + top: 0; + + left: 0; + + width: 100%; + + height: 100%; + + padding: 2.75em; + + opacity: 0; + + overflow-y: auto; + + } + + + + #menu > .inner > ul { + + list-style: none; + + margin: 0 0 1em 0; + + padding: 0; + + } + + + + #menu > .inner > ul > li { + + padding: 0; + + border-top: solid 1px rgba(255, 255, 255, 0.15); + + } + + + + #menu > .inner > ul > li a { + + display: block; + + padding: 1em 0; + + line-height: 1.5; + + border: 0; + + color: inherit; + + } + + + + #menu > .inner > ul > li:first-child { + + border-top: 0; + + margin-top: -1em; + + } + + + + #menu > .close { + + -moz-transition: opacity 0.45s ease, -moz-transform 0.45s ease; + + -webkit-transition: opacity 0.45s ease, -webkit-transform 0.45s ease; + + -ms-transition: opacity 0.45s ease, -ms-transform 0.45s ease; + + transition: opacity 0.45s ease, transform 0.45s ease; + + -moz-transform: scale(0.25) rotate(180deg); + + -webkit-transform: scale(0.25) rotate(180deg); + + -ms-transform: scale(0.25) rotate(180deg); + + transform: scale(0.25) rotate(180deg); + + -webkit-tap-highlight-color: transparent; + + display: block; + + position: absolute; + + top: 2em; + + left: -6em; + + width: 6em; + + text-indent: 6em; + + height: 3em; + + border: 0; + + font-size: 1em; + + opacity: 0; + + overflow: hidden; + + padding: 0; + + white-space: nowrap; + + } + + + + #menu > .close:before, #menu > .close:after { + + -moz-transition: opacity 0.2s ease; + + -webkit-transition: opacity 0.2s ease; + + -ms-transition: opacity 0.2s ease; + + transition: opacity 0.2s ease; + + content: ''; + + display: block; + + position: absolute; + + top: 0; + + left: 0; + + width: 100%; + + height: 100%; + + background-position: center; + + background-repeat: no-repeat; + + background-size: 2em 2em; + + } + + + + #menu > .close:before { + + background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='100' height='100' viewBox='0 0 100 100' preserveAspectRatio='none'%3E%3Cstyle%3Eline %7B stroke-width: 8px%3B stroke: %23f2849e%3B %7D%3C/style%3E%3Cline x1='15' y1='15' x2='85' y2='85' /%3E%3Cline x1='85' y1='15' x2='15' y2='85' /%3E%3C/svg%3E"); + + opacity: 0; + + } + + + + #menu > .close:after { + + background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='100' height='100' viewBox='0 0 100 100' preserveAspectRatio='none'%3E%3Cstyle%3Eline %7B stroke-width: 8px%3B stroke: %23585858%3B %7D%3C/style%3E%3Cline x1='15' y1='15' x2='85' y2='85' /%3E%3Cline x1='85' y1='15' x2='15' y2='85' /%3E%3C/svg%3E"); + + opacity: 1; + + } + + + + #menu > .close:hover:before { + + opacity: 1; + + } + + + + #menu > .close:hover:after { + + opacity: 0; + + } + + + + @media screen and (max-width: 736px) { + + + + #menu { + + -moz-transform: translateX(16.5em); + + -webkit-transform: translateX(16.5em); + + -ms-transform: translateX(16.5em); + + transform: translateX(16.5em); + + width: 16.5em; + + } + + + + #menu > .inner { + + padding: 2.75em 1.5em; + + } + + + + #menu > .close { + + top: 0.5em; + + left: -4.25em; + + width: 4.25em; + + text-indent: 4.25em; + + } + + + + #menu > .close:before, #menu > .close:after { + + background-size: 1.5em 1.5em; + + } + + + + } + + + + body.is-menu-visible #wrapper { + + pointer-events: none; + + cursor: default; + + opacity: 0.25; + + } + + + + body.is-menu-visible #menu { + + -moz-transform: translateX(0); + + -webkit-transform: translateX(0); + + -ms-transform: translateX(0); + + transform: translateX(0); + + visibility: visible; + + } + + + + body.is-menu-visible #menu > * { + + opacity: 1; + + } + + + + body.is-menu-visible #menu .close { + + -moz-transform: scale(1.0) rotate(0deg); + + -webkit-transform: scale(1.0) rotate(0deg); + + -ms-transform: scale(1.0) rotate(0deg); + + transform: scale(1.0) rotate(0deg); + + opacity: 1; + + } + + + +/* Main */ + + + + #main { + + padding: 0em 0 6em 0 ; + + } + + + + @media screen and (max-width: 736px) { + + + + #main { + + padding: 0em 0 4em 0 ; + + } + + + + } + + + +/* Footer */ + + + + #footer { + + padding: 5em 0 6em 0 ; + + background-color: #f6f6f6; + + } + + + + #footer > .inner { + + display: -moz-flex; + + display: -webkit-flex; + + display: -ms-flex; + + display: flex; + + -moz-flex-wrap: wrap; + + -webkit-flex-wrap: wrap; + + -ms-flex-wrap: wrap; + + flex-wrap: wrap; + + -moz-flex-direction: row; + + -webkit-flex-direction: row; + + -ms-flex-direction: row; + + flex-direction: row; + + } + + + + #footer > .inner > * > :last-child { + + margin-bottom: 0; + + } + + + + #footer > .inner section:nth-child(1) { + + width: calc(66% - 2.5em); + + margin-right: 2.5em; + + } + + + + #footer > .inner section:nth-child(2) { + + width: calc(33% - 2.5em); + + margin-left: 2.5em; + + } + + + + #footer > .inner .copyright { + + width: 100%; + + padding: 0; + + margin-top: 5em; + + list-style: none; + + font-size: 0.8em; + + color: rgba(88, 88, 88, 0.5); + + } + + + + #footer > .inner .copyright a { + + color: inherit; + + } + + + + #footer > .inner .copyright li { + + display: inline-block; + + border-left: solid 1px rgba(88, 88, 88, 0.15); + + line-height: 1; + + padding: 0 0 0 1em; + + margin: 0 0 0 1em; + + } + + + + #footer > .inner .copyright li:first-child { + + border-left: 0; + + padding-left: 0; + + margin-left: 0; + + } + + + + @media screen and (max-width: 1280px) { + + + + #footer { + + padding: 5em 0 3em 0 ; + + } + + + + #footer > .inner section:nth-child(1) { + + width: calc(66% - 1.25em); + + margin-right: 1.25em; + + } + + + + #footer > .inner section:nth-child(2) { + + width: calc(33% - 1.25em); + + margin-left: 1.25em; + + } + + + + } + + + + @media screen and (max-width: 980px) { + + + + #footer > .inner section:nth-child(1) { + + width: 66%; + + margin-right: 0; + + } + + + + #footer > .inner section:nth-child(2) { + + width: calc(33% - 2.5em); + + margin-left: 2.5em; + + } + + + + } + + + + @media screen and (max-width: 736px) { + + + + #footer { + + padding: 3em 0 1em 0 ; + + } + + + + #footer > .inner { + + -moz-flex-direction: column; + + -webkit-flex-direction: column; + + -ms-flex-direction: column; + + flex-direction: column; + + } + + + + #footer > .inner section:nth-child(1) { + + width: 100%; + + margin-right: 0; + + margin: 3em 0 0 0; + + } + + + + #footer > .inner section:nth-child(2) { + + -moz-order: -1; + + -webkit-order: -1; + + -ms-order: -1; + + order: -1; + + width: 100%; + + margin-left: 0; + + } + + + + #footer > .inner .copyright { + + margin-top: 3em; + + } + + + + } + + + + @media screen and (max-width: 480px) { + + + + #footer > .inner .copyright { + + margin-top: 3em; + + } + + + + #footer > .inner .copyright li { + + border-left: 0; + + padding-left: 0; + + margin: 0.75em 0 0 0; + + display: block; + + line-height: inherit; + + } + + + + #footer > .inner .copyright li:first-child { + + margin-top: 0; + + } + + + + } + + + +/* Wrapper */ + + + + #wrapper > * > .inner { + + width: 100%; + + max-width: 68em; + + margin: 0 auto; + + padding: 0 2.5em; + + } + + + + @media screen and (max-width: 736px) { + + + + #wrapper > * > .inner { + + padding: 0 1.25em; + + } + + + + } + + + + + +/* Responsive items */ + + + + + + + + @media screen and (max-width: 1280px) { + + + + .header-logo { + + width: 30%; + + margin-bottom: 2em; + + } + + + + .tiles{ + + margin:0; + + text-align: center; + + display: flex; + + } + + + + .tiles article.style1 { + + position: absolute; + + right: 0; + + margin-left: 0; + + + + } + + .tiles article.style2 { + + margin-right: 0; + + } + + + + + + .tiles article > a h2 { + + font-size: 36px; + + } + + + + + + } + + + + @media screen and (max-width: 980px) { + + + + + + + + } + + + + @media screen and (max-width: 736px) { + + .tiles article > a h2 { + + font-size: 30px; + + } + + + + .header-logo { + + width: 70%; + + + + + + } + + + + @media screen and (max-width: 480px) { + + + + .tiles article.style1, .tiles article.style2{ + + border-radius: 35px; + + margin-left: 2em; + + margin-right: 2em; + + } + + + + .tiles article.style1{ + + position: relative; + + border: 7px solid #E4AD9C; + + } + + + + .tiles article.style2{ + + border: 7px solid #9e8462; + + } + + + + } + + + + + + + + + + + + + + + + + + + diff --git a/assets/css/modules.css b/assets/css/modules.css new file mode 100755 index 0000000..78d38cc --- /dev/null +++ b/assets/css/modules.css @@ -0,0 +1,982 @@ +.logo-container { + width: 340px; + margin: 0px auto; + text-align: center; + margin-top: 30px; +} + +.main-container { + text-align: center; + padding: 15px; +} + +.login-container { + display: inline-block; + margin: 0 auto; + padding: 10px; + border: 1px solid #c9c9c9; + box-shadow: 5px 5px 5px rgba(0,0,0,0.15); + width: 400px; +} + +.login-row { + margin: 0 auto; + text-align: center; + max-width: 450px; +} + +.login-row input[type='text'], +.login-row input[type='password']{ + width: 300px; + display: inline-block; + color:#cacaca; +} + +.formRow input[type='text']:focus, +.login-row input[type='text']:focus, +.login-row input[type='password']:focus { + border-bottom-color: #9e8462; + box-shadow: inset 0 -1px 0 0 #9e8462; +} + +.login-row input[type='text']::placeholder, +.login-row input[type='password']::placeholder { + color: #585858; + opacity: 1; /* Firefox */ + } + + .login-row input[type='text']::-ms-input-placeholder, + .login-row input[type='password']::-ms-input-placeholder { /* Edge 12 -18 */ + color: #585858; + } + +.login-labels { + width: 35px; + display: inline-block; + text-align: right; + margin-top: 10px; + padding-right: 15px; +} + +.login-labels .fas{ + font-size:20px; + color:lightgray; +} + +.loginform-text, .password { + padding: 5px; + width: 250px; +} + +label { + width: 200px; + display: inline-block; + height: 30px; +} + +.button { + text-decoration: none; + text-transform: uppercase; + color: white; + max-width: 250px; + border-radius: 35px; + display: block; + margin: 20px auto; + padding: 0 10px; + border: 0; + outline: 0; + cursor: pointer; + background-color: #222260; + height:30px; +} + +.cancelButton { + text-decoration: none; + text-transform: uppercase; + color: white; + max-width: 250px; + border-radius: 5px; + display: inline-block; + margin: 20px auto; + padding: 9px 51px; + border: 0; + outline: 0; + cursor: pointer; + color: #585858; + height: auto; + text-align: center; + min-width: 150px; + border: 0; + box-shadow: inset 0 0 0 2px #585858!important; + position: relative; + top: 0px; + font-size: 0.8em; + font-weight: 900; + /* height: 3.5em; */ + letter-spacing: 0.35em; + line-height: 2.2em; + margin-left: 10px; +} + +.cancelButton:hover { + color: #9e8462!important; + box-shadow: inset 0 0 0 2px #9e8462!important; +} + +.submitBtn { + text-decoration: none; + text-transform: uppercase; + color: white; + border-radius: 5px; + display: inline-block; + margin: 20px auto; + padding: 9px 51px; + border: 0; + outline: 0; + cursor: pointer; + color: #585858; + height: auto; + text-align: center; + min-width: 150px; + border: 0; + box-shadow: inset 0 0 0 2px #585858!important; + position: relative; + top: 0px; + font-size: 0.8em; + font-weight: 900; + /* height: 3.5em; */ + letter-spacing: 0.35em; + line-height: 2.2em; + margin-left: 10px; +} + +.submitBtn:hover { + color: #9e8462!important; + box-shadow: inset 0 0 0 2px #9e8462!important; +} + +.message{ + margin: 0 0 10px 0; +} + +.error{ + color:red; +} +.success{ + color:green; +} +.siteName { + text-align: center; + font-size: 20px; + text-transform: uppercase; + font-weight: normal; + margin-bottom:20px; +} + +.loginSubText { + text-align: center; + margin-top: 20px; + font-size: 13px; +} + +.siteHeaderContainer { + height: 60px; + background-color: #121315; + position: fixed; + top: 0; + left: 0; + right: 0; + z-index: 1000; +} + +.siteFooterContainer { + height: 50px; + background-color: #b1c1e8; + color:#222260; + position: fixed; + bottom: 0; + left: 0; + right: 0; +} + +.siteFooterContainer span{ + font-size: 13px; + color: #222260; + display: block; + text-align: center; + margin-top: 14px; +} + +.siteFooterContainer span a{ + font-size: 13px; + color: #222260; + text-decoration: none; +} + +.siteFooterContainer span a:hover{ + font-size: 13px; + color: #222260; + text-decoration: none; +} + +.controlBar{ + height: 62px; + position: fixed; + top: 88px; + left: 0; + right: 0; + text-align: center; +} + +.mainContentContainer { + text-align: center; + position: fixed; + top: 150px; + left: 0; + right: 0; + bottom: 33px; + overflow-y: auto; +} + +.menuItem { + display: block; + padding: 10px; + background-color: #edffd1; + width: 200px; + text-align: center; + text-decoration: none; + color: white; + margin: 0 auto; + font-size: 18px; + margin-top: 20px; + color:#5f900b; +} + +.menuItem:hover { + display: block; + padding: 10px; + background-color: #c7ec61; + width: 200px; + text-align: center; + text-decoration: none; + color: white; + margin: 0 auto; + font-size: 18px; + margin-top: 20px; + color:white; +} + +.errorMessage{ + padding: 10px; + max-width: 400px; + border: 1px solid #8EC641; + border-left: 7px solid red; + text-align: left; + margin: 30px auto; + background-color: #EEF7E2; +} + +.successMessage{ + padding: 10px; + max-width: 400px; + border: 1px solid #8EC641; + border-left: 7px solid green; + text-align: left; + margin: 30px auto; + background-color: #EEF7E2; +} + +.pageButton{ + text-decoration: none; + text-transform: uppercase; + color: white; + max-width: 250px; + border-radius: 35px; + display: block; + margin: 0 auto; + padding: 10px 10px; + border: 0; + outline: 0; + cursor: pointer; + background-color: #222260; + /* height: 30px; */ + text-align: center; +} + +.mainTitle{ + font-size: 20px; + text-transform: uppercase; + color:#4864ad; + text-align: center; + margin: 40px auto; +} + +.formTitle{ + font-size: 15px; + text-transform: uppercase; + color: gray; + display: block; + text-align: center; + margin: 0 auto; + margin-top: 20px; + width: 200px; + height: 30px; + text-align: center; +} + +.formInputBox { + text-align: center; + font-size: 18px; + padding: 5px; + border: 1px solid lightgray; + /*height: 25px;*/ + height: 39px; + max-width: 490px; + margin: 10px auto; + display: block; + width:100%; +} + + +.formTextarea { + text-align: center; + font-size: 15px; + padding: 5px; + border: 1px solid lightgray; + height: 100px; + min-height: 100px; + max-height: 100px; + max-width: 490px; + margin: 10px auto; + display: block; + width: 500px; + min-width: 500px; + max-width: 500px; + flex-wrap: wrap; + text-align: justify; + white-space: normal; +} + +.longText{ + display: block; /* or inline-block */ + text-overflow: ellipsis; + word-wrap: break-word; + overflow: hidden; + max-height: 3.6em; + line-height: 1.8em; + max-width:150px; + white-space: nowrap; + margin: 0 auto; +} + + +.formDropdownBox { + text-align: center; + line-height: 35px; + font-size: 18px; + padding: 5px 0; + border: 1px solid lightgray; + height: 35px; + max-width: 500px; + display: block; + margin: 0 auto; + text-align-last: center; + width:100%; +} +.formRow { + margin-bottom:20px; +} + + + +.textAreaFormRow { + margin-bottom:20px; + max-width:500px; + margin:0 auto; +} + + + +.submitButton { + text-decoration: none; + text-transform: uppercase; + color: white; + max-width: 250px; + border-radius: 35px; + display: block; + margin: 20px auto; + padding: 12px 20px; + border: 0; + outline: 0; + cursor: pointer; + background-color: #9e8462; + height: auto; + text-align: center; + min-width:150px; +} + +.submitButton:hover { + color: #9e8462!important; + box-shadow: inset 0 0 0 2px #9e8462!important; +} + +.formRow{ + text-align: center; +} + + +.counterTable input[type=number]{ + text-align: right; +} + +.fa-trash-alt{ + color:#9e8462; +} + +.fa-user-edit{ + color:#9e8462; +} + +.headerLogo { + text-align:center; + height: 55px; + padding: 5px 0 0 0; +} + +.headerLogo object{ + height: 50px; +} + +.mobileMenu { + display:none; +} +.profileMenu { + position: absolute; + top: 5px; + right: 5px; +} + +.desktopMenu { + position: absolute; + top: 0px; + left: 0px; +} + +#hambiMenu { + font-size: 30px; + color: #fff; +} + +.dropbtn, .dropbtn-mobile, .dropbtn-desktop, .dropbtn-profile { + background-color: #050505; + color: #9e8462!important; + padding: 14px; + font-size: 14px; + letter-spacing: 0.1em; + border: none; + height: 60px; + line-height: 0; + box-shadow: none; + font-weight: normal; +} + +.dropbtn-desktop{ + height:60px; +} + +.dropbtn-profile{ + height:50px; + width:50px; +} + +.dropdown, +.dropdown-mobile, +.dropdown-desktop, +.dropdown-profile { + position: relative; + display: inline-block; + color: #9e8462; +} +.dropdown-mobile{ + position: absolute; + top:0; + left:0; + +} + +.dropdown-content, +.dropdown-content-mobile, +.dropdown-content-desktop, +.dropdown-content-profile { + display: none; + position: absolute; + /*background-color: #f1f1f1;*/ + background-color: black; + min-width: 160px; + /*box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);*/ + box-shadow: 0px 8px 16px 0px rgba(0,62,49,0.2); + border: 1px solid #9e8462; + z-index: 1; +} +.dropdown-content-profile { + right: 0; +} + +.dropdown-content a, +.dropdown-content-mobile a, +.dropdown-content-desktop a, +.dropdown-content-profile a { + color: #9e8462; + padding: 12px 16px; + text-decoration: none; + display: block; + font-size:15px; + border-bottom: 1px solid #9e8462; +} + +.dropdown-content a:last-child, +.dropdown-content-mobile a:last-child, +.dropdown-content-desktop a:last-child, +.dropdown-content-profile a:last-child { + border-bottom: 0; +} + +.dropdown-content a:hover, +.dropdown-content-mobile a:hover, +.dropdown-content-desktop a:hover, +.dropdown-content-profile a:hover { + /*background-color: #ddd;*/ + background-color: #9e8462; + color:#050505!important; +} + + +.dropdown:hover .dropdown-content, +.dropdown-mobile:hover .dropdown-content-mobile, +.dropdown-desktop:hover .dropdown-content-desktop, +.dropdown-profile:hover .dropdown-content-profile { + display: block; + line-height: auto; +} + +.dropdown:hover .dropbtn, +.dropdown-mobile:hover .dropbtn-mobile, +.dropdown-desktop:hover .dropbtn-desktop{ + box-shadow: none; + background-color: #9e8462; + color: #050505 !important; + box-shadow: inset 0 0 0 1px #050505; +} + +.dropdown-profile:hover .dropbtn-profile { + box-shadow: none; +} +.dropbtn-profile{ + border-radius:24px; + background-size:100% 100%; + background-position:center center; + border: 2px solid #eef7e2; +} + +.welcomeText { + text-align: center; + color: #ffffff; + line-height: 60px; +} + +.infoBar{ + background-color: #313131; + padding: 5px; + font-size: 13px; + color: #cacaca; + text-align: center; +} + +.console { + position: fixed; + font-family: monospace,monospace; + color: #fff; + width: calc(100% - 3em); + max-width: 100%; + max-height: calc(100% - 3em); + margin: 1em 1em; + padding-top: 0.5em; + padding-bottom: 0.5em; + background: rgba(0, 0, 0, 0.2); + border-radius: 0.5em; + box-shadow: 0 0.75em 3em rgba(50, 50, 50, 0.5); + z-index: 100; + line-height: 1.5; + position: relative; + bottom: 45px; + } + + .console-input { + font-family: monospace,monospace; + background-color: transparent; + border: none; + outline: none; + color: rgb(31, 31, 31); + margin: 0; + padding: 0; + box-sizing: border-box; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + min-width: calc(100% - 2em); + resize: none; + background-color: #cacaca; + font-size: 13px; + } + + .console-input:before { + content: '> '; + color: #FC3565; + vertical-align: top; + } + + .output-cmd:before { + content: '> '; + color: #FC3565; + vertical-align: top; + } + .output-text:before { + content: '> '; + color: #5F8787; + font-weight: 600 !important; + vertical-align: top; + } + + .output-text, + .output-cmd { + width: 100%; + display: block; + } + + .console-inner { + padding: 0.3em 1.1em; + } + + .output-text, + .output-cmd { + display: block; + white-space: pre; + } + + #outputs div { + opacity: 0.85; + } + + #outputs div div { + color: #46f01d; + opacity: 0.8; + text-decoration: none; + } + + #outputs a { + color: #46f01d; + opacity: 0.8; + text-decoration: underline; + } + + .console-inner .output-text#ready { + color: #3df5b8; + font-style: italic; + opacity: 0.75; + } + + .particles-js-canvas-el { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + z-index: 0; + } + + .loginfoFile{ + height:25px; +} + +.separator{ + color:lightgray; +} + +.viewPasswordBox{ + display: inline; + position: absolute; + top: 10px; + right: -251px; + background-color: lightgray; + width: 37px; + height: 37px; +} +.viewPasswordBox > i{ + line-height: 38px; + font-size: 22px; +} + +.error{ + color:red !important; +} + +.success{ + color:rgb(15, 167, 15)!important; +} + +.userIsAvailableBox{ + display: inline; + position: absolute; + top: 10px; + right: -251px; + width: 37px; + height: 37px; +} + +.userIsAvailableBox i{ + color:gray; + line-height: 38px; + font-size: 22px; +} + +.attachmentsContainer{ + max-width:512px; + margin:0 auto; +} + +.attachmentsContainer > a{ + max-width:512px; + display: block; + text-align: center; + margin:0 auto; + text-decoration: none; +} + + +.tableClass{ + table-layout: auto; + border-collapse: collapse; + text-align: center; + margin: 30px auto; +} + +.tableClass td{ + border:1px solid #9e8462; + padding:5px; + font-size:15px; + color:#cacaca; + text-align: center; + vertical-align: middle; +} + +.tableClass td input{ + width:20px; + height:20px; +} + +::placeholder { /* Chrome, Firefox, Opera, Safari 10.1+ */ + color: lightgray; + opacity: 1; /* Firefox */ + } + + :-ms-input-placeholder { /* Internet Explorer 10-11 */ + color: lightgray; + } + + ::-ms-input-placeholder { /* Microsoft Edge */ + color: lightgray; + } + + .tableContainer{ + text-align: center; + } + + .tableClass{ + width:95%; + } + + .tableClass tr{ + border:1px solid #9e8462; + } + + .tableClass tr:nth-child(1){ + background-image: linear-gradient(#fff7ec, #9e8462); + /*background-color:#eeeeee;*/ + } + + .tableClass tr:nth-child(1) td{ + color:black; + border:1px solid #9e8462; + } + + .tableClass th{ + color:black; + border:1px solid #9e8462; + padding:10px; + font-weight: normal; + } + + .userProfileImage{ + height:50px; + width:50px; + background-position: 0 0; + background-repeat: no-repeat; + background-size: 100%; + border-radius:25px; + text-align:center; + } + + .switch { + position: relative; + display: inline-block; + width: 54px; + height: 25px; + } + + .switch input { + opacity: 0; + width: 0; + height: 0; + } + + .slider { + position: absolute; + cursor: pointer; + top: 0; + left: 0; + right: 0; + bottom: 0; + background-color: #ccc; + -webkit-transition: .4s; + transition: .4s; + } + + .slider:before { + position: absolute; + content: ""; + height: 19px; + width: 20px; + left: 4px; + bottom: 3px; + background-color: white; + -webkit-transition: .4s; + transition: .4s; + } + + input:checked + .slider { + background-color: #9e8462; + } + + input:focus + .slider { + box-shadow: 0 0 1px #9e8462; + } + + input:checked + .slider:before { + -webkit-transform: translateX(26px); + -ms-transform: translateX(26px); + transform: translateX(26px); + } + + /* Rounded sliders */ + .slider.round { + border-radius: 20px; + } + + .slider.round:before { + border-radius: 50%; + } + +.tableTitle{ + margin: 15px; + text-transform: uppercase; + color: gray; +} + +.gray{ + color:lightgray; +} + +.formRow:focus, input[type="password"]:focus, input[type="email"]:focus, input[type="tel"]:focus, select:focus, textarea:focus { + border-bottom-color: #9e8462; + box-shadow: inset 0 -1px 0 0 #9e8462; +} + +.tableClass > tbody > tr:nth-child(odd){ + background-color: rgba(0, 0, 0, 0.3); +} + +.tableClass > tbody > tr > td > input[type="checkbox"], +.tableClass > tbody > tr > td > input[type="radio"] { + -moz-appearance: auto; + -webkit-appearance: auto; + -ms-appearance: auto; + appearance: auto; + display: block; + float: none; + margin-right: 0; + opacity: 1; + width: 1.2em; + z-index: -1; + margin:0 auto; +} + +.pageTitle { + font-size:25px; + text-align:center; + text-transform:uppercase; + margin-bottom:15px; + text-decoration: none +} + +.tableInTable{ + table-layout: auto; + border-collapse: collapse; + text-align: center; + margin:0; +} + +.tableClass > tbody > tr{ + border:1px solid #9e8462; + border-bottom: 5px solid #9e8462 +} + +.tableClass tr:nth-child(1){ + border:1px solid #9e8462; +} + +.tableClass tr:last-child{ + border:1px solid #9e8462; +} + +.tableInTable tr:nth-child(1){ + /*background-image: linear-gradient(#fff7ec, #9e8462);*/ + /*background-color:#eeeeee;*/ + color:black; + border:1px solid #cacaca; +} + +.tableInTable tr:nth-child(1) td{ + color:black; + border:1px solid #cacaca; +} + +.tableInTable > tr > th{ + color:black; + border:1px solid #cacaca; + padding:10px; + font-size:14px; + font-weight: normal; + vertical-align: middle; + text-align: center; +} + +.copyrightText{ + font-size:13px; + background-color: rgb(5, 4, 4); + color:white; + text-align:center; + position:fixed; + bottom:0; + left:0; + right:0; + } \ No newline at end of file diff --git a/assets/css/noscript.css b/assets/css/noscript.css new file mode 100755 index 0000000..3839852 --- /dev/null +++ b/assets/css/noscript.css @@ -0,0 +1,15 @@ +/* + Phantom by Pixelarity + pixelarity.com | hello@pixelarity.com + License: pixelarity.com/license +*/ + +/* Tiles */ + + body.is-preload .tiles article { + -moz-transform: none; + -webkit-transform: none; + -ms-transform: none; + transform: none; + opacity: 1; + } \ No newline at end of file diff --git a/assets/css/responsive.css b/assets/css/responsive.css new file mode 100755 index 0000000..e8407bb --- /dev/null +++ b/assets/css/responsive.css @@ -0,0 +1,95 @@ +/* Small devices (landscape phones, 320px and up) */ +@media (min-width: 320px) { + .totalPanelContainer, #totalPanel { + width: 100%; + max-width:440px; + } + + .bookingPhone, .bookingEmail, .bookingName{ + margin: 0 1em; + width: 92%!important; + padding: 0; + max-width: 500px; + } + + .totalPrice, .totalSelectedTime { + width: 100%; + } + + .serviceTable { + width: 90%!important; + } + + +} + +/* Small devices (landscape phones, 375px and up) */ +@media (min-width: 375px) { + +} + +/* Small devices (landscape phones, 576px and up) */ +@media (min-width: 576px) { + .totalPanelContainer { + width: 95%; + } +} + +/* Medium devices (tablets, 768px and up) */ +@media (min-width: 768px) { + .serviceTable { + width: 90%!important; + } + + .bookingPhone, .bookingEmail, .bookingName{ + width: 100%!important; + margin: 0 auto; + } + + .g-recaptcha { + top: -30px; + } + +} + +/* Large devices (desktops, 992px and up) */ +@media (min-width: 992px) { + #navPanel{ + display:none; + } +} + +/* Extra large devices (large desktops, 1200px and up) */ +@media (min-width: 1200px) { + + +} + +/* Extra large devices (large desktops, 2000px and up) */ +@media (min-width: 2000px) { + + +} + +/* Extra large devices (large desktops, 2500px and up) */ +@media (min-width: 2500px) { + +} + +/* Extra large devices (large desktops, 3000px and up) */ +@media (min-width: 3500px) { + +} + +/* Extra large devices (large desktops, 4500px and up) */ +@media (min-width: 4500px) { + +} + +/* Extra large devices (large desktops, 5000px and up) */ +@media (min-width: 5000px) { + +} + + + diff --git a/assets/css/style.css b/assets/css/style.css new file mode 100755 index 0000000..6d6f956 --- /dev/null +++ b/assets/css/style.css @@ -0,0 +1,625 @@ +.steps-indicator { + right: 0; + bottom: 0; + left: 0; + margin: 0; + padding: 20px 0 0 0; + height: 30px; + list-style: none; +} + +.steps-indicator li { + position: relative; + float: left; + margin: 0; + padding: 0; + padding-top: 10px; + text-align: center; + line-height: 15px; +} + +.steps-indicator.steps-3 li { + width: calc(100%/3); +} + +.steps-indicator li.current, .steps-indicator li.editing { + pointer-events: none; +} + +.steps-indicator { + height: 100px; + position:relative; +} + +.bookingContainer{ + margin:0 auto; + margin-top: 115px; + display:inline-block; + width:700px; + position:relative; +} + +.stepTitleContainer{ + +} + +.stepCircle{ + height:20px; + width:20px; + margin:5px auto; + border-radius:15px; +} + +.activeStep{ + background-color:rgb(9, 94, 13); +} + +.stepLine{ + position:absolute; + top: 47%; + left: 50%; + right: -116px; + z-index: -100; + width: 100%; +} + +.stepTitle{ + text-align:center; + font-size:15px; +} + +.bookingTitle{ + font-size:20px; + text-align: center; + text-transform: uppercase; + margin-bottom:20px; +} + +.bookingTable{ + +} + +.inner{ + text-align: center; +} + +.BookingStepContainer{ + display:none; + position:relative; + min-height: 355px; + margin-bottom: 50px; +} + +#bookingStep1{ + display:block; +} + +.bookingButtonContainer{ + position: absolute; + bottom: 10px; + left: 10px; + right: 10px; + height: 45px; +} + +.bookingButtonContainer button{ + position: absolute; + padding: 15px; + height: auto; + background-color: lightgray; + line-height: 15px; +} + +.leftButton{ + left:0; +} + +.rightButton{ + right:0; +} + +.bookingSubmit{ + position: absolute; + padding: 15px!important; + height: auto!important; + line-height: 15px!important; + -moz-appearance: auto; + -webkit-appearance: auto; + -ms-appearance: auto; + appearance: auto; + position: absolute; + top: 0px; +} + +.bookingButton{ + position: absolute; + padding: 15px!important; + height: auto!important; + line-height: 15px!important; +} + +#datepicker{ + width: 300px; +} + +.availableTimesContainerTitle{ + +} + +.bookingResultsWrapper{ + display:none; +} + +#bookingStep3 p{ + margin: 0 0 1em 0; +} + +.availableTimes{ + margin-bottom: 70px; +} + +.availableBookingTime{ + padding:10px; + display:inline-block; + margin-right:10px; + margin-bottom:10px; + cursor:pointer; + width:60px; + height:46px; +} + +.availableBookingTime span{ + pointer-events: none; +} + +#servicelength{ + -moz-appearance: auto; + -webkit-appearance: auto; + -ms-appearance: auto; + appearance: auto; + display:none; +} + +.serviceTable{ + display: table; + width:90%; + border-collapse: collapse; + margin:10px auto; + margin-bottom:100px; +} + +.serviceHeader{ + display: table-row; + font-weight:bold; +} + +.serviceRow{ + display: table-row; +} + +.serviceCol{ + display: table-cell; + vertical-align: middle; + /*text-align: left;*/ + text-align: center; +} + +.serviceNameCol{ + width:60%; + text-align: left; + vertical-align: middle; + padding-left: 5px; +} + +.servicePriceCol{ + width:20%; + text-align: right; +} + +.serviceInfoCol{ + width:5%; + padding-left: 10px; +} + +.serviceCheckCol{ + width:5%; +} + +.serviceInfoIcon{ + width: 25px; + height: 25px; + position: relative; + cursor: pointer; +} + +.serviceInfoLabel{ + position:absolute; + top: 8px; + right: 27px; + width:150px; + text-wrap: pretty; + border:1px solid gray; + border-radius:5px; + background-color: white; + box-shadow: 5px 5px 5px rgba(0,0,0,0.1); + visibility: hidden; + cursor: pointer; + font-size:10px; + padding:5px; + line-height: normal; +} + +.serviceInfoIcon .fa-info-circle{ + pointer-events: none; + position:absolute; + top:0; + left:0; + font-size:25px; + cursor: pointer; + z-index: -50; +} + +.serviceInfoIcon:hover .serviceInfoLabel{ + visibility: visible; +} + + +.serviceCheckCol input[type="checkbox"]{ + width:20px; + height:20px; + display:block; + opacity:1; + margin-left:5px; + -moz-appearance:auto; + -webkit-appearance: auto; + -ms-appearance: auto; + appearance: auto; + cursor:pointer; +} + +.serviceCol h4{ + margin-top:20px; + margin-bottom:0; + margin-left:5px; + letter-spacing: normal; +} + +.workerTable{ + display: block; + width: 430px; + margin:10px auto; + margin-bottom:100px; + height:85px; +} + +.profileRow{ + display: block; + height: 87px; + cursor: pointer; +} + +.profileRadioBtn{ + width: 35px; + height: 85px; +} + +.profileCell{ + display: inline-block; + float:left; + vertical-align: middle; + text-align: left; +} + +.profileImage{ + width: 75px; + height: 75px; + margin-top: 5px; + margin-left: 5px; + border-radius: 45px; + background-position: center center; + background-repeat: no-repeat; + background-size: cover; +} + +.profileImage img{ + width:100%; +} + +.profileRadioBtn input[type="radio"]{ + -moz-appearance: auto; + -webkit-appearance: auto; + -ms-appearance: auto; + appearance: auto; + opacity: 1; + margin:0 auto; + line-height:85px; + cursor:pointer; + width: 20px; + height: 20px; + z-index: 100; + position: relative; + top: 30px; + left: 6px; +} + +.profileName{ + padding-left: 10px; + font-weight: bold; + text-align: left; + line-height: 85px; + font-size: 18px; +} + +.profileDescription{ + padding-left: 10px; + text-align: left; + max-width: 300px; + line-height: 18px; + display: -webkit-box; + -webkit-line-clamp: 4; + -webkit-box-orient: vertical; + overflow: hidden; +} + +.bookingHeader{ + text-align:center; + margin:20px auto; +} + +.totalPanelContainer{ + position: fixed; + top: 100px; + right: 0; + width: 440px; + z-index: 300; +} + +#totalPanel{ + border-top-left-radius: 5px; + border-bottom-left-radius: 5px; + box-shadow: 5px 5px 5px rgba(0,0,0,0.1); + width: 440px; + display: none; + z-index: 100; +} + +#totalPanelBtnContainer{ + position:absolute; + right:0px; + top:0px; + bottom:0px; +} + +#totalPanelBtn{ + position: absolute; + top: 0; + right: 0; + bottom: 0; + width: 20px; + cursor: pointer; + min-height: 108px; + display:none; +} + +#totalPanelBtn i{ + color:white; + font-size:25px; + position:absolute; + left: 50%; + top:50%; + transform: translate(-50%, -50%); +} + +.arrow-right { + width: 0; + height: 0; + border-top: 20px solid transparent; + border-bottom: 20px solid transparent; + border-left: 20px solid #1d2726; + position: absolute; + top: 5px; + right: -11px; + z-index: 200; + } + +.panel-heading{ + font-size: 23px; + margin-top: 20px; +} + +.selectedServiceTable{ + display: table; + width: 100%; + border-collapse: collapse; + margin: 10px auto; + margin-bottom: 45px; + text-align: left; +} + +.totalServiceRow{ + display: table-row; +} + +.totalSelectedServiceName{ + padding-left: 10px; +} + +.totalSelectedServicePrice{ + display: table-cell; + vertical-align: middle; + text-align: left; +} + +.selectedServiceCol{ + +} + +.serviceContent{ + padding-right: 20px; +} + +.totalPrice{ + position: absolute; + left: 0; + bottom: 10px; + font-size: 20px; + font-weight: bold; + text-align: center; + text-align: right; + width: 100%; + padding-right: 30px; +} + +.totalSelectedTime{ + position: absolute; + left: 0; + bottom: 10px; + font-size: 20px; + font-weight: bold; + text-align: center; + text-align: Left; + width: 100%; + padding-left: 10px; +} + +.totalPrice span{ + margin:0 auto; +} + +.totalSelectedServicePrice{ + text-align: right; +} + +.serviceTime{ + display: none; +} + +.totalTitle{ + font-size: 15px; +} + +.ui-datepicker-inline{ + margin: 0 auto; +} + +.bookingName, .bookingEmail, .bookingPhone{ + height: 2.5em; + max-width: 500px; + margin: 0 auto; +} + +.bookingEmailTitle, .bookingPhoneTitle{ + margin-bottom:0; + margin-top:15px; +} + +.bookingThankYouTitle{ + margin-top:150px; + font-weight:bold; + font-size:20px; + color:#a5705b; + text-transform:uppercase; +} + +.bookingThankYouMessageTitle{ + +} + +.bookingCalendar{ + float:left; + margin-top: 10px; + margin-left: 10px; +} + +.bookingResultsWrapper{ + float: left; + width: 378px; + margin-left: 10px; + margin-top: 7px; +} + +#bookingStep3{ + min-height: 540px; +} + +#serviceBookingDate{ + font-size: 20px; + text-align: center; + padding: 10px; + font-weight: 500; + display:none; + padding: 10px 0px 0px 0px; +} + +#serviceBookingTime{ + font-size: 20px; + text-align: center; + padding: 10px; + font-weight: 500; + display:none; + padding: 10px 0px 0px 0px; +} + +.serviceBookingprofileRowContainer{ + +} + +.serviceBookingprofileImage{ + width: 60px; + height: 60px; + background-position: center center; + background-repeat: no-repeat; + background-size: cover; + float: left; + margin-right: 10px; + background-color: white; + border-radius: 45px; + margin-top: 5px; + margin-left: 5px; +} + +.serviceBookingprofileName{ + float: left; + font-size: 20px; + text-align: left; + height: 60px; + line-height: 65px; + margin-top: 5px; +} + +.serviceBookingWorkerContainer{ + display:none; + height:85px; +} + +.selectedTime{ + background-color:#a5705b; + color:white; +} + +#bookingStep4{ + min-height:460px; +} + +.g-recaptcha{ + position: absolute; + top: -95px; + left: 50%; + transform: translate(-50%, 0); +} + +.prices-category h4{ + margin-bottom:0px; + font-size:1.28em; + letter-spacing: normal; +} + +.prices-category h4 > p{ + margin-bottom:0px; + font-size:0.8em!important; + font-weight: normal; +} + +.prices-category{ + margin-bottom:0px; +} diff --git a/assets/css/style_20250312.css b/assets/css/style_20250312.css new file mode 100755 index 0000000..08422de --- /dev/null +++ b/assets/css/style_20250312.css @@ -0,0 +1,607 @@ +.steps-indicator { + right: 0; + bottom: 0; + left: 0; + margin: 0; + padding: 20px 0 0 0; + height: 30px; + list-style: none; +} + +.steps-indicator li { + position: relative; + float: left; + margin: 0; + padding: 0; + padding-top: 10px; + text-align: center; + line-height: 15px; +} + +.steps-indicator.steps-3 li { + width: calc(100%/3); +} + +.steps-indicator li.current, .steps-indicator li.editing { + pointer-events: none; +} + +.steps-indicator { + height: 100px; + position:relative; +} + +.bookingContainer{ + margin:0 auto; + margin-top: 115px; + display:inline-block; + width:700px; + position:relative; +} + +.stepTitleContainer{ + +} + +.stepCircle{ + height:20px; + width:20px; + margin:5px auto; + border-radius:15px; +} + +.activeStep{ + background-color:rgb(9, 94, 13); +} + +.stepLine{ + position:absolute; + top: 47%; + left: 50%; + right: -116px; + z-index: -100; + width: 100%; +} + +.stepTitle{ + text-align:center; + font-size:15px; +} + +.bookingTitle{ + font-size:20px; + text-align: center; + text-transform: uppercase; + margin-bottom:20px; +} + +.bookingTable{ + +} + +.inner{ + text-align: center; +} + +.BookingStepContainer{ + display:none; + position:relative; + min-height: 355px; + margin-bottom: 50px; +} + +#bookingStep1{ + display:block; +} + +.bookingButtonContainer{ + position: absolute; + bottom: 10px; + left: 10px; + right: 10px; + height: 45px; +} + +.bookingButtonContainer button{ + position: absolute; + padding: 15px; + height: auto; + background-color: lightgray; + line-height: 15px; +} + +.leftButton{ + left:0; +} + +.rightButton{ + right:0; +} + +.bookingSubmit{ + position: absolute; + padding: 15px!important; + height: auto!important; + line-height: 15px!important; + -moz-appearance: auto; + -webkit-appearance: auto; + -ms-appearance: auto; + appearance: auto; + position: absolute; + top: 0px; +} + +.bookingButton{ + position: absolute; + padding: 15px!important; + height: auto!important; + line-height: 15px!important; +} + +#datepicker{ + width: 300px; +} + +.availableTimesContainerTitle{ + +} + +.bookingResultsWrapper{ + display:none; +} + +#bookingStep3 p{ + margin: 0 0 1em 0; +} + +.availableTimes{ + margin-bottom: 70px; +} + +.availableBookingTime{ + padding:10px; + display:inline-block; + margin-right:10px; + margin-bottom:10px; + cursor:pointer; + width:60px; + height:46px; +} + +.availableBookingTime span{ + pointer-events: none; +} + +#servicelength{ + -moz-appearance: auto; + -webkit-appearance: auto; + -ms-appearance: auto; + appearance: auto; + display:none; +} + +.serviceTable{ + display: table; + width:90%; + border-collapse: collapse; + margin:10px auto; + margin-bottom:100px; +} + +.serviceHeader{ + display: table-row; + font-weight:bold; +} + +.serviceRow{ + display: table-row; +} + +.serviceCol{ + display: table-cell; + vertical-align: middle; + text-align: left; +} + +.serviceNameCol{ + width:60%; + text-align: left; + vertical-align: middle; + padding-left: 5px; +} + +.servicePriceCol{ + width:20%; + text-align: right; +} + +.serviceInfoCol{ + width:5%; + padding-left: 10px; +} + +.serviceCheckCol{ + width:5%; +} + +.serviceInfoIcon{ + width: 25px; + height: 25px; + position: relative; + cursor: pointer; +} + +.serviceInfoLabel{ + position:absolute; + top: 8px; + right: 27px; + width:150px; + text-wrap: pretty; + border:1px solid gray; + border-radius:5px; + background-color: white; + box-shadow: 5px 5px 5px rgba(0,0,0,0.1); + visibility: hidden; + cursor: pointer; + font-size:10px; + padding:5px; + line-height: normal; +} + +.serviceInfoIcon .fa-info-circle{ + pointer-events: none; + position:absolute; + top:0; + left:0; + font-size:25px; + cursor: pointer; + z-index: -50; +} + +.serviceInfoIcon:hover .serviceInfoLabel{ + visibility: visible; +} + + +.serviceCheckCol input[type="checkbox"]{ + width:20px; + height:20px; + display:block; + opacity:1; + margin-left:5px; + -moz-appearance:auto; + -webkit-appearance: auto; + -ms-appearance: auto; + appearance: auto; + cursor:pointer; +} + +.serviceCol h4{ + margin-top:10px; + margin-bottom:0; + margin-left:5px; +} + +.workerTable{ + display: block; + width: 430px; + margin:10px auto; + margin-bottom:100px; + height:85px; +} + +.profileRow{ + display: block; + height: 87px; + cursor: pointer; +} + +.profileRadioBtn{ + width: 35px; + height: 85px; +} + +.profileCell{ + display: inline-block; + float:left; + vertical-align: middle; + text-align: left; +} + +.profileImage{ + width: 75px; + height: 75px; + margin-top: 5px; + margin-left: 5px; + border-radius: 45px; + background-position: center center; + background-repeat: no-repeat; + background-size: cover; +} + +.profileImage img{ + width:100%; +} + +.profileRadioBtn input[type="radio"]{ + -moz-appearance: auto; + -webkit-appearance: auto; + -ms-appearance: auto; + appearance: auto; + opacity: 1; + margin:0 auto; + line-height:85px; + cursor:pointer; + width: 20px; + height: 20px; + z-index: 100; + position: relative; + top: 30px; + left: 6px; +} + +.profileName{ + padding-left: 10px; + font-weight: bold; + text-align: left; + line-height: 85px; + font-size: 18px; +} + +.profileDescription{ + padding-left: 10px; + text-align: left; + max-width: 300px; + line-height: 18px; + display: -webkit-box; + -webkit-line-clamp: 4; + -webkit-box-orient: vertical; + overflow: hidden; +} + +.bookingHeader{ + text-align:center; + margin:20px auto; +} + +.totalPanelContainer{ + position: fixed; + top: 100px; + right: 0; + width: 440px; + z-index: 300; +} + +#totalPanel{ + border-top-left-radius: 5px; + border-bottom-left-radius: 5px; + box-shadow: 5px 5px 5px rgba(0,0,0,0.1); + width: 440px; + display: none; + z-index: 100; +} + +#totalPanelBtnContainer{ + position:absolute; + right:0px; + top:0px; + bottom:0px; +} + +#totalPanelBtn{ + position: absolute; + top: 0; + right: 0; + bottom: 0; + width: 20px; + cursor: pointer; + min-height: 108px; + display:none; +} + +#totalPanelBtn i{ + color:white; + font-size:25px; + position:absolute; + left: 50%; + top:50%; + transform: translate(-50%, -50%); +} + +.arrow-right { + width: 0; + height: 0; + border-top: 20px solid transparent; + border-bottom: 20px solid transparent; + border-left: 20px solid #1d2726; + position: absolute; + top: 5px; + right: -11px; + z-index: 200; + } + +.panel-heading{ + font-size: 23px; + margin-top: 20px; +} + +.selectedServiceTable{ + display: table; + width: 100%; + border-collapse: collapse; + margin: 10px auto; + margin-bottom: 45px; + text-align: left; +} + +.totalServiceRow{ + display: table-row; +} + +.totalSelectedServiceName{ + padding-left: 10px; +} + +.totalSelectedServicePrice{ + display: table-cell; + vertical-align: middle; + text-align: left; +} + +.selectedServiceCol{ + +} + +.serviceContent{ + padding-right: 20px; +} + +.totalPrice{ + position: absolute; + left: 0; + bottom: 10px; + font-size: 20px; + font-weight: bold; + text-align: center; + text-align: right; + width: 100%; + padding-right: 30px; +} + +.totalSelectedTime{ + position: absolute; + left: 0; + bottom: 10px; + font-size: 20px; + font-weight: bold; + text-align: center; + text-align: Left; + width: 100%; + padding-left: 10px; +} + +.totalPrice span{ + margin:0 auto; +} + +.totalSelectedServicePrice{ + text-align: right; +} + +.serviceTime{ + display: none; +} + +.totalTitle{ + font-size: 15px; +} + +.ui-datepicker-inline{ + margin: 0 auto; +} + +.bookingName, .bookingEmail, .bookingPhone{ + height: 2.5em; + max-width: 500px; + margin: 0 auto; +} + +.bookingEmailTitle, .bookingPhoneTitle{ + margin-bottom:0; + margin-top:15px; +} + +.bookingThankYouTitle{ + margin-top:150px; + font-weight:bold; + font-size:20px; + color:#a5705b; + text-transform:uppercase; +} + +.bookingThankYouMessageTitle{ + +} + +.bookingCalendar{ + float:left; + margin-top: 10px; + margin-left: 10px; +} + +.bookingResultsWrapper{ + float: left; + width: 378px; + margin-left: 10px; + margin-top: 7px; +} + +#bookingStep3{ + min-height: 540px; +} + +#serviceBookingDate{ + font-size: 20px; + text-align: center; + padding: 10px; + font-weight: 500; + display:none; + padding: 10px 0px 0px 0px; +} + +#serviceBookingTime{ + font-size: 20px; + text-align: center; + padding: 10px; + font-weight: 500; + display:none; + padding: 10px 0px 0px 0px; +} + +.serviceBookingprofileRowContainer{ + +} + +.serviceBookingprofileImage{ + width: 60px; + height: 60px; + background-position: center center; + background-repeat: no-repeat; + background-size: cover; + float: left; + margin-right: 10px; + background-color: white; + border-radius: 45px; + margin-top: 5px; + margin-left: 5px; +} + +.serviceBookingprofileName{ + float: left; + font-size: 20px; + text-align: left; + height: 60px; + line-height: 65px; + margin-top: 5px; +} + +.serviceBookingWorkerContainer{ + display:none; + height:85px; +} + +.selectedTime{ + background-color:#a5705b; + color:white; +} + +#bookingStep4{ + min-height:460px; +} + +.g-recaptcha{ + position: absolute; + top: -95px; + left: 50%; + transform: translate(-50%, 0); +} \ No newline at end of file diff --git a/assets/img/IMG_5785.jpg b/assets/img/IMG_5785.jpg new file mode 100755 index 0000000..6054777 Binary files /dev/null and b/assets/img/IMG_5785.jpg differ diff --git a/assets/img/IMG_9996.jpg b/assets/img/IMG_9996.jpg new file mode 100755 index 0000000..35ca50e Binary files /dev/null and b/assets/img/IMG_9996.jpg differ diff --git a/assets/img/archive/barber.jpg b/assets/img/archive/barber.jpg new file mode 100755 index 0000000..45de761 Binary files /dev/null and b/assets/img/archive/barber.jpg differ diff --git a/assets/img/archive/beauty.jpg b/assets/img/archive/beauty.jpg new file mode 100755 index 0000000..6c17370 Binary files /dev/null and b/assets/img/archive/beauty.jpg differ diff --git a/assets/img/archive/bg.jpg b/assets/img/archive/bg.jpg new file mode 100755 index 0000000..969182b Binary files /dev/null and b/assets/img/archive/bg.jpg differ diff --git a/assets/img/archive/logo.svg b/assets/img/archive/logo.svg new file mode 100755 index 0000000..c8ece25 --- /dev/null +++ b/assets/img/archive/logo.svg @@ -0,0 +1,14 @@ + + + + + + diff --git a/assets/img/archive/pic01.jpg b/assets/img/archive/pic01.jpg new file mode 100755 index 0000000..642a6b2 Binary files /dev/null and b/assets/img/archive/pic01.jpg differ diff --git a/assets/img/archive/pic02.jpg b/assets/img/archive/pic02.jpg new file mode 100755 index 0000000..5bddb6d Binary files /dev/null and b/assets/img/archive/pic02.jpg differ diff --git a/assets/img/archive/pic04.jpg b/assets/img/archive/pic04.jpg new file mode 100755 index 0000000..7deb571 Binary files /dev/null and b/assets/img/archive/pic04.jpg differ diff --git a/assets/img/archive/pic05.jpg b/assets/img/archive/pic05.jpg new file mode 100755 index 0000000..8f5e523 Binary files /dev/null and b/assets/img/archive/pic05.jpg differ diff --git a/assets/img/archive/pic06.jpg b/assets/img/archive/pic06.jpg new file mode 100755 index 0000000..64722c0 Binary files /dev/null and b/assets/img/archive/pic06.jpg differ diff --git a/assets/img/archive/pic07.jpg b/assets/img/archive/pic07.jpg new file mode 100755 index 0000000..d64aba8 Binary files /dev/null and b/assets/img/archive/pic07.jpg differ diff --git a/assets/img/archive/pic08.jpg b/assets/img/archive/pic08.jpg new file mode 100755 index 0000000..11bed52 Binary files /dev/null and b/assets/img/archive/pic08.jpg differ diff --git a/assets/img/archive/pic10.jpg b/assets/img/archive/pic10.jpg new file mode 100755 index 0000000..e4d7328 Binary files /dev/null and b/assets/img/archive/pic10.jpg differ diff --git a/assets/img/archive/pic11.jpg b/assets/img/archive/pic11.jpg new file mode 100755 index 0000000..a975380 Binary files /dev/null and b/assets/img/archive/pic11.jpg differ diff --git a/assets/img/archive/pic12.jpg b/assets/img/archive/pic12.jpg new file mode 100755 index 0000000..cc68345 Binary files /dev/null and b/assets/img/archive/pic12.jpg differ diff --git a/assets/img/archive/pic13.jpg b/assets/img/archive/pic13.jpg new file mode 100755 index 0000000..dc892a2 Binary files /dev/null and b/assets/img/archive/pic13.jpg differ diff --git a/assets/img/archive/pic14.jpg b/assets/img/archive/pic14.jpg new file mode 100755 index 0000000..ab6cd9a Binary files /dev/null and b/assets/img/archive/pic14.jpg differ diff --git a/assets/img/archive/pic15.jpg b/assets/img/archive/pic15.jpg new file mode 100755 index 0000000..0e94d0a Binary files /dev/null and b/assets/img/archive/pic15.jpg differ diff --git a/assets/img/archive/shutterstock_1684029229.jpg b/assets/img/archive/shutterstock_1684029229.jpg new file mode 100755 index 0000000..f028af8 Binary files /dev/null and b/assets/img/archive/shutterstock_1684029229.jpg differ diff --git a/assets/img/archive/shutterstock_1922411420.jpg b/assets/img/archive/shutterstock_1922411420.jpg new file mode 100755 index 0000000..bf7781b Binary files /dev/null and b/assets/img/archive/shutterstock_1922411420.jpg differ diff --git a/assets/img/barber.jpg b/assets/img/barber.jpg new file mode 100755 index 0000000..bca9dbd Binary files /dev/null and b/assets/img/barber.jpg differ diff --git a/assets/img/barber/1.jpg b/assets/img/barber/1.jpg new file mode 100755 index 0000000..c3bd034 Binary files /dev/null and b/assets/img/barber/1.jpg differ diff --git a/assets/img/barber/archive/1.jpg b/assets/img/barber/archive/1.jpg new file mode 100755 index 0000000..c3bd034 Binary files /dev/null and b/assets/img/barber/archive/1.jpg differ diff --git a/assets/img/barber/archive/banner.jpg b/assets/img/barber/archive/banner.jpg new file mode 100755 index 0000000..e9c305a Binary files /dev/null and b/assets/img/barber/archive/banner.jpg differ diff --git a/assets/img/barber/archive/pic01.jpg b/assets/img/barber/archive/pic01.jpg new file mode 100755 index 0000000..0995ef4 Binary files /dev/null and b/assets/img/barber/archive/pic01.jpg differ diff --git a/assets/img/barber/archive/pic02.jpg b/assets/img/barber/archive/pic02.jpg new file mode 100755 index 0000000..8f0de0b Binary files /dev/null and b/assets/img/barber/archive/pic02.jpg differ diff --git a/assets/img/barber/archive/pic03.jpg b/assets/img/barber/archive/pic03.jpg new file mode 100755 index 0000000..1f14b50 Binary files /dev/null and b/assets/img/barber/archive/pic03.jpg differ diff --git a/assets/img/barber/archive/pic04.jpg b/assets/img/barber/archive/pic04.jpg new file mode 100755 index 0000000..898bd94 Binary files /dev/null and b/assets/img/barber/archive/pic04.jpg differ diff --git a/assets/img/barber/archive/pic05.jpg b/assets/img/barber/archive/pic05.jpg new file mode 100755 index 0000000..32e0466 Binary files /dev/null and b/assets/img/barber/archive/pic05.jpg differ diff --git a/assets/img/barber/archive/pic06.jpg b/assets/img/barber/archive/pic06.jpg new file mode 100755 index 0000000..228b7b1 Binary files /dev/null and b/assets/img/barber/archive/pic06.jpg differ diff --git a/assets/img/barber/archive/pic07.jpg b/assets/img/barber/archive/pic07.jpg new file mode 100755 index 0000000..7d0e74b Binary files /dev/null and b/assets/img/barber/archive/pic07.jpg differ diff --git a/assets/img/barber/archive/pic08.jpg b/assets/img/barber/archive/pic08.jpg new file mode 100755 index 0000000..780314a Binary files /dev/null and b/assets/img/barber/archive/pic08.jpg differ diff --git a/assets/img/barber/archive/pic09.jpg b/assets/img/barber/archive/pic09.jpg new file mode 100755 index 0000000..c7adee7 Binary files /dev/null and b/assets/img/barber/archive/pic09.jpg differ diff --git a/assets/img/barber/banner.jpg b/assets/img/barber/banner.jpg new file mode 100755 index 0000000..92de28b Binary files /dev/null and b/assets/img/barber/banner.jpg differ diff --git a/assets/img/barber/evelin/1.jpg b/assets/img/barber/evelin/1.jpg new file mode 100755 index 0000000..fdb00cc Binary files /dev/null and b/assets/img/barber/evelin/1.jpg differ diff --git a/assets/img/barber/evelin/2.jpg b/assets/img/barber/evelin/2.jpg new file mode 100755 index 0000000..0971a0b Binary files /dev/null and b/assets/img/barber/evelin/2.jpg differ diff --git a/assets/img/barber/evelin/3.jpg b/assets/img/barber/evelin/3.jpg new file mode 100755 index 0000000..44a3fee Binary files /dev/null and b/assets/img/barber/evelin/3.jpg differ diff --git a/assets/img/barber/evelin/4.jpg b/assets/img/barber/evelin/4.jpg new file mode 100755 index 0000000..0d8c170 Binary files /dev/null and b/assets/img/barber/evelin/4.jpg differ diff --git a/assets/img/barber/evelin/evelin.jpg b/assets/img/barber/evelin/evelin.jpg new file mode 100755 index 0000000..9140974 Binary files /dev/null and b/assets/img/barber/evelin/evelin.jpg differ diff --git a/assets/img/barber/map.jpg b/assets/img/barber/map.jpg new file mode 100755 index 0000000..fd7ba50 Binary files /dev/null and b/assets/img/barber/map.jpg differ diff --git a/assets/img/barber/ollo.png b/assets/img/barber/ollo.png new file mode 100755 index 0000000..8e18663 Binary files /dev/null and b/assets/img/barber/ollo.png differ diff --git a/assets/img/beauty.jpg b/assets/img/beauty.jpg new file mode 100755 index 0000000..6c82be5 Binary files /dev/null and b/assets/img/beauty.jpg differ diff --git a/assets/img/beauty/1.jpg b/assets/img/beauty/1.jpg new file mode 100755 index 0000000..19bf80d Binary files /dev/null and b/assets/img/beauty/1.jpg differ diff --git a/assets/img/beauty/archive/1.jpg b/assets/img/beauty/archive/1.jpg new file mode 100755 index 0000000..19bf80d Binary files /dev/null and b/assets/img/beauty/archive/1.jpg differ diff --git a/assets/img/beauty/banner.jpg b/assets/img/beauty/banner.jpg new file mode 100755 index 0000000..b4a1fb0 Binary files /dev/null and b/assets/img/beauty/banner.jpg differ diff --git a/assets/img/beauty/evelin/1.jpg b/assets/img/beauty/evelin/1.jpg new file mode 100755 index 0000000..5c0ea37 Binary files /dev/null and b/assets/img/beauty/evelin/1.jpg differ diff --git a/assets/img/beauty/evelin/2.jpg b/assets/img/beauty/evelin/2.jpg new file mode 100755 index 0000000..3035f70 Binary files /dev/null and b/assets/img/beauty/evelin/2.jpg differ diff --git a/assets/img/beauty/evelin/3.jpg b/assets/img/beauty/evelin/3.jpg new file mode 100755 index 0000000..40e9292 Binary files /dev/null and b/assets/img/beauty/evelin/3.jpg differ diff --git a/assets/img/beauty/evelin/4.jpg b/assets/img/beauty/evelin/4.jpg new file mode 100755 index 0000000..4d87d2f Binary files /dev/null and b/assets/img/beauty/evelin/4.jpg differ diff --git a/assets/img/beauty/evelin/5.jpg b/assets/img/beauty/evelin/5.jpg new file mode 100755 index 0000000..a96d8c5 Binary files /dev/null and b/assets/img/beauty/evelin/5.jpg differ diff --git a/assets/img/beauty/evelin/6.jpg b/assets/img/beauty/evelin/6.jpg new file mode 100755 index 0000000..b6584f5 Binary files /dev/null and b/assets/img/beauty/evelin/6.jpg differ diff --git a/assets/img/beauty/evelin/evelin.jpg b/assets/img/beauty/evelin/evelin.jpg new file mode 100755 index 0000000..1a227aa Binary files /dev/null and b/assets/img/beauty/evelin/evelin.jpg differ diff --git a/assets/img/beauty/map.jpg b/assets/img/beauty/map.jpg new file mode 100755 index 0000000..db8551c Binary files /dev/null and b/assets/img/beauty/map.jpg differ diff --git a/assets/img/beauty/ollo_rose.png b/assets/img/beauty/ollo_rose.png new file mode 100755 index 0000000..4b4b99b Binary files /dev/null and b/assets/img/beauty/ollo_rose.png differ diff --git a/assets/img/beauty/radvile/1.jpg b/assets/img/beauty/radvile/1.jpg new file mode 100755 index 0000000..4cd7bc9 Binary files /dev/null and b/assets/img/beauty/radvile/1.jpg differ diff --git a/assets/img/beauty/radvile/2.jpg b/assets/img/beauty/radvile/2.jpg new file mode 100755 index 0000000..8f2177e Binary files /dev/null and b/assets/img/beauty/radvile/2.jpg differ diff --git a/assets/img/beauty/radvile/3.jpg b/assets/img/beauty/radvile/3.jpg new file mode 100755 index 0000000..2adfc4c Binary files /dev/null and b/assets/img/beauty/radvile/3.jpg differ diff --git a/assets/img/beauty/radvile/4.jpeg b/assets/img/beauty/radvile/4.jpeg new file mode 100755 index 0000000..310f0ac Binary files /dev/null and b/assets/img/beauty/radvile/4.jpeg differ diff --git a/assets/img/beauty/radvile/5.jpg b/assets/img/beauty/radvile/5.jpg new file mode 100755 index 0000000..36887b0 Binary files /dev/null and b/assets/img/beauty/radvile/5.jpg differ diff --git a/assets/img/beauty/radvile/6.jpg b/assets/img/beauty/radvile/6.jpg new file mode 100755 index 0000000..9aec2fb Binary files /dev/null and b/assets/img/beauty/radvile/6.jpg differ diff --git a/assets/img/beauty/radvile/7.jpg b/assets/img/beauty/radvile/7.jpg new file mode 100755 index 0000000..e49cb4c Binary files /dev/null and b/assets/img/beauty/radvile/7.jpg differ diff --git a/assets/img/beauty/radvile/8.jpg b/assets/img/beauty/radvile/8.jpg new file mode 100755 index 0000000..a685fbc Binary files /dev/null and b/assets/img/beauty/radvile/8.jpg differ diff --git a/assets/img/beauty/radvile/Radvile.jpeg b/assets/img/beauty/radvile/Radvile.jpeg new file mode 100755 index 0000000..e165328 Binary files /dev/null and b/assets/img/beauty/radvile/Radvile.jpeg differ diff --git a/assets/img/bg.jpg b/assets/img/bg.jpg new file mode 100755 index 0000000..4927098 Binary files /dev/null and b/assets/img/bg.jpg differ diff --git a/assets/img/default_profile.jpg b/assets/img/default_profile.jpg new file mode 100755 index 0000000..c5328d8 Binary files /dev/null and b/assets/img/default_profile.jpg differ diff --git a/assets/img/evelin.JPG b/assets/img/evelin.JPG new file mode 100755 index 0000000..3dbd60f Binary files /dev/null and b/assets/img/evelin.JPG differ diff --git a/assets/img/evelin_beauty.JPG b/assets/img/evelin_beauty.JPG new file mode 100755 index 0000000..456f250 Binary files /dev/null and b/assets/img/evelin_beauty.JPG differ diff --git a/assets/img/evelin_profile.jpg b/assets/img/evelin_profile.jpg new file mode 100755 index 0000000..42a44e2 Binary files /dev/null and b/assets/img/evelin_profile.jpg differ diff --git a/assets/img/evelin_profile.psd b/assets/img/evelin_profile.psd new file mode 100755 index 0000000..92f11de Binary files /dev/null and b/assets/img/evelin_profile.psd differ diff --git a/assets/img/favicon/apple-touch-icon-114x114-precomposed.png b/assets/img/favicon/apple-touch-icon-114x114-precomposed.png new file mode 100755 index 0000000..20da139 Binary files /dev/null and b/assets/img/favicon/apple-touch-icon-114x114-precomposed.png differ diff --git a/assets/img/favicon/favicon.gif b/assets/img/favicon/favicon.gif new file mode 100755 index 0000000..1284674 Binary files /dev/null and b/assets/img/favicon/favicon.gif differ diff --git a/assets/img/favicon/favicon.ico b/assets/img/favicon/favicon.ico new file mode 100755 index 0000000..23adfa4 Binary files /dev/null and b/assets/img/favicon/favicon.ico differ diff --git a/assets/img/favicon/favicon.png b/assets/img/favicon/favicon.png new file mode 100755 index 0000000..3157696 Binary files /dev/null and b/assets/img/favicon/favicon.png differ diff --git a/assets/img/favicon/speeddial-160px.png b/assets/img/favicon/speeddial-160px.png new file mode 100755 index 0000000..2a99b44 Binary files /dev/null and b/assets/img/favicon/speeddial-160px.png differ diff --git a/assets/img/icons/eye.png b/assets/img/icons/eye.png new file mode 100755 index 0000000..5a31bc0 Binary files /dev/null and b/assets/img/icons/eye.png differ diff --git a/assets/img/icons/eyebrow (1).png b/assets/img/icons/eyebrow (1).png new file mode 100755 index 0000000..e7ded06 Binary files /dev/null and b/assets/img/icons/eyebrow (1).png differ diff --git a/assets/img/icons/eyebrow.png b/assets/img/icons/eyebrow.png new file mode 100755 index 0000000..6ef9c13 Binary files /dev/null and b/assets/img/icons/eyebrow.png differ diff --git a/assets/img/icons/make-up.png b/assets/img/icons/make-up.png new file mode 100755 index 0000000..6d98bd7 Binary files /dev/null and b/assets/img/icons/make-up.png differ diff --git a/assets/img/icons/manicure.png b/assets/img/icons/manicure.png new file mode 100755 index 0000000..8cae5b9 Binary files /dev/null and b/assets/img/icons/manicure.png differ diff --git a/assets/img/icons/wax.png b/assets/img/icons/wax.png new file mode 100755 index 0000000..3d0db7c Binary files /dev/null and b/assets/img/icons/wax.png differ diff --git a/assets/img/im/shutterstock_1129845197.jpg b/assets/img/im/shutterstock_1129845197.jpg new file mode 100755 index 0000000..323540a Binary files /dev/null and b/assets/img/im/shutterstock_1129845197.jpg differ diff --git a/assets/img/im/shutterstock_1687056223.jpg b/assets/img/im/shutterstock_1687056223.jpg new file mode 100755 index 0000000..769b176 Binary files /dev/null and b/assets/img/im/shutterstock_1687056223.jpg differ diff --git a/assets/img/im/shutterstock_1992097385.jpg b/assets/img/im/shutterstock_1992097385.jpg new file mode 100755 index 0000000..80ef2da Binary files /dev/null and b/assets/img/im/shutterstock_1992097385.jpg differ diff --git a/assets/img/im/shutterstock_512009329.jpg b/assets/img/im/shutterstock_512009329.jpg new file mode 100755 index 0000000..1c2f9b0 Binary files /dev/null and b/assets/img/im/shutterstock_512009329.jpg differ diff --git a/assets/img/im/shutterstock_512009329.png b/assets/img/im/shutterstock_512009329.png new file mode 100755 index 0000000..19ec786 Binary files /dev/null and b/assets/img/im/shutterstock_512009329.png differ diff --git a/assets/img/logo.png b/assets/img/logo.png new file mode 100755 index 0000000..09c98cc Binary files /dev/null and b/assets/img/logo.png differ diff --git a/assets/img/logo_black.png b/assets/img/logo_black.png new file mode 100755 index 0000000..2cf4ca2 Binary files /dev/null and b/assets/img/logo_black.png differ diff --git a/assets/img/logo_gold.png b/assets/img/logo_gold.png new file mode 100755 index 0000000..0fd25d3 Binary files /dev/null and b/assets/img/logo_gold.png differ diff --git a/assets/img/logo_white.png b/assets/img/logo_white.png new file mode 100755 index 0000000..60bf2fc Binary files /dev/null and b/assets/img/logo_white.png differ diff --git a/assets/img/ngoc_profile.jpg b/assets/img/ngoc_profile.jpg new file mode 100755 index 0000000..af95d9c Binary files /dev/null and b/assets/img/ngoc_profile.jpg differ diff --git a/assets/img/ollo.png b/assets/img/ollo.png new file mode 100755 index 0000000..8e18663 Binary files /dev/null and b/assets/img/ollo.png differ diff --git a/assets/img/pic03.jpg b/assets/img/pic03.jpg new file mode 100755 index 0000000..1754490 Binary files /dev/null and b/assets/img/pic03.jpg differ diff --git a/assets/img/pic09.jpg b/assets/img/pic09.jpg new file mode 100755 index 0000000..7f77fe0 Binary files /dev/null and b/assets/img/pic09.jpg differ diff --git a/assets/img/profiles/admin_test_hu.jpg b/assets/img/profiles/admin_test_hu.jpg new file mode 100755 index 0000000..c5328d8 Binary files /dev/null and b/assets/img/profiles/admin_test_hu.jpg differ diff --git a/assets/img/profiles/pentest2.jpeg b/assets/img/profiles/pentest2.jpeg new file mode 100755 index 0000000..cdd059c Binary files /dev/null and b/assets/img/profiles/pentest2.jpeg differ diff --git a/assets/img/profiles/pentest2.jpg b/assets/img/profiles/pentest2.jpg new file mode 100755 index 0000000..c0cd73b Binary files /dev/null and b/assets/img/profiles/pentest2.jpg differ diff --git a/assets/img/profiles/pentest2.php b/assets/img/profiles/pentest2.php new file mode 100755 index 0000000..0f89c90 --- /dev/null +++ b/assets/img/profiles/pentest2.php @@ -0,0 +1 @@ + diff --git a/assets/img/profiles/peter_fodor_alairt_hu.jpg b/assets/img/profiles/peter_fodor_alairt_hu.jpg new file mode 100755 index 0000000..c5328d8 Binary files /dev/null and b/assets/img/profiles/peter_fodor_alairt_hu.jpg differ diff --git a/assets/img/profiles/zoli_kovach_gmail_com.jpg b/assets/img/profiles/zoli_kovach_gmail_com.jpg new file mode 100755 index 0000000..c5328d8 Binary files /dev/null and b/assets/img/profiles/zoli_kovach_gmail_com.jpg differ diff --git a/assets/img/service-banner-1-rose.png b/assets/img/service-banner-1-rose.png new file mode 100755 index 0000000..bf66650 Binary files /dev/null and b/assets/img/service-banner-1-rose.png differ diff --git a/assets/img/service-banner-1.png b/assets/img/service-banner-1.png new file mode 100755 index 0000000..9984969 Binary files /dev/null and b/assets/img/service-banner-1.png differ diff --git a/assets/img/service-banner-beauty.png b/assets/img/service-banner-beauty.png new file mode 100755 index 0000000..dbdf878 Binary files /dev/null and b/assets/img/service-banner-beauty.png differ diff --git a/assets/img/service-banner.png b/assets/img/service-banner.png new file mode 100755 index 0000000..27bc702 Binary files /dev/null and b/assets/img/service-banner.png differ diff --git a/assets/img/service-icon-orig.png b/assets/img/service-icon-orig.png new file mode 100755 index 0000000..7ae5ae4 Binary files /dev/null and b/assets/img/service-icon-orig.png differ diff --git a/assets/img/service-icon-rose.png b/assets/img/service-icon-rose.png new file mode 100755 index 0000000..9de79e8 Binary files /dev/null and b/assets/img/service-icon-rose.png differ diff --git a/assets/img/service-icon.png b/assets/img/service-icon.png new file mode 100755 index 0000000..6bb6ebe Binary files /dev/null and b/assets/img/service-icon.png differ diff --git a/assets/img/studiobeve_facebook.jpg b/assets/img/studiobeve_facebook.jpg new file mode 100755 index 0000000..ed4cd09 Binary files /dev/null and b/assets/img/studiobeve_facebook.jpg differ diff --git a/assets/img/worker_Ngoc_Tran.jpeg b/assets/img/worker_Ngoc_Tran.jpeg new file mode 100755 index 0000000..9b3215e Binary files /dev/null and b/assets/img/worker_Ngoc_Tran.jpeg differ diff --git a/assets/img/worker_Teszt_dolgozó.jpg b/assets/img/worker_Teszt_dolgozó.jpg new file mode 100755 index 0000000..bca9dbd Binary files /dev/null and b/assets/img/worker_Teszt_dolgozó.jpg differ diff --git a/assets/js/breakpoints.min.js b/assets/js/breakpoints.min.js new file mode 100755 index 0000000..37efb05 --- /dev/null +++ b/assets/js/breakpoints.min.js @@ -0,0 +1,2 @@ +/* breakpoints.js v1.0 | @ajlkn | MIT licensed */ +var breakpoints=function(){"use strict";function e(e){t.init(e)}var t={list:null,media:{},events:[],init:function(e){t.list=e,window.addEventListener("resize",t.poll),window.addEventListener("orientationchange",t.poll),window.addEventListener("load",t.poll),window.addEventListener("fullscreenchange",t.poll)},active:function(e){var n,a,s,i,r,d,c;if(!(e in t.media)){if(">="==e.substr(0,2)?(a="gte",n=e.substr(2)):"<="==e.substr(0,2)?(a="lte",n=e.substr(2)):">"==e.substr(0,1)?(a="gt",n=e.substr(1)):"<"==e.substr(0,1)?(a="lt",n=e.substr(1)):"!"==e.substr(0,1)?(a="not",n=e.substr(1)):(a="eq",n=e),n&&n in t.list)if(i=t.list[n],Array.isArray(i)){if(r=parseInt(i[0]),d=parseInt(i[1]),isNaN(r)){if(isNaN(d))return;c=i[1].substr(String(d).length)}else c=i[0].substr(String(r).length);if(isNaN(r))switch(a){case"gte":s="screen";break;case"lte":s="screen and (max-width: "+d+c+")";break;case"gt":s="screen and (min-width: "+(d+1)+c+")";break;case"lt":s="screen and (max-width: -1px)";break;case"not":s="screen and (min-width: "+(d+1)+c+")";break;default:s="screen and (max-width: "+d+c+")"}else if(isNaN(d))switch(a){case"gte":s="screen and (min-width: "+r+c+")";break;case"lte":s="screen";break;case"gt":s="screen and (max-width: -1px)";break;case"lt":s="screen and (max-width: "+(r-1)+c+")";break;case"not":s="screen and (max-width: "+(r-1)+c+")";break;default:s="screen and (min-width: "+r+c+")"}else switch(a){case"gte":s="screen and (min-width: "+r+c+")";break;case"lte":s="screen and (max-width: "+d+c+")";break;case"gt":s="screen and (min-width: "+(d+1)+c+")";break;case"lt":s="screen and (max-width: "+(r-1)+c+")";break;case"not":s="screen and (max-width: "+(r-1)+c+"), screen and (min-width: "+(d+1)+c+")";break;default:s="screen and (min-width: "+r+c+") and (max-width: "+d+c+")"}}else s="("==i.charAt(0)?"screen and "+i:i;t.media[e]=!!s&&s}return t.media[e]!==!1&&window.matchMedia(t.media[e]).matches},on:function(e,n){t.events.push({query:e,handler:n,state:!1}),t.active(e)&&n()},poll:function(){var e,n;for(e=0;e0:!!("ontouchstart"in window),e.mobile="wp"==e.os||"android"==e.os||"ios"==e.os||"bb"==e.os}};return e.init(),e}();!function(e,n){"function"==typeof define&&define.amd?define([],n):"object"==typeof exports?module.exports=n():e.browser=n()}(this,function(){return browser}); diff --git a/assets/js/calendar.js b/assets/js/calendar.js new file mode 100755 index 0000000..d079f0a --- /dev/null +++ b/assets/js/calendar.js @@ -0,0 +1,165 @@ +const isLeapYear = (year) => { + return ( + (year % 4 === 0 && year % 100 !== 0 && year % 400 !== 0) || + (year % 100 === 0 && year % 400 === 0) + ); +}; +const getFebDays = (year) => { + return isLeapYear(year) ? 29 : 28; +}; +let calendar = document.querySelector('.calendar'); +const month_names = [ + 'Január', + 'Február', + 'Március', + 'Április', + 'Május', + 'Június', + 'Július', + 'Augusztus', + 'Szeptember', + 'Október', + 'November', + 'December', + ]; +let month_picker = document.querySelector('#month-picker'); +const dayTextFormate = document.querySelector('.day-text-formate'); +const timeFormate = document.querySelector('.time-formate'); +const dateFormate = document.querySelector('.date-formate'); + +month_picker.onclick = () => { + month_list.classList.remove('hideonce'); + month_list.classList.remove('hide'); + month_list.classList.add('show'); + dayTextFormate.classList.remove('showtime'); + dayTextFormate.classList.add('hidetime'); + timeFormate.classList.remove('showtime'); + timeFormate.classList.add('hideTime'); + dateFormate.classList.remove('showtime'); + dateFormate.classList.add('hideTime'); +}; + +const generateCalendar = (month, year) => { + let calendar_days = document.querySelector('.calendar-days'); + calendar_days.innerHTML = ''; + let calendar_header_year = document.querySelector('#year'); + let days_of_month = [ + 31, + getFebDays(year), + 31, + 30, + 31, + 30, + 31, + 31, + 30, + 31, + 30, + 31, + ]; + + let currentDate = new Date(); + + month_picker.innerHTML = month_names[month]; + + calendar_header_year.innerHTML = year; + + let first_day = new Date(year, month); + + + for (let i = 1; i <= days_of_month[month] + first_day.getDay() - 1; i++) { + + let day = document.createElement('div'); + var l = hasEventDay(year, month, i); +console.log(l); + if(hasEventDay(year, month, i)){ + day.classList.add('dayHasEvent'); + console.log('leffut'); + day.onclick = function(){ + //this.parentElement.removeChild(this); + }; + } + + if (i >= first_day.getDay()) { + day.innerHTML = i - first_day.getDay() + 1; + + if (i - first_day.getDay() + 1 === currentDate.getDate() && + year === currentDate.getFullYear() && + month === currentDate.getMonth() + ) { + day.classList.add('current-date'); + } + } + calendar_days.appendChild(day); + } +}; + +let month_list = calendar.querySelector('.month-list'); +month_names.forEach((e, index) => { + let month = document.createElement('div'); + month.innerHTML = `
${e}
`; + + month_list.append(month); + month.onclick = () => { + currentMonth.value = index; + generateCalendar(currentMonth.value, currentYear.value); + month_list.classList.replace('show', 'hide'); + dayTextFormate.classList.remove('hideTime'); + dayTextFormate.classList.add('showtime'); + timeFormate.classList.remove('hideTime'); + timeFormate.classList.add('showtime'); + dateFormate.classList.remove('hideTime'); + dateFormate.classList.add('showtime'); + }; +}); + +(function() { + month_list.classList.add('hideonce'); +})(); +document.querySelector('#pre-year').onclick = () => { + --currentYear.value; + generateCalendar(currentMonth.value, currentYear.value); +}; +document.querySelector('#next-year').onclick = () => { + ++currentYear.value; + generateCalendar(currentMonth.value, currentYear.value); +}; + +let currentDate = new Date(); +let currentMonth = { value: currentDate.getMonth() }; +let currentYear = { value: currentDate.getFullYear() }; +generateCalendar(currentMonth.value, currentYear.value); + +const todayShowTime = document.querySelector('.time-formate'); +const todayShowDate = document.querySelector('.date-formate'); + +const currshowDate = new Date(); +const showCurrentDateOption = { + year: 'numeric', + month: 'long', + day: 'numeric', + weekday: 'long', +}; +const currentDateFormate = new Intl.DateTimeFormat( + 'hu-HU', + showCurrentDateOption +).format(currshowDate); +todayShowDate.textContent = currentDateFormate; +setInterval(() => { + const timer = new Date(); + const option = { + hour: 'numeric', + minute: 'numeric', + second: 'numeric', + }; + const formateTimer = new Intl.DateTimeFormat('en-us', option).format(timer); + let time = `${`${timer.getHours()}`.padStart( + 2, + '0' + )}:${`${timer.getMinutes()}`.padStart( + 2, + '0' + )}: ${`${timer.getSeconds()}`.padStart(2, '0')}`; + todayShowTime.textContent = formateTimer; +}, 1000); + diff --git a/assets/js/jquery.dropotron.min.js b/assets/js/jquery.dropotron.min.js new file mode 100755 index 0000000..f2ed5e2 --- /dev/null +++ b/assets/js/jquery.dropotron.min.js @@ -0,0 +1,2 @@ +/* jquery.dropotron.js v1.4.3 | (c) @ajlkn | github.com/ajlkn/jquery.dropotron | MIT licensed */ +!function(e){e.fn.disableSelection_dropotron=function(){return e(this).css("user-select","none").css("-khtml-user-select","none").css("-moz-user-select","none").css("-o-user-select","none").css("-webkit-user-select","none")},e.fn.dropotron=function(t){if(0==this.length)return e(this);if(this.length>1)for(var o=0;o0&&t.add(n).on("mouseleave",function(e){window.clearTimeout(c),c=window.setTimeout(function(){t.trigger("doCollapse")},o.hideDelay)}),t.disableSelection_dropotron().hide().addClass(o.menuClass).css("position","absolute").on("mouseenter",function(e){window.clearTimeout(c)}).on("doExpand",function(){if(t.is(":visible"))return!1;window.clearTimeout(c),s.each(function(){var t=e(this);e.contains(t.get(0),n.get(0))||t.trigger("doCollapse")});var i,a,d,f,u=n.offset(),p=n.position(),h=(n.parent().position(),n.outerWidth()),g=t.outerWidth(),v=t.css("z-index")==o.baseZIndex;if(v){switch(i=o.detach?u:p,f=i.top+n.outerHeight()+o.globalOffsetY,a=o.alignment,t.removeClass("left").removeClass("right").removeClass("center"),o.alignment){case"right":d=i.left-g+h,0>d&&(d=i.left,a="left");break;case"center":d=i.left-Math.floor((g-h)/2),0>d?(d=i.left,a="left"):d+g>l.width()&&(d=i.left-g+h,a="right");break;case"left":default:d=i.left,d+g>l.width()&&(d=i.left-g+h,a="right")}t.addClass(a)}else switch("relative"==n.css("position")||"absolute"==n.css("position")?(f=o.offsetY,d=-1*p.left):(f=p.top+o.offsetY,d=0),o.alignment){case"right":d+=-1*n.parent().outerWidth()+o.offsetX;break;case"center":case"left":default:d+=n.parent().outerWidth()+o.offsetX}navigator.userAgent.match(/MSIE ([0-9]+)\./)&&RegExp.$1<8&&(d+=o.IEOffsetX,f+=o.IEOffsetY),t.css("left",d+"px").css("top",f+"px").css("opacity","0.01").show();var C=!1;switch(d="relative"==n.css("position")||"absolute"==n.css("position")?-1*p.left:0,t.offset().left<0?(d+=n.parent().outerWidth()-o.offsetX,C=!0):t.offset().left+g>l.width()&&(d+=-1*n.parent().outerWidth()-o.offsetX,C=!0),C&&t.css("left",d+"px"),t.hide().css("opacity","1"),o.mode){case"zoom":r=!0,n.addClass(o.openerActiveClass),t.animate({width:"toggle",height:"toggle"},o.speed,o.easing,function(){r=!1});break;case"slide":r=!0,n.addClass(o.openerActiveClass),t.animate({height:"toggle"},o.speed,o.easing,function(){r=!1});break;case"fade":if(r=!0,v&&!o.noOpenerFade){var C;C="slow"==o.speed?80:"fast"==o.speed?40:Math.floor(o.speed/2),n.fadeTo(C,.01,function(){n.addClass(o.openerActiveClass),n.fadeTo(o.speed,1),t.fadeIn(o.speed,function(){r=!1})})}else n.addClass(o.openerActiveClass),n.fadeTo(o.speed,1),t.fadeIn(o.speed,function(){r=!1});break;case"instant":default:n.addClass(o.openerActiveClass),t.show()}return!1}).on("doCollapse",function(){return t.is(":visible")?(t.hide(),n.removeClass(o.openerActiveClass),t.find("."+o.openerActiveClass).removeClass(o.openerActiveClass),t.find("ul").hide(),!1):!1}).on("doToggle",function(e){return t.is(":visible")?t.trigger("doCollapse"):t.trigger("doExpand"),!1}),n.disableSelection_dropotron().addClass("opener").css("cursor","pointer").on("click touchend",function(e){r||(e.preventDefault(),e.stopPropagation(),t.trigger("doToggle"))}),"hover"==o.expandMode&&n.hover(function(e){r||(d=window.setTimeout(function(){t.trigger("doExpand")},o.hoverDelay))},function(e){window.clearTimeout(d)})}),s.find("a").css("display","block").on("click touchend",function(t){r||e(this).attr("href").length<1&&t.preventDefault()}),n.find("li").css("white-space","nowrap").each(function(){var t=e(this),o=t.children("a"),s=t.children("ul"),i=o.attr("href");o.on("click touchend",function(e){0==i.length||"#"==i?e.preventDefault():e.stopPropagation()}),o.length>0&&0==s.length&&t.on("click touchend",function(e){r||(n.trigger("doCollapseAll"),e.stopPropagation())})}),n.children("li").each(function(){var t,n=e(this),s=n.children("ul");if(s.length>0){o.detach&&(o.cloneOnDetach&&(t=s.clone(),t.attr("class","").hide().appendTo(s.parent())),s.detach().appendTo(i));for(var a=o.baseZIndex,l=1,r=s;r.length>0;l++)r.css("z-index",a++),o.submenuClassPrefix&&r.addClass(o.submenuClassPrefix+(a-1-o.baseZIndex)),r=r.find("> li > ul")}}),l.on("scroll",function(){n.trigger("doCollapseAll")}).on("keypress",function(e){r||27!=e.keyCode||(e.preventDefault(),n.trigger("doCollapseAll"))}),a.on("click touchend",function(){r||n.trigger("doCollapseAll")})}}(jQuery); diff --git a/assets/js/jquery.flexdatalist.css b/assets/js/jquery.flexdatalist.css new file mode 100755 index 0000000..3c9fba6 --- /dev/null +++ b/assets/js/jquery.flexdatalist.css @@ -0,0 +1,134 @@ +/** + * jQuery Flexdatalist basic stylesheet. + * + * Version: + * 2.2.1 + * + * Github: + * https://github.com/sergiodlopes/jquery-flexdatalist/ + * + */ +.flexdatalist-results { + position: absolute; + top: 0; + left: 0; + border: 1px solid #444; + border-top: none; + background: #fff; + z-index: 100000; + max-height: 300px; + overflow-y: auto; + box-shadow: 0 4px 5px rgba(0, 0, 0, 0.15); + color: #333; + list-style: none; + margin: 0; + padding: 0; +} +.flexdatalist-results li { + border-bottom: 1px solid #ccc; + padding: 8px 15px; + font-size: 14px; + line-height: 20px; +} +.flexdatalist-results li span.highlight { + font-weight: 700; + text-decoration: underline; +} +.flexdatalist-results li.active { + background: #2B82C9; + color: #fff; + cursor: pointer; +} +.flexdatalist-results li.no-results { + font-style: italic; + color: #888; +} + +/** + * Grouped items + */ +.flexdatalist-results li.group { + background: #F3F3F4; + color: #666; + padding: 8px 8px; +} +.flexdatalist-results li .group-name { + font-weight: 700; +} +.flexdatalist-results li .group-item-count { + font-size: 85%; + color: #777; + display: inline-block; + padding-left: 10px; +} + +/** + * Multiple items + */ +.flexdatalist-multiple:before { + content: ''; + display: block; + clear: both; +} +.flexdatalist-multiple { + width: 100%; + margin: 0; + padding: 0; + list-style: none; + text-align: left; + cursor: text; +} +.flexdatalist-multiple.disabled { + background-color: #eee; + cursor: default; +} +.flexdatalist-multiple:after { + content: ''; + display: block; + clear: both; +} +.flexdatalist-multiple li { + display: inline-block; + position: relative; + margin: 5px; +} +.flexdatalist-multiple li.input-container, +.flexdatalist-multiple li.input-container input { + border: none; + height: auto; + padding: 0 0 0 4px; + line-height: 24px; +} + +.flexdatalist-multiple li.value { + display: inline-block; + padding: 2px 25px 2px 7px; + background: #efefef; + border-radius: 3px; + color: #444; + line-height: 20px; + float: left; +} +.flexdatalist-multiple li.toggle { + cursor: pointer; + transition: opacity ease-in-out 300ms; +} +.flexdatalist-multiple li.toggle.disabled { + text-decoration: line-through; + opacity: 0.80; +} + +.flexdatalist-multiple li.value span.fdl-remove { + font-weight: 700; + padding: 2px 5px; + font-size: 20px; + line-height: 20px; + cursor: pointer; + position: absolute; + top: 0; + right: 0; + opacity: 0.70; +} +.flexdatalist-multiple li.value span.fdl-remove:hover { + opacity: 1; +} diff --git a/assets/js/jquery.flexdatalist.js b/assets/js/jquery.flexdatalist.js new file mode 100755 index 0000000..53e0562 --- /dev/null +++ b/assets/js/jquery.flexdatalist.js @@ -0,0 +1,2083 @@ +/** + * jQuery Flexdatalist. + * Autocomplete input fields, with support for datalists. + * + * Version: + * 2.3.0 + * + * Depends: + * jquery.js > 1.8.3 + * + * Demo and Documentation: + * http://projects.sergiodinislopes.pt/flexdatalist/ + * + * Github: + * https://github.com/sergiodlopes/jquery-flexdatalist/ + * + */ + +jQuery.fn.flexdatalist = function (_option, _value) { + 'use strict'; + + var destroy = function ($flex, clear) { + $flex.each(function () { + var $this = $(this), + data = $this.data(), + options = data.flexdatalist, + $aliascontainer = data.aliascontainer; + + if ($aliascontainer) { + $this.removeClass('flexdatalist-set') + .attr({'style': null, 'tabindex': null}) + .val((options && options.originalValue && !clear ? options.originalValue : '')) + .removeData('flexdatalist') + .removeData('aliascontainer') + .off(); + $aliascontainer.remove(); + } + }); + } + + // Callable stuff + if (typeof _option === 'string' && _option !== 'reset') { + if (typeof this[0] === 'object' && typeof this[0].fvalue !== 'undefined') { + var target = this[0]; + if (_option === 'destroy') { + destroy(this, _value); + // Get/Set value + } else if (_option === 'value') { + if (typeof _value === 'undefined') { + return target.fvalue.get(); + } + target.fvalue.set(_value); + // Add value + } else if (_option === 'add') { + if (typeof _value === 'undefined') { + return target.debug('Missing value to add!'); + } + target.fvalue.add(_value); + // Toggle value + } else if (_option === 'toggle') { + if (typeof _value === 'undefined') { + return target.debug('Missing value to toggle!'); + } + target.fvalue.toggle(_value); + // Remove value + } else if (_option === 'remove') { + if (typeof _value === 'undefined') { + return target.debug('Missing value to remove!'); + } + target.fvalue.remove(_value); + // Disabled/enabled + } else if (_option === 'disabled') { + if (typeof _value === 'undefined') { + return target.fdisabled(); + } + target.fdisabled(_value); + // Option(s) + } else if (typeof _option === 'string') { + if (typeof _value === 'undefined') { + return target.options.get(_option); + } + target.options.set(_option, _value); + } + return this; + } + _option = {_option: _value}; + } + + // Destroy if already set + if (this.length > 0 && typeof this[0].fvalue !== 'undefined') { + destroy(this); + } + + var _options = $.extend({ + url: null, + data: [], + params: {}, + relatives: null, + chainedRelatives: false, + cache: true, + cacheLifetime: 60, + minLength: 3, + groupBy: false, + selectionRequired: false, + focusFirstResult: false, + textProperty: null, + valueProperty: null, + visibleProperties: [], + iconProperty: 'thumb', + searchIn: ['label'], + searchContain: false, + searchEqual: false, + searchByWord: false, + searchDisabled: false, + searchDelay: 400, + normalizeString: null, + multiple: null, + disabled: null, + maxShownResults: 100, + removeOnBackspace: true, + noResultsText: 'No results found for "{keyword}"', + toggleSelected: false, + allowDuplicateValues: false, + redoSearchOnFocus: true, + requestType: 'get', + requestContentType: 'x-www-form-urlencoded', + requestHeaders: null, + resultsProperty: 'results', + keywordParamName: 'keyword', + searchContainParamName: 'contain', + limitOfValues: 0, + valuesSeparator: ',', + debug: true + }, _option); + + return this.each(function (id) { + var $this = $(this), + _this = this, + _searchTimeout = null, + _values = [], + fid = 'flex' + id, + $alias = null, + $multiple = null; + + /** + * Initialization + */ + this.init = function () { + var options = this.options.init(); + this.set.up(); + + $alias + // Focusin + .on('focusin', function (event) { + _this.action.redoSearchFocus(event); + _this.action.showAllResults(event); + if ($multiple) { + $multiple.addClass('focus'); + } + }) + // Keydown + .on('input keydown', function (event) { + if (_this.keyNum(event) === 9) { + _this.results.remove(); + } + _this.action.keypressValue(event, 188); + _this.action.backSpaceKeyRemove(event); + }) + // Keyup + .on('input keyup', function (event) { + _this.action.keypressValue(event, 13); + _this.action.keypressSearch(event); + _this.action.copyValue(event); + _this.action.backSpaceKeyRemove(event); + _this.action.showAllResults(event); + _this.action.clearValue(event); + _this.action.removeResults(event); + _this.action.inputWidth(event); + }) + // Focusout + .on('focusout', function (event) { + if ($multiple) { + $multiple.removeClass('focus'); + } + _this.action.clearText(event); + _this.action.clearValue(event); + }); + + window.onresize = function (event) { + _this.position(); + }; + + // Run garbage collector + this.cache.gc(); + + if (options.selectionRequired) { + _this.fvalue.clear(true, true); + } + this.fvalue._load(options.originalValue, function (values, matches) { + _this.fdisabled(options.disabled); + $this.trigger('init:flexdatalist', [options]); + }, true); + } + + /** + * Handle user actions. + */ + this.action = { + /** + * Add value on comma or enter keypress. + */ + keypressValue: function (event, keyCode) { + var key = _this.keyNum(event), + val = $alias[0].value, + options = _this.options.get(); + + if (val.length > 0 + && key === keyCode + && !options.selectionRequired + && options.multiple) { + var val = $alias[0].value; + event.preventDefault(); + event.stopPropagation(); + _this.fvalue.extract(val); + _this.results.remove(); + } + }, + /** + * Check if keypress is valid. + */ + keypressSearch: function (event) { + var key = _this.keyNum(event), + keyword = $alias.val(), + length = keyword.length, + options = _this.options.get(); + + clearTimeout(_searchTimeout); + if (!key || (key !== 13 && (key < 37 || key > 40))) { + _searchTimeout = setTimeout(function () { + if ((options.minLength === 0 && length > 0) || (options.minLength > 0 && length >= options.minLength)) { + _this.data.load(function (data) { + _this.search.get(keyword, data, function (matches) { + _this.results.show(matches); + }); + }); + } + }, options.searchDelay); + } + }, + /** + * Redo search if input get's back on focus and no value selected. + */ + redoSearchFocus: function (event) { + var val = _this.fvalue.get(), + options = _this.options.get(), + alias = $alias.val(); + if (options.redoSearchOnFocus && ((alias.length > 0 && options.multiple) || (alias.length > 0 && val.length === 0))) { + this.keypressSearch(event); + } + }, + /** + * Copy value from alias to target input. + */ + copyValue: function (event) { + if (_this.keyNum(event) !== 13) { + var keyword = $alias.val(), + val = _this.fvalue.get(true), + options = _this.options.get(); + if (!options.multiple && !options.selectionRequired && keyword.length !== val.length) { + _this.fvalue.extract(keyword); + } + } + }, + /** + * Remove value on backspace key (multiple input only). + */ + backSpaceKeyRemove: function (event) { + var options = _this.options.get(); + if (options.removeOnBackspace && options.multiple) { + var val = $alias.val(), + $remove = $alias.data('_remove'); + if (_this.keyNum(event) === 8) { + if (val.length === 0) { + if ($remove) { + _this.fvalue.remove($remove); + $alias.data('_remove', null); + } else { + $alias.data('_remove', $alias.parents('li:eq(0)').prev()); + } + } else { + $alias.data('_remove', null); + } + } + } + }, + /** + * Show all results if minLength option is 0. + */ + showAllResults: function (event) { + var val = $alias.val(); + val = $.trim(val); + if (val === '' && _this.options.get('minLength') === 0) { + _this.data.load(function (data) { + _this.results.show(data); + }); + } + }, + /** + * Calculate input width by number of characters. + */ + inputWidth: function (event) { + var options = _this.options.get(); + if (options.multiple) { + var keyword = $alias.val(), + fontSize = parseInt($alias.css('fontSize').replace('px', '')), + minWidth = 40, + maxWidth = $this.innerWidth(), + width = ((keyword.length + 1) * fontSize); + + if (width >= minWidth && width <= maxWidth) { + $alias[0].style.width = width + 'px'; + } + } + }, + /** + * Clear text/alias input when criteria is met. + */ + clearText: function (event) { + var val = _this.fvalue.get(), + options = _this.options.get(); + + if (!options.multiple && options.selectionRequired && val.length === 0) { + $alias[0].value = ''; + } + }, + /** + * Clear value when criteria is met. + */ + clearValue: function (event) { + var val = _this.fvalue.get(), + keyword = $alias.val(), + options = _this.options.get(); + + if (!options.multiple && options.selectionRequired && keyword.length <= options.minLength) { + _this.fvalue.clear(); + } + }, + /** + * Remove results when criteria is met. + */ + removeResults: function (event) { + var keyword = $alias.val(), + options = _this.options.get(); + if (options.minLength > 0 && keyword.length < options.minLength) { + _this.results.remove(); + } + } + } + + /** + * Setup flex. + */ + this.set = { + /** + * Prepare input replacement. + */ + up: function () { + $alias = this.getAlias(); + if (_this.options.get('multiple')) { + $multiple = this.multipleInput($alias); + } else { + $alias.insertAfter($this); + } + + this.accessibility($alias); + + // Respect autofocus attribute + if ($this.attr('autofocus')) { + $alias.trigger('focus'); + } + + $this.data('aliascontainer', ($multiple ? $multiple : $alias)).addClass('flexdatalist flexdatalist-set').css({ + 'position': 'absolute', + 'top': -14000, + 'left': -14000 + }).attr('tabindex', -1); + + // update input label with alias id + var inputId = $this.attr('id'), + aliasId = $alias.attr('id'); + $('label[for="' + inputId + '"]').attr('for', aliasId); + + this.chained(); + }, + /** + * Create and return the alias input field for single value input. + */ + getAlias: function () { + var aliasid = ($this.attr('id') ? $this.attr('id') + '-flexdatalist' : fid); + var $alias = $('') + .attr({ + 'class': $this.attr('class'), + 'name': ($this.attr('name') ? 'flexdatalist-' + $this.attr('name') : null), + 'id': aliasid, + 'placeholder': $this.attr('placeholder') + }) + .addClass('flexdatalist-alias ' + aliasid) + .removeClass('flexdatalist') + .attr('autocomplete', 'off'); + return $alias; + }, + /** + * Multiple values input/list + */ + multipleInput: function ($alias) { + $multiple = $('
    ') + .addClass('flexdatalist-multiple ' + fid) + .css({ + 'border-color': $this.css('border-left-color'), + 'border-width': $this.css('border-left-width'), + 'border-style': $this.css('border-left-style'), + 'border-radius': $this.css('border-top-left-radius'), + 'background-color': $this.css('background-color') + }) + .insertAfter($this).on('click', function () { + $(this).find('input').trigger('focus'); + }); + + $('
  • ') + .addClass('flexdatalist-multiple-value') + .append($alias) + .appendTo($multiple); + + return $multiple; + }, + /** + * Chained inputs handling. + */ + chained: function () { + var options = _this.options.get(); + if (options.relatives && options.chainedRelatives) { + var toggle = function (init) { + options.relatives.each(function () { + var emptyRelative = _this.isEmpty($(this).val()), + empty = _this.isEmpty(_this.value); + // If disabling, clear all values + if (emptyRelative || !empty) { + _this.fvalue.clear(); + } + _this.fdisabled(emptyRelative); + }); + }; + options.relatives.on('change', function () { + toggle(); + }); + toggle(true); + } + }, + /** + * Accessibility. + */ + accessibility: function ($input) { + var aliasid = ($this.attr('id') ? $this.attr('id') + '-flexdatalist' : fid); + var scrReaderAttr = { + 'aria-autocomplete': 'list', + 'aria-expanded': 'false', + 'aria-owns': aliasid + '-results', + }; + + $input.attr(scrReaderAttr); + } + } + + /** + * Process input value(s) (where the magic happens). + */ + this.fvalue = { + /** + * Get value(s). + */ + get: function (asString) { + var val = _this.value, + options = _this.options.get(); + if ((options.multiple || this.isJSON()) && !asString) { + return this.toObj(val); + } + return val; + }, + /** + * Set value. + * Parse value if necessary. + */ + set: function (val, append) { + if (!_this.fdisabled()) { + if (!append) { + this.clear(true); + } + this._load(val); + } + return $this; + }, + /** + * Add value. + */ + add: function (val) { + if (_this.options.get('multiple')) { + this.set(val, true); + } + return this; + }, + /** + * Toggle value. + */ + toggle: function (val) { + if (!_this.fdisabled()) { + this.multiple.toggle(val); + } + return this; + }, + /** + * Remove value. + */ + remove: function (val) { + if (!_this.fdisabled()) { + val = this.toObj(val); + $this.trigger('before:flexdatalist.remove', [val]); + var result = []; + if (_this.isArray(val)) { + $.each(val, function (i, value) { + var removed = _this.fvalue.multiple.remove(value); + if (removed) { + result.push(removed); + } + }); + } else { + var _result = this.multiple.remove(val); + if (_result) { + result.push(_result); + } + } + $this + .trigger('after:flexdatalist.remove', [val, result]) + .trigger('change:flexdatalist', [result, _this.options.get()]) + .trigger('change'); + } + return this; + }, + /** + * Load (remote?) value(s). + */ + _load: function (values, callback, init) { + var options = _this.options.get(), + valueProp = options.valueProperty, + _values = this.toStr(values), + _val = this.get(true); + + callback = (callback ? callback : $.noop); + // If nothing changes, return + if (_values.length == 0 && _val.length == 0) { + callback(values); + return; + } + values = this.toObj(values); + if (!_this.isEmpty(values) && !_this.isEmpty(valueProp) && valueProp !== '*') { + if (!_this.isObject(valueProp)) { + valueProp = valueProp.split(','); + } + // Load data + _this.data.load(function (data) { + if (!_this.isObject(values)) { + values = values.split(','); + } else if (!_this.isArray(values)) { + values = [values]; + } + var found = []; + for (var idxv = 0; idxv < values.length; idxv++) { + var value = values[idxv]; + for (var i = 0; i < data.length; i++) { + var item = data[i]; + for (var idx = 0; idx < valueProp.length; idx++) { + var prop = valueProp[idx], + value = _this.isDefined(value, prop) ? value[prop] : value; + if (_this.isDefined(item, prop) && value === item[prop]) { + found.push(item); + } + } + } + } + if (found.length > 0) { + _this.fvalue.extract(found, true); + } + callback(values); + }, values); + return; + } + callback(values); + _this.fvalue.extract(values, init); + }, + /** + * Extract value and text. + */ + extract: function (values, init) { + var options = _this.options.get(), + result = []; + + if (!init) { + $this.trigger('before:flexdatalist.value', [values, options]); + } + + if (_this.isArray(values)) { + $.each(values, function (i, value) { + result.push(_this.fvalue._extract(value)); + }); + } else { + result = _this.fvalue._extract(values); + } + + if (!init) { + $this + .data('result_selected', values) + .trigger('after:flexdatalist.value', [result, options]) + .trigger('change:flexdatalist', [result, options]) + .trigger('change'); + } + }, + /** + * @inherited. + */ + _extract: function (val) { + var txt = this.text(val), + value = this.value(val), + options = _this.options.get(); + + if (options.multiple) { + // For allowDuplicateValues + if (!_this.isEmpty(txt)) { + if (_this.isDup(txt)) { + return; + } + _values.push(txt); + this.multiple.add(value, txt); + } + } else { + this.single(value, txt); + } + + return {value: value, text: txt}; + }, + /** + * Default input value. + */ + single: function (val, txt) { + if (txt && txt !== $alias.val()) { + $alias[0].value = txt; + } + _this.value = val; + }, + /** + * Input with multiple values. + */ + multiple: { + /** + * Add value and item on list. + */ + add: function (val, txt) { + var _multiple = this, + $li = this.li(val, txt); + + // Toggle + $li.on('click', function () { + _multiple.toggle($(this)); + // Remove + }).find('.fdl-remove').on('click', function () { + _this.fvalue.remove($(this).parent()); + }); + + this.push(val); + $alias[0].value = ''; + this.handleLimit(); + }, + /** + * Push value to input. + */ + push: function (val, index) { + var current = _this.fvalue.get(); + if (current.includes(val)) { + return; + } + val = _this.fvalue.toObj(val); + current.push(val); + val = _this.fvalue.toStr(current); + _this.value = val; + }, + /** + * Toggle value. + */ + toggle: function (val) { + var options = _this.options.get(); + if (!options.toggleSelected) { + return; + } + + var $li = this.findLi(val); + if (!$li) { + return; + } + + var data = $li.data(), + action = $li.hasClass('disabled') ? 'enable' : 'disable', + eventArgs = [{value: data.value, text: data.text, action: action}, options]; + + $this.trigger('before:flexdatalist.toggle', eventArgs); + + if (action === 'enable') { + $li.removeClass('disabled'); + } else { + $li.addClass('disabled'); + } + + var current = []; + $multiple.find('li.toggle:not(.disabled)').each(function () { + var $item = $(this); + current.push($item.data('value')); + }); + + current = _this.fvalue.toStr(current); + _this.value = current; + + $this + .trigger('after:flexdatalist.toggle', eventArgs) + .trigger('change:flexdatalist', eventArgs) + .trigger('change'); + + }, + /** + * Remove value from input. + */ + remove: function (val) { + var $li = this.findLi(val); + if (!$li) { + return; + } + + var values = _this.fvalue.get(), + index = $li.index(), + data = $li.data(), + arg = {value: data.value, text: data.text}; + + values.splice(index, 1); + values = _this.fvalue.toStr(values); + _this.value = values; + $li.remove(); + _this.fvalue.multiple.handleLimit(); + + // For allowDuplicateValues + _values.splice(index, 1); + + this.handleLimit(); + + return arg; + }, + /** + * Remove all. + */ + removeAll: function () { + var values = _this.fvalue.get(), + options = _this.options.get(); + + $this.trigger('before:flexdatalist.remove.all', [values, options]); + + $multiple.find('li:not(.input-container)').remove(); + + _this.value = ''; + _values = []; + + this.handleLimit(); + + $this.trigger('after:flexdatalist.remove.all', [values, options]); + }, + /** + * Create new item and return it. + */ + li: function (val, txt) { + var $inputContainer = $multiple.find('li.input-container'); + var options = _this.options.get(); + return $('
  • ') + .addClass('value' + (options.toggleSelected ? ' toggle' : '')) + .append('' + txt + '') + .append('×') + .data({ + 'text': txt, + 'value': _this.fvalue.toStr(val) + }) + .insertBefore($inputContainer); + }, + /** + * Handle the limit. + * + * @return void + */ + handleLimit: function () { + var isAtLimit = this.isAtLimit(); + var $input = $multiple.find('li.input-container'); + isAtLimit ? $input.hide() : $input.show(); + }, + /** + * Check the limit of items. + * + * @return bool True if reached the limit, false otherwise + */ + isAtLimit: function () { + var limit = _this.options.get('limitOfValues'); + if (!(limit > 0)) { + return false; + } + return limit == _values.length; + }, + /** + * Get li item from value. + */ + findLi: function ($li) { + if (!($li instanceof jQuery)) { + var val = $li; + $li = null; + $multiple.find('li:not(.input-container)').each(function () { + var $_li = $(this); + if ($_li.data('value') === val) { + $li = $_li; + return false; + } + }); + } else if ($li.length === 0) { + $li = null; + } + return $li; + }, + /** + * Get li item from value. + */ + isEmpty: function () { + return this.get().length > 0; + } + }, + /** + * Get value that will be set on input field. + */ + value: function (item) { + var value = item, + options = _this.options.get(), + valueProperty = options.valueProperty; + + if (_this.isObject(item)) { + if (this.isJSON() || this.isMixed()) { + delete item.name_highlight; + if (_this.isArray(valueProperty)) { + var _value = {}; + for (var i = 0; i < valueProperty.length; i++) { + var propValue = _this.getPropertyValue(item, valueProperty[i]); + if (propValue) { + _value[valueProperty[i]] = propValue; + } + } + value = this.toStr(_value); + } else { + value = this.toStr(item); + } + } else if (_this.isDefined(item, valueProperty)) { + value = _this.getPropertyValue(item, valueProperty); + } else if (_this.isDefined(item, options.searchIn[0])) { + value = _this.getPropertyValue(item, options.searchIn[0]); + } else { + value = null; + } + } + return value; + }, + /** + * Get text that will be shown to user on the alias input field. + */ + text: function (item) { + var text = item, + options = _this.options.get(); + + if (_this.isObject(item)) { + text = _this.getPropertyValue(item, options.searchIn[0]); + if (_this.isDefined(item, options.textProperty)) { + text = _this.getPropertyValue(item, options.textProperty); + } else { + text = this.placeholders.replace(item, options.textProperty, text); + } + } + + text = _this.escapeHtml(text); + + return text; + }, + /** + * Process text placeholders. + */ + placeholders: { + replace: function (item, pattern, fallback) { + if (_this.isObject(item) && typeof pattern === 'string') { + var properties = this.parse(pattern); + if (!_this.isEmpty(item) && properties) { + $.each(properties, function (string, property) { + if (_this.isDefined(item, property)) { + pattern = pattern.replace(string, _this.getPropertyValue(item, property)); + } + }); + return pattern; + } + } + return fallback; + }, + parse: function (pattern) { + var matches = pattern.match(/\{.+?\}/g); + if (!matches) { + return false; + } + var properties = {}; + matches.map(function (string) { + properties[string] = string.slice(1, -1); + }); + return properties; + } + }, + /** + * Clear input value(s). + */ + clear: function (alias, init) { + var current = _this.value, + options = _this.options.get(); + + if (options.multiple) { + this.multiple.removeAll(); + } + + _this.value = ''; + if (alias) { + $alias[0].value = ''; + } + if (current !== '' && !init) { + $this + .trigger('change:flexdatalist', [{value: '', text: ''}, options]) + .trigger('clear:flexdatalist', [{value: '', text: ''}, options]) + .trigger('change'); + } + _values = []; + return this; + }, + /** + * Value to object. + */ + toObj: function (val) { + if (typeof val !== 'object') { + var options = _this.options.get(); + if (_this.isEmpty(val) || !_this.isDefined(val)) { + val = options.multiple ? [] : (this.isJSON() ? {} : ''); + } else if (this.isCSV()) { + val = val.toString().split(options.valuesSeparator); + val = val.map(function (v) { + return v.trim(); + }); + } else if ((this.isMixed() || this.isJSON()) && this.isJSON(val)) { + val = JSON.parse(val); + } else if (typeof val === 'number') { + val = val.toString(); + } + } + return val; + }, + /** + * Is value expected to be JSON (either object or string). + */ + toStr: function (val) { + if (typeof val !== 'string') { + if (_this.isEmpty(val) || !_this.isDefined(val)) { + val = ''; + } else if (typeof val === 'number') { + val = val.toString(); + } else if (this.isCSV()) { + val = val.join(_this.options.get('valuesSeparator')); + } else if (this.isJSON() || this.isMixed()) { + val = JSON.stringify(val); + } + } + return $.trim(val); + }, + /** + * If argument is passed, will check if is a valid JSON object/string. + * otherwise will check if JSON is the value expected for input + */ + isJSON: function (str) { + if (typeof str !== 'undefined') { + if (_this.isObject(str)) { + str = JSON.stringify(str); + } else if (typeof str !== 'string') { + return false; + } + return (str.indexOf('{') === 0 || str.indexOf('[{') === 0); + } + var options = _this.options.get(), + prop = options.valueProperty; + return (_this.isObject(prop) || prop === '*'); + }, + /** + * Is value expected to be JSON (either object or string). + */ + isMixed: function () { + var options = _this.options.get(); + return !options.selectionRequired && options.valueProperty === '*'; + }, + /** + * Is value expected to be CSV? + */ + isCSV: function () { + return (!this.isJSON() && _this.options.get('multiple')); + } + } + + /** + * Data. + */ + this.data = { + /** + * Load data from all sources. + */ + load: function (callback, load) { + var __this = this, + data = []; + $this.trigger('before:flexdatalist.data'); + // Remote data + this.url(function (remote) { + data = data.concat(remote); + // Static data + __this.static(function (_static) { + data = data.concat(_static); + // Datalist + __this.datalist(function (list) { + data = data.concat(list); + + $this.trigger('after:flexdatalist.data', [data]); + callback(data); + }); + }); + }, load); + }, + /** + * Get static data. + */ + static: function (callback) { + var __this = this, + options = _this.options.get(); + // Remote source + if (typeof options.data === 'string') { + var url = options.data, + cache = _this.cache.read(url, true); + if (cache) { + callback(cache); + return; + } + this.remote({ + url: url, + success: function (data) { + options.data = data; + callback(data); + _this.cache.write(url, data, options.cacheLifetime, true); + } + }); + } else { + if (typeof options.data !== 'object') { + options.data = []; + } + callback(options.data); + } + }, + /** + * Get datalist values. + */ + datalist: function (callback) { + var list = $this.attr('list'), + datalist = []; + if (!_this.isEmpty(list)) { + $('#' + list).find('option').each(function () { + var $option = $(this), + val = $option.val(), + label = $option.text(); + datalist.push({ + label: (label.length > 0 ? label : val), + value: val + }); + }); + } + callback(datalist); + }, + /** + * Get remote data. + */ + url: function (callback, load) { + var keyword = $alias.val(), + options = _this.options.get(), + keywordParamName = options.keywordParamName, + searchContainParamName = options.searchContainParamName, + value = _this.fvalue.get(), + relatives = this.relativesData(); + + if (_this.isEmpty(options.url)) { + return callback([]); + } + + var _opts = {}; + if (options.requestType === 'post') { + $.each(options, function (option, value) { + if (option.indexOf('_') == 0 || option == 'data') { + return; + } + _opts[option] = value; + }); + delete _opts.relatives; + } + + // Cache + var cacheKey = _this.cache.keyGen({ + relative: relatives, + load: load, + keyword: keyword, + contain: options.searchContain + }, options.url), + cache = _this.cache.read(cacheKey, true); + + if (cache) { + callback(cache); + return; + } + + var params = typeof(options.params) == 'function' ? + options.params.call($this[0], keyword) : + options.params; + + var data = $.extend( + relatives, + params, + { + load: load, + selected: value, + original: options.originalValue, + options: _opts + } + ); + + data[keywordParamName] = keyword; + data[searchContainParamName] = options.searchContain; + + this.remote({ + url: options.url, + data: data, + success: function (_data) { + var _keyword = $alias.val(); + // Is this really needed? + if (_keyword.length >= keyword.length) { + callback(_data); + } + _this.cache.write(cacheKey, _data, options.cacheLifetime, true); + } + }); + }, + /** + * AJAX request. + */ + remote: function (settings) { + var __this = this, + options = _this.options.get(); + + // Prevent get data when pressing backspace button + if ($this.hasClass('flexdatalist-loading')) { + return; + } + $this.addClass('flexdatalist-loading'); + + if (options.requestContentType === 'json') { + settings.data = JSON.stringify(settings.data); + } + + $.ajax($.extend( + { + type: options.requestType, + dataType: 'json', + headers: options.requestHeaders, + contentType: 'application/' + options.requestContentType + '; charset=UTF-8', + complete: function () { + $this.removeClass('flexdatalist-loading'); + } + }, settings, { + success: function (data) { + data = __this.extractRemoteData(data); + settings.success(data); + } + } + )); + }, + /** + * Extract remote data from server response. + */ + extractRemoteData: function (data) { + var options = _this.options.get(), + _data = _this.isDefined(data, options.resultsProperty) ? data[options.resultsProperty] : data; + + if (typeof _data === 'string' && _data.indexOf('[{') === 0) { + _data = JSON.parse(_data); + } + if (_data && _data.options) { + _this.options.set($.extend({}, options, _data.options)); + } + if (_this.isObject(_data)) { + return _data; + } + return []; + }, + /** + * Extract remote data from server response. + */ + relativesData: function () { + var relatives = _this.options.get('relatives'), + data = {}; + if (relatives) { + data['relatives'] = {}; + relatives.each(function () { + var $_input = $(this), + name = $_input.attr('name') + .split('][').join('-') + .split(']').join('-') + .split('[').join('-') + .replace(/^\|+|\-+$/g, ''); + data['relatives'][name] = $_input.val(); + }); + } + return data; + } + } + + /** + * Search. + */ + this.search = { + /** + * Search for keywords in data and return matches to given callback. + */ + get: function (keywords, data, callback) { + var __this = this, + options = _this.options.get(), + matches = data; + + if (!options.searchDisabled) { + var matches = _this.cache.read(keywords); + if (!matches) { + $this.trigger('before:flexdatalist.search', [keywords, data]); + if (!_this.isEmpty(keywords)) { + matches = []; + var words = __this.split(keywords); + for (var index = 0; index < data.length; index++) { + var item = data[index]; + if (_this.isDup(item)) { + continue; + } + item = __this.matches(item, words); + if (item) { + matches.push(item); + } + } + } + _this.cache.write(keywords, matches, 2); + $this.trigger('after:flexdatalist.search', [keywords, data, matches]); + } + } + + callback(matches); + }, + /** + * Match against searchable properties. + */ + matches: function (item, keywords) { + var _item = $.extend({}, item), + found = [], + options = _this.options.get(), + searchIn = options.searchIn; + + if (keywords.length > 0) { + for (var index = 0; index < searchIn.length; index++) { + var searchProperty = searchIn[index]; + if (!_this.isDefined(item, searchProperty) || !item[searchProperty]) { + continue; + } + + var text = item[searchProperty].toString(), + highlight = text, + strings = this.split(text); + + for (var kwindex = 0; kwindex < keywords.length; kwindex++) { + var keyword = keywords[kwindex]; + if (this.find(keyword, strings)) { + found.push(keyword); + highlight = this.highlight(keyword, highlight); + } + } + + if (highlight !== text) { + _item[searchProperty + '_highlight'] = this.highlight(highlight); + } + } + + } + + if (found.length === 0 || (options.searchByWord && found.length < (keywords.length - 1))) { + return false; + } + + return _item; + }, + /** + * Wrap found keyword with span.highlight. + */ + highlight: function (keyword, text) { + if (text) { + // Fix by https://github.com/antunesl + keyword = keyword.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); + return text.replace( + new RegExp(keyword, (_this.options.get('searchContain') ? "ig" : "i")), + '|:|$&|::|' + ); + } + keyword = keyword.split('|:|').join(''); + return keyword.split('|::|').join(''); + }, + /** + * Search for keyword(s) in string. + */ + find: function (keyword, splitted) { + var options = _this.options.get(); + for (var index = 0; index < splitted.length; index++) { + var text = splitted[index]; + text = this.normalizeString(text), + keyword = this.normalizeString(keyword); + if (options.searchEqual) { + return text == keyword; + } + if ((options.searchContain ? (text.indexOf(keyword) >= 0) : (text.indexOf(keyword) === 0))) { + return true; + } + } + return false; + }, + /** + * Split string by words if needed. + */ + split: function (keywords) { + if (typeof keywords === 'string') { + keywords = [$.trim(keywords)]; + } + if (_this.options.get('searchByWord')) { + for (var index = 0; index < keywords.length; index++) { + var keyword = $.trim(keywords[index]); + if (keyword.indexOf(' ') > 0) { + var words = keyword.split(' '); + $.merge(keywords, words); + } + } + } + return keywords; + }, + /** + * Normalize string to a consistent one to perform the search/match. + */ + normalizeString: function (string) { + if (typeof string === 'string') { + var normalizeString = _this.options.get('normalizeString'); + if (typeof normalizeString === 'function') { + string = normalizeString(string); + } + string = string.normalize("NFD").replace(/[\u0300-\u036f]/g, ""); + return string.toUpperCase(); + } + return string; + } + } + + /** + * Handle results. + */ + this.results = { + /** + * Save key = value data in local storage (if supported) + * + * @param string key Data key string + */ + show: function (results) { + var __this = this, + options = _this.options.get(); + + this.remove(true); + + if (!results) { + return; + } else if(results.length === 0) { + this.empty(options.noResultsText); + return; + } + + var $ul = this.container(); + if (!options.groupBy) { + this.items(results, $ul); + } else { + results = this.group(results); + Object.keys(results).forEach(function (groupName, index) { + var items = results[groupName], + property = options.groupBy, + groupText = _this.results.highlight(items[0], property, groupName); + + var $li = $('
  • ') + .addClass('group') + .append($('') + .addClass('group-name') + .html(groupText) + ) + .append($('') + .addClass('group-item-count') + .text(' ' + items.length) + ) + .appendTo($ul); + + __this.items(items, $ul); + }); + } + + var $li = $ul.find('li:not(.group)'); + + // Listen to result's item events + $li.on('click', function (event) { + var item = $(this).data('item'); + if (item) { + _this.fvalue.extract(item); + __this.remove(); + $this.trigger('select:flexdatalist', [item, options]); + } + }).on('hover', function () { + $li.removeClass('active'); + $(this).addClass('active').trigger('active:flexdatalist.results', [$(this).data('item')]); + }, function () { + $(this).removeClass('active'); + }); + + if (options.focusFirstResult) { + $li.filter(':first').addClass('active'); + } + }, + /** + * Remove results container. + */ + empty: function (text) { + if (_this.isEmpty(text)) { + return; + } + var $container = this.container(), + keyword = $alias.val(); + + text = text.split('{keyword}').join(keyword); + $('
  • ') + .addClass('item no-results') + .append(text) + .appendTo($container) + + $this.trigger('empty:flexdatalist.results', [text]); + }, + /** + * Items iteration. + */ + items: function (items, $resultsContainer) { + var max = _this.options.get('maxShownResults'); + + $this.trigger('show:flexdatalist.results', [items]); + + for (var index = 0; index < items.length; index++) { + if (max > 0 && max === index) { + break; + } + this.item(items[index], index, items.length).appendTo($resultsContainer); + } + + $this.trigger('shown:flexdatalist.results', [items]); + }, + /** + * Result item creation. + */ + item: function (item, index, total) { + var $li = $('
  • ') + .attr({ + 'role': 'option', + 'tabindex': '-1', + 'aria-posinset': index + 1, + 'aria-setsize': total + }) + .data('item', item) + .addClass('item'), + options = _this.options.get(), + visibleProperties = options.visibleProperties; + + for (var index = 0; index < visibleProperties.length; index++) { + var visibleProperty = visibleProperties[index]; + + if (visibleProperty.indexOf('{') > -1) { + var str = _this.fvalue.placeholders.replace(item, visibleProperty), + parsed = _this.fvalue.placeholders.parse(visibleProperty); + $item = $('') + .addClass('item item-' + Object.values(parsed).join('-')) + .html(str + ' '); + } else { + if (options.groupBy && options.groupBy === visibleProperty || !_this.isDefined(item, visibleProperty)) { + continue; + } + var $item = {}; + if (visibleProperty === options.iconProperty) { + // Icon + $item = $('') + .addClass('item item-' + visibleProperty) + .attr('src', item[visibleProperty]); + } else { + var propertyText = _this.results.highlight(item, visibleProperty); + // Other text properties + $item = $('') + .addClass('item item-' + visibleProperty) + .html(propertyText + ' '); + } + } + + $item.appendTo($li); + } + + $this.trigger('item:flexdatalist.results', [$li, item]); + + return $li; + }, + /** + * Results container + */ + container: function () { + var $target = $this; + + if ($multiple) { + $target = $multiple; + } + + var $container = $('ul.flexdatalist-results'); + + if ($container.length === 0) { + $container = $('
      ') + .addClass('flexdatalist-results ') + .appendTo('body') + .attr({ + 'id': $alias.attr('id') + '-results', + 'role': 'listbox' + }) + .css({ + 'border-color': $target.css("border-left-color"), + 'border-width': '1px', + 'border-bottom-left-radius': $target.css("border-bottom-left-radius"), + 'border-bottom-right-radius': $target.css("border-bottom-right-radius") + }).data({ + target: ($multiple ? $multiple : $alias), + input: $this + }); + _this.position($alias); + } + + return $container; + }, + /** + * Results container + */ + group: function (results) { + var data = [], + groupProperty = _this.options.get('groupBy'); + + for (var index = 0; index < results.length; index++) { + var _data = results[index]; + if (_this.isDefined(_data, groupProperty)) { + var propertyValue = _data[groupProperty]; + if (!_this.isDefined(data, propertyValue)) { + data[propertyValue] = []; + } + data[propertyValue].push(_data); + } + } + + return data; + }, + /** + * Check if highlighted property value exists, + * if true, return it, if not, fallback to given string + */ + highlight: function (item, property, fallback) { + if (_this.isDefined(item, property + '_highlight')) { + return item[property + '_highlight']; + } + return (_this.isDefined(item, property) ? item[property] : fallback); + }, + /** + * Set given item as active + */ + active: function ($item) { + + }, + /** + * Remove results + */ + remove: function (itemsOnly) { + var selector = 'ul.flexdatalist-results'; + if (itemsOnly) { + selector = 'ul.flexdatalist-results li'; + } + $this.trigger('remove:flexdatalist.results'); + $(selector).remove(); + $this.trigger('removed:flexdatalist.results'); + } + } + + /** + * Interface for localStorage. + */ + this.cache = { + /** + * Save key = value data in local storage (if supported) + * + * @param string key Data key string + * @param mixed value Value to be saved + * @param int lifetime In Seconds + * @return mixed + */ + write: function (key, value, lifetime, global) { + if (_this.cache.isSupported()) { + key = this.keyGen(key, undefined, global); + var object = { + value: value, + // Get current UNIX timestamp + timestamp: _this.unixtime(), + lifetime: (lifetime ? lifetime : false) + }; + localStorage.setItem(key, JSON.stringify(object)); + } + }, + /** + * Read data associated with given key + * + * @param string key Data key string + * @return mixed + */ + read: function (key, global) { + if (_this.cache.isSupported()) { + key = this.keyGen(key, undefined, global); + var data = localStorage.getItem(key); + if (data) { + var object = JSON.parse(data); + if (!this.expired(object)) { + return object.value; + } + localStorage.removeItem(key); + } + } + return null; + }, + /** + * Remove data associated with given key. + * + * @param string key Data key string + */ + delete: function (key, global) { + if (_this.cache.isSupported()) { + key = this.keyGen(key, undefined, global); + localStorage.removeItem(key); + } + }, + /** + * Clear all data. + */ + clear: function () { + if (_this.cache.isSupported()) { + for (var key in localStorage){ + if (key.indexOf(fid) > -1 || key.indexOf('global') > -1) { + localStorage.removeItem(key); + } + } + localStorage.clear(); + } + }, + /** + * Run cache garbage collector to prevent using all localStorage's + * available space. + */ + gc: function () { + if (_this.cache.isSupported()) { + for (var key in localStorage){ + if (key.indexOf(fid) > -1 || key.indexOf('global') > -1) { + var data = localStorage.getItem(key); + data = JSON.parse(data); + if (this.expired(data)) { + localStorage.removeItem(key); + } + } + } + } + }, + /** + * Check if browser supports localtorage. + * + * @return boolean True if supports, false otherwise + */ + isSupported: function () { + if (_this.options.get('cache')) { + try { + return 'localStorage' in window && window['localStorage'] !== null; + } catch (e) { + return false; + } + } + return false; + }, + /** + * Check if cache data as expired. + * + * @param object object Data to check + * @return boolean True if expired, false otherwise + */ + expired: function (object) { + if (object.lifetime) { + var diff = (_this.unixtime() - object.timestamp); + return object.lifetime <= diff; + } + return false; + }, + /** + * Generate cache key from object or string. + * + * @return string Cache key + */ + keyGen: function (str, seed, global) { + if (typeof str === 'object') { + str = JSON.stringify(str); + } + var i, l, + hval = (seed === undefined) ? 0x811c9dc5 : seed; + + for (i = 0, l = str.length; i < l; i++) { + hval ^= str.charCodeAt(i); + hval += (hval << 1) + (hval << 4) + (hval << 7) + (hval << 8) + (hval << 24); + } + return (global ? 'global' : fid) + ("0000000" + (hval >>> 0).toString(16)).substr(-8); + } + } + + /** + * Options handler. + */ + this.options = { + init: function () { + var options = $.extend({}, + _options, + $this.data(), + { + multiple: (_options.multiple === null ? $this.is('[multiple]') : _options.multiple), + disabled: (_options.disabled === null ? $this.is('[disabled]') : _options.disabled), + originalValue: _this.value + } + ); + this.set(options); + return options; + }, + get: function (option) { + var options = $this.data('flexdatalist'); + if (!option) { + return options ? options : {}; + } + return _this.isDefined(options, option) ? options[option] : null; + }, + set: function (option, value) { + var options = this.get(); + if (_this.isDefined(options, option) && _this.isDefined(value)) { + options[option] = value; + } else if (_this.isObject(option)) { + options = this._normalize(option); + } + $this.data('flexdatalist', options); + return $this; + }, + _normalize: function (options) { + options.searchIn = _this.csvToArray(options.searchIn); + options.relatives = options.relatives && $(options.relatives).length > 0 ? $(options.relatives) : null; + options.textProperty = options.textProperty === null ? options.searchIn[0] : options.textProperty; + options.visibleProperties = _this.csvToArray(options.visibleProperties, options.searchIn); + if (options.valueProperty === '*' && options.multiple && !options.selectionRequired) { + throw new Error('Selection must be required for multiple, JSON fields!'); + } + return options; + } + } + + /** + * Position results below parent element. + */ + this.position = function () { + var $results = $('ul.flexdatalist-results'), + $target = $results.data('target'); + if ($results.length > 0) { + // Set some required CSS properties + $results.css({ + 'width': $target.outerWidth() + 'px', + 'top': (($target.offset().top + $target.outerHeight())) + 'px', + 'left': $target.offset().left + 'px' + }); + } + } + + /** + * Handle disabled state. + */ + this.fdisabled = function (disabled) { + if (this.isDefined(disabled)) { + $this.prop('disabled', disabled); + $alias.prop('disabled', disabled); + if ($multiple) { + $multiple.css('background-color', $this.css('background-color')); + var $btns = $multiple.find('li .fdl-remove'), + $input = $multiple.find('li.input-container'); + if (disabled) { + $multiple.addClass('disabled'); + if ($btns.length > 0) { + $input.hide(); + } + $btns.hide(); + } else { + $multiple.removeClass('disabled'); + $input.show(); + $btns.show(); + } + } + this.options.set('disabled', disabled); + } + return this.options.get('disabled'); + } + + /** + * Check for dup values. + */ + this.isDup = function (val) { + if (!this.options.get('allowDuplicateValues')) { + return _values.length > 0 && _values.indexOf(this.fvalue.text(val)) > -1; + } + return false; + } + + /** + * Get key code from event. + */ + this.keyNum = function (event) { + return event.which || event.keyCode; + } + + /** + * Is variable empty. + */ + this.isEmpty = function (value) { + if (!_this.isDefined(value)) { + return true; + } else if (value === null) { + return true; + } else if (value === true) { + return false; + } else if (this.length(value) === 0) { + return true; + } else if ($.trim(value) === '') { + return true; + } + return false; + } + + /** + * Is variable an object. + */ + this.isObject = function (value) { + return (value && typeof value === 'object'); + } + + /** + * Get length of variable. + */ + this.length = function (value) { + if (this.isObject(value)) { + return Object.keys(value).length; + } else if (typeof value === 'number' || typeof value.length === 'number') { + return value.toString().length; + } + return 0; + } + + /** + * Check if variable (and optionally property) is defined. + */ + this.isDefined = function (variable, property) { + var _variable = (typeof variable !== 'undefined'); + if (_variable && typeof property !== 'undefined') { + return (typeof this.getPropertyValue(variable, property) !== 'undefined'); + } + return _variable; + } + + /** + * Check if variable is an array. + */ + this.isArray = function (variable) { + return Object.prototype.toString.call(variable) === '[object Array]'; + } + + /** + * Get unixtime stamp. + * + * @return boolean True if supports, false otherwise + */ + this.unixtime = function (time) { + var date = new Date(); + if (time) { + date = new Date(time); + } + return Math.round(date.getTime() / 1000); + } + + /** + * To array. + */ + this.csvToArray = function (value, _default) { + if (value.length === 0) { + return _default; + } + return typeof value === 'string' ? value.split(_this.options.get('valuesSeparator')) : value; + }, + /** + * A function to take a string written in dot notation style, and use it to + * find a nested object property inside of an object. + * + * Useful in a plugin or module that accepts a JSON array of objects, but + * you want to let the user specify where to find various bits of data + * inside of each custom object instead of forcing a standardized + * property list. + * + * Thanks to https://github.com/sylvainblot for the PR. + * + * @param object object (optional) The object to search + * @param string path A dot notation style path to the value (ie "urls.small") + * @return the value of the property in question + * @see https://github.com/sergiodlopes/jquery-flexdatalist/pull/195 + */ + this.getPropertyValue = function (obj, path) { + if (!obj || typeof path !== 'string') { + return undefined; + } + + var parts = path.split('.'); + while (parts.length && (obj = obj[parts.shift()])); + return obj; + } + /** + * Escape HTML special characters. + * + * @param string str String to escape HTML + * @return string String with HTML special characters escaped + */ + this.escapeHtml = function (str) { + return str + .replace(/&/g, "&") + .replace(//g, ">") + .replace(/"/g, """) + .replace(/'/g, "'"); + } + + /** + * Plugin warnings for debug. + */ + this.debug = function (msg, data) { + var options = _this.options.get(); + if (!options.debug) { + return; + } + if (!data) { + data = {}; + } + msg = 'Flexdatalist: ' + msg; + console.warn(msg); + console.log($.extend({ + inputName: $this.attr('name'), + options: options + }, data)); + console.log('--- /flexdatalist ---'); + } + + // Go! + this.init(); + }); +} + +jQuery(function ($) { + var $document = $(document); + // Handle results selection list keyboard shortcuts and events. + if (!$document.data('flexdatalist')) { + // Remove results on outside click + $(document).on('mouseup', function (event) { + var $container = $('.flexdatalist-results'), + $target = $container.data('target'); + if ((!$target || !$target.is(':focus')) && !$container.is(event.target) && $container.has(event.target).length === 0) { + $container.remove(); + } + // Keyboard navigation + }).on('keydown', function (event) { + var $ul = $('.flexdatalist-results'), + $li = $ul.find('li'), + $active = $li.filter('.active'), + index = $active.index(), + length = $li.length, + keynum = event.which || event.keyCode; + + if (length === 0) { + return; + } + + // on escape key, remove results + if (keynum === 27) { + $ul.remove(); + return; + } + + // Enter/tab key + if (keynum === 13) { + event.preventDefault(); + $active.trigger('click'); + // Up/Down key + } else if (keynum === 40 || keynum === 38) { + event.preventDefault(); + // Down key + if (keynum === 40) { + if (index < length && $active.nextAll('.item').first().length > 0) { + $active = $active.removeClass('active').nextAll('.item').first().addClass('active'); + } else { + $active = $li.removeClass('active').filter('.item:first').addClass('active'); + } + // Up key + } else if (keynum === 38) { + if (index > 0 && $active.prevAll('.item').first().length > 0) { + $active = $active.removeClass('active').prevAll('.item').first().addClass('active'); + } else { + $active = $li.removeClass('active').filter('.item:last').addClass('active'); + } + } + + $active.trigger('active:flexdatalist.results', [$active.data('item')]); + + // Scroll to + var position = ($active.prev().length === 0 ? $active : $active.prev()).position().top; + $ul.animate({ + scrollTop: position + $ul.scrollTop() + }, 100); + } + }).data('flexdatalist', true); + } + + jQuery('input.flexdatalist:not(.flexdatalist-set):not(.autodiscover-disabled)').flexdatalist(); +}); + +(function ($) { + var jVal = $.fn.val; + $.fn.val = function (value) { + var isFlex = this.length > 0 && typeof this[0].fvalue !== 'undefined'; + if (typeof value === 'undefined') { + return isFlex ? this[0].fvalue.get(true) : jVal.call(this); + } + return isFlex ? this[0].fvalue.set(value) : jVal.call(this, value); + }; +})(jQuery); diff --git a/assets/js/jquery.flexdatalist.min.css b/assets/js/jquery.flexdatalist.min.css new file mode 100755 index 0000000..96111f0 --- /dev/null +++ b/assets/js/jquery.flexdatalist.min.css @@ -0,0 +1,132 @@ +.flexdatalist-results{ + position:absolute; + top:0; + left:0; + border:1px solid #444; + border-top:none; + background:#fff; + z-index:100000; + max-height:300px; + overflow-y:auto; + color:#333; + list-style:none; + margin:0; + padding:0 +} + +.flexdatalist-results li{ + border-bottom:1px solid #ccc; + padding:8px 15px; + font-size:14px; + line-height:20px +} + +.flexdatalist-results li span.highlight{ + font-weight:700; + text-decoration:underline +} + +.flexdatalist-results li.active{ + background:#2B82C9; + color:#fff; + cursor:pointer +} + +.flexdatalist-results li.no-results{ + font-style:italic; + color:#888 +} + +.flexdatalist-results li.group{ + background:#F3F3F4; + color:#666; + padding:8px 8px +} + +.flexdatalist-results li .group-name{ + font-weight:700 +} + +.flexdatalist-results li .group-item-count{ + font-size:85%; + color:#777; + display:inline-block; + padding-left:10p +} + +.flexdatalist-multiple:before{ + content:''; + display:block; + clear:bot + +} + +.flexdatalist-multiple{ + width:100%; + margin:0; + padding:0; + list-style:none; + text-align:left; + cursor:text +} + +.flexdatalist-multiple.disabled{ + background-color:#eee; + cursor:default +} + +.flexdatalist-multiple:after{ + content:''; + display:block; + clear:both +} + +.flexdatalist-multiple li{ + display:inline-block; + position:relative; + margin:5px +} + +.flexdatalist-multiple li.input-container,.flexdatalist-multiple li.input-container input{ + border:none; + height:auto; + padding:0 0 0 4px; + line-height:24px +} + +.flexdatalist-multiple li.value{ + display:inline-block; + padding:2px 25px 2px 7px; + background:#efefef; + border-radius:3px; + color:#444; + line-height:20px; + float:left +} + +.flexdatalist-multiple li.toggle{ + cursor:pointer; + transition:opacity ease-in-out 300ms +} + +.flexdatalist-multiple li.toggle.disabled{ + text-decoration:line-through; + opacity:0.80 +} + +.flexdatalist-multiple li.value span.fdl-remove{ + font-weight:700; + padding:2px 5px; + font-size:20px; + line-height:20px; + cursor:pointer; + position:absolute; + top:0; + right:0; + opacity:0.70 +} + +.flexdatalist-multiple li.value span.fdl-remove:hover{ + opacity:1 +} + diff --git a/assets/js/jquery.flexdatalist.min.js b/assets/js/jquery.flexdatalist.min.js new file mode 100755 index 0000000..7cbdc36 --- /dev/null +++ b/assets/js/jquery.flexdatalist.min.js @@ -0,0 +1,2 @@ +jQuery.fn.flexdatalist=function(e,t){"use strict";var i=function(e,t){e.each((function(){var e=$(this),i=e.data(),a=i.flexdatalist,r=i.aliascontainer;r&&(e.removeClass("flexdatalist-set").attr({style:null,tabindex:null}).val(a&&a.originalValue&&!t?a.originalValue:"").removeData("flexdatalist").removeData("aliascontainer").off(),r.remove())}))};if("string"==typeof e&&"reset"!==e){if("object"==typeof this[0]&&void 0!==this[0].fvalue){var a=this[0];if("destroy"===e)i(this,t);else if("value"===e){if(void 0===t)return a.fvalue.get();a.fvalue.set(t)}else if("add"===e){if(void 0===t)return a.debug("Missing value to add!");a.fvalue.add(t)}else if("toggle"===e){if(void 0===t)return a.debug("Missing value to toggle!");a.fvalue.toggle(t)}else if("remove"===e){if(void 0===t)return a.debug("Missing value to remove!");a.fvalue.remove(t)}else if("disabled"===e){if(void 0===t)return a.fdisabled();a.fdisabled(t)}else if("string"==typeof e){if(void 0===t)return a.options.get(e);a.options.set(e,t)}return this}e={_option:t}}this.length>0&&void 0!==this[0].fvalue&&i(this);var r=$.extend({url:null,data:[],params:{},relatives:null,chainedRelatives:!1,cache:!0,cacheLifetime:60,minLength:3,groupBy:!1,selectionRequired:!1,focusFirstResult:!1,textProperty:null,valueProperty:null,visibleProperties:[],iconProperty:"thumb",searchIn:["label"],searchContain:!1,searchEqual:!1,searchByWord:!1,searchDisabled:!1,searchDelay:400,normalizeString:null,multiple:null,disabled:null,maxShownResults:100,removeOnBackspace:!0,noResultsText:'No results found for "{keyword}"',toggleSelected:!1,allowDuplicateValues:!1,redoSearchOnFocus:!0,requestType:"get",requestContentType:"x-www-form-urlencoded",requestHeaders:null,resultsProperty:"results",keywordParamName:"keyword",searchContainParamName:"contain",limitOfValues:0,valuesSeparator:",",debug:!0},e);return this.each((function(e){var t=$(this),i=this,a=null,s=[],n="flex"+e,l=null,o=null;this.init=function(){var e=this.options.init();this.set.up(),l.on("focusin",(function(e){i.action.redoSearchFocus(e),i.action.showAllResults(e),o&&o.addClass("focus")})).on("input keydown",(function(e){9===i.keyNum(e)&&i.results.remove(),i.action.keypressValue(e,188),i.action.backSpaceKeyRemove(e)})).on("input keyup",(function(e){i.action.keypressValue(e,13),i.action.keypressSearch(e),i.action.copyValue(e),i.action.backSpaceKeyRemove(e),i.action.showAllResults(e),i.action.clearValue(e),i.action.removeResults(e),i.action.inputWidth(e)})).on("focusout",(function(e){o&&o.removeClass("focus"),i.action.clearText(e),i.action.clearValue(e)})),window.onresize=function(e){i.position()},this.cache.gc(),e.selectionRequired&&i.fvalue.clear(!0,!0),this.fvalue._load(e.originalValue,(function(a,r){i.fdisabled(e.disabled),t.trigger("init:flexdatalist",[e])}),!0)},this.action={keypressValue:function(e,t){var a=i.keyNum(e),r=l[0].value,s=i.options.get();if(r.length>0&&a===t&&!s.selectionRequired&&s.multiple){r=l[0].value;e.preventDefault(),e.stopPropagation(),i.fvalue.extract(r),i.results.remove()}},keypressSearch:function(e){var t=i.keyNum(e),r=l.val(),s=r.length,n=i.options.get();clearTimeout(a),(!t||13!==t&&(t<37||t>40))&&(a=setTimeout((function(){(0===n.minLength&&s>0||n.minLength>0&&s>=n.minLength)&&i.data.load((function(e){i.search.get(r,e,(function(e){i.results.show(e)}))}))}),n.searchDelay))},redoSearchFocus:function(e){var t=i.fvalue.get(),a=i.options.get(),r=l.val();a.redoSearchOnFocus&&(r.length>0&&a.multiple||r.length>0&&0===t.length)&&this.keypressSearch(e)},copyValue:function(e){if(13!==i.keyNum(e)){var t=l.val(),a=i.fvalue.get(!0),r=i.options.get();r.multiple||r.selectionRequired||t.length===a.length||i.fvalue.extract(t)}},backSpaceKeyRemove:function(e){var t=i.options.get();if(t.removeOnBackspace&&t.multiple){var a=l.val(),r=l.data("_remove");8===i.keyNum(e)&&(0===a.length?r?(i.fvalue.remove(r),l.data("_remove",null)):l.data("_remove",l.parents("li:eq(0)").prev()):l.data("_remove",null))}},showAllResults:function(e){var t=l.val();""===(t=$.trim(t))&&0===i.options.get("minLength")&&i.data.load((function(e){i.results.show(e)}))},inputWidth:function(e){if(i.options.get().multiple){var a=l.val(),r=parseInt(l.css("fontSize").replace("px","")),s=t.innerWidth(),n=(a.length+1)*r;n>=40&&n<=s&&(l[0].style.width=n+"px")}},clearText:function(e){var t=i.fvalue.get(),a=i.options.get();!a.multiple&&a.selectionRequired&&0===t.length&&(l[0].value="")},clearValue:function(e){i.fvalue.get();var t=l.val(),a=i.options.get();!a.multiple&&a.selectionRequired&&t.length<=a.minLength&&i.fvalue.clear()},removeResults:function(e){var t=l.val(),a=i.options.get();a.minLength>0&&t.length').attr({class:t.attr("class"),name:t.attr("name")?"flexdatalist-"+t.attr("name"):null,id:e,placeholder:t.attr("placeholder")}).addClass("flexdatalist-alias "+e).removeClass("flexdatalist").attr("autocomplete","off")},multipleInput:function(e){return o=$('
        ').addClass("flexdatalist-multiple "+n).css({"border-color":t.css("border-left-color"),"border-width":t.css("border-left-width"),"border-style":t.css("border-left-style"),"border-radius":t.css("border-top-left-radius"),"background-color":t.css("background-color")}).insertAfter(t).on("click",(function(){$(this).find("input").trigger("focus")})),$('
      • ').addClass("flexdatalist-multiple-value").append(e).appendTo(o),o},chained:function(){var e=i.options.get();if(e.relatives&&e.chainedRelatives){var t=function(t){e.relatives.each((function(){var e=i.isEmpty($(this).val()),t=i.isEmpty(i.value);!e&&t||i.fvalue.clear(),i.fdisabled(e)}))};e.relatives.on("change",(function(){t()})),t()}},accessibility:function(e){var i={"aria-autocomplete":"list","aria-expanded":"false","aria-owns":(t.attr("id")?t.attr("id")+"-flexdatalist":n)+"-results"};e.attr(i)}},this.fvalue={get:function(e){var t=i.value;return!i.options.get().multiple&&!this.isJSON()||e?t:this.toObj(t)},set:function(e,a){return i.fdisabled()||(a||this.clear(!0),this._load(e)),t},add:function(e){return i.options.get("multiple")&&this.set(e,!0),this},toggle:function(e){return i.fdisabled()||this.multiple.toggle(e),this},remove:function(e){if(!i.fdisabled()){e=this.toObj(e),t.trigger("before:flexdatalist.remove",[e]);var a=[];if(i.isArray(e))$.each(e,(function(e,t){var r=i.fvalue.multiple.remove(t);r&&a.push(r)}));else{var r=this.multiple.remove(e);r&&a.push(r)}t.trigger("after:flexdatalist.remove",[e,a]).trigger("change:flexdatalist",[a,i.options.get()]).trigger("change")}return this},_load:function(e,t,a){var r=i.options.get().valueProperty,s=this.toStr(e),n=this.get(!0);if(t=t||$.noop,0!=s.length||0!=n.length){if(e=this.toObj(e),!i.isEmpty(e)&&!i.isEmpty(r)&&"*"!==r)return i.isObject(r)||(r=r.split(",")),void i.data.load((function(a){i.isObject(e)?i.isArray(e)||(e=[e]):e=e.split(",");for(var s=[],n=0;n0&&i.fvalue.extract(s,!0),t(e)}),e);t(e),i.fvalue.extract(e,a)}else t(e)},extract:function(e,a){var r=i.options.get(),s=[];a||t.trigger("before:flexdatalist.value",[e,r]),i.isArray(e)?$.each(e,(function(e,t){s.push(i.fvalue._extract(t))})):s=i.fvalue._extract(e),a||t.data("result_selected",e).trigger("after:flexdatalist.value",[s,r]).trigger("change:flexdatalist",[s,r]).trigger("change")},_extract:function(e){var t=this.text(e),a=this.value(e);if(i.options.get().multiple){if(!i.isEmpty(t)){if(i.isDup(t))return;s.push(t),this.multiple.add(a,t)}}else this.single(a,t);return{value:a,text:t}},single:function(e,t){t&&t!==l.val()&&(l[0].value=t),i.value=e},multiple:{add:function(e,t){var a=this;this.li(e,t).on("click",(function(){a.toggle($(this))})).find(".fdl-remove").on("click",(function(){i.fvalue.remove($(this).parent())})),this.push(e),l[0].value="",this.handleLimit()},push:function(e,t){var a=i.fvalue.get();a.includes(e)||(e=i.fvalue.toObj(e),a.push(e),e=i.fvalue.toStr(a),i.value=e)},toggle:function(e){var a=i.options.get();if(a.toggleSelected){var r=this.findLi(e);if(r){var s=r.data(),n=r.hasClass("disabled")?"enable":"disable",l=[{value:s.value,text:s.text,action:n},a];t.trigger("before:flexdatalist.toggle",l),"enable"===n?r.removeClass("disabled"):r.addClass("disabled");var u=[];o.find("li.toggle:not(.disabled)").each((function(){var e=$(this);u.push(e.data("value"))})),u=i.fvalue.toStr(u),i.value=u,t.trigger("after:flexdatalist.toggle",l).trigger("change:flexdatalist",l).trigger("change")}}},remove:function(e){var t=this.findLi(e);if(t){var a=i.fvalue.get(),r=t.index(),n=t.data(),l={value:n.value,text:n.text};return a.splice(r,1),a=i.fvalue.toStr(a),i.value=a,t.remove(),i.fvalue.multiple.handleLimit(),s.splice(r,1),this.handleLimit(),l}},removeAll:function(){var e=i.fvalue.get(),a=i.options.get();t.trigger("before:flexdatalist.remove.all",[e,a]),o.find("li:not(.input-container)").remove(),i.value="",s=[],this.handleLimit(),t.trigger("after:flexdatalist.remove.all",[e,a])},li:function(e,t){var a=o.find("li.input-container"),r=i.options.get();return $("
      • ").addClass("value"+(r.toggleSelected?" toggle":"")).append(''+t+"").append('×').data({text:t,value:i.fvalue.toStr(e)}).insertBefore(a)},handleLimit:function(){var e=this.isAtLimit(),t=o.find("li.input-container");e?t.hide():t.show()},isAtLimit:function(){var e=i.options.get("limitOfValues");return e>0&&e==s.length},findLi:function(e){if(e instanceof jQuery)0===e.length&&(e=null);else{var t=e;e=null,o.find("li:not(.input-container)").each((function(){var i=$(this);if(i.data("value")===t)return e=i,!1}))}return e},isEmpty:function(){return this.get().length>0}},value:function(e){var t=e,a=i.options.get(),r=a.valueProperty;if(i.isObject(e))if(this.isJSON()||this.isMixed())if(delete e.name_highlight,i.isArray(r)){for(var s={},n=0;n0?i:t,value:t})})),e(r)},url:function(e,a){var r=l.val(),s=i.options.get(),n=s.keywordParamName,o=s.searchContainParamName,u=i.fvalue.get(),c=this.relativesData();if(i.isEmpty(s.url))return e([]);var f={};"post"===s.requestType&&($.each(s,(function(e,t){0!=e.indexOf("_")&&"data"!=e&&(f[e]=t)})),delete f.relatives);var d=i.cache.keyGen({relative:c,load:a,keyword:r,contain:s.searchContain},s.url),h=i.cache.read(d,!0);if(h)e(h);else{var p="function"==typeof s.params?s.params.call(t[0],r):s.params,g=$.extend(c,p,{load:a,selected:u,original:s.originalValue,options:f});g[n]=r,g[o]=s.searchContain,this.remote({url:s.url,data:g,success:function(t){l.val().length>=r.length&&e(t),i.cache.write(d,t,s.cacheLifetime,!0)}})}},remote:function(e){var a=this,r=i.options.get();t.hasClass("flexdatalist-loading")||(t.addClass("flexdatalist-loading"),"json"===r.requestContentType&&(e.data=JSON.stringify(e.data)),$.ajax($.extend({type:r.requestType,dataType:"json",headers:r.requestHeaders,contentType:"application/"+r.requestContentType+"; charset=UTF-8",complete:function(){t.removeClass("flexdatalist-loading")}},e,{success:function(t){t=a.extractRemoteData(t),e.success(t)}})))},extractRemoteData:function(e){var t=i.options.get(),a=i.isDefined(e,t.resultsProperty)?e[t.resultsProperty]:e;return"string"==typeof a&&0===a.indexOf("[{")&&(a=JSON.parse(a)),a&&a.options&&i.options.set($.extend({},t,a.options)),i.isObject(a)?a:[]},relativesData:function(){var e=i.options.get("relatives"),t={};return e&&(t.relatives={},e.each((function(){var e=$(this),i=e.attr("name").split("][").join("-").split("]").join("-").split("[").join("-").replace(/^\|+|\-+$/g,"");t.relatives[i]=e.val()}))),t}},this.search={get:function(e,a,r){var s=a;if(!i.options.get().searchDisabled&&!(s=i.cache.read(e))){if(t.trigger("before:flexdatalist.search",[e,a]),!i.isEmpty(e)){s=[];for(var n=this.split(e),l=0;l0)for(var l=0;l')).split("|::|").join("")},find:function(e,t){for(var a=i.options.get(),r=0;r=0:0===s.indexOf(e))return!0}return!1},split:function(e){if("string"==typeof e&&(e=[$.trim(e)]),i.options.get("searchByWord"))for(var t=0;t0){var r=a.split(" ");$.merge(e,r)}}return e},normalizeString:function(e){if("string"==typeof e){var t=i.options.get("normalizeString");return"function"==typeof t&&(e=t(e)),(e=e.normalize("NFD").replace(/[\u0300-\u036f]/g,"")).toUpperCase()}return e}},this.results={show:function(e){var a=this,r=i.options.get();if(this.remove(!0),e)if(0!==e.length){var s=this.container();r.groupBy?(e=this.group(e),Object.keys(e).forEach((function(t,n){var l=e[t],o=r.groupBy,u=i.results.highlight(l[0],o,t);$("
      • ").addClass("group").append($("").addClass("group-name").html(u)).append($("").addClass("group-item-count").text(" "+l.length)).appendTo(s);a.items(l,s)}))):this.items(e,s);var n=s.find("li:not(.group)");n.on("click",(function(e){var s=$(this).data("item");s&&(i.fvalue.extract(s),a.remove(),t.trigger("select:flexdatalist",[s,r]))})).on("hover",(function(){n.removeClass("active"),$(this).addClass("active").trigger("active:flexdatalist.results",[$(this).data("item")])}),(function(){$(this).removeClass("active")})),r.focusFirstResult&&n.filter(":first").addClass("active")}else this.empty(r.noResultsText)},empty:function(e){if(!i.isEmpty(e)){var a=this.container(),r=l.val();e=e.split("{keyword}").join(r),$("
      • ").addClass("item no-results").append(e).appendTo(a),t.trigger("empty:flexdatalist.results",[e])}},items:function(e,a){var r=i.options.get("maxShownResults");t.trigger("show:flexdatalist.results",[e]);for(var s=0;s0&&r===s);s++)this.item(e[s],s,e.length).appendTo(a);t.trigger("shown:flexdatalist.results",[e])},item:function(e,a,r){var s=$("
      • ").attr({role:"option",tabindex:"-1","aria-posinset":a+1,"aria-setsize":r}).data("item",e).addClass("item"),n=i.options.get(),l=n.visibleProperties;for(a=0;a-1){var u=i.fvalue.placeholders.replace(e,o),c=i.fvalue.placeholders.parse(o);f=$("").addClass("item item-"+Object.values(c).join("-")).html(u+" ")}else{if(n.groupBy&&n.groupBy===o||!i.isDefined(e,o))continue;var f={};if(o===n.iconProperty)f=$("").addClass("item item-"+o).attr("src",e[o]);else{var d=i.results.highlight(e,o);f=$("").addClass("item item-"+o).html(d+" ")}}f.appendTo(s)}return t.trigger("item:flexdatalist.results",[s,e]),s},container:function(){var e=t;o&&(e=o);var a=$("ul.flexdatalist-results");return 0===a.length&&(a=$("
          ").addClass("flexdatalist-results ").appendTo("body").attr({id:l.attr("id")+"-results",role:"listbox"}).css({"border-color":e.css("border-left-color"),"border-width":"1px","border-bottom-left-radius":e.css("border-bottom-left-radius"),"border-bottom-right-radius":e.css("border-bottom-right-radius")}).data({target:o||l,input:t}),i.position(l)),a},group:function(e){for(var t=[],a=i.options.get("groupBy"),r=0;r-1||e.indexOf("global")>-1)&&localStorage.removeItem(e);localStorage.clear()}},gc:function(){if(i.cache.isSupported())for(var e in localStorage)if(e.indexOf(n)>-1||e.indexOf("global")>-1){var t=localStorage.getItem(e);t=JSON.parse(t),this.expired(t)&&localStorage.removeItem(e)}},isSupported:function(){if(i.options.get("cache"))try{return"localStorage"in window&&null!==window.localStorage}catch(e){return!1}return!1},expired:function(e){if(e.lifetime){var t=i.unixtime()-e.timestamp;return e.lifetime<=t}return!1},keyGen:function(e,t,i){"object"==typeof e&&(e=JSON.stringify(e));var a,r,s=void 0===t?2166136261:t;for(a=0,r=e.length;a>>0).toString(16)).substr(-8)}},this.options={init:function(){var e=$.extend({},r,t.data(),{multiple:null===r.multiple?t.is("[multiple]"):r.multiple,disabled:null===r.disabled?t.is("[disabled]"):r.disabled,originalValue:i.value});return this.set(e),e},get:function(e){var a=t.data("flexdatalist");return e?i.isDefined(a,e)?a[e]:null:a||{}},set:function(e,a){var r=this.get();return i.isDefined(r,e)&&i.isDefined(a)?r[e]=a:i.isObject(e)&&(r=this._normalize(e)),t.data("flexdatalist",r),t},_normalize:function(e){if(e.searchIn=i.csvToArray(e.searchIn),e.relatives=e.relatives&&$(e.relatives).length>0?$(e.relatives):null,e.textProperty=null===e.textProperty?e.searchIn[0]:e.textProperty,e.visibleProperties=i.csvToArray(e.visibleProperties,e.searchIn),"*"===e.valueProperty&&e.multiple&&!e.selectionRequired)throw new Error("Selection must be required for multiple, JSON fields!");return e}},this.position=function(){var e=$("ul.flexdatalist-results"),t=e.data("target");e.length>0&&e.css({width:t.outerWidth()+"px",top:t.offset().top+t.outerHeight()+"px",left:t.offset().left+"px"})},this.fdisabled=function(e){if(this.isDefined(e)){if(t.prop("disabled",e),l.prop("disabled",e),o){o.css("background-color",t.css("background-color"));var i=o.find("li .fdl-remove"),a=o.find("li.input-container");e?(o.addClass("disabled"),i.length>0&&a.hide(),i.hide()):(o.removeClass("disabled"),a.show(),i.show())}this.options.set("disabled",e)}return this.options.get("disabled")},this.isDup=function(e){return!this.options.get("allowDuplicateValues")&&(s.length>0&&s.indexOf(this.fvalue.text(e))>-1)},this.keyNum=function(e){return e.which||e.keyCode},this.isEmpty=function(e){return!i.isDefined(e)||(null===e||!0!==e&&(0===this.length(e)||""===$.trim(e)))},this.isObject=function(e){return e&&"object"==typeof e},this.length=function(e){return this.isObject(e)?Object.keys(e).length:"number"==typeof e||"number"==typeof e.length?e.toString().length:0},this.isDefined=function(e,t){var i=void 0!==e;return i&&void 0!==t?void 0!==this.getPropertyValue(e,t):i},this.isArray=function(e){return"[object Array]"===Object.prototype.toString.call(e)},this.unixtime=function(e){var t=new Date;return e&&(t=new Date(e)),Math.round(t.getTime()/1e3)},this.csvToArray=function(e,t){return 0===e.length?t:"string"==typeof e?e.split(i.options.get("valuesSeparator")):e},this.getPropertyValue=function(e,t){if(e&&"string"==typeof t){for(var i=t.split(".");i.length&&(e=e[i.shift()]););return e}},this.escapeHtml=function(e){return e.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")},this.debug=function(e,a){var r=i.options.get();r.debug&&(a||(a={}),e="Flexdatalist: "+e,console.warn(e),console.log($.extend({inputName:t.attr("name"),options:r},a)),console.log("--- /flexdatalist ---"))},this.init()}))},jQuery((function(e){e(document).data("flexdatalist")||e(document).on("mouseup",(function(t){var i=e(".flexdatalist-results"),a=i.data("target");a&&a.is(":focus")||i.is(t.target)||0!==i.has(t.target).length||i.remove()})).on("keydown",(function(t){var i=e(".flexdatalist-results"),a=i.find("li"),r=a.filter(".active"),s=r.index(),n=a.length,l=t.which||t.keyCode;if(0!==n)if(27!==l){if(13===l)t.preventDefault(),r.trigger("click");else if(40===l||38===l){t.preventDefault(),40===l?r=s0?r.removeClass("active").nextAll(".item").first().addClass("active"):a.removeClass("active").filter(".item:first").addClass("active"):38===l&&(r=s>0&&r.prevAll(".item").first().length>0?r.removeClass("active").prevAll(".item").first().addClass("active"):a.removeClass("active").filter(".item:last").addClass("active")),r.trigger("active:flexdatalist.results",[r.data("item")]);var o=(0===r.prev().length?r:r.prev()).position().top;i.animate({scrollTop:o+i.scrollTop()},100)}}else i.remove()})).data("flexdatalist",!0),jQuery("input.flexdatalist:not(.flexdatalist-set):not(.autodiscover-disabled)").flexdatalist()})),function(e){var t=e.fn.val;e.fn.val=function(e){var i=this.length>0&&void 0!==this[0].fvalue;return void 0===e?i?this[0].fvalue.get(!0):t.call(this):i?this[0].fvalue.set(e):t.call(this,e)}}(jQuery); +//# sourceMappingURL=jquery.flexdatalist.min.js.map \ No newline at end of file diff --git a/assets/js/jquery.flexdatalist.min.js.map b/assets/js/jquery.flexdatalist.min.js.map new file mode 100755 index 0000000..27d4ef7 --- /dev/null +++ b/assets/js/jquery.flexdatalist.min.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["jquery.flexdatalist.js"],"names":[],"mappings":"AAkBC,MAAO,GAAG,aAAe,SAAU,EAAS,GACxC,aAEA,IAAI,EAAU,SAAU,EAAO,GAC3B,EAAM,MAAK,WACP,IAAI,EAAQ,EAAE,MACV,EAAO,EAAM,OACb,EAAU,EAAK,aACf,EAAkB,EAAK,eAEvB,IACA,EAAM,YAAY,oBACb,KAAK,CAAC,MAAS,KAAM,SAAY,OACjC,IAAK,GAAW,EAAQ,gBAAkB,EAAQ,EAAQ,cAAgB,IAC1E,WAAW,gBACX,WAAW,kBACX,MACL,EAAgB,cAM5B,GAAuB,iBAAZ,GAAoC,UAAZ,EAAqB,CACpD,GAAuB,iBAAZ,KAAK,SAA6C,IAAnB,KAAK,GAAG,OAAwB,CACtE,IAAI,EAAS,KAAK,GAClB,GAAgB,YAAZ,EACA,EAAQ,KAAM,QAEX,GAAgB,UAAZ,EAAqB,CAC5B,QAAsB,IAAX,EACP,OAAO,EAAO,OAAO,MAEzB,EAAO,OAAO,IAAI,QAEf,GAAgB,QAAZ,EAAmB,CAC1B,QAAsB,IAAX,EACP,OAAO,EAAO,MAAM,yBAExB,EAAO,OAAO,IAAI,QAEf,GAAgB,WAAZ,EAAsB,CAC7B,QAAsB,IAAX,EACP,OAAO,EAAO,MAAM,4BAExB,EAAO,OAAO,OAAO,QAElB,GAAgB,WAAZ,EAAsB,CAC7B,QAAsB,IAAX,EACP,OAAO,EAAO,MAAM,4BAExB,EAAO,OAAO,OAAO,QAElB,GAAgB,aAAZ,EAAwB,CAC/B,QAAsB,IAAX,EACP,OAAO,EAAO,YAElB,EAAO,UAAU,QAEd,GAAuB,iBAAZ,EAAsB,CACpC,QAAsB,IAAX,EACP,OAAO,EAAO,QAAQ,IAAI,GAE9B,EAAO,QAAQ,IAAI,EAAS,GAEhC,OAAO,KAEX,EAAU,CAAC,QAAS,GAIpB,KAAK,OAAS,QAA+B,IAAnB,KAAK,GAAG,QAClC,EAAQ,MAGZ,IAAI,EAAW,EAAE,OAAO,CACpB,IAAK,KACL,KAAM,GACN,OAAQ,GACR,UAAW,KACX,kBAAkB,EAClB,OAAO,EACP,cAAe,GACf,UAAW,EACX,SAAS,EACT,mBAAmB,EACnB,kBAAkB,EAClB,aAAc,KACd,cAAe,KACf,kBAAmB,GACnB,aAAc,QACd,SAAU,CAAC,SACX,eAAe,EACf,aAAa,EACb,cAAc,EACd,gBAAgB,EAChB,YAAa,IACb,gBAAiB,KACjB,SAAU,KACV,SAAU,KACV,gBAAiB,IACjB,mBAAmB,EACnB,cAAe,mCACf,gBAAgB,EAChB,sBAAsB,EACtB,mBAAmB,EACnB,YAAa,MACb,mBAAoB,wBACpB,eAAgB,KAChB,gBAAiB,UACjB,iBAAkB,UAClB,uBAAwB,UACxB,cAAe,EACf,gBAAiB,IACjB,OAAO,GACR,GAEH,OAAO,KAAK,MAAK,SAAU,GACvB,IAAI,EAAQ,EAAE,MACV,EAAQ,KACR,EAAiB,KACjB,EAAU,GACV,EAAM,OAAS,EACf,EAAS,KACT,EAAY,KAKhB,KAAK,KAAO,WACR,IAAI,EAAU,KAAK,QAAQ,OAC3B,KAAK,IAAI,KAET,EAEC,GAAG,WAAW,SAAU,GACrB,EAAM,OAAO,gBAAgB,GAC7B,EAAM,OAAO,eAAe,GACxB,GACA,EAAU,SAAS,YAI1B,GAAG,iBAAiB,SAAU,GACC,IAAxB,EAAM,OAAO,IACb,EAAM,QAAQ,SAElB,EAAM,OAAO,cAAc,EAAO,KAClC,EAAM,OAAO,mBAAmB,MAGnC,GAAG,eAAe,SAAU,GACzB,EAAM,OAAO,cAAc,EAAO,IAClC,EAAM,OAAO,eAAe,GAC5B,EAAM,OAAO,UAAU,GACvB,EAAM,OAAO,mBAAmB,GAChC,EAAM,OAAO,eAAe,GAC5B,EAAM,OAAO,WAAW,GACxB,EAAM,OAAO,cAAc,GAC3B,EAAM,OAAO,WAAW,MAG3B,GAAG,YAAY,SAAU,GAClB,GACA,EAAU,YAAY,SAE1B,EAAM,OAAO,UAAU,GACvB,EAAM,OAAO,WAAW,MAG5B,OAAO,SAAW,SAAU,GACxB,EAAM,YAIV,KAAK,MAAM,KAEP,EAAQ,mBACR,EAAM,OAAO,OAAM,GAAM,GAE7B,KAAK,OAAO,MAAM,EAAQ,eAAe,SAAU,EAAQ,GACvD,EAAM,UAAU,EAAQ,UACxB,EAAM,QAAQ,oBAAqB,CAAC,OACrC,IAMP,KAAK,OAAS,CAIV,cAAe,SAAU,EAAO,GAC5B,IAAI,EAAM,EAAM,OAAO,GACnB,EAAM,EAAO,GAAG,MAChB,EAAU,EAAM,QAAQ,MAE5B,GAAI,EAAI,OAAS,GACV,IAAQ,IACP,EAAQ,mBACT,EAAQ,SAAU,CACb,EAAM,EAAO,GAAG,MACpB,EAAM,iBACN,EAAM,kBACN,EAAM,OAAO,QAAQ,GACrB,EAAM,QAAQ,WAM1B,eAAgB,SAAU,GACtB,IAAI,EAAM,EAAM,OAAO,GACnB,EAAU,EAAO,MACjB,EAAS,EAAQ,OACjB,EAAU,EAAM,QAAQ,MAE5B,aAAa,KACR,GAAgB,KAAR,IAAe,EAAM,IAAM,EAAM,OAC1C,EAAiB,YAAW,YACG,IAAtB,EAAQ,WAAmB,EAAS,GAAO,EAAQ,UAAY,GAAK,GAAU,EAAQ,YACvF,EAAM,KAAK,MAAK,SAAU,GACtB,EAAM,OAAO,IAAI,EAAS,GAAM,SAAU,GACtC,EAAM,QAAQ,KAAK,WAIhC,EAAQ,eAMnB,gBAAiB,SAAU,GACvB,IAAI,EAAM,EAAM,OAAO,MACnB,EAAU,EAAM,QAAQ,MACxB,EAAQ,EAAO,MACf,EAAQ,oBAAuB,EAAM,OAAS,GAAK,EAAQ,UAAc,EAAM,OAAS,GAAoB,IAAf,EAAI,SACjG,KAAK,eAAe,IAM5B,UAAW,SAAU,GACjB,GAA4B,KAAxB,EAAM,OAAO,GAAe,CAC5B,IAAI,EAAU,EAAO,MACjB,EAAM,EAAM,OAAO,KAAI,GACvB,EAAU,EAAM,QAAQ,MACvB,EAAQ,UAAa,EAAQ,mBAAqB,EAAQ,SAAW,EAAI,QAC1E,EAAM,OAAO,QAAQ,KAOjC,mBAAoB,SAAU,GAC1B,IAAI,EAAU,EAAM,QAAQ,MAC5B,GAAI,EAAQ,mBAAqB,EAAQ,SAAU,CAC/C,IAAI,EAAM,EAAO,MACb,EAAU,EAAO,KAAK,WACE,IAAxB,EAAM,OAAO,KACM,IAAf,EAAI,OACA,GACA,EAAM,OAAO,OAAO,GACpB,EAAO,KAAK,UAAW,OAEvB,EAAO,KAAK,UAAW,EAAO,QAAQ,YAAY,QAGtD,EAAO,KAAK,UAAW,SAQvC,eAAgB,SAAU,GACtB,IAAI,EAAM,EAAO,MAEL,MADZ,EAAM,EAAE,KAAK,KACwC,IAAnC,EAAM,QAAQ,IAAI,cAChC,EAAM,KAAK,MAAK,SAAU,GACtB,EAAM,QAAQ,KAAK,OAO/B,WAAY,SAAU,GAElB,GADc,EAAM,QAAQ,MAChB,SAAU,CAClB,IAAI,EAAU,EAAO,MACjB,EAAW,SAAS,EAAO,IAAI,YAAY,QAAQ,KAAM,KAEzD,EAAW,EAAM,aACjB,GAAU,EAAQ,OAAS,GAAK,EAEhC,GAJW,IAIU,GAAS,IAC9B,EAAO,GAAG,MAAM,MAAQ,EAAQ,QAO5C,UAAW,SAAU,GACjB,IAAI,EAAM,EAAM,OAAO,MACnB,EAAU,EAAM,QAAQ,OAEvB,EAAQ,UAAY,EAAQ,mBAAoC,IAAf,EAAI,SACtD,EAAO,GAAG,MAAQ,KAM1B,WAAY,SAAU,GACR,EAAM,OAAO,MAAvB,IACI,EAAU,EAAO,MACjB,EAAU,EAAM,QAAQ,OAEvB,EAAQ,UAAY,EAAQ,mBAAqB,EAAQ,QAAU,EAAQ,WAC5E,EAAM,OAAO,SAMrB,cAAe,SAAU,GACrB,IAAI,EAAU,EAAO,MACjB,EAAU,EAAM,QAAQ,MACxB,EAAQ,UAAY,GAAK,EAAQ,OAAS,EAAQ,WAClD,EAAM,QAAQ,WAQ1B,KAAK,IAAM,CAIP,GAAI,WACA,EAAS,KAAK,WACV,EAAM,QAAQ,IAAI,YAClB,EAAY,KAAK,cAAc,GAE/B,EAAO,YAAY,GAGvB,KAAK,cAAc,GAGf,EAAM,KAAK,cACX,EAAO,QAAQ,SAGnB,EAAM,KAAK,iBAAmB,GAAwB,GAAS,SAAS,iCAAiC,IAAI,CACzG,SAAY,WACZ,KAAQ,KACR,MAAS,OACV,KAAK,YAAa,GAGrB,IAAI,EAAU,EAAM,KAAK,MACrB,EAAU,EAAO,KAAK,MAC1B,EAAE,cAAgB,EAAU,MAAM,KAAK,MAAO,GAE9C,KAAK,WAKT,SAAU,WACN,IAAI,EAAW,EAAM,KAAK,MAAQ,EAAM,KAAK,MAAQ,gBAAkB,EAWvE,OAVa,EAAE,uBACV,KAAK,CACF,MAAS,EAAM,KAAK,SACpB,KAAS,EAAM,KAAK,QAAU,gBAAkB,EAAM,KAAK,QAAU,KACrE,GAAM,EACN,YAAe,EAAM,KAAK,iBAE7B,SAAS,sBAAwB,GACjC,YAAY,gBACZ,KAAK,eAAgB,QAM9B,cAAe,SAAU,GAmBrB,OAlBA,EAAY,EAAE,qBACT,SAAS,yBAA2B,GACpC,IAAI,CACD,eAAgB,EAAM,IAAI,qBAC1B,eAAgB,EAAM,IAAI,qBAC1B,eAAgB,EAAM,IAAI,qBAC1B,gBAAiB,EAAM,IAAI,0BAC3B,mBAAoB,EAAM,IAAI,sBAEjC,YAAY,GAAO,GAAG,SAAS,WAC5B,EAAE,MAAM,KAAK,SAAS,QAAQ,YAGtC,EAAE,gCACG,SAAS,+BACT,OAAO,GACP,SAAS,GAEP,GAKX,QAAS,WACL,IAAI,EAAU,EAAM,QAAQ,MAC5B,GAAI,EAAQ,WAAa,EAAQ,iBAAkB,CAC/C,IAAI,EAAS,SAAU,GACnB,EAAQ,UAAU,MAAK,WACnB,IAAI,EAAgB,EAAM,QAAQ,EAAE,MAAM,OACtC,EAAQ,EAAM,QAAQ,EAAM,QAE5B,GAAkB,GAClB,EAAM,OAAO,QAEjB,EAAM,UAAU,OAGxB,EAAQ,UAAU,GAAG,UAAU,WAC3B,OAEJ,MAMR,cAAe,SAAU,GACrB,IACI,EAAgB,CAChB,oBAAqB,OACrB,gBAAiB,QACjB,aAJW,EAAM,KAAK,MAAQ,EAAM,KAAK,MAAQ,gBAAkB,GAI5C,YAG3B,EAAO,KAAK,KAOpB,KAAK,OAAS,CAIV,IAAK,SAAU,GACX,IAAI,EAAM,EAAM,MAEhB,OADc,EAAM,QAAQ,MACf,WAAY,KAAK,UAAc,EAGrC,EAFI,KAAK,MAAM,IAQ1B,IAAK,SAAU,EAAK,GAOhB,OANK,EAAM,cACF,GACD,KAAK,OAAM,GAEf,KAAK,MAAM,IAER,GAKX,IAAK,SAAU,GAIX,OAHI,EAAM,QAAQ,IAAI,aAClB,KAAK,IAAI,GAAK,GAEX,MAKX,OAAQ,SAAU,GAId,OAHK,EAAM,aACP,KAAK,SAAS,OAAO,GAElB,MAKX,OAAQ,SAAU,GACd,IAAK,EAAM,YAAa,CACpB,EAAM,KAAK,MAAM,GACjB,EAAM,QAAQ,6BAA8B,CAAC,IAC7C,IAAI,EAAS,GACb,GAAI,EAAM,QAAQ,GACd,EAAE,KAAK,GAAK,SAAU,EAAG,GACrB,IAAI,EAAU,EAAM,OAAO,SAAS,OAAO,GACvC,GACA,EAAO,KAAK,UAGjB,CACH,IAAI,EAAU,KAAK,SAAS,OAAO,GAC/B,GACA,EAAO,KAAK,GAGpB,EACK,QAAQ,4BAA6B,CAAC,EAAK,IAC3C,QAAQ,sBAAuB,CAAC,EAAQ,EAAM,QAAQ,QACtD,QAAQ,UAEjB,OAAO,MAKX,MAAO,SAAU,EAAQ,EAAU,GAC/B,IACI,EADU,EAAM,QAAQ,MACJ,cACpB,EAAU,KAAK,MAAM,GACrB,EAAO,KAAK,KAAI,GAIpB,GAFA,EAAY,GAAsB,EAAE,KAEd,GAAlB,EAAQ,QAA8B,GAAf,EAAK,OAAhC,CAKA,GADA,EAAS,KAAK,MAAM,IACf,EAAM,QAAQ,KAAY,EAAM,QAAQ,IAA4B,MAAd,EA8BvD,OA7BK,EAAM,SAAS,KAChB,EAAY,EAAU,MAAM,WAGhC,EAAM,KAAK,MAAK,SAAU,GACjB,EAAM,SAAS,GAER,EAAM,QAAQ,KACtB,EAAS,CAAC,IAFV,EAAS,EAAO,MAAM,KAK1B,IADA,IAAI,EAAQ,GACH,EAAO,EAAG,EAAO,EAAO,OAAQ,IAErC,IADA,IAAI,EAAQ,EAAO,GACV,EAAI,EAAG,EAAI,EAAK,OAAQ,IAE7B,IADA,IAAI,EAAO,EAAK,GACP,EAAM,EAAG,EAAM,EAAU,OAAQ,IAAO,CAC7C,IAAI,EAAO,EAAU,GACrB,EAAQ,EAAM,UAAU,EAAO,GAAQ,EAAM,GAAQ,EACjD,EAAM,UAAU,EAAM,IAAS,IAAU,EAAK,IAC9C,EAAM,KAAK,GAKvB,EAAM,OAAS,GACf,EAAM,OAAO,QAAQ,GAAO,GAEhC,EAAS,KACV,GAGP,EAAS,GACT,EAAM,OAAO,QAAQ,EAAQ,QArCzB,EAAS,IA0CjB,QAAS,SAAU,EAAQ,GACvB,IAAI,EAAU,EAAM,QAAQ,MACxB,EAAS,GAER,GACD,EAAM,QAAQ,4BAA6B,CAAC,EAAQ,IAGpD,EAAM,QAAQ,GACd,EAAE,KAAK,GAAQ,SAAU,EAAG,GACxB,EAAO,KAAK,EAAM,OAAO,SAAS,OAGtC,EAAS,EAAM,OAAO,SAAS,GAG9B,GACD,EACK,KAAK,kBAAmB,GACxB,QAAQ,2BAA4B,CAAC,EAAQ,IAC7C,QAAQ,sBAAuB,CAAC,EAAQ,IACxC,QAAQ,WAMrB,SAAU,SAAU,GAChB,IAAI,EAAM,KAAK,KAAK,GAChB,EAAQ,KAAK,MAAM,GAGvB,GAFc,EAAM,QAAQ,MAEhB,UAER,IAAK,EAAM,QAAQ,GAAM,CACrB,GAAI,EAAM,MAAM,GACZ,OAEJ,EAAQ,KAAK,GACb,KAAK,SAAS,IAAI,EAAO,SAG7B,KAAK,OAAO,EAAO,GAGvB,MAAO,CAAC,MAAO,EAAO,KAAM,IAKhC,OAAQ,SAAU,EAAK,GACf,GAAO,IAAQ,EAAO,QACtB,EAAO,GAAG,MAAQ,GAEtB,EAAM,MAAQ,GAKlB,SAAU,CAIN,IAAK,SAAU,EAAK,GAChB,IAAI,EAAY,KACN,KAAK,GAAG,EAAK,GAGnB,GAAG,SAAS,WACZ,EAAU,OAAO,EAAE,UAEpB,KAAK,eAAe,GAAG,SAAS,WAC/B,EAAM,OAAO,OAAO,EAAE,MAAM,aAGhC,KAAK,KAAK,GACV,EAAO,GAAG,MAAQ,GAClB,KAAK,eAKT,KAAM,SAAU,EAAK,GACjB,IAAI,EAAU,EAAM,OAAO,MACvB,EAAQ,SAAS,KAGrB,EAAM,EAAM,OAAO,MAAM,GACzB,EAAQ,KAAK,GACb,EAAM,EAAM,OAAO,MAAM,GACzB,EAAM,MAAQ,IAKlB,OAAQ,SAAU,GACd,IAAI,EAAU,EAAM,QAAQ,MAC5B,GAAK,EAAQ,eAAb,CAIA,IAAI,EAAM,KAAK,OAAO,GACtB,GAAK,EAAL,CAIA,IAAI,EAAO,EAAI,OACX,EAAS,EAAI,SAAS,YAAc,SAAW,UAC/C,EAAY,CAAC,CAAC,MAAO,EAAK,MAAO,KAAM,EAAK,KAAM,OAAQ,GAAS,GAEvE,EAAM,QAAQ,6BAA8B,GAE7B,WAAX,EACA,EAAI,YAAY,YAEhB,EAAI,SAAS,YAGjB,IAAI,EAAU,GACd,EAAU,KAAK,4BAA4B,MAAK,WAC5C,IAAI,EAAQ,EAAE,MACd,EAAQ,KAAK,EAAM,KAAK,aAG5B,EAAU,EAAM,OAAO,MAAM,GAC7B,EAAM,MAAQ,EAEd,EACK,QAAQ,4BAA6B,GACrC,QAAQ,sBAAuB,GAC/B,QAAQ,aAMjB,OAAQ,SAAU,GACd,IAAI,EAAM,KAAK,OAAO,GACtB,GAAK,EAAL,CAIA,IAAI,EAAS,EAAM,OAAO,MACtB,EAAQ,EAAI,QACZ,EAAO,EAAI,OACX,EAAM,CAAC,MAAO,EAAK,MAAO,KAAM,EAAK,MAazC,OAXA,EAAO,OAAO,EAAO,GACrB,EAAS,EAAM,OAAO,MAAM,GAC5B,EAAM,MAAQ,EACd,EAAI,SACJ,EAAM,OAAO,SAAS,cAGtB,EAAQ,OAAO,EAAO,GAEtB,KAAK,cAEE,IAKX,UAAW,WACP,IAAI,EAAS,EAAM,OAAO,MACtB,EAAU,EAAM,QAAQ,MAE5B,EAAM,QAAQ,iCAAkC,CAAC,EAAQ,IAEzD,EAAU,KAAK,4BAA4B,SAE3C,EAAM,MAAQ,GACd,EAAU,GAEV,KAAK,cAEL,EAAM,QAAQ,gCAAiC,CAAC,EAAQ,KAK5D,GAAI,SAAU,EAAK,GACf,IAAI,EAAkB,EAAU,KAAK,sBACjC,EAAU,EAAM,QAAQ,MAC5B,OAAO,EAAE,QACJ,SAAS,SAAW,EAAQ,eAAiB,UAAY,KACzD,OAAO,sBAAwB,EAAM,WACrC,OAAO,2CACP,KAAK,CACF,KAAQ,EACR,MAAS,EAAM,OAAO,MAAM,KAE/B,aAAa,IAOtB,YAAa,WACT,IAAI,EAAY,KAAK,YACjB,EAAS,EAAU,KAAK,sBAC5B,EAAY,EAAO,OAAS,EAAO,QAOvC,UAAW,WACP,IAAI,EAAQ,EAAM,QAAQ,IAAI,iBAC9B,OAAM,EAAQ,GAGP,GAAS,EAAQ,QAK5B,OAAQ,SAAU,GACd,GAAM,aAAe,OAUK,IAAf,EAAI,SACX,EAAM,UAXoB,CAC1B,IAAI,EAAM,EACV,EAAM,KACN,EAAU,KAAK,4BAA4B,MAAK,WAC5C,IAAI,EAAO,EAAE,MACb,GAAI,EAAK,KAAK,WAAa,EAEvB,OADA,EAAM,GACC,KAMnB,OAAO,GAKX,QAAS,WACL,OAAO,KAAK,MAAM,OAAS,IAMnC,MAAO,SAAU,GACb,IAAI,EAAQ,EACR,EAAU,EAAM,QAAQ,MACxB,EAAgB,EAAQ,cAE5B,GAAI,EAAM,SAAS,GACf,GAAI,KAAK,UAAY,KAAK,UAEtB,UADO,EAAK,eACR,EAAM,QAAQ,GAAgB,CAE9B,IADA,IAAI,EAAS,GACJ,EAAI,EAAG,EAAI,EAAc,OAAQ,IAAK,CAC3C,IAAI,EAAY,EAAM,iBAAiB,EAAM,EAAc,IACvD,IACA,EAAO,EAAc,IAAM,GAGnC,EAAQ,KAAK,MAAM,QAEnB,EAAQ,KAAK,MAAM,QAGvB,EADO,EAAM,UAAU,EAAM,GACrB,EAAM,iBAAiB,EAAM,GAC9B,EAAM,UAAU,EAAM,EAAQ,SAAS,IACtC,EAAM,iBAAiB,EAAM,EAAQ,SAAS,IAE9C,KAGhB,OAAO,GAKX,KAAM,SAAU,GACZ,IAAI,EAAO,EACP,EAAU,EAAM,QAAQ,MAa5B,OAXI,EAAM,SAAS,KACf,EAAO,EAAM,iBAAiB,EAAM,EAAQ,SAAS,IAEjD,EADA,EAAM,UAAU,EAAM,EAAQ,cACvB,EAAM,iBAAiB,EAAM,EAAQ,cAErC,KAAK,aAAa,QAAQ,EAAM,EAAQ,aAAc,IAIrE,EAAO,EAAM,WAAW,IAO5B,aAAc,CACV,QAAS,SAAU,EAAM,EAAS,GAC9B,GAAI,EAAM,SAAS,IAA4B,iBAAZ,EAAsB,CACrD,IAAI,EAAa,KAAK,MAAM,GAC5B,IAAK,EAAM,QAAQ,IAAS,EAMxB,OALA,EAAE,KAAK,GAAY,SAAU,EAAQ,GAC7B,EAAM,UAAU,EAAM,KACtB,EAAU,EAAQ,QAAQ,EAAQ,EAAM,iBAAiB,EAAM,QAGhE,EAGf,OAAO,GAEX,MAAO,SAAU,GACb,IAAI,EAAU,EAAQ,MAAM,YAC5B,IAAK,EACD,OAAO,EAEX,IAAI,EAAa,GAIjB,OAHA,EAAQ,KAAI,SAAU,GAClB,EAAW,GAAU,EAAO,MAAM,GAAI,MAEnC,IAMf,MAAO,SAAU,EAAO,GACpB,IAAI,EAAU,EAAM,MAChB,EAAU,EAAM,QAAQ,MAiB5B,OAfI,EAAQ,UACR,KAAK,SAAS,YAGlB,EAAM,MAAQ,GACV,IACA,EAAO,GAAG,MAAQ,IAEN,KAAZ,GAAmB,GACnB,EACK,QAAQ,sBAAuB,CAAC,CAAC,MAAO,GAAI,KAAM,IAAK,IACvD,QAAQ,qBAAsB,CAAC,CAAC,MAAO,GAAI,KAAM,IAAK,IACtD,QAAQ,UAEjB,EAAU,GACH,MAKX,MAAO,SAAU,GACb,GAAmB,iBAAR,EAAkB,CACzB,IAAI,EAAU,EAAM,QAAQ,MACxB,EAAM,QAAQ,KAAS,EAAM,UAAU,GACvC,EAAM,EAAQ,SAAW,GAAM,KAAK,SAAW,GAAK,GAC7C,KAAK,QAEZ,GADA,EAAM,EAAI,WAAW,MAAM,EAAQ,kBACzB,KAAI,SAAU,GACpB,OAAO,EAAE,WAEL,KAAK,WAAa,KAAK,WAAa,KAAK,OAAO,GACxD,EAAM,KAAK,MAAM,GACK,iBAAR,IACd,EAAM,EAAI,YAGlB,OAAO,GAKX,MAAO,SAAU,GAYb,MAXmB,iBAAR,IACH,EAAM,QAAQ,KAAS,EAAM,UAAU,GACvC,EAAM,GACgB,iBAAR,EACd,EAAM,EAAI,WACH,KAAK,QACZ,EAAM,EAAI,KAAK,EAAM,QAAQ,IAAI,qBAC1B,KAAK,UAAY,KAAK,aAC7B,EAAM,KAAK,UAAU,KAGtB,EAAE,KAAK,IAMlB,OAAQ,SAAU,GACd,QAAmB,IAAR,EAAqB,CAC5B,GAAI,EAAM,SAAS,GACf,EAAM,KAAK,UAAU,QAClB,GAAmB,iBAAR,EACd,OAAO,EAEX,OAA6B,IAArB,EAAI,QAAQ,MAAoC,IAAtB,EAAI,QAAQ,MAElD,IACI,EADU,EAAM,QAAQ,MACT,cACnB,OAAQ,EAAM,SAAS,IAAkB,MAAT,GAKpC,QAAS,WACL,IAAI,EAAU,EAAM,QAAQ,MAC5B,OAAQ,EAAQ,mBAA+C,MAA1B,EAAQ,eAKjD,MAAO,WACH,OAAS,KAAK,UAAY,EAAM,QAAQ,IAAI,cAOpD,KAAK,KAAO,CAIR,KAAM,SAAU,EAAU,GACtB,IAAI,EAAS,KACT,EAAO,GACX,EAAM,QAAQ,4BAEd,KAAK,KAAI,SAAU,GACf,EAAO,EAAK,OAAO,GAEnB,EAAO,QAAO,SAAU,GACpB,EAAO,EAAK,OAAO,GAEnB,EAAO,UAAS,SAAU,GACtB,EAAO,EAAK,OAAO,GAEnB,EAAM,QAAQ,0BAA2B,CAAC,IAC1C,EAAS,WAGlB,IAKP,OAAQ,SAAU,GACd,IACI,EAAU,EAAM,QAAQ,MAE5B,GAA4B,iBAAjB,EAAQ,KAAmB,CAClC,IAAI,EAAM,EAAQ,KACd,EAAQ,EAAM,MAAM,KAAK,GAAK,GAClC,GAAI,EAEA,YADA,EAAS,GAGb,KAAK,OAAO,CACR,IAAK,EACL,QAAS,SAAU,GACf,EAAQ,KAAO,EACf,EAAS,GACT,EAAM,MAAM,MAAM,EAAK,EAAM,EAAQ,eAAe,UAIhC,iBAAjB,EAAQ,OACf,EAAQ,KAAO,IAEnB,EAAS,EAAQ,OAMzB,SAAU,SAAU,GAChB,IAAI,EAAO,EAAM,KAAK,QAClB,EAAW,GACV,EAAM,QAAQ,IACf,EAAE,IAAM,GAAM,KAAK,UAAU,MAAK,WAC9B,IAAI,EAAU,EAAE,MACZ,EAAM,EAAQ,MACd,EAAQ,EAAQ,OACpB,EAAS,KAAK,CACV,MAAQ,EAAM,OAAS,EAAI,EAAQ,EACnC,MAAO,OAInB,EAAS,IAKb,IAAK,SAAU,EAAU,GACrB,IAAI,EAAU,EAAO,MACjB,EAAU,EAAM,QAAQ,MACxB,EAAmB,EAAQ,iBAC3B,EAAyB,EAAQ,uBACjC,EAAQ,EAAM,OAAO,MACrB,EAAY,KAAK,gBAErB,GAAI,EAAM,QAAQ,EAAQ,KACtB,OAAO,EAAS,IAGpB,IAAI,EAAQ,GACgB,SAAxB,EAAQ,cACR,EAAE,KAAK,GAAS,SAAU,EAAQ,GACH,GAAvB,EAAO,QAAQ,MAAuB,QAAV,IAGhC,EAAM,GAAU,aAEb,EAAM,WAIjB,IAAI,EAAW,EAAM,MAAM,OAAO,CAC1B,SAAU,EACV,KAAM,EACN,QAAS,EACT,QAAS,EAAQ,eAClB,EAAQ,KACX,EAAQ,EAAM,MAAM,KAAK,GAAU,GAEvC,GAAI,EACA,EAAS,OADb,CAKA,IAAI,EAAmC,mBAAnB,EAAc,OAC1B,EAAQ,OAAO,KAAK,EAAM,GAAI,GAC9B,EAAQ,OAEZ,EAAO,EAAE,OACT,EACA,EACA,CACI,KAAM,EACN,SAAU,EACV,SAAU,EAAQ,cAClB,QAAS,IAIjB,EAAK,GAAoB,EACzB,EAAK,GAA0B,EAAQ,cAEvC,KAAK,OAAO,CACR,IAAK,EAAQ,IACb,KAAM,EACN,QAAS,SAAU,GACA,EAAO,MAET,QAAU,EAAQ,QAC3B,EAAS,GAEb,EAAM,MAAM,MAAM,EAAU,EAAO,EAAQ,eAAe,QAOtE,OAAQ,SAAU,GACd,IAAI,EAAS,KACT,EAAU,EAAM,QAAQ,MAGxB,EAAM,SAAS,0BAGnB,EAAM,SAAS,wBAEoB,SAA/B,EAAQ,qBACR,EAAS,KAAO,KAAK,UAAU,EAAS,OAG5C,EAAE,KAAK,EAAE,OACL,CACI,KAAM,EAAQ,YACd,SAAU,OACV,QAAS,EAAQ,eACjB,YAAa,eAAiB,EAAQ,mBAAqB,kBAC3D,SAAU,WACN,EAAM,YAAY,0BAEvB,EAAU,CACT,QAAS,SAAU,GACf,EAAO,EAAO,kBAAkB,GAChC,EAAS,QAAQ,SAQjC,kBAAmB,SAAU,GACzB,IAAI,EAAU,EAAM,QAAQ,MACxB,EAAQ,EAAM,UAAU,EAAM,EAAQ,iBAAmB,EAAK,EAAQ,iBAAmB,EAQ7F,MANqB,iBAAV,GAA8C,IAAxB,EAAM,QAAQ,QAC3C,EAAQ,KAAK,MAAM,IAEnB,GAAS,EAAM,SACf,EAAM,QAAQ,IAAI,EAAE,OAAO,GAAI,EAAS,EAAM,UAE9C,EAAM,SAAS,GACR,EAEJ,IAKX,cAAe,WACX,IAAI,EAAY,EAAM,QAAQ,IAAI,aAC9B,EAAO,GAaX,OAZI,IACA,EAAgB,UAAI,GACpB,EAAU,MAAK,WACX,IAAI,EAAU,EAAE,MACZ,EAAO,EAAQ,KAAK,QACf,MAAM,MAAM,KAAK,KACjB,MAAM,KAAK,KAAK,KAChB,MAAM,KAAK,KAAK,KAChB,QAAQ,aAAc,IAC/B,EAAgB,UAAE,GAAQ,EAAQ,UAGnC,IAOf,KAAK,OAAS,CAIV,IAAK,SAAU,EAAU,EAAM,GAC3B,IAEI,EAAU,EAEd,IAHc,EAAM,QAAQ,MAGf,kBACL,EAAU,EAAM,MAAM,KAAK,IACjB,CAEV,GADA,EAAM,QAAQ,6BAA8B,CAAC,EAAU,KAClD,EAAM,QAAQ,GAAW,CAC1B,EAAU,GAEV,IADA,IAAI,EAVH,KAUkB,MAAM,GAChB,EAAQ,EAAG,EAAQ,EAAK,OAAQ,IAAS,CAC9C,IAAI,EAAO,EAAK,GACZ,EAAM,MAAM,KAGhB,EAhBH,KAgBiB,QAAQ,EAAM,KAExB,EAAQ,KAAK,IAIzB,EAAM,MAAM,MAAM,EAAU,EAAS,GACrC,EAAM,QAAQ,4BAA6B,CAAC,EAAU,EAAM,IAIpE,EAAS,IAKb,QAAS,SAAU,EAAM,GACrB,IAAI,EAAQ,EAAE,OAAO,GAAI,GACrB,EAAQ,GACR,EAAU,EAAM,QAAQ,MACxB,EAAW,EAAQ,SAEvB,GAAI,EAAS,OAAS,EAClB,IAAK,IAAI,EAAQ,EAAG,EAAQ,EAAS,OAAQ,IAAS,CAClD,IAAI,EAAiB,EAAS,GAC9B,GAAK,EAAM,UAAU,EAAM,IAAoB,EAAK,GAApD,CAQA,IAJA,IAAI,EAAO,EAAK,GAAgB,WAC5B,EAAY,EACZ,EAAU,KAAK,MAAM,GAEhB,EAAU,EAAG,EAAU,EAAS,OAAQ,IAAW,CACxD,IAAI,EAAU,EAAS,GACnB,KAAK,KAAK,EAAS,KACnB,EAAM,KAAK,GACX,EAAY,KAAK,UAAU,EAAS,IAIxC,IAAc,IACd,EAAM,EAAiB,cAAgB,KAAK,UAAU,KAMlE,QAAqB,IAAjB,EAAM,QAAiB,EAAQ,cAAgB,EAAM,OAAU,EAAS,OAAS,IAI9E,GAKX,UAAW,SAAU,EAAS,GAC1B,OAAI,GAEA,EAAU,EAAQ,QAAQ,sBAAuB,QAC1C,EAAK,QACR,IAAI,OAAO,EAAU,EAAM,QAAQ,IAAI,iBAAmB,KAAO,KACjE,eAGR,EAAU,EAAQ,MAAM,OAAO,KAAK,6BACrB,MAAM,QAAQ,KAAK,YAKtC,KAAM,SAAU,EAAS,GAErB,IADA,IAAI,EAAU,EAAM,QAAQ,MACnB,EAAQ,EAAG,EAAQ,EAAS,OAAQ,IAAS,CAClD,IAAI,EAAO,EAAS,GAGpB,GAFA,EAAO,KAAK,gBAAgB,GAC5B,EAAU,KAAK,gBAAgB,GAC3B,EAAQ,YACR,OAAO,GAAQ,EAEnB,GAAK,EAAQ,cAAiB,EAAK,QAAQ,IAAY,EAAgC,IAA1B,EAAK,QAAQ,GACtE,OAAO,EAGf,OAAO,GAKX,MAAO,SAAU,GAIb,GAHwB,iBAAb,IACP,EAAW,CAAC,EAAE,KAAK,KAEnB,EAAM,QAAQ,IAAI,gBAClB,IAAK,IAAI,EAAQ,EAAG,EAAQ,EAAS,OAAQ,IAAS,CAClD,IAAI,EAAU,EAAE,KAAK,EAAS,IAC9B,GAAI,EAAQ,QAAQ,KAAO,EAAG,CAC1B,IAAI,EAAQ,EAAQ,MAAM,KAC1B,EAAE,MAAM,EAAU,IAI9B,OAAO,GAKX,gBAAiB,SAAU,GACvB,GAAsB,iBAAX,EAAqB,CAC5B,IAAI,EAAkB,EAAM,QAAQ,IAAI,mBAKxC,MAJ+B,mBAApB,IACP,EAAS,EAAgB,KAE7B,EAAS,EAAO,UAAU,OAAO,QAAQ,mBAAoB,KAC/C,cAElB,OAAO,IAOf,KAAK,QAAU,CAMX,KAAM,SAAU,GACZ,IAAI,EAAS,KACT,EAAU,EAAM,QAAQ,MAI5B,GAFA,KAAK,QAAO,GAEP,EAEE,GAAsB,IAAnB,EAAQ,OAAX,CAKP,IAAI,EAAM,KAAK,YACV,EAAQ,SAGT,EAAU,KAAK,MAAM,GACrB,OAAO,KAAK,GAAS,SAAQ,SAAU,EAAW,GAC9C,IAAI,EAAQ,EAAQ,GAChB,EAAW,EAAQ,QACnB,EAAY,EAAM,QAAQ,UAAU,EAAM,GAAI,EAAU,GAElD,EAAE,QACH,SAAS,SACT,OAAO,EAAE,UACL,SAAS,cACT,KAAK,IAET,OAAO,EAAE,UACL,SAAS,oBACT,KAAK,IAAM,EAAM,SAErB,SAAS,GAElB,EAAO,MAAM,EAAO,OApBxB,KAAK,MAAM,EAAS,GAwBxB,IAAI,EAAM,EAAI,KAAK,kBAGnB,EAAI,GAAG,SAAS,SAAU,GACtB,IAAI,EAAO,EAAE,MAAM,KAAK,QACpB,IACA,EAAM,OAAO,QAAQ,GACrB,EAAO,SACP,EAAM,QAAQ,sBAAuB,CAAC,EAAM,QAEjD,GAAG,SAAS,WACX,EAAI,YAAY,UAChB,EAAE,MAAM,SAAS,UAAU,QAAQ,8BAA+B,CAAC,EAAE,MAAM,KAAK,aACjF,WACC,EAAE,MAAM,YAAY,aAGpB,EAAQ,kBACR,EAAI,OAAO,UAAU,SAAS,eAhD9B,KAAK,MAAM,EAAQ,gBAsD3B,MAAO,SAAU,GACb,IAAI,EAAM,QAAQ,GAAlB,CAGA,IAAI,EAAa,KAAK,YAClB,EAAU,EAAO,MAErB,EAAO,EAAK,MAAM,aAAa,KAAK,GACpC,EAAE,QACG,SAAS,mBACT,OAAO,GACP,SAAS,GAEd,EAAM,QAAQ,6BAA8B,CAAC,MAKjD,MAAO,SAAU,EAAO,GACpB,IAAI,EAAM,EAAM,QAAQ,IAAI,mBAE5B,EAAM,QAAQ,4BAA6B,CAAC,IAE5C,IAAK,IAAI,EAAQ,EAAG,EAAQ,EAAM,UAC1B,EAAM,GAAK,IAAQ,GADe,IAItC,KAAK,KAAK,EAAM,GAAQ,EAAO,EAAM,QAAQ,SAAS,GAG1D,EAAM,QAAQ,6BAA8B,CAAC,KAKjD,KAAM,SAAU,EAAM,EAAO,GACzB,IAAI,EAAM,EAAE,QACH,KAAK,CACF,KAAQ,SACR,SAAY,KACZ,gBAAiB,EAAQ,EACzB,eAAgB,IAEnB,KAAK,OAAQ,GACb,SAAS,QACd,EAAU,EAAM,QAAQ,MACxB,EAAoB,EAAQ,kBAEhC,IAAS,EAAQ,EAAG,EAAQ,EAAkB,OAAQ,IAAS,CAC3D,IAAI,EAAkB,EAAkB,GAExC,GAAI,EAAgB,QAAQ,MAAQ,EAAG,CACnC,IAAI,EAAM,EAAM,OAAO,aAAa,QAAQ,EAAM,GAC9C,EAAS,EAAM,OAAO,aAAa,MAAM,GAC7C,EAAQ,EAAE,UACL,SAAS,aAAe,OAAO,OAAO,GAAQ,KAAK,MACnD,KAAK,EAAM,SACb,CACH,GAAI,EAAQ,SAAW,EAAQ,UAAY,IAAoB,EAAM,UAAU,EAAM,GACjF,SAEJ,IAAI,EAAQ,GACZ,GAAI,IAAoB,EAAQ,aAE5B,EAAQ,EAAE,SACL,SAAS,aAAe,GACxB,KAAK,MAAO,EAAK,QACnB,CACH,IAAI,EAAe,EAAM,QAAQ,UAAU,EAAM,GAEjD,EAAQ,EAAE,UACL,SAAS,aAAe,GACxB,KAAK,EAAe,MAIjC,EAAM,SAAS,GAKnB,OAFA,EAAM,QAAQ,4BAA6B,CAAC,EAAK,IAE1C,GAKX,UAAW,WACP,IAAI,EAAU,EAEV,IACA,EAAU,GAGd,IAAI,EAAa,EAAE,2BAsBnB,OApB0B,IAAtB,EAAW,SACX,EAAa,EAAE,QACV,SAAS,yBACT,SAAS,QACT,KAAK,CACF,GAAM,EAAO,KAAK,MAAQ,WAC1B,KAAQ,YAEX,IAAI,CACD,eAAgB,EAAQ,IAAI,qBAC5B,eAAgB,MAChB,4BAA6B,EAAQ,IAAI,6BACzC,6BAA8B,EAAQ,IAAI,gCAC3C,KAAK,CACJ,OAAS,GAAwB,EACjC,MAAO,IAEf,EAAM,SAAS,IAGZ,GAKX,MAAO,SAAU,GAIb,IAHA,IAAI,EAAO,GACP,EAAgB,EAAM,QAAQ,IAAI,WAE7B,EAAQ,EAAG,EAAQ,EAAQ,OAAQ,IAAS,CACjD,IAAI,EAAQ,EAAQ,GACpB,GAAI,EAAM,UAAU,EAAO,GAAgB,CACvC,IAAI,EAAgB,EAAM,GACrB,EAAM,UAAU,EAAM,KACvB,EAAK,GAAiB,IAE1B,EAAK,GAAe,KAAK,IAIjC,OAAO,GAMX,UAAW,SAAU,EAAM,EAAU,GACjC,OAAI,EAAM,UAAU,EAAM,EAAW,cAC1B,EAAK,EAAW,cAEnB,EAAM,UAAU,EAAM,GAAY,EAAK,GAAY,GAK/D,OAAQ,SAAU,KAMlB,OAAQ,SAAU,GACd,IAAI,EAAW,0BACX,IACA,EAAW,8BAEf,EAAM,QAAQ,+BACd,EAAE,GAAU,SACZ,EAAM,QAAQ,kCAOtB,KAAK,MAAQ,CAST,MAAO,SAAU,EAAK,EAAO,EAAU,GACnC,GAAI,EAAM,MAAM,cAAe,CAC3B,EAAM,KAAK,OAAO,OAAK,EAAW,GAClC,IAAI,EAAS,CACT,MAAO,EAEP,UAAW,EAAM,WACjB,SAAW,IAAsB,GAErC,aAAa,QAAQ,EAAK,KAAK,UAAU,MASjD,KAAM,SAAU,EAAK,GACjB,GAAI,EAAM,MAAM,cAAe,CAC3B,EAAM,KAAK,OAAO,OAAK,EAAW,GAClC,IAAI,EAAO,aAAa,QAAQ,GAChC,GAAI,EAAM,CACN,IAAI,EAAS,KAAK,MAAM,GACxB,IAAK,KAAK,QAAQ,GACd,OAAO,EAAO,MAElB,aAAa,WAAW,IAGhC,OAAO,MAOX,OAAQ,SAAU,EAAK,GACf,EAAM,MAAM,gBACZ,EAAM,KAAK,OAAO,OAAK,EAAW,GAClC,aAAa,WAAW,KAMhC,MAAO,WACH,GAAI,EAAM,MAAM,cAAe,CAC3B,IAAK,IAAI,KAAO,cACR,EAAI,QAAQ,IAAQ,GAAK,EAAI,QAAQ,WAAa,IAClD,aAAa,WAAW,GAGhC,aAAa,UAOrB,GAAI,WACA,GAAI,EAAM,MAAM,cACZ,IAAK,IAAI,KAAO,aACZ,GAAI,EAAI,QAAQ,IAAQ,GAAK,EAAI,QAAQ,WAAa,EAAG,CACrD,IAAI,EAAO,aAAa,QAAQ,GAChC,EAAO,KAAK,MAAM,GACd,KAAK,QAAQ,IACb,aAAa,WAAW,KAW5C,YAAa,WACT,GAAI,EAAM,QAAQ,IAAI,SAClB,IACI,MAAO,iBAAkB,QAAqC,OAA3B,OAAqB,aAC1D,MAAO,GACL,OAAO,EAGf,OAAO,GAQX,QAAS,SAAU,GACf,GAAI,EAAO,SAAU,CACjB,IAAI,EAAQ,EAAM,WAAa,EAAO,UACtC,OAAO,EAAO,UAAY,EAE9B,OAAO,GAOX,OAAQ,SAAU,EAAK,EAAM,GACN,iBAAR,IACP,EAAM,KAAK,UAAU,IAEzB,IAAI,EAAG,EACH,OAAiB,IAAT,EAAsB,WAAa,EAE/C,IAAK,EAAI,EAAG,EAAI,EAAI,OAAQ,EAAI,EAAG,IAC/B,GAAQ,EAAI,WAAW,GACvB,IAAS,GAAQ,IAAM,GAAQ,IAAM,GAAQ,IAAM,GAAQ,IAAM,GAAQ,IAE7E,OAAQ,EAAS,SAAW,IAAQ,WAAa,IAAS,GAAG,SAAS,KAAK,QAAQ,KAO3F,KAAK,QAAU,CACX,KAAM,WACF,IAAI,EAAU,EAAE,OAAO,GACnB,EACA,EAAM,OACN,CACI,SAAiC,OAAtB,EAAS,SAAoB,EAAM,GAAG,cAAgB,EAAS,SAC1E,SAAiC,OAAtB,EAAS,SAAoB,EAAM,GAAG,cAAgB,EAAS,SAC1E,cAAe,EAAM,QAI7B,OADA,KAAK,IAAI,GACF,GAEX,IAAK,SAAU,GACX,IAAI,EAAU,EAAM,KAAK,gBACzB,OAAK,EAGE,EAAM,UAAU,EAAS,GAAU,EAAQ,GAAU,KAFjD,GAAoB,IAInC,IAAK,SAAU,EAAQ,GACnB,IAAI,EAAU,KAAK,MAOnB,OANI,EAAM,UAAU,EAAS,IAAW,EAAM,UAAU,GACpD,EAAQ,GAAU,EACX,EAAM,SAAS,KACtB,EAAU,KAAK,WAAW,IAE9B,EAAM,KAAK,eAAgB,GACpB,GAEX,WAAY,SAAU,GAKlB,GAJA,EAAQ,SAAW,EAAM,WAAW,EAAQ,UAC5C,EAAQ,UAAY,EAAQ,WAAa,EAAE,EAAQ,WAAW,OAAS,EAAI,EAAE,EAAQ,WAAa,KAClG,EAAQ,aAAwC,OAAzB,EAAQ,aAAwB,EAAQ,SAAS,GAAK,EAAQ,aACrF,EAAQ,kBAAoB,EAAM,WAAW,EAAQ,kBAAmB,EAAQ,UAClD,MAA1B,EAAQ,eAAyB,EAAQ,WAAa,EAAQ,kBAC9D,MAAM,IAAI,MAAM,yDAEpB,OAAO,IAOf,KAAK,SAAW,WACZ,IAAI,EAAW,EAAE,2BACb,EAAU,EAAS,KAAK,UACxB,EAAS,OAAS,GAElB,EAAS,IAAI,CACT,MAAS,EAAQ,aAAe,KAChC,IAAS,EAAQ,SAAS,IAAM,EAAQ,cAAkB,KAC1D,KAAQ,EAAQ,SAAS,KAAO,QAQ5C,KAAK,UAAY,SAAU,GACvB,GAAI,KAAK,UAAU,GAAW,CAG1B,GAFA,EAAM,KAAK,WAAY,GACvB,EAAO,KAAK,WAAY,GACpB,EAAW,CACX,EAAU,IAAI,mBAAoB,EAAM,IAAI,qBAC5C,IAAI,EAAQ,EAAU,KAAK,kBACvB,EAAS,EAAU,KAAK,sBACxB,GACA,EAAU,SAAS,YACf,EAAM,OAAS,GACf,EAAO,OAEX,EAAM,SAEN,EAAU,YAAY,YACtB,EAAO,OACP,EAAM,QAGd,KAAK,QAAQ,IAAI,WAAY,GAEjC,OAAO,KAAK,QAAQ,IAAI,aAM5B,KAAK,MAAQ,SAAU,GACnB,OAAK,KAAK,QAAQ,IAAI,0BACX,EAAQ,OAAS,GAAK,EAAQ,QAAQ,KAAK,OAAO,KAAK,KAAS,IAQ/E,KAAK,OAAS,SAAU,GACpB,OAAO,EAAM,OAAS,EAAM,SAMhC,KAAK,QAAU,SAAU,GACrB,OAAK,EAAM,UAAU,KAEA,OAAV,IAEU,IAAV,IAEuB,IAAvB,KAAK,OAAO,IAEM,KAAlB,EAAE,KAAK,MAStB,KAAK,SAAW,SAAU,GACtB,OAAQ,GAA0B,iBAAV,GAM5B,KAAK,OAAS,SAAU,GACpB,OAAI,KAAK,SAAS,GACP,OAAO,KAAK,GAAO,OACF,iBAAV,GAA8C,iBAAjB,EAAM,OAC1C,EAAM,WAAW,OAErB,GAMX,KAAK,UAAY,SAAU,EAAU,GACjC,IAAI,OAAiC,IAAb,EACxB,OAAI,QAAiC,IAAb,OACyC,IAA9C,KAAK,iBAAiB,EAAU,GAE5C,GAMX,KAAK,QAAU,SAAU,GACrB,MAAoD,mBAA7C,OAAO,UAAU,SAAS,KAAK,IAQ1C,KAAK,SAAW,SAAU,GACtB,IAAI,EAAO,IAAI,KAIf,OAHI,IACA,EAAO,IAAI,KAAK,IAEb,KAAK,MAAM,EAAK,UAAY,MAMvC,KAAK,WAAa,SAAU,EAAO,GAC/B,OAAqB,IAAjB,EAAM,OACC,EAEa,iBAAV,EAAqB,EAAM,MAAM,EAAM,QAAQ,IAAI,oBAAsB,GAkB3F,KAAK,iBAAmB,SAAU,EAAK,GACnC,GAAK,GAAuB,iBAAT,EAAnB,CAKA,IADA,IAAI,EAAQ,EAAK,MAAM,KAChB,EAAM,SAAW,EAAM,EAAI,EAAM,YACxC,OAAO,IAQX,KAAK,WAAa,SAAU,GACxB,OAAO,EACD,QAAQ,KAAM,SACd,QAAQ,KAAM,QACd,QAAQ,KAAM,QACd,QAAQ,KAAM,UACd,QAAQ,KAAM,WAMxB,KAAK,MAAQ,SAAU,EAAK,GACxB,IAAI,EAAU,EAAM,QAAQ,MACvB,EAAQ,QAGR,IACD,EAAO,IAEX,EAAM,iBAAmB,EACzB,QAAQ,KAAK,GACb,QAAQ,IAAI,EAAE,OAAO,CACjB,UAAW,EAAM,KAAK,QACtB,QAAS,GACV,IACH,QAAQ,IAAI,2BAIhB,KAAK,WAIb,QAAO,SAAU,GACG,EAAE,UAEH,KAAK,iBAEhB,EAAE,UAAU,GAAG,WAAW,SAAU,GAChC,IAAI,EAAa,EAAE,yBACf,EAAU,EAAW,KAAK,UACxB,GAAY,EAAQ,GAAG,WAAe,EAAW,GAAG,EAAM,SAAmD,IAAxC,EAAW,IAAI,EAAM,QAAQ,QACpG,EAAW,YAGhB,GAAG,WAAW,SAAU,GACvB,IAAI,EAAM,EAAE,yBACR,EAAM,EAAI,KAAK,MACf,EAAU,EAAI,OAAO,WACrB,EAAQ,EAAQ,QAChB,EAAS,EAAI,OACb,EAAS,EAAM,OAAS,EAAM,QAElC,GAAe,IAAX,EAKJ,GAAe,KAAX,GAMJ,GAAe,KAAX,EACA,EAAM,iBACN,EAAQ,QAAQ,cAEb,GAAe,KAAX,GAA4B,KAAX,EAAe,CACvC,EAAM,iBAES,KAAX,EAEI,EADA,EAAQ,GAAU,EAAQ,QAAQ,SAAS,QAAQ,OAAS,EAClD,EAAQ,YAAY,UAAU,QAAQ,SAAS,QAAQ,SAAS,UAEhE,EAAI,YAAY,UAAU,OAAO,eAAe,SAAS,UAGrD,KAAX,IAEH,EADA,EAAQ,GAAK,EAAQ,QAAQ,SAAS,QAAQ,OAAS,EAC7C,EAAQ,YAAY,UAAU,QAAQ,SAAS,QAAQ,SAAS,UAEhE,EAAI,YAAY,UAAU,OAAO,cAAc,SAAS,WAI1E,EAAQ,QAAQ,8BAA+B,CAAC,EAAQ,KAAK,UAG7D,IAAI,GAAsC,IAA1B,EAAQ,OAAO,OAAe,EAAU,EAAQ,QAAQ,WAAW,IACnF,EAAI,QAAQ,CACR,UAAW,EAAW,EAAI,aAC3B,WAjCH,EAAI,YAmCT,KAAK,gBAAgB,GAG5B,OAAO,yEAAyE,kBAGpF,SAAW,GACP,IAAI,EAAO,EAAE,GAAG,IAChB,EAAE,GAAG,IAAM,SAAU,GACjB,IAAI,EAAS,KAAK,OAAS,QAA+B,IAAnB,KAAK,GAAG,OAC/C,YAAqB,IAAV,EACA,EAAS,KAAK,GAAG,OAAO,KAAI,GAAQ,EAAK,KAAK,MAElD,EAAS,KAAK,GAAG,OAAO,IAAI,GAAS,EAAK,KAAK,KAAM,IAPpE,CASG,S"} \ No newline at end of file diff --git a/assets/js/jquery.min.js b/assets/js/jquery.min.js new file mode 100755 index 0000000..409c3f4 --- /dev/null +++ b/assets/js/jquery.min.js @@ -0,0 +1,2 @@ +/*! jQuery v3.4.1 | (c) JS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],E=C.document,r=Object.getPrototypeOf,s=t.slice,g=t.concat,u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.4.1",k=function(e,t){return new k.fn.init(e,t)},p=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function d(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp($),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+$),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(m.childNodes),m.childNodes),t[m.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&((e?e.ownerDocument||e:m)!==C&&T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!A[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&U.test(t)){(s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=k),o=(l=h(t)).length;while(o--)l[o]="#"+s+" "+xe(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){A(t,!0)}finally{s===k&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[k]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:m;return r!==C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),m!==C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=k,!C.getElementsByName||!C.getElementsByName(k).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+k+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",$)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e===C||e.ownerDocument===m&&y(m,e)?-1:t===C||t.ownerDocument===m&&y(m,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===C?-1:t===C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]===m?-1:s[r]===m?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==C&&T(e),d.matchesSelector&&E&&!A[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){A(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=p[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&p(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):"string"!=typeof n?k.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:L.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),D.test(r[1])&&k.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(k):k.makeArray(e,this)}).prototype=k.fn,q=k(E);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,""],thead:[1,"","
          "],col:[2,"","
          "],tr:[2,"","
          "],td:[3,"","
          "],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?k.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;nx",y.noCloneChecked=!!me.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee=/^([^.]*)(?:\.(.+)|)/;function ke(){return!0}function Se(){return!1}function Ne(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ae(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ae(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return k().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=k.guid++)),e.each(function(){k.event.add(this,t,i,r,n)})}function De(e,i,o){o?(Q.set(e,i,!1),k.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Q.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(k.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Q.set(this,i,r),t=o(this,i),this[i](),r!==(n=Q.get(this,i))||t?Q.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Q.set(this,i,{value:k.event.trigger(k.extend(r[0],k.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Q.get(e,i)&&k.event.add(e,i,ke)}k.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.get(t);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&k.find.matchesSelector(ie,i),n.guid||(n.guid=k.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof k&&k.event.triggered!==e.type?k.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(R)||[""]).length;while(l--)d=g=(s=Ee.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=k.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=k.event.special[d]||{},c=k.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),k.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.hasData(e)&&Q.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(R)||[""]).length;while(l--)if(d=g=(s=Ee.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=k.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||k.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)k.event.remove(e,d+t[l],n,r,!0);k.isEmptyObject(u)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=k.event.fix(e),u=new Array(arguments.length),l=(Q.get(this,"events")||{})[s.type]||[],c=k.event.special[s.type]||{};for(u[0]=s,t=1;t\x20\t\r\n\f]*)[^>]*)\/>/gi,qe=/\s*$/g;function Oe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&k(e).children("tbody")[0]||e}function Pe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Re(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Me(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(Q.hasData(e)&&(o=Q.access(e),a=Q.set(t,o),l=o.events))for(i in delete a.handle,a.events={},l)for(n=0,r=l[i].length;n")},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=oe(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||k.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Vt,Gt=[],Yt=/(=)\?(?=&|$)|\?\?/;k.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Gt.pop()||k.expando+"_"+kt++;return this[e]=!0,e}}),k.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Yt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Yt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Yt,"$1"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||k.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?k(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Gt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Vt=E.implementation.createHTMLDocument("").body).innerHTML="
          ",2===Vt.childNodes.length),k.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=D.exec(e))?[t.createElement(i[1])]:(i=we([e],t,o),o&&o.length&&k(o).remove(),k.merge([],i.childNodes)));var r,i,o},k.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(k.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},k.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){k.fn[t]=function(e){return this.on(t,e)}}),k.expr.pseudos.animated=function(t){return k.grep(k.timers,function(e){return t===e.elem}).length},k.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=k.css(e,"position"),c=k(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=k.css(e,"top"),u=k.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,k.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},k.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){k.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===k.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===k.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=k(e).offset()).top+=k.css(e,"borderTopWidth",!0),i.left+=k.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-k.css(r,"marginTop",!0),left:t.left-i.left-k.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===k.css(e,"position"))e=e.offsetParent;return e||ie})}}),k.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;k.fn[t]=function(e){return _(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),k.each(["top","left"],function(e,n){k.cssHooks[n]=ze(y.pixelPosition,function(e,t){if(t)return t=_e(e,n),$e.test(t)?k(e).position()[n]+"px":t})}),k.each({Height:"height",Width:"width"},function(a,s){k.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){k.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return _(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?k.css(e,t,i):k.style(e,t,n,i)},s,n?e:void 0,n)}})}),k.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){k.fn[n]=function(e,t){return 0 .ui-controlgroup-item { + float: left; + margin-left: 0; + margin-right: 0; +} +.ui-controlgroup > .ui-controlgroup-item:focus, +.ui-controlgroup > .ui-controlgroup-item.ui-visual-focus { + z-index: 9999; +} +.ui-controlgroup-vertical > .ui-controlgroup-item { + display: block; + float: none; + width: 100%; + margin-top: 0; + margin-bottom: 0; + text-align: left; +} +.ui-controlgroup-vertical .ui-controlgroup-item { + box-sizing: border-box; +} +.ui-controlgroup .ui-controlgroup-label { + padding: .4em 1em; +} +.ui-controlgroup .ui-controlgroup-label span { + font-size: 80%; +} +.ui-controlgroup-horizontal .ui-controlgroup-label + .ui-controlgroup-item { + border-left: none; +} +.ui-controlgroup-vertical .ui-controlgroup-label + .ui-controlgroup-item { + border-top: none; +} +.ui-controlgroup-horizontal .ui-controlgroup-label.ui-widget-content { + border-right: none; +} +.ui-controlgroup-vertical .ui-controlgroup-label.ui-widget-content { + border-bottom: none; +} + +/* Spinner specific style fixes */ +.ui-controlgroup-vertical .ui-spinner-input { + + /* Support: IE8 only, Android < 4.4 only */ + width: 75%; + width: calc( 100% - 2.4em ); +} +.ui-controlgroup-vertical .ui-spinner .ui-spinner-up { + border-top-style: solid; +} + +.ui-checkboxradio-label .ui-icon-background { + box-shadow: inset 1px 1px 1px #ccc; + border-radius: .12em; + border: none; +} +.ui-checkboxradio-radio-label .ui-icon-background { + width: 16px; + height: 16px; + border-radius: 1em; + overflow: visible; + border: none; +} +.ui-checkboxradio-radio-label.ui-checkboxradio-checked .ui-icon, +.ui-checkboxradio-radio-label.ui-checkboxradio-checked:hover .ui-icon { + background-image: none; + width: 8px; + height: 8px; + border-width: 4px; + border-style: solid; +} +.ui-checkboxradio-disabled { + pointer-events: none; +} +.ui-datepicker { + width: 17em; + padding: .2em .2em 0; + display: none; +} +.ui-datepicker .ui-datepicker-header { + position: relative; + padding: .2em 0; +} +.ui-datepicker .ui-datepicker-prev, +.ui-datepicker .ui-datepicker-next { + position: absolute; + top: 2px; + width: 1.8em; + height: 1.8em; +} +.ui-datepicker .ui-datepicker-prev-hover, +.ui-datepicker .ui-datepicker-next-hover { + top: 1px; +} +.ui-datepicker .ui-datepicker-prev { + left: 2px; +} +.ui-datepicker .ui-datepicker-next { + right: 2px; +} +.ui-datepicker .ui-datepicker-prev-hover { + left: 1px; +} +.ui-datepicker .ui-datepicker-next-hover { + right: 1px; +} +.ui-datepicker .ui-datepicker-prev span, +.ui-datepicker .ui-datepicker-next span { + display: block; + position: absolute; + left: 50%; + margin-left: -8px; + top: 50%; + margin-top: -8px; +} +.ui-datepicker .ui-datepicker-title { + margin: 0 2.3em; + line-height: 1.8em; + text-align: center; +} +.ui-datepicker .ui-datepicker-title select { + font-size: 1em; + margin: 1px 0; +} +.ui-datepicker select.ui-datepicker-month, +.ui-datepicker select.ui-datepicker-year { + width: 45%; +} +.ui-datepicker table { + width: 100%; + font-size: .9em; + border-collapse: collapse; + margin: 0 0 .4em; +} +.ui-datepicker th { + padding: .7em .3em; + text-align: center; + font-weight: bold; + border: 0; +} +.ui-datepicker td { + border: 0; + padding: 1px; +} +.ui-datepicker td span, +.ui-datepicker td a { + display: block; + padding: .2em; + text-align: right; + text-decoration: none; +} +.ui-datepicker .ui-datepicker-buttonpane { + background-image: none; + margin: .7em 0 0 0; + padding: 0 .2em; + border-left: 0; + border-right: 0; + border-bottom: 0; +} +.ui-datepicker .ui-datepicker-buttonpane button { + float: right; + margin: .5em .2em .4em; + cursor: pointer; + padding: .2em .6em .3em .6em; + width: auto; + overflow: visible; +} +.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { + float: left; +} + +/* with multiple calendars */ +.ui-datepicker.ui-datepicker-multi { + width: auto; +} +.ui-datepicker-multi .ui-datepicker-group { + float: left; +} +.ui-datepicker-multi .ui-datepicker-group table { + width: 95%; + margin: 0 auto .4em; +} +.ui-datepicker-multi-2 .ui-datepicker-group { + width: 50%; +} +.ui-datepicker-multi-3 .ui-datepicker-group { + width: 33.3%; +} +.ui-datepicker-multi-4 .ui-datepicker-group { + width: 25%; +} +.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header, +.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { + border-left-width: 0; +} +.ui-datepicker-multi .ui-datepicker-buttonpane { + clear: left; +} +.ui-datepicker-row-break { + clear: both; + width: 100%; + font-size: 0; +} + +/* RTL support */ +.ui-datepicker-rtl { + direction: rtl; +} +.ui-datepicker-rtl .ui-datepicker-prev { + right: 2px; + left: auto; +} +.ui-datepicker-rtl .ui-datepicker-next { + left: 2px; + right: auto; +} +.ui-datepicker-rtl .ui-datepicker-prev:hover { + right: 1px; + left: auto; +} +.ui-datepicker-rtl .ui-datepicker-next:hover { + left: 1px; + right: auto; +} +.ui-datepicker-rtl .ui-datepicker-buttonpane { + clear: right; +} +.ui-datepicker-rtl .ui-datepicker-buttonpane button { + float: left; +} +.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current, +.ui-datepicker-rtl .ui-datepicker-group { + float: right; +} +.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header, +.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { + border-right-width: 0; + border-left-width: 1px; +} + +/* Icons */ +.ui-datepicker .ui-icon { + display: block; + text-indent: -99999px; + overflow: hidden; + background-repeat: no-repeat; + left: .5em; + top: .3em; +} +.ui-dialog { + position: absolute; + top: 0; + left: 0; + padding: .2em; + outline: 0; +} +.ui-dialog .ui-dialog-titlebar { + padding: .4em 1em; + position: relative; +} +.ui-dialog .ui-dialog-title { + float: left; + margin: .1em 0; + white-space: nowrap; + width: 90%; + overflow: hidden; + text-overflow: ellipsis; +} +.ui-dialog .ui-dialog-titlebar-close { + position: absolute; + right: .3em; + top: 50%; + width: 20px; + margin: -10px 0 0 0; + padding: 1px; + height: 20px; +} +.ui-dialog .ui-dialog-content { + position: relative; + border: 0; + padding: .5em 1em; + background: none; + overflow: auto; +} +.ui-dialog .ui-dialog-buttonpane { + text-align: left; + border-width: 1px 0 0 0; + background-image: none; + margin-top: .5em; + padding: .3em 1em .5em .4em; +} +.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { + float: right; +} +.ui-dialog .ui-dialog-buttonpane button { + margin: .5em .4em .5em 0; + cursor: pointer; +} +.ui-dialog .ui-resizable-n { + height: 2px; + top: 0; +} +.ui-dialog .ui-resizable-e { + width: 2px; + right: 0; +} +.ui-dialog .ui-resizable-s { + height: 2px; + bottom: 0; +} +.ui-dialog .ui-resizable-w { + width: 2px; + left: 0; +} +.ui-dialog .ui-resizable-se, +.ui-dialog .ui-resizable-sw, +.ui-dialog .ui-resizable-ne, +.ui-dialog .ui-resizable-nw { + width: 7px; + height: 7px; +} +.ui-dialog .ui-resizable-se { + right: 0; + bottom: 0; +} +.ui-dialog .ui-resizable-sw { + left: 0; + bottom: 0; +} +.ui-dialog .ui-resizable-ne { + right: 0; + top: 0; +} +.ui-dialog .ui-resizable-nw { + left: 0; + top: 0; +} +.ui-draggable .ui-dialog-titlebar { + cursor: move; +} +.ui-progressbar { + height: 2em; + text-align: left; + overflow: hidden; +} +.ui-progressbar .ui-progressbar-value { + margin: -1px; + height: 100%; +} +.ui-progressbar .ui-progressbar-overlay { + background: url("data:image/gif;base64,R0lGODlhKAAoAIABAAAAAP///yH/C05FVFNDQVBFMi4wAwEAAAAh+QQJAQABACwAAAAAKAAoAAACkYwNqXrdC52DS06a7MFZI+4FHBCKoDeWKXqymPqGqxvJrXZbMx7Ttc+w9XgU2FB3lOyQRWET2IFGiU9m1frDVpxZZc6bfHwv4c1YXP6k1Vdy292Fb6UkuvFtXpvWSzA+HycXJHUXiGYIiMg2R6W459gnWGfHNdjIqDWVqemH2ekpObkpOlppWUqZiqr6edqqWQAAIfkECQEAAQAsAAAAACgAKAAAApSMgZnGfaqcg1E2uuzDmmHUBR8Qil95hiPKqWn3aqtLsS18y7G1SzNeowWBENtQd+T1JktP05nzPTdJZlR6vUxNWWjV+vUWhWNkWFwxl9VpZRedYcflIOLafaa28XdsH/ynlcc1uPVDZxQIR0K25+cICCmoqCe5mGhZOfeYSUh5yJcJyrkZWWpaR8doJ2o4NYq62lAAACH5BAkBAAEALAAAAAAoACgAAAKVDI4Yy22ZnINRNqosw0Bv7i1gyHUkFj7oSaWlu3ovC8GxNso5fluz3qLVhBVeT/Lz7ZTHyxL5dDalQWPVOsQWtRnuwXaFTj9jVVh8pma9JjZ4zYSj5ZOyma7uuolffh+IR5aW97cHuBUXKGKXlKjn+DiHWMcYJah4N0lYCMlJOXipGRr5qdgoSTrqWSq6WFl2ypoaUAAAIfkECQEAAQAsAAAAACgAKAAAApaEb6HLgd/iO7FNWtcFWe+ufODGjRfoiJ2akShbueb0wtI50zm02pbvwfWEMWBQ1zKGlLIhskiEPm9R6vRXxV4ZzWT2yHOGpWMyorblKlNp8HmHEb/lCXjcW7bmtXP8Xt229OVWR1fod2eWqNfHuMjXCPkIGNileOiImVmCOEmoSfn3yXlJWmoHGhqp6ilYuWYpmTqKUgAAIfkECQEAAQAsAAAAACgAKAAAApiEH6kb58biQ3FNWtMFWW3eNVcojuFGfqnZqSebuS06w5V80/X02pKe8zFwP6EFWOT1lDFk8rGERh1TTNOocQ61Hm4Xm2VexUHpzjymViHrFbiELsefVrn6XKfnt2Q9G/+Xdie499XHd2g4h7ioOGhXGJboGAnXSBnoBwKYyfioubZJ2Hn0RuRZaflZOil56Zp6iioKSXpUAAAh+QQJAQABACwAAAAAKAAoAAACkoQRqRvnxuI7kU1a1UU5bd5tnSeOZXhmn5lWK3qNTWvRdQxP8qvaC+/yaYQzXO7BMvaUEmJRd3TsiMAgswmNYrSgZdYrTX6tSHGZO73ezuAw2uxuQ+BbeZfMxsexY35+/Qe4J1inV0g4x3WHuMhIl2jXOKT2Q+VU5fgoSUI52VfZyfkJGkha6jmY+aaYdirq+lQAACH5BAkBAAEALAAAAAAoACgAAAKWBIKpYe0L3YNKToqswUlvznigd4wiR4KhZrKt9Upqip61i9E3vMvxRdHlbEFiEXfk9YARYxOZZD6VQ2pUunBmtRXo1Lf8hMVVcNl8JafV38aM2/Fu5V16Bn63r6xt97j09+MXSFi4BniGFae3hzbH9+hYBzkpuUh5aZmHuanZOZgIuvbGiNeomCnaxxap2upaCZsq+1kAACH5BAkBAAEALAAAAAAoACgAAAKXjI8By5zf4kOxTVrXNVlv1X0d8IGZGKLnNpYtm8Lr9cqVeuOSvfOW79D9aDHizNhDJidFZhNydEahOaDH6nomtJjp1tutKoNWkvA6JqfRVLHU/QUfau9l2x7G54d1fl995xcIGAdXqMfBNadoYrhH+Mg2KBlpVpbluCiXmMnZ2Sh4GBqJ+ckIOqqJ6LmKSllZmsoq6wpQAAAh+QQJAQABACwAAAAAKAAoAAAClYx/oLvoxuJDkU1a1YUZbJ59nSd2ZXhWqbRa2/gF8Gu2DY3iqs7yrq+xBYEkYvFSM8aSSObE+ZgRl1BHFZNr7pRCavZ5BW2142hY3AN/zWtsmf12p9XxxFl2lpLn1rseztfXZjdIWIf2s5dItwjYKBgo9yg5pHgzJXTEeGlZuenpyPmpGQoKOWkYmSpaSnqKileI2FAAACH5BAkBAAEALAAAAAAoACgAAAKVjB+gu+jG4kORTVrVhRlsnn2dJ3ZleFaptFrb+CXmO9OozeL5VfP99HvAWhpiUdcwkpBH3825AwYdU8xTqlLGhtCosArKMpvfa1mMRae9VvWZfeB2XfPkeLmm18lUcBj+p5dnN8jXZ3YIGEhYuOUn45aoCDkp16hl5IjYJvjWKcnoGQpqyPlpOhr3aElaqrq56Bq7VAAAOw=="); + height: 100%; + -ms-filter: "alpha(opacity=25)"; /* support: IE8 */ + opacity: 0.25; +} +.ui-progressbar-indeterminate .ui-progressbar-value { + background-image: none; +} +.ui-selectmenu-menu { + padding: 0; + margin: 0; + position: absolute; + top: 0; + left: 0; + display: none; +} +.ui-selectmenu-menu .ui-menu { + overflow: auto; + overflow-x: hidden; + padding-bottom: 1px; +} +.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup { + font-size: 1em; + font-weight: bold; + line-height: 1.5; + padding: 2px 0.4em; + margin: 0.5em 0 0 0; + height: auto; + border: 0; +} +.ui-selectmenu-open { + display: block; +} +.ui-selectmenu-text { + display: block; + margin-right: 20px; + overflow: hidden; + text-overflow: ellipsis; +} +.ui-selectmenu-button.ui-button { + text-align: left; + white-space: nowrap; + width: 14em; +} +.ui-selectmenu-icon.ui-icon { + float: right; + margin-top: 0; +} +.ui-slider { + position: relative; + text-align: left; +} +.ui-slider .ui-slider-handle { + position: absolute; + z-index: 2; + width: 1.2em; + height: 1.2em; + cursor: pointer; + -ms-touch-action: none; + touch-action: none; +} +.ui-slider .ui-slider-range { + position: absolute; + z-index: 1; + font-size: .7em; + display: block; + border: 0; + background-position: 0 0; +} + +/* support: IE8 - See #6727 */ +.ui-slider.ui-state-disabled .ui-slider-handle, +.ui-slider.ui-state-disabled .ui-slider-range { + filter: inherit; +} + +.ui-slider-horizontal { + height: .8em; +} +.ui-slider-horizontal .ui-slider-handle { + top: -.3em; + margin-left: -.6em; +} +.ui-slider-horizontal .ui-slider-range { + top: 0; + height: 100%; +} +.ui-slider-horizontal .ui-slider-range-min { + left: 0; +} +.ui-slider-horizontal .ui-slider-range-max { + right: 0; +} + +.ui-slider-vertical { + width: .8em; + height: 100px; +} +.ui-slider-vertical .ui-slider-handle { + left: -.3em; + margin-left: 0; + margin-bottom: -.6em; +} +.ui-slider-vertical .ui-slider-range { + left: 0; + width: 100%; +} +.ui-slider-vertical .ui-slider-range-min { + bottom: 0; +} +.ui-slider-vertical .ui-slider-range-max { + top: 0; +} +.ui-spinner { + position: relative; + display: inline-block; + overflow: hidden; + padding: 0; + vertical-align: middle; +} +.ui-spinner-input { + border: none; + background: none; + color: inherit; + padding: .222em 0; + margin: .2em 0; + vertical-align: middle; + margin-left: .4em; + margin-right: 2em; +} +.ui-spinner-button { + width: 1.6em; + height: 50%; + font-size: .5em; + padding: 0; + margin: 0; + text-align: center; + position: absolute; + cursor: default; + display: block; + overflow: hidden; + right: 0; +} +/* more specificity required here to override default borders */ +.ui-spinner a.ui-spinner-button { + border-top-style: none; + border-bottom-style: none; + border-right-style: none; +} +.ui-spinner-up { + top: 0; +} +.ui-spinner-down { + bottom: 0; +} +.ui-tabs { + position: relative;/* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */ + padding: .2em; +} +.ui-tabs .ui-tabs-nav { + margin: 0; + padding: .2em .2em 0; +} +.ui-tabs .ui-tabs-nav li { + list-style: none; + float: left; + position: relative; + top: 0; + margin: 1px .2em 0 0; + border-bottom-width: 0; + padding: 0; + white-space: nowrap; +} +.ui-tabs .ui-tabs-nav .ui-tabs-anchor { + float: left; + padding: .5em 1em; + text-decoration: none; +} +.ui-tabs .ui-tabs-nav li.ui-tabs-active { + margin-bottom: -1px; + padding-bottom: 1px; +} +.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor, +.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor, +.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor { + cursor: text; +} +.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor { + cursor: pointer; +} +.ui-tabs .ui-tabs-panel { + display: block; + border-width: 0; + padding: 1em 1.4em; + background: none; +} +.ui-tooltip { + padding: 8px; + position: absolute; + z-index: 9999; + max-width: 300px; +} +body .ui-tooltip { + border-width: 2px; +} + +/* Component containers +----------------------------------*/ +.ui-widget { + font-family: Trebuchet MS,Tahoma,Verdana,Arial,sans-serif; + font-size: 1.1em; +} +.ui-widget .ui-widget { + font-size: 1em; +} +.ui-widget input, +.ui-widget select, +.ui-widget textarea, +.ui-widget button { + font-family: Trebuchet MS,Tahoma,Verdana,Arial,sans-serif; + font-size: 1em; +} +.ui-widget.ui-widget-content { + border: 1px solid #cccccc; +} +.ui-widget-content { + border: 1px solid #dddddd; + background: #eeeeee url("images/ui-bg_highlight-soft_100_eeeeee_1x100.png") 50% top repeat-x; + color: #333333; +} +.ui-widget-content a { + color: #333333; +} +.ui-widget-header { + border: 1px solid #e78f08; + background: #f6a828 url("images/ui-bg_gloss-wave_35_f6a828_500x100.png") 50% 50% repeat-x; + color: #ffffff; + font-weight: bold; +} +.ui-widget-header a { + color: #ffffff; +} + +/* Interaction states +----------------------------------*/ +.ui-state-default, +.ui-widget-content .ui-state-default, +.ui-widget-header .ui-state-default, +.ui-button, + +/* We use html here because we need a greater specificity to make sure disabled +works properly when clicked or hovered */ +html .ui-button.ui-state-disabled:hover, +html .ui-button.ui-state-disabled:active { + border: 1px solid #cccccc; + background: #f6f6f6 url("images/ui-bg_glass_100_f6f6f6_1x400.png") 50% 50% repeat-x; + font-weight: bold; + color: #1c94c4; +} +.ui-state-default a, +.ui-state-default a:link, +.ui-state-default a:visited, +a.ui-button, +a:link.ui-button, +a:visited.ui-button, +.ui-button { + color: #1c94c4; + text-decoration: none; +} +.ui-state-hover, +.ui-widget-content .ui-state-hover, +.ui-widget-header .ui-state-hover, +.ui-state-focus, +.ui-widget-content .ui-state-focus, +.ui-widget-header .ui-state-focus, +.ui-button:hover, +.ui-button:focus { + border: 1px solid #fbcb09; + background: #fdf5ce url("images/ui-bg_glass_100_fdf5ce_1x400.png") 50% 50% repeat-x; + font-weight: bold; + color: #c77405; +} +.ui-state-hover a, +.ui-state-hover a:hover, +.ui-state-hover a:link, +.ui-state-hover a:visited, +.ui-state-focus a, +.ui-state-focus a:hover, +.ui-state-focus a:link, +.ui-state-focus a:visited, +a.ui-button:hover, +a.ui-button:focus { + color: #c77405; + text-decoration: none; +} + +.ui-visual-focus { + box-shadow: 0 0 3px 1px rgb(94, 158, 214); +} +.ui-state-active, +.ui-widget-content .ui-state-active, +.ui-widget-header .ui-state-active, +a.ui-button:active, +.ui-button:active, +.ui-button.ui-state-active:hover { + border: 1px solid #fbd850; + background: #ffffff url("images/ui-bg_glass_65_ffffff_1x400.png") 50% 50% repeat-x; + font-weight: bold; + color: #eb8f00; +} +.ui-icon-background, +.ui-state-active .ui-icon-background { + border: #fbd850; + background-color: #eb8f00; +} +.ui-state-active a, +.ui-state-active a:link, +.ui-state-active a:visited { + color: #eb8f00; + text-decoration: none; +} + +/* Interaction Cues +----------------------------------*/ +.ui-state-highlight, +.ui-widget-content .ui-state-highlight, +.ui-widget-header .ui-state-highlight { + border: 1px solid #fed22f; + background: #ffe45c url("images/ui-bg_highlight-soft_75_ffe45c_1x100.png") 50% top repeat-x; + color: #363636; +} +.ui-state-checked { + border: 1px solid #fed22f; + background: #ffe45c; +} +.ui-state-highlight a, +.ui-widget-content .ui-state-highlight a, +.ui-widget-header .ui-state-highlight a { + color: #363636; +} +.ui-state-error, +.ui-widget-content .ui-state-error, +.ui-widget-header .ui-state-error { + border: 1px solid #cd0a0a; + background: #b81900 url("images/ui-bg_diagonals-thick_18_b81900_40x40.png") 50% 50% repeat; + color: #ffffff; +} +.ui-state-error a, +.ui-widget-content .ui-state-error a, +.ui-widget-header .ui-state-error a { + color: #ffffff; +} +.ui-state-error-text, +.ui-widget-content .ui-state-error-text, +.ui-widget-header .ui-state-error-text { + color: #ffffff; +} +.ui-priority-primary, +.ui-widget-content .ui-priority-primary, +.ui-widget-header .ui-priority-primary { + font-weight: bold; +} +.ui-priority-secondary, +.ui-widget-content .ui-priority-secondary, +.ui-widget-header .ui-priority-secondary { + opacity: .7; + -ms-filter: "alpha(opacity=70)"; /* support: IE8 */ + font-weight: normal; +} +.ui-state-disabled, +.ui-widget-content .ui-state-disabled, +.ui-widget-header .ui-state-disabled { + opacity: .35; + -ms-filter: "alpha(opacity=35)"; /* support: IE8 */ + background-image: none; +} +.ui-state-disabled .ui-icon { + -ms-filter: "alpha(opacity=35)"; /* support: IE8 - See #6059 */ +} + +/* Icons +----------------------------------*/ + +/* states and images */ +.ui-icon { + width: 16px; + height: 16px; +} +.ui-icon, +.ui-widget-content .ui-icon { + background-image: url("images/ui-icons_222222_256x240.png"); +} +.ui-widget-header .ui-icon { + background-image: url("images/ui-icons_ffffff_256x240.png"); +} +.ui-state-hover .ui-icon, +.ui-state-focus .ui-icon, +.ui-button:hover .ui-icon, +.ui-button:focus .ui-icon { + background-image: url("images/ui-icons_ef8c08_256x240.png"); +} +.ui-state-active .ui-icon, +.ui-button:active .ui-icon { + background-image: url("images/ui-icons_ef8c08_256x240.png"); +} +.ui-state-highlight .ui-icon, +.ui-button .ui-state-highlight.ui-icon { + background-image: url("images/ui-icons_228ef1_256x240.png"); +} +.ui-state-error .ui-icon, +.ui-state-error-text .ui-icon { + background-image: url("images/ui-icons_ffd27a_256x240.png"); +} +.ui-button .ui-icon { + background-image: url("images/ui-icons_ef8c08_256x240.png"); +} + +/* positioning */ +/* Three classes needed to override `.ui-button:hover .ui-icon` */ +.ui-icon-blank.ui-icon-blank.ui-icon-blank { + background-image: none; +} +.ui-icon-caret-1-n { background-position: 0 0; } +.ui-icon-caret-1-ne { background-position: -16px 0; } +.ui-icon-caret-1-e { background-position: -32px 0; } +.ui-icon-caret-1-se { background-position: -48px 0; } +.ui-icon-caret-1-s { background-position: -65px 0; } +.ui-icon-caret-1-sw { background-position: -80px 0; } +.ui-icon-caret-1-w { background-position: -96px 0; } +.ui-icon-caret-1-nw { background-position: -112px 0; } +.ui-icon-caret-2-n-s { background-position: -128px 0; } +.ui-icon-caret-2-e-w { background-position: -144px 0; } +.ui-icon-triangle-1-n { background-position: 0 -16px; } +.ui-icon-triangle-1-ne { background-position: -16px -16px; } +.ui-icon-triangle-1-e { background-position: -32px -16px; } +.ui-icon-triangle-1-se { background-position: -48px -16px; } +.ui-icon-triangle-1-s { background-position: -65px -16px; } +.ui-icon-triangle-1-sw { background-position: -80px -16px; } +.ui-icon-triangle-1-w { background-position: -96px -16px; } +.ui-icon-triangle-1-nw { background-position: -112px -16px; } +.ui-icon-triangle-2-n-s { background-position: -128px -16px; } +.ui-icon-triangle-2-e-w { background-position: -144px -16px; } +.ui-icon-arrow-1-n { background-position: 0 -32px; } +.ui-icon-arrow-1-ne { background-position: -16px -32px; } +.ui-icon-arrow-1-e { background-position: -32px -32px; } +.ui-icon-arrow-1-se { background-position: -48px -32px; } +.ui-icon-arrow-1-s { background-position: -65px -32px; } +.ui-icon-arrow-1-sw { background-position: -80px -32px; } +.ui-icon-arrow-1-w { background-position: -96px -32px; } +.ui-icon-arrow-1-nw { background-position: -112px -32px; } +.ui-icon-arrow-2-n-s { background-position: -128px -32px; } +.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; } +.ui-icon-arrow-2-e-w { background-position: -160px -32px; } +.ui-icon-arrow-2-se-nw { background-position: -176px -32px; } +.ui-icon-arrowstop-1-n { background-position: -192px -32px; } +.ui-icon-arrowstop-1-e { background-position: -208px -32px; } +.ui-icon-arrowstop-1-s { background-position: -224px -32px; } +.ui-icon-arrowstop-1-w { background-position: -240px -32px; } +.ui-icon-arrowthick-1-n { background-position: 1px -48px; } +.ui-icon-arrowthick-1-ne { background-position: -16px -48px; } +.ui-icon-arrowthick-1-e { background-position: -32px -48px; } +.ui-icon-arrowthick-1-se { background-position: -48px -48px; } +.ui-icon-arrowthick-1-s { background-position: -64px -48px; } +.ui-icon-arrowthick-1-sw { background-position: -80px -48px; } +.ui-icon-arrowthick-1-w { background-position: -96px -48px; } +.ui-icon-arrowthick-1-nw { background-position: -112px -48px; } +.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; } +.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; } +.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; } +.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; } +.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; } +.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; } +.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; } +.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; } +.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; } +.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; } +.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; } +.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; } +.ui-icon-arrowreturn-1-w { background-position: -64px -64px; } +.ui-icon-arrowreturn-1-n { background-position: -80px -64px; } +.ui-icon-arrowreturn-1-e { background-position: -96px -64px; } +.ui-icon-arrowreturn-1-s { background-position: -112px -64px; } +.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; } +.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; } +.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; } +.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; } +.ui-icon-arrow-4 { background-position: 0 -80px; } +.ui-icon-arrow-4-diag { background-position: -16px -80px; } +.ui-icon-extlink { background-position: -32px -80px; } +.ui-icon-newwin { background-position: -48px -80px; } +.ui-icon-refresh { background-position: -64px -80px; } +.ui-icon-shuffle { background-position: -80px -80px; } +.ui-icon-transfer-e-w { background-position: -96px -80px; } +.ui-icon-transferthick-e-w { background-position: -112px -80px; } +.ui-icon-folder-collapsed { background-position: 0 -96px; } +.ui-icon-folder-open { background-position: -16px -96px; } +.ui-icon-document { background-position: -32px -96px; } +.ui-icon-document-b { background-position: -48px -96px; } +.ui-icon-note { background-position: -64px -96px; } +.ui-icon-mail-closed { background-position: -80px -96px; } +.ui-icon-mail-open { background-position: -96px -96px; } +.ui-icon-suitcase { background-position: -112px -96px; } +.ui-icon-comment { background-position: -128px -96px; } +.ui-icon-person { background-position: -144px -96px; } +.ui-icon-print { background-position: -160px -96px; } +.ui-icon-trash { background-position: -176px -96px; } +.ui-icon-locked { background-position: -192px -96px; } +.ui-icon-unlocked { background-position: -208px -96px; } +.ui-icon-bookmark { background-position: -224px -96px; } +.ui-icon-tag { background-position: -240px -96px; } +.ui-icon-home { background-position: 0 -112px; } +.ui-icon-flag { background-position: -16px -112px; } +.ui-icon-calendar { background-position: -32px -112px; } +.ui-icon-cart { background-position: -48px -112px; } +.ui-icon-pencil { background-position: -64px -112px; } +.ui-icon-clock { background-position: -80px -112px; } +.ui-icon-disk { background-position: -96px -112px; } +.ui-icon-calculator { background-position: -112px -112px; } +.ui-icon-zoomin { background-position: -128px -112px; } +.ui-icon-zoomout { background-position: -144px -112px; } +.ui-icon-search { background-position: -160px -112px; } +.ui-icon-wrench { background-position: -176px -112px; } +.ui-icon-gear { background-position: -192px -112px; } +.ui-icon-heart { background-position: -208px -112px; } +.ui-icon-star { background-position: -224px -112px; } +.ui-icon-link { background-position: -240px -112px; } +.ui-icon-cancel { background-position: 0 -128px; } +.ui-icon-plus { background-position: -16px -128px; } +.ui-icon-plusthick { background-position: -32px -128px; } +.ui-icon-minus { background-position: -48px -128px; } +.ui-icon-minusthick { background-position: -64px -128px; } +.ui-icon-close { background-position: -80px -128px; } +.ui-icon-closethick { background-position: -96px -128px; } +.ui-icon-key { background-position: -112px -128px; } +.ui-icon-lightbulb { background-position: -128px -128px; } +.ui-icon-scissors { background-position: -144px -128px; } +.ui-icon-clipboard { background-position: -160px -128px; } +.ui-icon-copy { background-position: -176px -128px; } +.ui-icon-contact { background-position: -192px -128px; } +.ui-icon-image { background-position: -208px -128px; } +.ui-icon-video { background-position: -224px -128px; } +.ui-icon-script { background-position: -240px -128px; } +.ui-icon-alert { background-position: 0 -144px; } +.ui-icon-info { background-position: -16px -144px; } +.ui-icon-notice { background-position: -32px -144px; } +.ui-icon-help { background-position: -48px -144px; } +.ui-icon-check { background-position: -64px -144px; } +.ui-icon-bullet { background-position: -80px -144px; } +.ui-icon-radio-on { background-position: -96px -144px; } +.ui-icon-radio-off { background-position: -112px -144px; } +.ui-icon-pin-w { background-position: -128px -144px; } +.ui-icon-pin-s { background-position: -144px -144px; } +.ui-icon-play { background-position: 0 -160px; } +.ui-icon-pause { background-position: -16px -160px; } +.ui-icon-seek-next { background-position: -32px -160px; } +.ui-icon-seek-prev { background-position: -48px -160px; } +.ui-icon-seek-end { background-position: -64px -160px; } +.ui-icon-seek-start { background-position: -80px -160px; } +/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */ +.ui-icon-seek-first { background-position: -80px -160px; } +.ui-icon-stop { background-position: -96px -160px; } +.ui-icon-eject { background-position: -112px -160px; } +.ui-icon-volume-off { background-position: -128px -160px; } +.ui-icon-volume-on { background-position: -144px -160px; } +.ui-icon-power { background-position: 0 -176px; } +.ui-icon-signal-diag { background-position: -16px -176px; } +.ui-icon-signal { background-position: -32px -176px; } +.ui-icon-battery-0 { background-position: -48px -176px; } +.ui-icon-battery-1 { background-position: -64px -176px; } +.ui-icon-battery-2 { background-position: -80px -176px; } +.ui-icon-battery-3 { background-position: -96px -176px; } +.ui-icon-circle-plus { background-position: 0 -192px; } +.ui-icon-circle-minus { background-position: -16px -192px; } +.ui-icon-circle-close { background-position: -32px -192px; } +.ui-icon-circle-triangle-e { background-position: -48px -192px; } +.ui-icon-circle-triangle-s { background-position: -64px -192px; } +.ui-icon-circle-triangle-w { background-position: -80px -192px; } +.ui-icon-circle-triangle-n { background-position: -96px -192px; } +.ui-icon-circle-arrow-e { background-position: -112px -192px; } +.ui-icon-circle-arrow-s { background-position: -128px -192px; } +.ui-icon-circle-arrow-w { background-position: -144px -192px; } +.ui-icon-circle-arrow-n { background-position: -160px -192px; } +.ui-icon-circle-zoomin { background-position: -176px -192px; } +.ui-icon-circle-zoomout { background-position: -192px -192px; } +.ui-icon-circle-check { background-position: -208px -192px; } +.ui-icon-circlesmall-plus { background-position: 0 -208px; } +.ui-icon-circlesmall-minus { background-position: -16px -208px; } +.ui-icon-circlesmall-close { background-position: -32px -208px; } +.ui-icon-squaresmall-plus { background-position: -48px -208px; } +.ui-icon-squaresmall-minus { background-position: -64px -208px; } +.ui-icon-squaresmall-close { background-position: -80px -208px; } +.ui-icon-grip-dotted-vertical { background-position: 0 -224px; } +.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; } +.ui-icon-grip-solid-vertical { background-position: -32px -224px; } +.ui-icon-grip-solid-horizontal { background-position: -48px -224px; } +.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; } +.ui-icon-grip-diagonal-se { background-position: -80px -224px; } + + +/* Misc visuals +----------------------------------*/ + +/* Corner radius */ +.ui-corner-all, +.ui-corner-top, +.ui-corner-left, +.ui-corner-tl { + border-top-left-radius: 4px; +} +.ui-corner-all, +.ui-corner-top, +.ui-corner-right, +.ui-corner-tr { + border-top-right-radius: 4px; +} +.ui-corner-all, +.ui-corner-bottom, +.ui-corner-left, +.ui-corner-bl { + border-bottom-left-radius: 4px; +} +.ui-corner-all, +.ui-corner-bottom, +.ui-corner-right, +.ui-corner-br { + border-bottom-right-radius: 4px; +} + +/* Overlays */ +.ui-widget-overlay { + background: #666666 url("images/ui-bg_diagonals-thick_20_666666_40x40.png") 50% 50% repeat; + opacity: .5; + -ms-filter: Alpha(Opacity=50); /* support: IE8 */ +} +.ui-widget-shadow { + -webkit-box-shadow: -5px -5px 5px #000000; + box-shadow: -5px -5px 5px #000000; +} diff --git a/assets/js/jquery/jquery-ui.js b/assets/js/jquery/jquery-ui.js new file mode 100755 index 0000000..5d6a87d --- /dev/null +++ b/assets/js/jquery/jquery-ui.js @@ -0,0 +1,19062 @@ +/*! jQuery UI - v1.13.2 - 2023-12-03 +* http://jqueryui.com +* Includes: widget.js, position.js, data.js, disable-selection.js, focusable.js, form-reset-mixin.js, jquery-patch.js, keycode.js, labels.js, scroll-parent.js, tabbable.js, unique-id.js, widgets/draggable.js, widgets/droppable.js, widgets/resizable.js, widgets/selectable.js, widgets/sortable.js, widgets/accordion.js, widgets/autocomplete.js, widgets/button.js, widgets/checkboxradio.js, widgets/controlgroup.js, widgets/datepicker.js, widgets/dialog.js, widgets/menu.js, widgets/mouse.js, widgets/progressbar.js, widgets/selectmenu.js, widgets/slider.js, widgets/spinner.js, widgets/tabs.js, widgets/tooltip.js, effect.js, effects/effect-blind.js, effects/effect-bounce.js, effects/effect-clip.js, effects/effect-drop.js, effects/effect-explode.js, effects/effect-fade.js, effects/effect-fold.js, effects/effect-highlight.js, effects/effect-puff.js, effects/effect-pulsate.js, effects/effect-scale.js, effects/effect-shake.js, effects/effect-size.js, effects/effect-slide.js, effects/effect-transfer.js +* Copyright jQuery Foundation and other contributors; Licensed MIT */ + +( function( factory ) { + "use strict"; + + if ( typeof define === "function" && define.amd ) { + + // AMD. Register as an anonymous module. + define( [ "jquery" ], factory ); + } else { + + // Browser globals + factory( jQuery ); + } +} )( function( $ ) { +"use strict"; + +$.ui = $.ui || {}; + +var version = $.ui.version = "1.13.2"; + + +/*! + * jQuery UI Widget 1.13.2 + * http://jqueryui.com + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + */ + +//>>label: Widget +//>>group: Core +//>>description: Provides a factory for creating stateful widgets with a common API. +//>>docs: http://api.jqueryui.com/jQuery.widget/ +//>>demos: http://jqueryui.com/widget/ + + +var widgetUuid = 0; +var widgetHasOwnProperty = Array.prototype.hasOwnProperty; +var widgetSlice = Array.prototype.slice; + +$.cleanData = ( function( orig ) { + return function( elems ) { + var events, elem, i; + for ( i = 0; ( elem = elems[ i ] ) != null; i++ ) { + + // Only trigger remove when necessary to save time + events = $._data( elem, "events" ); + if ( events && events.remove ) { + $( elem ).triggerHandler( "remove" ); + } + } + orig( elems ); + }; +} )( $.cleanData ); + +$.widget = function( name, base, prototype ) { + var existingConstructor, constructor, basePrototype; + + // ProxiedPrototype allows the provided prototype to remain unmodified + // so that it can be used as a mixin for multiple widgets (#8876) + var proxiedPrototype = {}; + + var namespace = name.split( "." )[ 0 ]; + name = name.split( "." )[ 1 ]; + var fullName = namespace + "-" + name; + + if ( !prototype ) { + prototype = base; + base = $.Widget; + } + + if ( Array.isArray( prototype ) ) { + prototype = $.extend.apply( null, [ {} ].concat( prototype ) ); + } + + // Create selector for plugin + $.expr.pseudos[ fullName.toLowerCase() ] = function( elem ) { + return !!$.data( elem, fullName ); + }; + + $[ namespace ] = $[ namespace ] || {}; + existingConstructor = $[ namespace ][ name ]; + constructor = $[ namespace ][ name ] = function( options, element ) { + + // Allow instantiation without "new" keyword + if ( !this || !this._createWidget ) { + return new constructor( options, element ); + } + + // Allow instantiation without initializing for simple inheritance + // must use "new" keyword (the code above always passes args) + if ( arguments.length ) { + this._createWidget( options, element ); + } + }; + + // Extend with the existing constructor to carry over any static properties + $.extend( constructor, existingConstructor, { + version: prototype.version, + + // Copy the object used to create the prototype in case we need to + // redefine the widget later + _proto: $.extend( {}, prototype ), + + // Track widgets that inherit from this widget in case this widget is + // redefined after a widget inherits from it + _childConstructors: [] + } ); + + basePrototype = new base(); + + // We need to make the options hash a property directly on the new instance + // otherwise we'll modify the options hash on the prototype that we're + // inheriting from + basePrototype.options = $.widget.extend( {}, basePrototype.options ); + $.each( prototype, function( prop, value ) { + if ( typeof value !== "function" ) { + proxiedPrototype[ prop ] = value; + return; + } + proxiedPrototype[ prop ] = ( function() { + function _super() { + return base.prototype[ prop ].apply( this, arguments ); + } + + function _superApply( args ) { + return base.prototype[ prop ].apply( this, args ); + } + + return function() { + var __super = this._super; + var __superApply = this._superApply; + var returnValue; + + this._super = _super; + this._superApply = _superApply; + + returnValue = value.apply( this, arguments ); + + this._super = __super; + this._superApply = __superApply; + + return returnValue; + }; + } )(); + } ); + constructor.prototype = $.widget.extend( basePrototype, { + + // TODO: remove support for widgetEventPrefix + // always use the name + a colon as the prefix, e.g., draggable:start + // don't prefix for widgets that aren't DOM-based + widgetEventPrefix: existingConstructor ? ( basePrototype.widgetEventPrefix || name ) : name + }, proxiedPrototype, { + constructor: constructor, + namespace: namespace, + widgetName: name, + widgetFullName: fullName + } ); + + // If this widget is being redefined then we need to find all widgets that + // are inheriting from it and redefine all of them so that they inherit from + // the new version of this widget. We're essentially trying to replace one + // level in the prototype chain. + if ( existingConstructor ) { + $.each( existingConstructor._childConstructors, function( i, child ) { + var childPrototype = child.prototype; + + // Redefine the child widget using the same prototype that was + // originally used, but inherit from the new version of the base + $.widget( childPrototype.namespace + "." + childPrototype.widgetName, constructor, + child._proto ); + } ); + + // Remove the list of existing child constructors from the old constructor + // so the old child constructors can be garbage collected + delete existingConstructor._childConstructors; + } else { + base._childConstructors.push( constructor ); + } + + $.widget.bridge( name, constructor ); + + return constructor; +}; + +$.widget.extend = function( target ) { + var input = widgetSlice.call( arguments, 1 ); + var inputIndex = 0; + var inputLength = input.length; + var key; + var value; + + for ( ; inputIndex < inputLength; inputIndex++ ) { + for ( key in input[ inputIndex ] ) { + value = input[ inputIndex ][ key ]; + if ( widgetHasOwnProperty.call( input[ inputIndex ], key ) && value !== undefined ) { + + // Clone objects + if ( $.isPlainObject( value ) ) { + target[ key ] = $.isPlainObject( target[ key ] ) ? + $.widget.extend( {}, target[ key ], value ) : + + // Don't extend strings, arrays, etc. with objects + $.widget.extend( {}, value ); + + // Copy everything else by reference + } else { + target[ key ] = value; + } + } + } + } + return target; +}; + +$.widget.bridge = function( name, object ) { + var fullName = object.prototype.widgetFullName || name; + $.fn[ name ] = function( options ) { + var isMethodCall = typeof options === "string"; + var args = widgetSlice.call( arguments, 1 ); + var returnValue = this; + + if ( isMethodCall ) { + + // If this is an empty collection, we need to have the instance method + // return undefined instead of the jQuery instance + if ( !this.length && options === "instance" ) { + returnValue = undefined; + } else { + this.each( function() { + var methodValue; + var instance = $.data( this, fullName ); + + if ( options === "instance" ) { + returnValue = instance; + return false; + } + + if ( !instance ) { + return $.error( "cannot call methods on " + name + + " prior to initialization; " + + "attempted to call method '" + options + "'" ); + } + + if ( typeof instance[ options ] !== "function" || + options.charAt( 0 ) === "_" ) { + return $.error( "no such method '" + options + "' for " + name + + " widget instance" ); + } + + methodValue = instance[ options ].apply( instance, args ); + + if ( methodValue !== instance && methodValue !== undefined ) { + returnValue = methodValue && methodValue.jquery ? + returnValue.pushStack( methodValue.get() ) : + methodValue; + return false; + } + } ); + } + } else { + + // Allow multiple hashes to be passed on init + if ( args.length ) { + options = $.widget.extend.apply( null, [ options ].concat( args ) ); + } + + this.each( function() { + var instance = $.data( this, fullName ); + if ( instance ) { + instance.option( options || {} ); + if ( instance._init ) { + instance._init(); + } + } else { + $.data( this, fullName, new object( options, this ) ); + } + } ); + } + + return returnValue; + }; +}; + +$.Widget = function( /* options, element */ ) {}; +$.Widget._childConstructors = []; + +$.Widget.prototype = { + widgetName: "widget", + widgetEventPrefix: "", + defaultElement: "
          ", + + options: { + classes: {}, + disabled: false, + + // Callbacks + create: null + }, + + _createWidget: function( options, element ) { + element = $( element || this.defaultElement || this )[ 0 ]; + this.element = $( element ); + this.uuid = widgetUuid++; + this.eventNamespace = "." + this.widgetName + this.uuid; + + this.bindings = $(); + this.hoverable = $(); + this.focusable = $(); + this.classesElementLookup = {}; + + if ( element !== this ) { + $.data( element, this.widgetFullName, this ); + this._on( true, this.element, { + remove: function( event ) { + if ( event.target === element ) { + this.destroy(); + } + } + } ); + this.document = $( element.style ? + + // Element within the document + element.ownerDocument : + + // Element is window or document + element.document || element ); + this.window = $( this.document[ 0 ].defaultView || this.document[ 0 ].parentWindow ); + } + + this.options = $.widget.extend( {}, + this.options, + this._getCreateOptions(), + options ); + + this._create(); + + if ( this.options.disabled ) { + this._setOptionDisabled( this.options.disabled ); + } + + this._trigger( "create", null, this._getCreateEventData() ); + this._init(); + }, + + _getCreateOptions: function() { + return {}; + }, + + _getCreateEventData: $.noop, + + _create: $.noop, + + _init: $.noop, + + destroy: function() { + var that = this; + + this._destroy(); + $.each( this.classesElementLookup, function( key, value ) { + that._removeClass( value, key ); + } ); + + // We can probably remove the unbind calls in 2.0 + // all event bindings should go through this._on() + this.element + .off( this.eventNamespace ) + .removeData( this.widgetFullName ); + this.widget() + .off( this.eventNamespace ) + .removeAttr( "aria-disabled" ); + + // Clean up events and states + this.bindings.off( this.eventNamespace ); + }, + + _destroy: $.noop, + + widget: function() { + return this.element; + }, + + option: function( key, value ) { + var options = key; + var parts; + var curOption; + var i; + + if ( arguments.length === 0 ) { + + // Don't return a reference to the internal hash + return $.widget.extend( {}, this.options ); + } + + if ( typeof key === "string" ) { + + // Handle nested keys, e.g., "foo.bar" => { foo: { bar: ___ } } + options = {}; + parts = key.split( "." ); + key = parts.shift(); + if ( parts.length ) { + curOption = options[ key ] = $.widget.extend( {}, this.options[ key ] ); + for ( i = 0; i < parts.length - 1; i++ ) { + curOption[ parts[ i ] ] = curOption[ parts[ i ] ] || {}; + curOption = curOption[ parts[ i ] ]; + } + key = parts.pop(); + if ( arguments.length === 1 ) { + return curOption[ key ] === undefined ? null : curOption[ key ]; + } + curOption[ key ] = value; + } else { + if ( arguments.length === 1 ) { + return this.options[ key ] === undefined ? null : this.options[ key ]; + } + options[ key ] = value; + } + } + + this._setOptions( options ); + + return this; + }, + + _setOptions: function( options ) { + var key; + + for ( key in options ) { + this._setOption( key, options[ key ] ); + } + + return this; + }, + + _setOption: function( key, value ) { + if ( key === "classes" ) { + this._setOptionClasses( value ); + } + + this.options[ key ] = value; + + if ( key === "disabled" ) { + this._setOptionDisabled( value ); + } + + return this; + }, + + _setOptionClasses: function( value ) { + var classKey, elements, currentElements; + + for ( classKey in value ) { + currentElements = this.classesElementLookup[ classKey ]; + if ( value[ classKey ] === this.options.classes[ classKey ] || + !currentElements || + !currentElements.length ) { + continue; + } + + // We are doing this to create a new jQuery object because the _removeClass() call + // on the next line is going to destroy the reference to the current elements being + // tracked. We need to save a copy of this collection so that we can add the new classes + // below. + elements = $( currentElements.get() ); + this._removeClass( currentElements, classKey ); + + // We don't use _addClass() here, because that uses this.options.classes + // for generating the string of classes. We want to use the value passed in from + // _setOption(), this is the new value of the classes option which was passed to + // _setOption(). We pass this value directly to _classes(). + elements.addClass( this._classes( { + element: elements, + keys: classKey, + classes: value, + add: true + } ) ); + } + }, + + _setOptionDisabled: function( value ) { + this._toggleClass( this.widget(), this.widgetFullName + "-disabled", null, !!value ); + + // If the widget is becoming disabled, then nothing is interactive + if ( value ) { + this._removeClass( this.hoverable, null, "ui-state-hover" ); + this._removeClass( this.focusable, null, "ui-state-focus" ); + } + }, + + enable: function() { + return this._setOptions( { disabled: false } ); + }, + + disable: function() { + return this._setOptions( { disabled: true } ); + }, + + _classes: function( options ) { + var full = []; + var that = this; + + options = $.extend( { + element: this.element, + classes: this.options.classes || {} + }, options ); + + function bindRemoveEvent() { + var nodesToBind = []; + + options.element.each( function( _, element ) { + var isTracked = $.map( that.classesElementLookup, function( elements ) { + return elements; + } ) + .some( function( elements ) { + return elements.is( element ); + } ); + + if ( !isTracked ) { + nodesToBind.push( element ); + } + } ); + + that._on( $( nodesToBind ), { + remove: "_untrackClassesElement" + } ); + } + + function processClassString( classes, checkOption ) { + var current, i; + for ( i = 0; i < classes.length; i++ ) { + current = that.classesElementLookup[ classes[ i ] ] || $(); + if ( options.add ) { + bindRemoveEvent(); + current = $( $.uniqueSort( current.get().concat( options.element.get() ) ) ); + } else { + current = $( current.not( options.element ).get() ); + } + that.classesElementLookup[ classes[ i ] ] = current; + full.push( classes[ i ] ); + if ( checkOption && options.classes[ classes[ i ] ] ) { + full.push( options.classes[ classes[ i ] ] ); + } + } + } + + if ( options.keys ) { + processClassString( options.keys.match( /\S+/g ) || [], true ); + } + if ( options.extra ) { + processClassString( options.extra.match( /\S+/g ) || [] ); + } + + return full.join( " " ); + }, + + _untrackClassesElement: function( event ) { + var that = this; + $.each( that.classesElementLookup, function( key, value ) { + if ( $.inArray( event.target, value ) !== -1 ) { + that.classesElementLookup[ key ] = $( value.not( event.target ).get() ); + } + } ); + + this._off( $( event.target ) ); + }, + + _removeClass: function( element, keys, extra ) { + return this._toggleClass( element, keys, extra, false ); + }, + + _addClass: function( element, keys, extra ) { + return this._toggleClass( element, keys, extra, true ); + }, + + _toggleClass: function( element, keys, extra, add ) { + add = ( typeof add === "boolean" ) ? add : extra; + var shift = ( typeof element === "string" || element === null ), + options = { + extra: shift ? keys : extra, + keys: shift ? element : keys, + element: shift ? this.element : element, + add: add + }; + options.element.toggleClass( this._classes( options ), add ); + return this; + }, + + _on: function( suppressDisabledCheck, element, handlers ) { + var delegateElement; + var instance = this; + + // No suppressDisabledCheck flag, shuffle arguments + if ( typeof suppressDisabledCheck !== "boolean" ) { + handlers = element; + element = suppressDisabledCheck; + suppressDisabledCheck = false; + } + + // No element argument, shuffle and use this.element + if ( !handlers ) { + handlers = element; + element = this.element; + delegateElement = this.widget(); + } else { + element = delegateElement = $( element ); + this.bindings = this.bindings.add( element ); + } + + $.each( handlers, function( event, handler ) { + function handlerProxy() { + + // Allow widgets to customize the disabled handling + // - disabled as an array instead of boolean + // - disabled class as method for disabling individual parts + if ( !suppressDisabledCheck && + ( instance.options.disabled === true || + $( this ).hasClass( "ui-state-disabled" ) ) ) { + return; + } + return ( typeof handler === "string" ? instance[ handler ] : handler ) + .apply( instance, arguments ); + } + + // Copy the guid so direct unbinding works + if ( typeof handler !== "string" ) { + handlerProxy.guid = handler.guid = + handler.guid || handlerProxy.guid || $.guid++; + } + + var match = event.match( /^([\w:-]*)\s*(.*)$/ ); + var eventName = match[ 1 ] + instance.eventNamespace; + var selector = match[ 2 ]; + + if ( selector ) { + delegateElement.on( eventName, selector, handlerProxy ); + } else { + element.on( eventName, handlerProxy ); + } + } ); + }, + + _off: function( element, eventName ) { + eventName = ( eventName || "" ).split( " " ).join( this.eventNamespace + " " ) + + this.eventNamespace; + element.off( eventName ); + + // Clear the stack to avoid memory leaks (#10056) + this.bindings = $( this.bindings.not( element ).get() ); + this.focusable = $( this.focusable.not( element ).get() ); + this.hoverable = $( this.hoverable.not( element ).get() ); + }, + + _delay: function( handler, delay ) { + function handlerProxy() { + return ( typeof handler === "string" ? instance[ handler ] : handler ) + .apply( instance, arguments ); + } + var instance = this; + return setTimeout( handlerProxy, delay || 0 ); + }, + + _hoverable: function( element ) { + this.hoverable = this.hoverable.add( element ); + this._on( element, { + mouseenter: function( event ) { + this._addClass( $( event.currentTarget ), null, "ui-state-hover" ); + }, + mouseleave: function( event ) { + this._removeClass( $( event.currentTarget ), null, "ui-state-hover" ); + } + } ); + }, + + _focusable: function( element ) { + this.focusable = this.focusable.add( element ); + this._on( element, { + focusin: function( event ) { + this._addClass( $( event.currentTarget ), null, "ui-state-focus" ); + }, + focusout: function( event ) { + this._removeClass( $( event.currentTarget ), null, "ui-state-focus" ); + } + } ); + }, + + _trigger: function( type, event, data ) { + var prop, orig; + var callback = this.options[ type ]; + + data = data || {}; + event = $.Event( event ); + event.type = ( type === this.widgetEventPrefix ? + type : + this.widgetEventPrefix + type ).toLowerCase(); + + // The original event may come from any element + // so we need to reset the target on the new event + event.target = this.element[ 0 ]; + + // Copy original event properties over to the new event + orig = event.originalEvent; + if ( orig ) { + for ( prop in orig ) { + if ( !( prop in event ) ) { + event[ prop ] = orig[ prop ]; + } + } + } + + this.element.trigger( event, data ); + return !( typeof callback === "function" && + callback.apply( this.element[ 0 ], [ event ].concat( data ) ) === false || + event.isDefaultPrevented() ); + } +}; + +$.each( { show: "fadeIn", hide: "fadeOut" }, function( method, defaultEffect ) { + $.Widget.prototype[ "_" + method ] = function( element, options, callback ) { + if ( typeof options === "string" ) { + options = { effect: options }; + } + + var hasOptions; + var effectName = !options ? + method : + options === true || typeof options === "number" ? + defaultEffect : + options.effect || defaultEffect; + + options = options || {}; + if ( typeof options === "number" ) { + options = { duration: options }; + } else if ( options === true ) { + options = {}; + } + + hasOptions = !$.isEmptyObject( options ); + options.complete = callback; + + if ( options.delay ) { + element.delay( options.delay ); + } + + if ( hasOptions && $.effects && $.effects.effect[ effectName ] ) { + element[ method ]( options ); + } else if ( effectName !== method && element[ effectName ] ) { + element[ effectName ]( options.duration, options.easing, callback ); + } else { + element.queue( function( next ) { + $( this )[ method ](); + if ( callback ) { + callback.call( element[ 0 ] ); + } + next(); + } ); + } + }; +} ); + +var widget = $.widget; + + +/*! + * jQuery UI Position 1.13.2 + * http://jqueryui.com + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + * + * http://api.jqueryui.com/position/ + */ + +//>>label: Position +//>>group: Core +//>>description: Positions elements relative to other elements. +//>>docs: http://api.jqueryui.com/position/ +//>>demos: http://jqueryui.com/position/ + + +( function() { +var cachedScrollbarWidth, + max = Math.max, + abs = Math.abs, + rhorizontal = /left|center|right/, + rvertical = /top|center|bottom/, + roffset = /[\+\-]\d+(\.[\d]+)?%?/, + rposition = /^\w+/, + rpercent = /%$/, + _position = $.fn.position; + +function getOffsets( offsets, width, height ) { + return [ + parseFloat( offsets[ 0 ] ) * ( rpercent.test( offsets[ 0 ] ) ? width / 100 : 1 ), + parseFloat( offsets[ 1 ] ) * ( rpercent.test( offsets[ 1 ] ) ? height / 100 : 1 ) + ]; +} + +function parseCss( element, property ) { + return parseInt( $.css( element, property ), 10 ) || 0; +} + +function isWindow( obj ) { + return obj != null && obj === obj.window; +} + +function getDimensions( elem ) { + var raw = elem[ 0 ]; + if ( raw.nodeType === 9 ) { + return { + width: elem.width(), + height: elem.height(), + offset: { top: 0, left: 0 } + }; + } + if ( isWindow( raw ) ) { + return { + width: elem.width(), + height: elem.height(), + offset: { top: elem.scrollTop(), left: elem.scrollLeft() } + }; + } + if ( raw.preventDefault ) { + return { + width: 0, + height: 0, + offset: { top: raw.pageY, left: raw.pageX } + }; + } + return { + width: elem.outerWidth(), + height: elem.outerHeight(), + offset: elem.offset() + }; +} + +$.position = { + scrollbarWidth: function() { + if ( cachedScrollbarWidth !== undefined ) { + return cachedScrollbarWidth; + } + var w1, w2, + div = $( "
          " + + "
          " ), + innerDiv = div.children()[ 0 ]; + + $( "body" ).append( div ); + w1 = innerDiv.offsetWidth; + div.css( "overflow", "scroll" ); + + w2 = innerDiv.offsetWidth; + + if ( w1 === w2 ) { + w2 = div[ 0 ].clientWidth; + } + + div.remove(); + + return ( cachedScrollbarWidth = w1 - w2 ); + }, + getScrollInfo: function( within ) { + var overflowX = within.isWindow || within.isDocument ? "" : + within.element.css( "overflow-x" ), + overflowY = within.isWindow || within.isDocument ? "" : + within.element.css( "overflow-y" ), + hasOverflowX = overflowX === "scroll" || + ( overflowX === "auto" && within.width < within.element[ 0 ].scrollWidth ), + hasOverflowY = overflowY === "scroll" || + ( overflowY === "auto" && within.height < within.element[ 0 ].scrollHeight ); + return { + width: hasOverflowY ? $.position.scrollbarWidth() : 0, + height: hasOverflowX ? $.position.scrollbarWidth() : 0 + }; + }, + getWithinInfo: function( element ) { + var withinElement = $( element || window ), + isElemWindow = isWindow( withinElement[ 0 ] ), + isDocument = !!withinElement[ 0 ] && withinElement[ 0 ].nodeType === 9, + hasOffset = !isElemWindow && !isDocument; + return { + element: withinElement, + isWindow: isElemWindow, + isDocument: isDocument, + offset: hasOffset ? $( element ).offset() : { left: 0, top: 0 }, + scrollLeft: withinElement.scrollLeft(), + scrollTop: withinElement.scrollTop(), + width: withinElement.outerWidth(), + height: withinElement.outerHeight() + }; + } +}; + +$.fn.position = function( options ) { + if ( !options || !options.of ) { + return _position.apply( this, arguments ); + } + + // Make a copy, we don't want to modify arguments + options = $.extend( {}, options ); + + var atOffset, targetWidth, targetHeight, targetOffset, basePosition, dimensions, + + // Make sure string options are treated as CSS selectors + target = typeof options.of === "string" ? + $( document ).find( options.of ) : + $( options.of ), + + within = $.position.getWithinInfo( options.within ), + scrollInfo = $.position.getScrollInfo( within ), + collision = ( options.collision || "flip" ).split( " " ), + offsets = {}; + + dimensions = getDimensions( target ); + if ( target[ 0 ].preventDefault ) { + + // Force left top to allow flipping + options.at = "left top"; + } + targetWidth = dimensions.width; + targetHeight = dimensions.height; + targetOffset = dimensions.offset; + + // Clone to reuse original targetOffset later + basePosition = $.extend( {}, targetOffset ); + + // Force my and at to have valid horizontal and vertical positions + // if a value is missing or invalid, it will be converted to center + $.each( [ "my", "at" ], function() { + var pos = ( options[ this ] || "" ).split( " " ), + horizontalOffset, + verticalOffset; + + if ( pos.length === 1 ) { + pos = rhorizontal.test( pos[ 0 ] ) ? + pos.concat( [ "center" ] ) : + rvertical.test( pos[ 0 ] ) ? + [ "center" ].concat( pos ) : + [ "center", "center" ]; + } + pos[ 0 ] = rhorizontal.test( pos[ 0 ] ) ? pos[ 0 ] : "center"; + pos[ 1 ] = rvertical.test( pos[ 1 ] ) ? pos[ 1 ] : "center"; + + // Calculate offsets + horizontalOffset = roffset.exec( pos[ 0 ] ); + verticalOffset = roffset.exec( pos[ 1 ] ); + offsets[ this ] = [ + horizontalOffset ? horizontalOffset[ 0 ] : 0, + verticalOffset ? verticalOffset[ 0 ] : 0 + ]; + + // Reduce to just the positions without the offsets + options[ this ] = [ + rposition.exec( pos[ 0 ] )[ 0 ], + rposition.exec( pos[ 1 ] )[ 0 ] + ]; + } ); + + // Normalize collision option + if ( collision.length === 1 ) { + collision[ 1 ] = collision[ 0 ]; + } + + if ( options.at[ 0 ] === "right" ) { + basePosition.left += targetWidth; + } else if ( options.at[ 0 ] === "center" ) { + basePosition.left += targetWidth / 2; + } + + if ( options.at[ 1 ] === "bottom" ) { + basePosition.top += targetHeight; + } else if ( options.at[ 1 ] === "center" ) { + basePosition.top += targetHeight / 2; + } + + atOffset = getOffsets( offsets.at, targetWidth, targetHeight ); + basePosition.left += atOffset[ 0 ]; + basePosition.top += atOffset[ 1 ]; + + return this.each( function() { + var collisionPosition, using, + elem = $( this ), + elemWidth = elem.outerWidth(), + elemHeight = elem.outerHeight(), + marginLeft = parseCss( this, "marginLeft" ), + marginTop = parseCss( this, "marginTop" ), + collisionWidth = elemWidth + marginLeft + parseCss( this, "marginRight" ) + + scrollInfo.width, + collisionHeight = elemHeight + marginTop + parseCss( this, "marginBottom" ) + + scrollInfo.height, + position = $.extend( {}, basePosition ), + myOffset = getOffsets( offsets.my, elem.outerWidth(), elem.outerHeight() ); + + if ( options.my[ 0 ] === "right" ) { + position.left -= elemWidth; + } else if ( options.my[ 0 ] === "center" ) { + position.left -= elemWidth / 2; + } + + if ( options.my[ 1 ] === "bottom" ) { + position.top -= elemHeight; + } else if ( options.my[ 1 ] === "center" ) { + position.top -= elemHeight / 2; + } + + position.left += myOffset[ 0 ]; + position.top += myOffset[ 1 ]; + + collisionPosition = { + marginLeft: marginLeft, + marginTop: marginTop + }; + + $.each( [ "left", "top" ], function( i, dir ) { + if ( $.ui.position[ collision[ i ] ] ) { + $.ui.position[ collision[ i ] ][ dir ]( position, { + targetWidth: targetWidth, + targetHeight: targetHeight, + elemWidth: elemWidth, + elemHeight: elemHeight, + collisionPosition: collisionPosition, + collisionWidth: collisionWidth, + collisionHeight: collisionHeight, + offset: [ atOffset[ 0 ] + myOffset[ 0 ], atOffset [ 1 ] + myOffset[ 1 ] ], + my: options.my, + at: options.at, + within: within, + elem: elem + } ); + } + } ); + + if ( options.using ) { + + // Adds feedback as second argument to using callback, if present + using = function( props ) { + var left = targetOffset.left - position.left, + right = left + targetWidth - elemWidth, + top = targetOffset.top - position.top, + bottom = top + targetHeight - elemHeight, + feedback = { + target: { + element: target, + left: targetOffset.left, + top: targetOffset.top, + width: targetWidth, + height: targetHeight + }, + element: { + element: elem, + left: position.left, + top: position.top, + width: elemWidth, + height: elemHeight + }, + horizontal: right < 0 ? "left" : left > 0 ? "right" : "center", + vertical: bottom < 0 ? "top" : top > 0 ? "bottom" : "middle" + }; + if ( targetWidth < elemWidth && abs( left + right ) < targetWidth ) { + feedback.horizontal = "center"; + } + if ( targetHeight < elemHeight && abs( top + bottom ) < targetHeight ) { + feedback.vertical = "middle"; + } + if ( max( abs( left ), abs( right ) ) > max( abs( top ), abs( bottom ) ) ) { + feedback.important = "horizontal"; + } else { + feedback.important = "vertical"; + } + options.using.call( this, props, feedback ); + }; + } + + elem.offset( $.extend( position, { using: using } ) ); + } ); +}; + +$.ui.position = { + fit: { + left: function( position, data ) { + var within = data.within, + withinOffset = within.isWindow ? within.scrollLeft : within.offset.left, + outerWidth = within.width, + collisionPosLeft = position.left - data.collisionPosition.marginLeft, + overLeft = withinOffset - collisionPosLeft, + overRight = collisionPosLeft + data.collisionWidth - outerWidth - withinOffset, + newOverRight; + + // Element is wider than within + if ( data.collisionWidth > outerWidth ) { + + // Element is initially over the left side of within + if ( overLeft > 0 && overRight <= 0 ) { + newOverRight = position.left + overLeft + data.collisionWidth - outerWidth - + withinOffset; + position.left += overLeft - newOverRight; + + // Element is initially over right side of within + } else if ( overRight > 0 && overLeft <= 0 ) { + position.left = withinOffset; + + // Element is initially over both left and right sides of within + } else { + if ( overLeft > overRight ) { + position.left = withinOffset + outerWidth - data.collisionWidth; + } else { + position.left = withinOffset; + } + } + + // Too far left -> align with left edge + } else if ( overLeft > 0 ) { + position.left += overLeft; + + // Too far right -> align with right edge + } else if ( overRight > 0 ) { + position.left -= overRight; + + // Adjust based on position and margin + } else { + position.left = max( position.left - collisionPosLeft, position.left ); + } + }, + top: function( position, data ) { + var within = data.within, + withinOffset = within.isWindow ? within.scrollTop : within.offset.top, + outerHeight = data.within.height, + collisionPosTop = position.top - data.collisionPosition.marginTop, + overTop = withinOffset - collisionPosTop, + overBottom = collisionPosTop + data.collisionHeight - outerHeight - withinOffset, + newOverBottom; + + // Element is taller than within + if ( data.collisionHeight > outerHeight ) { + + // Element is initially over the top of within + if ( overTop > 0 && overBottom <= 0 ) { + newOverBottom = position.top + overTop + data.collisionHeight - outerHeight - + withinOffset; + position.top += overTop - newOverBottom; + + // Element is initially over bottom of within + } else if ( overBottom > 0 && overTop <= 0 ) { + position.top = withinOffset; + + // Element is initially over both top and bottom of within + } else { + if ( overTop > overBottom ) { + position.top = withinOffset + outerHeight - data.collisionHeight; + } else { + position.top = withinOffset; + } + } + + // Too far up -> align with top + } else if ( overTop > 0 ) { + position.top += overTop; + + // Too far down -> align with bottom edge + } else if ( overBottom > 0 ) { + position.top -= overBottom; + + // Adjust based on position and margin + } else { + position.top = max( position.top - collisionPosTop, position.top ); + } + } + }, + flip: { + left: function( position, data ) { + var within = data.within, + withinOffset = within.offset.left + within.scrollLeft, + outerWidth = within.width, + offsetLeft = within.isWindow ? within.scrollLeft : within.offset.left, + collisionPosLeft = position.left - data.collisionPosition.marginLeft, + overLeft = collisionPosLeft - offsetLeft, + overRight = collisionPosLeft + data.collisionWidth - outerWidth - offsetLeft, + myOffset = data.my[ 0 ] === "left" ? + -data.elemWidth : + data.my[ 0 ] === "right" ? + data.elemWidth : + 0, + atOffset = data.at[ 0 ] === "left" ? + data.targetWidth : + data.at[ 0 ] === "right" ? + -data.targetWidth : + 0, + offset = -2 * data.offset[ 0 ], + newOverRight, + newOverLeft; + + if ( overLeft < 0 ) { + newOverRight = position.left + myOffset + atOffset + offset + data.collisionWidth - + outerWidth - withinOffset; + if ( newOverRight < 0 || newOverRight < abs( overLeft ) ) { + position.left += myOffset + atOffset + offset; + } + } else if ( overRight > 0 ) { + newOverLeft = position.left - data.collisionPosition.marginLeft + myOffset + + atOffset + offset - offsetLeft; + if ( newOverLeft > 0 || abs( newOverLeft ) < overRight ) { + position.left += myOffset + atOffset + offset; + } + } + }, + top: function( position, data ) { + var within = data.within, + withinOffset = within.offset.top + within.scrollTop, + outerHeight = within.height, + offsetTop = within.isWindow ? within.scrollTop : within.offset.top, + collisionPosTop = position.top - data.collisionPosition.marginTop, + overTop = collisionPosTop - offsetTop, + overBottom = collisionPosTop + data.collisionHeight - outerHeight - offsetTop, + top = data.my[ 1 ] === "top", + myOffset = top ? + -data.elemHeight : + data.my[ 1 ] === "bottom" ? + data.elemHeight : + 0, + atOffset = data.at[ 1 ] === "top" ? + data.targetHeight : + data.at[ 1 ] === "bottom" ? + -data.targetHeight : + 0, + offset = -2 * data.offset[ 1 ], + newOverTop, + newOverBottom; + if ( overTop < 0 ) { + newOverBottom = position.top + myOffset + atOffset + offset + data.collisionHeight - + outerHeight - withinOffset; + if ( newOverBottom < 0 || newOverBottom < abs( overTop ) ) { + position.top += myOffset + atOffset + offset; + } + } else if ( overBottom > 0 ) { + newOverTop = position.top - data.collisionPosition.marginTop + myOffset + atOffset + + offset - offsetTop; + if ( newOverTop > 0 || abs( newOverTop ) < overBottom ) { + position.top += myOffset + atOffset + offset; + } + } + } + }, + flipfit: { + left: function() { + $.ui.position.flip.left.apply( this, arguments ); + $.ui.position.fit.left.apply( this, arguments ); + }, + top: function() { + $.ui.position.flip.top.apply( this, arguments ); + $.ui.position.fit.top.apply( this, arguments ); + } + } +}; + +} )(); + +var position = $.ui.position; + + +/*! + * jQuery UI :data 1.13.2 + * http://jqueryui.com + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + */ + +//>>label: :data Selector +//>>group: Core +//>>description: Selects elements which have data stored under the specified key. +//>>docs: http://api.jqueryui.com/data-selector/ + + +var data = $.extend( $.expr.pseudos, { + data: $.expr.createPseudo ? + $.expr.createPseudo( function( dataName ) { + return function( elem ) { + return !!$.data( elem, dataName ); + }; + } ) : + + // Support: jQuery <1.8 + function( elem, i, match ) { + return !!$.data( elem, match[ 3 ] ); + } +} ); + +/*! + * jQuery UI Disable Selection 1.13.2 + * http://jqueryui.com + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + */ + +//>>label: disableSelection +//>>group: Core +//>>description: Disable selection of text content within the set of matched elements. +//>>docs: http://api.jqueryui.com/disableSelection/ + +// This file is deprecated + +var disableSelection = $.fn.extend( { + disableSelection: ( function() { + var eventType = "onselectstart" in document.createElement( "div" ) ? + "selectstart" : + "mousedown"; + + return function() { + return this.on( eventType + ".ui-disableSelection", function( event ) { + event.preventDefault(); + } ); + }; + } )(), + + enableSelection: function() { + return this.off( ".ui-disableSelection" ); + } +} ); + + +/*! + * jQuery UI Focusable 1.13.2 + * http://jqueryui.com + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + */ + +//>>label: :focusable Selector +//>>group: Core +//>>description: Selects elements which can be focused. +//>>docs: http://api.jqueryui.com/focusable-selector/ + + +// Selectors +$.ui.focusable = function( element, hasTabindex ) { + var map, mapName, img, focusableIfVisible, fieldset, + nodeName = element.nodeName.toLowerCase(); + + if ( "area" === nodeName ) { + map = element.parentNode; + mapName = map.name; + if ( !element.href || !mapName || map.nodeName.toLowerCase() !== "map" ) { + return false; + } + img = $( "img[usemap='#" + mapName + "']" ); + return img.length > 0 && img.is( ":visible" ); + } + + if ( /^(input|select|textarea|button|object)$/.test( nodeName ) ) { + focusableIfVisible = !element.disabled; + + if ( focusableIfVisible ) { + + // Form controls within a disabled fieldset are disabled. + // However, controls within the fieldset's legend do not get disabled. + // Since controls generally aren't placed inside legends, we skip + // this portion of the check. + fieldset = $( element ).closest( "fieldset" )[ 0 ]; + if ( fieldset ) { + focusableIfVisible = !fieldset.disabled; + } + } + } else if ( "a" === nodeName ) { + focusableIfVisible = element.href || hasTabindex; + } else { + focusableIfVisible = hasTabindex; + } + + return focusableIfVisible && $( element ).is( ":visible" ) && visible( $( element ) ); +}; + +// Support: IE 8 only +// IE 8 doesn't resolve inherit to visible/hidden for computed values +function visible( element ) { + var visibility = element.css( "visibility" ); + while ( visibility === "inherit" ) { + element = element.parent(); + visibility = element.css( "visibility" ); + } + return visibility === "visible"; +} + +$.extend( $.expr.pseudos, { + focusable: function( element ) { + return $.ui.focusable( element, $.attr( element, "tabindex" ) != null ); + } +} ); + +var focusable = $.ui.focusable; + + + +// Support: IE8 Only +// IE8 does not support the form attribute and when it is supplied. It overwrites the form prop +// with a string, so we need to find the proper form. +var form = $.fn._form = function() { + return typeof this[ 0 ].form === "string" ? this.closest( "form" ) : $( this[ 0 ].form ); +}; + + +/*! + * jQuery UI Form Reset Mixin 1.13.2 + * http://jqueryui.com + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + */ + +//>>label: Form Reset Mixin +//>>group: Core +//>>description: Refresh input widgets when their form is reset +//>>docs: http://api.jqueryui.com/form-reset-mixin/ + + +var formResetMixin = $.ui.formResetMixin = { + _formResetHandler: function() { + var form = $( this ); + + // Wait for the form reset to actually happen before refreshing + setTimeout( function() { + var instances = form.data( "ui-form-reset-instances" ); + $.each( instances, function() { + this.refresh(); + } ); + } ); + }, + + _bindFormResetHandler: function() { + this.form = this.element._form(); + if ( !this.form.length ) { + return; + } + + var instances = this.form.data( "ui-form-reset-instances" ) || []; + if ( !instances.length ) { + + // We don't use _on() here because we use a single event handler per form + this.form.on( "reset.ui-form-reset", this._formResetHandler ); + } + instances.push( this ); + this.form.data( "ui-form-reset-instances", instances ); + }, + + _unbindFormResetHandler: function() { + if ( !this.form.length ) { + return; + } + + var instances = this.form.data( "ui-form-reset-instances" ); + instances.splice( $.inArray( this, instances ), 1 ); + if ( instances.length ) { + this.form.data( "ui-form-reset-instances", instances ); + } else { + this.form + .removeData( "ui-form-reset-instances" ) + .off( "reset.ui-form-reset" ); + } + } +}; + + +/*! + * jQuery UI Support for jQuery core 1.8.x and newer 1.13.2 + * http://jqueryui.com + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + * + */ + +//>>label: jQuery 1.8+ Support +//>>group: Core +//>>description: Support version 1.8.x and newer of jQuery core + + +// Support: jQuery 1.9.x or older +// $.expr[ ":" ] is deprecated. +if ( !$.expr.pseudos ) { + $.expr.pseudos = $.expr[ ":" ]; +} + +// Support: jQuery 1.11.x or older +// $.unique has been renamed to $.uniqueSort +if ( !$.uniqueSort ) { + $.uniqueSort = $.unique; +} + +// Support: jQuery 2.2.x or older. +// This method has been defined in jQuery 3.0.0. +// Code from https://github.com/jquery/jquery/blob/e539bac79e666bba95bba86d690b4e609dca2286/src/selector/escapeSelector.js +if ( !$.escapeSelector ) { + + // CSS string/identifier serialization + // https://drafts.csswg.org/cssom/#common-serializing-idioms + var rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g; + + var fcssescape = function( ch, asCodePoint ) { + if ( asCodePoint ) { + + // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER + if ( ch === "\0" ) { + return "\uFFFD"; + } + + // Control characters and (dependent upon position) numbers get escaped as code points + return ch.slice( 0, -1 ) + "\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " "; + } + + // Other potentially-special ASCII characters get backslash-escaped + return "\\" + ch; + }; + + $.escapeSelector = function( sel ) { + return ( sel + "" ).replace( rcssescape, fcssescape ); + }; +} + +// Support: jQuery 3.4.x or older +// These methods have been defined in jQuery 3.5.0. +if ( !$.fn.even || !$.fn.odd ) { + $.fn.extend( { + even: function() { + return this.filter( function( i ) { + return i % 2 === 0; + } ); + }, + odd: function() { + return this.filter( function( i ) { + return i % 2 === 1; + } ); + } + } ); +} + +; +/*! + * jQuery UI Keycode 1.13.2 + * http://jqueryui.com + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + */ + +//>>label: Keycode +//>>group: Core +//>>description: Provide keycodes as keynames +//>>docs: http://api.jqueryui.com/jQuery.ui.keyCode/ + + +var keycode = $.ui.keyCode = { + BACKSPACE: 8, + COMMA: 188, + DELETE: 46, + DOWN: 40, + END: 35, + ENTER: 13, + ESCAPE: 27, + HOME: 36, + LEFT: 37, + PAGE_DOWN: 34, + PAGE_UP: 33, + PERIOD: 190, + RIGHT: 39, + SPACE: 32, + TAB: 9, + UP: 38 +}; + + +/*! + * jQuery UI Labels 1.13.2 + * http://jqueryui.com + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + */ + +//>>label: labels +//>>group: Core +//>>description: Find all the labels associated with a given input +//>>docs: http://api.jqueryui.com/labels/ + + +var labels = $.fn.labels = function() { + var ancestor, selector, id, labels, ancestors; + + if ( !this.length ) { + return this.pushStack( [] ); + } + + // Check control.labels first + if ( this[ 0 ].labels && this[ 0 ].labels.length ) { + return this.pushStack( this[ 0 ].labels ); + } + + // Support: IE <= 11, FF <= 37, Android <= 2.3 only + // Above browsers do not support control.labels. Everything below is to support them + // as well as document fragments. control.labels does not work on document fragments + labels = this.eq( 0 ).parents( "label" ); + + // Look for the label based on the id + id = this.attr( "id" ); + if ( id ) { + + // We don't search against the document in case the element + // is disconnected from the DOM + ancestor = this.eq( 0 ).parents().last(); + + // Get a full set of top level ancestors + ancestors = ancestor.add( ancestor.length ? ancestor.siblings() : this.siblings() ); + + // Create a selector for the label based on the id + selector = "label[for='" + $.escapeSelector( id ) + "']"; + + labels = labels.add( ancestors.find( selector ).addBack( selector ) ); + + } + + // Return whatever we have found for labels + return this.pushStack( labels ); +}; + + +/*! + * jQuery UI Scroll Parent 1.13.2 + * http://jqueryui.com + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + */ + +//>>label: scrollParent +//>>group: Core +//>>description: Get the closest ancestor element that is scrollable. +//>>docs: http://api.jqueryui.com/scrollParent/ + + +var scrollParent = $.fn.scrollParent = function( includeHidden ) { + var position = this.css( "position" ), + excludeStaticParent = position === "absolute", + overflowRegex = includeHidden ? /(auto|scroll|hidden)/ : /(auto|scroll)/, + scrollParent = this.parents().filter( function() { + var parent = $( this ); + if ( excludeStaticParent && parent.css( "position" ) === "static" ) { + return false; + } + return overflowRegex.test( parent.css( "overflow" ) + parent.css( "overflow-y" ) + + parent.css( "overflow-x" ) ); + } ).eq( 0 ); + + return position === "fixed" || !scrollParent.length ? + $( this[ 0 ].ownerDocument || document ) : + scrollParent; +}; + + +/*! + * jQuery UI Tabbable 1.13.2 + * http://jqueryui.com + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + */ + +//>>label: :tabbable Selector +//>>group: Core +//>>description: Selects elements which can be tabbed to. +//>>docs: http://api.jqueryui.com/tabbable-selector/ + + +var tabbable = $.extend( $.expr.pseudos, { + tabbable: function( element ) { + var tabIndex = $.attr( element, "tabindex" ), + hasTabindex = tabIndex != null; + return ( !hasTabindex || tabIndex >= 0 ) && $.ui.focusable( element, hasTabindex ); + } +} ); + + +/*! + * jQuery UI Unique ID 1.13.2 + * http://jqueryui.com + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + */ + +//>>label: uniqueId +//>>group: Core +//>>description: Functions to generate and remove uniqueId's +//>>docs: http://api.jqueryui.com/uniqueId/ + + +var uniqueId = $.fn.extend( { + uniqueId: ( function() { + var uuid = 0; + + return function() { + return this.each( function() { + if ( !this.id ) { + this.id = "ui-id-" + ( ++uuid ); + } + } ); + }; + } )(), + + removeUniqueId: function() { + return this.each( function() { + if ( /^ui-id-\d+$/.test( this.id ) ) { + $( this ).removeAttr( "id" ); + } + } ); + } +} ); + + + +// This file is deprecated +var ie = $.ui.ie = !!/msie [\w.]+/.exec( navigator.userAgent.toLowerCase() ); + +/*! + * jQuery UI Mouse 1.13.2 + * http://jqueryui.com + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + */ + +//>>label: Mouse +//>>group: Widgets +//>>description: Abstracts mouse-based interactions to assist in creating certain widgets. +//>>docs: http://api.jqueryui.com/mouse/ + + +var mouseHandled = false; +$( document ).on( "mouseup", function() { + mouseHandled = false; +} ); + +var widgetsMouse = $.widget( "ui.mouse", { + version: "1.13.2", + options: { + cancel: "input, textarea, button, select, option", + distance: 1, + delay: 0 + }, + _mouseInit: function() { + var that = this; + + this.element + .on( "mousedown." + this.widgetName, function( event ) { + return that._mouseDown( event ); + } ) + .on( "click." + this.widgetName, function( event ) { + if ( true === $.data( event.target, that.widgetName + ".preventClickEvent" ) ) { + $.removeData( event.target, that.widgetName + ".preventClickEvent" ); + event.stopImmediatePropagation(); + return false; + } + } ); + + this.started = false; + }, + + // TODO: make sure destroying one instance of mouse doesn't mess with + // other instances of mouse + _mouseDestroy: function() { + this.element.off( "." + this.widgetName ); + if ( this._mouseMoveDelegate ) { + this.document + .off( "mousemove." + this.widgetName, this._mouseMoveDelegate ) + .off( "mouseup." + this.widgetName, this._mouseUpDelegate ); + } + }, + + _mouseDown: function( event ) { + + // don't let more than one widget handle mouseStart + if ( mouseHandled ) { + return; + } + + this._mouseMoved = false; + + // We may have missed mouseup (out of window) + if ( this._mouseStarted ) { + this._mouseUp( event ); + } + + this._mouseDownEvent = event; + + var that = this, + btnIsLeft = ( event.which === 1 ), + + // event.target.nodeName works around a bug in IE 8 with + // disabled inputs (#7620) + elIsCancel = ( typeof this.options.cancel === "string" && event.target.nodeName ? + $( event.target ).closest( this.options.cancel ).length : false ); + if ( !btnIsLeft || elIsCancel || !this._mouseCapture( event ) ) { + return true; + } + + this.mouseDelayMet = !this.options.delay; + if ( !this.mouseDelayMet ) { + this._mouseDelayTimer = setTimeout( function() { + that.mouseDelayMet = true; + }, this.options.delay ); + } + + if ( this._mouseDistanceMet( event ) && this._mouseDelayMet( event ) ) { + this._mouseStarted = ( this._mouseStart( event ) !== false ); + if ( !this._mouseStarted ) { + event.preventDefault(); + return true; + } + } + + // Click event may never have fired (Gecko & Opera) + if ( true === $.data( event.target, this.widgetName + ".preventClickEvent" ) ) { + $.removeData( event.target, this.widgetName + ".preventClickEvent" ); + } + + // These delegates are required to keep context + this._mouseMoveDelegate = function( event ) { + return that._mouseMove( event ); + }; + this._mouseUpDelegate = function( event ) { + return that._mouseUp( event ); + }; + + this.document + .on( "mousemove." + this.widgetName, this._mouseMoveDelegate ) + .on( "mouseup." + this.widgetName, this._mouseUpDelegate ); + + event.preventDefault(); + + mouseHandled = true; + return true; + }, + + _mouseMove: function( event ) { + + // Only check for mouseups outside the document if you've moved inside the document + // at least once. This prevents the firing of mouseup in the case of IE<9, which will + // fire a mousemove event if content is placed under the cursor. See #7778 + // Support: IE <9 + if ( this._mouseMoved ) { + + // IE mouseup check - mouseup happened when mouse was out of window + if ( $.ui.ie && ( !document.documentMode || document.documentMode < 9 ) && + !event.button ) { + return this._mouseUp( event ); + + // Iframe mouseup check - mouseup occurred in another document + } else if ( !event.which ) { + + // Support: Safari <=8 - 9 + // Safari sets which to 0 if you press any of the following keys + // during a drag (#14461) + if ( event.originalEvent.altKey || event.originalEvent.ctrlKey || + event.originalEvent.metaKey || event.originalEvent.shiftKey ) { + this.ignoreMissingWhich = true; + } else if ( !this.ignoreMissingWhich ) { + return this._mouseUp( event ); + } + } + } + + if ( event.which || event.button ) { + this._mouseMoved = true; + } + + if ( this._mouseStarted ) { + this._mouseDrag( event ); + return event.preventDefault(); + } + + if ( this._mouseDistanceMet( event ) && this._mouseDelayMet( event ) ) { + this._mouseStarted = + ( this._mouseStart( this._mouseDownEvent, event ) !== false ); + if ( this._mouseStarted ) { + this._mouseDrag( event ); + } else { + this._mouseUp( event ); + } + } + + return !this._mouseStarted; + }, + + _mouseUp: function( event ) { + this.document + .off( "mousemove." + this.widgetName, this._mouseMoveDelegate ) + .off( "mouseup." + this.widgetName, this._mouseUpDelegate ); + + if ( this._mouseStarted ) { + this._mouseStarted = false; + + if ( event.target === this._mouseDownEvent.target ) { + $.data( event.target, this.widgetName + ".preventClickEvent", true ); + } + + this._mouseStop( event ); + } + + if ( this._mouseDelayTimer ) { + clearTimeout( this._mouseDelayTimer ); + delete this._mouseDelayTimer; + } + + this.ignoreMissingWhich = false; + mouseHandled = false; + event.preventDefault(); + }, + + _mouseDistanceMet: function( event ) { + return ( Math.max( + Math.abs( this._mouseDownEvent.pageX - event.pageX ), + Math.abs( this._mouseDownEvent.pageY - event.pageY ) + ) >= this.options.distance + ); + }, + + _mouseDelayMet: function( /* event */ ) { + return this.mouseDelayMet; + }, + + // These are placeholder methods, to be overriden by extending plugin + _mouseStart: function( /* event */ ) {}, + _mouseDrag: function( /* event */ ) {}, + _mouseStop: function( /* event */ ) {}, + _mouseCapture: function( /* event */ ) { + return true; + } +} ); + + + +// $.ui.plugin is deprecated. Use $.widget() extensions instead. +var plugin = $.ui.plugin = { + add: function( module, option, set ) { + var i, + proto = $.ui[ module ].prototype; + for ( i in set ) { + proto.plugins[ i ] = proto.plugins[ i ] || []; + proto.plugins[ i ].push( [ option, set[ i ] ] ); + } + }, + call: function( instance, name, args, allowDisconnected ) { + var i, + set = instance.plugins[ name ]; + + if ( !set ) { + return; + } + + if ( !allowDisconnected && ( !instance.element[ 0 ].parentNode || + instance.element[ 0 ].parentNode.nodeType === 11 ) ) { + return; + } + + for ( i = 0; i < set.length; i++ ) { + if ( instance.options[ set[ i ][ 0 ] ] ) { + set[ i ][ 1 ].apply( instance.element, args ); + } + } + } +}; + + + +var safeActiveElement = $.ui.safeActiveElement = function( document ) { + var activeElement; + + // Support: IE 9 only + // IE9 throws an "Unspecified error" accessing document.activeElement from an