├── img ├── BB.jpeg ├── TT.jpg ├── bbb.jpg ├── bg.jpg ├── back.jpg ├── back11.jpg ├── back2.jpg ├── back3.jpg ├── back4.jpg ├── back5.jpg ├── back6.jpg ├── blog-1.jpg ├── blog-2.jpg ├── fedi.jpg ├── raslen.jpg ├── team1.jpg ├── bachir2.jpg ├── carousel-1.jpg ├── carousel-2.jpg ├── feature-1.jpg ├── feature-2.jpg ├── feature-3.jpg └── feature-4.jpg ├── scss └── bootstrap │ └── scss │ ├── utilities │ ├── _clearfix.scss │ ├── _overflow.scss │ ├── _interactions.scss │ ├── _screenreaders.scss │ ├── _visibility.scss │ ├── _shadows.scss │ ├── _float.scss │ ├── _align.scss │ ├── _background.scss │ ├── _stretched-link.scss │ ├── _sizing.scss │ ├── _display.scss │ ├── _position.scss │ ├── _embed.scss │ ├── _borders.scss │ ├── _text.scss │ ├── _spacing.scss │ └── _flex.scss │ ├── mixins │ ├── _clearfix.scss │ ├── _size.scss │ ├── _lists.scss │ ├── _text-truncate.scss │ ├── _resize.scss │ ├── _visibility.scss │ ├── _alert.scss │ ├── _text-hide.scss │ ├── _badge.scss │ ├── _nav-divider.scss │ ├── _float.scss │ ├── _list-group.scss │ ├── _text-emphasis.scss │ ├── _reset-text.scss │ ├── _pagination.scss │ ├── _box-shadow.scss │ ├── _deprecate.scss │ ├── _transition.scss │ ├── _background-variant.scss │ ├── _hover.scss │ ├── _table-row.scss │ ├── _screen-reader.scss │ ├── _image.scss │ ├── _caret.scss │ ├── _border-radius.scss │ ├── _gradients.scss │ ├── _grid.scss │ ├── _grid-framework.scss │ ├── _buttons.scss │ ├── _breakpoints.scss │ └── _forms.scss │ ├── bootstrap-reboot.scss │ ├── bootstrap-grid.scss │ ├── bootstrap.scss │ ├── _alert.scss │ ├── bootstrap-reboot.css │ ├── bootstrap-reboot.css.map │ └── vendor │ └── _rfs.scss ├── lib ├── flaticon │ ├── font │ │ ├── Flaticon.eot │ │ ├── Flaticon.ttf │ │ ├── flaticon.css │ │ └── flaticon.html │ └── backup.txt └── easing │ ├── easing.min.js │ └── easing.js ├── README.md ├── mail ├── contact.php ├── contact.js └── jqBootstrapValidation.min.js ├── LICENSE ├── js └── main.js ├── CODE_OF_CONDUCT.md ├── feature.html ├── contact.html ├── about.html └── class.html /img/BB.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oussemamansouri/Homrani-Sport/HEAD/img/BB.jpeg -------------------------------------------------------------------------------- /img/TT.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oussemamansouri/Homrani-Sport/HEAD/img/TT.jpg -------------------------------------------------------------------------------- /img/bbb.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oussemamansouri/Homrani-Sport/HEAD/img/bbb.jpg -------------------------------------------------------------------------------- /img/bg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oussemamansouri/Homrani-Sport/HEAD/img/bg.jpg -------------------------------------------------------------------------------- /img/back.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oussemamansouri/Homrani-Sport/HEAD/img/back.jpg -------------------------------------------------------------------------------- /img/back11.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oussemamansouri/Homrani-Sport/HEAD/img/back11.jpg -------------------------------------------------------------------------------- /img/back2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oussemamansouri/Homrani-Sport/HEAD/img/back2.jpg -------------------------------------------------------------------------------- /img/back3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oussemamansouri/Homrani-Sport/HEAD/img/back3.jpg -------------------------------------------------------------------------------- /img/back4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oussemamansouri/Homrani-Sport/HEAD/img/back4.jpg -------------------------------------------------------------------------------- /img/back5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oussemamansouri/Homrani-Sport/HEAD/img/back5.jpg -------------------------------------------------------------------------------- /img/back6.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oussemamansouri/Homrani-Sport/HEAD/img/back6.jpg -------------------------------------------------------------------------------- /img/blog-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oussemamansouri/Homrani-Sport/HEAD/img/blog-1.jpg -------------------------------------------------------------------------------- /img/blog-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oussemamansouri/Homrani-Sport/HEAD/img/blog-2.jpg -------------------------------------------------------------------------------- /img/fedi.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oussemamansouri/Homrani-Sport/HEAD/img/fedi.jpg -------------------------------------------------------------------------------- /img/raslen.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oussemamansouri/Homrani-Sport/HEAD/img/raslen.jpg -------------------------------------------------------------------------------- /img/team1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oussemamansouri/Homrani-Sport/HEAD/img/team1.jpg -------------------------------------------------------------------------------- /scss/bootstrap/scss/utilities/_clearfix.scss: -------------------------------------------------------------------------------- 1 | .clearfix { 2 | @include clearfix(); 3 | } 4 | -------------------------------------------------------------------------------- /img/bachir2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oussemamansouri/Homrani-Sport/HEAD/img/bachir2.jpg -------------------------------------------------------------------------------- /img/carousel-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oussemamansouri/Homrani-Sport/HEAD/img/carousel-1.jpg -------------------------------------------------------------------------------- /img/carousel-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oussemamansouri/Homrani-Sport/HEAD/img/carousel-2.jpg -------------------------------------------------------------------------------- /img/feature-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oussemamansouri/Homrani-Sport/HEAD/img/feature-1.jpg -------------------------------------------------------------------------------- /img/feature-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oussemamansouri/Homrani-Sport/HEAD/img/feature-2.jpg -------------------------------------------------------------------------------- /img/feature-3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oussemamansouri/Homrani-Sport/HEAD/img/feature-3.jpg -------------------------------------------------------------------------------- /img/feature-4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oussemamansouri/Homrani-Sport/HEAD/img/feature-4.jpg -------------------------------------------------------------------------------- /lib/flaticon/font/Flaticon.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oussemamansouri/Homrani-Sport/HEAD/lib/flaticon/font/Flaticon.eot -------------------------------------------------------------------------------- /lib/flaticon/font/Flaticon.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oussemamansouri/Homrani-Sport/HEAD/lib/flaticon/font/Flaticon.ttf -------------------------------------------------------------------------------- /scss/bootstrap/scss/mixins/_clearfix.scss: -------------------------------------------------------------------------------- 1 | @mixin clearfix() { 2 | &::after { 3 | display: block; 4 | clear: both; 5 | content: ""; 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /scss/bootstrap/scss/utilities/_overflow.scss: -------------------------------------------------------------------------------- 1 | // stylelint-disable declaration-no-important 2 | 3 | @each $value in $overflows { 4 | .overflow-#{$value} { overflow: $value !important; } 5 | } 6 | -------------------------------------------------------------------------------- /scss/bootstrap/scss/mixins/_size.scss: -------------------------------------------------------------------------------- 1 | // Sizing shortcuts 2 | 3 | @mixin size($width, $height: $width) { 4 | width: $width; 5 | height: $height; 6 | @include deprecate("`size()`", "v4.3.0", "v5"); 7 | } 8 | -------------------------------------------------------------------------------- /scss/bootstrap/scss/utilities/_interactions.scss: -------------------------------------------------------------------------------- 1 | // stylelint-disable declaration-no-important 2 | 3 | @each $value in $user-selects { 4 | .user-select-#{$value} { user-select: $value !important; } 5 | } 6 | -------------------------------------------------------------------------------- /scss/bootstrap/scss/utilities/_screenreaders.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Screenreaders 3 | // 4 | 5 | .sr-only { 6 | @include sr-only(); 7 | } 8 | 9 | .sr-only-focusable { 10 | @include sr-only-focusable(); 11 | } 12 | -------------------------------------------------------------------------------- /scss/bootstrap/scss/mixins/_lists.scss: -------------------------------------------------------------------------------- 1 | // Lists 2 | 3 | // Unstyled keeps list items block level, just removes default browser padding and list-style 4 | @mixin list-unstyled() { 5 | padding-left: 0; 6 | list-style: none; 7 | } 8 | -------------------------------------------------------------------------------- /scss/bootstrap/scss/mixins/_text-truncate.scss: -------------------------------------------------------------------------------- 1 | // Text truncate 2 | // Requires inline-block or block for proper styling 3 | 4 | @mixin text-truncate() { 5 | overflow: hidden; 6 | text-overflow: ellipsis; 7 | white-space: nowrap; 8 | } 9 | -------------------------------------------------------------------------------- /scss/bootstrap/scss/mixins/_resize.scss: -------------------------------------------------------------------------------- 1 | // Resize anything 2 | 3 | @mixin resizable($direction) { 4 | overflow: auto; // Per CSS3 UI, `resize` only applies when `overflow` isn't `visible` 5 | resize: $direction; // Options: horizontal, vertical, both 6 | } 7 | -------------------------------------------------------------------------------- /scss/bootstrap/scss/mixins/_visibility.scss: -------------------------------------------------------------------------------- 1 | // stylelint-disable declaration-no-important 2 | 3 | // Visibility 4 | 5 | @mixin invisible($visibility) { 6 | visibility: $visibility !important; 7 | @include deprecate("`invisible()`", "v4.3.0", "v5"); 8 | } 9 | -------------------------------------------------------------------------------- /scss/bootstrap/scss/utilities/_visibility.scss: -------------------------------------------------------------------------------- 1 | // stylelint-disable declaration-no-important 2 | 3 | // 4 | // Visibility utilities 5 | // 6 | 7 | .visible { 8 | visibility: visible !important; 9 | } 10 | 11 | .invisible { 12 | visibility: hidden !important; 13 | } 14 | -------------------------------------------------------------------------------- /scss/bootstrap/scss/utilities/_shadows.scss: -------------------------------------------------------------------------------- 1 | // stylelint-disable declaration-no-important 2 | 3 | .shadow-sm { box-shadow: $box-shadow-sm !important; } 4 | .shadow { box-shadow: $box-shadow !important; } 5 | .shadow-lg { box-shadow: $box-shadow-lg !important; } 6 | .shadow-none { box-shadow: none !important; } 7 | -------------------------------------------------------------------------------- /scss/bootstrap/scss/mixins/_alert.scss: -------------------------------------------------------------------------------- 1 | @mixin alert-variant($background, $border, $color) { 2 | color: $color; 3 | @include gradient-bg($background); 4 | border-color: $border; 5 | 6 | hr { 7 | border-top-color: darken($border, 5%); 8 | } 9 | 10 | .alert-link { 11 | color: darken($color, 10%); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /scss/bootstrap/scss/mixins/_text-hide.scss: -------------------------------------------------------------------------------- 1 | // CSS image replacement 2 | @mixin text-hide($ignore-warning: false) { 3 | // stylelint-disable-next-line font-family-no-missing-generic-family-keyword 4 | font: 0/0 a; 5 | color: transparent; 6 | text-shadow: none; 7 | background-color: transparent; 8 | border: 0; 9 | 10 | @include deprecate("`text-hide()`", "v4.1.0", "v5", $ignore-warning); 11 | } 12 | -------------------------------------------------------------------------------- /scss/bootstrap/scss/mixins/_badge.scss: -------------------------------------------------------------------------------- 1 | @mixin badge-variant($bg) { 2 | color: color-yiq($bg); 3 | background-color: $bg; 4 | 5 | @at-root a#{&} { 6 | @include hover-focus() { 7 | color: color-yiq($bg); 8 | background-color: darken($bg, 10%); 9 | } 10 | 11 | &:focus, 12 | &.focus { 13 | outline: 0; 14 | box-shadow: 0 0 0 $badge-focus-width rgba($bg, .5); 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /scss/bootstrap/scss/mixins/_nav-divider.scss: -------------------------------------------------------------------------------- 1 | // Horizontal dividers 2 | // 3 | // Dividers (basically an hr) within dropdowns and nav lists 4 | 5 | @mixin nav-divider($color: $nav-divider-color, $margin-y: $nav-divider-margin-y, $ignore-warning: false) { 6 | height: 0; 7 | margin: $margin-y 0; 8 | overflow: hidden; 9 | border-top: 1px solid $color; 10 | @include deprecate("The `nav-divider()` mixin", "v4.4.0", "v5", $ignore-warning); 11 | } 12 | -------------------------------------------------------------------------------- /scss/bootstrap/scss/utilities/_float.scss: -------------------------------------------------------------------------------- 1 | // stylelint-disable declaration-no-important 2 | 3 | @each $breakpoint in map-keys($grid-breakpoints) { 4 | @include media-breakpoint-up($breakpoint) { 5 | $infix: breakpoint-infix($breakpoint, $grid-breakpoints); 6 | 7 | .float#{$infix}-left { float: left !important; } 8 | .float#{$infix}-right { float: right !important; } 9 | .float#{$infix}-none { float: none !important; } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /scss/bootstrap/scss/utilities/_align.scss: -------------------------------------------------------------------------------- 1 | // stylelint-disable declaration-no-important 2 | 3 | .align-baseline { vertical-align: baseline !important; } // Browser default 4 | .align-top { vertical-align: top !important; } 5 | .align-middle { vertical-align: middle !important; } 6 | .align-bottom { vertical-align: bottom !important; } 7 | .align-text-bottom { vertical-align: text-bottom !important; } 8 | .align-text-top { vertical-align: text-top !important; } 9 | -------------------------------------------------------------------------------- /scss/bootstrap/scss/mixins/_float.scss: -------------------------------------------------------------------------------- 1 | // stylelint-disable declaration-no-important 2 | 3 | @mixin float-left() { 4 | float: left !important; 5 | @include deprecate("The `float-left` mixin", "v4.3.0", "v5"); 6 | } 7 | @mixin float-right() { 8 | float: right !important; 9 | @include deprecate("The `float-right` mixin", "v4.3.0", "v5"); 10 | } 11 | @mixin float-none() { 12 | float: none !important; 13 | @include deprecate("The `float-none` mixin", "v4.3.0", "v5"); 14 | } 15 | -------------------------------------------------------------------------------- /scss/bootstrap/scss/bootstrap-reboot.scss: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap Reboot v4.5.3 (https://getbootstrap.com/) 3 | * Copyright 2011-2020 The Bootstrap Authors 4 | * Copyright 2011-2020 Twitter, Inc. 5 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 6 | * Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md) 7 | */ 8 | 9 | @import "functions"; 10 | @import "variables"; 11 | @import "mixins"; 12 | @import "reboot"; 13 | -------------------------------------------------------------------------------- /scss/bootstrap/scss/utilities/_background.scss: -------------------------------------------------------------------------------- 1 | // stylelint-disable declaration-no-important 2 | 3 | @each $color, $value in $theme-colors { 4 | @include bg-variant(".bg-#{$color}", $value, true); 5 | } 6 | 7 | @if $enable-gradients { 8 | @each $color, $value in $theme-colors { 9 | @include bg-gradient-variant(".bg-gradient-#{$color}", $value, true); 10 | } 11 | } 12 | 13 | .bg-white { 14 | background-color: $white !important; 15 | } 16 | 17 | .bg-transparent { 18 | background-color: transparent !important; 19 | } 20 | -------------------------------------------------------------------------------- /scss/bootstrap/scss/utilities/_stretched-link.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Stretched link 3 | // 4 | 5 | .stretched-link { 6 | &::after { 7 | position: absolute; 8 | top: 0; 9 | right: 0; 10 | bottom: 0; 11 | left: 0; 12 | z-index: 1; 13 | // Just in case `pointer-events: none` is set on a parent 14 | pointer-events: auto; 15 | content: ""; 16 | // IE10 bugfix, see https://stackoverflow.com/questions/16947967/ie10-hover-pseudo-class-doesnt-work-without-background-color 17 | background-color: rgba(0, 0, 0, 0); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /scss/bootstrap/scss/mixins/_list-group.scss: -------------------------------------------------------------------------------- 1 | // List Groups 2 | 3 | @mixin list-group-item-variant($state, $background, $color) { 4 | .list-group-item-#{$state} { 5 | color: $color; 6 | background-color: $background; 7 | 8 | &.list-group-item-action { 9 | @include hover-focus() { 10 | color: $color; 11 | background-color: darken($background, 5%); 12 | } 13 | 14 | &.active { 15 | color: $white; 16 | background-color: $color; 17 | border-color: $color; 18 | } 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /scss/bootstrap/scss/mixins/_text-emphasis.scss: -------------------------------------------------------------------------------- 1 | // stylelint-disable declaration-no-important 2 | 3 | // Typography 4 | 5 | @mixin text-emphasis-variant($parent, $color, $ignore-warning: false) { 6 | #{$parent} { 7 | color: $color !important; 8 | } 9 | @if $emphasized-link-hover-darken-percentage != 0 { 10 | a#{$parent} { 11 | @include hover-focus() { 12 | color: darken($color, $emphasized-link-hover-darken-percentage) !important; 13 | } 14 | } 15 | } 16 | @include deprecate("`text-emphasis-variant()`", "v4.4.0", "v5", $ignore-warning); 17 | } 18 | -------------------------------------------------------------------------------- /scss/bootstrap/scss/mixins/_reset-text.scss: -------------------------------------------------------------------------------- 1 | @mixin reset-text() { 2 | font-family: $font-family-base; 3 | // We deliberately do NOT reset font-size or word-wrap. 4 | font-style: normal; 5 | font-weight: $font-weight-normal; 6 | line-height: $line-height-base; 7 | text-align: left; // Fallback for where `start` is not supported 8 | text-align: start; 9 | text-decoration: none; 10 | text-shadow: none; 11 | text-transform: none; 12 | letter-spacing: normal; 13 | word-break: normal; 14 | word-spacing: normal; 15 | white-space: normal; 16 | line-break: auto; 17 | } 18 | -------------------------------------------------------------------------------- /scss/bootstrap/scss/mixins/_pagination.scss: -------------------------------------------------------------------------------- 1 | // Pagination 2 | 3 | @mixin pagination-size($padding-y, $padding-x, $font-size, $line-height, $border-radius) { 4 | .page-link { 5 | padding: $padding-y $padding-x; 6 | @include font-size($font-size); 7 | line-height: $line-height; 8 | } 9 | 10 | .page-item { 11 | &:first-child { 12 | .page-link { 13 | @include border-left-radius($border-radius); 14 | } 15 | } 16 | &:last-child { 17 | .page-link { 18 | @include border-right-radius($border-radius); 19 | } 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /scss/bootstrap/scss/utilities/_sizing.scss: -------------------------------------------------------------------------------- 1 | // stylelint-disable declaration-no-important 2 | 3 | // Width and height 4 | 5 | @each $prop, $abbrev in (width: w, height: h) { 6 | @each $size, $length in $sizes { 7 | .#{$abbrev}-#{$size} { #{$prop}: $length !important; } 8 | } 9 | } 10 | 11 | .mw-100 { max-width: 100% !important; } 12 | .mh-100 { max-height: 100% !important; } 13 | 14 | // Viewport additional helpers 15 | 16 | .min-vw-100 { min-width: 100vw !important; } 17 | .min-vh-100 { min-height: 100vh !important; } 18 | 19 | .vw-100 { width: 100vw !important; } 20 | .vh-100 { height: 100vh !important; } 21 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Homrani-Sport 2 | 3 | **Homrani-Sport** is a responsive gym website that I developed using **HTML**, **CSS**, **JavaScript**, and **Bootstrap**. 4 | 5 | - **HTML** was used to structure the content and layout of the site. 6 | - **CSS** enhanced the visual design and styling. 7 | - **JavaScript** added interactivity to improve user engagement. 8 | - **Bootstrap** ensured a responsive, mobile-friendly design, making the site accessible across different devices. 9 | 10 | The result is a professional-looking website that effectively showcases the gym’s facilities and services while providing a seamless and user-friendly browsing experience. 11 | -------------------------------------------------------------------------------- /scss/bootstrap/scss/mixins/_box-shadow.scss: -------------------------------------------------------------------------------- 1 | @mixin box-shadow($shadow...) { 2 | @if $enable-shadows { 3 | $result: (); 4 | 5 | @if (length($shadow) == 1) { 6 | // We can pass `@include box-shadow(none);` 7 | $result: $shadow; 8 | } @else { 9 | // Filter to avoid invalid properties for example `box-shadow: none, 1px 1px black;` 10 | @for $i from 1 through length($shadow) { 11 | @if nth($shadow, $i) != "none" { 12 | $result: append($result, nth($shadow, $i), "comma"); 13 | } 14 | } 15 | } 16 | @if (length($result) > 0) { 17 | box-shadow: $result; 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /scss/bootstrap/scss/utilities/_display.scss: -------------------------------------------------------------------------------- 1 | // stylelint-disable declaration-no-important 2 | 3 | // 4 | // Utilities for common `display` values 5 | // 6 | 7 | @each $breakpoint in map-keys($grid-breakpoints) { 8 | @include media-breakpoint-up($breakpoint) { 9 | $infix: breakpoint-infix($breakpoint, $grid-breakpoints); 10 | 11 | @each $value in $displays { 12 | .d#{$infix}-#{$value} { display: $value !important; } 13 | } 14 | } 15 | } 16 | 17 | 18 | // 19 | // Utilities for toggling `display` in print 20 | // 21 | 22 | @media print { 23 | @each $value in $displays { 24 | .d-print-#{$value} { display: $value !important; } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /scss/bootstrap/scss/utilities/_position.scss: -------------------------------------------------------------------------------- 1 | // stylelint-disable declaration-no-important 2 | 3 | // Common values 4 | @each $position in $positions { 5 | .position-#{$position} { position: $position !important; } 6 | } 7 | 8 | // Shorthand 9 | 10 | .fixed-top { 11 | position: fixed; 12 | top: 0; 13 | right: 0; 14 | left: 0; 15 | z-index: $zindex-fixed; 16 | } 17 | 18 | .fixed-bottom { 19 | position: fixed; 20 | right: 0; 21 | bottom: 0; 22 | left: 0; 23 | z-index: $zindex-fixed; 24 | } 25 | 26 | .sticky-top { 27 | @supports (position: sticky) { 28 | position: sticky; 29 | top: 0; 30 | z-index: $zindex-sticky; 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /scss/bootstrap/scss/mixins/_deprecate.scss: -------------------------------------------------------------------------------- 1 | // Deprecate mixin 2 | // 3 | // This mixin can be used to deprecate mixins or functions. 4 | // `$enable-deprecation-messages` is a global variable, `$ignore-warning` is a variable that can be passed to 5 | // some deprecated mixins to suppress the warning (for example if the mixin is still be used in the current version of Bootstrap) 6 | @mixin deprecate($name, $deprecate-version, $remove-version, $ignore-warning: false) { 7 | @if ($enable-deprecation-messages != false and $ignore-warning != true) { 8 | @warn "#{$name} has been deprecated as of #{$deprecate-version}. It will be removed entirely in #{$remove-version}."; 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /scss/bootstrap/scss/bootstrap-grid.scss: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap Grid v4.5.3 (https://getbootstrap.com/) 3 | * Copyright 2011-2020 The Bootstrap Authors 4 | * Copyright 2011-2020 Twitter, Inc. 5 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 6 | */ 7 | 8 | html { 9 | box-sizing: border-box; 10 | -ms-overflow-style: scrollbar; 11 | } 12 | 13 | *, 14 | *::before, 15 | *::after { 16 | box-sizing: inherit; 17 | } 18 | 19 | @import "functions"; 20 | @import "variables"; 21 | 22 | @import "mixins/breakpoints"; 23 | @import "mixins/grid-framework"; 24 | @import "mixins/grid"; 25 | 26 | @import "grid"; 27 | @import "utilities/display"; 28 | @import "utilities/flex"; 29 | @import "utilities/spacing"; 30 | -------------------------------------------------------------------------------- /scss/bootstrap/scss/mixins/_transition.scss: -------------------------------------------------------------------------------- 1 | // stylelint-disable property-disallowed-list 2 | @mixin transition($transition...) { 3 | @if length($transition) == 0 { 4 | $transition: $transition-base; 5 | } 6 | 7 | @if length($transition) > 1 { 8 | @each $value in $transition { 9 | @if $value == null or $value == none { 10 | @warn "The keyword 'none' or 'null' must be used as a single argument."; 11 | } 12 | } 13 | } 14 | 15 | @if $enable-transitions { 16 | @if nth($transition, 1) != null { 17 | transition: $transition; 18 | } 19 | 20 | @if $enable-prefers-reduced-motion-media-query and nth($transition, 1) != null and nth($transition, 1) != none { 21 | @media (prefers-reduced-motion: reduce) { 22 | transition: none; 23 | } 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /scss/bootstrap/scss/mixins/_background-variant.scss: -------------------------------------------------------------------------------- 1 | // stylelint-disable declaration-no-important 2 | 3 | // Contextual backgrounds 4 | 5 | @mixin bg-variant($parent, $color, $ignore-warning: false) { 6 | #{$parent} { 7 | background-color: $color !important; 8 | } 9 | a#{$parent}, 10 | button#{$parent} { 11 | @include hover-focus() { 12 | background-color: darken($color, 10%) !important; 13 | } 14 | } 15 | @include deprecate("The `bg-variant` mixin", "v4.4.0", "v5", $ignore-warning); 16 | } 17 | 18 | @mixin bg-gradient-variant($parent, $color, $ignore-warning: false) { 19 | #{$parent} { 20 | background: $color linear-gradient(180deg, mix($body-bg, $color, 15%), $color) repeat-x !important; 21 | } 22 | @include deprecate("The `bg-gradient-variant` mixin", "v4.5.0", "v5", $ignore-warning); 23 | } 24 | -------------------------------------------------------------------------------- /mail/contact.php: -------------------------------------------------------------------------------- 1 | 21 | -------------------------------------------------------------------------------- /scss/bootstrap/scss/mixins/_hover.scss: -------------------------------------------------------------------------------- 1 | // Hover mixin and `$enable-hover-media-query` are deprecated. 2 | // 3 | // Originally added during our alphas and maintained during betas, this mixin was 4 | // designed to prevent `:hover` stickiness on iOS-an issue where hover styles 5 | // would persist after initial touch. 6 | // 7 | // For backward compatibility, we've kept these mixins and updated them to 8 | // always return their regular pseudo-classes instead of a shimmed media query. 9 | // 10 | // Issue: https://github.com/twbs/bootstrap/issues/25195 11 | 12 | @mixin hover() { 13 | &:hover { @content; } 14 | } 15 | 16 | @mixin hover-focus() { 17 | &:hover, 18 | &:focus { 19 | @content; 20 | } 21 | } 22 | 23 | @mixin plain-hover-focus() { 24 | &, 25 | &:hover, 26 | &:focus { 27 | @content; 28 | } 29 | } 30 | 31 | @mixin hover-focus-active() { 32 | &:hover, 33 | &:focus, 34 | &:active { 35 | @content; 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /scss/bootstrap/scss/mixins/_table-row.scss: -------------------------------------------------------------------------------- 1 | // Tables 2 | 3 | @mixin table-row-variant($state, $background, $border: null) { 4 | // Exact selectors below required to override `.table-striped` and prevent 5 | // inheritance to nested tables. 6 | .table-#{$state} { 7 | &, 8 | > th, 9 | > td { 10 | background-color: $background; 11 | } 12 | 13 | @if $border != null { 14 | th, 15 | td, 16 | thead th, 17 | tbody + tbody { 18 | border-color: $border; 19 | } 20 | } 21 | } 22 | 23 | // Hover states for `.table-hover` 24 | // Note: this is not available for cells or rows within `thead` or `tfoot`. 25 | .table-hover { 26 | $hover-background: darken($background, 5%); 27 | 28 | .table-#{$state} { 29 | @include hover() { 30 | background-color: $hover-background; 31 | 32 | > td, 33 | > th { 34 | background-color: $hover-background; 35 | } 36 | } 37 | } 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /scss/bootstrap/scss/mixins/_screen-reader.scss: -------------------------------------------------------------------------------- 1 | // Only display content to screen readers 2 | // 3 | // See: https://www.a11yproject.com/posts/2013-01-11-how-to-hide-content/ 4 | // See: https://hugogiraudel.com/2016/10/13/css-hide-and-seek/ 5 | 6 | @mixin sr-only() { 7 | position: absolute; 8 | width: 1px; 9 | height: 1px; 10 | padding: 0; 11 | margin: -1px; // Fix for https://github.com/twbs/bootstrap/issues/25686 12 | overflow: hidden; 13 | clip: rect(0, 0, 0, 0); 14 | white-space: nowrap; 15 | border: 0; 16 | } 17 | 18 | // Use in conjunction with .sr-only to only display content when it's focused. 19 | // 20 | // Useful for "Skip to main content" links; see https://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1 21 | // 22 | // Credit: HTML5 Boilerplate 23 | 24 | @mixin sr-only-focusable() { 25 | &:active, 26 | &:focus { 27 | position: static; 28 | width: auto; 29 | height: auto; 30 | overflow: visible; 31 | clip: auto; 32 | white-space: normal; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /scss/bootstrap/scss/utilities/_embed.scss: -------------------------------------------------------------------------------- 1 | // Credit: Nicolas Gallagher and SUIT CSS. 2 | 3 | .embed-responsive { 4 | position: relative; 5 | display: block; 6 | width: 100%; 7 | padding: 0; 8 | overflow: hidden; 9 | 10 | &::before { 11 | display: block; 12 | content: ""; 13 | } 14 | 15 | .embed-responsive-item, 16 | iframe, 17 | embed, 18 | object, 19 | video { 20 | position: absolute; 21 | top: 0; 22 | bottom: 0; 23 | left: 0; 24 | width: 100%; 25 | height: 100%; 26 | border: 0; 27 | } 28 | } 29 | 30 | @each $embed-responsive-aspect-ratio in $embed-responsive-aspect-ratios { 31 | $embed-responsive-aspect-ratio-x: nth($embed-responsive-aspect-ratio, 1); 32 | $embed-responsive-aspect-ratio-y: nth($embed-responsive-aspect-ratio, 2); 33 | 34 | .embed-responsive-#{$embed-responsive-aspect-ratio-x}by#{$embed-responsive-aspect-ratio-y} { 35 | &::before { 36 | padding-top: percentage($embed-responsive-aspect-ratio-y / $embed-responsive-aspect-ratio-x); 37 | } 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /scss/bootstrap/scss/bootstrap.scss: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap v4.5.3 (https://getbootstrap.com/) 3 | * Copyright 2011-2020 The Bootstrap Authors 4 | * Copyright 2011-2020 Twitter, Inc. 5 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 6 | */ 7 | 8 | @import "functions"; 9 | @import "variables"; 10 | @import "mixins"; 11 | @import "root"; 12 | @import "reboot"; 13 | @import "type"; 14 | @import "images"; 15 | @import "code"; 16 | @import "grid"; 17 | @import "tables"; 18 | @import "forms"; 19 | @import "buttons"; 20 | @import "transitions"; 21 | @import "dropdown"; 22 | @import "button-group"; 23 | @import "input-group"; 24 | @import "custom-forms"; 25 | @import "nav"; 26 | @import "navbar"; 27 | @import "card"; 28 | @import "breadcrumb"; 29 | @import "pagination"; 30 | @import "badge"; 31 | @import "jumbotron"; 32 | @import "alert"; 33 | @import "progress"; 34 | @import "media"; 35 | @import "list-group"; 36 | @import "close"; 37 | @import "toasts"; 38 | @import "modal"; 39 | @import "tooltip"; 40 | @import "popover"; 41 | @import "carousel"; 42 | @import "spinners"; 43 | @import "utilities"; 44 | @import "print"; 45 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2025 Mansouri Oussema 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /scss/bootstrap/scss/mixins/_image.scss: -------------------------------------------------------------------------------- 1 | // Image Mixins 2 | // - Responsive image 3 | // - Retina image 4 | 5 | 6 | // Responsive image 7 | // 8 | // Keep images from scaling beyond the width of their parents. 9 | 10 | @mixin img-fluid() { 11 | // Part 1: Set a maximum relative to the parent 12 | max-width: 100%; 13 | // Part 2: Override the height to auto, otherwise images will be stretched 14 | // when setting a width and height attribute on the img element. 15 | height: auto; 16 | } 17 | 18 | 19 | // Retina image 20 | // 21 | // Short retina mixin for setting background-image and -size. 22 | 23 | @mixin img-retina($file-1x, $file-2x, $width-1x, $height-1x) { 24 | background-image: url($file-1x); 25 | 26 | // Autoprefixer takes care of adding -webkit-min-device-pixel-ratio and -o-min-device-pixel-ratio, 27 | // but doesn't convert dppx=>dpi. 28 | // There's no such thing as unprefixed min-device-pixel-ratio since it's nonstandard. 29 | // Compatibility info: https://caniuse.com/#feat=css-media-resolution 30 | @media only screen and (min-resolution: 192dpi), // IE9-11 don't support dppx 31 | only screen and (min-resolution: 2dppx) { // Standardized 32 | background-image: url($file-2x); 33 | background-size: $width-1x $height-1x; 34 | } 35 | @include deprecate("`img-retina()`", "v4.3.0", "v5"); 36 | } 37 | -------------------------------------------------------------------------------- /lib/flaticon/backup.txt: -------------------------------------------------------------------------------- 1 | eyIxIjp7IklEIjoxLCJuYW1lIjoiTXkgaWNvbnMgY29sbGVjdGlvbiIsImJvb2ttYXJrX2lkIjoibXdsYTJyMGN2cGEwMDAwMCIsImNyZWF0ZWQiOm51bGwsInVwZGF0ZWQiOjE2MDM3MTA1MDUsImFjdGl2ZSI6MSwic291cmNlIjoibG9jYWwiLCJvcmRlciI6MCwiY29sb3IiOiIwMDAwMDAiLCJzdGF0dXMiOjF9LCJtd2xhMnIwY3ZwYTAwMDAwIjpbeyJpZCI6MTc4Njk4MywidGVhbSI6MCwibmFtZSI6ImJhcmJlbGwiLCJjb2xvciI6IiMwMDAwMDAiLCJwcmVtaXVtIjowLCJzb3J0IjoxfSx7ImlkIjozMDYzNjk3LCJ0ZWFtIjowLCJuYW1lIjoidHJlbmRzIiwiY29sb3IiOiIjMDAwMDAwIiwicHJlbWl1bSI6MCwic29ydCI6N30seyJpZCI6MzE2MTIsInRlYW0iOjAsIm5hbWUiOiJtdXNjdWxhci1ib2R5YnVpbGRlci13aXRoLWNsb2NrIiwiY29sb3IiOiIjMDAwMDAwIiwicHJlbWl1bSI6MCwic29ydCI6Nn0seyJpZCI6MTc4NzAxNiwidGVhbSI6MCwibmFtZSI6InRyZWFkbWlsbCIsImNvbG9yIjoiIzAwMDAwMCIsInByZW1pdW0iOjAsInNvcnQiOjJ9LHsiaWQiOjIwNTg3NjgsInRlYW0iOjAsIm5hbWUiOiJzdXBwb3J0IiwiY29sb3IiOiIjMDAwMDAwIiwicHJlbWl1bSI6MCwic29ydCI6MTB9LHsiaWQiOjU1NzQ3NCwidGVhbSI6MCwibmFtZSI6Im1lZGFsIiwiY29sb3IiOiIjMDAwMDAwIiwicHJlbWl1bSI6MCwic29ydCI6NX0seyJpZCI6MzMwNjgzNCwidGVhbSI6MCwibmFtZSI6InNpeC1wYWNrIiwiY29sb3IiOiIjMDAwMDAwIiwicHJlbWl1bSI6MCwic29ydCI6M30seyJpZCI6MzA4MTA3OSwidGVhbSI6MCwibmFtZSI6IndlaWdodGxpZnRpbmciLCJjb2xvciI6IiMwMDAwMDAiLCJwcmVtaXVtIjowLCJzb3J0Ijo4fSx7ImlkIjoyNzM4ODU4LCJ0ZWFtIjowLCJuYW1lIjoidHJhaW5pbmciLCJjb2xvciI6IiMwMDAwMDAiLCJwcmVtaXVtIjowLCJzb3J0Ijo5fSx7ImlkIjoxMTM4NTkzLCJ0ZWFtIjowLCJuYW1lIjoiYm9keWJ1aWxkaW5nIiwiY29sb3IiOiIjMDAwMDAwIiwicHJlbWl1bSI6MCwic29ydCI6NH1dfQ== -------------------------------------------------------------------------------- /scss/bootstrap/scss/_alert.scss: -------------------------------------------------------------------------------- 1 | // 2 | // Base styles 3 | // 4 | 5 | .alert { 6 | position: relative; 7 | padding: $alert-padding-y $alert-padding-x; 8 | margin-bottom: $alert-margin-bottom; 9 | border: $alert-border-width solid transparent; 10 | @include border-radius($alert-border-radius); 11 | } 12 | 13 | // Headings for larger alerts 14 | .alert-heading { 15 | // Specified to prevent conflicts of changing $headings-color 16 | color: inherit; 17 | } 18 | 19 | // Provide class for links that match alerts 20 | .alert-link { 21 | font-weight: $alert-link-font-weight; 22 | } 23 | 24 | 25 | // Dismissible alerts 26 | // 27 | // Expand the right padding and account for the close button's positioning. 28 | 29 | .alert-dismissible { 30 | padding-right: $close-font-size + $alert-padding-x * 2; 31 | 32 | // Adjust close link position 33 | .close { 34 | position: absolute; 35 | top: 0; 36 | right: 0; 37 | z-index: 2; 38 | padding: $alert-padding-y $alert-padding-x; 39 | color: inherit; 40 | } 41 | } 42 | 43 | 44 | // Alternate styles 45 | // 46 | // Generate contextual modifier classes for colorizing the alert. 47 | 48 | @each $color, $value in $theme-colors { 49 | .alert-#{$color} { 50 | @include alert-variant(theme-color-level($color, $alert-bg-level), theme-color-level($color, $alert-border-level), theme-color-level($color, $alert-color-level)); 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /lib/flaticon/font/flaticon.css: -------------------------------------------------------------------------------- 1 | /* 2 | Flaticon icon font: Flaticon 3 | Creation date: 26/10/2020 11:08 4 | */ 5 | 6 | @font-face { 7 | font-family: "Flaticon"; 8 | src: url("./Flaticon.eot"); 9 | src: url("./Flaticon.eot?#iefix") format("embedded-opentype"), 10 | url("./Flaticon.woff2") format("woff2"), 11 | url("./Flaticon.woff") format("woff"), 12 | url("./Flaticon.ttf") format("truetype"), 13 | url("./Flaticon.svg#Flaticon") format("svg"); 14 | font-weight: normal; 15 | font-style: normal; 16 | } 17 | 18 | @media screen and (-webkit-min-device-pixel-ratio:0) { 19 | @font-face { 20 | font-family: "Flaticon"; 21 | src: url("./Flaticon.svg#Flaticon") format("svg"); 22 | } 23 | } 24 | 25 | [class^="flaticon-"]:before, [class*=" flaticon-"]:before, 26 | [class^="flaticon-"]:after, [class*=" flaticon-"]:after { 27 | font-family: Flaticon; 28 | font-size: 20px; 29 | font-style: normal; 30 | margin-left: 20px; 31 | } 32 | 33 | .flaticon-barbell:before { content: "\f100"; } 34 | .flaticon-treadmill:before { content: "\f101"; } 35 | .flaticon-six-pack:before { content: "\f102"; } 36 | .flaticon-bodybuilding:before { content: "\f103"; } 37 | .flaticon-medal:before { content: "\f104"; } 38 | .flaticon-muscular-bodybuilder-with-clock:before { content: "\f105"; } 39 | .flaticon-trends:before { content: "\f106"; } 40 | .flaticon-weightlifting:before { content: "\f107"; } 41 | .flaticon-training:before { content: "\f108"; } 42 | .flaticon-support:before { content: "\f109"; } -------------------------------------------------------------------------------- /js/main.js: -------------------------------------------------------------------------------- 1 | (function ($) { 2 | "use strict"; 3 | 4 | // Dropdown on mouse hover 5 | $(document).ready(function () { 6 | function toggleNavbarMethod() { 7 | if ($(window).width() > 992) { 8 | $('.navbar .dropdown').on('mouseover', function () { 9 | $('.dropdown-toggle', this).trigger('click'); 10 | }).on('mouseout', function () { 11 | $('.dropdown-toggle', this).trigger('click').blur(); 12 | }); 13 | } else { 14 | $('.navbar .dropdown').off('mouseover').off('mouseout'); 15 | } 16 | } 17 | toggleNavbarMethod(); 18 | $(window).resize(toggleNavbarMethod); 19 | }); 20 | 21 | 22 | // Back to top button 23 | $(window).scroll(function () { 24 | if ($(this).scrollTop() > 100) { 25 | $('.back-to-top').fadeIn('slow'); 26 | } else { 27 | $('.back-to-top').fadeOut('slow'); 28 | } 29 | }); 30 | $('.back-to-top').click(function () { 31 | $('html, body').animate({scrollTop: 0}, 1500, 'easeInOutExpo'); 32 | return false; 33 | }); 34 | })(jQuery); 35 | 36 | function cal(F){ 37 | 38 | var w = F.weight.value ; 39 | var h =F.height.value ; 40 | 41 | 42 | if(w ==""){ alert("Please enter your weight"); return false;} 43 | if(h ==""){ alert("Please enter your height"); return false;} 44 | alert("Your Body Mass Index is :"+ Math.round(w /(h*h) ).toFixed(2)); 45 | 46 | 47 | 48 | 49 | 50 | } -------------------------------------------------------------------------------- /scss/bootstrap/scss/mixins/_caret.scss: -------------------------------------------------------------------------------- 1 | @mixin caret-down() { 2 | border-top: $caret-width solid; 3 | border-right: $caret-width solid transparent; 4 | border-bottom: 0; 5 | border-left: $caret-width solid transparent; 6 | } 7 | 8 | @mixin caret-up() { 9 | border-top: 0; 10 | border-right: $caret-width solid transparent; 11 | border-bottom: $caret-width solid; 12 | border-left: $caret-width solid transparent; 13 | } 14 | 15 | @mixin caret-right() { 16 | border-top: $caret-width solid transparent; 17 | border-right: 0; 18 | border-bottom: $caret-width solid transparent; 19 | border-left: $caret-width solid; 20 | } 21 | 22 | @mixin caret-left() { 23 | border-top: $caret-width solid transparent; 24 | border-right: $caret-width solid; 25 | border-bottom: $caret-width solid transparent; 26 | } 27 | 28 | @mixin caret($direction: down) { 29 | @if $enable-caret { 30 | &::after { 31 | display: inline-block; 32 | margin-left: $caret-spacing; 33 | vertical-align: $caret-vertical-align; 34 | content: ""; 35 | @if $direction == down { 36 | @include caret-down(); 37 | } @else if $direction == up { 38 | @include caret-up(); 39 | } @else if $direction == right { 40 | @include caret-right(); 41 | } 42 | } 43 | 44 | @if $direction == left { 45 | &::after { 46 | display: none; 47 | } 48 | 49 | &::before { 50 | display: inline-block; 51 | margin-right: $caret-spacing; 52 | vertical-align: $caret-vertical-align; 53 | content: ""; 54 | @include caret-left(); 55 | } 56 | } 57 | 58 | &:empty::after { 59 | margin-left: 0; 60 | } 61 | } 62 | } 63 | -------------------------------------------------------------------------------- /scss/bootstrap/scss/utilities/_borders.scss: -------------------------------------------------------------------------------- 1 | // stylelint-disable property-disallowed-list, declaration-no-important 2 | 3 | // 4 | // Border 5 | // 6 | 7 | .border { border: $border-width solid $border-color !important; } 8 | .border-top { border-top: $border-width solid $border-color !important; } 9 | .border-right { border-right: $border-width solid $border-color !important; } 10 | .border-bottom { border-bottom: $border-width solid $border-color !important; } 11 | .border-left { border-left: $border-width solid $border-color !important; } 12 | 13 | .border-0 { border: 0 !important; } 14 | .border-top-0 { border-top: 0 !important; } 15 | .border-right-0 { border-right: 0 !important; } 16 | .border-bottom-0 { border-bottom: 0 !important; } 17 | .border-left-0 { border-left: 0 !important; } 18 | 19 | @each $color, $value in $theme-colors { 20 | .border-#{$color} { 21 | border-color: $value !important; 22 | } 23 | } 24 | 25 | .border-white { 26 | border-color: $white !important; 27 | } 28 | 29 | // 30 | // Border-radius 31 | // 32 | 33 | .rounded-sm { 34 | border-radius: $border-radius-sm !important; 35 | } 36 | 37 | .rounded { 38 | border-radius: $border-radius !important; 39 | } 40 | 41 | .rounded-top { 42 | border-top-left-radius: $border-radius !important; 43 | border-top-right-radius: $border-radius !important; 44 | } 45 | 46 | .rounded-right { 47 | border-top-right-radius: $border-radius !important; 48 | border-bottom-right-radius: $border-radius !important; 49 | } 50 | 51 | .rounded-bottom { 52 | border-bottom-right-radius: $border-radius !important; 53 | border-bottom-left-radius: $border-radius !important; 54 | } 55 | 56 | .rounded-left { 57 | border-top-left-radius: $border-radius !important; 58 | border-bottom-left-radius: $border-radius !important; 59 | } 60 | 61 | .rounded-lg { 62 | border-radius: $border-radius-lg !important; 63 | } 64 | 65 | .rounded-circle { 66 | border-radius: 50% !important; 67 | } 68 | 69 | .rounded-pill { 70 | border-radius: $rounded-pill !important; 71 | } 72 | 73 | .rounded-0 { 74 | border-radius: 0 !important; 75 | } 76 | -------------------------------------------------------------------------------- /scss/bootstrap/scss/mixins/_border-radius.scss: -------------------------------------------------------------------------------- 1 | // stylelint-disable property-disallowed-list 2 | // Single side border-radius 3 | 4 | // Helper function to replace negative values with 0 5 | @function valid-radius($radius) { 6 | $return: (); 7 | @each $value in $radius { 8 | @if type-of($value) == number { 9 | $return: append($return, max($value, 0)); 10 | } @else { 11 | $return: append($return, $value); 12 | } 13 | } 14 | @return $return; 15 | } 16 | 17 | @mixin border-radius($radius: $border-radius, $fallback-border-radius: false) { 18 | @if $enable-rounded { 19 | border-radius: valid-radius($radius); 20 | } 21 | @else if $fallback-border-radius != false { 22 | border-radius: $fallback-border-radius; 23 | } 24 | } 25 | 26 | @mixin border-top-radius($radius) { 27 | @if $enable-rounded { 28 | border-top-left-radius: valid-radius($radius); 29 | border-top-right-radius: valid-radius($radius); 30 | } 31 | } 32 | 33 | @mixin border-right-radius($radius) { 34 | @if $enable-rounded { 35 | border-top-right-radius: valid-radius($radius); 36 | border-bottom-right-radius: valid-radius($radius); 37 | } 38 | } 39 | 40 | @mixin border-bottom-radius($radius) { 41 | @if $enable-rounded { 42 | border-bottom-right-radius: valid-radius($radius); 43 | border-bottom-left-radius: valid-radius($radius); 44 | } 45 | } 46 | 47 | @mixin border-left-radius($radius) { 48 | @if $enable-rounded { 49 | border-top-left-radius: valid-radius($radius); 50 | border-bottom-left-radius: valid-radius($radius); 51 | } 52 | } 53 | 54 | @mixin border-top-left-radius($radius) { 55 | @if $enable-rounded { 56 | border-top-left-radius: valid-radius($radius); 57 | } 58 | } 59 | 60 | @mixin border-top-right-radius($radius) { 61 | @if $enable-rounded { 62 | border-top-right-radius: valid-radius($radius); 63 | } 64 | } 65 | 66 | @mixin border-bottom-right-radius($radius) { 67 | @if $enable-rounded { 68 | border-bottom-right-radius: valid-radius($radius); 69 | } 70 | } 71 | 72 | @mixin border-bottom-left-radius($radius) { 73 | @if $enable-rounded { 74 | border-bottom-left-radius: valid-radius($radius); 75 | } 76 | } 77 | -------------------------------------------------------------------------------- /scss/bootstrap/scss/mixins/_gradients.scss: -------------------------------------------------------------------------------- 1 | // Gradients 2 | 3 | @mixin gradient-bg($color) { 4 | @if $enable-gradients { 5 | background: $color linear-gradient(180deg, mix($body-bg, $color, 15%), $color) repeat-x; 6 | } @else { 7 | background-color: $color; 8 | } 9 | } 10 | 11 | // Horizontal gradient, from left to right 12 | // 13 | // Creates two color stops, start and end, by specifying a color and position for each color stop. 14 | @mixin gradient-x($start-color: $gray-700, $end-color: $gray-800, $start-percent: 0%, $end-percent: 100%) { 15 | background-image: linear-gradient(to right, $start-color $start-percent, $end-color $end-percent); 16 | background-repeat: repeat-x; 17 | } 18 | 19 | // Vertical gradient, from top to bottom 20 | // 21 | // Creates two color stops, start and end, by specifying a color and position for each color stop. 22 | @mixin gradient-y($start-color: $gray-700, $end-color: $gray-800, $start-percent: 0%, $end-percent: 100%) { 23 | background-image: linear-gradient(to bottom, $start-color $start-percent, $end-color $end-percent); 24 | background-repeat: repeat-x; 25 | } 26 | 27 | @mixin gradient-directional($start-color: $gray-700, $end-color: $gray-800, $deg: 45deg) { 28 | background-image: linear-gradient($deg, $start-color, $end-color); 29 | background-repeat: repeat-x; 30 | } 31 | @mixin gradient-x-three-colors($start-color: $blue, $mid-color: $purple, $color-stop: 50%, $end-color: $red) { 32 | background-image: linear-gradient(to right, $start-color, $mid-color $color-stop, $end-color); 33 | background-repeat: no-repeat; 34 | } 35 | @mixin gradient-y-three-colors($start-color: $blue, $mid-color: $purple, $color-stop: 50%, $end-color: $red) { 36 | background-image: linear-gradient($start-color, $mid-color $color-stop, $end-color); 37 | background-repeat: no-repeat; 38 | } 39 | @mixin gradient-radial($inner-color: $gray-700, $outer-color: $gray-800) { 40 | background-image: radial-gradient(circle, $inner-color, $outer-color); 41 | background-repeat: no-repeat; 42 | } 43 | @mixin gradient-striped($color: rgba($white, .15), $angle: 45deg) { 44 | background-image: linear-gradient($angle, $color 25%, transparent 25%, transparent 50%, $color 50%, $color 75%, transparent 75%, transparent); 45 | } 46 | -------------------------------------------------------------------------------- /lib/easing/easing.min.js: -------------------------------------------------------------------------------- 1 | !function(n){"function"==typeof define&&define.amd?define(["jquery"],function(e){return n(e)}):"object"==typeof module&&"object"==typeof module.exports?exports=n(require("jquery")):n(jQuery)}(function(n){function e(n){var e=7.5625,t=2.75;return n<1/t?e*n*n:n<2/t?e*(n-=1.5/t)*n+.75:n<2.5/t?e*(n-=2.25/t)*n+.9375:e*(n-=2.625/t)*n+.984375}void 0!==n.easing&&(n.easing.jswing=n.easing.swing);var t=Math.pow,u=Math.sqrt,r=Math.sin,i=Math.cos,a=Math.PI,c=1.70158,o=1.525*c,s=2*a/3,f=2*a/4.5;n.extend(n.easing,{def:"easeOutQuad",swing:function(e){return n.easing[n.easing.def](e)},easeInQuad:function(n){return n*n},easeOutQuad:function(n){return 1-(1-n)*(1-n)},easeInOutQuad:function(n){return n<.5?2*n*n:1-t(-2*n+2,2)/2},easeInCubic:function(n){return n*n*n},easeOutCubic:function(n){return 1-t(1-n,3)},easeInOutCubic:function(n){return n<.5?4*n*n*n:1-t(-2*n+2,3)/2},easeInQuart:function(n){return n*n*n*n},easeOutQuart:function(n){return 1-t(1-n,4)},easeInOutQuart:function(n){return n<.5?8*n*n*n*n:1-t(-2*n+2,4)/2},easeInQuint:function(n){return n*n*n*n*n},easeOutQuint:function(n){return 1-t(1-n,5)},easeInOutQuint:function(n){return n<.5?16*n*n*n*n*n:1-t(-2*n+2,5)/2},easeInSine:function(n){return 1-i(n*a/2)},easeOutSine:function(n){return r(n*a/2)},easeInOutSine:function(n){return-(i(a*n)-1)/2},easeInExpo:function(n){return 0===n?0:t(2,10*n-10)},easeOutExpo:function(n){return 1===n?1:1-t(2,-10*n)},easeInOutExpo:function(n){return 0===n?0:1===n?1:n<.5?t(2,20*n-10)/2:(2-t(2,-20*n+10))/2},easeInCirc:function(n){return 1-u(1-t(n,2))},easeOutCirc:function(n){return u(1-t(n-1,2))},easeInOutCirc:function(n){return n<.5?(1-u(1-t(2*n,2)))/2:(u(1-t(-2*n+2,2))+1)/2},easeInElastic:function(n){return 0===n?0:1===n?1:-t(2,10*n-10)*r((10*n-10.75)*s)},easeOutElastic:function(n){return 0===n?0:1===n?1:t(2,-10*n)*r((10*n-.75)*s)+1},easeInOutElastic:function(n){return 0===n?0:1===n?1:n<.5?-(t(2,20*n-10)*r((20*n-11.125)*f))/2:t(2,-20*n+10)*r((20*n-11.125)*f)/2+1},easeInBack:function(n){return(c+1)*n*n*n-c*n*n},easeOutBack:function(n){return 1+(c+1)*t(n-1,3)+c*t(n-1,2)},easeInOutBack:function(n){return n<.5?t(2*n,2)*(7.189819*n-o)/2:(t(2*n-2,2)*((o+1)*(2*n-2)+o)+2)/2},easeInBounce:function(n){return 1-e(1-n)},easeOutBounce:e,easeInOutBounce:function(n){return n<.5?(1-e(1-2*n))/2:(1+e(2*n-1))/2}})}); 2 | -------------------------------------------------------------------------------- /scss/bootstrap/scss/mixins/_grid.scss: -------------------------------------------------------------------------------- 1 | /// Grid system 2 | // 3 | // Generate semantic grid columns with these mixins. 4 | 5 | @mixin make-container($gutter: $grid-gutter-width) { 6 | width: 100%; 7 | padding-right: $gutter / 2; 8 | padding-left: $gutter / 2; 9 | margin-right: auto; 10 | margin-left: auto; 11 | } 12 | 13 | @mixin make-row($gutter: $grid-gutter-width) { 14 | display: flex; 15 | flex-wrap: wrap; 16 | margin-right: -$gutter / 2; 17 | margin-left: -$gutter / 2; 18 | } 19 | 20 | // For each breakpoint, define the maximum width of the container in a media query 21 | @mixin make-container-max-widths($max-widths: $container-max-widths, $breakpoints: $grid-breakpoints) { 22 | @each $breakpoint, $container-max-width in $max-widths { 23 | @include media-breakpoint-up($breakpoint, $breakpoints) { 24 | max-width: $container-max-width; 25 | } 26 | } 27 | @include deprecate("The `make-container-max-widths` mixin", "v4.5.2", "v5"); 28 | } 29 | 30 | @mixin make-col-ready($gutter: $grid-gutter-width) { 31 | position: relative; 32 | // Prevent columns from becoming too narrow when at smaller grid tiers by 33 | // always setting `width: 100%;`. This works because we use `flex` values 34 | // later on to override this initial width. 35 | width: 100%; 36 | padding-right: $gutter / 2; 37 | padding-left: $gutter / 2; 38 | } 39 | 40 | @mixin make-col($size, $columns: $grid-columns) { 41 | flex: 0 0 percentage($size / $columns); 42 | // Add a `max-width` to ensure content within each column does not blow out 43 | // the width of the column. Applies to IE10+ and Firefox. Chrome and Safari 44 | // do not appear to require this. 45 | max-width: percentage($size / $columns); 46 | } 47 | 48 | @mixin make-col-auto() { 49 | flex: 0 0 auto; 50 | width: auto; 51 | max-width: 100%; // Reset earlier grid tiers 52 | } 53 | 54 | @mixin make-col-offset($size, $columns: $grid-columns) { 55 | $num: $size / $columns; 56 | margin-left: if($num == 0, 0, percentage($num)); 57 | } 58 | 59 | // Row columns 60 | // 61 | // Specify on a parent element(e.g., .row) to force immediate children into NN 62 | // numberof columns. Supports wrapping to new lines, but does not do a Masonry 63 | // style grid. 64 | @mixin row-cols($count) { 65 | > * { 66 | flex: 0 0 100% / $count; 67 | max-width: 100% / $count; 68 | } 69 | } 70 | -------------------------------------------------------------------------------- /scss/bootstrap/scss/utilities/_text.scss: -------------------------------------------------------------------------------- 1 | // stylelint-disable declaration-no-important 2 | 3 | // 4 | // Text 5 | // 6 | 7 | .text-monospace { font-family: $font-family-monospace !important; } 8 | 9 | // Alignment 10 | 11 | .text-justify { text-align: justify !important; } 12 | .text-wrap { white-space: normal !important; } 13 | .text-nowrap { white-space: nowrap !important; } 14 | .text-truncate { @include text-truncate(); } 15 | 16 | // Responsive alignment 17 | 18 | @each $breakpoint in map-keys($grid-breakpoints) { 19 | @include media-breakpoint-up($breakpoint) { 20 | $infix: breakpoint-infix($breakpoint, $grid-breakpoints); 21 | 22 | .text#{$infix}-left { text-align: left !important; } 23 | .text#{$infix}-right { text-align: right !important; } 24 | .text#{$infix}-center { text-align: center !important; } 25 | } 26 | } 27 | 28 | // Transformation 29 | 30 | .text-lowercase { text-transform: lowercase !important; } 31 | .text-uppercase { text-transform: uppercase !important; } 32 | .text-capitalize { text-transform: capitalize !important; } 33 | 34 | // Weight and italics 35 | 36 | .font-weight-light { font-weight: $font-weight-light !important; } 37 | .font-weight-lighter { font-weight: $font-weight-lighter !important; } 38 | .font-weight-normal { font-weight: $font-weight-normal !important; } 39 | .font-weight-bold { font-weight: $font-weight-bold !important; } 40 | .font-weight-bolder { font-weight: $font-weight-bolder !important; } 41 | .font-italic { font-style: italic !important; } 42 | 43 | // Contextual colors 44 | 45 | .text-white { color: $white !important; } 46 | 47 | @each $color, $value in $theme-colors { 48 | @include text-emphasis-variant(".text-#{$color}", $value, true); 49 | } 50 | 51 | .text-body { color: $body-color !important; } 52 | .text-muted { color: $text-muted !important; } 53 | 54 | .text-black-50 { color: rgba($black, .5) !important; } 55 | .text-white-50 { color: rgba($white, .5) !important; } 56 | 57 | // Misc 58 | 59 | .text-hide { 60 | @include text-hide($ignore-warning: true); 61 | } 62 | 63 | .text-decoration-none { text-decoration: none !important; } 64 | 65 | .text-break { 66 | word-break: break-word !important; // Deprecated, but avoids issues with flex containers 67 | word-wrap: break-word !important; // Used instead of `overflow-wrap` for IE & Edge Legacy 68 | } 69 | 70 | // Reset 71 | 72 | .text-reset { color: inherit !important; } 73 | -------------------------------------------------------------------------------- /scss/bootstrap/scss/utilities/_spacing.scss: -------------------------------------------------------------------------------- 1 | // stylelint-disable declaration-no-important 2 | 3 | // Margin and Padding 4 | 5 | @each $breakpoint in map-keys($grid-breakpoints) { 6 | @include media-breakpoint-up($breakpoint) { 7 | $infix: breakpoint-infix($breakpoint, $grid-breakpoints); 8 | 9 | @each $prop, $abbrev in (margin: m, padding: p) { 10 | @each $size, $length in $spacers { 11 | .#{$abbrev}#{$infix}-#{$size} { #{$prop}: $length !important; } 12 | .#{$abbrev}t#{$infix}-#{$size}, 13 | .#{$abbrev}y#{$infix}-#{$size} { 14 | #{$prop}-top: $length !important; 15 | } 16 | .#{$abbrev}r#{$infix}-#{$size}, 17 | .#{$abbrev}x#{$infix}-#{$size} { 18 | #{$prop}-right: $length !important; 19 | } 20 | .#{$abbrev}b#{$infix}-#{$size}, 21 | .#{$abbrev}y#{$infix}-#{$size} { 22 | #{$prop}-bottom: $length !important; 23 | } 24 | .#{$abbrev}l#{$infix}-#{$size}, 25 | .#{$abbrev}x#{$infix}-#{$size} { 26 | #{$prop}-left: $length !important; 27 | } 28 | } 29 | } 30 | 31 | // Negative margins (e.g., where `.mb-n1` is negative version of `.mb-1`) 32 | @each $size, $length in $spacers { 33 | @if $size != 0 { 34 | .m#{$infix}-n#{$size} { margin: -$length !important; } 35 | .mt#{$infix}-n#{$size}, 36 | .my#{$infix}-n#{$size} { 37 | margin-top: -$length !important; 38 | } 39 | .mr#{$infix}-n#{$size}, 40 | .mx#{$infix}-n#{$size} { 41 | margin-right: -$length !important; 42 | } 43 | .mb#{$infix}-n#{$size}, 44 | .my#{$infix}-n#{$size} { 45 | margin-bottom: -$length !important; 46 | } 47 | .ml#{$infix}-n#{$size}, 48 | .mx#{$infix}-n#{$size} { 49 | margin-left: -$length !important; 50 | } 51 | } 52 | } 53 | 54 | // Some special margin utils 55 | .m#{$infix}-auto { margin: auto !important; } 56 | .mt#{$infix}-auto, 57 | .my#{$infix}-auto { 58 | margin-top: auto !important; 59 | } 60 | .mr#{$infix}-auto, 61 | .mx#{$infix}-auto { 62 | margin-right: auto !important; 63 | } 64 | .mb#{$infix}-auto, 65 | .my#{$infix}-auto { 66 | margin-bottom: auto !important; 67 | } 68 | .ml#{$infix}-auto, 69 | .mx#{$infix}-auto { 70 | margin-left: auto !important; 71 | } 72 | } 73 | } 74 | -------------------------------------------------------------------------------- /scss/bootstrap/scss/mixins/_grid-framework.scss: -------------------------------------------------------------------------------- 1 | // Framework grid generation 2 | // 3 | // Used only by Bootstrap to generate the correct number of grid classes given 4 | // any value of `$grid-columns`. 5 | 6 | @mixin make-grid-columns($columns: $grid-columns, $gutter: $grid-gutter-width, $breakpoints: $grid-breakpoints) { 7 | // Common properties for all breakpoints 8 | %grid-column { 9 | position: relative; 10 | width: 100%; 11 | padding-right: $gutter / 2; 12 | padding-left: $gutter / 2; 13 | } 14 | 15 | @each $breakpoint in map-keys($breakpoints) { 16 | $infix: breakpoint-infix($breakpoint, $breakpoints); 17 | 18 | @if $columns > 0 { 19 | // Allow columns to stretch full width below their breakpoints 20 | @for $i from 1 through $columns { 21 | .col#{$infix}-#{$i} { 22 | @extend %grid-column; 23 | } 24 | } 25 | } 26 | 27 | .col#{$infix}, 28 | .col#{$infix}-auto { 29 | @extend %grid-column; 30 | } 31 | 32 | @include media-breakpoint-up($breakpoint, $breakpoints) { 33 | // Provide basic `.col-{bp}` classes for equal-width flexbox columns 34 | .col#{$infix} { 35 | flex-basis: 0; 36 | flex-grow: 1; 37 | max-width: 100%; 38 | } 39 | 40 | @if $grid-row-columns > 0 { 41 | @for $i from 1 through $grid-row-columns { 42 | .row-cols#{$infix}-#{$i} { 43 | @include row-cols($i); 44 | } 45 | } 46 | } 47 | 48 | .col#{$infix}-auto { 49 | @include make-col-auto(); 50 | } 51 | 52 | @if $columns > 0 { 53 | @for $i from 1 through $columns { 54 | .col#{$infix}-#{$i} { 55 | @include make-col($i, $columns); 56 | } 57 | } 58 | } 59 | 60 | .order#{$infix}-first { order: -1; } 61 | 62 | .order#{$infix}-last { order: $columns + 1; } 63 | 64 | @for $i from 0 through $columns { 65 | .order#{$infix}-#{$i} { order: $i; } 66 | } 67 | 68 | @if $columns > 0 { 69 | // `$columns - 1` because offsetting by the width of an entire row isn't possible 70 | @for $i from 0 through ($columns - 1) { 71 | @if not ($infix == "" and $i == 0) { // Avoid emitting useless .offset-0 72 | .offset#{$infix}-#{$i} { 73 | @include make-col-offset($i, $columns); 74 | } 75 | } 76 | } 77 | } 78 | } 79 | } 80 | } 81 | -------------------------------------------------------------------------------- /mail/contact.js: -------------------------------------------------------------------------------- 1 | $(function () { 2 | 3 | $("#contactForm input, #contactForm textarea").jqBootstrapValidation({ 4 | preventSubmit: true, 5 | submitError: function ($form, event, errors) { 6 | }, 7 | submitSuccess: function ($form, event) { 8 | event.preventDefault(); 9 | var name = $("input#name").val(); 10 | var email = $("input#email").val(); 11 | var subject = $("input#subject").val(); 12 | var message = $("textarea#message").val(); 13 | 14 | $this = $("#sendMessageButton"); 15 | $this.prop("disabled", true); 16 | 17 | $.ajax({ 18 | url: "contact.php", 19 | type: "POST", 20 | data: { 21 | name: name, 22 | email: email, 23 | subject: subject, 24 | message: message 25 | }, 26 | cache: false, 27 | success: function () { 28 | $('#success').html("
"); 29 | $('#success > .alert-success').html(""); 31 | $('#success > .alert-success') 32 | .append("Your message has been sent. "); 33 | $('#success > .alert-success') 34 | .append('
'); 35 | $('#contactForm').trigger("reset"); 36 | }, 37 | error: function () { 38 | $('#success').html("
"); 39 | $('#success > .alert-danger').html(""); 41 | $('#success > .alert-danger').append($("").text("Sorry " + name + ", it seems that our mail server is not responding. Please try again later!")); 42 | $('#success > .alert-danger').append('
'); 43 | $('#contactForm').trigger("reset"); 44 | }, 45 | complete: function () { 46 | setTimeout(function () { 47 | $this.prop("disabled", false); 48 | }, 1000); 49 | } 50 | }); 51 | }, 52 | filter: function () { 53 | return $(this).is(":visible"); 54 | }, 55 | }); 56 | 57 | $("a[data-toggle=\"tab\"]").click(function (e) { 58 | e.preventDefault(); 59 | $(this).tab("show"); 60 | }); 61 | }); 62 | 63 | $('#name').focus(function () { 64 | $('#success').html(''); 65 | }); 66 | -------------------------------------------------------------------------------- /scss/bootstrap/scss/utilities/_flex.scss: -------------------------------------------------------------------------------- 1 | // stylelint-disable declaration-no-important 2 | 3 | // Flex variation 4 | // 5 | // Custom styles for additional flex alignment options. 6 | 7 | @each $breakpoint in map-keys($grid-breakpoints) { 8 | @include media-breakpoint-up($breakpoint) { 9 | $infix: breakpoint-infix($breakpoint, $grid-breakpoints); 10 | 11 | .flex#{$infix}-row { flex-direction: row !important; } 12 | .flex#{$infix}-column { flex-direction: column !important; } 13 | .flex#{$infix}-row-reverse { flex-direction: row-reverse !important; } 14 | .flex#{$infix}-column-reverse { flex-direction: column-reverse !important; } 15 | 16 | .flex#{$infix}-wrap { flex-wrap: wrap !important; } 17 | .flex#{$infix}-nowrap { flex-wrap: nowrap !important; } 18 | .flex#{$infix}-wrap-reverse { flex-wrap: wrap-reverse !important; } 19 | .flex#{$infix}-fill { flex: 1 1 auto !important; } 20 | .flex#{$infix}-grow-0 { flex-grow: 0 !important; } 21 | .flex#{$infix}-grow-1 { flex-grow: 1 !important; } 22 | .flex#{$infix}-shrink-0 { flex-shrink: 0 !important; } 23 | .flex#{$infix}-shrink-1 { flex-shrink: 1 !important; } 24 | 25 | .justify-content#{$infix}-start { justify-content: flex-start !important; } 26 | .justify-content#{$infix}-end { justify-content: flex-end !important; } 27 | .justify-content#{$infix}-center { justify-content: center !important; } 28 | .justify-content#{$infix}-between { justify-content: space-between !important; } 29 | .justify-content#{$infix}-around { justify-content: space-around !important; } 30 | 31 | .align-items#{$infix}-start { align-items: flex-start !important; } 32 | .align-items#{$infix}-end { align-items: flex-end !important; } 33 | .align-items#{$infix}-center { align-items: center !important; } 34 | .align-items#{$infix}-baseline { align-items: baseline !important; } 35 | .align-items#{$infix}-stretch { align-items: stretch !important; } 36 | 37 | .align-content#{$infix}-start { align-content: flex-start !important; } 38 | .align-content#{$infix}-end { align-content: flex-end !important; } 39 | .align-content#{$infix}-center { align-content: center !important; } 40 | .align-content#{$infix}-between { align-content: space-between !important; } 41 | .align-content#{$infix}-around { align-content: space-around !important; } 42 | .align-content#{$infix}-stretch { align-content: stretch !important; } 43 | 44 | .align-self#{$infix}-auto { align-self: auto !important; } 45 | .align-self#{$infix}-start { align-self: flex-start !important; } 46 | .align-self#{$infix}-end { align-self: flex-end !important; } 47 | .align-self#{$infix}-center { align-self: center !important; } 48 | .align-self#{$infix}-baseline { align-self: baseline !important; } 49 | .align-self#{$infix}-stretch { align-self: stretch !important; } 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /scss/bootstrap/scss/mixins/_buttons.scss: -------------------------------------------------------------------------------- 1 | // Button variants 2 | // 3 | // Easily pump out default styles, as well as :hover, :focus, :active, 4 | // and disabled options for all buttons 5 | 6 | @mixin button-variant($background, $border, $hover-background: darken($background, 7.5%), $hover-border: darken($border, 10%), $active-background: darken($background, 10%), $active-border: darken($border, 12.5%)) { 7 | color: color-yiq($background); 8 | @include gradient-bg($background); 9 | border-color: $border; 10 | @include box-shadow($btn-box-shadow); 11 | 12 | @include hover() { 13 | color: color-yiq($hover-background); 14 | @include gradient-bg($hover-background); 15 | border-color: $hover-border; 16 | } 17 | 18 | &:focus, 19 | &.focus { 20 | color: color-yiq($hover-background); 21 | @include gradient-bg($hover-background); 22 | border-color: $hover-border; 23 | @if $enable-shadows { 24 | @include box-shadow($btn-box-shadow, 0 0 0 $btn-focus-width rgba(mix(color-yiq($background), $border, 15%), .5)); 25 | } @else { 26 | // Avoid using mixin so we can pass custom focus shadow properly 27 | box-shadow: 0 0 0 $btn-focus-width rgba(mix(color-yiq($background), $border, 15%), .5); 28 | } 29 | } 30 | 31 | // Disabled comes first so active can properly restyle 32 | &.disabled, 33 | &:disabled { 34 | color: color-yiq($background); 35 | background-color: $background; 36 | border-color: $border; 37 | // Remove CSS gradients if they're enabled 38 | @if $enable-gradients { 39 | background-image: none; 40 | } 41 | } 42 | 43 | &:not(:disabled):not(.disabled):active, 44 | &:not(:disabled):not(.disabled).active, 45 | .show > &.dropdown-toggle { 46 | color: color-yiq($active-background); 47 | background-color: $active-background; 48 | @if $enable-gradients { 49 | background-image: none; // Remove the gradient for the pressed/active state 50 | } 51 | border-color: $active-border; 52 | 53 | &:focus { 54 | @if $enable-shadows and $btn-active-box-shadow != none { 55 | @include box-shadow($btn-active-box-shadow, 0 0 0 $btn-focus-width rgba(mix(color-yiq($background), $border, 15%), .5)); 56 | } @else { 57 | // Avoid using mixin so we can pass custom focus shadow properly 58 | box-shadow: 0 0 0 $btn-focus-width rgba(mix(color-yiq($background), $border, 15%), .5); 59 | } 60 | } 61 | } 62 | } 63 | 64 | @mixin button-outline-variant($color, $color-hover: color-yiq($color), $active-background: $color, $active-border: $color) { 65 | color: $color; 66 | border-color: $color; 67 | 68 | @include hover() { 69 | color: $color-hover; 70 | background-color: $active-background; 71 | border-color: $active-border; 72 | } 73 | 74 | &:focus, 75 | &.focus { 76 | box-shadow: 0 0 0 $btn-focus-width rgba($color, .5); 77 | } 78 | 79 | &.disabled, 80 | &:disabled { 81 | color: $color; 82 | background-color: transparent; 83 | } 84 | 85 | &:not(:disabled):not(.disabled):active, 86 | &:not(:disabled):not(.disabled).active, 87 | .show > &.dropdown-toggle { 88 | color: color-yiq($active-background); 89 | background-color: $active-background; 90 | border-color: $active-border; 91 | 92 | &:focus { 93 | @if $enable-shadows and $btn-active-box-shadow != none { 94 | @include box-shadow($btn-active-box-shadow, 0 0 0 $btn-focus-width rgba($color, .5)); 95 | } @else { 96 | // Avoid using mixin so we can pass custom focus shadow properly 97 | box-shadow: 0 0 0 $btn-focus-width rgba($color, .5); 98 | } 99 | } 100 | } 101 | } 102 | 103 | // Button sizes 104 | @mixin button-size($padding-y, $padding-x, $font-size, $line-height, $border-radius) { 105 | padding: $padding-y $padding-x; 106 | @include font-size($font-size); 107 | line-height: $line-height; 108 | // Manually declare to provide an override to the browser default 109 | @include border-radius($border-radius, 0); 110 | } 111 | -------------------------------------------------------------------------------- /lib/easing/easing.js: -------------------------------------------------------------------------------- 1 | /* 2 | * jQuery Easing v1.4.1 - http://gsgd.co.uk/sandbox/jquery/easing/ 3 | * Open source under the BSD License. 4 | * Copyright © 2008 George McGinley Smith 5 | * All rights reserved. 6 | * https://raw.github.com/gdsmith/jquery-easing/master/LICENSE 7 | */ 8 | 9 | (function (factory) { 10 | if (typeof define === "function" && define.amd) { 11 | define(['jquery'], function ($) { 12 | return factory($); 13 | }); 14 | } else if (typeof module === "object" && typeof module.exports === "object") { 15 | exports = factory(require('jquery')); 16 | } else { 17 | factory(jQuery); 18 | } 19 | })(function($){ 20 | 21 | // Preserve the original jQuery "swing" easing as "jswing" 22 | if (typeof $.easing !== 'undefined') { 23 | $.easing['jswing'] = $.easing['swing']; 24 | } 25 | 26 | var pow = Math.pow, 27 | sqrt = Math.sqrt, 28 | sin = Math.sin, 29 | cos = Math.cos, 30 | PI = Math.PI, 31 | c1 = 1.70158, 32 | c2 = c1 * 1.525, 33 | c3 = c1 + 1, 34 | c4 = ( 2 * PI ) / 3, 35 | c5 = ( 2 * PI ) / 4.5; 36 | 37 | // x is the fraction of animation progress, in the range 0..1 38 | function bounceOut(x) { 39 | var n1 = 7.5625, 40 | d1 = 2.75; 41 | if ( x < 1/d1 ) { 42 | return n1*x*x; 43 | } else if ( x < 2/d1 ) { 44 | return n1*(x-=(1.5/d1))*x + .75; 45 | } else if ( x < 2.5/d1 ) { 46 | return n1*(x-=(2.25/d1))*x + .9375; 47 | } else { 48 | return n1*(x-=(2.625/d1))*x + .984375; 49 | } 50 | } 51 | 52 | $.extend( $.easing, 53 | { 54 | def: 'easeOutQuad', 55 | swing: function (x) { 56 | return $.easing[$.easing.def](x); 57 | }, 58 | easeInQuad: function (x) { 59 | return x * x; 60 | }, 61 | easeOutQuad: function (x) { 62 | return 1 - ( 1 - x ) * ( 1 - x ); 63 | }, 64 | easeInOutQuad: function (x) { 65 | return x < 0.5 ? 66 | 2 * x * x : 67 | 1 - pow( -2 * x + 2, 2 ) / 2; 68 | }, 69 | easeInCubic: function (x) { 70 | return x * x * x; 71 | }, 72 | easeOutCubic: function (x) { 73 | return 1 - pow( 1 - x, 3 ); 74 | }, 75 | easeInOutCubic: function (x) { 76 | return x < 0.5 ? 77 | 4 * x * x * x : 78 | 1 - pow( -2 * x + 2, 3 ) / 2; 79 | }, 80 | easeInQuart: function (x) { 81 | return x * x * x * x; 82 | }, 83 | easeOutQuart: function (x) { 84 | return 1 - pow( 1 - x, 4 ); 85 | }, 86 | easeInOutQuart: function (x) { 87 | return x < 0.5 ? 88 | 8 * x * x * x * x : 89 | 1 - pow( -2 * x + 2, 4 ) / 2; 90 | }, 91 | easeInQuint: function (x) { 92 | return x * x * x * x * x; 93 | }, 94 | easeOutQuint: function (x) { 95 | return 1 - pow( 1 - x, 5 ); 96 | }, 97 | easeInOutQuint: function (x) { 98 | return x < 0.5 ? 99 | 16 * x * x * x * x * x : 100 | 1 - pow( -2 * x + 2, 5 ) / 2; 101 | }, 102 | easeInSine: function (x) { 103 | return 1 - cos( x * PI/2 ); 104 | }, 105 | easeOutSine: function (x) { 106 | return sin( x * PI/2 ); 107 | }, 108 | easeInOutSine: function (x) { 109 | return -( cos( PI * x ) - 1 ) / 2; 110 | }, 111 | easeInExpo: function (x) { 112 | return x === 0 ? 0 : pow( 2, 10 * x - 10 ); 113 | }, 114 | easeOutExpo: function (x) { 115 | return x === 1 ? 1 : 1 - pow( 2, -10 * x ); 116 | }, 117 | easeInOutExpo: function (x) { 118 | return x === 0 ? 0 : x === 1 ? 1 : x < 0.5 ? 119 | pow( 2, 20 * x - 10 ) / 2 : 120 | ( 2 - pow( 2, -20 * x + 10 ) ) / 2; 121 | }, 122 | easeInCirc: function (x) { 123 | return 1 - sqrt( 1 - pow( x, 2 ) ); 124 | }, 125 | easeOutCirc: function (x) { 126 | return sqrt( 1 - pow( x - 1, 2 ) ); 127 | }, 128 | easeInOutCirc: function (x) { 129 | return x < 0.5 ? 130 | ( 1 - sqrt( 1 - pow( 2 * x, 2 ) ) ) / 2 : 131 | ( sqrt( 1 - pow( -2 * x + 2, 2 ) ) + 1 ) / 2; 132 | }, 133 | easeInElastic: function (x) { 134 | return x === 0 ? 0 : x === 1 ? 1 : 135 | -pow( 2, 10 * x - 10 ) * sin( ( x * 10 - 10.75 ) * c4 ); 136 | }, 137 | easeOutElastic: function (x) { 138 | return x === 0 ? 0 : x === 1 ? 1 : 139 | pow( 2, -10 * x ) * sin( ( x * 10 - 0.75 ) * c4 ) + 1; 140 | }, 141 | easeInOutElastic: function (x) { 142 | return x === 0 ? 0 : x === 1 ? 1 : x < 0.5 ? 143 | -( pow( 2, 20 * x - 10 ) * sin( ( 20 * x - 11.125 ) * c5 )) / 2 : 144 | pow( 2, -20 * x + 10 ) * sin( ( 20 * x - 11.125 ) * c5 ) / 2 + 1; 145 | }, 146 | easeInBack: function (x) { 147 | return c3 * x * x * x - c1 * x * x; 148 | }, 149 | easeOutBack: function (x) { 150 | return 1 + c3 * pow( x - 1, 3 ) + c1 * pow( x - 1, 2 ); 151 | }, 152 | easeInOutBack: function (x) { 153 | return x < 0.5 ? 154 | ( pow( 2 * x, 2 ) * ( ( c2 + 1 ) * 2 * x - c2 ) ) / 2 : 155 | ( pow( 2 * x - 2, 2 ) *( ( c2 + 1 ) * ( x * 2 - 2 ) + c2 ) + 2 ) / 2; 156 | }, 157 | easeInBounce: function (x) { 158 | return 1 - bounceOut( 1 - x ); 159 | }, 160 | easeOutBounce: bounceOut, 161 | easeInOutBounce: function (x) { 162 | return x < 0.5 ? 163 | ( 1 - bounceOut( 1 - 2 * x ) ) / 2 : 164 | ( 1 + bounceOut( 2 * x - 1 ) ) / 2; 165 | } 166 | }); 167 | 168 | }); 169 | -------------------------------------------------------------------------------- /scss/bootstrap/scss/mixins/_breakpoints.scss: -------------------------------------------------------------------------------- 1 | // Breakpoint viewport sizes and media queries. 2 | // 3 | // Breakpoints are defined as a map of (name: minimum width), order from small to large: 4 | // 5 | // (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px) 6 | // 7 | // The map defined in the `$grid-breakpoints` global variable is used as the `$breakpoints` argument by default. 8 | 9 | // Name of the next breakpoint, or null for the last breakpoint. 10 | // 11 | // >> breakpoint-next(sm) 12 | // md 13 | // >> breakpoint-next(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px)) 14 | // md 15 | // >> breakpoint-next(sm, $breakpoint-names: (xs sm md lg xl)) 16 | // md 17 | @function breakpoint-next($name, $breakpoints: $grid-breakpoints, $breakpoint-names: map-keys($breakpoints)) { 18 | $n: index($breakpoint-names, $name); 19 | @return if($n != null and $n < length($breakpoint-names), nth($breakpoint-names, $n + 1), null); 20 | } 21 | 22 | // Minimum breakpoint width. Null for the smallest (first) breakpoint. 23 | // 24 | // >> breakpoint-min(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px)) 25 | // 576px 26 | @function breakpoint-min($name, $breakpoints: $grid-breakpoints) { 27 | $min: map-get($breakpoints, $name); 28 | @return if($min != 0, $min, null); 29 | } 30 | 31 | // Maximum breakpoint width. Null for the largest (last) breakpoint. 32 | // The maximum value is calculated as the minimum of the next one less 0.02px 33 | // to work around the limitations of `min-` and `max-` prefixes and viewports with fractional widths. 34 | // See https://www.w3.org/TR/mediaqueries-4/#mq-min-max 35 | // Uses 0.02px rather than 0.01px to work around a current rounding bug in Safari. 36 | // See https://bugs.webkit.org/show_bug.cgi?id=178261 37 | // 38 | // >> breakpoint-max(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px)) 39 | // 767.98px 40 | @function breakpoint-max($name, $breakpoints: $grid-breakpoints) { 41 | $next: breakpoint-next($name, $breakpoints); 42 | @return if($next, breakpoint-min($next, $breakpoints) - .02, null); 43 | } 44 | 45 | // Returns a blank string if smallest breakpoint, otherwise returns the name with a dash in front. 46 | // Useful for making responsive utilities. 47 | // 48 | // >> breakpoint-infix(xs, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px)) 49 | // "" (Returns a blank string) 50 | // >> breakpoint-infix(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px)) 51 | // "-sm" 52 | @function breakpoint-infix($name, $breakpoints: $grid-breakpoints) { 53 | @return if(breakpoint-min($name, $breakpoints) == null, "", "-#{$name}"); 54 | } 55 | 56 | // Media of at least the minimum breakpoint width. No query for the smallest breakpoint. 57 | // Makes the @content apply to the given breakpoint and wider. 58 | @mixin media-breakpoint-up($name, $breakpoints: $grid-breakpoints) { 59 | $min: breakpoint-min($name, $breakpoints); 60 | @if $min { 61 | @media (min-width: $min) { 62 | @content; 63 | } 64 | } @else { 65 | @content; 66 | } 67 | } 68 | 69 | // Media of at most the maximum breakpoint width. No query for the largest breakpoint. 70 | // Makes the @content apply to the given breakpoint and narrower. 71 | @mixin media-breakpoint-down($name, $breakpoints: $grid-breakpoints) { 72 | $max: breakpoint-max($name, $breakpoints); 73 | @if $max { 74 | @media (max-width: $max) { 75 | @content; 76 | } 77 | } @else { 78 | @content; 79 | } 80 | } 81 | 82 | // Media that spans multiple breakpoint widths. 83 | // Makes the @content apply between the min and max breakpoints 84 | @mixin media-breakpoint-between($lower, $upper, $breakpoints: $grid-breakpoints) { 85 | $min: breakpoint-min($lower, $breakpoints); 86 | $max: breakpoint-max($upper, $breakpoints); 87 | 88 | @if $min != null and $max != null { 89 | @media (min-width: $min) and (max-width: $max) { 90 | @content; 91 | } 92 | } @else if $max == null { 93 | @include media-breakpoint-up($lower, $breakpoints) { 94 | @content; 95 | } 96 | } @else if $min == null { 97 | @include media-breakpoint-down($upper, $breakpoints) { 98 | @content; 99 | } 100 | } 101 | } 102 | 103 | // Media between the breakpoint's minimum and maximum widths. 104 | // No minimum for the smallest breakpoint, and no maximum for the largest one. 105 | // Makes the @content apply only to the given breakpoint, not viewports any wider or narrower. 106 | @mixin media-breakpoint-only($name, $breakpoints: $grid-breakpoints) { 107 | $min: breakpoint-min($name, $breakpoints); 108 | $max: breakpoint-max($name, $breakpoints); 109 | 110 | @if $min != null and $max != null { 111 | @media (min-width: $min) and (max-width: $max) { 112 | @content; 113 | } 114 | } @else if $max == null { 115 | @include media-breakpoint-up($name, $breakpoints) { 116 | @content; 117 | } 118 | } @else if $min == null { 119 | @include media-breakpoint-down($name, $breakpoints) { 120 | @content; 121 | } 122 | } 123 | } 124 | -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Contributor Covenant Code of Conduct 2 | 3 | ## Our Pledge 4 | 5 | We as members, contributors, and leaders pledge to make participation in our 6 | community a harassment-free experience for everyone, regardless of age, body 7 | size, visible or invisible disability, ethnicity, sex characteristics, gender 8 | identity and expression, level of experience, education, socio-economic status, 9 | nationality, personal appearance, race, religion, or sexual identity 10 | and orientation. 11 | 12 | We pledge to act and interact in ways that contribute to an open, welcoming, 13 | diverse, inclusive, and healthy community. 14 | 15 | ## Our Standards 16 | 17 | Examples of behavior that contributes to a positive environment for our 18 | community include: 19 | 20 | * Demonstrating empathy and kindness toward other people 21 | * Being respectful of differing opinions, viewpoints, and experiences 22 | * Giving and gracefully accepting constructive feedback 23 | * Accepting responsibility and apologizing to those affected by our mistakes, 24 | and learning from the experience 25 | * Focusing on what is best not just for us as individuals, but for the 26 | overall community 27 | 28 | Examples of unacceptable behavior include: 29 | 30 | * The use of sexualized language or imagery, and sexual attention or 31 | advances of any kind 32 | * Trolling, insulting or derogatory comments, and personal or political attacks 33 | * Public or private harassment 34 | * Publishing others' private information, such as a physical or email 35 | address, without their explicit permission 36 | * Other conduct which could reasonably be considered inappropriate in a 37 | professional setting 38 | 39 | ## Enforcement Responsibilities 40 | 41 | Community leaders are responsible for clarifying and enforcing our standards of 42 | acceptable behavior and will take appropriate and fair corrective action in 43 | response to any behavior that they deem inappropriate, threatening, offensive, 44 | or harmful. 45 | 46 | Community leaders have the right and responsibility to remove, edit, or reject 47 | comments, commits, code, wiki edits, issues, and other contributions that are 48 | not aligned to this Code of Conduct, and will communicate reasons for moderation 49 | decisions when appropriate. 50 | 51 | ## Scope 52 | 53 | This Code of Conduct applies within all community spaces, and also applies when 54 | an individual is officially representing the community in public spaces. 55 | Examples of representing our community include using an official e-mail address, 56 | posting via an official social media account, or acting as an appointed 57 | representative at an online or offline event. 58 | 59 | ## Enforcement 60 | 61 | Instances of abusive, harassing, or otherwise unacceptable behavior may be 62 | reported to the community leaders responsible for enforcement at 63 | Email. 64 | All complaints will be reviewed and investigated promptly and fairly. 65 | 66 | All community leaders are obligated to respect the privacy and security of the 67 | reporter of any incident. 68 | 69 | ## Enforcement Guidelines 70 | 71 | Community leaders will follow these Community Impact Guidelines in determining 72 | the consequences for any action they deem in violation of this Code of Conduct: 73 | 74 | ### 1. Correction 75 | 76 | **Community Impact**: Use of inappropriate language or other behavior deemed 77 | unprofessional or unwelcome in the community. 78 | 79 | **Consequence**: A private, written warning from community leaders, providing 80 | clarity around the nature of the violation and an explanation of why the 81 | behavior was inappropriate. A public apology may be requested. 82 | 83 | ### 2. Warning 84 | 85 | **Community Impact**: A violation through a single incident or series 86 | of actions. 87 | 88 | **Consequence**: A warning with consequences for continued behavior. No 89 | interaction with the people involved, including unsolicited interaction with 90 | those enforcing the Code of Conduct, for a specified period of time. This 91 | includes avoiding interactions in community spaces as well as external channels 92 | like social media. Violating these terms may lead to a temporary or 93 | permanent ban. 94 | 95 | ### 3. Temporary Ban 96 | 97 | **Community Impact**: A serious violation of community standards, including 98 | sustained inappropriate behavior. 99 | 100 | **Consequence**: A temporary ban from any sort of interaction or public 101 | communication with the community for a specified period of time. No public or 102 | private interaction with the people involved, including unsolicited interaction 103 | with those enforcing the Code of Conduct, is allowed during this period. 104 | Violating these terms may lead to a permanent ban. 105 | 106 | ### 4. Permanent Ban 107 | 108 | **Community Impact**: Demonstrating a pattern of violation of community 109 | standards, including sustained inappropriate behavior, harassment of an 110 | individual, or aggression toward or disparagement of classes of individuals. 111 | 112 | **Consequence**: A permanent ban from any sort of public interaction within 113 | the community. 114 | 115 | ## Attribution 116 | 117 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], 118 | version 2.0, available at 119 | https://www.contributor-covenant.org/version/2/0/code_of_conduct.html. 120 | 121 | Community Impact Guidelines were inspired by [Mozilla's code of conduct 122 | enforcement ladder](https://github.com/mozilla/diversity). 123 | 124 | [homepage]: https://www.contributor-covenant.org 125 | 126 | For answers to common questions about this code of conduct, see the FAQ at 127 | https://www.contributor-covenant.org/faq. Translations are available at 128 | https://www.contributor-covenant.org/translations. 129 | -------------------------------------------------------------------------------- /scss/bootstrap/scss/mixins/_forms.scss: -------------------------------------------------------------------------------- 1 | // Form control focus state 2 | // 3 | // Generate a customized focus state and for any input with the specified color, 4 | // which defaults to the `$input-focus-border-color` variable. 5 | // 6 | // We highly encourage you to not customize the default value, but instead use 7 | // this to tweak colors on an as-needed basis. This aesthetic change is based on 8 | // WebKit's default styles, but applicable to a wider range of browsers. Its 9 | // usability and accessibility should be taken into account with any change. 10 | // 11 | // Example usage: change the default blue border and shadow to white for better 12 | // contrast against a dark gray background. 13 | @mixin form-control-focus($ignore-warning: false) { 14 | &:focus { 15 | color: $input-focus-color; 16 | background-color: $input-focus-bg; 17 | border-color: $input-focus-border-color; 18 | outline: 0; 19 | @if $enable-shadows { 20 | @include box-shadow($input-box-shadow, $input-focus-box-shadow); 21 | } @else { 22 | // Avoid using mixin so we can pass custom focus shadow properly 23 | box-shadow: $input-focus-box-shadow; 24 | } 25 | } 26 | @include deprecate("The `form-control-focus()` mixin", "v4.4.0", "v5", $ignore-warning); 27 | } 28 | 29 | // This mixin uses an `if()` technique to be compatible with Dart Sass 30 | // See https://github.com/sass/sass/issues/1873#issuecomment-152293725 for more details 31 | @mixin form-validation-state-selector($state) { 32 | @if ($state == "valid" or $state == "invalid") { 33 | .was-validated #{if(&, "&", "")}:#{$state}, 34 | #{if(&, "&", "")}.is-#{$state} { 35 | @content; 36 | } 37 | } @else { 38 | #{if(&, "&", "")}.is-#{$state} { 39 | @content; 40 | } 41 | } 42 | } 43 | 44 | @mixin form-validation-state($state, $color, $icon) { 45 | .#{$state}-feedback { 46 | display: none; 47 | width: 100%; 48 | margin-top: $form-feedback-margin-top; 49 | @include font-size($form-feedback-font-size); 50 | color: $color; 51 | } 52 | 53 | .#{$state}-tooltip { 54 | position: absolute; 55 | top: 100%; 56 | left: 0; 57 | z-index: 5; 58 | display: none; 59 | max-width: 100%; // Contain to parent when possible 60 | padding: $form-feedback-tooltip-padding-y $form-feedback-tooltip-padding-x; 61 | margin-top: .1rem; 62 | @include font-size($form-feedback-tooltip-font-size); 63 | line-height: $form-feedback-tooltip-line-height; 64 | color: color-yiq($color); 65 | background-color: rgba($color, $form-feedback-tooltip-opacity); 66 | @include border-radius($form-feedback-tooltip-border-radius); 67 | } 68 | 69 | @include form-validation-state-selector($state) { 70 | ~ .#{$state}-feedback, 71 | ~ .#{$state}-tooltip { 72 | display: block; 73 | } 74 | } 75 | 76 | .form-control { 77 | @include form-validation-state-selector($state) { 78 | border-color: $color; 79 | 80 | @if $enable-validation-icons { 81 | padding-right: $input-height-inner; 82 | background-image: escape-svg($icon); 83 | background-repeat: no-repeat; 84 | background-position: right $input-height-inner-quarter center; 85 | background-size: $input-height-inner-half $input-height-inner-half; 86 | } 87 | 88 | &:focus { 89 | border-color: $color; 90 | box-shadow: 0 0 0 $input-focus-width rgba($color, .25); 91 | } 92 | } 93 | } 94 | 95 | // stylelint-disable-next-line selector-no-qualifying-type 96 | textarea.form-control { 97 | @include form-validation-state-selector($state) { 98 | @if $enable-validation-icons { 99 | padding-right: $input-height-inner; 100 | background-position: top $input-height-inner-quarter right $input-height-inner-quarter; 101 | } 102 | } 103 | } 104 | 105 | .custom-select { 106 | @include form-validation-state-selector($state) { 107 | border-color: $color; 108 | 109 | @if $enable-validation-icons { 110 | padding-right: $custom-select-feedback-icon-padding-right; 111 | background: $custom-select-background, escape-svg($icon) $custom-select-bg no-repeat $custom-select-feedback-icon-position / $custom-select-feedback-icon-size; 112 | } 113 | 114 | &:focus { 115 | border-color: $color; 116 | box-shadow: 0 0 0 $input-focus-width rgba($color, .25); 117 | } 118 | } 119 | } 120 | 121 | .form-check-input { 122 | @include form-validation-state-selector($state) { 123 | ~ .form-check-label { 124 | color: $color; 125 | } 126 | 127 | ~ .#{$state}-feedback, 128 | ~ .#{$state}-tooltip { 129 | display: block; 130 | } 131 | } 132 | } 133 | 134 | .custom-control-input { 135 | @include form-validation-state-selector($state) { 136 | ~ .custom-control-label { 137 | color: $color; 138 | 139 | &::before { 140 | border-color: $color; 141 | } 142 | } 143 | 144 | &:checked { 145 | ~ .custom-control-label::before { 146 | border-color: lighten($color, 10%); 147 | @include gradient-bg(lighten($color, 10%)); 148 | } 149 | } 150 | 151 | &:focus { 152 | ~ .custom-control-label::before { 153 | box-shadow: 0 0 0 $input-focus-width rgba($color, .25); 154 | } 155 | 156 | &:not(:checked) ~ .custom-control-label::before { 157 | border-color: $color; 158 | } 159 | } 160 | } 161 | } 162 | 163 | // custom file 164 | .custom-file-input { 165 | @include form-validation-state-selector($state) { 166 | ~ .custom-file-label { 167 | border-color: $color; 168 | } 169 | 170 | &:focus { 171 | ~ .custom-file-label { 172 | border-color: $color; 173 | box-shadow: 0 0 0 $input-focus-width rgba($color, .25); 174 | } 175 | } 176 | } 177 | } 178 | } 179 | -------------------------------------------------------------------------------- /scss/bootstrap/scss/bootstrap-reboot.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap Reboot v4.5.3 (https://getbootstrap.com/) 3 | * Copyright 2011-2020 The Bootstrap Authors 4 | * Copyright 2011-2020 Twitter, Inc. 5 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) 6 | * Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md) 7 | */ 8 | *, 9 | *::before, 10 | *::after { 11 | box-sizing: border-box; 12 | } 13 | 14 | html { 15 | font-family: sans-serif; 16 | line-height: 1.15; 17 | -webkit-text-size-adjust: 100%; 18 | -webkit-tap-highlight-color: rgba(0, 0, 0, 0); 19 | } 20 | 21 | article, aside, figcaption, figure, footer, header, hgroup, main, nav, section { 22 | display: block; 23 | } 24 | 25 | body { 26 | margin: 0; 27 | font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; 28 | font-size: 1rem; 29 | font-weight: 400; 30 | line-height: 1.5; 31 | color: #212529; 32 | text-align: left; 33 | background-color: #fff; 34 | } 35 | 36 | [tabindex="-1"]:focus:not(:focus-visible) { 37 | outline: 0 !important; 38 | } 39 | 40 | hr { 41 | box-sizing: content-box; 42 | height: 0; 43 | overflow: visible; 44 | } 45 | 46 | h1, h2, h3, h4, h5, h6 { 47 | margin-top: 0; 48 | margin-bottom: 0.5rem; 49 | } 50 | 51 | p { 52 | margin-top: 0; 53 | margin-bottom: 1rem; 54 | } 55 | 56 | abbr[title], 57 | abbr[data-original-title] { 58 | text-decoration: underline; 59 | text-decoration: underline dotted; 60 | cursor: help; 61 | border-bottom: 0; 62 | text-decoration-skip-ink: none; 63 | } 64 | 65 | address { 66 | margin-bottom: 1rem; 67 | font-style: normal; 68 | line-height: inherit; 69 | } 70 | 71 | ol, 72 | ul, 73 | dl { 74 | margin-top: 0; 75 | margin-bottom: 1rem; 76 | } 77 | 78 | ol ol, 79 | ul ul, 80 | ol ul, 81 | ul ol { 82 | margin-bottom: 0; 83 | } 84 | 85 | dt { 86 | font-weight: 700; 87 | } 88 | 89 | dd { 90 | margin-bottom: .5rem; 91 | margin-left: 0; 92 | } 93 | 94 | blockquote { 95 | margin: 0 0 1rem; 96 | } 97 | 98 | b, 99 | strong { 100 | font-weight: bolder; 101 | } 102 | 103 | small { 104 | font-size: 80%; 105 | } 106 | 107 | sub, 108 | sup { 109 | position: relative; 110 | font-size: 75%; 111 | line-height: 0; 112 | vertical-align: baseline; 113 | } 114 | 115 | sub { 116 | bottom: -.25em; 117 | } 118 | 119 | sup { 120 | top: -.5em; 121 | } 122 | 123 | a { 124 | color: #007bff; 125 | text-decoration: none; 126 | background-color: transparent; 127 | } 128 | 129 | a:hover { 130 | color: #0056b3; 131 | text-decoration: underline; 132 | } 133 | 134 | a:not([href]):not([class]) { 135 | color: inherit; 136 | text-decoration: none; 137 | } 138 | 139 | a:not([href]):not([class]):hover { 140 | color: inherit; 141 | text-decoration: none; 142 | } 143 | 144 | pre, 145 | code, 146 | kbd, 147 | samp { 148 | font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; 149 | font-size: 1em; 150 | } 151 | 152 | pre { 153 | margin-top: 0; 154 | margin-bottom: 1rem; 155 | overflow: auto; 156 | -ms-overflow-style: scrollbar; 157 | } 158 | 159 | figure { 160 | margin: 0 0 1rem; 161 | } 162 | 163 | img { 164 | vertical-align: middle; 165 | border-style: none; 166 | } 167 | 168 | svg { 169 | overflow: hidden; 170 | vertical-align: middle; 171 | } 172 | 173 | table { 174 | border-collapse: collapse; 175 | } 176 | 177 | caption { 178 | padding-top: 0.75rem; 179 | padding-bottom: 0.75rem; 180 | color: #6c757d; 181 | text-align: left; 182 | caption-side: bottom; 183 | } 184 | 185 | th { 186 | text-align: inherit; 187 | text-align: -webkit-match-parent; 188 | } 189 | 190 | label { 191 | display: inline-block; 192 | margin-bottom: 0.5rem; 193 | } 194 | 195 | button { 196 | border-radius: 0; 197 | } 198 | 199 | button:focus { 200 | outline: 1px dotted; 201 | outline: 5px auto -webkit-focus-ring-color; 202 | } 203 | 204 | input, 205 | button, 206 | select, 207 | optgroup, 208 | textarea { 209 | margin: 0; 210 | font-family: inherit; 211 | font-size: inherit; 212 | line-height: inherit; 213 | } 214 | 215 | button, 216 | input { 217 | overflow: visible; 218 | } 219 | 220 | button, 221 | select { 222 | text-transform: none; 223 | } 224 | 225 | [role="button"] { 226 | cursor: pointer; 227 | } 228 | 229 | select { 230 | word-wrap: normal; 231 | } 232 | 233 | button, 234 | [type="button"], 235 | [type="reset"], 236 | [type="submit"] { 237 | -webkit-appearance: button; 238 | } 239 | 240 | button:not(:disabled), 241 | [type="button"]:not(:disabled), 242 | [type="reset"]:not(:disabled), 243 | [type="submit"]:not(:disabled) { 244 | cursor: pointer; 245 | } 246 | 247 | button::-moz-focus-inner, 248 | [type="button"]::-moz-focus-inner, 249 | [type="reset"]::-moz-focus-inner, 250 | [type="submit"]::-moz-focus-inner { 251 | padding: 0; 252 | border-style: none; 253 | } 254 | 255 | input[type="radio"], 256 | input[type="checkbox"] { 257 | box-sizing: border-box; 258 | padding: 0; 259 | } 260 | 261 | textarea { 262 | overflow: auto; 263 | resize: vertical; 264 | } 265 | 266 | fieldset { 267 | min-width: 0; 268 | padding: 0; 269 | margin: 0; 270 | border: 0; 271 | } 272 | 273 | legend { 274 | display: block; 275 | width: 100%; 276 | max-width: 100%; 277 | padding: 0; 278 | margin-bottom: .5rem; 279 | font-size: 1.5rem; 280 | line-height: inherit; 281 | color: inherit; 282 | white-space: normal; 283 | } 284 | 285 | progress { 286 | vertical-align: baseline; 287 | } 288 | 289 | [type="number"]::-webkit-inner-spin-button, 290 | [type="number"]::-webkit-outer-spin-button { 291 | height: auto; 292 | } 293 | 294 | [type="search"] { 295 | outline-offset: -2px; 296 | -webkit-appearance: none; 297 | } 298 | 299 | [type="search"]::-webkit-search-decoration { 300 | -webkit-appearance: none; 301 | } 302 | 303 | ::-webkit-file-upload-button { 304 | font: inherit; 305 | -webkit-appearance: button; 306 | } 307 | 308 | output { 309 | display: inline-block; 310 | } 311 | 312 | summary { 313 | display: list-item; 314 | cursor: pointer; 315 | } 316 | 317 | template { 318 | display: none; 319 | } 320 | 321 | [hidden] { 322 | display: none !important; 323 | } 324 | /*# sourceMappingURL=bootstrap-reboot.css.map */ -------------------------------------------------------------------------------- /scss/bootstrap/scss/bootstrap-reboot.css.map: -------------------------------------------------------------------------------- 1 | { 2 | "version": 3, 3 | "mappings": "AAAA;;;;;;GAMG;AoCYH,AAAA,CAAC;AACD,CAAC,AAAA,QAAQ;AACT,CAAC,AAAA,OAAO,CAAC;EACP,UAAU,EAAE,UAAU;CACvB;;AAED,AAAA,IAAI,CAAC;EACH,WAAW,EAAE,UAAU;EACvB,WAAW,EAAE,IAAI;EACjB,wBAAwB,EAAE,IAAI;EAC9B,2BAA2B,ElCXlB,gBAAI;CkCYd;;AAKD,AAAA,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,CAAC;EAC7E,OAAO,EAAE,KAAK;CACf;;AASD,AAAA,IAAI,CAAC;EACH,MAAM,EAAE,CAAC;EACT,WAAW,ElCqOiB,aAAa,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,EAAE,gBAAgB,EAAE,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,kBAAkB;EErJ7M,SAAS,EAtCE,IAAC;EgCxChB,WAAW,ElC8OiB,GAAG;EkC7O/B,WAAW,ElCkPiB,GAAG;EkCjP/B,KAAK,ElCnCI,OAAO;EkCoChB,UAAU,EAAE,IAAI;EAChB,gBAAgB,ElC9CP,IAAI;CkC+Cd;;CAWD,AAAA,AAAA,QAAC,CAAS,IAAI,AAAb,CAAc,MAAM,AAAA,IAAK,CAAA,cAAc,EAAE;EACxC,OAAO,EAAE,YAAY;CACtB;;AAQD,AAAA,EAAE,CAAC;EACD,UAAU,EAAE,WAAW;EACvB,MAAM,EAAE,CAAC;EACT,QAAQ,EAAE,OAAO;CAClB;;AAYD,AAAA,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;EACrB,UAAU,EAAE,CAAC;EACb,aAAa,ElCgNe,MAAW;CkC/MxC;;AAMD,AAAA,CAAC,CAAC;EACA,UAAU,EAAE,CAAC;EACb,aAAa,ElCoFa,IAAI;CkCnF/B;;AAUD,AAAA,IAAI,CAAA,AAAA,KAAC,AAAA;AACL,IAAI,CAAA,AAAA,mBAAC,AAAA,EAAqB;EACxB,eAAe,EAAE,SAAS;EAC1B,eAAe,EAAE,gBAAgB;EACjC,MAAM,EAAE,IAAI;EACZ,aAAa,EAAE,CAAC;EAChB,wBAAwB,EAAE,IAAI;CAC/B;;AAED,AAAA,OAAO,CAAC;EACN,aAAa,EAAE,IAAI;EACnB,UAAU,EAAE,MAAM;EAClB,WAAW,EAAE,OAAO;CACrB;;AAED,AAAA,EAAE;AACF,EAAE;AACF,EAAE,CAAC;EACD,UAAU,EAAE,CAAC;EACb,aAAa,EAAE,IAAI;CACpB;;AAED,AAAA,EAAE,CAAC,EAAE;AACL,EAAE,CAAC,EAAE;AACL,EAAE,CAAC,EAAE;AACL,EAAE,CAAC,EAAE,CAAC;EACJ,aAAa,EAAE,CAAC;CACjB;;AAED,AAAA,EAAE,CAAC;EACD,WAAW,ElCiJiB,GAAG;CkChJhC;;AAED,AAAA,EAAE,CAAC;EACD,aAAa,EAAE,KAAK;EACpB,WAAW,EAAE,CAAC;CACf;;AAED,AAAA,UAAU,CAAC;EACT,MAAM,EAAE,QAAQ;CACjB;;AAED,AAAA,CAAC;AACD,MAAM,CAAC;EACL,WAAW,ElCoIiB,MAAM;CkCnInC;;AAED,AAAA,KAAK,CAAC;EhCxFF,SAAS,EAAC,GAAC;CgC0Fd;;AAOD,AAAA,GAAG;AACH,GAAG,CAAC;EACF,QAAQ,EAAE,QAAQ;EhCnGhB,SAAS,EAAC,GAAC;EgCqGb,WAAW,EAAE,CAAC;EACd,cAAc,EAAE,QAAQ;CACzB;;AAED,AAAA,GAAG,CAAC;EAAE,MAAM,EAAE,MAAM;CAAI;;AACxB,AAAA,GAAG,CAAC;EAAE,GAAG,EAAE,KAAK;CAAI;;AAOpB,AAAA,CAAC,CAAC;EACA,KAAK,ElCvJG,OAAO;EkCwJf,eAAe,ElCXyB,IAAI;EkCY5C,gBAAgB,EAAE,WAAW;CAM9B;;AATD,A7B7KE,C6B6KD,A7B7KE,MAAM,CAAC;E6BmLN,KAAK,ElCdiC,OAAwB;EkCe9D,eAAe,ElCduB,SAAS;CKtK3B;;A6B6LxB,AAAA,CAAC,AAAA,IAAK,EAAA,AAAA,IAAC,AAAA,EAAM,IAAK,EAAA,AAAA,KAAC,AAAA,GAAQ;EACzB,KAAK,EAAE,OAAO;EACd,eAAe,EAAE,IAAI;CAMtB;;AARD,A7B7LE,C6B6LD,AAAA,IAAK,EAAA,AAAA,IAAC,AAAA,EAAM,IAAK,EAAA,AAAA,KAAC,AAAA,E7B7LhB,MAAM,CAAC;E6BkMN,KAAK,EAAE,OAAO;EACd,eAAe,EAAE,IAAI;C7BnMD;;A6B4MxB,AAAA,GAAG;AACH,IAAI;AACJ,GAAG;AACH,IAAI,CAAC;EACH,WAAW,ElCyDiB,cAAc,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,iBAAiB,EAAE,aAAa,EAAE,SAAS;EE7M9G,SAAS,EAAC,GAAC;CgCsJd;;AAED,AAAA,GAAG,CAAC;EAEF,UAAU,EAAE,CAAC;EAEb,aAAa,EAAE,IAAI;EAEnB,QAAQ,EAAE,IAAI;EAGd,kBAAkB,EAAE,SAAS;CAC9B;;AAOD,AAAA,MAAM,CAAC;EAEL,MAAM,EAAE,QAAQ;CACjB;;AAOD,AAAA,GAAG,CAAC;EACF,cAAc,EAAE,MAAM;EACtB,YAAY,EAAE,IAAI;CACnB;;AAED,AAAA,GAAG,CAAC;EAGF,QAAQ,EAAE,MAAM;EAChB,cAAc,EAAE,MAAM;CACvB;;AAOD,AAAA,KAAK,CAAC;EACJ,eAAe,EAAE,QAAQ;CAC1B;;AAED,AAAA,OAAO,CAAC;EACN,WAAW,ElC6EiB,OAAM;EkC5ElC,cAAc,ElC4Ec,OAAM;EkC3ElC,KAAK,ElCtQI,OAAO;EkCuQhB,UAAU,EAAE,IAAI;EAChB,YAAY,EAAE,MAAM;CACrB;;AAMD,AAAA,EAAE,CAAC;EAED,UAAU,EAAE,OAAO;EACnB,UAAU,EAAE,oBAAoB;CACjC;;AAOD,AAAA,KAAK,CAAC;EAEJ,OAAO,EAAE,YAAY;EACrB,aAAa,ElC2JyB,MAAK;CkC1J5C;;AAKD,AAAA,MAAM,CAAC;EAEL,aAAa,EAAE,CAAC;CACjB;;AAMD,AAAA,MAAM,AAAA,MAAM,CAAC;EACX,OAAO,EAAE,UAAU;EACnB,OAAO,EAAE,iCAAiC;CAC3C;;AAED,AAAA,KAAK;AACL,MAAM;AACN,MAAM;AACN,QAAQ;AACR,QAAQ,CAAC;EACP,MAAM,EAAE,CAAC;EACT,WAAW,EAAE,OAAO;EhC5PlB,SAAS,EAAC,OAAC;EgC8Pb,WAAW,EAAE,OAAO;CACrB;;AAED,AAAA,MAAM;AACN,KAAK,CAAC;EACJ,QAAQ,EAAE,OAAO;CAClB;;AAED,AAAA,MAAM;AACN,MAAM,CAAC;EACL,cAAc,EAAE,IAAI;CACrB;;CAKD,AAAA,AAAA,IAAC,CAAK,QAAQ,AAAb,EAAe;EACd,MAAM,EAAE,OAAO;CAChB;;AAKD,AAAA,MAAM,CAAC;EACL,SAAS,EAAE,MAAM;CAClB;;AAMD,AAAA,MAAM;CACN,AAAA,IAAC,CAAK,QAAQ,AAAb;CACD,AAAA,IAAC,CAAK,OAAO,AAAZ;CACD,AAAA,IAAC,CAAK,QAAQ,AAAb,EAAe;EACd,kBAAkB,EAAE,MAAM;CAC3B;;AAIC,AAIE,MAJI,AAIH,IAAK,CAAA,SAAS;CAHjB,AAAA,IAAC,CAAK,QAAQ,AAAb,CAGE,IAAK,CAAA,SAAS;CAFjB,AAAA,IAAC,CAAK,OAAO,AAAZ,CAEE,IAAK,CAAA,SAAS;CADjB,AAAA,IAAC,CAAK,QAAQ,AAAb,CACE,IAAK,CAAA,SAAS,EAAE;EACf,MAAM,EAAE,OAAO;CAChB;;AAKL,AAAA,MAAM,AAAA,kBAAkB;CACxB,AAAA,IAAC,CAAK,QAAQ,AAAb,CAAc,kBAAkB;CACjC,AAAA,IAAC,CAAK,OAAO,AAAZ,CAAa,kBAAkB;CAChC,AAAA,IAAC,CAAK,QAAQ,AAAb,CAAc,kBAAkB,CAAC;EAChC,OAAO,EAAE,CAAC;EACV,YAAY,EAAE,IAAI;CACnB;;AAED,AAAA,KAAK,CAAA,AAAA,IAAC,CAAK,OAAO,AAAZ;AACN,KAAK,CAAA,AAAA,IAAC,CAAK,UAAU,AAAf,EAAiB;EACrB,UAAU,EAAE,UAAU;EACtB,OAAO,EAAE,CAAC;CACX;;AAGD,AAAA,QAAQ,CAAC;EACP,QAAQ,EAAE,IAAI;EAEd,MAAM,EAAE,QAAQ;CACjB;;AAED,AAAA,QAAQ,CAAC;EAMP,SAAS,EAAE,CAAC;EAEZ,OAAO,EAAE,CAAC;EACV,MAAM,EAAE,CAAC;EACT,MAAM,EAAE,CAAC;CACV;;AAID,AAAA,MAAM,CAAC;EACL,OAAO,EAAE,KAAK;EACd,KAAK,EAAE,IAAI;EACX,SAAS,EAAE,IAAI;EACf,OAAO,EAAE,CAAC;EACV,aAAa,EAAE,KAAK;EhCnShB,SAAS,EAtCE,MAAC;EgC2UhB,WAAW,EAAE,OAAO;EACpB,KAAK,EAAE,OAAO;EACd,WAAW,EAAE,MAAM;CACpB;;AAED,AAAA,QAAQ,CAAC;EACP,cAAc,EAAE,QAAQ;CACzB;;CAGD,AAAA,AAAA,IAAC,CAAK,QAAQ,AAAb,CAAc,2BAA2B;CAC1C,AAAA,IAAC,CAAK,QAAQ,AAAb,CAAc,2BAA2B,CAAC;EACzC,MAAM,EAAE,IAAI;CACb;;CAED,AAAA,AAAA,IAAC,CAAK,QAAQ,AAAb,EAAe;EAKd,cAAc,EAAE,IAAI;EACpB,kBAAkB,EAAE,IAAI;CACzB;;CAMD,AAAA,AAAA,IAAC,CAAK,QAAQ,AAAb,CAAc,2BAA2B,CAAC;EACzC,kBAAkB,EAAE,IAAI;CACzB;;AAOD,AAAA,4BAA4B,CAAC;EAC3B,IAAI,EAAE,OAAO;EACb,kBAAkB,EAAE,MAAM;CAC3B;;AAMD,AAAA,MAAM,CAAC;EACL,OAAO,EAAE,YAAY;CACtB;;AAED,AAAA,OAAO,CAAC;EACN,OAAO,EAAE,SAAS;EAClB,MAAM,EAAE,OAAO;CAChB;;AAED,AAAA,QAAQ,CAAC;EACP,OAAO,EAAE,IAAI;CACd;;CAID,AAAA,AAAA,MAAC,AAAA,EAAQ;EACP,OAAO,EAAE,eAAe;CACzB", 4 | "sources": [ 5 | "bootstrap-reboot.scss", 6 | "_functions.scss", 7 | "_variables.scss", 8 | "_mixins.scss", 9 | "vendor/_rfs.scss", 10 | "mixins/_deprecate.scss", 11 | "mixins/_breakpoints.scss", 12 | "mixins/_hover.scss", 13 | "mixins/_image.scss", 14 | "mixins/_badge.scss", 15 | "mixins/_resize.scss", 16 | "mixins/_screen-reader.scss", 17 | "mixins/_size.scss", 18 | "mixins/_reset-text.scss", 19 | "mixins/_text-emphasis.scss", 20 | "mixins/_text-hide.scss", 21 | "mixins/_text-truncate.scss", 22 | "mixins/_visibility.scss", 23 | "mixins/_alert.scss", 24 | "mixins/_buttons.scss", 25 | "mixins/_caret.scss", 26 | "mixins/_pagination.scss", 27 | "mixins/_lists.scss", 28 | "mixins/_list-group.scss", 29 | "mixins/_nav-divider.scss", 30 | "mixins/_forms.scss", 31 | "mixins/_table-row.scss", 32 | "mixins/_background-variant.scss", 33 | "mixins/_border-radius.scss", 34 | "mixins/_box-shadow.scss", 35 | "mixins/_gradients.scss", 36 | "mixins/_transition.scss", 37 | "mixins/_clearfix.scss", 38 | "mixins/_grid-framework.scss", 39 | "mixins/_grid.scss", 40 | "mixins/_float.scss", 41 | "_reboot.scss" 42 | ], 43 | "names": [], 44 | "file": "bootstrap-reboot.css" 45 | } -------------------------------------------------------------------------------- /scss/bootstrap/scss/vendor/_rfs.scss: -------------------------------------------------------------------------------- 1 | // stylelint-disable property-blacklist, scss/dollar-variable-default 2 | 3 | // SCSS RFS mixin 4 | // 5 | // Automated font-resizing 6 | // 7 | // See https://github.com/twbs/rfs 8 | 9 | // Configuration 10 | 11 | // Base font size 12 | $rfs-base-font-size: 1.25rem !default; 13 | $rfs-font-size-unit: rem !default; 14 | 15 | // Breakpoint at where font-size starts decreasing if screen width is smaller 16 | $rfs-breakpoint: 1200px !default; 17 | $rfs-breakpoint-unit: px !default; 18 | 19 | // Resize font-size based on screen height and width 20 | $rfs-two-dimensional: false !default; 21 | 22 | // Factor of decrease 23 | $rfs-factor: 10 !default; 24 | 25 | @if type-of($rfs-factor) != "number" or $rfs-factor <= 1 { 26 | @error "`#{$rfs-factor}` is not a valid $rfs-factor, it must be greater than 1."; 27 | } 28 | 29 | // Generate enable or disable classes. Possibilities: false, "enable" or "disable" 30 | $rfs-class: false !default; 31 | 32 | // 1 rem = $rfs-rem-value px 33 | $rfs-rem-value: 16 !default; 34 | 35 | // Safari iframe resize bug: https://github.com/twbs/rfs/issues/14 36 | $rfs-safari-iframe-resize-bug-fix: false !default; 37 | 38 | // Disable RFS by setting $enable-responsive-font-sizes to false 39 | $enable-responsive-font-sizes: true !default; 40 | 41 | // Cache $rfs-base-font-size unit 42 | $rfs-base-font-size-unit: unit($rfs-base-font-size); 43 | 44 | // Remove px-unit from $rfs-base-font-size for calculations 45 | @if $rfs-base-font-size-unit == "px" { 46 | $rfs-base-font-size: $rfs-base-font-size / ($rfs-base-font-size * 0 + 1); 47 | } 48 | @else if $rfs-base-font-size-unit == "rem" { 49 | $rfs-base-font-size: $rfs-base-font-size / ($rfs-base-font-size * 0 + 1 / $rfs-rem-value); 50 | } 51 | 52 | // Cache $rfs-breakpoint unit to prevent multiple calls 53 | $rfs-breakpoint-unit-cache: unit($rfs-breakpoint); 54 | 55 | // Remove unit from $rfs-breakpoint for calculations 56 | @if $rfs-breakpoint-unit-cache == "px" { 57 | $rfs-breakpoint: $rfs-breakpoint / ($rfs-breakpoint * 0 + 1); 58 | } 59 | @else if $rfs-breakpoint-unit-cache == "rem" or $rfs-breakpoint-unit-cache == "em" { 60 | $rfs-breakpoint: $rfs-breakpoint / ($rfs-breakpoint * 0 + 1 / $rfs-rem-value); 61 | } 62 | 63 | // Responsive font-size mixin 64 | @mixin rfs($fs, $important: false) { 65 | // Cache $fs unit 66 | $fs-unit: if(type-of($fs) == "number", unit($fs), false); 67 | 68 | // Add !important suffix if needed 69 | $rfs-suffix: if($important, " !important", ""); 70 | 71 | // If $fs isn't a number (like inherit) or $fs has a unit (not px or rem, like 1.5em) or $ is 0, just print the value 72 | @if not $fs-unit or $fs-unit != "" and $fs-unit != "px" and $fs-unit != "rem" or $fs == 0 { 73 | font-size: #{$fs}#{$rfs-suffix}; 74 | } 75 | @else { 76 | // Variables for storing static and fluid rescaling 77 | $rfs-static: null; 78 | $rfs-fluid: null; 79 | 80 | // Remove px-unit from $fs for calculations 81 | @if $fs-unit == "px" { 82 | $fs: $fs / ($fs * 0 + 1); 83 | } 84 | @else if $fs-unit == "rem" { 85 | $fs: $fs / ($fs * 0 + 1 / $rfs-rem-value); 86 | } 87 | 88 | // Set default font-size 89 | @if $rfs-font-size-unit == rem { 90 | $rfs-static: #{$fs / $rfs-rem-value}rem#{$rfs-suffix}; 91 | } 92 | @else if $rfs-font-size-unit == px { 93 | $rfs-static: #{$fs}px#{$rfs-suffix}; 94 | } 95 | @else { 96 | @error "`#{$rfs-font-size-unit}` is not a valid unit for $rfs-font-size-unit. Use `px` or `rem`."; 97 | } 98 | 99 | // Only add media query if font-size is bigger as the minimum font-size 100 | // If $rfs-factor == 1, no rescaling will take place 101 | @if $fs > $rfs-base-font-size and $enable-responsive-font-sizes { 102 | $min-width: null; 103 | $variable-unit: null; 104 | 105 | // Calculate minimum font-size for given font-size 106 | $fs-min: $rfs-base-font-size + ($fs - $rfs-base-font-size) / $rfs-factor; 107 | 108 | // Calculate difference between given font-size and minimum font-size for given font-size 109 | $fs-diff: $fs - $fs-min; 110 | 111 | // Base font-size formatting 112 | // No need to check if the unit is valid, because we did that before 113 | $min-width: if($rfs-font-size-unit == rem, #{$fs-min / $rfs-rem-value}rem, #{$fs-min}px); 114 | 115 | // If two-dimensional, use smallest of screen width and height 116 | $variable-unit: if($rfs-two-dimensional, vmin, vw); 117 | 118 | // Calculate the variable width between 0 and $rfs-breakpoint 119 | $variable-width: #{$fs-diff * 100 / $rfs-breakpoint}#{$variable-unit}; 120 | 121 | // Set the calculated font-size. 122 | $rfs-fluid: calc(#{$min-width} + #{$variable-width}) #{$rfs-suffix}; 123 | } 124 | 125 | // Rendering 126 | @if $rfs-fluid == null { 127 | // Only render static font-size if no fluid font-size is available 128 | font-size: $rfs-static; 129 | } 130 | @else { 131 | $mq-value: null; 132 | 133 | // RFS breakpoint formatting 134 | @if $rfs-breakpoint-unit == em or $rfs-breakpoint-unit == rem { 135 | $mq-value: #{$rfs-breakpoint / $rfs-rem-value}#{$rfs-breakpoint-unit}; 136 | } 137 | @else if $rfs-breakpoint-unit == px { 138 | $mq-value: #{$rfs-breakpoint}px; 139 | } 140 | @else { 141 | @error "`#{$rfs-breakpoint-unit}` is not a valid unit for $rfs-breakpoint-unit. Use `px`, `em` or `rem`."; 142 | } 143 | 144 | @if $rfs-class == "disable" { 145 | // Adding an extra class increases specificity, 146 | // which prevents the media query to override the font size 147 | &, 148 | .disable-responsive-font-size &, 149 | &.disable-responsive-font-size { 150 | font-size: $rfs-static; 151 | } 152 | } 153 | @else { 154 | font-size: $rfs-static; 155 | } 156 | 157 | @if $rfs-two-dimensional { 158 | @media (max-width: #{$mq-value}), (max-height: #{$mq-value}) { 159 | @if $rfs-class == "enable" { 160 | .enable-responsive-font-size &, 161 | &.enable-responsive-font-size { 162 | font-size: $rfs-fluid; 163 | } 164 | } 165 | @else { 166 | font-size: $rfs-fluid; 167 | } 168 | 169 | @if $rfs-safari-iframe-resize-bug-fix { 170 | // stylelint-disable-next-line length-zero-no-unit 171 | min-width: 0vw; 172 | } 173 | } 174 | } 175 | @else { 176 | @media (max-width: #{$mq-value}) { 177 | @if $rfs-class == "enable" { 178 | .enable-responsive-font-size &, 179 | &.enable-responsive-font-size { 180 | font-size: $rfs-fluid; 181 | } 182 | } 183 | @else { 184 | font-size: $rfs-fluid; 185 | } 186 | 187 | @if $rfs-safari-iframe-resize-bug-fix { 188 | // stylelint-disable-next-line length-zero-no-unit 189 | min-width: 0vw; 190 | } 191 | } 192 | } 193 | } 194 | } 195 | } 196 | 197 | // The font-size & responsive-font-size mixin uses RFS to rescale font sizes 198 | @mixin font-size($fs, $important: false) { 199 | @include rfs($fs, $important); 200 | } 201 | 202 | @mixin responsive-font-size($fs, $important: false) { 203 | @include rfs($fs, $important); 204 | } 205 | -------------------------------------------------------------------------------- /feature.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Homrani Sport 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 46 | 47 | 48 | 49 | 50 | 60 | 61 | 62 | 63 | 64 |
65 |
66 |

Why Choose Us?

67 |

Benifits of Joining Our GYM

68 |
69 |
70 |
71 |
72 |
73 | Image 74 | 75 |
76 |
77 |

Videos Instruction

78 |

Are you unsure about how to weld a plastic conveyor belt together? Do you need help with inserting rods, tubes or ELT connectors into a rod network belt? We have a number of video clips that show you exactly how such complex procedures can be best completed.

79 |
80 |
81 |
82 |
83 |
84 |
85 | Image 86 | 87 |
88 |
89 |

Training Calendar

90 |

we create an effective employee training program is by simply planning their annual training calendar in advance.

91 |
92 |
93 |
94 | 95 |
96 |
97 |
98 | Image 99 | 100 |
101 |
102 |

Community Support

103 |

We Feel Proud And Glad To Say That With The Support Of homrani sport Gym , Our Members, Employees, Vendor Partners & Franchisee Partners The Brand Has Grown Leaps And Bounds And Has Been Able To Contribute To The Betterment Of The Nation. We Are Working Towards #MakingIndiaFit And We Are Hopeful Of Spreading Fitness Awareness To As Many People As Possible

104 |
105 |
106 |
107 |
108 |
109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | -------------------------------------------------------------------------------- /contact.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Homrani Sport 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 46 | 47 | 48 | 49 | 59 | 60 | 61 | 62 | 63 |
64 |
65 |

Get In Touch

66 |

Email Us For Any Query

67 |
68 |
69 |
70 | 71 |

Address

72 |

P5FR+G2X,Habib thamir la gare,beja

73 |
74 |
75 | 76 |

Phone

77 |

+216 21156135

78 |
79 |
80 | 81 |

Email

82 |

homranisport@gmail.com

83 |
84 |
85 |
86 |
87 | 88 |
89 |
90 |
91 |
92 |
93 |
94 | 95 |

96 |
97 |
98 | 99 |

100 |
101 |
102 | 103 |

104 |
105 |
106 | 107 |

108 |
109 |
110 | 111 |
112 |
113 |
114 |
115 |
116 |
117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | 186 | -------------------------------------------------------------------------------- /about.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Homrani Sport 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 46 | 47 | 48 | 49 | 50 | 60 | 61 | 62 | 63 | 64 |
65 |
66 |
67 | Image 68 |
69 |
70 |

30 Years Experience

71 |

We Have Been Doing A Lot Of Corporate & Community Wellness Programs, Reaching Out To People Who Want To Get Fitter But Cannot Make It To The Gym. We Have Focused On The Overall Experience. It Is Not Just About Getting Into A Particular Shape But It’s All About FITNESS, A Healthy Lifestyle, And, A Complete Transformation.
72 | Set your goals high, don’t stop till you get there.”

73 | 74 | 75 |
76 |
77 |
78 | 79 | 80 | 81 | 82 |
83 |
84 |
85 |
86 | 87 |
88 |

Progression

89 |

We Are Hopeful Of Spreading Fitness Awareness To As Many People As Possible 90 |

91 |
92 |
93 |
94 |
95 |
96 | 97 |
98 |

Workout

99 |

We've broken apart our workouts by body part targeted, length, workout type, and equipment needed—and this is just the beginning 100 |

101 |
102 |
103 |
104 |
105 |
106 | 107 |
108 |

Nutrition

109 |

In order to maximize your results from the gym, you must focus on your diet, as eating the wrong foods can be detrimental to your bodybuilding goals 110 |

111 |
112 |
113 |
114 |
115 |
116 | 117 | 118 | 119 | 120 | 121 |
122 |
123 |

Our Trainers

124 |

Meet Our Expert Trainers

125 |
126 |
127 |
128 |
129 | 130 | 131 |
132 |

Bechir

133 |

Trainer

134 |
135 |
136 |
137 |
138 |
139 | 140 | 141 |
142 |

Raslen

143 |

Trainer

144 |
145 |
146 |
147 |
148 |
149 | 150 | 151 |
152 |

Rami

153 |

Trainer

154 |
155 |
156 |
157 |
158 |
159 | 160 | 161 |
162 |

Fadi

163 |

Trainer

164 |
165 |
166 |
167 |
168 |
169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 215 | 216 | 217 | 218 | 219 | 220 | 221 | 222 | 223 | 224 | 225 | 226 | 227 | 228 | 229 | 230 | 231 | 232 | 233 | 234 | 235 | 236 | 237 | -------------------------------------------------------------------------------- /mail/jqBootstrapValidation.min.js: -------------------------------------------------------------------------------- 1 | !function(a){var e=[],t={options:{prependExistingHelpBlock:!1,sniffHtml:!0,preventSubmit:!0,submitError:!1,submitSuccess:!1,semanticallyStrict:!1,autoAdd:{helpBlocks:!0},filter:function(){return!0}},methods:{init:function(o){var r=a.extend(!0,{},t);r.options=a.extend(!0,r.options,o);var l=a.unique(this.map(function(){return a(this).parents("form")[0]}).toArray());return a(l).bind("submit",function(e){var t=a(this),i=0,n=t.find("input,textarea,select").not("[type=submit],[type=image]").filter(r.options.filter);n.trigger("submit.validation").trigger("validationLostFocus.validation"),n.each(function(e,t){var n=a(t).parents(".control-group").first();n.hasClass("warning")&&(n.removeClass("warning").addClass("error"),i++)}),n.trigger("validationLostFocus.validation"),i?(r.options.preventSubmit&&e.preventDefault(),t.addClass("error"),a.isFunction(r.options.submitError)&&r.options.submitError(t,e,n.jqBootstrapValidation("collectErrors",!0))):(t.removeClass("error"),a.isFunction(r.options.submitSuccess)&&r.options.submitSuccess(t,e))}),this.each(function(){var t=a(this),o=t.parents(".control-group").first(),l=o.find(".help-block").first(),s=t.parents("form").first(),d=[];if(!l.length&&r.options.autoAdd&&r.options.autoAdd.helpBlocks&&(l=a('
'),o.find(".controls").append(l),e.push(l[0])),r.options.sniffHtml){var c="";if(void 0!==t.attr("pattern")&&(c="Not in the expected format\x3c!-- data-validation-pattern-message to override --\x3e",t.data("validationPatternMessage")&&(c=t.data("validationPatternMessage")),t.data("validationPatternMessage",c),t.data("validationPatternRegex",t.attr("pattern"))),void 0!==t.attr("max")||void 0!==t.attr("aria-valuemax")){var v=void 0!==t.attr("max")?t.attr("max"):t.attr("aria-valuemax");c="Too high: Maximum of '"+v+"'\x3c!-- data-validation-max-message to override --\x3e",t.data("validationMaxMessage")&&(c=t.data("validationMaxMessage")),t.data("validationMaxMessage",c),t.data("validationMaxMax",v)}if(void 0!==t.attr("min")||void 0!==t.attr("aria-valuemin")){var u=void 0!==t.attr("min")?t.attr("min"):t.attr("aria-valuemin");c="Too low: Minimum of '"+u+"'\x3c!-- data-validation-min-message to override --\x3e",t.data("validationMinMessage")&&(c=t.data("validationMinMessage")),t.data("validationMinMessage",c),t.data("validationMinMin",u)}void 0!==t.attr("maxlength")&&(c="Too long: Maximum of '"+t.attr("maxlength")+"' characters\x3c!-- data-validation-maxlength-message to override --\x3e",t.data("validationMaxlengthMessage")&&(c=t.data("validationMaxlengthMessage")),t.data("validationMaxlengthMessage",c),t.data("validationMaxlengthMaxlength",t.attr("maxlength"))),void 0!==t.attr("minlength")&&(c="Too short: Minimum of '"+t.attr("minlength")+"' characters\x3c!-- data-validation-minlength-message to override --\x3e",t.data("validationMinlengthMessage")&&(c=t.data("validationMinlengthMessage")),t.data("validationMinlengthMessage",c),t.data("validationMinlengthMinlength",t.attr("minlength"))),void 0===t.attr("required")&&void 0===t.attr("aria-required")||(c=r.builtInValidators.required.message,t.data("validationRequiredMessage")&&(c=t.data("validationRequiredMessage")),t.data("validationRequiredMessage",c)),void 0!==t.attr("type")&&"number"===t.attr("type").toLowerCase()&&(c=r.builtInValidators.number.message,t.data("validationNumberMessage")&&(c=t.data("validationNumberMessage")),t.data("validationNumberMessage",c)),void 0!==t.attr("type")&&"email"===t.attr("type").toLowerCase()&&(c="Not a valid email address\x3c!-- data-validator-validemail-message to override --\x3e",t.data("validationValidemailMessage")?c=t.data("validationValidemailMessage"):t.data("validationEmailMessage")&&(c=t.data("validationEmailMessage")),t.data("validationValidemailMessage",c)),void 0!==t.attr("minchecked")&&(c="Not enough options checked; Minimum of '"+t.attr("minchecked")+"' required\x3c!-- data-validation-minchecked-message to override --\x3e",t.data("validationMincheckedMessage")&&(c=t.data("validationMincheckedMessage")),t.data("validationMincheckedMessage",c),t.data("validationMincheckedMinchecked",t.attr("minchecked"))),void 0!==t.attr("maxchecked")&&(c="Too many options checked; Maximum of '"+t.attr("maxchecked")+"' required\x3c!-- data-validation-maxchecked-message to override --\x3e",t.data("validationMaxcheckedMessage")&&(c=t.data("validationMaxcheckedMessage")),t.data("validationMaxcheckedMessage",c),t.data("validationMaxcheckedMaxchecked",t.attr("maxchecked")))}void 0!==t.data("validation")&&(d=t.data("validation").split(",")),a.each(t.data(),function(a,e){var t=a.replace(/([A-Z])/g,",$1").split(",");"validation"===t[0]&&t[1]&&d.push(t[1])});var m=d,g=[];do{a.each(d,function(a,e){d[a]=i(e)}),d=a.unique(d),g=[],a.each(m,function(e,n){if(void 0!==t.data("validation"+n+"Shortcut"))a.each(t.data("validation"+n+"Shortcut").split(","),function(a,e){g.push(e)});else if(r.builtInValidators[n.toLowerCase()]){var o=r.builtInValidators[n.toLowerCase()];"shortcut"===o.type.toLowerCase()&&a.each(o.shortcut.split(","),function(a,e){e=i(e),g.push(e),d.push(e)})}}),m=g}while(m.length>0);var h={};a.each(d,function(e,n){var o=t.data("validation"+n+"Message"),l=void 0!==o,s=!1;if(o=o||"'"+n+"' validation failed \x3c!-- Add attribute 'data-validation-"+n.toLowerCase()+"-message' to input to change this message --\x3e",a.each(r.validatorTypes,function(e,r){void 0===h[e]&&(h[e]=[]),s||void 0===t.data("validation"+n+i(r.name))||(h[e].push(a.extend(!0,{name:i(r.name),message:o},r.init(t,n))),s=!0)}),!s&&r.builtInValidators[n.toLowerCase()]){var d=a.extend(!0,{},r.builtInValidators[n.toLowerCase()]);l&&(d.message=o);var c=d.type.toLowerCase();"shortcut"===c?s=!0:a.each(r.validatorTypes,function(e,o){void 0===h[e]&&(h[e]=[]),s||c!==e.toLowerCase()||(t.data("validation"+n+i(o.name),d[o.name.toLowerCase()]),h[c].push(a.extend(d,o.init(t,n))),s=!0)})}s||a.error("Cannot find validation info for '"+n+"'")}),l.data("original-contents",l.data("original-contents")?l.data("original-contents"):l.html()),l.data("original-role",l.data("original-role")?l.data("original-role"):l.attr("role")),o.data("original-classes",o.data("original-clases")?o.data("original-classes"):o.attr("class")),t.data("original-aria-invalid",t.data("original-aria-invalid")?t.data("original-aria-invalid"):t.attr("aria-invalid")),t.bind("validation.validation",function(e,i){var o=n(t),l=[];return a.each(h,function(e,n){(o||o.length||i&&i.includeEmpty||r.validatorTypes[e].blockSubmit&&i&&i.submitting)&&a.each(n,function(a,i){r.validatorTypes[e].validate(t,o,i)&&l.push(i.message)})}),l}),t.bind("getValidators.validation",function(){return h}),t.bind("submit.validation",function(){return t.triggerHandler("change.validation",{submitting:!0})}),t.bind(["keyup","focus","blur","click","keydown","keypress","change"].join(".validation ")+".validation",function(e,i){var d=n(t),c=[];o.find("input,textarea,select").each(function(e,n){var o=c.length;if(a.each(a(n).triggerHandler("validation.validation",i),function(a,e){c.push(e)}),c.length>o)a(n).attr("aria-invalid","true");else{var r=t.data("original-aria-invalid");a(n).attr("aria-invalid",void 0!==r&&r)}}),s.find("input,select,textarea").not(t).not('[name="'+t.attr("name")+'"]').trigger("validationLostFocus.validation"),(c=a.unique(c.sort())).length?(o.removeClass("success error").addClass("warning"),r.options.semanticallyStrict&&1===c.length?l.html(c[0]+(r.options.prependExistingHelpBlock?l.data("original-contents"):"")):l.html('"+(r.options.prependExistingHelpBlock?l.data("original-contents"):""))):(o.removeClass("warning error success"),d.length>0&&o.addClass("success"),l.html(l.data("original-contents"))),"blur"===e.type&&o.removeClass("success")}),t.bind("validationLostFocus.validation",function(){o.removeClass("success")})})},destroy:function(){return this.each(function(){var t=a(this),i=t.parents(".control-group").first(),n=i.find(".help-block").first();t.unbind(".validation"),n.html(n.data("original-contents")),i.attr("class",i.data("original-classes")),t.attr("aria-invalid",t.data("original-aria-invalid")),n.attr("role",t.data("original-role")),e.indexOf(n[0])>-1&&n.remove()})},collectErrors:function(e){var t={};return this.each(function(e,i){var n=a(i),o=n.attr("name"),r=n.triggerHandler("validation.validation",{includeEmpty:!0});t[o]=a.extend(!0,r,t[o])}),a.each(t,function(a,e){0===e.length&&delete t[a]}),t},hasErrors:function(){var e=[];return this.each(function(t,i){e=e.concat(a(i).triggerHandler("getValidators.validation")?a(i).triggerHandler("validation.validation",{submitting:!0}):[])}),e.length>0},override:function(e){t=a.extend(!0,t,e)}},validatorTypes:{callback:{name:"callback",init:function(a,e){return{validatorName:e,callback:a.data("validation"+e+"Callback"),lastValue:a.val(),lastValid:!0,lastFinished:!0}},validate:function(a,e,t){if(t.lastValue===e&&t.lastFinished)return!t.lastValid;if(!0===t.lastFinished){t.lastValue=e,t.lastValid=!0,t.lastFinished=!1;var i=t,n=a;!function(a,e){for(var t=Array.prototype.slice.call(arguments).splice(2),i=a.split("."),n=i.pop(),o=0;o0&&t.negative)},blockSubmit:!0},match:{name:"match",init:function(a,e){var t=a.parents("form").first().find('[name="'+a.data("validation"+e+"Match")+'"]').first();return t.bind("validation.validation",function(){a.trigger("change.validation",{submitting:!0})}),{element:t}},validate:function(a,e,t){return e!==t.element.val()&&!t.negative||e===t.element.val()&&t.negative},blockSubmit:!0},max:{name:"max",init:function(a,e){return{max:a.data("validation"+e+"Max")}},validate:function(a,e,t){return parseFloat(e,10)>parseFloat(t.max,10)&&!t.negative||parseFloat(e,10)<=parseFloat(t.max,10)&&t.negative}},min:{name:"min",init:function(a,e){return{min:a.data("validation"+e+"Min")}},validate:function(a,e,t){return parseFloat(e)=parseFloat(t.min)&&t.negative}},maxlength:{name:"maxlength",init:function(a,e){return{maxlength:a.data("validation"+e+"Maxlength")}},validate:function(a,e,t){return e.length>t.maxlength&&!t.negative||e.length<=t.maxlength&&t.negative}},minlength:{name:"minlength",init:function(a,e){return{minlength:a.data("validation"+e+"Minlength")}},validate:function(a,e,t){return e.length=t.minlength&&t.negative}},maxchecked:{name:"maxchecked",init:function(a,e){var t=a.parents("form").first().find('[name="'+a.attr("name")+'"]');return t.bind("click.validation",function(){a.trigger("change.validation",{includeEmpty:!0})}),{maxchecked:a.data("validation"+e+"Maxchecked"),elements:t}},validate:function(a,e,t){return t.elements.filter(":checked").length>t.maxchecked&&!t.negative||t.elements.filter(":checked").length<=t.maxchecked&&t.negative},blockSubmit:!0},minchecked:{name:"minchecked",init:function(a,e){var t=a.parents("form").first().find('[name="'+a.attr("name")+'"]');return t.bind("click.validation",function(){a.trigger("change.validation",{includeEmpty:!0})}),{minchecked:a.data("validation"+e+"Minchecked"),elements:t}},validate:function(a,e,t){return t.elements.filter(":checked").length=t.minchecked&&t.negative},blockSubmit:!0}},builtInValidators:{email:{name:"Email",type:"shortcut",shortcut:"validemail"},validemail:{name:"Validemail",type:"regex",regex:"[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}",message:"Not a valid email address\x3c!-- data-validator-validemail-message to override --\x3e"},passwordagain:{name:"Passwordagain",type:"match",match:"password",message:"Does not match the given password\x3c!-- data-validator-paswordagain-message to override --\x3e"},positive:{name:"Positive",type:"shortcut",shortcut:"number,positivenumber"},negative:{name:"Negative",type:"shortcut",shortcut:"number,negativenumber"},number:{name:"Number",type:"regex",regex:"([+-]?\\d+(\\.\\d*)?([eE][+-]?[0-9]+)?)?",message:"Must be a number\x3c!-- data-validator-number-message to override --\x3e"},integer:{name:"Integer",type:"regex",regex:"[+-]?\\d+",message:"No decimal places allowed\x3c!-- data-validator-integer-message to override --\x3e"},positivenumber:{name:"Positivenumber",type:"min",min:0,message:"Must be a positive number\x3c!-- data-validator-positivenumber-message to override --\x3e"},negativenumber:{name:"Negativenumber",type:"max",max:0,message:"Must be a negative number\x3c!-- data-validator-negativenumber-message to override --\x3e"},required:{name:"Required",type:"required",message:"This is required\x3c!-- data-validator-required-message to override --\x3e"},checkone:{name:"Checkone",type:"minchecked",minchecked:1,message:"Check at least one option\x3c!-- data-validation-checkone-message to override --\x3e"}}},i=function(a){return a.toLowerCase().replace(/(^|\s)([a-z])/g,function(a,e,t){return e+t.toUpperCase()})},n=function(e){var t=e.val(),i=e.attr("type");return"checkbox"===i&&(t=e.is(":checked")?t:""),"radio"===i&&(t=a('input[name="'+e.attr("name")+'"]:checked').length>0?t:""),t};a.fn.jqBootstrapValidation=function(e){return t.methods[e]?t.methods[e].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof e&&e?(a.error("Method "+e+" does not exist on jQuery.jqBootstrapValidation"),null):t.methods.init.apply(this,arguments)},a.jqBootstrapValidation=function(e){a(":input").not("[type=image],[type=submit]").jqBootstrapValidation.apply(this,arguments)}}(jQuery); -------------------------------------------------------------------------------- /lib/flaticon/font/flaticon.html: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | 9 | 10 | 11 | Flaticon WebFont 12 | 13 | 14 | 15 | 303 | 304 | 305 | 306 | 307 |
308 | 356 | Font Demo 357 |
358 | 359 | 360 |
361 | 362 |

Instructions

363 | 364 |
    365 |
  • 366 | 1Copy the "Fonts" files and CSS files to your website CSS folder. 367 |
  • 368 |
  • 369 | 2Add the CSS link to your website source code on header. 370 | 371 | <head> 372 |
    ... 373 |
    <link rel="stylesheet" type="text/css" href="your_website_domain/css_root/flaticon.css"> 374 |
    ... 375 |
    </head> 376 |
    377 |
  • 378 | 379 |
  • 380 |

    381 | 3Use the icon class on "display: inline" elements: 382 |
    383 | Use example: <i class="flaticon-airplane49"></i> or <span class="flaticon-airplane49"></span> 384 |

  • 385 |
386 | 387 |
388 | 389 | 390 | 391 | 392 |
393 | 394 | 395 |
396 |
.flaticon-barbell
397 |
Author: Freepik
398 |
399 | 400 |
401 |
.flaticon-treadmill
402 |
Author: Freepik
403 |
404 | 405 |
406 |
.flaticon-six-pack
407 |
Author: Freepik
408 |
409 | 410 |
411 |
.flaticon-bodybuilding
412 |
Author: Smashicons
413 |
414 | 415 |
416 |
.flaticon-medal
417 |
Author: Prosymbols
418 |
419 | 420 |
421 |
.flaticon-muscular-bodybuilder-with-clock
422 |
Author: Freepik
423 |
424 | 425 |
426 |
.flaticon-trends
427 |
Author: monkik
428 |
429 | 430 |
431 |
.flaticon-weightlifting
432 |
Author: iconixar
433 |
434 | 435 |
436 |
.flaticon-training
437 |
Author: Smashicons
438 |
439 | 440 |
441 |
.flaticon-support
442 |
Author: Freepik
443 |
444 | 445 | 446 |
447 | 448 | 449 | 450 |
451 | 452 |
License and attribution:
Font generated by flaticon.com. 453 |
454 |
Copy the Attribution License:
455 | 456 | 458 | 459 |
460 | 461 |
462 | 463 |
Examples:
464 | 465 |
466 |

467 | 468 | <i class="flaticon-barbell"></i> 469 |

470 |
471 | 472 |
473 |

474 | 475 | <i class="flaticon-treadmill"></i> 476 |

477 |
478 | 479 |
480 |

481 | 482 | <i class="flaticon-six-pack"></i> 483 |

484 |
485 | 486 |
487 |

488 | 489 | <i class="flaticon-bodybuilding"></i> 490 |

491 |
492 | 493 |
494 | 495 | 496 | 497 | 501 | 502 | 503 | 504 | 505 | -------------------------------------------------------------------------------- /class.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Homrani Sport 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 46 | 47 | 48 | 49 | 50 | 60 | 61 | 62 | 63 | 64 |
65 |
66 |
67 |
68 | 69 |

Body Building

70 |

71 | If you like going to gym regularly, we are here to help you achieve your goals easily providing PERSONAL TRAINING AND GROUP TRAINING 72 |

73 | Contact Us 74 |
75 |
76 |
77 |
78 | 79 |

Kick Boxing

80 |

81 | Team work makes the dream work. Here at Go Hard kick boxing our motto is, “Each one teach one.” striving for nothing but greatness out of each and everyone who fight or train out of our Facility at Go Hard kick boxing 82 |

83 | Contact Us 84 |
85 |
86 |
87 |
88 | 89 | 90 | 91 | 92 |
93 |
94 |

Class Timetable

95 |

Working Hours and Class Time

96 |
97 |
98 | 112 |
113 |
114 |
115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 |
TimeMondayTuesdayWednesdayThursdayFridaySaturdaySunday
10.00 - 10.30
ABDOS
Fadi
ABDOS
Fadi
ABDOS
Fadi
Taekwondo
Hbib
16.00 - 17.00
Cross Training
Ahmed
Body Pump
Ahmed
Taekwondo
Hbib
Taekwondo
Hbib
Body Attack
Ahmed
18.00 - 19.00
Cross Training
Raslen
Girt Cardio
Raslen
19.00 - 20.00
Kick Boxing
Jalel
ABDOS
Ahmed
Kick Boxing
Jalel
ABDOS
Ahmed
Kick Boxing
Jalel
178 |
179 |
180 |
181 |
182 | 183 | 184 | 185 | 186 | 187 | 188 | 189 | 190 | 191 | 192 | 193 | 194 | 195 | 196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 209 | 210 | 211 | 212 | 213 | 214 | 215 | 216 | 217 | 218 | 219 | 220 | 221 | 222 | 223 | 224 | 225 | 226 | 227 | 228 | 229 | 230 | 231 | 232 | 233 | 234 | 235 | 236 | 237 | 238 | 239 | 240 | 241 | 242 | 243 |
TimeMondayTuesdayWednesdayThursdayFridaySaturdaySunday
10.00 - 10.30
ABDOS
Fadi
ABDOS
Fadi
ABDOS
Fadi
Taekwondo
Hbib
16.00 - 17.00
Cross Training
Ahmed
Body Pump
Ahmed
Taekwondo
Hbib
Taekwondo
Hbib
Body Attack
Ahmed
18.00 - 19.00
Cross Training
Raslen
Girt Cardio
Raslen
19.00 - 20.00
Kick Boxing
Jalel
ABDOS
Ahmed
Kick Boxing
Jalel
ABDOS
Ahmed
Kick Boxing
Jalel
244 |
245 |
246 |
247 |
248 | 249 | 250 | 251 | 252 | 253 | 254 | 255 | 256 | 257 | 258 | 259 | 260 | 261 | 262 | 263 | 264 | 265 | 266 | 267 | 268 | 269 | 270 | 271 | 272 | 273 | 274 | 275 | 276 | 277 | 278 | 279 | 280 | 281 | 282 | 283 | 284 | 285 | 286 | 287 | 288 | 289 | 290 | 291 | 292 | 293 | 294 | 295 | 296 | 297 | 298 | 299 | 300 | 301 | 302 | 303 | 304 | 305 | 306 | 307 | 308 | 309 | 310 |
TimeMondayTuesdayWednesdayThursdayFridaySaturdaySunday
10.00 - 10.30
ABDOS
Fadi
ABDOS
Fadi
ABDOS
Fadi
Taekwondo
Hbib
16.00 - 17.00
Cross Training
Ahmed
Body Pump
Ahmed
Taekwondo
Hbib
Taekwondo
Hbib
Body Attack
Ahmed
18.00 - 19.00
Cross Training
Raslen
Girt Cardio
Raslen
19.00 - 20.00
Kick Boxing
Jalel
ABDOS
Ahmed
Kick Boxing
Jalel
ABDOS
Ahmed
Kick Boxing
Jalel
311 |
312 |
313 |
314 |
315 | 316 | 317 | 318 | 319 | 320 | 321 | 322 | 323 | 324 | 325 | 326 | 327 | 328 | 329 | 330 | 331 | 332 | 333 | 334 | 335 | 336 | 337 | 338 | 339 | 340 | 341 | 342 | 343 | 344 | 345 | 346 | 347 | 348 | 349 | 350 | 351 | 352 | 353 | 354 | 355 | 356 | 357 | 358 | 359 | 360 | 361 | 362 | 363 | 364 | 365 | 366 | 367 | 368 | 369 | 370 | 371 | 372 | 373 | 374 | 375 | 376 | 377 |
TimeMondayTuesdayWednesdayThursdayFridaySaturdaySunday
10.00 - 10.30
ABDOS
Fadi
ABDOS
Fadi
ABDOS
Fadi
Taekwondo
Hbib
16.00 - 17.00
Cross Training
Ahmed
Body Pump
Ahmed
Taekwondo
Hbib
Taekwondo
Hbib
Body Attack
Ahmed
18.00 - 19.00
Cross Training
Raslen
Girt Cardio
Raslen
19.00 - 20.00
Kick Boxing
Jalel
ABDOS
Ahmed
Kick Boxing
Jalel
ABDOS
Ahmed
Kick Boxing
Jalel
378 |
379 |
380 |
381 |
382 |
383 | 384 | 385 | 386 | 387 |
388 |
389 |
390 |
391 |
392 |

Body Mass Index

393 |

Whate is BMI?

394 |

Body mass index (BMI) is a measure of body fat based on height and weight that applies to adult men and women

395 |
396 |
397 |
398 |
399 |

Calculate your BMI

400 |
401 |
402 |
403 | 404 |
405 |
406 | 407 |
408 |
409 | 410 |
411 |
412 | 414 |
415 |
416 |
417 |
418 |
419 |
420 |
421 |
422 | 423 | 424 | 425 | 426 | 465 | 466 | 467 | 468 | 469 | 470 | 471 | 472 | 473 | 474 | 475 | 476 | 477 | 478 | 479 | 480 | 481 | 482 | 483 | 484 | 485 | 486 | --------------------------------------------------------------------------------