diff --git a/site/templates/images/logo-mini.png b/site/assets/files/1258/logo-mini.png similarity index 100% rename from site/templates/images/logo-mini.png rename to site/assets/files/1258/logo-mini.png diff --git a/site/assets/files/1258/logo.150x0.png b/site/assets/files/1258/logo.150x0.png new file mode 100644 index 0000000..3582c9f Binary files /dev/null and b/site/assets/files/1258/logo.150x0.png differ diff --git a/site/assets/files/1258/logo.250x0.png b/site/assets/files/1258/logo.250x0.png new file mode 100644 index 0000000..9e6fc2c Binary files /dev/null and b/site/assets/files/1258/logo.250x0.png differ diff --git a/site/assets/files/1258/logo.svg b/site/assets/files/1258/logo.svg new file mode 100644 index 0000000..6dd2c8a --- /dev/null +++ b/site/assets/files/1258/logo.svg @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/site/assets/files/1260/golfo_artabro.png b/site/assets/files/1260/golfo_artabro.png new file mode 100644 index 0000000..f786ab8 Binary files /dev/null and b/site/assets/files/1260/golfo_artabro.png differ diff --git a/site/assets/files/1261/xunta_galicia.png b/site/assets/files/1261/xunta_galicia.png new file mode 100644 index 0000000..683afb2 Binary files /dev/null and b/site/assets/files/1261/xunta_galicia.png differ diff --git a/site/assets/files/1262/union_europea.png b/site/assets/files/1262/union_europea.png new file mode 100644 index 0000000..294cb8d Binary files /dev/null and b/site/assets/files/1262/union_europea.png differ diff --git a/site/init.php b/site/init.php new file mode 100644 index 0000000..1d71fd2 --- /dev/null +++ b/site/init.php @@ -0,0 +1,26 @@ +addHookAfter('Page::render', function($event) { + * $event->return = str_replace("", "

Hello World

", $event->return); + * }); + * + */ + +$wire->addHookAfter('Pages::added', function($event) +{ + $page = $event->arguments(0); + foreach ($this->wire->languages as $lang) $page->set("status$lang", 1); + $page->save(); +}); \ No newline at end of file diff --git a/site/modules/.FieldtypeColor/.gitattributes b/site/modules/.FieldtypeColor/.gitattributes deleted file mode 100644 index ab85459..0000000 --- a/site/modules/.FieldtypeColor/.gitattributes +++ /dev/null @@ -1,4 +0,0 @@ -# Auto detect text files and perform LF normalization -* text=auto -# Show correct language for ProcessWire .module -*.module linguist-language=PHP diff --git a/site/modules/.FieldtypeColor/.gitignore b/site/modules/.FieldtypeColor/.gitignore deleted file mode 100644 index a866f03..0000000 --- a/site/modules/.FieldtypeColor/.gitignore +++ /dev/null @@ -1,5 +0,0 @@ -dematte/* -jscolor-2.0.4/* -colorpicker/* -InputfieldColor.js -.DS_Store diff --git a/site/modules/.FieldtypeColor/FieldtypeColor.module b/site/modules/.FieldtypeColor/FieldtypeColor.module deleted file mode 100644 index 4102c45..0000000 --- a/site/modules/.FieldtypeColor/FieldtypeColor.module +++ /dev/null @@ -1,336 +0,0 @@ - 'Color', - 'version' => 118, - 'summary' => 'Field that stores a color value as 32bit integer reflecting a RGBA value. Many options for Input (HTML5 Inputfield Color, Textfield with changing background, various jQuery/JS ColorPickers, custom jQuery/JS/CSS) and Output (RGB, RGBA, HSL, HSLA, HEX, Array).', - 'installs' => 'InputfieldColor', - 'href' => 'https://processwire.com/talk/topic/16679-fieldtypecolor/' - ); - } - - public function ___getCompatibleFieldtypes(Field $field) { - $fieldtypes = $this->wire(new Fieldtypes()); - foreach($this->wire('fieldtypes') as $fieldtype) { - if(!$fieldtype instanceof FieldtypeInteger && - !$fieldtype instanceof FieldtypeColor && - $fieldtype != 'FieldtypeText') { - $fieldtypes->remove($fieldtype); - } - } - return $fieldtypes; - } - - public function getInputfield(Page $page, Field $field) { - $inputfield = $this->modules->get('InputfieldColor'); - $inputfield->initValue = $this->sanitizeValue($page, $field, $field->defaultValue); - $inputfield->class = $this->className(); - return $inputfield; - } - - public function sanitizeValue(Page $page, Field $field, $value) { - if (!$value) return $value; - $value = ltrim($value, '#'); - if (strlen($value) == 8) return $value; - else if (strlen($value) == 6) return 'ff'.$value; // add alpha channel - else throw New WireException('Expecting Hex color string (length 6 or 8 digits) with optional leading \'#\''); - - } - - public function sleepValue(Page $page, Field $field, $value) { - return hexdec($value); - } - - public function wakeupValue(Page $page, Field $field, $value) { - if (!$value) return $value; - if (function_exists("bcmod")) return str_pad(self::bcdechex($value), 8, '0', STR_PAD_LEFT); // BCMath extension required - return str_pad(dechex($value), 8, '0', STR_PAD_LEFT); // 64-bit system required - } - - /** - * Converts a number from decimal to hex (BCMath extension required) - * returns precice result even if number is bigger than PHP_INT_MAX (safe for 32bit systems) - * - * @param int/string/float number - * @return string - * - * @see http://php.net/manual/en/ref.bc.php#99130 - */ - public static function bcdechex($dec) { - $last = bcmod("$dec", 16); - $remain = bcdiv(bcsub("$dec", $last), 16); - if($remain == 0) return dechex($last); - else return self::bcdechex($remain).dechex($last); - } - - /** - * Converts a RGB color value to HSL. Conversion formula - * @param array of 3 color values R, G, and B [0, 255] - * @return array The HSL representation - * - * @see https://stackoverflow.com/questions/2353211/hsl-to-rgb-color-conversion/9493060#9493060 - * @see http://en.wikipedia.org/wiki/HSL_color_space - */ - public function RGB2HSL(array $rgb) { - $rgb = array_map(function($v) { return $v/ 255; }, $rgb); - $max = max($rgb); - $min = min($rgb); - $hue = $sat = $light = ($max + $min) / 2; - - if($max == $min) { - $hue = $sat = 0; // achromatic - } else { - $d = $max - $min; - $sat = $light > 0.5 ? $d / (2 - $max - $min) : $d / ($max + $min); - switch($max) { - case $rgb[0]: - $hue = ($rgb[1] - $rgb[2]) / $d + ($rgb[1] < $rgb[1] ? 6 : 0); - break; - case $rgb[1]: - $hue = ($rgb[2] - $rgb[0]) / $d + 2; - break; - case $rgb[2]: - $hue = ($rgb[0] - $rgb[1]) / $d + 4; - break; - } - $hue = $hue / 6; - } - // round and convert float to string with dot as decimal separator in any language - $hue = str_replace(',', '.', round($hue * 360)); - $sat = str_replace(',', '.', round($sat * 100, 1)); - $light = str_replace(',', '.', round($light * 100, 1)); - - return [$hue, $sat, $light]; - } - - /** - * Find the "naive" difference between two colors. - * @see https://php.tutorialink.com/finding-nearest-match-rgb-color-from-array-of-colors/ - * @param int[] $color_a Three-element array with R,G,B color values 0-255. - * @param int[] $color_b Three-element array with R,G,B color values 0-255. - * @return int - */ - public function getColorDistance(array $color_a, array $color_b): int { - return - abs($color_a[0] - $color_b[0]) + - abs($color_a[1] - $color_b[1]) + - abs($color_a[2] - $color_b[2]); - } - - /** - * Find the difference between two colors' luminance values. - * @see https://php.tutorialink.com/finding-nearest-match-rgb-color-from-array-of-colors/ - * @param int[] $color_a Three-element array with R,G,B color values 0-255. - * @param int[] $color_b Three-element array with R,G,B color values 0-255. - * @return int - */ - public function getLuminanceDistance(array $color_a, array $color_b): int { - $luminance_f = function ($red, $green, $blue): int { - // Source: https://en.wikipedia.org/wiki/Relative_luminance - $luminance = (int) (0.2126 * $red + 0.7152 * $green + 0.0722 * $blue); - return $luminance; - }; - - return abs( - $luminance_f($color_a[0], $color_a[1], $color_a[2]) - - $luminance_f($color_b[0], $color_b[1], $color_b[2]) - ); - } - - /** - * Find the closest named color - * @param hexcolor - * @return string - */ - public function getClosestColorName(string $color) { - $color = ltrim($color, '#'); - if (strlen($color) == 6) $color = "ff$color"; - if (strlen($color) != 8) throw new WireException("Invalid parameter. Expected hex string of 6 or 8 digits length with or without leading '#'."); - $color = $this->formatColorString($color, 9); - $palette = json_decode(file_get_contents(__DIR__ . '/colornames.json'), true); - $min = 765; - $match = null; - foreach ($palette as $name => $pcolor) { - $pcolor = $this->formatColorString("ff$pcolor", 9); - if ($pcolor === $color) return $name; // quick exit if full match - $distance = $this->getColorDistance($pcolor, $color); - if ($distance >= $min) continue; - $min = $distance; - $match = $name; - } - return $match; - } - - /** - * Format value for output - * - */ - public function ___formatValue(Page $page, Field $field, $value) { - if (!$value) return null; - if ($field->outputFormat === 7) return $this->sleepValue($page, $field, $value); - return $this->formatColorString($value, $field->outputFormat); - } - - /** - * Format color string - * - * @param $value string - hex string of 8 chiffres, first 2 is the alpha channel - * @param $of int - output format - * @return string formatted color string - * @throws object WireException - if input doesn't match (check for length, detailed check in debug mode) - * - */ - public function formatColorString($value, $of = 0) { - - // simple length check or preg_match in debug mode - if (strlen($value) != 8 || ($this->wire('config')->debug && !preg_match('/[A-Fa-f0-9]{8}/', $value))) { - throw new WireException("Invalid input: $value. Expected hex string of 8 digits length."); - } - - if ($of === 6) return $value; - if ($of === 0) return "#".substr($value,2); - if ($of === 1) return "#".$value; - - $hexVals = str_split($value, 2); - $value = array_map('hexdec', $hexVals); - - // opacity - $opacity = '0'; - if ($value[0] > 1 && in_array($of ,array(3,5,8,10,12))) { - $opacity = round($value[0] / 255, 2); // float - $opacity = rtrim(number_format($opacity, 2, '.', ''),'.0'); // convert float to string with dot as decimal separator - } - - if ($of === 9) return [$value[1], $value[2], $value[3]]; - if ($of === 10) return [$value[1], $value[2], $value[3], $opacity]; - - if ($of === 8) { - $assocArray = array( - 'o' => $opacity, - 'r' => $value[1], - 'g' => $value[2], - 'b' => $value[3], - 'ox' => $hexVals[0], - 'rx' => $hexVals[1], - 'gx' => $hexVals[2], - 'bx' => $hexVals[3], - ); - return array_merge($value, $assocArray); - } - - if ($of === 2) return "rgb($value[1], $value[2], $value[3])"; - if ($of === 3) return "rgba($value[1], $value[2], $value[3], $opacity)"; - - $hsl = $this->RGB2HSL(array_slice($value,1,3)); - - if ($of === 11) return $hsl; - - if ($of === 12) { - $hsla = $hsl; - $hsla[] = $opacity; - return $hsla; - } - - if ($of === 4) return "hsl($hsl[0], $hsl[1]%, $hsl[2]%)"; - if ($of === 5) return "hsla($hsl[0], $hsl[1]%, $hsl[2]%, $opacity)"; - } - - public function getDatabaseSchema(Field $field) { - $schema = parent::getDatabaseSchema($field); - $schema['data'] = "int UNSIGNED NOT NULL"; - return $schema; - } - - public function ___getConfigInputfields(Field $field) { - - $inputfields = $this->wire(new InputfieldWrapper()); - - $f = $this->wire('modules')->get('InputfieldRadios'); - $f->attr('name', 'outputFormat'); - $f->label = $this->_('Output Format'); - $f->description = $this->_('Choose your preferred output format.'); - - $f->addOption(0, $this->_('string 6-digit hex color *#4496dd*')); - $f->addOption(1, $this->_('string 8-digit hex color *#fa4496dd* (limited browser support)')); - $f->addOption(2, $this->_('string *rgb(68, 100, 221)*')); - $f->addOption(3, $this->_('string *rgba(68, 100, 221, 0.98)*')); - $f->addOption(4, $this->_('string *hsl(227, 69.2%, 56.7%)*')); - $f->addOption(5, $this->_('string *hsla(227, 69.2%, 56.7%, 0.98)*')); - $f->addOption(6, $this->_('string 8-digit raw hex *fa4496dd* (unformatted)')); - $f->addOption(7, $this->_('int 32bit (storage)')); - $f->addOption(8, $this->_('array(r[0,255], g[0,255], b[0,255], o[0,1], rx[00,ff], gx[00,ff], bx[00,ff], ox[00,ff])')); - $f->addOption(9, $this->_('array([0,255], [0,255], [0,255]) indexed array: R,G,B')); - $f->addOption(10, $this->_('array([0,255], [0,255], [0,255], [0,1]) indexed array: R,G,B,Alpha')); - $f->addOption(11, $this->_('array([0,360], [69.2%], [56.7%]) indexed array: H,S,L')); - $f->addOption(12, $this->_('array([0,360], [69.2%], [56.7%], [0,1]) indexed array: H,S,L,Alpha')); - - $f->attr('value', (int) $field->outputFormat); - $inputfields->add($f); - - $f = $this->wire('modules')->get('InputfieldColor'); - $f->attr('name', 'defaultValue'); - $f->label = $this->_('Default value'); - - $f->inputType = $field->inputType; - $f->spectrum = $field->spectrum; - $f->initJS = $field->initJS; - $f->fileJS = $field->fileJS; - $f->fileCSS = $field->fileCSS; - $f->jqueryCore = $field->jqueryCore; - $f->jqueryUI = $field->jqueryUI; - $f->alpha = $field->alpha; - - $f->description = $this->_('This value is assigned as the default for blank fields and on newly created pages.'); - $f->collapsed = Inputfield::collapsedBlank; - $f->attr('value', strlen($field->defaultValue) ? $this->sanitizeValue($this->wire('page'), $field, $field->defaultValue) : null); - - $inputfields->add($f); - - return $inputfields; - } - - public function ___install() { - if (function_exists("bcmod") === false && PHP_INT_SIZE < 8) { - throw new WireException($this->_('The BCMath extension is required if your system can not handle 64-bit integer values.')); - } - parent::___install(); - } -} \ No newline at end of file diff --git a/site/modules/.FieldtypeColor/InputfieldColor.css b/site/modules/.FieldtypeColor/InputfieldColor.css deleted file mode 100644 index b0e7da5..0000000 --- a/site/modules/.FieldtypeColor/InputfieldColor.css +++ /dev/null @@ -1,9 +0,0 @@ -.InputfieldColor input[type=color], input[type=color].FieldtypeColor, input[type=color]#Inputfield_defaultValue { - height:2em; - padding:0; -} - -.AdminThemeUikit .InputfieldColor input[type=color], .AdminThemeUikit input[type=color].FieldtypeColor, .AdminThemeUikit input[type=color]#Inputfield_defaultValue { - height:40px; - width: 100% !important; -} \ No newline at end of file diff --git a/site/modules/.FieldtypeColor/InputfieldColor.module b/site/modules/.FieldtypeColor/InputfieldColor.module deleted file mode 100644 index 3e3efc1..0000000 --- a/site/modules/.FieldtypeColor/InputfieldColor.module +++ /dev/null @@ -1,354 +0,0 @@ - __('Color', __FILE__), // Module Title - 'summary' => __('Inputfield for colors', __FILE__), // Module Summary - 'version' => 116, - 'href' => 'https://processwire.com/talk/topic/16679-fieldtypecolor/' - ); - } - - /** - * Construct - * - * @throws WireException - * - */ - public function __construct() { - parent::__construct(); - $this->set('icon', 'paint-brush'); - $this->setAttribute('type', 'text'); - $this->setAttribute('size', 10); - $this->setAttribute('placeholder', '#000000'); - $this->setAttribute('pattern', '(#?[a-fA-F\d]{6})?'); - } - - public function init() { - $this->inputType = 0; - $this->spectrum = ''; - $this->initJS = ''; - $this->fileJS = ''; - $this->fileCSS = ''; - $this->jqueryCore = 0; - $this->jqueryUI = 0; - $this->alpha = 0; // int 0, 1 will be set dependend on inputType. To disable explicitly for inputType = 3 (spectrum color picker) set bool false - parent::init(); - } - - /** - * Called before the render method - * checking for SpectrumColorPicker - * - * @param Inputfield $parent - * @param bool $renderValueMode - * @return $this - * - */ - public function renderReady(Inputfield $parent = null, $renderValueMode = false) { - $url = $this->config->urls->get('InputfieldColor'); - switch ($this->inputType) { - case 3: - $this->wire('modules')->get('JqueryCore'); - $this->config->scripts->add($url . 'spectrum/spectrum.js'); - $this->config->styles->add($url . 'spectrum/spectrum.css'); - break; - case 4: - if ($this->jqueryCore) $this->wire('modules')->get('JqueryCore'); - if ($this->jqueryUI) $this->wire('modules')->get('JqueryUI'); - if ($this->fileJS) $this->config->scripts->add($url . $this->fileJS); - if ($this->fileCSS) $this->config->styles->add($url . $this->fileCSS); - break; - } - parent::renderReady($parent, $renderValueMode); - } - - /** - * get textcolor (light or dark) corresponding to the background for better contrast - * - * @param int/string $bgColor expecting string or int with 6 (24bit) or 8 (32bit) digits with or without leading '#' - * @param int/string $textColorLight default: '#fff' (white) - * @param int/string $textColorDark default: '#000' (black) - * @return string $color light or dark - * - */ - public function getTextColor($bgColor, $textColorLight = '#fff', $textColorDark = '#000') { - if (!is_string($bgColor)) return $textColorDark; - else if (!ctype_xdigit(ltrim($bgColor, '#'))) { - $bgColor = $this->convertColorName($bgColor); - if (false === $bgColor) return $textColorDark; - } - $bgColor = ltrim($bgColor, '#'); - $bgColor = str_pad($bgColor,8,'f',STR_PAD_LEFT); - $ARGB = array_map('hexdec', str_split($bgColor, 2)); - $opacity = round($ARGB[0] / 255, 2); - if ($opacity < 0.45) return $textColorDark; - return ($ARGB[1]+6*$ARGB[2]+$ARGB[3])*3/8 > 460? $textColorDark : $textColorLight; - } - - /** - * convert color name (hex -> html, html -> hex) - * - * @param $color - * @param $to convert to 'hex' or 'html' - * @return bool/ string - * - */ - public function convertColorName($color, $to = 'hex') { - $colorArray = $this->getX11ColorArray(); - if ($to = 'hex') { - $key = array_search($color, array_column($colorArray, 0)); - return empty($colorArray[$key][1])? false : $colorArray[$key][1]; - } - else if ($to = 'html') { - $key = array_search($color, array_column($colorArray, 1)); - return empty($colorArray[$key][0])? false : $colorArray[$key][0]; - } - return false; - } - - /** - * get multiple array with html color names and corresponding hex codes and rgb values - * - * @param $domain - * @param $path file path - * @return boolean - * - */ - protected function getX11ColorArray() { - $path = __DIR__ .'/x11color.txt'; - if (!file_exists($path)) throw new WireException("Missing file " . $path); - $array = file($path, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES); - if ($array === false) throw new WireException("Failed to open file: $path"); - return array_map(function($e) { - return explode("\t", $e); - }, $array); - } - - public function ___render() { - if ($this->value === "" && strlen($this->initValue)) $this->value = $this->initValue; - if (!$this->value) $this->value = null; - - if ($this->value) { - $this->value = str_pad(ltrim($this->value, '#'),8,'f',STR_PAD_LEFT); - $color32 = "#".$this->value; - $color24 = $bgColor = "#".substr($this->value,2,6); - $value = array_map('hexdec', str_split($this->value, 2)); - } else { - $color32 = $color24 = null; - $value = array(255,255,255,255); - $bgColor = '#fff'; - } - - $opacity = round($value[0] / 255, 2); - $opacity = $opacity? rtrim(number_format($opacity, 2, '.', ''),'.0') : '0'; - - $textColor = $this->getTextColor($this->value); - $rgba = "rgba($value[1], $value[2], $value[3], $opacity)"; - $this->attr('value', $color24); - $this->attr('data-input-type', $this->inputType); - - switch ($this->inputType) { - case 0: - $this->attr('type', 'color'); - break; - case 1: - $this->attr('style', "color: $textColor; background: $bgColor;"); - break; - case 2: - $this->alpha = 1; - $this->attr('value', $color32); - $this->attr('style', "color: $textColor; background: $bgColor; background-image: linear-gradient($rgba, $rgba), url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==');"); - $this->attr('placeholder', '#ff000000'); - $this->attr('pattern', '(#?[a-fA-F\d]{8})?'); - break; - case 3: - if ($this->alpha !== false) $this->alpha = 1; - if (!$color32) $color32 = '#00000000'; - $this->attr('value', $color32); - $this->attr('placeholder', '#ff000000'); - $this->removeAttr('pattern'); - break; - case 4: - if ($this->alpha) $this->attr('value', $color32); - else $this->attr('value', $color24); - } - - $attrs = $this->getAttributes(); - - $out = "getAttributesString($attrs) . " />"; - if( $this->inputType == 3) { - $options = $this->spectrum? str_replace(array(",\n","\n"),", ", trim($this->spectrum,",\t\n\r\0\x0B")).',' : ''; - $value = $color32? $color32 : null; - $format = $this->alpha? 'toHex8String' : 'toHexString'; - $out .= " - "; - } - if( $this->inputType == 4) { - $value = $color32? $color32 : null; - if ($this->initJS) { - $initJS = str_replace(array("{value}","{id}"), array($color24, $this->id), $this->initJS); - $out .= " - "; - } - } - return $out; - } - - public function ___processInput(WireInputData $input) { - parent::___processInput($input); - $value = $this->attr('value'); - if (!$value) return $this; - // bugfix (workaround): something went wrong in javascript spectrum - if (is_string($value) && in_array($value, ['hsva(0, 0%, 0%, 0)','hsla(0, 0%, 0%, 0)','rgba(0, 0, 0, 0)'])) { - $this->attr('value', '00000000'); - return $this; - } - $pattern = $this->alpha? '/#?[a-fA-F\d]{8}/' : '/#?[a-fA-F\d]{6}/'; - if(!preg_match($pattern, $value)) $this->error("Submitted value: $value does not match required pattern: $pattern."); - return $this; - - } - - public function getConfigInputfields() { - $inputfields = parent::getConfigInputfields(); - - $f = $this->wire('modules')->get('InputfieldRadios'); - $f->attr('name', 'inputType'); - $f->label = $this->_('Inputfieldtype'); - $f->addOption(0, $this->_('Inputfield type=\'color\' (HTML5 - limited browser support)')); - $f->addOption(1, $this->_('Inputfield type=\'text\' expects 24bit hexcode strings')); - $f->addOption(2, $this->_('Inputfield type=\'text\' expects 32bit hexcode strings (alpha channel)')); - $f->addOption(3, $this->_('Inputfield with Spectrum Color Picker (JavaScript)')); - $f->addOption(4, $this->_('Inputfield type=\'text\' with custom JavaScript and/or CSS')); - $f->attr('value', $this->inputType); - $f->description = $this->_(''); - $f->columnWidth = 50; - $inputfields->add($f); - - $f = $this->wire('modules')->get('InputfieldTextarea'); - $f->attr('name', 'spectrum'); - $f->attr('rows', 10); - $f->label = $this->_('Color Picker Options'); - $f->attr('value', $this->spectrum); - $f->description = $this->_('Set or modify options for the **Spectrum Color Picker**. [Read more ...](https://bgrins.github.io/spectrum/#options)'); - $f->notes = $this->_("One option per line in the format: 'option: value'. The options: 'color' and 'change' are used by the system and not modifiable."); - $f->columnWidth = 50; - $f->showIf = "inputType=3"; - $inputfields->add($f); - - $f = $this->wire('modules')->get('InputfieldTextarea'); - $f->attr('name', 'initJS'); - $f->attr('rows', 3); - $f->label = $this->_('Initial JS'); - $f->attr('value', $this->initJS); - $f->description = $this->_('JavaScript code initiating your custom JS color picker. Use {id} and {value} as placeholders for the related field attributes in your selector'); - $f->notes = sprintf($this->_('{id} will be replaced by the string "%s"'), $this->id); - $f->columnWidth = 33; - $f->showIf = "inputType=4"; - $f->requiredIf = "inputType=4"; - $inputfields->add($f); - - $rootUrl = $this->config->urls->get('InputfieldColor'); - - $f = $this->wire('modules')->get('InputfieldURL'); - $f->attr('name', 'fileJS'); - $f->label = $this->_('Include JS File'); - $f->attr('value', $this->fileJS); - $f->description = $this->_('Set the path to your custom JavaScript file.'); - $f->notes = sprintf($this->_('URL string relative to "%s"'), $rootUrl); - $f->columnWidth = 34; - $f->showIf = "inputType=4"; - $f->requiredIf = "inputType=4"; - $inputfields->add($f); - - $f = $this->wire('modules')->get('InputfieldURL'); - $f->attr('name', 'fileCSS'); - $f->label = $this->_('Include CSS File'); - $f->attr('value', $this->fileCSS); - $f->description = $this->_('Set the path to your custom stylesheet file.'); - $f->notes = sprintf($this->_('URL string relative to "%s"'), $rootUrl); - $f->columnWidth = 33; - $f->showIf = "inputType=4"; - $f->requiredIf = "inputType=4"; - $inputfields->add($f); - - $f = $this->modules->get('InputfieldCheckbox'); - $f->attr('name', 'jqueryCore'); - $f->label = __('Enable JqueryCore'); - $f->attr('checked', $this->jqueryCore ? 'checked' : '' ); - $f->columnWidth = 33; - $f->showIf = "inputType=4"; - $inputfields->append($f); - - $f = $this->modules->get('InputfieldCheckbox'); - $f->attr('name', 'jqueryUI'); - $f->label = __('Enable JqueryUI'); - $f->attr('checked', $this->jqueryUI ? 'checked' : '' ); - $f->columnWidth = 34; - $f->showIf = "inputType=4"; - $inputfields->append($f); - - $f = $this->modules->get('InputfieldRadios'); - $f->attr('name', 'alpha'); - $f->addOption(0, $this->_('6 digits "#ff0000"')); - $f->addOption(1, $this->_('8 digits "#ffff0000" (leading alpha channel)')); - $f->label = __('Select value type'); - $f->attr('value', $this->alpha); - $f->columnWidth = 33; - $f->showIf = "inputType=4"; - $inputfields->append($f); - - return $inputfields; - } -} diff --git a/site/modules/.FieldtypeColor/README.md b/site/modules/.FieldtypeColor/README.md deleted file mode 100644 index 42f438a..0000000 --- a/site/modules/.FieldtypeColor/README.md +++ /dev/null @@ -1,107 +0,0 @@ -FieldtypeColor -============== - -## Fieldtype/Inputfield for ProcessWire 3.0 - -Field that stores colors. Many options for Input (HTML5 Inputfield Color, Textfield with changing background, various jQuery/JS ColorPickers, custom jQuery/JS/CSS) and Output (RGB, RGBA, HSL, HSLA, HEX). Package includes Fieldtype Color Select. - -## Inputfield -Select between **5 types of Inputfields** - -+ Html5 Inputfield of type='color' (if supported by browser) -+ Inputfield type='text' expecting a 24bit hexcode string (RGB). Input format: *'#4496dd'* -The background color of the input fields shows selected color -+ Inputfield of type='text' expecting 32bit hexcode strings (RGB + alpha channel) Input format: *'#fa4496dd'* -+ Inputfield with **Spectrum Color Picker** (JavaScript) -Options modifiable -+ Inputfield type='text' with **custom JavaScript** and/or CSS - - -## Output - -Define output format under **Details** - Tab in field settings. Select from the following options: - -+ *string* 6-digit hex color. Example: **'#4496dd'** -+ *string* 8-digit hex color with leading Alpha channel (limited browser support). Example: **'#fa4496dd'** -+ *string* CSS color value **RGB**. Example: **'rgb(68, 100, 221)'** -+ *string* CSS color value **RGBA**. Example: **'rgba(68, 100, 221, 0.98)'** -+ *string* CSS color value **HSL**. Example: **'hsl(227, 69.2%, 56.7%)'** -+ *string* CSS color value **HSLA**. Example: **'hsla(227, 69.2%, 56.7%, 0.98)'** -+ *string* 32bit raw hex value. Example: **'fa4496dd'** (unformatted output value) -+ *int 32bit*. Example: **'4198799069'** (storage value) -+ *array(R,G,B)* -+ *array(R,G,B,Alpha)* -+ *array(H,S,L)* -+ *array(H,S,L,Alpha)* - - -``` - array( - [0] => 0-255, // opacity - [1],['r'] => 0-255, - [2],['g'] => 0-255, - [3],['b'] => 0-255, - ['rx'] => 00-ff, - ['gx'] => 00-ff, - ['bx'] => 00-ff, - ['ox'] => 00-ff, // opacity - ['o'] => 0-1 // opacity - ) -``` - - -## Templates & API -You can always modify values or output format via ProcessWire API. - -**Modify output format** - -``` -$f = $page->fields->get('myColorField'); -$f->outputFormat = 8; -echo $page->color['rx']; -``` - -**Modify values** - -+ Delete the page field value by setting empty string or *NULL*. -+ The values (int) 0, (string) '0', '00000000' and '#00000000' are similar and stored as (int) 0 (black, full transparent). - -``` -$page->of(false); -$page->myColorField = 'ff0000'; // red -$page->save('myColorField'); -``` - -## Notes -**Deleting values** is only possible with inputfields of type='text' and via API. - -If a **default value** is set, the field is filled with it if the field is empty (for example on newly created pages). -If Inputfield of type='text' 32bit is selected you can set the value to '#00000000' and the default value will be ignored. - -The Fieldtype includes -[**Spectrum Color Picker** by Brian Grinstead](https://github.com/bgrins/spectrum) - -Any custom Javascript based Inputfield can be used. - -If the **Inputfield** is **used as is** e.g. for Module Settings, the following properties are provided: - -``` -$f->wire('modules')->get('InputfieldColor); -$f->inputType = 0; // int 0 - 4 -$f->alpha = 0; // int 0 or 1, will be set automatically dependend on inputType. To disable explicitly for inputType = 3 (spectrum color picker) set to bool false -$f->spectrum = ''; // options for spectrum Color Picker if inputType = 3 @see https://bgrins.github.io/spectrum/ - -// properties for inputType = 4 only -$f->initJS = ''; // initial JS -$f->fileJS = ''; // path to JS file -$f->fileCSS = ''; // path to CSS file -$f->jqueryCore = 0; // enable jqueryCore -$f->jqueryUI = 0; // enable jqueryUI -``` - ---- - -Fieldtype Select Color Options -============================== - -This fieldtype is included in the package. The module is an extension of the Core **FieldtypeOptions** module and offers colors as predefined selectable options via 4 different input field types (Select, SelectMultiple, Checkboxes and Radios). diff --git a/site/modules/.FieldtypeColor/colornames.json b/site/modules/.FieldtypeColor/colornames.json deleted file mode 100644 index 5df7793..0000000 --- a/site/modules/.FieldtypeColor/colornames.json +++ /dev/null @@ -1,143 +0,0 @@ -{ - "AliceBlue": "f0f8ff", - "AntiqueWhite": "faebd7", - "Aqua": "00ffff", - "AquaMarine": "7fffd4", - "Azure": "f0ffff", - "Beige": "f5f5dc", - "Bisque": "ffe4c4", - "Black": "000000", - "BlanchedAlmond": "ffebcd", - "Blue": "0000ff", - "BlueViolet": "8a2be2", - "Brown": "a52a2a", - "BurlyWood": "deb887", - "CadetBlue": "5f9ea0", - "Chartreuse": "7fff00", - "Chocolate": "d2691e", - "Coral": "ff7f50", - "CornFlowerBlue": "6495ed", - "Cornsilk": "fff8dc", - "Crimson": "dc143c", - "Cyan": "00ffff", - "DarkBlue": "00008b", - "DarkCyan": "008b8b", - "DarkGoldenRod": "b8860b", - "DarkGray": "a9a9a9", - "DarkGreen": "006400", - "DarkKhaki": "bdb76b", - "DarkMagenta": "8b008b", - "DarkOliveGreen": "556b2f", - "DarkOrange": "ff8c00", - "DarkOrchid": "9932cc", - "DarkRed": "8b0000", - "DarkSalmon": "e9967a", - "DarkSeaGreen": "8fbc8f", - "DarkSlateBlue": "483d8b", - "DarkSlateGray": "2f4f4f", - "DarkTurquoise": "00ced1", - "DarkViolet": "9400d3", - "DeepPink": "ff1493", - "DeepSkyBlue": "00bfff", - "DimGray": "696969", - "DodgerBlue": "1e90ff", - "FireBrick": "b22222", - "FloralWhite": "fffaf0", - "ForestGreen": "228b22", - "Fuchsia": "ff00ff", - "Gainsboro": "dcdcdc", - "GhostWhite": "f8f8ff", - "Gold": "ffd700", - "GoldenRod": "daa520", - "Gray": "808080", - "Green": "008000", - "GreenYellow": "adff2f", - "HoneyDew": "f0fff0", - "HotPink": "ff69b4", - "IndianRed": "cd5c5c", - "Indigo": "4b0082", - "Ivory": "fffff0", - "Khaki": "f0e68c", - "Lavender": "e6e6fa", - "LavenderBlush": "fff0f5", - "LawnGreen": "7cfc00", - "LemonChiffon": "fffacd", - "LightBlue": "add8e6", - "LightCoral": "f08080", - "LightCyan": "e0ffff", - "LightGoldenrodYellow": "fafad2", - "LightGray": "d3d3d3", - "LightGreen": "90ee90", - "LightPink": "ffb6c1", - "LightSalmon": "ffa07a", - "LightSeaGreen": "20b2aa", - "LightSkyBlue": "87cefa", - "LightSlateGray": "778899", - "LightSteelBlue": "b0c4de", - "LightYellow": "ffffe0", - "Lime": "00ff00", - "LimeGreen": "32cd32", - "Linen": "faf0e6", - "Magenta": "ff00ff", - "Maroon": "800000", - "MediumAquaMarine": "66cdaa", - "MediumBlue": "0000cd", - "MediumOrchid": "ba55d3", - "MediumPurple": "9370d8", - "MediumSeaGreen": "3cb371", - "MediumSlateBlue": "7b68ee", - "MediumSpringGreen": "00fa9a", - "MediumTurquoise": "48d1cc", - "MediumVioletRed": "c71585", - "MidnightBlue": "191970", - "MintCream": "f5fffa", - "MistyRose": "ffe4e1", - "Moccasin": "ffe4b5", - "NavajoWhite": "ffdead", - "Navy": "000080", - "OldLace": "fdf5e6", - "Olive": "808000", - "OliveDrab": "6b8e23", - "Orange": "ffa500", - "OrangeRed": "ff4500", - "Orchid": "da70d6", - "PaleGoldenRod": "eee8aa", - "PaleGreen": "98fb98", - "PaleTurquoise": "afeeee", - "PaleVioletRed": "db7093", - "PapayaWhip": "ffefd5", - "PeachPuff": "ffdab9", - "Peru": "cd853f", - "Pink": "ffc0cb", - "Plum": "dda0dd", - "PowderBlue": "b0e0e6", - "Purple": "800080", - "RebeccaPurple":"663399", - "Red": "ff0000", - "RosyBrown": "bc8f8f", - "RoyalBlue": "4169e1", - "SaddleBrown": "8b4513", - "Salmon": "fa8072", - "SandyBrown": "f4a460", - "SeaGreen": "2e8b57", - "SeaShell": "fff5ee", - "Sienna": "a0522d", - "Silver": "c0c0c0", - "SkyBlue": "87ceeb", - "SlateBlue": "6a5acd", - "SlateGray": "708090", - "Snow": "fffafa", - "SpringGreen": "00ff7f", - "SteelBlue": "4682b4", - "Tan": "d2b48c", - "Teal": "008080", - "Thistle": "d8bfd8", - "Tomato": "ff6347", - "Turquoise": "40e0d0", - "Violet": "ee82ee", - "Wheat": "f5deb3", - "White": "ffffff", - "WhiteSmoke": "f5f5f5", - "Yellow": "ffff00", - "YellowGreen": "9acd32" -} \ No newline at end of file diff --git a/site/modules/.FieldtypeColor/spectrum/spectrum.css b/site/modules/.FieldtypeColor/spectrum/spectrum.css deleted file mode 100644 index e68f492..0000000 --- a/site/modules/.FieldtypeColor/spectrum/spectrum.css +++ /dev/null @@ -1,507 +0,0 @@ -/*** -Spectrum Colorpicker v1.8.1 -https://github.com/bgrins/spectrum -Author: Brian Grinstead -License: MIT -***/ - -.sp-container { - position:absolute; - top:0; - left:0; - display:inline-block; - *display: inline; - *zoom: 1; - /* https://github.com/bgrins/spectrum/issues/40 */ - z-index: 9999994; - overflow: hidden; -} -.sp-container.sp-flat { - position: relative; -} - -/* Fix for * { box-sizing: border-box; } */ -.sp-container, -.sp-container * { - -webkit-box-sizing: content-box; - -moz-box-sizing: content-box; - box-sizing: content-box; -} - -/* http://ansciath.tumblr.com/post/7347495869/css-aspect-ratio */ -.sp-top { - position:relative; - width: 100%; - display:inline-block; -} -.sp-top-inner { - position:absolute; - top:0; - left:0; - bottom:0; - right:0; -} -.sp-color { - position: absolute; - top:0; - left:0; - bottom:0; - right:20%; -} -.sp-hue { - position: absolute; - top:0; - right:0; - bottom:0; - left:84%; - height: 100%; -} - -.sp-clear-enabled .sp-hue { - top:33px; - height: 77.5%; -} - -.sp-fill { - padding-top: 80%; -} -.sp-sat, .sp-val { - position: absolute; - top:0; - left:0; - right:0; - bottom:0; -} - -.sp-alpha-enabled .sp-top { - margin-bottom: 18px; -} -.sp-alpha-enabled .sp-alpha { - display: block; -} -.sp-alpha-handle { - position:absolute; - top:-4px; - bottom: -4px; - width: 6px; - left: 50%; - cursor: pointer; - border: 1px solid black; - background: white; - opacity: .8; -} -.sp-alpha { - display: none; - position: absolute; - bottom: -14px; - right: 0; - left: 0; - height: 8px; -} -.sp-alpha-inner { - border: solid 1px #333; -} - -.sp-clear { - display: none; -} - -.sp-clear.sp-clear-display { - background-position: center; -} - -.sp-clear-enabled .sp-clear { - display: block; - position:absolute; - top:0px; - right:0; - bottom:0; - left:84%; - height: 28px; -} - -/* Don't allow text selection */ -.sp-container, .sp-replacer, .sp-preview, .sp-dragger, .sp-slider, .sp-alpha, .sp-clear, .sp-alpha-handle, .sp-container.sp-dragging .sp-input, .sp-container button { - -webkit-user-select:none; - -moz-user-select: -moz-none; - -o-user-select:none; - user-select: none; -} - -.sp-container.sp-input-disabled .sp-input-container { - display: none; -} -.sp-container.sp-buttons-disabled .sp-button-container { - display: none; -} -.sp-container.sp-palette-buttons-disabled .sp-palette-button-container { - display: none; -} -.sp-palette-only .sp-picker-container { - display: none; -} -.sp-palette-disabled .sp-palette-container { - display: none; -} - -.sp-initial-disabled .sp-initial { - display: none; -} - - -/* Gradients for hue, saturation and value instead of images. Not pretty... but it works */ -.sp-sat { - background-image: -webkit-gradient(linear, 0 0, 100% 0, from(#FFF), to(rgba(204, 154, 129, 0))); - background-image: -webkit-linear-gradient(left, #FFF, rgba(204, 154, 129, 0)); - background-image: -moz-linear-gradient(left, #fff, rgba(204, 154, 129, 0)); - background-image: -o-linear-gradient(left, #fff, rgba(204, 154, 129, 0)); - background-image: -ms-linear-gradient(left, #fff, rgba(204, 154, 129, 0)); - background-image: linear-gradient(to right, #fff, rgba(204, 154, 129, 0)); - -ms-filter: "progid:DXImageTransform.Microsoft.gradient(GradientType = 1, startColorstr=#FFFFFFFF, endColorstr=#00CC9A81)"; - filter : progid:DXImageTransform.Microsoft.gradient(GradientType = 1, startColorstr='#FFFFFFFF', endColorstr='#00CC9A81'); -} -.sp-val { - background-image: -webkit-gradient(linear, 0 100%, 0 0, from(#000000), to(rgba(204, 154, 129, 0))); - background-image: -webkit-linear-gradient(bottom, #000000, rgba(204, 154, 129, 0)); - background-image: -moz-linear-gradient(bottom, #000, rgba(204, 154, 129, 0)); - background-image: -o-linear-gradient(bottom, #000, rgba(204, 154, 129, 0)); - background-image: -ms-linear-gradient(bottom, #000, rgba(204, 154, 129, 0)); - background-image: linear-gradient(to top, #000, rgba(204, 154, 129, 0)); - -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#00CC9A81, endColorstr=#FF000000)"; - filter : progid:DXImageTransform.Microsoft.gradient(startColorstr='#00CC9A81', endColorstr='#FF000000'); -} - -.sp-hue { - background: -moz-linear-gradient(top, #ff0000 0%, #ffff00 17%, #00ff00 33%, #00ffff 50%, #0000ff 67%, #ff00ff 83%, #ff0000 100%); - background: -ms-linear-gradient(top, #ff0000 0%, #ffff00 17%, #00ff00 33%, #00ffff 50%, #0000ff 67%, #ff00ff 83%, #ff0000 100%); - background: -o-linear-gradient(top, #ff0000 0%, #ffff00 17%, #00ff00 33%, #00ffff 50%, #0000ff 67%, #ff00ff 83%, #ff0000 100%); - background: -webkit-gradient(linear, left top, left bottom, from(#ff0000), color-stop(0.17, #ffff00), color-stop(0.33, #00ff00), color-stop(0.5, #00ffff), color-stop(0.67, #0000ff), color-stop(0.83, #ff00ff), to(#ff0000)); - background: -webkit-linear-gradient(top, #ff0000 0%, #ffff00 17%, #00ff00 33%, #00ffff 50%, #0000ff 67%, #ff00ff 83%, #ff0000 100%); - background: linear-gradient(to bottom, #ff0000 0%, #ffff00 17%, #00ff00 33%, #00ffff 50%, #0000ff 67%, #ff00ff 83%, #ff0000 100%); -} - -/* IE filters do not support multiple color stops. - Generate 6 divs, line them up, and do two color gradients for each. - Yes, really. - */ -.sp-1 { - height:17%; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0000', endColorstr='#ffff00'); -} -.sp-2 { - height:16%; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffff00', endColorstr='#00ff00'); -} -.sp-3 { - height:17%; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00ff00', endColorstr='#00ffff'); -} -.sp-4 { - height:17%; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00ffff', endColorstr='#0000ff'); -} -.sp-5 { - height:16%; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#0000ff', endColorstr='#ff00ff'); -} -.sp-6 { - height:17%; - filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff00ff', endColorstr='#ff0000'); -} - -.sp-hidden { - display: none !important; -} - -/* Clearfix hack */ -.sp-cf:before, .sp-cf:after { content: ""; display: table; } -.sp-cf:after { clear: both; } -.sp-cf { *zoom: 1; } - -/* Mobile devices, make hue slider bigger so it is easier to slide */ -@media (max-device-width: 480px) { - .sp-color { right: 40%; } - .sp-hue { left: 63%; } - .sp-fill { padding-top: 60%; } -} -.sp-dragger { - border-radius: 5px; - height: 5px; - width: 5px; - border: 1px solid #fff; - background: #000; - cursor: pointer; - position:absolute; - top:0; - left: 0; -} -.sp-slider { - position: absolute; - top:0; - cursor:pointer; - height: 3px; - left: -1px; - right: -1px; - border: 1px solid #000; - background: white; - opacity: .8; -} - -/* -Theme authors: -Here are the basic themeable display options (colors, fonts, global widths). -See http://bgrins.github.io/spectrum/themes/ for instructions. -*/ - -.sp-container { - border-radius: 0; - background-color: #ECECEC; - border: solid 1px #f0c49B; - padding: 0; -} -.sp-container, .sp-container button, .sp-container input, .sp-color, .sp-hue, .sp-clear { - font: normal 12px "Lucida Grande", "Lucida Sans Unicode", "Lucida Sans", Geneva, Verdana, sans-serif; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - -ms-box-sizing: border-box; - box-sizing: border-box; -} -.sp-top { - margin-bottom: 3px; -} -.sp-color, .sp-hue, .sp-clear { - border: solid 1px #666; -} - -/* Input */ -.sp-input-container { - float:right; - width: 100px; - margin-bottom: 4px; -} -.sp-initial-disabled .sp-input-container { - width: 100%; -} -.sp-input { - font-size: 12px !important; - border: 1px inset; - padding: 4px 5px; - margin: 0; - width: 100%; - background:transparent; - border-radius: 3px; - color: #222; -} -.sp-input:focus { - border: 1px solid orange; -} -.sp-input.sp-validation-error { - border: 1px solid red; - background: #fdd; -} -.sp-picker-container , .sp-palette-container { - float:left; - position: relative; - padding: 10px; - padding-bottom: 300px; - margin-bottom: -290px; -} -.sp-picker-container { - width: 172px; - border-left: solid 1px #fff; -} - -/* Palettes */ -.sp-palette-container { - border-right: solid 1px #ccc; -} - -.sp-palette-only .sp-palette-container { - border: 0; -} - -.sp-palette .sp-thumb-el { - display: block; - position:relative; - float:left; - width: 24px; - height: 15px; - margin: 3px; - cursor: pointer; - border:solid 2px transparent; -} -.sp-palette .sp-thumb-el:hover, .sp-palette .sp-thumb-el.sp-thumb-active { - border-color: orange; -} -.sp-thumb-el { - position:relative; -} - -/* Initial */ -.sp-initial { - float: left; - border: solid 1px #333; -} -.sp-initial span { - width: 30px; - height: 25px; - border:none; - display:block; - float:left; - margin:0; -} - -.sp-initial .sp-clear-display { - background-position: center; -} - -/* Buttons */ -.sp-palette-button-container, -.sp-button-container { - float: right; -} - -/* Replacer (the little preview div that shows up instead of the ) */ -.sp-replacer { - margin:0; - overflow:hidden; - cursor:pointer; - padding: 4px; - display:inline-block; - *zoom: 1; - *display: inline; - border: solid 1px #91765d; - background: #eee; - color: #333; - vertical-align: middle; -} -.sp-replacer:hover, .sp-replacer.sp-active { - border-color: #F0C49B; - color: #111; -} -.sp-replacer.sp-disabled { - cursor:default; - border-color: silver; - color: silver; -} -.sp-dd { - padding: 2px 0; - height: 16px; - line-height: 16px; - float:left; - font-size:10px; -} -.sp-preview { - position:relative; - width:25px; - height: 20px; - border: solid 1px #222; - margin-right: 5px; - float:left; - z-index: 0; -} - -.sp-palette { - *width: 220px; - max-width: 220px; -} -.sp-palette .sp-thumb-el { - width:16px; - height: 16px; - margin:2px 1px; - border: solid 1px #d0d0d0; -} - -.sp-container { - padding-bottom:0; -} - - -/* Buttons: http://hellohappy.org/css3-buttons/ */ -.sp-container button { - background-color: #eeeeee; - background-image: -webkit-linear-gradient(top, #eeeeee, #cccccc); - background-image: -moz-linear-gradient(top, #eeeeee, #cccccc); - background-image: -ms-linear-gradient(top, #eeeeee, #cccccc); - background-image: -o-linear-gradient(top, #eeeeee, #cccccc); - background-image: linear-gradient(to bottom, #eeeeee, #cccccc); - border: 1px solid #ccc; - border-bottom: 1px solid #bbb; - border-radius: 3px; - color: #333; - font-size: 14px; - line-height: 1; - padding: 5px 4px; - text-align: center; - text-shadow: 0 1px 0 #eee; - vertical-align: middle; -} -.sp-container button:hover { - background-color: #dddddd; - background-image: -webkit-linear-gradient(top, #dddddd, #bbbbbb); - background-image: -moz-linear-gradient(top, #dddddd, #bbbbbb); - background-image: -ms-linear-gradient(top, #dddddd, #bbbbbb); - background-image: -o-linear-gradient(top, #dddddd, #bbbbbb); - background-image: linear-gradient(to bottom, #dddddd, #bbbbbb); - border: 1px solid #bbb; - border-bottom: 1px solid #999; - cursor: pointer; - text-shadow: 0 1px 0 #ddd; -} -.sp-container button:active { - border: 1px solid #aaa; - border-bottom: 1px solid #888; - -webkit-box-shadow: inset 0 0 5px 2px #aaaaaa, 0 1px 0 0 #eeeeee; - -moz-box-shadow: inset 0 0 5px 2px #aaaaaa, 0 1px 0 0 #eeeeee; - -ms-box-shadow: inset 0 0 5px 2px #aaaaaa, 0 1px 0 0 #eeeeee; - -o-box-shadow: inset 0 0 5px 2px #aaaaaa, 0 1px 0 0 #eeeeee; - box-shadow: inset 0 0 5px 2px #aaaaaa, 0 1px 0 0 #eeeeee; -} -.sp-cancel { - font-size: 11px; - color: #d93f3f !important; - margin:0; - padding:2px; - margin-right: 5px; - vertical-align: middle; - text-decoration:none; - -} -.sp-cancel:hover { - color: #d93f3f !important; - text-decoration: underline; -} - - -.sp-palette span:hover, .sp-palette span.sp-thumb-active { - border-color: #000; -} - -.sp-preview, .sp-alpha, .sp-thumb-el { - position:relative; - background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==); -} -.sp-preview-inner, .sp-alpha-inner, .sp-thumb-inner { - display:block; - position:absolute; - top:0;left:0;bottom:0;right:0; -} - -.sp-palette .sp-thumb-inner { - background-position: 50% 50%; - background-repeat: no-repeat; -} - -.sp-palette .sp-thumb-light.sp-thumb-active .sp-thumb-inner { - background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAIVJREFUeNpiYBhsgJFMffxAXABlN5JruT4Q3wfi/0DsT64h8UD8HmpIPCWG/KemIfOJCUB+Aoacx6EGBZyHBqI+WsDCwuQ9mhxeg2A210Ntfo8klk9sOMijaURm7yc1UP2RNCMbKE9ODK1HM6iegYLkfx8pligC9lCD7KmRof0ZhjQACDAAceovrtpVBRkAAAAASUVORK5CYII=); -} - -.sp-palette .sp-thumb-dark.sp-thumb-active .sp-thumb-inner { - background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAadEVYdFNvZnR3YXJlAFBhaW50Lk5FVCB2My41LjEwMPRyoQAAAMdJREFUOE+tkgsNwzAMRMugEAahEAahEAZhEAqlEAZhEAohEAYh81X2dIm8fKpEspLGvudPOsUYpxE2BIJCroJmEW9qJ+MKaBFhEMNabSy9oIcIPwrB+afvAUFoK4H0tMaQ3XtlrggDhOVVMuT4E5MMG0FBbCEYzjYT7OxLEvIHQLY2zWwQ3D+9luyOQTfKDiFD3iUIfPk8VqrKjgAiSfGFPecrg6HN6m/iBcwiDAo7WiBeawa+Kwh7tZoSCGLMqwlSAzVDhoK+6vH4G0P5wdkAAAAASUVORK5CYII=); -} - -.sp-clear-display { - background-repeat:no-repeat; - background-position: center; - background-image: url(data:image/gif;base64,R0lGODlhFAAUAPcAAAAAAJmZmZ2dnZ6enqKioqOjo6SkpKWlpaampqenp6ioqKmpqaqqqqurq/Hx8fLy8vT09PX19ff39/j4+Pn5+fr6+vv7+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAP8ALAAAAAAUABQAAAihAP9FoPCvoMGDBy08+EdhQAIJCCMybCDAAYUEARBAlFiQQoMABQhKUJBxY0SPICEYHBnggEmDKAuoPMjS5cGYMxHW3IiT478JJA8M/CjTZ0GgLRekNGpwAsYABHIypcAgQMsITDtWJYBR6NSqMico9cqR6tKfY7GeBCuVwlipDNmefAtTrkSzB1RaIAoXodsABiZAEFB06gIBWC1mLVgBa0AAOw==); -} diff --git a/site/modules/.FieldtypeColor/spectrum/spectrum.js b/site/modules/.FieldtypeColor/spectrum/spectrum.js deleted file mode 100644 index 6c48c12..0000000 --- a/site/modules/.FieldtypeColor/spectrum/spectrum.js +++ /dev/null @@ -1,2341 +0,0 @@ -// Spectrum Colorpicker v1.8.1 -// https://github.com/bgrins/spectrum -// Author: Brian Grinstead -// License: MIT - -(function (factory) { - "use strict"; - - if (typeof define === 'function' && define.amd) { // AMD - define(['jquery'], factory); - } - else if (typeof exports == "object" && typeof module == "object") { // CommonJS - module.exports = factory(require('jquery')); - } - else { // Browser - factory(jQuery); - } -})(function($, undefined) { - "use strict"; - - var defaultOpts = { - - // Callbacks - beforeShow: noop, - move: noop, - change: noop, - show: noop, - hide: noop, - - // Options - color: false, - flat: false, - showInput: false, - allowEmpty: false, - showButtons: true, - clickoutFiresChange: true, - showInitial: false, - showPalette: false, - showPaletteOnly: false, - hideAfterPaletteSelect: false, - togglePaletteOnly: false, - showSelectionPalette: true, - localStorageKey: false, - appendTo: "body", - maxSelectionSize: 7, - cancelText: "cancel", - chooseText: "choose", - togglePaletteMoreText: "more", - togglePaletteLessText: "less", - clearText: "Clear Color Selection", - noColorSelectedText: "No Color Selected", - preferredFormat: false, - className: "", // Deprecated - use containerClassName and replacerClassName instead. - containerClassName: "", - replacerClassName: "", - showAlpha: false, - theme: "sp-light", - palette: [["#ffffff", "#000000", "#ff0000", "#ff8000", "#ffff00", "#008000", "#0000ff", "#4b0082", "#9400d3"]], - selectionPalette: [], - disabled: false, - offset: null - }, - spectrums = [], - IE = !!/msie/i.exec( window.navigator.userAgent ), - rgbaSupport = (function() { - function contains( str, substr ) { - return !!~('' + str).indexOf(substr); - } - - var elem = document.createElement('div'); - var style = elem.style; - style.cssText = 'background-color:rgba(0,0,0,.5)'; - return contains(style.backgroundColor, 'rgba') || contains(style.backgroundColor, 'hsla'); - })(), - replaceInput = [ - "
", - "
", - "
", - "
" - ].join(''), - markup = (function () { - - // IE does not support gradients with multiple stops, so we need to simulate - // that for the rainbow slider with 8 divs that each have a single gradient - var gradientFix = ""; - if (IE) { - for (var i = 1; i <= 6; i++) { - gradientFix += "
"; - } - } - - return [ - "
", - "
", - "
", - "
", - "", - "
", - "
", - "
", - "
", - "
", - "
", - "
", - "
", - "
", - "
", - "
", - "
", - "
", - "
", - "
", - "
", - "
", - gradientFix, - "
", - "
", - "
", - "
", - "
", - "", - "
", - "
", - "
", - "", - "", - "
", - "
", - "
" - ].join(""); - })(); - - function paletteTemplate (p, color, className, opts) { - var html = []; - for (var i = 0; i < p.length; i++) { - var current = p[i]; - if(current) { - var tiny = tinycolor(current); - var c = tiny.toHsl().l < 0.5 ? "sp-thumb-el sp-thumb-dark" : "sp-thumb-el sp-thumb-light"; - c += (tinycolor.equals(color, current)) ? " sp-thumb-active" : ""; - var formattedString = tiny.toString(opts.preferredFormat || "rgb"); - var swatchStyle = rgbaSupport ? ("background-color:" + tiny.toRgbString()) : "filter:" + tiny.toFilter(); - html.push(''); - } else { - var cls = 'sp-clear-display'; - html.push($('
') - .append($('') - .attr('title', opts.noColorSelectedText) - ) - .html() - ); - } - } - return "
" + html.join('') + "
"; - } - - function hideAll() { - for (var i = 0; i < spectrums.length; i++) { - if (spectrums[i]) { - spectrums[i].hide(); - } - } - } - - function instanceOptions(o, callbackContext) { - var opts = $.extend({}, defaultOpts, o); - opts.callbacks = { - 'move': bind(opts.move, callbackContext), - 'change': bind(opts.change, callbackContext), - 'show': bind(opts.show, callbackContext), - 'hide': bind(opts.hide, callbackContext), - 'beforeShow': bind(opts.beforeShow, callbackContext) - }; - - return opts; - } - - function spectrum(element, o) { - - var opts = instanceOptions(o, element), - flat = opts.flat, - showSelectionPalette = opts.showSelectionPalette, - localStorageKey = opts.localStorageKey, - theme = opts.theme, - callbacks = opts.callbacks, - resize = throttle(reflow, 10), - visible = false, - isDragging = false, - dragWidth = 0, - dragHeight = 0, - dragHelperHeight = 0, - slideHeight = 0, - slideWidth = 0, - alphaWidth = 0, - alphaSlideHelperWidth = 0, - slideHelperHeight = 0, - currentHue = 0, - currentSaturation = 0, - currentValue = 0, - currentAlpha = 1, - palette = [], - paletteArray = [], - paletteLookup = {}, - selectionPalette = opts.selectionPalette.slice(0), - maxSelectionSize = opts.maxSelectionSize, - draggingClass = "sp-dragging", - shiftMovementDirection = null; - - var doc = element.ownerDocument, - body = doc.body, - boundElement = $(element), - disabled = false, - container = $(markup, doc).addClass(theme), - pickerContainer = container.find(".sp-picker-container"), - dragger = container.find(".sp-color"), - dragHelper = container.find(".sp-dragger"), - slider = container.find(".sp-hue"), - slideHelper = container.find(".sp-slider"), - alphaSliderInner = container.find(".sp-alpha-inner"), - alphaSlider = container.find(".sp-alpha"), - alphaSlideHelper = container.find(".sp-alpha-handle"), - textInput = container.find(".sp-input"), - paletteContainer = container.find(".sp-palette"), - initialColorContainer = container.find(".sp-initial"), - cancelButton = container.find(".sp-cancel"), - clearButton = container.find(".sp-clear"), - chooseButton = container.find(".sp-choose"), - toggleButton = container.find(".sp-palette-toggle"), - isInput = boundElement.is("input"), - isInputTypeColor = isInput && boundElement.attr("type") === "color" && inputTypeColorSupport(), - shouldReplace = isInput && !flat, - replacer = (shouldReplace) ? $(replaceInput).addClass(theme).addClass(opts.className).addClass(opts.replacerClassName) : $([]), - offsetElement = (shouldReplace) ? replacer : boundElement, - previewElement = replacer.find(".sp-preview-inner"), - initialColor = opts.color || (isInput && boundElement.val()), - colorOnShow = false, - currentPreferredFormat = opts.preferredFormat, - clickoutFiresChange = !opts.showButtons || opts.clickoutFiresChange, - isEmpty = !initialColor, - allowEmpty = opts.allowEmpty && !isInputTypeColor; - - function applyOptions() { - - if (opts.showPaletteOnly) { - opts.showPalette = true; - } - - toggleButton.text(opts.showPaletteOnly ? opts.togglePaletteMoreText : opts.togglePaletteLessText); - - if (opts.palette) { - palette = opts.palette.slice(0); - paletteArray = Array.isArray(palette[0]) ? palette : [palette]; - paletteLookup = {}; - for (var i = 0; i < paletteArray.length; i++) { - for (var j = 0; j < paletteArray[i].length; j++) { - var rgb = tinycolor(paletteArray[i][j]).toRgbString(); - paletteLookup[rgb] = true; - } - } - } - - container.toggleClass("sp-flat", flat); - container.toggleClass("sp-input-disabled", !opts.showInput); - container.toggleClass("sp-alpha-enabled", opts.showAlpha); - container.toggleClass("sp-clear-enabled", allowEmpty); - container.toggleClass("sp-buttons-disabled", !opts.showButtons); - container.toggleClass("sp-palette-buttons-disabled", !opts.togglePaletteOnly); - container.toggleClass("sp-palette-disabled", !opts.showPalette); - container.toggleClass("sp-palette-only", opts.showPaletteOnly); - container.toggleClass("sp-initial-disabled", !opts.showInitial); - container.addClass(opts.className).addClass(opts.containerClassName); - - reflow(); - } - - function initialize() { - - if (IE) { - container.find("*:not(input)").attr("unselectable", "on"); - } - - applyOptions(); - - if (shouldReplace) { - boundElement.after(replacer).hide(); - } - - if (!allowEmpty) { - clearButton.hide(); - } - - if (flat) { - boundElement.after(container).hide(); - } - else { - - var appendTo = opts.appendTo === "parent" ? boundElement.parent() : $(opts.appendTo); - if (appendTo.length !== 1) { - appendTo = $("body"); - } - - appendTo.append(container); - } - - updateSelectionPaletteFromStorage(); - - offsetElement.on("click.spectrum touchstart.spectrum", function (e) { - if (!disabled) { - toggle(); - } - - e.stopPropagation(); - - if (!$(e.target).is("input")) { - e.preventDefault(); - } - }); - - if(boundElement.is(":disabled") || (opts.disabled === true)) { - disable(); - } - - // Prevent clicks from bubbling up to document. This would cause it to be hidden. - container.on("click", stopPropagation); - - // Handle user typed input - textInput.on("change", setFromTextInput); - textInput.on("paste", function () { - setTimeout(setFromTextInput, 1); - }); - textInput.on("keydown", function (e) { if (e.keyCode == 13) { setFromTextInput(); } }); - - cancelButton.text(opts.cancelText); - cancelButton.on("click.spectrum", function (e) { - e.stopPropagation(); - e.preventDefault(); - revert(); - hide(); - }); - - clearButton.attr("title", opts.clearText); - clearButton.on("click.spectrum", function (e) { - e.stopPropagation(); - e.preventDefault(); - isEmpty = true; - move(); - - if(flat) { - //for the flat style, this is a change event - updateOriginalInput(true); - } - }); - - chooseButton.text(opts.chooseText); - chooseButton.on("click.spectrum", function (e) { - e.stopPropagation(); - e.preventDefault(); - - if (IE && textInput.is(":focus")) { - textInput.trigger('change'); - } - - if (isValid()) { - updateOriginalInput(true); - hide(); - } - }); - - toggleButton.text(opts.showPaletteOnly ? opts.togglePaletteMoreText : opts.togglePaletteLessText); - toggleButton.on("click.spectrum", function (e) { - e.stopPropagation(); - e.preventDefault(); - - opts.showPaletteOnly = !opts.showPaletteOnly; - - // To make sure the Picker area is drawn on the right, next to the - // Palette area (and not below the palette), first move the Palette - // to the left to make space for the picker, plus 5px extra. - // The 'applyOptions' function puts the whole container back into place - // and takes care of the button-text and the sp-palette-only CSS class. - if (!opts.showPaletteOnly && !flat) { - container.css('left', '-=' + (pickerContainer.outerWidth(true) + 5)); - } - applyOptions(); - }); - - draggable(alphaSlider, function (dragX, dragY, e) { - currentAlpha = (dragX / alphaWidth); - isEmpty = false; - if (e.shiftKey) { - currentAlpha = Math.round(currentAlpha * 10) / 10; - } - - move(); - }, dragStart, dragStop); - - draggable(slider, function (dragX, dragY) { - currentHue = parseFloat(dragY / slideHeight); - isEmpty = false; - if (!opts.showAlpha) { - currentAlpha = 1; - } - move(); - }, dragStart, dragStop); - - draggable(dragger, function (dragX, dragY, e) { - - // shift+drag should snap the movement to either the x or y axis. - if (!e.shiftKey) { - shiftMovementDirection = null; - } - else if (!shiftMovementDirection) { - var oldDragX = currentSaturation * dragWidth; - var oldDragY = dragHeight - (currentValue * dragHeight); - var furtherFromX = Math.abs(dragX - oldDragX) > Math.abs(dragY - oldDragY); - - shiftMovementDirection = furtherFromX ? "x" : "y"; - } - - var setSaturation = !shiftMovementDirection || shiftMovementDirection === "x"; - var setValue = !shiftMovementDirection || shiftMovementDirection === "y"; - - if (setSaturation) { - currentSaturation = parseFloat(dragX / dragWidth); - } - if (setValue) { - currentValue = parseFloat((dragHeight - dragY) / dragHeight); - } - - isEmpty = false; - if (!opts.showAlpha) { - currentAlpha = 1; - } - - move(); - - }, dragStart, dragStop); - - if (!!initialColor) { - set(initialColor); - - // In case color was black - update the preview UI and set the format - // since the set function will not run (default color is black). - updateUI(); - currentPreferredFormat = opts.preferredFormat || tinycolor(initialColor).format; - - addColorToSelectionPalette(initialColor); - } - else { - updateUI(); - } - - if (flat) { - show(); - } - - function paletteElementClick(e) { - if (e.data && e.data.ignore) { - set($(e.target).closest(".sp-thumb-el").data("color")); - move(); - } - else { - set($(e.target).closest(".sp-thumb-el").data("color")); - move(); - - // If the picker is going to close immediately, a palette selection - // is a change. Otherwise, it's a move only. - if (opts.hideAfterPaletteSelect) { - updateOriginalInput(true); - hide(); - } else { - updateOriginalInput(); - } - } - - return false; - } - - var paletteEvent = IE ? "mousedown.spectrum" : "click.spectrum touchstart.spectrum"; - paletteContainer.on(paletteEvent, ".sp-thumb-el", paletteElementClick); - initialColorContainer.on(paletteEvent, ".sp-thumb-el:nth-child(1)", { ignore: true }, paletteElementClick); - } - - function updateSelectionPaletteFromStorage() { - - if (localStorageKey && window.localStorage) { - - // Migrate old palettes over to new format. May want to remove this eventually. - try { - var oldPalette = window.localStorage[localStorageKey].split(",#"); - if (oldPalette.length > 1) { - delete window.localStorage[localStorageKey]; - $.each(oldPalette, function(i, c) { - addColorToSelectionPalette(c); - }); - } - } - catch(e) { } - - try { - selectionPalette = window.localStorage[localStorageKey].split(";"); - } - catch (e) { } - } - } - - function addColorToSelectionPalette(color) { - if (showSelectionPalette) { - var rgb = tinycolor(color).toRgbString(); - if (!paletteLookup[rgb] && $.inArray(rgb, selectionPalette) === -1) { - selectionPalette.push(rgb); - while(selectionPalette.length > maxSelectionSize) { - selectionPalette.shift(); - } - } - - if (localStorageKey && window.localStorage) { - try { - window.localStorage[localStorageKey] = selectionPalette.join(";"); - } - catch(e) { } - } - } - } - - function getUniqueSelectionPalette() { - var unique = []; - if (opts.showPalette) { - for (var i = 0; i < selectionPalette.length; i++) { - var rgb = tinycolor(selectionPalette[i]).toRgbString(); - - if (!paletteLookup[rgb]) { - unique.push(selectionPalette[i]); - } - } - } - - return unique.reverse().slice(0, opts.maxSelectionSize); - } - - function drawPalette() { - - var currentColor = get(); - - var html = $.map(paletteArray, function (palette, i) { - return paletteTemplate(palette, currentColor, "sp-palette-row sp-palette-row-" + i, opts); - }); - - updateSelectionPaletteFromStorage(); - - if (selectionPalette) { - html.push(paletteTemplate(getUniqueSelectionPalette(), currentColor, "sp-palette-row sp-palette-row-selection", opts)); - } - - paletteContainer.html(html.join("")); - } - - function drawInitial() { - if (opts.showInitial) { - var initial = colorOnShow; - var current = get(); - initialColorContainer.html(paletteTemplate([initial, current], current, "sp-palette-row-initial", opts)); - } - } - - function dragStart() { - if (dragHeight <= 0 || dragWidth <= 0 || slideHeight <= 0) { - reflow(); - } - isDragging = true; - container.addClass(draggingClass); - shiftMovementDirection = null; - boundElement.trigger('dragstart.spectrum', [ get() ]); - } - - function dragStop() { - isDragging = false; - container.removeClass(draggingClass); - boundElement.trigger('dragstop.spectrum', [ get() ]); - } - - function setFromTextInput() { - - var value = textInput.val(); - - if ((value === null || value === "") && allowEmpty) { - set(null); - move(); - updateOriginalInput(); - } - else { - var tiny = tinycolor(value); - if (tiny.isValid()) { - set(tiny); - move(); - updateOriginalInput(); - } - else { - textInput.addClass("sp-validation-error"); - } - } - } - - function toggle() { - if (visible) { - hide(); - } - else { - show(); - } - } - - function show() { - var event = $.Event('beforeShow.spectrum'); - - if (visible) { - reflow(); - return; - } - - boundElement.trigger(event, [ get() ]); - - if (callbacks.beforeShow(get()) === false || event.isDefaultPrevented()) { - return; - } - - hideAll(); - visible = true; - - $(doc).on("keydown.spectrum", onkeydown); - $(doc).on("click.spectrum", clickout); - $(window).on("resize.spectrum", resize); - replacer.addClass("sp-active"); - container.removeClass("sp-hidden"); - - reflow(); - updateUI(); - - colorOnShow = get(); - - drawInitial(); - callbacks.show(colorOnShow); - boundElement.trigger('show.spectrum', [ colorOnShow ]); - } - - function onkeydown(e) { - // Close on ESC - if (e.keyCode === 27) { - hide(); - } - } - - function clickout(e) { - // Return on right click. - if (e.button == 2) { return; } - - // If a drag event was happening during the mouseup, don't hide - // on click. - if (isDragging) { return; } - - if (clickoutFiresChange) { - updateOriginalInput(true); - } - else { - revert(); - } - hide(); - } - - function hide() { - // Return if hiding is unnecessary - if (!visible || flat) { return; } - visible = false; - - $(doc).off("keydown.spectrum", onkeydown); - $(doc).off("click.spectrum", clickout); - $(window).off("resize.spectrum", resize); - - replacer.removeClass("sp-active"); - container.addClass("sp-hidden"); - - callbacks.hide(get()); - boundElement.trigger('hide.spectrum', [ get() ]); - } - - function revert() { - set(colorOnShow, true); - updateOriginalInput(true); - } - - function set(color, ignoreFormatChange) { - if (tinycolor.equals(color, get())) { - // Update UI just in case a validation error needs - // to be cleared. - updateUI(); - return; - } - - var newColor, newHsv; - if (!color && allowEmpty) { - isEmpty = true; - } else { - isEmpty = false; - newColor = tinycolor(color); - newHsv = newColor.toHsv(); - - currentHue = (newHsv.h % 360) / 360; - currentSaturation = newHsv.s; - currentValue = newHsv.v; - currentAlpha = newHsv.a; - } - updateUI(); - - if (newColor && newColor.isValid() && !ignoreFormatChange) { - currentPreferredFormat = opts.preferredFormat || newColor.getFormat(); - } - } - - function get(opts) { - opts = opts || { }; - - if (allowEmpty && isEmpty) { - return null; - } - - return tinycolor.fromRatio({ - h: currentHue, - s: currentSaturation, - v: currentValue, - a: Math.round(currentAlpha * 1000) / 1000 - }, { format: opts.format || currentPreferredFormat }); - } - - function isValid() { - return !textInput.hasClass("sp-validation-error"); - } - - function move() { - updateUI(); - - callbacks.move(get()); - boundElement.trigger('move.spectrum', [ get() ]); - } - - function updateUI() { - - textInput.removeClass("sp-validation-error"); - - updateHelperLocations(); - - // Update dragger background color (gradients take care of saturation and value). - var flatColor = tinycolor.fromRatio({ h: currentHue, s: 1, v: 1 }); - dragger.css("background-color", flatColor.toHexString()); - - // Get a format that alpha will be included in (hex and names ignore alpha) - var format = currentPreferredFormat; - if (currentAlpha < 1 && !(currentAlpha === 0 && format === "name")) { - if (format === "hex" || format === "hex3" || format === "hex6" || format === "name") { - format = "rgb"; - } - } - - var realColor = get({ format: format }), - displayColor = ''; - - //reset background info for preview element - previewElement.removeClass("sp-clear-display"); - previewElement.css('background-color', 'transparent'); - - if (!realColor && allowEmpty) { - // Update the replaced elements background with icon indicating no color selection - previewElement.addClass("sp-clear-display"); - } - else { - var realHex = realColor.toHexString(), - realRgb = realColor.toRgbString(); - - // Update the replaced elements background color (with actual selected color) - if (rgbaSupport || realColor.alpha === 1) { - previewElement.css("background-color", realRgb); - } - else { - previewElement.css("background-color", "transparent"); - previewElement.css("filter", realColor.toFilter()); - } - - if (opts.showAlpha) { - var rgb = realColor.toRgb(); - rgb.a = 0; - var realAlpha = tinycolor(rgb).toRgbString(); - var gradient = "linear-gradient(left, " + realAlpha + ", " + realHex + ")"; - - if (IE) { - alphaSliderInner.css("filter", tinycolor(realAlpha).toFilter({ gradientType: 1 }, realHex)); - } - else { - alphaSliderInner.css("background", "-webkit-" + gradient); - alphaSliderInner.css("background", "-moz-" + gradient); - alphaSliderInner.css("background", "-ms-" + gradient); - // Use current syntax gradient on unprefixed property. - alphaSliderInner.css("background", - "linear-gradient(to right, " + realAlpha + ", " + realHex + ")"); - } - } - - displayColor = realColor.toString(format); - } - - // Update the text entry input as it changes happen - if (opts.showInput) { - textInput.val(displayColor); - } - - if (opts.showPalette) { - drawPalette(); - } - - drawInitial(); - } - - function updateHelperLocations() { - var s = currentSaturation; - var v = currentValue; - - if(allowEmpty && isEmpty) { - //if selected color is empty, hide the helpers - alphaSlideHelper.hide(); - slideHelper.hide(); - dragHelper.hide(); - } - else { - //make sure helpers are visible - alphaSlideHelper.show(); - slideHelper.show(); - dragHelper.show(); - - // Where to show the little circle in that displays your current selected color - var dragX = s * dragWidth; - var dragY = dragHeight - (v * dragHeight); - dragX = Math.max( - -dragHelperHeight, - Math.min(dragWidth - dragHelperHeight, dragX - dragHelperHeight) - ); - dragY = Math.max( - -dragHelperHeight, - Math.min(dragHeight - dragHelperHeight, dragY - dragHelperHeight) - ); - dragHelper.css({ - "top": dragY + "px", - "left": dragX + "px" - }); - - var alphaX = currentAlpha * alphaWidth; - alphaSlideHelper.css({ - "left": (alphaX - (alphaSlideHelperWidth / 2)) + "px" - }); - - // Where to show the bar that displays your current selected hue - var slideY = (currentHue) * slideHeight; - slideHelper.css({ - "top": (slideY - slideHelperHeight) + "px" - }); - } - } - - function updateOriginalInput(fireCallback) { - var color = get(), - displayColor = '', - hasChanged = !tinycolor.equals(color, colorOnShow); - - if (color) { - displayColor = color.toString(currentPreferredFormat); - // Update the selection palette with the current color - addColorToSelectionPalette(color); - } - - if (isInput) { - boundElement.val(displayColor); - } - - if (fireCallback && hasChanged) { - callbacks.change(color); - boundElement.trigger('change', [ color ]); - } - } - - function reflow() { - if (!visible) { - return; // Calculations would be useless and wouldn't be reliable anyways - } - dragWidth = dragger.width(); - dragHeight = dragger.height(); - dragHelperHeight = dragHelper.height(); - slideWidth = slider.width(); - slideHeight = slider.height(); - slideHelperHeight = slideHelper.height(); - alphaWidth = alphaSlider.width(); - alphaSlideHelperWidth = alphaSlideHelper.width(); - - if (!flat) { - container.css("position", "absolute"); - if (opts.offset) { - container.offset(opts.offset); - } else { - container.offset(getOffset(container, offsetElement)); - } - } - - updateHelperLocations(); - - if (opts.showPalette) { - drawPalette(); - } - - boundElement.trigger('reflow.spectrum'); - } - - function destroy() { - boundElement.show(); - offsetElement.off("click.spectrum touchstart.spectrum"); - container.remove(); - replacer.remove(); - spectrums[spect.id] = null; - } - - function option(optionName, optionValue) { - if (optionName === undefined) { - return $.extend({}, opts); - } - if (optionValue === undefined) { - return opts[optionName]; - } - - opts[optionName] = optionValue; - - if (optionName === "preferredFormat") { - currentPreferredFormat = opts.preferredFormat; - } - applyOptions(); - } - - function enable() { - disabled = false; - boundElement.attr("disabled", false); - offsetElement.removeClass("sp-disabled"); - } - - function disable() { - hide(); - disabled = true; - boundElement.attr("disabled", true); - offsetElement.addClass("sp-disabled"); - } - - function setOffset(coord) { - opts.offset = coord; - reflow(); - } - - initialize(); - - var spect = { - show: show, - hide: hide, - toggle: toggle, - reflow: reflow, - option: option, - enable: enable, - disable: disable, - offset: setOffset, - set: function (c) { - set(c); - updateOriginalInput(); - }, - get: get, - destroy: destroy, - container: container - }; - - spect.id = spectrums.push(spect) - 1; - - return spect; - } - - /** - * checkOffset - get the offset below/above and left/right element depending on screen position - * Thanks https://github.com/jquery/jquery-ui/blob/master/ui/jquery.ui.datepicker.js - */ - function getOffset(picker, input) { - var extraY = 0; - var dpWidth = picker.outerWidth(); - var dpHeight = picker.outerHeight(); - var inputHeight = input.outerHeight(); - var doc = picker[0].ownerDocument; - var docElem = doc.documentElement; - var viewWidth = docElem.clientWidth + $(doc).scrollLeft(); - var viewHeight = docElem.clientHeight + $(doc).scrollTop(); - var offset = input.offset(); - var offsetLeft = offset.left; - var offsetTop = offset.top; - - offsetTop += inputHeight; - - offsetLeft -= - Math.min(offsetLeft, (offsetLeft + dpWidth > viewWidth && viewWidth > dpWidth) ? - Math.abs(offsetLeft + dpWidth - viewWidth) : 0); - - offsetTop -= - Math.min(offsetTop, ((offsetTop + dpHeight > viewHeight && viewHeight > dpHeight) ? - Math.abs(dpHeight + inputHeight - extraY) : extraY)); - - return { - top: offsetTop, - bottom: offset.bottom, - left: offsetLeft, - right: offset.right, - width: offset.width, - height: offset.height - }; - } - - /** - * noop - do nothing - */ - function noop() { - - } - - /** - * stopPropagation - makes the code only doing this a little easier to read in line - */ - function stopPropagation(e) { - e.stopPropagation(); - } - - /** - * Create a function bound to a given object - * Thanks to underscore.js - */ - function bind(func, obj) { - var slice = Array.prototype.slice; - var args = slice.call(arguments, 2); - return function () { - return func.apply(obj, args.concat(slice.call(arguments))); - }; - } - - /** - * Lightweight drag helper. Handles containment within the element, so that - * when dragging, the x is within [0,element.width] and y is within [0,element.height] - */ - function draggable(element, onmove, onstart, onstop) { - onmove = onmove || function () { }; - onstart = onstart || function () { }; - onstop = onstop || function () { }; - var doc = document; - var dragging = false; - var offset = {}; - var maxHeight = 0; - var maxWidth = 0; - var hasTouch = ('ontouchstart' in window); - - var duringDragEvents = {}; - duringDragEvents["selectstart"] = prevent; - duringDragEvents["dragstart"] = prevent; - duringDragEvents["touchmove mousemove"] = move; - duringDragEvents["touchend mouseup"] = stop; - - function prevent(e) { - if (e.stopPropagation) { - e.stopPropagation(); - } - if (e.preventDefault) { - e.preventDefault(); - } - e.returnValue = false; - } - - function move(e) { - if (dragging) { - // Mouseup happened outside of window - if (IE && doc.documentMode < 9 && !e.button) { - return stop(); - } - - var t0 = e.originalEvent && e.originalEvent.touches && e.originalEvent.touches[0]; - var pageX = t0 && t0.pageX || e.pageX; - var pageY = t0 && t0.pageY || e.pageY; - - var dragX = Math.max(0, Math.min(pageX - offset.left, maxWidth)); - var dragY = Math.max(0, Math.min(pageY - offset.top, maxHeight)); - - if (hasTouch) { - // Stop scrolling in iOS - prevent(e); - } - - onmove.apply(element, [dragX, dragY, e]); - } - } - - function start(e) { - var rightclick = (e.which) ? (e.which == 3) : (e.button == 2); - - if (!rightclick && !dragging) { - if (onstart.apply(element, arguments) !== false) { - dragging = true; - maxHeight = $(element).height(); - maxWidth = $(element).width(); - offset = $(element).offset(); - - $(doc).on(duringDragEvents); - $(doc.body).addClass("sp-dragging"); - - move(e); - - prevent(e); - } - } - } - - function stop() { - if (dragging) { - $(doc).off(duringDragEvents); - $(doc.body).removeClass("sp-dragging"); - - // Wait a tick before notifying observers to allow the click event - // to fire in Chrome. - setTimeout(function() { - onstop.apply(element, arguments); - }, 0); - } - dragging = false; - } - - $(element).on("touchstart mousedown", start); - } - - function throttle(func, wait, debounce) { - var timeout; - return function () { - var context = this, args = arguments; - var throttler = function () { - timeout = null; - func.apply(context, args); - }; - if (debounce) clearTimeout(timeout); - if (debounce || !timeout) timeout = setTimeout(throttler, wait); - }; - } - - function inputTypeColorSupport() { - return $.fn.spectrum.inputTypeColorSupport(); - } - - /** - * Define a jQuery plugin - */ - var dataID = "spectrum.id"; - $.fn.spectrum = function (opts, extra) { - - if (typeof opts == "string") { - - var returnValue = this; - var args = Array.prototype.slice.call( arguments, 1 ); - - this.each(function () { - var spect = spectrums[$(this).data(dataID)]; - if (spect) { - var method = spect[opts]; - if (!method) { - throw new Error( "Spectrum: no such method: '" + opts + "'" ); - } - - if (opts == "get") { - returnValue = spect.get(); - } - else if (opts == "container") { - returnValue = spect.container; - } - else if (opts == "option") { - returnValue = spect.option.apply(spect, args); - } - else if (opts == "destroy") { - spect.destroy(); - $(this).removeData(dataID); - } - else { - method.apply(spect, args); - } - } - }); - - return returnValue; - } - - // Initializing a new instance of spectrum - return this.spectrum("destroy").each(function () { - var options = $.extend({}, $(this).data(), opts); - var spect = spectrum(this, options); - $(this).data(dataID, spect.id); - }); - }; - - $.fn.spectrum.load = true; - $.fn.spectrum.loadOpts = {}; - $.fn.spectrum.draggable = draggable; - $.fn.spectrum.defaults = defaultOpts; - $.fn.spectrum.inputTypeColorSupport = function inputTypeColorSupport() { - if (typeof inputTypeColorSupport._cachedResult === "undefined") { - var colorInput = $("")[0]; // if color element is supported, value will default to not null - inputTypeColorSupport._cachedResult = colorInput.type === "color" && colorInput.value !== ""; - } - return inputTypeColorSupport._cachedResult; - }; - - $.spectrum = { }; - $.spectrum.localization = { }; - $.spectrum.palettes = { }; - - $.fn.spectrum.processNativeColorInputs = function () { - var colorInputs = $("input[type=color]"); - if (colorInputs.length && !inputTypeColorSupport()) { - colorInputs.spectrum({ - preferredFormat: "hex6" - }); - } - }; - - // TinyColor v1.1.2 - // https://github.com/bgrins/TinyColor - // Brian Grinstead, MIT License - - (function() { - - var trimLeft = /^[\s,#]+/, - trimRight = /\s+$/, - tinyCounter = 0, - math = Math, - mathRound = math.round, - mathMin = math.min, - mathMax = math.max, - mathRandom = math.random; - - var tinycolor = function(color, opts) { - - color = (color) ? color : ''; - opts = opts || { }; - - // If input is already a tinycolor, return itself - if (color instanceof tinycolor) { - return color; - } - // If we are called as a function, call using new instead - if (!(this instanceof tinycolor)) { - return new tinycolor(color, opts); - } - - var rgb = inputToRGB(color); - this._originalInput = color; - this._r = rgb.r; - this._g = rgb.g; - this._b = rgb.b; - this._a = rgb.a; - this._roundA = mathRound(1000 * this._a) / 1000; - this._format = opts.format || rgb.format; - this._gradientType = opts.gradientType; - - // Don't let the range of [0,255] come back in [0,1]. - // Potentially lose a little bit of precision here, but will fix issues where - // .5 gets interpreted as half of the total, instead of half of 1 - // If it was supposed to be 128, this was already taken care of by `inputToRgb` - if (this._r < 1) { this._r = mathRound(this._r); } - if (this._g < 1) { this._g = mathRound(this._g); } - if (this._b < 1) { this._b = mathRound(this._b); } - - this._ok = rgb.ok; - this._tc_id = tinyCounter++; - }; - - tinycolor.prototype = { - isDark: function() { - return this.getBrightness() < 128; - }, - isLight: function() { - return !this.isDark(); - }, - isValid: function() { - return this._ok; - }, - getOriginalInput: function() { - return this._originalInput; - }, - getFormat: function() { - return this._format; - }, - getAlpha: function() { - return this._a; - }, - getBrightness: function() { - var rgb = this.toRgb(); - return (rgb.r * 299 + rgb.g * 587 + rgb.b * 114) / 1000; - }, - setAlpha: function(value) { - this._a = boundAlpha(value); - this._roundA = mathRound(1000 * this._a) / 1000; - return this; - }, - toHsv: function() { - var hsv = rgbToHsv(this._r, this._g, this._b); - return { h: hsv.h * 360, s: hsv.s, v: hsv.v, a: this._a }; - }, - toHsvString: function() { - var hsv = rgbToHsv(this._r, this._g, this._b); - var h = mathRound(hsv.h * 360), s = mathRound(hsv.s * 100), v = mathRound(hsv.v * 100); - return (this._a == 1) ? - "hsv(" + h + ", " + s + "%, " + v + "%)" : - "hsva(" + h + ", " + s + "%, " + v + "%, "+ this._roundA + ")"; - }, - toHsl: function() { - var hsl = rgbToHsl(this._r, this._g, this._b); - return { h: hsl.h * 360, s: hsl.s, l: hsl.l, a: this._a }; - }, - toHslString: function() { - var hsl = rgbToHsl(this._r, this._g, this._b); - var h = mathRound(hsl.h * 360), s = mathRound(hsl.s * 100), l = mathRound(hsl.l * 100); - return (this._a == 1) ? - "hsl(" + h + ", " + s + "%, " + l + "%)" : - "hsla(" + h + ", " + s + "%, " + l + "%, "+ this._roundA + ")"; - }, - toHex: function(allow3Char) { - return rgbToHex(this._r, this._g, this._b, allow3Char); - }, - toHexString: function(allow3Char) { - return '#' + this.toHex(allow3Char); - }, - toHex8: function() { - return rgbaToHex(this._r, this._g, this._b, this._a); - }, - toHex8String: function() { - return '#' + this.toHex8(); - }, - toRgb: function() { - return { r: mathRound(this._r), g: mathRound(this._g), b: mathRound(this._b), a: this._a }; - }, - toRgbString: function() { - return (this._a == 1) ? - "rgb(" + mathRound(this._r) + ", " + mathRound(this._g) + ", " + mathRound(this._b) + ")" : - "rgba(" + mathRound(this._r) + ", " + mathRound(this._g) + ", " + mathRound(this._b) + ", " + this._roundA + ")"; - }, - toPercentageRgb: function() { - return { r: mathRound(bound01(this._r, 255) * 100) + "%", g: mathRound(bound01(this._g, 255) * 100) + "%", b: mathRound(bound01(this._b, 255) * 100) + "%", a: this._a }; - }, - toPercentageRgbString: function() { - return (this._a == 1) ? - "rgb(" + mathRound(bound01(this._r, 255) * 100) + "%, " + mathRound(bound01(this._g, 255) * 100) + "%, " + mathRound(bound01(this._b, 255) * 100) + "%)" : - "rgba(" + mathRound(bound01(this._r, 255) * 100) + "%, " + mathRound(bound01(this._g, 255) * 100) + "%, " + mathRound(bound01(this._b, 255) * 100) + "%, " + this._roundA + ")"; - }, - toName: function() { - if (this._a === 0) { - return "transparent"; - } - - if (this._a < 1) { - return false; - } - - return hexNames[rgbToHex(this._r, this._g, this._b, true)] || false; - }, - toFilter: function(secondColor) { - var hex8String = '#' + rgbaToHex(this._r, this._g, this._b, this._a); - var secondHex8String = hex8String; - var gradientType = this._gradientType ? "GradientType = 1, " : ""; - - if (secondColor) { - var s = tinycolor(secondColor); - secondHex8String = s.toHex8String(); - } - - return "progid:DXImageTransform.Microsoft.gradient("+gradientType+"startColorstr="+hex8String+",endColorstr="+secondHex8String+")"; - }, - toString: function(format) { - var formatSet = !!format; - format = format || this._format; - - var formattedString = false; - var hasAlpha = this._a < 1 && this._a >= 0; - var needsAlphaFormat = !formatSet && hasAlpha && (format === "hex" || format === "hex6" || format === "hex3" || format === "name"); - - if (needsAlphaFormat) { - // Special case for "transparent", all other non-alpha formats - // will return rgba when there is transparency. - if (format === "name" && this._a === 0) { - return this.toName(); - } - return this.toRgbString(); - } - if (format === "rgb") { - formattedString = this.toRgbString(); - } - if (format === "prgb") { - formattedString = this.toPercentageRgbString(); - } - if (format === "hex" || format === "hex6") { - formattedString = this.toHexString(); - } - if (format === "hex3") { - formattedString = this.toHexString(true); - } - if (format === "hex8") { - formattedString = this.toHex8String(); - } - if (format === "name") { - formattedString = this.toName(); - } - if (format === "hsl") { - formattedString = this.toHslString(); - } - if (format === "hsv") { - formattedString = this.toHsvString(); - } - - return formattedString || this.toHexString(); - }, - - _applyModification: function(fn, args) { - var color = fn.apply(null, [this].concat([].slice.call(args))); - this._r = color._r; - this._g = color._g; - this._b = color._b; - this.setAlpha(color._a); - return this; - }, - lighten: function() { - return this._applyModification(lighten, arguments); - }, - brighten: function() { - return this._applyModification(brighten, arguments); - }, - darken: function() { - return this._applyModification(darken, arguments); - }, - desaturate: function() { - return this._applyModification(desaturate, arguments); - }, - saturate: function() { - return this._applyModification(saturate, arguments); - }, - greyscale: function() { - return this._applyModification(greyscale, arguments); - }, - spin: function() { - return this._applyModification(spin, arguments); - }, - - _applyCombination: function(fn, args) { - return fn.apply(null, [this].concat([].slice.call(args))); - }, - analogous: function() { - return this._applyCombination(analogous, arguments); - }, - complement: function() { - return this._applyCombination(complement, arguments); - }, - monochromatic: function() { - return this._applyCombination(monochromatic, arguments); - }, - splitcomplement: function() { - return this._applyCombination(splitcomplement, arguments); - }, - triad: function() { - return this._applyCombination(triad, arguments); - }, - tetrad: function() { - return this._applyCombination(tetrad, arguments); - } - }; - - // If input is an object, force 1 into "1.0" to handle ratios properly - // String input requires "1.0" as input, so 1 will be treated as 1 - tinycolor.fromRatio = function(color, opts) { - if (typeof color == "object") { - var newColor = {}; - for (var i in color) { - if (color.hasOwnProperty(i)) { - if (i === "a") { - newColor[i] = color[i]; - } - else { - newColor[i] = convertToPercentage(color[i]); - } - } - } - color = newColor; - } - - return tinycolor(color, opts); - }; - - // Given a string or object, convert that input to RGB - // Possible string inputs: - // - // "red" - // "#f00" or "f00" - // "#ff0000" or "ff0000" - // "#ff000000" or "ff000000" - // "rgb 255 0 0" or "rgb (255, 0, 0)" - // "rgb 1.0 0 0" or "rgb (1, 0, 0)" - // "rgba (255, 0, 0, 1)" or "rgba 255, 0, 0, 1" - // "rgba (1.0, 0, 0, 1)" or "rgba 1.0, 0, 0, 1" - // "hsl(0, 100%, 50%)" or "hsl 0 100% 50%" - // "hsla(0, 100%, 50%, 1)" or "hsla 0 100% 50%, 1" - // "hsv(0, 100%, 100%)" or "hsv 0 100% 100%" - // - function inputToRGB(color) { - - var rgb = { r: 0, g: 0, b: 0 }; - var a = 1; - var ok = false; - var format = false; - - if (typeof color == "string") { - color = stringInputToObject(color); - } - - if (typeof color == "object") { - if (color.hasOwnProperty("r") && color.hasOwnProperty("g") && color.hasOwnProperty("b")) { - rgb = rgbToRgb(color.r, color.g, color.b); - ok = true; - format = String(color.r).substr(-1) === "%" ? "prgb" : "rgb"; - } - else if (color.hasOwnProperty("h") && color.hasOwnProperty("s") && color.hasOwnProperty("v")) { - color.s = convertToPercentage(color.s); - color.v = convertToPercentage(color.v); - rgb = hsvToRgb(color.h, color.s, color.v); - ok = true; - format = "hsv"; - } - else if (color.hasOwnProperty("h") && color.hasOwnProperty("s") && color.hasOwnProperty("l")) { - color.s = convertToPercentage(color.s); - color.l = convertToPercentage(color.l); - rgb = hslToRgb(color.h, color.s, color.l); - ok = true; - format = "hsl"; - } - - if (color.hasOwnProperty("a")) { - a = color.a; - } - } - - a = boundAlpha(a); - - return { - ok: ok, - format: color.format || format, - r: mathMin(255, mathMax(rgb.r, 0)), - g: mathMin(255, mathMax(rgb.g, 0)), - b: mathMin(255, mathMax(rgb.b, 0)), - a: a - }; - } - - - // Conversion Functions - // -------------------- - - // `rgbToHsl`, `rgbToHsv`, `hslToRgb`, `hsvToRgb` modified from: - // - - // `rgbToRgb` - // Handle bounds / percentage checking to conform to CSS color spec - // - // *Assumes:* r, g, b in [0, 255] or [0, 1] - // *Returns:* { r, g, b } in [0, 255] - function rgbToRgb(r, g, b){ - return { - r: bound01(r, 255) * 255, - g: bound01(g, 255) * 255, - b: bound01(b, 255) * 255 - }; - } - - // `rgbToHsl` - // Converts an RGB color value to HSL. - // *Assumes:* r, g, and b are contained in [0, 255] or [0, 1] - // *Returns:* { h, s, l } in [0,1] - function rgbToHsl(r, g, b) { - - r = bound01(r, 255); - g = bound01(g, 255); - b = bound01(b, 255); - - var max = mathMax(r, g, b), min = mathMin(r, g, b); - var h, s, l = (max + min) / 2; - - if(max == min) { - h = s = 0; // achromatic - } - else { - var d = max - min; - s = l > 0.5 ? d / (2 - max - min) : d / (max + min); - switch(max) { - case r: h = (g - b) / d + (g < b ? 6 : 0); break; - case g: h = (b - r) / d + 2; break; - case b: h = (r - g) / d + 4; break; - } - - h /= 6; - } - - return { h: h, s: s, l: l }; - } - - // `hslToRgb` - // Converts an HSL color value to RGB. - // *Assumes:* h is contained in [0, 1] or [0, 360] and s and l are contained [0, 1] or [0, 100] - // *Returns:* { r, g, b } in the set [0, 255] - function hslToRgb(h, s, l) { - var r, g, b; - - h = bound01(h, 360); - s = bound01(s, 100); - l = bound01(l, 100); - - function hue2rgb(p, q, t) { - if(t < 0) t += 1; - if(t > 1) t -= 1; - if(t < 1/6) return p + (q - p) * 6 * t; - if(t < 1/2) return q; - if(t < 2/3) return p + (q - p) * (2/3 - t) * 6; - return p; - } - - if(s === 0) { - r = g = b = l; // achromatic - } - else { - var q = l < 0.5 ? l * (1 + s) : l + s - l * s; - var p = 2 * l - q; - r = hue2rgb(p, q, h + 1/3); - g = hue2rgb(p, q, h); - b = hue2rgb(p, q, h - 1/3); - } - - return { r: r * 255, g: g * 255, b: b * 255 }; - } - - // `rgbToHsv` - // Converts an RGB color value to HSV - // *Assumes:* r, g, and b are contained in the set [0, 255] or [0, 1] - // *Returns:* { h, s, v } in [0,1] - function rgbToHsv(r, g, b) { - - r = bound01(r, 255); - g = bound01(g, 255); - b = bound01(b, 255); - - var max = mathMax(r, g, b), min = mathMin(r, g, b); - var h, s, v = max; - - var d = max - min; - s = max === 0 ? 0 : d / max; - - if(max == min) { - h = 0; // achromatic - } - else { - switch(max) { - case r: h = (g - b) / d + (g < b ? 6 : 0); break; - case g: h = (b - r) / d + 2; break; - case b: h = (r - g) / d + 4; break; - } - h /= 6; - } - return { h: h, s: s, v: v }; - } - - // `hsvToRgb` - // Converts an HSV color value to RGB. - // *Assumes:* h is contained in [0, 1] or [0, 360] and s and v are contained in [0, 1] or [0, 100] - // *Returns:* { r, g, b } in the set [0, 255] - function hsvToRgb(h, s, v) { - - h = bound01(h, 360) * 6; - s = bound01(s, 100); - v = bound01(v, 100); - - var i = math.floor(h), - f = h - i, - p = v * (1 - s), - q = v * (1 - f * s), - t = v * (1 - (1 - f) * s), - mod = i % 6, - r = [v, q, p, p, t, v][mod], - g = [t, v, v, q, p, p][mod], - b = [p, p, t, v, v, q][mod]; - - return { r: r * 255, g: g * 255, b: b * 255 }; - } - - // `rgbToHex` - // Converts an RGB color to hex - // Assumes r, g, and b are contained in the set [0, 255] - // Returns a 3 or 6 character hex - function rgbToHex(r, g, b, allow3Char) { - - var hex = [ - pad2(mathRound(r).toString(16)), - pad2(mathRound(g).toString(16)), - pad2(mathRound(b).toString(16)) - ]; - - // Return a 3 character hex if possible - if (allow3Char && hex[0].charAt(0) == hex[0].charAt(1) && hex[1].charAt(0) == hex[1].charAt(1) && hex[2].charAt(0) == hex[2].charAt(1)) { - return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0); - } - - return hex.join(""); - } - // `rgbaToHex` - // Converts an RGBA color plus alpha transparency to hex - // Assumes r, g, b and a are contained in the set [0, 255] - // Returns an 8 character hex - function rgbaToHex(r, g, b, a) { - - var hex = [ - pad2(convertDecimalToHex(a)), - pad2(mathRound(r).toString(16)), - pad2(mathRound(g).toString(16)), - pad2(mathRound(b).toString(16)) - ]; - - return hex.join(""); - } - - // `equals` - // Can be called with any tinycolor input - tinycolor.equals = function (color1, color2) { - if (!color1 || !color2) { return false; } - return tinycolor(color1).toRgbString() == tinycolor(color2).toRgbString(); - }; - tinycolor.random = function() { - return tinycolor.fromRatio({ - r: mathRandom(), - g: mathRandom(), - b: mathRandom() - }); - }; - - - // Modification Functions - // ---------------------- - // Thanks to less.js for some of the basics here - // - - function desaturate(color, amount) { - amount = (amount === 0) ? 0 : (amount || 10); - var hsl = tinycolor(color).toHsl(); - hsl.s -= amount / 100; - hsl.s = clamp01(hsl.s); - return tinycolor(hsl); - } - - function saturate(color, amount) { - amount = (amount === 0) ? 0 : (amount || 10); - var hsl = tinycolor(color).toHsl(); - hsl.s += amount / 100; - hsl.s = clamp01(hsl.s); - return tinycolor(hsl); - } - - function greyscale(color) { - return tinycolor(color).desaturate(100); - } - - function lighten (color, amount) { - amount = (amount === 0) ? 0 : (amount || 10); - var hsl = tinycolor(color).toHsl(); - hsl.l += amount / 100; - hsl.l = clamp01(hsl.l); - return tinycolor(hsl); - } - - function brighten(color, amount) { - amount = (amount === 0) ? 0 : (amount || 10); - var rgb = tinycolor(color).toRgb(); - rgb.r = mathMax(0, mathMin(255, rgb.r - mathRound(255 * - (amount / 100)))); - rgb.g = mathMax(0, mathMin(255, rgb.g - mathRound(255 * - (amount / 100)))); - rgb.b = mathMax(0, mathMin(255, rgb.b - mathRound(255 * - (amount / 100)))); - return tinycolor(rgb); - } - - function darken (color, amount) { - amount = (amount === 0) ? 0 : (amount || 10); - var hsl = tinycolor(color).toHsl(); - hsl.l -= amount / 100; - hsl.l = clamp01(hsl.l); - return tinycolor(hsl); - } - - // Spin takes a positive or negative amount within [-360, 360] indicating the change of hue. - // Values outside of this range will be wrapped into this range. - function spin(color, amount) { - var hsl = tinycolor(color).toHsl(); - var hue = (mathRound(hsl.h) + amount) % 360; - hsl.h = hue < 0 ? 360 + hue : hue; - return tinycolor(hsl); - } - - // Combination Functions - // --------------------- - // Thanks to jQuery xColor for some of the ideas behind these - // - - function complement(color) { - var hsl = tinycolor(color).toHsl(); - hsl.h = (hsl.h + 180) % 360; - return tinycolor(hsl); - } - - function triad(color) { - var hsl = tinycolor(color).toHsl(); - var h = hsl.h; - return [ - tinycolor(color), - tinycolor({ h: (h + 120) % 360, s: hsl.s, l: hsl.l }), - tinycolor({ h: (h + 240) % 360, s: hsl.s, l: hsl.l }) - ]; - } - - function tetrad(color) { - var hsl = tinycolor(color).toHsl(); - var h = hsl.h; - return [ - tinycolor(color), - tinycolor({ h: (h + 90) % 360, s: hsl.s, l: hsl.l }), - tinycolor({ h: (h + 180) % 360, s: hsl.s, l: hsl.l }), - tinycolor({ h: (h + 270) % 360, s: hsl.s, l: hsl.l }) - ]; - } - - function splitcomplement(color) { - var hsl = tinycolor(color).toHsl(); - var h = hsl.h; - return [ - tinycolor(color), - tinycolor({ h: (h + 72) % 360, s: hsl.s, l: hsl.l}), - tinycolor({ h: (h + 216) % 360, s: hsl.s, l: hsl.l}) - ]; - } - - function analogous(color, results, slices) { - results = results || 6; - slices = slices || 30; - - var hsl = tinycolor(color).toHsl(); - var part = 360 / slices; - var ret = [tinycolor(color)]; - - for (hsl.h = ((hsl.h - (part * results >> 1)) + 720) % 360; --results; ) { - hsl.h = (hsl.h + part) % 360; - ret.push(tinycolor(hsl)); - } - return ret; - } - - function monochromatic(color, results) { - results = results || 6; - var hsv = tinycolor(color).toHsv(); - var h = hsv.h, s = hsv.s, v = hsv.v; - var ret = []; - var modification = 1 / results; - - while (results--) { - ret.push(tinycolor({ h: h, s: s, v: v})); - v = (v + modification) % 1; - } - - return ret; - } - - // Utility Functions - // --------------------- - - tinycolor.mix = function(color1, color2, amount) { - amount = (amount === 0) ? 0 : (amount || 50); - - var rgb1 = tinycolor(color1).toRgb(); - var rgb2 = tinycolor(color2).toRgb(); - - var p = amount / 100; - var w = p * 2 - 1; - var a = rgb2.a - rgb1.a; - - var w1; - - if (w * a == -1) { - w1 = w; - } else { - w1 = (w + a) / (1 + w * a); - } - - w1 = (w1 + 1) / 2; - - var w2 = 1 - w1; - - var rgba = { - r: rgb2.r * w1 + rgb1.r * w2, - g: rgb2.g * w1 + rgb1.g * w2, - b: rgb2.b * w1 + rgb1.b * w2, - a: rgb2.a * p + rgb1.a * (1 - p) - }; - - return tinycolor(rgba); - }; - - - // Readability Functions - // --------------------- - // - - // `readability` - // Analyze the 2 colors and returns an object with the following properties: - // `brightness`: difference in brightness between the two colors - // `color`: difference in color/hue between the two colors - tinycolor.readability = function(color1, color2) { - var c1 = tinycolor(color1); - var c2 = tinycolor(color2); - var rgb1 = c1.toRgb(); - var rgb2 = c2.toRgb(); - var brightnessA = c1.getBrightness(); - var brightnessB = c2.getBrightness(); - var colorDiff = ( - Math.max(rgb1.r, rgb2.r) - Math.min(rgb1.r, rgb2.r) + - Math.max(rgb1.g, rgb2.g) - Math.min(rgb1.g, rgb2.g) + - Math.max(rgb1.b, rgb2.b) - Math.min(rgb1.b, rgb2.b) - ); - - return { - brightness: Math.abs(brightnessA - brightnessB), - color: colorDiff - }; - }; - - // `readable` - // http://www.w3.org/TR/AERT#color-contrast - // Ensure that foreground and background color combinations provide sufficient contrast. - // *Example* - // tinycolor.isReadable("#000", "#111") => false - tinycolor.isReadable = function(color1, color2) { - var readability = tinycolor.readability(color1, color2); - return readability.brightness > 125 && readability.color > 500; - }; - - // `mostReadable` - // Given a base color and a list of possible foreground or background - // colors for that base, returns the most readable color. - // *Example* - // tinycolor.mostReadable("#123", ["#fff", "#000"]) => "#000" - tinycolor.mostReadable = function(baseColor, colorList) { - var bestColor = null; - var bestScore = 0; - var bestIsReadable = false; - for (var i=0; i < colorList.length; i++) { - - // We normalize both around the "acceptable" breaking point, - // but rank brightness constrast higher than hue. - - var readability = tinycolor.readability(baseColor, colorList[i]); - var readable = readability.brightness > 125 && readability.color > 500; - var score = 3 * (readability.brightness / 125) + (readability.color / 500); - - if ((readable && ! bestIsReadable) || - (readable && bestIsReadable && score > bestScore) || - ((! readable) && (! bestIsReadable) && score > bestScore)) { - bestIsReadable = readable; - bestScore = score; - bestColor = tinycolor(colorList[i]); - } - } - return bestColor; - }; - - - // Big List of Colors - // ------------------ - // - var names = tinycolor.names = { - aliceblue: "f0f8ff", - antiquewhite: "faebd7", - aqua: "0ff", - aquamarine: "7fffd4", - azure: "f0ffff", - beige: "f5f5dc", - bisque: "ffe4c4", - black: "000", - blanchedalmond: "ffebcd", - blue: "00f", - blueviolet: "8a2be2", - brown: "a52a2a", - burlywood: "deb887", - burntsienna: "ea7e5d", - cadetblue: "5f9ea0", - chartreuse: "7fff00", - chocolate: "d2691e", - coral: "ff7f50", - cornflowerblue: "6495ed", - cornsilk: "fff8dc", - crimson: "dc143c", - cyan: "0ff", - darkblue: "00008b", - darkcyan: "008b8b", - darkgoldenrod: "b8860b", - darkgray: "a9a9a9", - darkgreen: "006400", - darkgrey: "a9a9a9", - darkkhaki: "bdb76b", - darkmagenta: "8b008b", - darkolivegreen: "556b2f", - darkorange: "ff8c00", - darkorchid: "9932cc", - darkred: "8b0000", - darksalmon: "e9967a", - darkseagreen: "8fbc8f", - darkslateblue: "483d8b", - darkslategray: "2f4f4f", - darkslategrey: "2f4f4f", - darkturquoise: "00ced1", - darkviolet: "9400d3", - deeppink: "ff1493", - deepskyblue: "00bfff", - dimgray: "696969", - dimgrey: "696969", - dodgerblue: "1e90ff", - firebrick: "b22222", - floralwhite: "fffaf0", - forestgreen: "228b22", - fuchsia: "f0f", - gainsboro: "dcdcdc", - ghostwhite: "f8f8ff", - gold: "ffd700", - goldenrod: "daa520", - gray: "808080", - green: "008000", - greenyellow: "adff2f", - grey: "808080", - honeydew: "f0fff0", - hotpink: "ff69b4", - indianred: "cd5c5c", - indigo: "4b0082", - ivory: "fffff0", - khaki: "f0e68c", - lavender: "e6e6fa", - lavenderblush: "fff0f5", - lawngreen: "7cfc00", - lemonchiffon: "fffacd", - lightblue: "add8e6", - lightcoral: "f08080", - lightcyan: "e0ffff", - lightgoldenrodyellow: "fafad2", - lightgray: "d3d3d3", - lightgreen: "90ee90", - lightgrey: "d3d3d3", - lightpink: "ffb6c1", - lightsalmon: "ffa07a", - lightseagreen: "20b2aa", - lightskyblue: "87cefa", - lightslategray: "789", - lightslategrey: "789", - lightsteelblue: "b0c4de", - lightyellow: "ffffe0", - lime: "0f0", - limegreen: "32cd32", - linen: "faf0e6", - magenta: "f0f", - maroon: "800000", - mediumaquamarine: "66cdaa", - mediumblue: "0000cd", - mediumorchid: "ba55d3", - mediumpurple: "9370db", - mediumseagreen: "3cb371", - mediumslateblue: "7b68ee", - mediumspringgreen: "00fa9a", - mediumturquoise: "48d1cc", - mediumvioletred: "c71585", - midnightblue: "191970", - mintcream: "f5fffa", - mistyrose: "ffe4e1", - moccasin: "ffe4b5", - navajowhite: "ffdead", - navy: "000080", - oldlace: "fdf5e6", - olive: "808000", - olivedrab: "6b8e23", - orange: "ffa500", - orangered: "ff4500", - orchid: "da70d6", - palegoldenrod: "eee8aa", - palegreen: "98fb98", - paleturquoise: "afeeee", - palevioletred: "db7093", - papayawhip: "ffefd5", - peachpuff: "ffdab9", - peru: "cd853f", - pink: "ffc0cb", - plum: "dda0dd", - powderblue: "b0e0e6", - purple: "800080", - rebeccapurple: "663399", - red: "f00", - rosybrown: "bc8f8f", - royalblue: "4169e1", - saddlebrown: "8b4513", - salmon: "fa8072", - sandybrown: "f4a460", - seagreen: "2e8b57", - seashell: "fff5ee", - sienna: "a0522d", - silver: "c0c0c0", - skyblue: "87ceeb", - slateblue: "6a5acd", - slategray: "708090", - slategrey: "708090", - snow: "fffafa", - springgreen: "00ff7f", - steelblue: "4682b4", - tan: "d2b48c", - teal: "008080", - thistle: "d8bfd8", - tomato: "ff6347", - turquoise: "40e0d0", - violet: "ee82ee", - wheat: "f5deb3", - white: "fff", - whitesmoke: "f5f5f5", - yellow: "ff0", - yellowgreen: "9acd32" - }; - - // Make it easy to access colors via `hexNames[hex]` - var hexNames = tinycolor.hexNames = flip(names); - - - // Utilities - // --------- - - // `{ 'name1': 'val1' }` becomes `{ 'val1': 'name1' }` - function flip(o) { - var flipped = { }; - for (var i in o) { - if (o.hasOwnProperty(i)) { - flipped[o[i]] = i; - } - } - return flipped; - } - - // Return a valid alpha value [0,1] with all invalid values being set to 1 - function boundAlpha(a) { - a = parseFloat(a); - - if (isNaN(a) || a < 0 || a > 1) { - a = 1; - } - - return a; - } - - // Take input from [0, n] and return it as [0, 1] - function bound01(n, max) { - if (isOnePointZero(n)) { n = "100%"; } - - var processPercent = isPercentage(n); - n = mathMin(max, mathMax(0, parseFloat(n))); - - // Automatically convert percentage into number - if (processPercent) { - n = parseInt(n * max, 10) / 100; - } - - // Handle floating point rounding errors - if ((math.abs(n - max) < 0.000001)) { - return 1; - } - - // Convert into [0, 1] range if it isn't already - return (n % max) / parseFloat(max); - } - - // Force a number between 0 and 1 - function clamp01(val) { - return mathMin(1, mathMax(0, val)); - } - - // Parse a base-16 hex value into a base-10 integer - function parseIntFromHex(val) { - return parseInt(val, 16); - } - - // Need to handle 1.0 as 100%, since once it is a number, there is no difference between it and 1 - // - function isOnePointZero(n) { - return typeof n == "string" && n.indexOf('.') != -1 && parseFloat(n) === 1; - } - - // Check to see if string passed in is a percentage - function isPercentage(n) { - return typeof n === "string" && n.indexOf('%') != -1; - } - - // Force a hex value to have 2 characters - function pad2(c) { - return c.length == 1 ? '0' + c : '' + c; - } - - // Replace a decimal with it's percentage value - function convertToPercentage(n) { - if (n <= 1) { - n = (n * 100) + "%"; - } - - return n; - } - - // Converts a decimal to a hex value - function convertDecimalToHex(d) { - return Math.round(parseFloat(d) * 255).toString(16); - } - // Converts a hex value to a decimal - function convertHexToDecimal(h) { - return (parseIntFromHex(h) / 255); - } - - var matchers = (function() { - - // - var CSS_INTEGER = "[-\\+]?\\d+%?"; - - // - var CSS_NUMBER = "[-\\+]?\\d*\\.\\d+%?"; - - // Allow positive/negative integer/number. Don't capture the either/or, just the entire outcome. - var CSS_UNIT = "(?:" + CSS_NUMBER + ")|(?:" + CSS_INTEGER + ")"; - - // Actual matching. - // Parentheses and commas are optional, but not required. - // Whitespace can take the place of commas or opening paren - var PERMISSIVE_MATCH3 = "[\\s|\\(]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")\\s*\\)?"; - var PERMISSIVE_MATCH4 = "[\\s|\\(]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")\\s*\\)?"; - - return { - rgb: new RegExp("rgb" + PERMISSIVE_MATCH3), - rgba: new RegExp("rgba" + PERMISSIVE_MATCH4), - hsl: new RegExp("hsl" + PERMISSIVE_MATCH3), - hsla: new RegExp("hsla" + PERMISSIVE_MATCH4), - hsv: new RegExp("hsv" + PERMISSIVE_MATCH3), - hsva: new RegExp("hsva" + PERMISSIVE_MATCH4), - hex3: /^([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/, - hex6: /^([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/, - hex8: /^([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/ - }; - })(); - - // `stringInputToObject` - // Permissive string parsing. Take in a number of formats, and output an object - // based on detected format. Returns `{ r, g, b }` or `{ h, s, l }` or `{ h, s, v}` - function stringInputToObject(color) { - - color = color.replace(trimLeft,'').replace(trimRight, '').toLowerCase(); - var named = false; - if (names[color]) { - color = names[color]; - named = true; - } - else if (color == 'transparent') { - return { r: 0, g: 0, b: 0, a: 0, format: "name" }; - } - - // Try to match string input using regular expressions. - // Keep most of the number bounding out of this function - don't worry about [0,1] or [0,100] or [0,360] - // Just return an object and let the conversion functions handle that. - // This way the result will be the same whether the tinycolor is initialized with string or object. - var match; - if ((match = matchers.rgb.exec(color))) { - return { r: match[1], g: match[2], b: match[3] }; - } - if ((match = matchers.rgba.exec(color))) { - return { r: match[1], g: match[2], b: match[3], a: match[4] }; - } - if ((match = matchers.hsl.exec(color))) { - return { h: match[1], s: match[2], l: match[3] }; - } - if ((match = matchers.hsla.exec(color))) { - return { h: match[1], s: match[2], l: match[3], a: match[4] }; - } - if ((match = matchers.hsv.exec(color))) { - return { h: match[1], s: match[2], v: match[3] }; - } - if ((match = matchers.hsva.exec(color))) { - return { h: match[1], s: match[2], v: match[3], a: match[4] }; - } - if ((match = matchers.hex8.exec(color))) { - return { - a: convertHexToDecimal(match[1]), - r: parseIntFromHex(match[2]), - g: parseIntFromHex(match[3]), - b: parseIntFromHex(match[4]), - format: named ? "name" : "hex8" - }; - } - if ((match = matchers.hex6.exec(color))) { - return { - r: parseIntFromHex(match[1]), - g: parseIntFromHex(match[2]), - b: parseIntFromHex(match[3]), - format: named ? "name" : "hex" - }; - } - if ((match = matchers.hex3.exec(color))) { - return { - r: parseIntFromHex(match[1] + '' + match[1]), - g: parseIntFromHex(match[2] + '' + match[2]), - b: parseIntFromHex(match[3] + '' + match[3]), - format: named ? "name" : "hex" - }; - } - - return false; - } - - window.tinycolor = tinycolor; - })(); - - $(function () { - if ($.fn.spectrum.load) { - $.fn.spectrum.processNativeColorInputs(); - } - }); - -}); diff --git a/site/modules/.FieldtypeColor/x11color.txt b/site/modules/.FieldtypeColor/x11color.txt deleted file mode 100644 index cb6df03..0000000 --- a/site/modules/.FieldtypeColor/x11color.txt +++ /dev/null @@ -1,143 +0,0 @@ -indianred #CD5C5C 205,92,92 -lightcoral #F08080 240,128,128 -salmon #FA8072 250,128,114 -darksalmon #E9967A 233,150,122 -lightsalmon #FFA07A 255,160,122 -crimson #DC143C 220,20,60 -red #FF0000 255,0,0 -firebrick #B22222 178,34,34 -darkred #8B0000 139,0,0 -pink #FFC0CB 255,192,203 -lightpink #FFB6C1 255,182,193 -hotpink #FF69B4 255,105,180 -deeppink #FF1493 255,20,147 -mediumvioletred #C71585 199,21,133 -palevioletred #DB7093 219,112,147 -lightsalmon #FFA07A 255,160,122 -coral #FF7F50 255,127,80 -tomato #FF6347 255,99,71 -orangered #FF4500 255,69,0 -darkorange #FF8C00 255,140,0 -orange #FFA500 255,165,0 -gold #FFD700 255,215,0 -yellow #FFFF00 255,255,0 -lightyellow #FFFFE0 255,255,224 -lemonchiffon #FFFACD 255,250,205 -lightgoldenrodyellow #FAFAD2 250,250,210 -papayawhip #FFEFD5 255,239,213 -moccasin #FFE4B5 255,228,181 -peachpuff #FFDAB9 255,218,185 -palegoldenrod #EEE8AA 238,232,170 -khaki #F0E68C 240,230,140 -darkkhaki #BDB76B 189,183,107 -lavender #E6E6FA 230,230,250 -thistle #D8BFD8 216,191,216 -plum #DDA0DD 221,160,221 -violet #EE82EE 238,130,238 -orchid #DA70D6 218,112,214 -fuchsia #FF00FF 255,0,255 -magenta #FF00FF 255,0,255 -mediumorchid #BA55D3 186,85,211 -mediumpurple #9370DB 147,112,219 -blueviolet #8A2BE2 138,43,226 -darkviolet #9400D3 148,0,211 -darkorchid #9932CC 153,50,204 -darkmagenta #8B008B 139,0,139 -purple #800080 128,0,128 -indigo #4B0082 75,0,130 -slateblue #6A5ACD 106,90,205 -darkslateblue #483D8B 72,61,139 -mediumslateblue #7B68EE 123,104,238 -greenyellow #ADFF2F 173,255,47 -chartreuse #7FFF00 127,255,0 -lawngreen #7CFC00 124,252,0 -lime #00FF00 0,255,0 -limegreen #32CD32 50,205,50 -palegreen #98FB98 152,251,152 -lightgreen #90EE90 144,238,144 -mediumspringgreen #00FA9A 0,250,154 -springgreen #00FF7F 0,255,127 -mediumseagreen #3CB371 60,179,113 -seagreen #2E8B57 46,139,87 -forestgreen #228B22 34,139,34 -green #008000 0,128,0 -darkgreen #006400 0,100,0 -yellowgreen #9ACD32 154,205,50 -olivedrab #6B8E23 107,142,35 -olive #808000 128,128,0 -darkolivegreen #556B2F 85,107,47 -mediumaquamarine #66CDAA 102,205,170 -darkseagreen #8FBC8F 143,188,143 -lightseagreen #20B2AA 32,178,170 -darkcyan #008B8B 0,139,139 -teal #008080 0,128,128 -aqua #00FFFF 0,255,255 -cyan #00FFFF 0,255,255 -lightcyan #E0FFFF 224,255,255 -paleturquoise #AFEEEE 175,238,238 -aquamarine #7FFFD4 127,255,212 -turquoise #40E0D0 64,224,208 -mediumturquoise #48D1CC 72,209,204 -darkturquoise #00CED1 0,206,209 -cadetblue #5F9EA0 95,158,160 -steelblue #4682B4 70,130,180 -lightsteelblue #B0C4DE 176,196,222 -powderblue #B0E0E6 176,224,230 -lightblue #ADD8E6 173,216,230 -skyblue #87CEEB 135,206,235 -lightskyblue #87CEFA 135,206,250 -deepskyblue #00BFFF 0,191,255 -dodgerblue #1E90FF 30,144,255 -cornflowerblue #6495ED 100,149,237 -mediumslateblue #7B68EE 123,104,238 -royalblue #4169E1 65,105,225 -blue #0000FF 0,0,255 -mediumblue #0000CD 0,0,205 -darkblue #00008B 0,0,139 -navy #000080 0,0,128 -midnightblue #191970 25,25,112 -cornsilk #FFF8DC 255,248,220 -blanchedalmond #FFEBCD 255,235,205 -bisque #FFE4C4 255,228,196 -navajowhite #FFDEAD 255,222,173 -wheat #F5DEB3 245,222,179 -burlywood #DEB887 222,184,135 -tan #D2B48C 210,180,140 -rosybrown #BC8F8F 188,143,143 -sandybrown #F4A460 244,164,96 -goldenrod #DAA520 218,165,32 -darkgoldenrod #B8860B 184,134,11 -peru #CD853F 205,133,63 -chocolate #D2691E 210,105,30 -saddlebrown #8B4513 139,69,19 -sienna #A0522D 160,82,45 -brown #A52A2A 165,42,42 -maroon #800000 128,0,0 -white #FFFFFF 255,255,255 -snow #FFFAFA 255,250,250 -honeydew #F0FFF0 240,255,240 -mintcream #F5FFFA 245,255,250 -azure #F0FFFF 240,255,255 -aliceblue #F0F8FF 240,248,255 -ghostwhite #F8F8FF 248,248,255 -whitesmoke #F5F5F5 245,245,245 -seashell #FFF5EE 255,245,238 -beige #F5F5DC 245,245,220 -oldlace #FDF5E6 253,245,230 -floralwhite #FFFAF0 255,250,240 -ivory #FFFFF0 255,255,240 -antiquewhite #FAEBD7 250,235,215 -linen #FAF0E6 250,240,230 -lavenderblush #FFF0F5 255,240,245 -mistyrose #FFE4E1 255,228,225 -gainsboro #DCDCDC 220,220,220 -lightgrey #D3D3D3 211,211,211 -silver #C0C0C0 192,192,192 -darkgray #A9A9A9 169,169,169 -gray #808080 128,128,128 -dimgray #696969 105,105,105 -lightslategray #778899 119,136,153 -slategray #708090 112,128,144 -darkslategray #2F4F4F 47,79,79 -black #000000 0,0,0 -rebeccapurple #663399 102,51,153 \ No newline at end of file diff --git a/site/modules/.WireMailSmtp/.editorconfig b/site/modules/.WireMailSmtp/.editorconfig deleted file mode 100644 index 6106d13..0000000 --- a/site/modules/.WireMailSmtp/.editorconfig +++ /dev/null @@ -1,6 +0,0 @@ -[*.{php,module}] -end_of_line = LF -indent_style = space -indent_size = 4 -trim_trailing_whitespace = true -insert_final_newline = true diff --git a/site/modules/.WireMailSmtp/.gitattributes b/site/modules/.WireMailSmtp/.gitattributes deleted file mode 100644 index 3e114cd..0000000 --- a/site/modules/.WireMailSmtp/.gitattributes +++ /dev/null @@ -1 +0,0 @@ -+.module linguist-language=PHP diff --git a/site/modules/.WireMailSmtp/CHANGELOG.md b/site/modules/.WireMailSmtp/CHANGELOG.md deleted file mode 100644 index 1830e74..0000000 --- a/site/modules/.WireMailSmtp/CHANGELOG.md +++ /dev/null @@ -1,96 +0,0 @@ -# Changelog - -### 0.6.0 - 2021-04-15 -- PHP 8 support - -### 0.5.2 - 2020-05-25 -- changed Manuel Lemos smtp-class to new version 1.52, as he added a new token feature - -### 0.5.1 - 2020-05-11 -- minor fix to testconnection in the configpage - -### 0.5.0 - 2020-05-04 -- added a verbose debug testconnection into the configpage - -### 0.4.2 - 2019-05-02 -- added support for connections without authentication: allow_without_authentication - -### 0.4.1 - 2019-04-19 -- added support for verbose debug of the connection and sending process via a new method: $mail->debugSend() - -### 0.4.0 - 2019-04-19 -- added support for manual selection of a crypto method for TLS per this request: https://processwire.com/talk/topic/5704-wiremailsmtp/page/12/?tab=comments#comment-184229 - -### 0.3.1 - 2019-03-27 -- enhanced the module to get overridden by site/config settings per this request: https://processwire.com/talk/topic/5704-wiremailsmtp/page/12/?tab=comments#comment-182735 - -### 0.3.0 - 2017-12-08 -- fixed code that broke backward compatibility for PW 2.4 and 2.5, brought in with the config cosmetics (0.2.6) - -### 0.2.7 - 2017-10-19 -- @abdus fixed smtp password not saving - -### 0.2.6 - 2017-10-17 -- module config cosmetics by @abdus, many thanks! [See this forum post](https://processwire.com/talk/topic/5704-wiremailsmtp/?page=9&tab=comments#comment-153329) - -### 0.2.5 - 2017-09-12 -- fixed adding HTML-signatures into HTML-messages without body-end-tag - -### 0.2.4 - 2017-09-03 -- updated the attachment function to silence a PHP-Strict notice - -### 0.2.3 - 2016-10-08 -- updated the attachment function to be conform with the new integrated function in core WireMail class (introduced with PW 3.0.36) - -### 0.2.2 - 2016-05-26 -- fixed date string to follow strict RFC2822, See [Issue 5](https://github.com/horst-n/WireMailSmtp/issues/5) - Many thanks to @selsermedia! - -### 0.2.0 - 2016-02-15 -- added support for Selfsigned Certificates, a contribution from @flydev, [See this post](https://processwire.com/talk/topic/5704-wiremailsmtp/page-5#entry113290) - Many thanks! - -### 0.1.14 -- changed smtp class to new version 1.50 to solve a bug with two debug messages echoed out, even if debug was set to false - -### 0.1.13 - 2015-06-14 -- changed default setting for wrapText from true to false. - -### 0.1.12 -- fixed not sending to all CC-recipients when in sendSingle mode. See [issue 3](https://github.com/horst-n/WireMailSmtp/issues/3) - -### 0.1.11 -- changed smtp class to new version to solve problems with mixed usage of IP and hostname, found by @k07n. See [this post](https://processwire.com/talk/topic/5704-wiremailsmtp/page-3#entry95880) - -### 0.1.10 -- made wrapText configurable by Jan Romero [Commit abc0ac0b](https://github.com/horst-n/WireMailSmtp/commit/abc0ac0b4a3edd0fcbbb8b4695f00a362705ad5b) - -### 0.1.9 -- disabling connecting without authentication in the smtp base class - -### 0.1.8 -- added a separate inputfield for a HTML signature into config page - -### 0.1.7 -- set status from alpha to beta - -### 0.0.7 -- added new sentLog methods for permanent logging, intended for usage with third party modules, e.g. newsletter modules - -### 0.0.6 -- corrected addSignature to check and respect the config screen setting - -### 0.0.5 -- added multiple emails sending and bulkmail sending - -### 0.0.4 -- changed the functions "to" "cc" "bcc" to be compatible with Ryans changes - -### 0.0.3 -- added GMT Timezone to the Dateheader to reflect local timezones and show DateTime correct in Mailclients - -### 0.0.2 -- added sanitization to recipient names in email addresses (in file: WireMailSmtp.module) - -### 0.0.1 -- initial release - -More information and code examples, please visit the [WireMailSmtp ProcessWire forum thread.](http://processwire.com/talk/topic/5704-module-wiremailsmtp/) diff --git a/site/modules/.WireMailSmtp/README.md b/site/modules/.WireMailSmtp/README.md deleted file mode 100644 index c9d6237..0000000 --- a/site/modules/.WireMailSmtp/README.md +++ /dev/null @@ -1,84 +0,0 @@ -WireMailSmtp -============ - -### ProcessWire: a extension to the WireMail base class that uses SMTP-transport ### - -### Only functional with ProcessWire Version 2.4.1 or greater ### - -This module integrates EmailMessage, SMTP and SASL php-libraries from [Manuel Lemos](http://www.phpclasses.org/browse/author/1.html) into ProcessWire. - - -[More information and code examples](http://processwire.com/talk/topic/5704-module-wiremailsmtp/) - ---- - - -### Current Version 0.6.0 ### - - - -### List of all options and features ### - -**testConnection** () *- returns true on success, false on failures* - -**debugSend** () *- send the mail(s) and output or return verbose messages of the complete connection and sending process* - - -**sendSingle** ( true | false ) *- default is false* - -**sendBulk** ( true | false ) *- default is false, Set this to true if you have lots of recipients (50+)* - - -**to** ($recipients) *- one emailaddress or array with multiple emailaddresses* - -**cc** ($recipients) *- only available with mode sendSingle, one emailaddress or array with multiple emailaddresses* - -**bcc** ($recipients) *- one emailaddress or array with multiple emailaddresses* - - - -**from** = 'person@example.com' *- can be set in module config (called Sender Emailaddress) but it can be overwritten here* - -**fromName =** 'Name Surname' *- optional, can be set in module config (called Sender Name) but it can be overwritten here* - - -**priority** (3) *- 1 = Highest | 2 = High | 3 = Normal | 4 = Low | 5 = Lowest* - -**dispositionNotification** () or **notification** () *- request a Disposition Notification* - - -**subject** ($subject) *- subject of the message* - -**body** ($textBody) *- use this one alone to create and send plainText emailmessages* - -**bodyHTML** ($htmlBody) *- use this to create a Multipart Alternative Emailmessage (containing a HTML-Part and a Plaintext-Part as fallback)* - -**addSignature** ( true | false ) *- the default-behave is selectable in config screen, this can be overridden here. (only available if a signature is defined in the config screen)* - -**attachment** ($filename, $alternativeBasename = '') *- add attachment file* - - -**send** () *- send the mail(s) and return number of successful send messages* - - -**getResult** () *- returns a dump (array) with all recipients (to, cc, bcc) and settings you have selected with the message, the message subject and body, and lists of successfull addresses and failed addresses,* - - -**logActivity** ($logmessage) *- you may log success if you want* - -**logError** ($logmessage) *- you may log errors, too. - Errors are also logged automaticaly* - - -**useSentLog** (true | false) *- intended for usage with e.g. third party newsletter modules - tells the send() method to make usage of the sentLog-methods* - -**sentLogReset** () *- starts a new Session. Best usage would be interactively once when setting up a new Newsletter* - -**sentLogGet** () *- returns an array containing all previously used emailaddresses* - -**sentLogAdd** ($emailaddress) *- is called automaticly within the send() method* - -**wrapText** (true|false) *- default is true* - - - -[More information and code examples](http://processwire.com/talk/topic/5704-module-wiremailsmtp/) diff --git a/site/modules/.WireMailSmtp/WireMailSmtp.module b/site/modules/.WireMailSmtp/WireMailSmtp.module deleted file mode 100644 index d3541b8..0000000 --- a/site/modules/.WireMailSmtp/WireMailSmtp.module +++ /dev/null @@ -1,1025 +0,0 @@ - 'Wire Mail SMTP', - 'version' => '0.6.0', - 'summary' => "Extends WireMail, uses SMTP protocol (plain | SSL | TLS), provides: to, cc, bcc, attachments, priority, disposition notification, bulksending, ...", - 'href' => 'https://processwire.com/talk/topic/5704-module-wiremailsmtp/', - 'author' => 'horst', - 'singular' => false, - 'autoload' => false - ); - } - - - public static function getCryptoMethodsTLS() { - $validTlsCryptoMethods = array(); - foreach(array( - 'STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT', // since PHP 5.6.0 - 'STREAM_CRYPTO_METHOD_TLSv1_1_CLIENT', // since PHP 5.6.0 - 'STREAM_CRYPTO_METHOD_TLSv1_0_CLIENT', // since PHP 5.6.0 - 'STREAM_CRYPTO_METHOD_ANY_CLIENT', // since PHP 5.6.0 - 'STREAM_CRYPTO_METHOD_TLS_CLIENT', // BEFORE PHP 5.6.0 - ) as $item) { - if(defined($item) && constant($item)) $validTlsCryptoMethods[] = $item; - } - $a = array(); - foreach($validTlsCryptoMethods as $value) $a[$value] = $value; - return $a; - } - - public static function getCryptoMethodsSSL() { - return array(); - } - - /** - * Name of activity/error log files without extension (.txt) - * - */ - const LOG_FILENAME_ACTIVITY = 'wiremailsmtp_activity'; - const LOG_FILENAME_ERROR = 'wiremailsmtp_errors'; - const LOG_FILENAME_SENTLOG = 'wiremailsmtp_sentlog'; - - - private $smtp = null; - private $maildata = array(); - - - /** - * Mail properties - * - */ - protected $mail = array( - 'to' => array(), // to addresses - associative: both key and value are email (to prevent dups) - 'toName' => array(), // to names - associative: indexed by 'to' email address, may be blank/null for any email - 'cc' => array(), - 'ccName' => array(), - 'bcc' => array(), - 'from' => '', - 'fromName' => '', - 'priority' => '', - 'dispositionNotification' => '', - 'subject' => '', - 'body' => '', - 'bodyHTML' => '', - 'addSignature' => null, - 'attachments' => array(), - 'header' => array(), - 'sendSingle' => false, - 'sendBulk' => false, - 'useSentLog' => false, - 'wrapText' => false - ); - - - /** - * Default settings used by this module - * - * @return array - */ - static public function getDefaultData() { - return array( - 'default_charset' => 'UTF-8', - 'localhost' => '', // this computer address - 'smtp_host' => '', // SMTP server address - 'smtp_port' => 25, // SMTP server port - 'smtp_ssl' => 0, // SMTP use SSL ? - 'smtp_ssl_crypto_method' => '', // crypto method to use with SSL connections - 'smtp_start_tls' => 0, // SMTP use START_TLS ? - 'smtp_tls_crypto_method' => '', // crypto method to use with TLS connections - 'smtp_user' => '', // SMTP user name - 'smtp_password' => '', // SMTP password - 'smtp_password2' => '', // SMTP password - 'clear_smtp_password' => '', // SMTP password - 'allow_without_authentication' => 0, // No user name and password required - 'realm' => '', // Authentication realm or domain - 'workstation' => '', // Workstation for NTLM authentication - 'authentication_mechanism' => '', // SASL authentication mechanism - 'smtp_debug' => 0, // debug smtp server communication? - 'smtp_html_debug' => 0, // debug smtp server communication in HTML? - 'sender_name' => '', // From: the senders name - 'sender_email' => '', // From: the senders email address - 'sender_reply' => '', // Reply-To: optional email address - 'sender_errors_to' => '', // Errors-To: optional email address - 'sender_signature' => '', // a Signature Text, like Contact Data and / or Confidentiality Notices - 'sender_signature_html' => '', // a Signature Text in HTML, like Contact Data and / or Confidentiality Notices - 'send_sender_signature' => '1', // when the signature should be send: with every mail | only when the default Email is the sender | only when explicitly called via the API - 'extra_headers' => '', // optional Custom-Meta-Headers - 'valid_recipients' => '', // email addresses of valid recipients. String that we convert to array at runtime. - 'smtp_certificate' => 0 // allow or not self signed certificate (PHP >= 5.6) - ); - } - - - - - - /** - * This method is intended for usage with e.g. Newsletter-Modules. - * You can hook into it if you want use alternative stores for it - * - * This resets the Log for sent emaildresses. It starts a new Session. - * Best usage should be interactively when setting up a new Newsletter. - * - * - * @return boolean true if Log is empty or false if it is not empty - * - */ - public function ___sentLogReset() { - $filename = wire('config')->paths->logs . self::LOG_FILENAME_SENTLOG . '.txt'; - @touch($filename); - $res = file_put_contents($filename, '', LOCK_EX ); - if(false===$res || 0!==$res || !file_exists($filename) || !is_readable($filename) || !is_writeable($filename)) { - $this->logError('Cannot reset Content of the SentLog: ' . $filename); - throw new WireException('You want to make usage of the SentLog-feature, but cannot reset Content of the SentLog: ' . basename($filename)); - } - return 0===$res ? true : false; - } - - - /** - * This method is intended for usage with e.g. Newsletter-Modules. - * You can hook into it if you want use alternative stores for it - * - * This returns an array containing all emailaddresses - * - * - * @return array with emailaddresses as values - * - */ - public function ___sentLogGet() { - $filename = wire('config')->paths->logs . self::LOG_FILENAME_SENTLOG . '.txt'; - @touch($filename); - if(!file_exists($filename) || !is_readable($filename) || !is_writeable($filename)) { - $this->logError('Cannot get content of the SentLog: ' . $filename); - throw new WireException('You want to make usage of the SentLog-feature, but cannot get content of the SentLog: ' . basename($filename)); - } - $a = explode("\n", trim(file_get_contents($filename))); - $emailaddresses = array(); - foreach($a as $e) { - if(trim($e)=='') continue; - $emailaddresses[] = trim($e); - } - return $emailaddresses; - } - - - /** - * This method is intended for usage with e.g. Newsletter-Modules. - * You can hook into it if you want use alternative stores for it - * - * Add a emailaddress to the SentLog - * If you have enabled the usage it is called automatically within - * the send() loop to store each successful sent emailaddress. - * - * - * @param string Must be a single email address - * @return boolean true or false - * - */ - public function ___sentLogAdd($emailaddress) { - $filename = wire('config')->paths->logs . self::LOG_FILENAME_SENTLOG . '.txt'; - $data = trim(str_replace(array('<','>'), '', $emailaddress)) . "\n"; - $res = file_put_contents($filename, $data, LOCK_EX + FILE_APPEND ); - if(false===$res || strlen($data)!=$res) { - $this->logError('Cannot add emailaddress to the SentLog: ' . $filename); - throw new WireException('You want to make usage of the SentLog-feature, but cannot add emailaddress to the SentLog: ' . basename($filename)); - } - return strlen($data) === $res ? true : false; - } - - - /** - * This method is intended for usage with e.g. Newsletter-Modules. - * - * If the send() method should make usage of the SentLog set it to true! - * - * - * @param boolean true or false - * @return $this - * - */ - public function useSentLog($useIt=true) { - $this->mail['useSentLog'] = (bool)$useIt; - return $this; - } - - - - /** - * Bundle module settings back into an array for WireMailSmtpAdaptor - * - */ - public function getSettings() { - $siteconfig = is_array($this->wire('config')->wiremailsmtp) ? $this->wire('config')->wiremailsmtp : array(); - $settings = array(); - foreach(self::getDefaultData() as $key => $value) { - $k = $key; - $v = $this->$key; - if($key === 'valid_recipients') { - // convert multi-line textarea value to array of emails - $emails = array(); - foreach(explode("\n", $this->valid_recipients) as $email) { - if(trim($email)=='') continue; - $emails[] = trim($email); - } - $settings[$key] = $emails; - // now check for settings in site/config.php that should override the default settings from the module config: - if(isset($siteconfig[$key])) $settings[$key] = $siteconfig[$key]; - continue; - } - if($key === 'extra_headers') { - // convert multi-line textarea value to array of Key => Value pairs - $extraHeaders = array(); - foreach(explode("\n", $this->get('extra_headers')) as $extraHeader) { - if(trim($extraHeader)=='') continue; - $tmp = explode('=', $extraHeader); - if(!is_array($tmp) || count($tmp)!=2) continue; - $extraHeaders[$tmp[0]] = $tmp[1]; - } - $settings[$key] = $extraHeaders; - // now check for settings in site/config.php that should override the default settings from the module config: - if(isset($siteconfig[$key])) $settings[$key] = $siteconfig[$key]; - continue; - } - $settings[$k] = $this->$key; - // now check for settings in site/config.php that should override the default settings from the module config: - if(isset($siteconfig[$k])) $settings[$k] = $siteconfig[$k]; - } - return $settings; - } - - - - /** - * Populate default settings - * - */ - public function __construct() { - $this->mail['header']['X-Mailer'] = "ProcessWire/" . $this->className(); - foreach(self::getDefaultData() as $key => $value) { - $this->$key = $value; - } - } - - - /** - * Initialize the module and setup hooks - * - */ - public function init() { - require_once(wire('config')->paths->WireMailSmtp . 'WireMailSmtpAdaptor.php'); - $this->smtp = new hnsmtp($this->getSettings()); - } - - - // public function ready() { - // } - - - public function __destruct() { - if($this->smtp) $this->smtp->close(); - unset($this->smtp); - } - - - - - - /** - * Save activity message to log file - * - */ - public function logActivity($message) { - $this->log->save( self::LOG_FILENAME_ACTIVITY , $message); - } - - - /** - * Save error message to log file - * - */ - public function logError($message) { - $this->log->save( self::LOG_FILENAME_ERROR , $message); - } - - - - - - /** - * Build a form allowing configuration of this Module - * - */ - static public function getModuleConfigInputfields(array $data) { - $localhost = isset($_SERVER['SERVER_NAME']) ? $_SERVER['SERVER_NAME'] : (isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : ''); - $data = array_merge(self::getDefaultData(), array('localhost'=>$localhost), $data); - -// // special handling for SMTP password -// // seen by @teppo's SwiftMailer -// if(isset($data['smtp_password2'])) { -// $data['smtp_password'] = $data['smtp_password2']; -// unset($data['smtp_password2'], $data['clear_smtp_password']); -// wire('modules')->saveModuleConfigData('WireMailSmtp', $data); -// } -// elseif(isset($data['clear_smtp_password']) && $data['clear_smtp_password']) { -// unset($data['smtp_password'], $data['smtp_password2'], $data['clear_smtp_password']); -// wire('modules')->saveModuleConfigData('WireMailSmtp', $data); -// } -// else { -// unset($data['smtp_password2'], $data['clear_smtp_password']); -// wire('modules')->saveModuleConfigData('WireMailSmtp', $data); -// } - - require_once(dirname(__FILE__) . '/WireMailSmtpConfig.php'); - $c = new WireMailSmtpConfig(); - return $c->getConfig($data); - } - - - /** - * Return a ready-to-use copy of the Adaptor - * - */ - public function getAdaptor() { - return $this; - } - - - - - - - - - /** - * Set the email cc address - * - * Each added email addresses appends to any addresses already supplied, unless - * you specify NULL as the email address, in which case it clears them all. - * - * @param string|array|null $email Specify any ONE of the following: - * 1. Single email address or "User Name " string. - * 2. CSV string of #1. - * 3. Non-associative array of #1. - * 4. Associative array of (email => name) - * 5. NULL (default value, to clear out any previously set values) - * @param string $name Optionally provide a FROM name, applicable - * only when specifying #1 (single email) for the first argument. - * @return this - * @throws WireException if any provided emails were invalid - * - */ - public function cc($email = null, $name = null) { - - if(is_null($email)) { - // clear existing values - $this->mail['cc'] = array(); - $this->mail['ccName'] = array(); - return $this; - } - - $emails = is_array($email) ? $email : explode(',', $email); - - foreach($emails as $key => $value) { - - $toName = ''; - if(is_string($key)) { - // associative array - // email provided as $key, and $toName as value - $toEmail = $key; - $toName = $value; - - } else if(strpos($value, '<') !== false && strpos($value, '>') !== false) { - // toName supplied as: "User Name extractEmailAndName($value); - - } else { - // just an email address, possibly with name as a function arg - $toEmail = $value; - } - - if(empty($toName)) $toName = $name; // use function arg if not overwritten - $toEmail = $this->sanitizeEmail($toEmail); - $this->mail['cc'][$toEmail] = $toEmail; - $this->mail['ccName'][$toEmail] = $this->sanitizeHeader($toName); - } - - return $this; - } - - - /** - * Set the email bcc address - * - * Each added email addresses appends to any addresses already supplied, unless - * you specify NULL as the email address, in which case it clears them all. - * - * @param string|array|null $email Specify any ONE of the following: - * 1. Single email address or "User Name " string. - * 2. CSV string of #1. - * 3. Non-associative array of #1. - * 4. Associative array of (email => name) - * 5. NULL (default value, to clear out any previously set values) - * @param string $name Optionally provide a FROM name, applicable - * only when specifying #1 (single email) for the first argument. - * @return this - * @throws WireException if any provided emails were invalid - * - */ - public function bcc($email = null, $name = null) { - - // a BCC Name isn't used, because BCC addresses by it's nature aren't kept in email messages - // we leave it here for compatibilty with TO and CC methods - - if(is_null($email)) { - // clear existing values - $this->mail['bcc'] = array(); - return $this; - } - - $emails = is_array($email) ? $email : explode(',', $email); - - foreach($emails as $key => $value) { - - $toName = ''; - if(is_string($key)) { - // associative array - // email provided as $key, and $toName as value - $toEmail = $key; - $toName = $value; - - } else if(strpos($value, '<') !== false && strpos($value, '>') !== false) { - // toName supplied as: "User Name extractEmailAndName($value); - - } else { - // just an email address, possibly with name as a function arg - $toEmail = $value; - } - - if(empty($toName)) $toName = $name; // use function arg if not overwritten - $toEmail = $this->sanitizeEmail($toEmail); - $this->mail['bcc'][$toEmail] = $toEmail; - } - - return $this; - } - - - /** - * Set the 'cc' name - * - * It is preferable to do this with the cc() method, but this is provided to ensure that - * all properties can be set with direct access, i.e. $mailer->toName = 'User Name'; - * - * This sets the 'to name' for whatever the last added 'cc' email address was. - * - * @param string - * @return this - * @throws WireException if you attempt to set a toName before a to email. - * - */ - public function ccName($name) { - $emails = $this->mail['cc']; - if(!count($emails)) throw new WireException("Please set a 'cc' address before setting a name."); - $email = end($emails); - $this->mail['ccName'][$email] = $this->sanitizeHeader($name); - return $this; - } - - - /** - * Set the email from address - * - * @param string Must be a single email address or "User Name " string. - * @param string|null An optional FROM name (same as setting/calling fromName) - * @return this - * @throws WireException if provided email was invalid - * - */ - public function from($email = '', $name = null) { - if(is_null($name)) list($email, $name) = $this->extractEmailAndName($email); - if(empty($email)) { - $email = $this->sender_email; - $name = $this->sender_name; - } - if($name) $this->mail['fromName'] = $this->sanitizeHeader($name); - $this->mail['from'] = $email; - return $this; - } - - - - - - - /** - * Set the email priority headers - * - * @param number 1 | 2 | 3 | 4 | 5 ( 1 = highest | 3 = normal / default | 5 = lowest ) - * @return this - * - */ - public function priority($number) { - $this->mail['priority'] = $number; - return $this; - } - - - /** - * Request a Disposition Notification - * - * @return this - * - */ - public function dispositionNotification($request=true) { - $this->mail['dispositionNotification'] = (bool)$request; - return $this; - } - public function notification($request=true) { - return $this->dispositionNotification($request); - } - - - - - // I don't find the param names of the core class to be intuitive or descriptive in the right way. - // The "$value" in real is the "filename" of the attachment, and the "$filename" - // in real is an "alternative BASENAME"! This may lead to confusion. - // - // But I have to use it the exact same way as in the core class, because otherwise the - // systems raises PHP strict notices about the different param names. :( - // So please, for better understanding, read on the example of the next method "attachments()". - // - // old code: public function attachment($filename, $alternativeBasename = '') - /** - * Add attachment to the email, - * (conform with the core Wiremail update introduced in PW 3.0.36) - * - * @param $filename string, Full path and filename of file attachment, (no URL!) - * @param $alternativeBasename (optional) string, Optional different basename for file as it appears in the mail - * @return WireMailSmtp - */ - public function attachment($value, $filename = '') { - $a = array($value => $filename); - return $this->attachments($a); - } - /** - * @param array $values, array with keys (absolute pathes to filenames) and optional values (alternative basenames) - * example: array( - * '/an/absolute/path/to/file.typ' => 'alternative-basename.typ', - * '/another/path/to/anotherfile.typ' => '', - * // ... - * ) - * @return WireMailSmtp - */ - public function attachments($values) { - // $value is the fullpath filename (!), filename is an optional alternativeBasename (!), the terms are this way in PW core WireMail - foreach($values as $filename => $alternativeBasename) { - $this->mail['attachments'][trim($filename)] = trim($alternativeBasename); - } - return $this; - } - - - - - public function addSignature($add=true) { - $this->mail['addSignature'] = (bool)$add; - return $this; - } - - public function wrapText($wrap=true) { - $this->mail['wrapText'] = (bool)$wrap; - return $this; - } - - - - public function sendSingle($singleMail=true) { - $this->mail['sendSingle'] = (bool)$singleMail; - if((bool)$singleMail) { - $this->mail['sendBulk'] = false; - } - return $this; - } - public function single($singleMail=true) { - return $this->sendSingle($singleMail); - } - - - public function sendBulk($bulkMail=true) { - $this->mail['sendBulk'] = (bool)$bulkMail; - if((bool)$bulkMail) { - $this->mail['sendSingle'] = false; - } - return $this; - } - public function bulk($bulkMail=true) { - return $this->sendBulk($bulkMail); - } - - - - - public function ___send($debugServer = false) { - $this->smtp->setSender($this->mail['from'], $this->mail['fromName']); - if($this->mail['dispositionNotification']) $this->setNotification(); // must be called after setSender - $this->smtp->setCustomHeader($this->mail['header']); - if($this->mail['priority']!='') $this->setPriority($this->mail['priority']); - $this->setSubject($this->mail['subject']); - - if($this->bodyHTML) { - // we use MultipartAlternative - $text = strlen($this->body) ? $this->body : strip_tags($this->bodyHTML); - $this->setTextAndHtmlBody($text, $this->bodyHTML, $this->mail['addSignature']); - } else { - // we use plaintext - $this->setTextBody($this->body, $this->mail['addSignature']); - } - - - foreach($this->mail['attachments'] as $value => $filename) { - $this->attachFile($value, $filename); - } - - - // check and optionally adjust setting for sendSingle - if($this->mail['sendSingle'] && count($this->to)>1) { - $this->mail['sendSingle'] = false; - $this->logError("You have set sendSingle to true, but also you have provided more than one TO-Recipient. We now change the sending method to send multiple messages!"); - } - - // send a single email an quit - if($this->mail['sendSingle']) { - - // with sending only a single mail, we may also use cc and bcc recipients - // there should be only one TO recipients, but it is let to the user how he - // want handle this - foreach($this->to as $email) { - $name = $this->toName[$email]; - $this->addRecipient($email, $name, 'to'); - } - foreach($this->cc as $email) { - $name = $this->ccName[$email]; - $this->addRecipient($email, $name, 'cc'); - } - foreach($this->bcc as $email) { - $this->addRecipient($email, '', 'bcc'); - } - - // correct the recipient headers >>> - $tmpTO = $tmpCC = $tmpBCC = array(); - foreach($this->maildata['recipients'] as $tmpRecipient) { - $tmpRecipientStr = strlen(trim($tmpRecipient['name'])) > 0 ? '"'. trim($tmpRecipient['name']) .'" ' : ''; - $tmpRecipientStr .= '<'. trim($tmpRecipient['emailaddress']) .'>'; - switch($tmpRecipient['type']) { - case 'to': - $tmpTO[$tmpRecipient['emailaddress']] = $tmpRecipientStr; - break; - case 'cc': - $tmpCC[$tmpRecipient['emailaddress']] = $tmpRecipientStr; - break; - case 'bcc': - $tmpBCC[$tmpRecipient['emailaddress']] = $tmpRecipientStr; - break; - } - } - $tmpTOstr = implode(', ', $tmpTO); - $tmpCCstr = implode(', ', $tmpCC); - $tmpBCCstr = implode(', ', $tmpBCC); - #$this->smtp->setHeader('To', trim($tmpTOstr)); - if ($tmpCCstr) { - $this->smtp->setHeader('CC', trim($tmpCCstr)); - } - if ($tmpBCCstr) { - $this->smtp->setHeader('BCC', trim($tmpBCCstr)); - } - unset($tmpRecipient, $tmpRecipientStr, $tmpTO, $tmpTOstr, $tmpCC, $tmpCCstr, $tmpBCC, $tmpBCCstr); - // <<< correct the recipient headers - - $maildata = ''; - $ret = $this->smtp->send($debugServer, $debugServer, $maildata); - $this->maildata['send'] = $maildata; - return $ret ? 1 : 0; - - } - - // send multiple messages and quit - $numSent = 0; - $recipientsSuccess = array(); - $recipientsFailed = array(); - - if($this->mail['useSentLog']) { - $sent = $this->sentLogGet(); - if(!is_array($sent)) { - $this->logError('Cannot get content of the SentLog!'); - throw new WireException('You want to make usage of the SentLog-feature, but cannot get content of the SentLog!'); - } - $recipientsSuccess = $sent; - unset($sent); - } - if(count($this->to)>50) $this->mail['sendBulk'] = true; - if(count($this->to)>5 || $this->mail['sendBulk']) $this->smtp->SetBulkMail(1); - if($this->mail['sendBulk']) $this->smtp->SetHeader('Precedence', 'bulk'); - foreach($this->bcc as $bcc) $this->addRecipient($bcc, '', 'bcc'); - foreach($this->to as $to) { - if(in_array($to, $recipientsSuccess)) continue; // "Only one cross each" (Monty Python: The Life of Brian) - set_time_limit(intval(30)); - - $toName = $this->mail['toName'][$to]; - $this->addRecipient($to, $toName, 'to'); - - $ret = $this->smtp->send($debugServer, $debugServer, $maildata); - - if($ret) { - $recipientsSuccess[$to] = $to; - if($this->mail['useSentLog'] && ! $this->sentLogAdd($to)) { - $this->logError('Cannot add emailaddress to the SentLog: ' . SELF::LOG_FILENAME_SENTLOG . '.txt'); - throw new WireException('You want to make usage of the SentLog-feature, but cannot add emailaddress to the SentLog: ' . SELF::LOG_FILENAME_SENTLOG . '.txt'); - } - } - else { - $recipientsFailed[$to] = $to; - } - $numSent += $ret ? 1 : 0; - } - if(count($this->to)>5 || $this->mail['sendBulk']) $this->smtp->SetBulkMail(0); - $this->smtp->close(); - - if(!isset($maildata) && 0==$numSent) $maildata = 'no messages are sent'; - $this->maildata['send'] = $maildata; - $this->maildata['recipientsSuccess'] = $recipientsSuccess; - $this->maildata['recipientsFailed'] = $recipientsFailed; - - return $numSent; - } - - - /** - * This method is intended for verbose debug purposes! - * Use this instead of the regular send() method. - * - * @returns a debugDump in string format - * @param $outputMode: integer, 1 = echo HTML | 2 = echo PlainText | 3 return String | 4 = write into file - * @param $filename: string, path to writeable log filename, required for $outputMode = 4 - */ - public function debugSend($outputMode = 1, $filename = '') { - ob_start(); - $this->send(true); - $debugLog = "\n\n" . ob_get_clean(); - ob_start(); - $dump = ''; - $dump .= $this->mvd(array('SETTINGS' => $this->getSettings()), $outputMode, $filename); - $dump .= $this->mvd(array('RESULT' => $this->getResult()), $outputMode, $filename); - $dump .= $this->mvd(array('ERRORS' => $this->getErrors()), $outputMode, $filename); - $dump .= $this->mvd(array('DEBUGLOG' => $debugLog), $outputMode, $filename); - $return = ob_get_clean(); - if(1 == $outputMode || 2 == $outputMode) { - echo $return; - $dump = $return; - } - return str_replace(array($this->mvdWrap1(), $this->mvdWrap2(), "\n"), '', $dump); - } - - - public function getResult() { - // Returns an array with all settings and content of the current email - return $this->maildata; - } - - - public function getErrors() { - // Returns an array of error messages, if they occurred. - // Returns blank array if no errors occurred. - // The module would call this after getImages() or testConnection() to - // see if it should display/log any error messages. - return (array)$this->smtp->getErrors(); - } - - - public function testConnection() { - // Tests that the email settings work. This would be used by the module at - // config time to give the user a Yes or No as to whether their email settings - // are functional. Returns a boolean TRUE or FALSE. - return $this->smtp->testConnection(); - } - - - // formatting for debug log output, used by debugSend() - private function mvd($v, $outputMode = 1, $filename = '') { - ob_start(); - var_dump($v); - $content = ob_get_contents(); - ob_end_clean(); - - $m = 0; - preg_match_all('#^(.*)=>#mU', $content, $stack); - $lines = $stack[1]; - $indents = array_map('strlen', $lines); - if($indents) $m = max($indents) + 1; - $content = preg_replace_callback( - '#^(.*)=>\\n\s+(\S)#Um', - function($match) use ($m) { - return $match[1] . str_repeat(' ', ($m - strlen($match[1]) > 1 ? $m - strlen($match[1]) : 1)) . $match[2]; - }, - $content - ); - $content = preg_replace('#^((\s*).*){$#m', "\\1\n\\2{", $content); - $content = str_replace(array('
', '
'), '', $content); - - switch($outputMode) { - case 1: - // Output to Browser-Window - echo $this->mvdWrap1() . $content . $this->mvdWrap2(); - break; - case 2: - // Output to Commandline-Window or to Browser as hidden comment - echo isset($_SERVER['HTTP_HOST']) ? "\n\n" : "{$content}\n"; - break; - case 3: - // Output into a StringVar - return $this->mvdWrap1() . $content . $this->mvdWrap2(); - break; - case 4: - // Output into a file, if a valid filename is given and we have write access to it - @touch($filename); - if(is_writable($filename)) { - $content = str_replace(array('>','"',' '), array('>','"',''), strip_tags($content)); - $res = file_put_contents($filename, $content, FILE_APPEND); - wireChmod($filename); - return $res === strlen($content); - } - return false; - break; - } - } - private function mvdWrap1() { return "
"; }
-            private function mvdWrap2() { return "
"; } - - - /* $type = ['To'|'CC'|'BCC'] */ - protected function addRecipient($emailaddress, $name='', $type='To') { - if(!in_array(strtoupper($type), array('TO','CC','BCC'))) { - $type = 'To'; - } - $emailaddress = str_replace(array('<', '>'), '', $emailaddress); - $this->maildata['recipients'][] = array('emailaddress'=>$emailaddress, 'name'=>$name, 'type'=>$type); - return $this->smtp->setEmailHeader($type, $emailaddress, $name); - } - - protected function setSubject($text) { - $this->maildata['subject'] = (string)$text; - return $this->smtp->setHeader('Subject', (string)$text); - } - - protected function setTextBody($text, $addSignature=null) { - $maildata = ''; - if(!is_bool($addSignature)) { - if(in_array($this->send_sender_signature, array('1','2','3'))) { - switch($this->send_sender_signature) { - case '1': // only when explicitly called via API - $addSignature = false; - break; - case '2': // automaticaly when FROM = Sender Emailaddress - $from = strtolower(trim(str_replace(array('<','>'), '', $this->from))); - $sender = strtolower(trim(str_replace(array('<','>'), '', $this->sender_email))); - $addSignature = $from == $sender || '' == $from ? true : false; - break; - case '3': // automaticaly with _every_ Message - $addSignature = true; - break; - } - } - else { - $addSignature = false; - } - } - $res = $this->smtp->setTextBody($text, $addSignature, $this->wrapText, $maildata); - $this->maildata['addSignature'] = $addSignature ? '1' : '0'; - $this->maildata['textbody'] = $maildata; - return $res; - } - - protected function setTextAndHtmlBody($text, $html, $addSignature=null) { - $maildata1 = $maildata2 = ''; - if(!is_bool($addSignature)) { - if(in_array($this->send_sender_signature, array('1','2','3'))) { - switch($this->send_sender_signature) { - case '1': // only when explicitly called via API - $addSignature = false; - break; - case '2': // automaticaly when FROM = Sender Emailaddress - $from = strtolower(trim(str_replace(array('<','>'), '', $this->from))); - $sender = strtolower(trim(str_replace(array('<','>'), '', $this->sender_email))); - $addSignature = $from == $sender || '' == $from ? true : false; - break; - case '3': // automaticaly with _every_ Message - $addSignature = true; - break; - } - } - else { - $addSignature = false; - } - } - $res = $this->smtp->setTextAndHtmlBody($text, $html, $addSignature, $this->wrapText, $maildata1, $maildata2); - $this->maildata['addSignature'] = $addSignature ? '1' : '0'; - $this->maildata['textbody'] = $maildata1; - $this->maildata['htmlbody'] = $maildata2; - return $res; - } - - // updated to PW 3.0.36 new attachment function with optional alternative basename - protected function attachFile($value, $filename = '') { - - if(!file_exists($value) || !is_readable($value)) { - $this->logError('Error in $WireMailSmtp->attachFile($filename): Not existing or not readable file: ' . $value); - return false; - } - $attachment = array( - 'FileName' => $value, - 'Content-Type' => 'automatic/name', - 'Disposition' => 'attachment' - ); - if($filename) $attachment['Name'] = $filename; // optional alternative basename - $ret = $this->smtp->addAttachment($attachment); - if(!$ret) { - return false; - } - $this->maildata['attachments'][] = $value; // logging attachment filename - return true; - } - - protected function setNotification() { - $maildata = ''; - $ret = $this->smtp->setNotification($maildata); - if($ret) { - $this->maildata['notification'] = $maildata; - } - return $ret; - } - - /* $priority = [ 1 | 2 | (3) | 4 | 5 ] */ - protected function setPriority($priority=3) { - if($ret = (bool)$this->smtp->setPriority($priority)) { - $this->maildata['priority'] = $priority; - } - return $ret; - } - - - - - /** - * Return instance of the installer class - * - */ - protected function getInstaller() { - #require_once(dirname(__FILE__) . '/WireMailSmtpInstall.php'); - #return new WireMailSmtpInstall(); - } - - - /** - * Perform installation - * - */ - public function ___install() { - #$this->getInstaller()->install(self::$defaultSettings); - } - - - /** - * Perform uninstall - * - */ - public function ___uninstall() { - #$this->getInstaller()->uninstall($this); - } - -} - - diff --git a/site/modules/.WireMailSmtp/WireMailSmtpAdaptor.php b/site/modules/.WireMailSmtp/WireMailSmtpAdaptor.php deleted file mode 100644 index bb9fa90..0000000 --- a/site/modules/.WireMailSmtp/WireMailSmtpAdaptor.php +++ /dev/null @@ -1,448 +0,0 @@ -connect($debug); - $this->close(); - return $res; - } - - public function connect($debug = false) { - $this->connected = (($this->errors[] = $this->emailMessage->StartSendingMessage()) == '') ? true : false; - return $this->connected; - } - - public function close() { - if(!isset($this->emailMessage)) { - return null; - } - $res = $this->emailMessage->ResetConnection('') == '' ? true : false; - $this->connected = false; - return $res; - } - - public function getErrors() { - $a = array(); - foreach( $this->errors as $e ) { - if($e=='') { - continue; - } - $a[] = $e; - } - $this->errors = $a; - return $this->errors; - } - - - protected function set_var_val( $k, $v ) { - if(!isset($this->aValidVars[$k])) { - return; - } - - switch($k) { - case 'send_sender_signature': - case 'smtp_port': - $this->$k = intval($v); - break; - - case 'smtp_certificate': - case 'smtp_ssl': - case 'smtp_start_tls': - case 'smtp_debug': - case 'smtp_html_debug': - case 'allow_without_authentication': - if(is_bool($v)) { - $this->$k = $v==true ? 1 : 0; - } - elseif(is_int($v)) { - $this->$k = $v==1 ? 1 : 0; - } - elseif(is_string($v) && in_array($v, array('1','on','On','ON','true','TRUE'))) { - $this->$k = 1; - } - elseif(is_string($v) && in_array($v, array('0','off','Off','OFF','false','FALSE'))) { - $this->$k = 0; - } - else { - $this->$k = 0; - } - break; - - case 'smtp_tls_crypto_method': - $availableTLSmethods = WireMailSmtp::getCryptoMethodsTLS(); - if(is_string($v) && isset($v, $availableTLSmethods)) { - $this->$k = $v; - } - break; - - case 'smtp_ssl_crypto_method': - $availableSSLmethods = WireMailSmtp::getCryptoMethodsSSL(); - if(is_string($v) && isset($v, $availableSSLmethods)) { - $this->$k = $v; - } - break; - - case 'authentication_mechanism': - $this->authentication_mechanism = $v; - break; - - case 'valid_recipients': - case 'extra_headers'; - $this->$k = is_array($v) || is_string($v) ? (array)$v : array(); - break; - - default: - if(in_array($k, array('smtp_host', 'smtp_user', 'smtp_password', - 'localhost', 'workstation', 'realm', - 'sender_name', 'sender_email', 'sender_reply', - 'sender_errors_to', 'sender_signature', 'sender_signature_html', - 'default_charset' - )) - ) { - $this->$k = strval($v); - } - } - } - - public function __construct($aConfig = null) { - if(!is_array($aConfig)) { - return; - } - - $this->aValidVars = get_class_vars(__CLASS__); - foreach($aConfig as $k => $v) { - $this->set_var_val($k, $v); - } - - foreach($this->valid_recipients as $k=>$v) { - $this->valid_recipients[$k] = str_replace(array('<','>'), '', strtolower(trim($v))); - } - - // start SMTP-Mail - $this->emailMessage = new smtp_message_class(); - - // SMTP Server Authentication - $this->emailMessage->default_charset = $this->default_charset; - $this->emailMessage->localhost = $this->localhost; - $this->emailMessage->smtp_host = $this->smtp_host; - $this->emailMessage->smtp_port = $this->smtp_port; - $this->emailMessage->smtp_ssl = $this->smtp_ssl; - $this->emailMessage->smtp_ssl_crypto_method = $this->smtp_ssl_crypto_method; - $this->emailMessage->smtp_start_tls = $this->smtp_start_tls; - $this->emailMessage->smtp_tls_crypto_method = $this->smtp_tls_crypto_method; - $this->emailMessage->smtp_user = $this->smtp_user; - $this->emailMessage->smtp_password = $this->smtp_password; - $this->emailMessage->allow_without_authentication = $this->allow_without_authentication; - $this->emailMessage->smtp_certificate = $this->smtp_certificate; - - // advanced SMTP Server Settings - $this->emailMessage->realm = $this->realm; - $this->emailMessage->workstation = $this->workstation; - $this->emailMessage->authentication_mechanism = $this->authentication_mechanism; - - // Debug on / off - $this->emailMessage->smtp_debug = $this->smtp_debug; - $this->emailMessage->smtp_html_debug = $this->smtp_html_debug; - - } - - public function __destruct() { - if( $this->connected ) { - $this->close(); - } - unset($this->emailMessage); - } - - - - - protected function logError($msg) { - if(!isset($this->module)) $this->module = wire('modules')->get('WireMailSmtp'); - $this->module->logError($msg); - } - - protected function logActivity($msg) { - if(!isset($this->module)) $this->module = wire('modules')->get('WireMailSmtp'); - $this->module->logActivity($msg); - } - - - - - - public function setSender($from='', $fromName='') { - $genericEmail = isset($this->localhost) ? 'processwire@' . $this->localhost : false; - $sender = strlen($from)>0 ? $from : $this->sender_email; - if(empty($sender) && false!==$genericEmail) { - $sender = $genericEmail; // fallback to a generic email address - } - $this->isValidEmailadress($sender); // if it is not a valid Emailaddress a Error is thrown - - $senderName = strlen($fromName)>0 ? $fromName : $this->sender_name; - - $this->from = $sender; - $this->fromName = $senderName; - - if($sender==$this->sender_email) { - // we use the defaults from module config - $replyTo = isset($this->sender_reply) && strlen($this->sender_reply)>0 ? $this->sender_reply : $this->sender_email; - $errorsTo = isset($this->sender_errors_to) && strlen($this->sender_errors_to)>0 ? $this->sender_errors_to : $this->sender_email; - } - else { - $replyTo = $genericEmail!=$sender ? $sender : ''; // we don't want get replys to the generic emailaddress - $errorsTo = ''; - } - $this->setEmailHeader('from', $sender, $senderName); - if(''!=$replyTo) $this->setEmailHeader('reply', $replyTo); - if(''!=$errorsTo) $this->setEmailHeader('errors', $errorsTo); - } - - - public function setCustomHeader($header) { - $extra_headers = (isset($this->extra_headers) && is_array($this->extra_headers) && 0extra_headers)) ? $this->extra_headers : array(); - $headers = array_merge($extra_headers, $header); - foreach($headers as $k=>$v) { - $this->setHeader($k, $v); - } - } - - - public function setTextBody($text, $addSignature, $wrapText, &$maildata) { - if($addSignature===true && isset($this->sender_signature) && is_string($this->sender_signature) && strlen(trim($this->sender_signature))>0) { - $text .= "\r\n\r\n" . $this->sender_signature; - } - $text = $wrapText ? $this->emailMessage->WrapText($text) : (string)$text; - $maildata = $text; - $ret = $this->emailMessage->AddQuotedPrintableTextPart($text); - if($ret=='') { - return true; - } - $this->logError('Error in '.__CLASS__.'::'.__FUNCTION__.' : ' . $ret); - return false; - } - - - public function setTextAndHtmlBody($text, $html, $addSignature, $wrapText, &$maildata1, &$maildata2) { - if($addSignature===true && isset($this->sender_signature) && is_string($this->sender_signature) && strlen(trim($this->sender_signature))>0) { - $text .= "\r\n\r\n--\r\n" . $this->sender_signature; - } - if($addSignature===true && isset($this->sender_signature_html) && is_string($this->sender_signature_html) && strlen(trim($this->sender_signature_html))>0) { - // we first need to check if there is a end tag in the html-markup - if(preg_match('', $html)) { - $html = str_replace("", "\r\n\r\n" . $this->sender_signature_html . "\r\n", $html); - } else { - $html .= "\r\n\r\n" . $this->sender_signature_html . "\r\n"; - } - } - - $maildata1 = $text = $wrapText ? $this->emailMessage->WrapText($text) : (string)$text; - $maildata2 = $html = $wrapText ? $this->emailMessage->WrapText($html) : (string)$html; - - // create Alternative-Multipart - $html_part = $text_part = $alternative_part = 0; - $this->emailMessage->CreateQuotedPrintableTextPart($text, 'UTF-8', $text_part); - $this->emailMessage->CreateQuotedPrintableHTMLPart($html, 'UTF-8', $html_part); - $alternative_parts = array( $text_part, $html_part ); - #$this->emailMessage->CreateAlternativeMultipart($alternative_parts, $alternative_part); - $ret = $this->emailMessage->AddAlternativeMultipart($alternative_parts); - - if($ret=='') { - return true; - } - $this->logError('Error in '.__CLASS__.'::'.__FUNCTION__.' : ' . $ret); - return false; - } - - - public function addAttachment($attachment) { - $ret = $this->emailMessage->AddFilePart($attachment); - if($ret=='') { - return true; - } - $this->logError('Error in '.__CLASS__.'::'.__FUNCTION__.' : ' . $ret); - return false; - } - - - public function setNotification(&$maildata) { - if(!isset($this->from) || strlen(trim($this->from))==0) { - return false; - } - $email = $this->bundleEmailAndName($this->from, $this->fromName); - $maildata = $email; - return $this->setHeader('Disposition-Notification-To', $email); - } - - - public function setPriority($priority=3) { - $priority = intval($priority); - if(!in_array($priority, array(1, 2, 3, 4, 5))) { - $this->logError('Error in '.__CLASS__.'::'.__FUNCTION__.' : ' . "($priority)"); - return false; - } - $priorities = array( - 5 => array('5 (Lowest)', 'Low', 'Low'), - 4 => array('4 (Low)', 'Low', 'Low'), - 3 => array('3 (Normal)', 'Normal', 'Normal'), - 2 => array('2 (High)', 'High', 'High'), - 1 => array('1 (Highest)', 'High', 'High') - ); - $ret = 0; - $ret += $this->setHeader('X-Priority', $priorities[$priority][0]) ? 1 : 0; - $ret += $this->setHeader('X-MSMail-Priority', $priorities[$priority][1]) ? 1 : 0; - $ret += $this->setHeader('Importance', $priorities[$priority][2]) ? 1 : 0; - return 3==$ret ? true : false; - } - - - - - public function send($debugServer=false, $htmlDebug=false, &$maildata='') { - if($debugServer) $this->emailMessage->smtp_debug = 1; - if($htmlDebug) $this->emailMessage->smtp_html_debug = 1; - if(!$this->connect()) { - $this->logError('Error in '.__CLASS__.'::'.__FUNCTION__.' : cannot connect to smtp-server!'); - return false; - } - $this->emailMessage->SetHeader("Date", gmdate("D, j M Y H:i:s \G\M\T")); - $ret = $this->emailMessage->Send(); - if($ret=='') { - $maildata = 'success'; - return true; - } - $this->logError('Error in '.__CLASS__.'::'.__FUNCTION__.' : ' . $ret); - $maildata = (string)$ret; - return false; - } - - - - - public function setEmailHeader($type, $address, $name='') { - $address = str_replace(array('<','>'), '', $address); - if(!$this->isValidEmailadress($address)) { - $this->logError('Error in '.__CLASS__.'::'.__FUNCTION__.' : No valid E-mailadress: '.$address); - return false; - } - $type = strtolower($type); - $valid_types = array('to'=>'To','from'=>'From','cc'=>'CC','bcc'=>'BCC','reply-to'=>'Reply-To','reply'=>'Reply-To','errors-to'=>'Errors-To','errors'=>'Errors-To','error'=>'Errors-To'); - if(!in_array($type,array_keys($valid_types))) { - $this->logError('Error in '.__CLASS__.'::'.__FUNCTION__.' : No valid Headertype: '.$type); - return false; - } - if(strpos($type,'reply')!==false) { - $this->emailMessage->SetHeader('Return-Path',$address); - } - $ret = $this->emailMessage->SetEncodedEmailHeader($valid_types[$type], $address, $name); - if($ret!='') { - $this->logError('Error in '.__CLASS__.'::'.__FUNCTION__.' : ' . $ret); - return false; - } - return true; - } - - - public function setHeader($headername,$content) { - $ret = $this->emailMessage->SetEncodedHeader($headername,$content); - if($ret!='') { - $this->logError('Error in '.__CLASS__.'::'.__FUNCTION__.' : ' . $ret); - return false; - } - return true; - } - - - public function isValidEmailadress($email) { - $email = strtolower(trim($email)); - $clean = wire('sanitizer')->email($email); - if($email != $clean) throw new WireException("Invalid email address"); - return true; - } - - - protected function bundleEmailAndName($email, $name) { - $email = strtolower(trim($email)); - $clean = wire('sanitizer')->email($email); - if(!strlen($name)) return $email; - $name = wire('sanitizer')->emailHeader($name); - if(strpos($name, ',') !== false) { - // name contains a comma, so quote the value - $name = str_replace('"', '', $name); // remove existing quotes - $name = '"' . $name . '"'; // surround w/quotes - } - return "$name <$email>"; - } - - - public function setBulkMail($bulk) { - return $this->emailMessage->setBulkMail($bulk); - } - - -} // END class hnsmtp - - diff --git a/site/modules/.WireMailSmtp/WireMailSmtpConfig.php b/site/modules/.WireMailSmtp/WireMailSmtpConfig.php deleted file mode 100644 index 64fef13..0000000 --- a/site/modules/.WireMailSmtp/WireMailSmtpConfig.php +++ /dev/null @@ -1,641 +0,0 @@ -version, '2.4.1', '<')) { - $this->error(' requires ProcessWire 2.4.1 or newer. Please update.'); - } - - $siteconfig = is_array(wire('config')->wiremailsmtp) ? wire('config')->wiremailsmtp : array(); - $modules = wire('modules'); - $form = new InputfieldWrapper(); - - // LOCALHOST - $field = $modules->get('InputfieldText'); - $field->attr('name', 'localhost'); - $field->attr('value', $data['localhost']); - $field->label = $this->_('Local Hostname'); - $field->description = $this->_('Hostname of this computer'); - if(isset($siteconfig['localhost'])) { - $field->notes = $this->attentionMessage($siteconfig['localhost']); - $field->attr('tabindex', '-1'); - } else { - $field->required = true; - } - $field->icon = 'desktop'; - $form->add($field); - - // WRAPPER SMTP SERVER - $fieldset = $modules->get('InputfieldFieldset'); - $fieldset->label = $this->_('SMTP Server'); - $fieldset->attr('name', '_smtp'); - $fieldset->collapsed = Inputfield::collapsedNo; - $fieldset->icon = 'server'; - - // SMTP HOST - $field = $modules->get('InputfieldText'); - $field->attr('name', 'smtp_host'); - $field->attr('value', $data['smtp_host']); - $field->label = $this->_('SMTP Hostname'); - $field->description = $this->_('Set to the host name of the SMTP server to which you want to relay the messages'); - $field->columnWidth = 50; - if(isset($siteconfig['smtp_host'])) { - $field->notes = $this->attentionMessage($siteconfig['smtp_host']); - $field->attr('tabindex', '-1'); - } else { - $field->required = true; - } - $field->icon = 'server'; - $fieldset->add($field); - - // SMTP PORT - $field = $modules->get('InputfieldInteger'); - $field->attr('name', 'smtp_port'); - $field->attr('value', $data['smtp_port']); - $field->label = $this->_('SMTP Port'); - $field->description = $this->_('Set to the TCP port of the SMTP server host to connect'); - if(isset($siteconfig['smtp_port'])) { - $field->notes = $this->attentionMessage($siteconfig['smtp_port']); - $field->attr('tabindex', '-1'); - } else { - $field->notes = $this->_("default: 25\ndefault for TLS / SSL: 587 or 465"); - $field->required = true; - } - $field->columnWidth = 50; - $field->icon = 'sign-out'; - $fieldset->add($field); - - // ALLOW WITHOUT ANY AUTHENTICATION - $field = $modules->get('InputfieldCheckbox'); - $field->attr('name', 'allow_without_authentication'); - $field->attr('id', 'allow_without_authentication'); - $field->attr('value', 1); - $field->attr('checked', $data['allow_without_authentication'] ? 'checked' : ''); - $field->label = $this->_('Allow Connection without Authentication'); - $field->description = $this->_('Server allows connecting without Authentication Credentials'); - if(isset($siteconfig['allow_without_authentication'])) { - $field->notes = $this->attentionMessage($siteconfig['allow_without_authentication']); - $field->attr('tabindex', '-1'); - } else { - $field->notes = $this->_('Default: unchecked'); - } - $field->columnWidth = 33; - $field->icon = 'unlock'; - $fieldset->add($field); - - // SMTP USER - $field = $modules->get('InputfieldText'); - $field->attr('name', 'smtp_user'); - $field->attr('value', $data['smtp_user']); - $field->label = $this->_('SMTP User'); - $field->description = $this->_('Set this variable to the user name when the SMTP server requires authentication'); - if(isset($siteconfig['smtp_user'])) { - $field->notes = $this->attentionMessage($siteconfig['smtp_user']); - $field->attr('tabindex', '-1'); - } - $field->columnWidth = 34; - $field->icon = 'user'; - $fieldset->add($field); - - // SMTP PASSWORD - $field = $modules->get('InputfieldText'); - $field->attr('name', 'smtp_password'); - $field->attr('value', $data['smtp_password']); - $field->attr('type', 'password'); - $field->label = $this->_('SMTP Password'); - $field->description = $this->_('Set this variable to the user password when the SMTP server requires authentication'); - if(isset($siteconfig['smtp_password'])) { - $field->notes = $this->attentionMessage('*******'); - $field->attr('tabindex', '-1'); - } else { - $field->notes = $this->_('**Note**: Password is stored as plain text in database.'); - } - $field->columnWidth = 33; - $field->icon = 'asterisk'; - $fieldset->add($field); - - // SMTP STARTTLS - $field = $modules->get('InputfieldCheckbox'); - $field->attr('name', 'smtp_start_tls'); - $field->attr('id', 'smtp_start_tls'); - $field->attr('value', 1); - $field->attr('checked', $data['smtp_start_tls'] ? 'checked' : ''); - $field->columnWidth = 50; - $field->label = $this->_('Use START-TLS'); - $field->description = $this->_('Check if the connection to the SMTP server should use encryption after the connection is established using TLS protocol'); - if(isset($siteconfig['smtp_start_tls'])) { - $field->notes = $this->attentionMessage($siteconfig['smtp_start_tls']); - $field->attr('tabindex', '-1'); - } - $field->icon = 'lock'; - //$field->showIf = 'smtp_ssl=0'; - $fieldset->add($field); - - // TLS crypto method - $field = $modules->get('InputfieldSelect'); - $field->attr('name', 'smtp_tls_crypto_method'); - $field->attr('value', $data['smtp_tls_crypto_method']); - $field->label = $this->_('Select a crypto method for TLS'); - $availableTLSmethods = WireMailSmtp::getCryptoMethodsTLS(); - array_unshift($availableTLSmethods, array('')); - $field->addOptions($availableTLSmethods); - $field->description = $this->_("Select the crypto method that should be used for TLS connections. If you don't know what to select, try with the highest and strongest entry first!"); - if(isset($siteconfig['smtp_tls_crypto_method'])) { - $field->notes = $this->attentionMessage($siteconfig['smtp_tls_crypto_method']); - $field->attr('tabindex', '-1'); - } - $field->columnWidth = 50; - $field->icon = 'lock'; - //$field->showIf = 'smtp_start_tls=1'; - $fieldset->add($field); - - // SMTP SSL - $field = $modules->get('InputfieldCheckbox'); - $field->attr('name', 'smtp_ssl'); - $field->attr('id', 'smtp_ssl'); - $field->attr('value', 1); - $field->attr('checked', $data['smtp_ssl'] ? 'checked' : ''); - $field->columnWidth = 100; - $field->label = $this->_('Use SSL'); - $field->description = $this->_('Check if the SMTP server requires secure connections using SSL protocol'); - if(isset($siteconfig['smtp_ssl'])) { - $field->notes = $this->attentionMessage($siteconfig['smtp_ssl']); - $field->attr('tabindex', '-1'); - } - $field->icon = 'lock'; - //$field->showIf = 'smtp_start_tls=0'; - $fieldset->add($field); - // SSL crypto method -// $field = $modules->get('InputfieldSelect'); -// $field->attr('name', 'smtp_ssl_crypto_method'); -// $field->attr('value', $data['smtp_ssl_crypto_method']); -// $field->label = $this->_('Select a crypto method for SSL'); -// $availableSSLmethods = WireMailSmtp::getCryptoMethodsSSL(); -// array_unshift($availableSSLmethods, array('')); -// $field->addOptions($availableSSLmethods); -// $field->description = $this->_("Select the crypto method that should be used for SSL connections. If you don't know what to select, try with the highest and strongest entry first!"); -// if(isset($siteconfig['smtp_ssl_crypto_method'])) { -// $field->notes = $this->attentionMessage($siteconfig['smtp_ssl_crypto_method']); -// $field->attr('tabindex', '-1'); -// } -// $field->columnWidth = 50; -// $field->icon = 'lock'; -// $fieldset->add($field); - - // SMTP CERTIFICATE - // @flydev: https://processwire.com/talk/topic/5704-wiremailsmtp/page-5#entry113290 - if(version_compare(phpversion(), '5.6.0', '>=')) { - $field = $modules->get('InputfieldCheckbox'); - $field->attr('name', 'smtp_certificate'); - $field->label = $this->_('PHP >= 5.6 - Allow self signed certificate'); - $field->attr('value', $data['smtp_certificate']); - $field->attr('checked', $data['smtp_certificate'] ? 'checked' : ''); - $field->columnWidth = 100; - $field->icon = 'certificate'; - $fieldset->add($field); - } - - // WRAPPER ADVANCED SMTP SETTINGS - $fieldset2 = $modules->get('InputfieldFieldset'); - $fieldset2->label = $this->_('Advanced SMTP'); - $fieldset2->attr('name', '_advanced_SMTP'); - $fieldset2->collapsed = Inputfield::collapsedYes; - $fieldset2->icon = 'cogs'; - - // AUTHENTICATION MECHANISM - $field = $modules->get('InputfieldText'); - $field->attr('name', 'authentication_mechanism'); - $field->attr('value', $data['authentication_mechanism']); - $field->label = $this->_('Authentication Mechanism'); - $field->description = $this->_('Force the use of a specific authentication mechanism.'); - if(isset($siteconfig['authentication_mechanism'])) { - $field->notes = $this->attentionMessage($siteconfig['authentication_mechanism']); - $field->attr('tabindex', '-1'); - } else { - $field->notes = $this->_('Default: empty'); - } - $field->columnWidth = 33; - $field->icon = 'unlock'; - $fieldset2->add($field); - - // REALM - $field = $modules->get('InputfieldText'); - $field->attr('name', 'realm'); - $field->attr('value', $data['realm']); - $field->label = $this->_('Realm'); - $field->description = $this->_('Set this variable when the SMTP server requires authentication and if more than one authentication realm is supported'); - if(isset($siteconfig['realm'])) { - $field->notes = $this->attentionMessage($siteconfig['realm']); - $field->attr('tabindex', '-1'); - } else { - $field->notes = $this->_('Default: empty'); - } - $field->columnWidth = 34; - $field->icon = 'map-signs'; - $fieldset2->add($field); - - // WORKSTATION - $field = $modules->get('InputfieldText'); - $field->attr('name', 'workstation'); - $field->attr('value', $data['workstation']); - $field->label = $this->_('Workstation'); - $field->description = $this->_('Set this variable to the client workstation when the SMTP server requires authentication identifiying the origin workstation name'); - if(isset($siteconfig['workstation'])) { - $field->notes = $this->attentionMessage($siteconfig['workstation']); - $field->attr('tabindex', '-1'); - } else { - $field->notes = $this->_('Default: empty'); - } - $field->columnWidth = 33; - $field->icon = 'building'; - $fieldset2->add($field); - - $fieldset->add($fieldset2); - - $form->add($fieldset); - - - // WRAPPER SENDER - $fieldset = $modules->get('InputfieldFieldset'); - $fieldset->label = $this->_('Sender'); - $fieldset->attr('name', '_sender'); - $fieldset->collapsed = Inputfield::collapsedNo; - $fieldset->icon = 'address-book'; - - // SENDER EMAIL - $field = $modules->get('InputfieldText'); - $field->attr('name', 'sender_email'); - $field->attr('value', $data['sender_email']); - $field->label = $this->_('Sender Email Address'); - if(isset($siteconfig['sender_email'])) { - $field->notes = $this->attentionMessage($siteconfig['sender_email']); - $field->attr('tabindex', '-1'); - } - $field->columnWidth = 50; - $field->icon = 'at'; - $fieldset->add($field); - - // SENDER NAME - $field = $modules->get('InputfieldText'); - $field->attr('name', 'sender_name'); - $field->attr('value', $data['sender_name']); - $field->label = $this->_('Sender Name'); - if(isset($siteconfig['sender_name'])) { - $field->notes = $this->attentionMessage($siteconfig['sender_name']); - $field->attr('tabindex', '-1'); - } - $field->columnWidth = 50; - $field->icon = 'user'; - $fieldset->add($field); - - // SENDER REPLY EMAIL - $field = $modules->get('InputfieldText'); - $field->attr('name', 'sender_reply'); - $field->attr('value', $data['sender_reply']); - $field->label = $this->_('Reply Email Address'); - $field->description = $this->_('if is empty, Sender Emailaddress is used'); - if(isset($siteconfig['sender_reply'])) { - $field->notes = $this->attentionMessage($siteconfig['sender_reply']); - $field->attr('tabindex', '-1'); - } - $field->columnWidth = 50; - $field->collapsed = Inputfield::collapsedYes; - $field->icon = 'mail-reply'; - $fieldset->add($field); - - // SENDER ERROR EMAIL - $field = $modules->get('InputfieldText'); - $field->attr('name', 'sender_errors_to'); - $field->attr('value', $data['sender_errors_to']); - $field->label = $this->_('Errors Email Address'); - if(isset($siteconfig['sender_errors_to'])) { - $field->notes = $this->attentionMessage($siteconfig['sender_errors_to']); - $field->attr('tabindex', '-1'); - } else { - $field->notes = $this->_('Default: empty'); - } - $field->columnWidth = 50; - $field->collapsed = Inputfield::collapsedYes; - $field->icon = 'remove'; - $fieldset->add($field); - - // SENDER SIGNATURE (TEXT) - $field = $modules->get('InputfieldTextarea'); - $field->attr('name', 'sender_signature'); - $field->attr('value', $data['sender_signature']); - $field->label = $this->_('Sender Signature (Plain Text)'); - $field->description = $this->_('Like Contact Data and / or Confidentiality Notices'); - if(isset($siteconfig['sender_signature'])) { - $field->notes = $this->attentionMessage('***'); - $field->attr('tabindex', '-1'); - } - $field->columnWidth = 33; - $field->icon = 'pencil'; - $fieldset->add($field); - - // SENDER SIGNATURE (HTML) - $field = $modules->get('InputfieldTextarea'); - $field->attr('name', 'sender_signature_html'); - $field->attr('value', $data['sender_signature_html']); - $field->label = $this->_('Sender Signature (HTML)'); - $field->description = $this->_('Like Contact Data and / or Confidentiality Notices'); - if(isset($siteconfig['sender_signature_html'])) { - $field->notes = $this->attentionMessage('***'); - $field->attr('tabindex', '-1'); - } - $field->columnWidth = 33; - $field->icon = 'code'; - $fieldset->add($field); - - // SENDER SEND SIGNATURE - $field = $modules->get('InputfieldSelect'); - $field->attr('name', 'send_sender_signature'); - $field->attr('value', $data['send_sender_signature']); - $field->label = $this->_('Send Sender Signature'); - $field->addOptions(array( - '1' => 'only when explicitly called via API', - '2' => 'automaticaly when FROM = Sender Emailaddress', - '3' => 'automaticaly with _every_ Message' - )); - $field->description = $this->_('When the Signature should be send by default, (could be overriden by the API)'); - $field->columnWidth = 34; - $field->icon = 'question'; - $fieldset->add($field); - - $form->add($fieldset); - - // WRAPPER ADVANCED SETTINGS - $fieldset = $modules->get('InputfieldFieldset'); - $fieldset->label = $this->_('Advanced'); - $fieldset->attr('name', '_advanced'); - $fieldset->collapsed = Inputfield::collapsedYes; - $fieldset->icon = 'gear'; - - // VALID RECIPIENTS - $field = $modules->get('InputfieldTextarea'); - $field->attr('name', 'valid_recipients'); - $field->attr('value', $data['valid_recipients']); - $field->label = $this->_('Valid Recipients'); - $field->description = $this->_('List of email addresses that can receive messages.'); - if(isset($siteconfig['valid_recipients'])) { - $aTemp = array(); - foreach($siteconfig['valid_recipients'] as $k => $v) $aTemp[] = "{$k} : {$v}"; - $field->notes = $this->attentionMessage("\n" . implode("\n", $aTemp) . "\n"); - $field->attr('tabindex', '-1'); - unset($k, $v, $aTemp); - } else { - $field->notes = $this->_('One email per line'); - } - $field->columnWidth = 50; - $field->icon = 'users'; - $fieldset->add($field); - - // EXTRA HEADERS - $field = $modules->get('InputfieldTextarea'); - $field->attr('name', 'extra_headers'); - $field->attr('value', $data['extra_headers']); - $field->label = $this->_('Extra Headers'); - $field->description = $this->_('Optionally define custom meta headers.'); - if(isset($siteconfig['extra_headers'])) { - $aTemp = array(); - foreach($siteconfig['extra_headers'] as $k => $v) $aTemp[] = "{$k} : {$v}"; - $field->notes = $this->attentionMessage("\n" . implode("\n", $aTemp) . "\n"); - $field->attr('tabindex', '-1'); - unset($k, $v, $aTemp); - } else { - $field->notes = $this->_('One email per line'); - } - $field->columnWidth = 50; - $field->icon = 'align-left'; - $fieldset->add($field); - - $form->add($fieldset); - - - // DISPLAY FINAL MERGED SETTINGS - $field = $modules->get('InputfieldMarkup'); - $field->attr('name', '_final_settings'); - $field->label = 'Final Merged Settings'; - $field->icon = 'filter'; - $field->columnWidth = 100; - $field->collapsed = Inputfield::collapsedNo; - $field->attr('value', $this->finalSettingsMessage($siteconfig)); - $form->add($field); - - - // TEST SETTINGS - $field = $modules->get('InputfieldCheckbox'); - $field->attr('name', '_test_settings'); - $field->label = $this->_('Test settings'); - $field->description = $this->_('Test settings now.'); - $field->attr('value', 1); - $field->attr('checked', ''); - $field->icon = 'heartbeat'; - $form->add($field); - - // OPTIONAL VERBOSE DEBUGGING - $fieldset = $modules->get('InputfieldFieldset'); - $fieldset->label = $this->_('Verbose Debug settings'); - $fieldset->attr('name', '_verbosedebug'); - $fieldset->collapsed = Inputfield::collapsedNo; - $fieldset->showIf = '_test_settings=1'; - $fieldset->icon = 'heartbeat'; - - $field = $modules->get('InputfieldText'); - $field->attr('name', 'debug_senderemail'); - $field->attr('value', $data['sender_email']); - $field->label = $this->_('Sender Email Address'); -// if(isset($siteconfig['sender_email'])) { -// $field->notes = $this->attentionMessage($siteconfig['sender_email']); -// $field->attr('tabindex', '-1'); -// } - $field->columnWidth = 50; - $field->icon = 'at'; - $fieldset->add($field); - - $field = $modules->get('InputfieldText'); - $field->attr('name', 'debug_recipientemail'); - $field->attr('value', ''); - $field->label = $this->_('Recipient Email Address'); - $field->columnWidth = 50; - $field->icon = 'at'; - $fieldset->add($field); - - $field = $modules->get('InputfieldText'); - $field->attr('name', 'debug_subjectline'); - $field->attr('value', ''); - $field->label = $this->_('Subjectline'); - $field->columnWidth = 50; - $field->icon = 'pencil'; - $fieldset->add($field); - - $field = $modules->get('InputfieldTextarea'); - $field->attr('name', 'debug_bodycontent'); - $field->attr('value', 'This is a test message. ÄÖÜ äöüß'); - $field->label = $this->_('Bodycontent'); - $field->columnWidth = 50; - $field->icon = 'envelope-o'; - $fieldset->add($field); - - $form->add($fieldset); - - - if(wire('session')->test_settings) { - // EXECUTE DEBUG CONNECTION AND DISPLAY LOG - $field = $modules->get('InputfieldMarkup'); - $field->attr('name', '_debug_log'); - $field->label = 'Debug Log'; - $field->icon = 'heartbeat'; - $field->columnWidth = 100; - $field->collapsed = Inputfield::collapsedNo; - $field->attr('value', $this->testSettings()); - $form->add($field); - - } else if(wire('input')->post->_test_settings) { - // PREPARE SESSION FOR DEBUGGING - $session = wire('session'); - $session->set('test_settings', 1); - $post = wire('input')->post; - $session->set('debug_senderemail', $post->debug_senderemail); - $session->set('debug_recipientemail', $post->debug_recipientemail); - $session->set('debug_subjectline', $post->debug_subjectline); - $session->set('debug_bodycontent', $post->debug_bodycontent); - } - - return $form; - } - - - public function testSettings() { - try { - $session = wire('session'); - $from = $session->get('debug_senderemail'); - $to = array($session->get('debug_recipientemail')); - $subject = $session->get('debug_subjectline'); - $body = $session->get('debug_bodycontent'); - $session->remove('test_settings'); - $session->remove('debug_senderemail'); - $session->remove('debug_recipientemail'); - $session->remove('debug_subjectline'); - $session->remove('debug_bodycontent'); - - if($from && $to) { - // do a verbose debugging - if(!$subject) $subject = 'Debug Testmail'; - if(!$body) $body = 'Debug Testmail, äöüß'; - $mail = wireMail(); - if($mail->className != 'WireMailSmtp') { - $dump = "

Couldn't get the right WireMail-Module (WireMailSmtp). found: {$mail->className}

"; - } else { - $mail->from = $from; - $mail->to($to); - $mail->subject($subject); - $mail->sendSingle(true); - $mail->body($body); - $dump = $mail->debugSend(3); - } - } else { - // only try a testconnection - $module = wire('modules')->get('WireMailSmtp'); - $a = $module->getAdaptor(); - if($a->testConnection()) { - $dump = $this->_("SUCCESS! SMTP settings appear to work correctly."); - } else { - $dump = $this->_("FAILURE! SMTP settings doesn't appear to work."); - } - } - } catch(Exception $e) { - $dump = $e->getMessage(); - } - - $outputTemplate = "
".str_replace(array('
', '
', '
'), '', $dump) ."
"; - return $outputTemplate; - } - - - private function attentionMessage($value) { - return sprintf($this->_("ATTENTION: Value is overwritten by an entry in your site/config.php:\n -[ %s ]- "), $value); - } - - - private function finalSettingsMessage($siteconfig) { - - $outputTemplate = "
[__CONTENT__]
"; - - if(!count($siteconfig)) { - $content = 'There are no overriding settings defined in your site/config.php'; - return str_replace('[__CONTENT__]', $content, $outputTemplate); - } - - $validKeys = array( - 'localhost', - 'smtp_host', - 'smtp_port', - 'smtp_ssl', - 'smtp_ssl_crypto_method', - 'smtp_start_tls', - 'smtp_tls_crypto_method', - 'smtp_user', - 'smtp_password', - 'allow_without_authentication', - 'smtp_certificate', - 'realm', - 'workstation', - 'authentication_mechanism', - 'sender_name', - 'sender_email', - 'sender_reply', - 'sender_errors_to', - 'sender_signature', - 'sender_signature_html', - 'extra_headers', - 'valid_recipients', - #'smtp_debug', - #'smtp_html_debug', - ); - $module = wire('modules')->get('WireMailSmtp'); - $dump = $module->getSettings(); - $v = array(); - foreach($validKeys as $k) { - if(isset($dump[$k])) { - $v[$k] = 'smtp_password' == $k ? '********' : $dump[$k]; - } - } - - ob_start(); - var_dump($v); - $content = ob_get_contents(); - ob_end_clean(); - - $m = 0; - preg_match_all('#^(.*)=>#mU', $content, $stack); - $lines = $stack[1]; - $indents = array_map('strlen', $lines); - if($indents) $m = max($indents) + 1; - $content = preg_replace_callback( - '#^(.*)=>\\n\s+(\S)#Um', - function($match) use ($m) { - return $match[1] . str_repeat(' ', ($m - strlen($match[1]) > 1 ? $m - strlen($match[1]) : 1)) . $match[2]; - }, - $content - ); - $content = preg_replace('#^((\s*).*){$#m', "\\1\n\\2{", $content); - $content = str_replace(array('
', '
'), '', $content); - - return str_replace('[__CONTENT__]', $content, $outputTemplate); - } - -} - diff --git a/site/modules/.WireMailSmtp/smtp_classes/basic_sasl_client.php b/site/modules/.WireMailSmtp/smtp_classes/basic_sasl_client.php deleted file mode 100644 index 26fc63a..0000000 --- a/site/modules/.WireMailSmtp/smtp_classes/basic_sasl_client.php +++ /dev/null @@ -1,61 +0,0 @@ -state!=SASL_BASIC_STATE_START) - { - $client->error="Basic authentication state is not at the start"; - return(SASL_FAIL); - } - $this->credentials=array( - "user"=>"", - "password"=>"" - ); - $defaults=array( - ); - $status=$client->GetCredentials($this->credentials,$defaults,$interactions); - if($status==SASL_CONTINUE) - { - $message=$this->credentials["user"].":".$this->credentials["password"]; - $this->state=SASL_BASIC_STATE_DONE; - } - else - Unset($message); - return($status); - } - - Function Step(&$client, $response, &$message, &$interactions) - { - switch($this->state) - { - case SASL_BASIC_STATE_DONE: - $client->error="Basic authentication was finished without success"; - return(SASL_FAIL); - default: - $client->error="invalid Basic authentication step state"; - return(SASL_FAIL); - } - return(SASL_CONTINUE); - } -}; - -?> diff --git a/site/modules/.WireMailSmtp/smtp_classes/cram_md5_sasl_client.php b/site/modules/.WireMailSmtp/smtp_classes/cram_md5_sasl_client.php deleted file mode 100644 index 65bca17..0000000 --- a/site/modules/.WireMailSmtp/smtp_classes/cram_md5_sasl_client.php +++ /dev/null @@ -1,67 +0,0 @@ -state!=SASL_CRAM_MD5_STATE_START) - { - $client->error="CRAM-MD5 authentication state is not at the start"; - return(SASL_FAIL); - } - $this->credentials=array( - "user"=>"", - "password"=>"" - ); - $defaults=array(); - $status=$client->GetCredentials($this->credentials,$defaults,$interactions); - if($status==SASL_CONTINUE) - $this->state=SASL_CRAM_MD5_STATE_RESPOND_CHALLENGE; - Unset($message); - return($status); - } - - Function Step(&$client, $response, &$message, &$interactions) - { - switch($this->state) - { - case SASL_CRAM_MD5_STATE_RESPOND_CHALLENGE: - $message=$this->credentials["user"]." ".$this->HMACMD5($this->credentials["password"], $response); - $this->state=SASL_CRAM_MD5_STATE_DONE; - break; - case SASL_CRAM_MD5_STATE_DONE: - $client->error="CRAM-MD5 authentication was finished without success"; - return(SASL_FAIL); - default: - $client->error="invalid CRAM-MD5 authentication step state"; - return(SASL_FAIL); - } - return(SASL_CONTINUE); - } -}; - -?> diff --git a/site/modules/.WireMailSmtp/smtp_classes/digest_sasl_client.php b/site/modules/.WireMailSmtp/smtp_classes/digest_sasl_client.php deleted file mode 100644 index f71bc6e..0000000 --- a/site/modules/.WireMailSmtp/smtp_classes/digest_sasl_client.php +++ /dev/null @@ -1,135 +0,0 @@ -H($secret.':'.$data); - } - - Function Initialize(&$client) - { - return(1); - } - - Function Start(&$client, &$message, &$interactions) - { - if($this->state!=SASL_DIGEST_STATE_START) - { - $client->error='Digest authentication state is not at the start'; - return(SASL_FAIL); - } - $this->credentials=array( - 'user'=>'', - 'password'=>'', - 'uri'=>'', - 'method'=>'', - 'session'=>'' - ); - $defaults=array(); - $status=$client->GetCredentials($this->credentials,$defaults,$interactions); - if($status==SASL_CONTINUE) - $this->state=SASL_DIGEST_STATE_RESPOND_CHALLENGE; - Unset($message); - return($status); - } - - Function Step(&$client, $response, &$message, &$interactions) - { - switch($this->state) - { - case SASL_DIGEST_STATE_RESPOND_CHALLENGE: - $values=explode(',',$response); - $parameters=array(); - for($v=0; $vcredentials['user'].'"'; - if(!IsSet($parameters[$p='realm']) - && !IsSet($parameters[$p='nonce'])) - { - $client->error='Digest authentication parameter '.$p.' is missing from the server response'; - return(SASL_FAIL); - } - $message.=', realm='.$parameters['realm']; - $message.=', nonce='.$parameters['nonce']; - $message.=', uri="'.$this->credentials['uri'].'"'; - if(IsSet($parameters['algorithm'])) - { - $algorithm=$this->unq($parameters['algorithm']); - $message.=', algorithm='.$parameters['algorithm']; - } - else - $algorithm=''; - - $realm=$this->unq($parameters['realm']); - $nonce=$this->unq($parameters['nonce']); - if(IsSet($parameters['qop'])) - { - switch($qop=$this->unq($parameters['qop'])) - { - case "auth": - $cnonce=$this->credentials['session']; - break; - default: - $client->error='Digest authentication quality of protection '.$qop.' is not yet supported'; - return(SASL_FAIL); - } - } - $nc_value='00000001'; - if(IsSet($parameters['qop']) - && !strcmp($algorithm, 'MD5-sess')) - $A1=$this->H($this->credentials['user'].':'. $realm.':'. $this->credentials['password']).':'.$nonce.':'.$cnonce; - else - $A1=$this->credentials['user'].':'. $realm.':'. $this->credentials['password']; - $A2=$this->credentials['method'].':'.$this->credentials['uri']; - if(IsSet($parameters['qop'])) - $response=$this->KD($this->H($A1), $nonce.':'. $nc_value.':'. $cnonce.':'. $qop.':'. $this->H($A2)); - else - $response=$this->KD($this->H($A1), $nonce.':'. $this->H($A2)); - $message.=', response="'.$response.'"'; - if(IsSet($parameters['opaque'])) - $message.=', opaque='.$parameters['opaque']; - if(IsSet($parameters['qop'])) - $message.=', qop="'.$qop.'"'; - $message.=', nc='.$nc_value; - if(IsSet($parameters['qop'])) - $message.=', cnonce="'.$cnonce.'"'; - $client->encode_response=0; - $this->state=SASL_DIGEST_STATE_DONE; - break; - case SASL_DIGEST_STATE_DONE: - $client->error='Digest authentication was finished without success'; - return(SASL_FAIL); - default: - $client->error='invalid Digest authentication step state'; - return(SASL_FAIL); - } - return(SASL_CONTINUE); - } -}; - -?> diff --git a/site/modules/.WireMailSmtp/smtp_classes/documentation/email_message_class.html b/site/modules/.WireMailSmtp/smtp_classes/documentation/email_message_class.html deleted file mode 100644 index 11f64d5..0000000 --- a/site/modules/.WireMailSmtp/smtp_classes/documentation/email_message_class.html +++ /dev/null @@ -1,1048 +0,0 @@ - - - -Class: MIME E-mail message composing and sending - - -

Class: MIME E-mail message composing and sending

-
- -
-
    -

  • Summary
  • -
      -

      Name

      -

      MIME E-mail message composing and sending

      -

      Author

      -

      Manuel Lemos (mlemos-at-acm.org)

      -

      Copyright

      -

      Copyright © (C) Manuel Lemos 1999-2004

      -

      Version

      -

      @(#) $Id: email_message_class.html,v 1.1 2014/03/03 12:28:31 horst Exp $

      -

      Purpose

      -

      Compose and send e-mail messages according to the MIME standards.

      -

      Translation

      -

      If you are interested in translating the documentation of this class to your own idiom, please contact the author.

      -

      Support

      -

      Technical support for using this class may be obtained in the mimemessage-dev mailing list. Just go to the mailing list page to browse the list archives, learn how to to join and post support request messages:

      -

      http://groups-beta.google.com/group/mimemessage-dev

      -

      Usage

      -

      To used this class just create a new object as follows, set any variables to configure its behavior and call the functions you need to compose and send your messages.

      -

      require('email_message.php');
      -
      - $message_object = new email_message_class;
      -

      -

      - Set the sender and recipients

      -

      You can set the message sender and one or more recipient addresses using the SetHeader or the SetEncodedEmailHeader functions specifying the addresses for the From, To, Cc and Bcc headers.

      -

      - Formatting text messages

      -

      You can use the WrapText to assure that a text message does not have more than 75 columns by breaking the longer lines between words.

      -

      -

      If you are composing a reply to another text message, you can use the QuoteText function to conveniently mark the text quoted from the original message.

      -

      - Add a plain text message body

      -

      If the text of the message that you want to send only contains ASCII characters (7 bits), use the AddPlainTextPart function to add the text to the message.

      -

      - Add a text message with non-ASCII characters

      -

      If your message text may contains non-ASCII characters (8 bits or more), use the AddQuotedPrintableTextPart function to add the text to the message.

      -

      -

      If the text uses a character set other than ISO-8859-1 (ISO Latin 1), set the default_charset variable to change the default character set.

      -

      - Setting the error message bounce address

      -

      This class provides a means to specify the address where error messages should be bounced in case it is not possible to deliver a message. That can be done by setting the header Return-Path with the SetHeader function.

      -

      - Request message receipt notification

      -

      If you would like to be receive an notification when a message that is sent is received, just use the SetHeader function with the Disposition-Notification-To header to specify the address to where you want to receive the notification message.

      -

      Keep in mind that this header just expresses that you want to get a receipt notification, but it may be denied or ignored by the recipient, which does not mean the message was not received.

      -

      - Avoding temporary delivery failure warning messages

      -

      Sometimes it is not possible to deliver a message immediately due to a networking failure or some other problem. In that case, the mail transfer system usually leaves the message in a queue and keeps retrying to deliver the message until it succeeds or it has reached the limit number of days before it gives up. When it gives up the the message is bounced to the return-path address.

      -

      However some systems send a warning message to the original sender when it is not delivered after the first few hours. This may be an useful notification when the message is sent by a human but it maybe inconvinient when you are sending messages to many users like for instance newsletters or messages to subscribers of mailing lists.

      -

      If you want to hint the mail transfer system to not send temporary delivery failure warning messages, just use the SetHeader function to set the Precedence header to bulk.

      -

      Setting this header this way is a convention used by mailing list manager programs precisely for this purpose. It may also hint some mail receiving systems to not send auto-response messages, for instance when the recipient user is away on vaction. However, not all systems are aware of this convention and still send auto-response messages when you set this header.

      -

      - Send the message

      -

      Once you have set the message sender, the recipients and added the message text, use the Send function to send the message. This class uses the PHP function mail() to send messages.

      -

      -

      If for some reason you need to use a different message delivery method, you may use one of the existing sub-classes that are specialized in delivering messages by connecting to an SMTP server or using directly the programs sendmail and qmail.

      -

      - Add an HTML message body

      -

      If you want to send an HTML message you can use the AddHTMLPart function if it contains only ASCII characters. If it contains non-ASCII characters, you should the AddQuotedPrintableHTMLPart function instead.

      -

      - Add alternative text body for HTML messages

      -

      Not every e-mail program can display HTML messages. Therefore, when you send an HTML message, you should also include an alternative text part to be displayed by programs that do not support HTML messages.

      -

      -

      This is achieved by composing multipart/alternative messages. This type of message is composed by creating the HTML message part with the CreateHTMLPart or the CreateQuotedPrintableHTMLPart functions, then create the alternative text part with the CreatePlainTextPart or the CreateQuotedPrintableTextPart functions, and finally use the AddAlternativeMultipart function to add an assembly of both message parts.

      -

      Note that the text part should be the first to be specified in the array of parts passed to the AddAlternativeMultipart function, or else it will not appear correctly.

      -

      Despite this procedure adds a little complexity to the process of sending HTML messages, it is the same procedure that is followed by e-mail programs that are used by most people to send HTML messages.

      -

      Therefore, you are strongly recommended to follow the same procedure because some of the modern spam filter programs discard HTML messages without an alternative plain text part, as it constitutes a pattern that identifies messages composed by some of the spam sending programs.

      -

      - Embed images in HTML messages

      -

      One way to show an image in an HTML message is to use <img> tag with src attribute set to the remote site URL of the image that is meant to be displayed. However, since the message recipient user may not be online when they will check their e-mail, an image referenced this way may not appear.

      -

      Alternatively, an image file can be embedded in an HTML message using multipart/related message parts. This type of message part is composed by creating the image file part with the CreateFilePart function.

      -

      Then use the GetPartContentID function the image part identifier text. Prepend the string 'cid:' to this identifier to form a special URL that should be used in the HTML part to reference the image part like this:

      -

      $image_tag = '<img src="cid:' . $message_object->GetPartContentID($image_part) . '">' ;

      -

      When you have composed the whole HTML document, create the HTML message part with the CreateHTMLPart or the CreateQuotedPrintableHTMLPart functions, and finally use the CreateRelatedMultipart function to create a message part that can be added to the message with the function AddAlternativeMultipart like HTML messages with alternative text parts described before.

      -

      Note that the HTML part must be the first listed in the parts array argument that is passed to the function CreateRelatedMultipart, or else the message may not appear correctly.

      -

      Note also that when you are composing an HTML message with embedded images and an alternative text part, first you need to create the multipart/alternative part with the HTML and the text parts using the CreateAlternativeMultipart function, and then you add the multipart/related part to the message with the AddRelatedMultipart function, passing an array of parts that lists first the multipart/alternative part and then the image part created before.

      -

      - Attach files to messages

      -

      To send a message with attached files, it is necessary to compose a multipart/mixed message. This is a type of message made by a text or HTML part followed by one or more file parts.

      -

      If you add multiple parts to a message, this class implicitly turns it into a multipart/mixed message. Therefore you only need to use the function AddFilePart for each file that you want to attach and the class will automatically generate the message treating any parts added after the first as attachments.

      -

      - Forward received messages

      -

      To forward an e-mail message received from somewhere, just use the function AddMessagePart passing the message complete with the original headers and body data. The message is forwarded as an attachment that most mail programs can display.

      -

      - Sending messages to many recipients (mass or bulk mailing)

      -

      Sending messages to many recipients is an activity also known as mass or bulk mailing. There are several alternatives for mass mailing. One way consists on specifying all recipient addresses with the Bcc header, separating the addresses with commas (,), or using the SetMultipleEncodedEmailHeader function. This way you only need to send one message that is distributed to all recipients by your mail transfer system.

      -

      Unfortunately, many mail account providers like Hotmail, tend to consider messages sent this way as spam because the real recipients addresses are not visible in To of Cc headers. So, this method is no longer a good solution these days.

      -

      The alternative is to send a separate message to each recipient by iteratively setting the To header with each recipient address and calling the Send function. This way tends to take too much time and CPU as the number of recipients grow.

      -

      When sending messages to many recipients, call the SetBulkMail function to hint the class to optimize the way it works to make the delivery of the messages more efficient and eventually faster.

      -

      The actual optimizations that are performed depend on the delivery method that is used by this class or any of its subclasses specialized on the different delivery methods that are supported. Check the documentation of the subclass that you use to learn about the optimizations that are performed, if any.

      -

      If you intend to send messages with the same body to all recipients, the class can optimize the generation of the messages and reduce significantly the composition time if you set the cache_body variable to 1.

      -

      If you really need to personalize the content of a message part with different text, HTML or file to each recipient, you should use the ReplacePart function to avoid as much as possible the overhead of composing a new message to each of the recipients of the mailing.

      -

      If you are sending personalized messages to multiple recipients but the messages include attached or embedded files that are the same for all recipients, you should also set the 'Cached' option of the file parameter of the CreateFilePart function.

      -

      Other than that, take a look at the documentation of the this class sub-classes that may be used in your PHP environment, as these may provide more efficient delivery solutions for mass mailing.

      -

      - Error handling

      -

      Most of the functions of this class that may fail, return an error message string that describes the error that has occurred. If there was no error, the functions return an empty string.

      -

      Verifying the return value of all the functions to determine whether there was an error is a tedious task to implement for most developers. To avoid this problem, this class supports cumulative error checking.

      -

      Cumulative error checking means that when an error occurs, the class stores the error message in the error variable. Then, when another function that may fail is called, it does nothing and immediately returns the same error message.

      -

      This way, the developers only need to check the return value of the last function that is called, which is usually the Send function.

      -

      Table of contents

      -
    -
-
-
    -

  • Variables
  • -
      -
    • email_regular_expression

    • -
    • mailer

    • -
    • mailer_delivery

    • -
    • default_charset

    • -
    • line_quote_prefix

    • -
    • break_long_lines

    • -
    • file_buffer_length

    • -
    • debug

    • -
    • cache_body

    • -
    • error

    • -
    • localhost

    • -

      Table of contents

      -

    • email_regular_expression
    • -

      Type

      -

      string

      -

      Default value

      -

      '^([-!#$%&\'*+./0-9=?A-Z^_`a-z{|}~])+@([-!#$%&\'*+/0-9=?A-Z^_`a-z{|}~]+\\.)+[a-zA-Z]{2,6}$'

      -

      Purpose

      -

      Specify the regular expression that is used by the ValidateEmailAddress function to verify whether a given e-mail address may be valid.

      -

      Usage

      -

      Do not change this variable unless you have reason to believe that it is rejecting existing e-mail addresses that are known to be valid.

      -

      Variables

      -

    • mailer
    • -

      Type

      -

      string

      -

      Default value

      -

      'http://www.phpclasses.org/mimemessage $Revision: 1.1 $'

      -

      Purpose

      -

      Specify the base text that is used identify the name and the version of the class that is used to send the message by setting an implicit the X-Mailer message header. This is meant mostly to assist on the debugging of delivery problems.

      -

      Usage

      -

      Change this to set another mailer identification string or leave it to an empty string to prevent that the X-Mailer header be added to the message.

      -

      Variables

      -

    • mailer_delivery
    • -

      Type

      -

      string

      -

      Default value

      -

      'mail'

      -

      Purpose

      -

      Specify the text that is used to identify the mail delivery class or sub-class. This text is appended to the X-Mailer header text defined by the mailer variable.

      -

      Usage

      -

      This variable should only be redefined by the different mail delivery sub-classes.

      -

      Variables

      -

    • default_charset
    • -

      Type

      -

      string

      -

      Default value

      -

      'ISO-8859-1'

      -

      Purpose

      -

      Specify the default character set to be assumed for the message headers and body text.

      -

      Usage

      -

      Change this variable to the correct character set name if it is different than the default.

      -

      Variables

      -

    • line_quote_prefix
    • -

      Type

      -

      string

      -

      Default value

      -

      '> '

      -

      Purpose

      -

      Specify the default line quote prefix text used by the QuoteText function.

      -

      Usage

      -

      Change it only if you prefer to quote lines marking them with a different line prefix.

      -

      Variables

      -

    • break_long_lines
    • -

      Type

      -

      bool

      -

      Default value

      -

      1

      -

      Purpose

      -

      Determine whether lines exceeding the length limit will be broken by the line break character when using the WrapText function.

      -

      Usage

      -

      Change it only if you to avoid breaking long lines without any space characters, like for instance of messages with long URLs.

      -

      Variables

      -

    • file_buffer_length
    • -

      Type

      -

      int

      -

      Default value

      -

      8000

      -

      Purpose

      -

      Specify the length of the buffer that is used to read files in chunks of limited size.

      -

      Usage

      -

      The default value may be increased if you have plenty of memory and want to benefit from additional speed when processing the files that are used to compose messages.

      -

      Variables

      -

    • debug
    • -

      Type

      -

      string

      -

      Default value

      -

      ''

      -

      Purpose

      -

      Specify the name of a function that is called whenever an error occurs.

      -

      Usage

      -

      If you need to track the errors that may happen during the use of the class, set this variable to the name of a callback function. It should take only one argument that is the error message. When this variable is set to an empty string, no debug callback function is called.

      -

      Variables

      -

    • cache_body
    • -

      Type

      -

      bool

      -

      Default value

      -

      0

      -

      Purpose

      -

      Specify whether the message bodies that are generated by the class before sending, should be cached in memory to be reused on the next message delivery.

      -

      Usage

      -

      Set this variable to 1 if you intend to send the a message with the same body to many recipients, so the class avoids the overhead of regenerating messages with the same content.

      -

      Variables

      -

    • error
    • -

      Type

      -

      string

      -

      Default value

      -

      ''

      -

      Purpose

      -

      Store the last error return by any function that may fail due to some error.

      -

      Usage

      -

      Do not change this variable value unless you intend to clear the error status by setting it to an empty string.

      -

      Variables

      -

    • localhost
    • -

      Type

      -

      string

      -

      Default value

      -

      ''

      -

      Purpose

      -

      Specify the domain name of the computer sending the message.

      -

      Usage

      -

      This value is used as default domain of the sender e-mail address when generating automatic Message-Id headers.

      -

      Variables

      -

      Table of contents

      -
    -
-
-
    -

  • Functions
  • -
      -
    • ValidateEmailAddress

    • -
    • WrapText

    • -
    • CenterText

    • -
    • Ruler

    • -
    • QuoteText

    • -
    • SetHeader

    • -
    • SetEncodedHeader

    • -
    • SetEncodedEmailHeader

    • -
    • SetMultipleEncodedEmailHeader

    • -
    • ResetMessage

    • -
    • AddPart

    • -
    • ReplacePart

    • -
    • CreatePlainTextPart

    • -
    • AddPlainTextPart

    • -
    • CreateQuotedPrintableTextPart

    • -
    • AddQuotedPrintableTextPart

    • -
    • CreateHTMLPart

    • -
    • AddHTMLPart

    • -
    • CreateQuotedPrintableHTMLPart

    • -
    • AddQuotedPrintableHTMLPart

    • -
    • CreateFilePart

    • -
    • AddFilePart

    • -
    • CreateMessagePart

    • -
    • AddMessagePart

    • -
    • CreateAlternativeMultipart

    • -
    • AddAlternativeMultipart

    • -
    • CreateRelatedMultipart

    • -
    • AddRelatedMultipart

    • -
    • CreateMixedMultipart

    • -
    • AddMixedMultipart

    • -
    • GetPartContentID

    • -
    • GetDataURL

    • -
    • Send

    • -
    • GetMessage

    • -
    • GetMessageSize

    • -
    • Mail

    • -
    • SetBulkMail

    • -

      Table of contents

      -

    • ValidateEmailAddress
    • -

      Synopsis

      -

      bool ValidateEmailAddress(

      -)

      -

      Purpose

      -

      Determine whether a given e-mail address may be valid.

      -

      Usage

      -

      Just pass the e-mail address to be checked as function argument. This function uses the regular expression defined by the email_regular_expression variable to check the address.

      -

      Arguments

      -
        -

        address - Specify the e-mail address to be validated.

        -
      -

      Return value

      -

      The function returns 1 if the specified address may be valid.

      -

      Functions

      -

    • WrapText
    • -

      Synopsis

      -

      string WrapText(

      -)

      -

      Purpose

      -

      Split a text in lines that do not exceed the length limit avoiding to break it in the middle of any words.

      -

      Usage

      -

      Just pass the text to be wrapped.

      -

      Arguments

      -
        -

        text - Text to be wrapped.

        -

        line_length - Line length limit. Pass a value different than 0 to use a line length limit other than the default of 75 characters.

        -

        line_break - Character sequence that is used to break the lines longer than the length limit. Pass a non-empty to use a line breaking sequence other than the default "\n".

        -

        line_prefix - Character sequence that is used to insert in the beginning of all lines.

        -
      -

      Return value

      -

      The wrapped text eventually broken in multiple lines that do not exceed the line length limit.

      -

      Functions

      -

    • CenterText
    • -

      Synopsis

      -

      string CenterText(

      -)

      -

      Purpose

      -

      Center a text in the middle of line.

      -

      Usage

      -

      Just pass the text to be centered.

      -

      Arguments

      -
        -

        text - Text to be centered.

        -

        line_length - Line length limit. Pass a value different than 0 to use a line length limit other than the default of 75 characters.

        -
      -

      Return value

      -

      The centered text.

      -

      Functions

      -

    • Ruler
    • -

      Synopsis

      -

      string Ruler(

      -)

      -

      Purpose

      -

      Generate a line with characters that can be displayed as a separator ruler in a text message.

      -

      Arguments

      -
        -

        line_length - Line length limit. Pass a value different than 0 to use a line length limit other than the default of 75 characters.

        -
      -

      Return value

      -

      The ruler line string.

      -

      Functions

      -

    • QuoteText
    • -

      Synopsis

      -

      string QuoteText(

      -)

      -

      Purpose

      -

      Mark a text block to appear like in reply messages composed with common e-mail programs that include text from the original message being replied.

      -

      Usage

      -

      Just pass the text to be marked as a quote.

      -

      Arguments

      -
        -

        text - Text to be quoted.

        -

        quote_prefix - Character sequence that is inserted in the beginning of all lines as a quote mark. Set to an empty string to tell the function to use the default specified by the line_quote_prefix variable.

        -
      -

      Return value

      -

      The quoted text with all lines prefixed with a quote prefix mark.

      -

      Functions

      -

    • SetHeader
    • -

      Synopsis

      -

      string SetHeader(

      -)

      -

      Purpose

      -

      Set the value of a message header.

      -

      Usage

      -

      Use this function to set the values of the headers of the message that may be needed. There are some message headers that are automatically set by the class when the message is sent. Others must be defined before sending. Here follows the list of the names of the headers that must be set before sending:

      -

      -

      Message subject - Subject

      -

      Sender address - From

      -

      Recipient addresses - To, Cc and Bcc

      -

      Each of the recipient address headers may contain one or more addresses. Multiple addresses must be separated by a comma and a space.

      -

      Return path address - Return-Path

      -

      Optional header to specify the address where the message should be bounced in case it is not possible to deliver it.

      -

      In reality this is a virtual header. This means that adding this header to a message will not do anything by itself. However, this class looks for this header to adjust the message delivery procedure in such way that the Message Transfer Agent (MTA) system is hinted to direct any bounced messages to the address specified by this header.

      -

      Note that under some systems there is no way to set the return path address programmatically. This is the case when using the PHP mail() function under Windows where the return path address should be set in the php.ini configuration file.

      -

      Keep in mind that even when it is possible to set the return path address, the systems of some e-mail account providers may ignore this address and send bounced messages to the sender address. This is a bug of those systems. There is nothing that can be done other than complain.

      -

      Arguments

      -
        -

        header - Name of the header.

        -

        value - Text value for the header.

        -

        encoding_charset - Character set used in the header value. If it is set to an empty string, it is assumed the character set defined by the default_charset variable.

        -
      -

      Return value

      -

      An error message in case there was an error or an empty string otherwise. This return value may be safely ignored if the function parameters are set correctly.

      -

      Functions

      -

    • SetEncodedHeader
    • -

      Synopsis

      -

      string SetEncodedHeader(

      -)

      -

      Purpose

      -

      The same as the SetHeader function assuming the default character set specified by the default_charset variable.

      -

      Usage

      -

      See the SetHeader function.

      -

      Arguments

      -
        -

        header - Name of the header.

        -

        value - Text value for the header.

        -

        encoding_charset - Character set used in the header value. If it is set to an empty string, it is assumed the character set defined by the default_charset variable.

        -
      -

      Return value

      -

      An error message in case there was an error or an empty string otherwise. This return value may be safely ignored if the function parameters are set correctly.

      -

      Functions

      -

    • SetEncodedEmailHeader
    • -

      Synopsis

      -

      string SetEncodedEmailHeader(

      -)

      -

      Purpose

      -

      Set the value of an header that is meant to represent the e-mail address of a person or entity with a known name. This is meant mostly to set the From, To, Cc and Bcc headers.

      -

      Usage

      -

      Use this function like the SetHeader specifying the e-mail address as header value and also specifying the name of the known person or entity.

      -

      Arguments

      -
        -

        header - Name of the header.

        -

        address - E-mail address value.

        -

        name - Person or entity name associated with the specified e-mail address.

        -

        encoding_charset - Character set used in the header value. If it is set to an empty string, it is assumed the character set defined by the default_charset variable.

        -
      -

      Return value

      -

      An error message in case there was an error or an empty string otherwise. This return value may be safely ignored if the function parameters are set correctly.

      -

      Functions

      -

    • SetMultipleEncodedEmailHeader
    • -

      Synopsis

      -

      string SetMultipleEncodedEmailHeader(

      -)

      -

      Purpose

      -

      Set the value of an header that is meant to represent a list of e-mail addresses of names of people or entities. This is meant mostly to set the To, Cc and Bcc headers.

      -

      Usage

      -

      Use this function specifying the header and all the addresses in an associative array that should have the email addresses as entry indexes and the name of the respective people or entities as entry values.

      -

      Arguments

      -
        -

        header - Name of the header.

        -

        addresses - List of all email addresses and associated person or entity names.

        -

        encoding_charset - Character set used in the header value. If it is set to an empty string, it is assumed the character set defined by the default_charset variable.

        -
      -

      Return value

      -

      An error message in case there was an error or an empty string otherwise. This return value may be safely ignored if the function parameters are set correctly.

      -

      Example

      -

      -
      $message_object->SetMultipleEncodedEmailHeader('Bcc', array(
      -  'peter@gabriel.org' => 'Peter Gabriel',
      -  'paul@simon.net' => 'Paul Simon',
      -  'mary@chain.com' => 'Mary Chain'
      -));
      -

      -

      Functions

      -

    • ResetMessage
    • -

      Synopsis

      -

      ResetMessage()

      -

      Purpose

      -

      Restore the content of the message to the initial state when the class object is created, i.e. without any headers or body parts.

      -

      Usage

      -

      Use this function if you want to start composing a completely new message.

      -

      Functions

      -

    • AddPart
    • -

      Synopsis

      -

      string AddPart(

      -)

      -

      Purpose

      -

      Add a previously created part to the message.

      -

      Usage

      -

      Use any of the functions to create standalone message parts and then use this function to add them to the message.

      -

      Arguments

      -
        -

        part - Number of the part as returned by the function that originally created it.

        -
      -

      Return value

      -

      An error message in case there was an error or an empty string otherwise. This return value may be safely ignored if the function parameters are set correctly.

      -

      Functions

      -

    • ReplacePart
    • -

      Synopsis

      -

      string ReplacePart(

      -)

      -

      Purpose

      -

      Replace a message part already added to the message with a newly created part. The replaced part gets the definition of the replacing part. The replacing part is discarded and its part number becomes free for creation of a new part.

      -

      Usage

      -

      Use one of the functions to create message parts and then pass the returned part numbers to this function.

      -

      Arguments

      -
        -

        old_part - Number of the previously added part.

        -

        new_part - Number of the replacing part.

        -
      -

      Return value

      -

      An error message in case there was an error or an empty string otherwise. This return value may be safely ignored if the function parameters are set correctly.

      -

      Functions

      -

    • CreatePlainTextPart
    • -

      Synopsis

      -

      string CreatePlainTextPart(

      -)

      -

      Purpose

      -

      Create a plain text message part.

      -

      Usage

      -

      Pass an ASCII (7 bits) text string and get the created part number in the part that is returned by reference.

      -

      Arguments

      -
        -

        text - Text of the message part to create.

        -

        charset - Character set used in the part text. If it is set to an empty string, it is assumed the character set defined by the default_charset variable.

        -

        part - Number of the created part that is returned by reference.

        -
      -

      Return value

      -

      An error message in case there was an error or an empty string otherwise. This return value may be safely ignored if the function parameters are set correctly.

      -

      Functions

      -

    • AddPlainTextPart
    • -

      Synopsis

      -

      string AddPlainTextPart(

      -)

      -

      Purpose

      -

      Add a plain text part to the message.

      -

      Usage

      -

      Pass an ASCII (7 bits) text string.

      -

      Arguments

      -
        -

        text - Text of the message part to add.

        -

        charset - Character set used in the part text. If it is set to an empty string, it is assumed the character set defined by the default_charset variable.

        -
      -

      Return value

      -

      An error message in case there was an error or an empty string otherwise. This return value may be safely ignored if the function parameters are set correctly.

      -

      Functions

      -

    • CreateQuotedPrintableTextPart
    • -

      Synopsis

      -

      string CreateQuotedPrintableTextPart(

      -)

      -

      Purpose

      -

      Create a text message part that may contain non-ASCII characters (8 bits or more).

      -

      Usage

      -

      Pass a text string and get the created part number in the part that is returned by reference.

      -

      Arguments

      -
        -

        text - Text of the message part to create.

        -

        charset - Character set used in the part text. If it is set to an empty string, it is assumed the character set defined by the default_charset variable.

        -

        part - Number of the created part that is returned by reference.

        -
      -

      Return value

      -

      An error message in case there was an error or an empty string otherwise. This return value may be safely ignored if the function parameters are set correctly.

      -

      Functions

      -

    • AddQuotedPrintableTextPart
    • -

      Synopsis

      -

      string AddQuotedPrintableTextPart(

      -)

      -

      Purpose

      -

      Add a text part to the message that may contain non-ASCII characters (8 bits or more).

      -

      Usage

      -

      Pass a text string.

      -

      Arguments

      -
        -

        text - Text of the message part to create.

        -

        charset - Character set used in the part text. If it is set to an empty string, it is assumed the character set defined by the default_charset variable.

        -
      -

      Return value

      -

      An error message in case there was an error or an empty string otherwise. This return value may be safely ignored if the function parameters are set correctly.

      -

      Functions

      -

    • CreateHTMLPart
    • -

      Synopsis

      -

      string CreateHTMLPart(

      -)

      -

      Purpose

      -

      Create an HTML message part only with ASCII characters (7 bit).

      -

      Usage

      -

      Pass an ASCII (7 bits) html text string and get the created part number in the part that is returned by reference.

      -

      Arguments

      -
        -

        html - HTML of the message part to create.

        -

        charset - Character set used in the part text. If it is set to an empty string, it is assumed the character set defined by the default_charset variable.

        -

        part - Number of the created part that is returned by reference.

        -
      -

      Return value

      -

      An error message in case there was an error or an empty string otherwise. This return value may be safely ignored if the function parameters are set correctly.

      -

      Functions

      -

    • AddHTMLPart
    • -

      Synopsis

      -

      string AddHTMLPart(

      -)

      -

      Purpose

      -

      Add an HTML part to the message only with ASCII characters.

      -

      Usage

      -

      Pass an html text string.

      -

      Arguments

      -
        -

        html - HTML of the message part to create.

        -

        charset - Character set used in the part text. If it is set to an empty string, it is assumed the character set defined by the default_charset variable.

        -
      -

      Return value

      -

      An error message in case there was an error or an empty string otherwise. This return value may be safely ignored if the function parameters are set correctly.

      -

      Functions

      -

    • CreateQuotedPrintableHTMLPart
    • -

      Synopsis

      -

      string CreateQuotedPrintableHTMLPart(

      -)

      -

      Purpose

      -

      Create an HTML message part that may contain non-ASCII characters (8 bits or more).

      -

      Usage

      -

      Pass a html text string and get the created part number in the part that is returned by reference.

      -

      Arguments

      -
        -

        html - HTML of the message part to create.

        -

        charset - Character set used in the part text. If it is set to an empty string, it is assumed the character set defined by the default_charset variable.

        -

        part - Number of the created part that is returned by reference.

        -
      -

      Return value

      -

      An error message in case there was an error or an empty string otherwise. This return value may be safely ignored if the function parameters are set correctly.

      -

      Functions

      -

    • AddQuotedPrintableHTMLPart
    • -

      Synopsis

      -

      string AddQuotedPrintableHTMLPart(

      -)

      -

      Purpose

      -

      Add an HTML part to the message that may contain non-ASCII characters (8 bits or more).

      -

      Usage

      -

      Pass a html text string.

      -

      Arguments

      -
        -

        html - HTML of the message part to create.

        -

        charset - Character set used in the part text. If it is set to an empty string, it is assumed the character set defined by the default_charset variable.

        -
      -

      Return value

      -

      An error message in case there was an error or an empty string otherwise. This return value may be safely ignored if the function parameters are set correctly.

      -

      Functions

      -

    • CreateFilePart
    • -

      Synopsis

      -

      string CreateFilePart(

        -(input and output) array file,
        -(output) int & part
      -)

      -

      Purpose

      -

      Create a message part to be handled as a file.

      -

      Usage

      -

      Pass a file definition associative array and get the created part number in the part that is returned by reference.

      -

      Arguments

      -
        -

        file - Associative array to specify parameters that describe the file part. Here follows the list of supported parameters that should be used as indexes of the array:

        -

        FileName

        -

        Name of the file from which the part data will be read when the message is generated. It may be a remote URL as long as your PHP installation is configured to allow accessing remote files with the fopen() function.

        -

        Data

        -

        String that specifies the data of the file. This should be used as alternative data source to FileName for passing data available in memory, like for instance files stored in a database that was queried dynamically and the file contents was fetched into a string variable.

        -

        Name

        -

        Name of the file that will appear in the message. If this parameter is missing the base name of the FileName parameter is used, if present.

        -

        Content-Type

        -

        Content type of the part: text/plain for text, text/html for HTML, image/gif for GIF images, etc..

        -

        There is one special type named automatic/name that may be used to tell the class to try to guess the content type from the file name. Many file types are recognized from the file name extension. If the file name extension is not recognized, the default for binary data application/octet-stream is assumed.

        -

        Disposition

        -

        Information to whether this file part is meant to be used as a file attachment or as a part meant to be displayed inline, eventually integrated with another related part.

        -

        Cache

        -

        Boolean flag that indicates that this message part should be cached when generating the message body. Use only when sending many messages to multiple recipients, but this part does not change between each of the messages that are sent.

        -

        Note that it is also not worth using this option when setting the cache_body, as that variable makes the class cache the whole message body and the internal message parts will not be rebuilt.

        -

        part - Number of the created part that is returned by reference.

        -
      -

      Return value

      -

      An error message in case there was an error or an empty string otherwise. This return value may be safely ignored if the function parameters are set correctly.

      -

      Functions

      -

    • AddFilePart
    • -

      Synopsis

      -

      string AddFilePart(

        -(input and output) array file
      -)

      -

      Purpose

      -

      Add a message part to be handled as a file.

      -

      Usage

      -

      Pass a file definition associative array.

      -

      Arguments

      -
        -

        file - Associative array to specify parameters that describe the file part. See the file argument description of the CreateFilePart function for an explanation about the supported file parameters.

        -
      -

      Return value

      -

      An error message in case there was an error or an empty string otherwise. This return value may be safely ignored if the function parameters are set correctly.

      -

      Functions

      -

    • CreateMessagePart
    • -

      Synopsis

      -

      string CreateMessagePart(

        -(input and output) array message,
        -(output) int & part
      -)

      -

      Purpose

      -

      Create a message part to encapsulate another message. This is usually meant to create an attachment that contains a message that was received and is being forwarded intact with the original the headers and body data.

      -

      Usage

      -

      This function should be used like the CreateFilePart function, passing the same parameters to the message argument.

      -

      The message to be encapsulated can be specified either as an existing file with the FileName parameter, or as string of data in memory with the Data parameter.

      -

      The Content-Type and Disposition file parameters do not need to be specified because they are overridden by this function.

      -

      Arguments

      -
        -

        message - Associative array that specifies definition parameters of the message file part.

        -

        part - Number of the created part that is returned by reference.

        -
      -

      Return value

      -

      An error message in case there was an error or an empty string otherwise. This return value may be safely ignored if the function parameters are set correctly.

      -

      Functions

      -

    • AddMessagePart
    • -

      Synopsis

      -

      string AddMessagePart(

      -)

      -

      Purpose

      -

      Add a message part that encapsulates another message. This is usually meant to add an attachment that contains a message that was received and is being forwarded intact with the original the headers and body data.

      -

      Usage

      -

      This function should be used like the AddFilePart function, passing the same parameters to the message argument. See the CreateFilePart function for more details.

      -

      Arguments

      -
        -

        message - Associative array that specifies definition parameters of the message file part.

        -
      -

      Return value

      -

      An error message in case there was an error or an empty string otherwise. This return value may be safely ignored if the function parameters are set correctly.

      -

      Functions

      -

    • CreateAlternativeMultipart
    • -

      Synopsis

      -

      string CreateAlternativeMultipart(

        -(input and output) array parts,
        -(output) int & part
      -)

      -

      Purpose

      -

      Create a message part composed of multiple parts that can be displayed by the recipient e-mail program in alternative formats.

      -

      This is usually meant to create HTML messages with an alternative text part to be displayed by programs that cannot display HTML messages.

      -

      Usage

      -

      Create all the alternative message parts that are going to be sent and pass their numbers to the parts array argument.

      -

      The least sophisticated part, usually the text part, should appear first in the parts array because the e-mail programs that support displaying more sophisticated message parts will pick the last part in the message that is supported.

      -

      Arguments

      -
        -

        parts - Array with the numbers with all the alternative parts.

        -

        part - Number of the created part that is returned by reference.

        -
      -

      Return value

      -

      An error message in case there was an error or an empty string otherwise. This return value may be safely ignored if the function parameters are set correctly.

      -

      Functions

      -

    • AddAlternativeMultipart
    • -

      Synopsis

      -

      string AddAlternativeMultipart(

        -(input and output) array parts
      -)

      -

      Purpose

      -

      Add a message part composed of multiple parts that can be displayed by the recipient e-mail program in alternative formats.

      -

      This is usually meant to create HTML messages with an alternative text part to be displayed by programs that cannot display HTML messages.

      -

      Usage

      -

      Create all the alternative message parts that are going to be sent and pass their numbers to the parts array argument.

      -

      The least sophisticated part, usually the text part, should appear first in the parts array because the e-mail programs that support displaying more sophisticated message parts will pick the last part in the message that is supported.

      -

      Arguments

      -
        -

        parts - Array with the numbers with all the alternative parts.

        -
      -

      Return value

      -

      An error message in case there was an error or an empty string otherwise. This return value may be safely ignored if the function parameters are set correctly.

      -

      Functions

      -

    • CreateRelatedMultipart
    • -

      Synopsis

      -

      string CreateRelatedMultipart(

        -(input and output) array parts,
        -(output) int & part
      -)

      -

      Purpose

      -

      Create a message part that groups several related parts.

      -

      This is usually meant to group an HTML message part with images or other types of files that should be embedded in the same message and be displayed as a single part by the recipient e-mail program.

      -

      Usage

      -

      Create all the related message parts that are going to be sent and pass their numbers to the parts array argument.

      -

      When using this function to group an HTML message with embedded images or other related files, make sure that the HTML part number is the first listed in the parts array argument, or else the message may not appear correctly.

      -

      Arguments

      -
        -

        parts - Array with the numbers with all the related parts.

        -

        part - Number of the created part that is returned by reference.

        -
      -

      Return value

      -

      An error message in case there was an error or an empty string otherwise. This return value may be safely ignored if the function parameters are set correctly.

      -

      Functions

      -

    • AddRelatedMultipart
    • -

      Synopsis

      -

      string AddRelatedMultipart(

        -(input and output) array parts
      -)

      -

      Purpose

      -

      Add a message part that groups several related parts.

      -

      This is usually meant to group an HTML message part with images or other types of files that should be embedded in the same message and be displayed as a single part by the recipient e-mail program.

      -

      Usage

      -

      Create all the related message parts that are going to be sent and pass their numbers to the parts array argument.

      -

      When using this function to group an HTML message with embedded images or other related files, make sure that the HTML part number is the first listed in the parts array argument, or else the message may not appear correctly.

      -

      Arguments

      -
        -

        parts - Array with the numbers with all the related parts.

        -
      -

      Return value

      -

      An error message in case there was an error or an empty string otherwise. This return value may be safely ignored if the function parameters are set correctly.

      -

      Functions

      -

    • CreateMixedMultipart
    • -

      Synopsis

      -

      string CreateMixedMultipart(

        -(input and output) array parts,
        -(output) int & part
      -)

      -

      Purpose

      -

      Create a message part that groups several independent parts.

      -

      Usually this is meant compose messages with one or more file attachments. However, it is not necessary to use this function as the class implicitly creates a multipart/mixed message when more than one part is added to the message.

      -

      Usage

      -

      Create all the independent message parts that are going to be sent and pass their numbers to the parts array argument.

      -

      Arguments

      -
        -

        parts - Array with the numbers with all the related parts.

        -

        part - Number of the created part that is returned by reference.

        -
      -

      Return value

      -

      An error message in case there was an error or an empty string otherwise. This return value may be safely ignored if the function parameters are set correctly.

      -

      Functions

      -

    • AddMixedMultipart
    • -

      Synopsis

      -

      string AddMixedMultipart(

        -(input and output) array parts
      -)

      -

      Purpose

      -

      Add a message part that groups several independent parts.

      -

      Usually this is meant compose messages with one or more file attachments. However, it is not necessary to use this function as the class implicitly creates a multipart/mixed message when more than one part is added to the message.

      -

      Usage

      -

      Create all the independent message parts that are going to be sent and pass their numbers to the parts array argument.

      -

      Arguments

      -
        -

        parts - Array with the numbers with all the related parts.

        -
      -

      Return value

      -

      An error message in case there was an error or an empty string otherwise. This return value may be safely ignored if the function parameters are set correctly.

      -

      Functions

      -

    • GetPartContentID
    • -

      Synopsis

      -

      string GetPartContentID(

      -)

      -

      Purpose

      -

      Retrieve the content identifier associated to a given message part.

      -

      Usage

      -

      Create a message part and pass its number to the part argument.

      -

      This function is usually meant to create an URL that can be used in an HTML message part to reference related parts like images, CSS (Cascaded Style Sheets), or any other type of files related to the HTML part that are embedded in the same message as part of a multipart/related composite part.

      -

      To use the part content identifier returned by this function you need to prepend the string 'cid:' to form a special URL that can be used in the HTML document this part file.

      -

      You may read more about using this function in the class usage section about embedding images in HTML messages.

      -

      Arguments

      -
        -

        part - Number of the part as returned by the function that originally created it.

        -
      -

      Return value

      -

      The content identifier text string.

      -

      If it is specified an invalid message part, this function returns an empty string.

      -

      Functions

      -

    • GetDataURL
    • -

      Synopsis

      -

      string GetDataURL(

        -(input and output) array file
      -)

      -

      Purpose

      -

      Generate a data: URL according to the RFC 2397 suitable for using in HTML messages to represent an image or other type of file on which the data is directly embedded in the HTML code instead of being fetched from a separate file or remote URL.

      -

      Note that not all e-mail programs are capable of displaying images or other types of files embedded in HTML messages this way.

      -

      Usage

      -

      Pass a file part definition array like for the CreateFilePart function.

      -

      Arguments

      -
        -

        file - File definition.

        -
      -

      Return value

      -

      The data: representing the described file or an empty string in case there was an error.

      -

      Functions

      -

    • Send
    • -

      Synopsis

      -

      string Send()

      -

      Purpose

      -

      Send a composed message.

      -

      Usage

      -

      Use this function after you have set the necessary message headers and added the message body parts.

      -

      Return value

      -

      An error message in case there was an error or an empty string otherwise. This return value may be safely ignored if the function parameters are set correctly.

      -

      Functions

      -

    • GetMessage
    • -

      Synopsis

      -

      string GetMessage(

      -)

      -

      Purpose

      -

      Get the whole message headers and body.

      -

      Usage

      -

      Use this function to retrieve the message headers and body without sending it.

      -

      Arguments

      -
        -

        message - Reference to a string variable to store the text of the message headers and body.

        -
      -

      Return value

      -

      An error message in case there was an error or an empty string otherwise. This return value may be safely ignored if the function parameters are set correctly.

      -

      Functions

      -

    • GetMessageSize
    • -

      Synopsis

      -

      string GetMessageSize(

      -)

      -

      Purpose

      -

      Get the size of the whole message headers and body.

      -

      Usage

      -

      Use this function to retrieve the size in bytes of the message headers and body without sending it.

      -

      Arguments

      -
        -

        message - Reference to an integer variable to store the size of the message headers and body.

        -
      -

      Return value

      -

      An error message in case there was an error or an empty string otherwise. This return value may be safely ignored if the function parameters are set correctly.

      -

      Functions

      -

    • Mail
    • -

      Synopsis

      -

      bool Mail(

      -)

      -

      Purpose

      -

      Emulate the PHP mail() function by composing and sending a message given the same arguments.

      -

      This is mostly meant to provide a solution for sending messages with alternative delivery methods provided by this class sub-classes. It uses the same arguments as the PHP mail() function. Developers willing to use this alternative do not need to change much their scripts that already use the mail() function.

      -

      Usage

      -

      Use this function passing the same arguments as to PHP mail() function.

      -

      Arguments

      -
        -

        to - Recipient e-mail address.

        -

        subject - Message subject.

        -

        message - Message body.

        -

        additional_headers - Text string headers and the respective values. There should be one header and value per line with line breaks separating each line.

        -

        additional_parameters - Text string with additional parameters. In the original PHP mail() function these were actual switches to be passed in the sendmail program invocation command line. This function only supports the -f switch followed by an e-mail address meant to specify the message bounce return path address.

        -
      -

      Return value

      -

      If this function succeeds, it returns 1.

      -

      Functions

      -

    • SetBulkMail
    • -

      Synopsis

      -

      bool SetBulkMail(

      -)

      -

      Purpose

      -

      Hint the class to adjust itself in order to send individual messages to many recipients more efficiently.

      -

      Usage

      -

      Call this function before starting sending messages to many recipients passing 1 to the on argument. Then call this function again after the bulk mailing delivery has ended passing passing 1 to the on argument.

      -

      Arguments

      -
        -

        on - Boolean flag that indicates whether a bulk delivery is going to start if set to 1 or that the bulk delivery has ended if set to 0.

        -
      -

      Return value

      -

      If this function succeeds, it returns 1.

      -

      Functions

      -

      Table of contents

      -
    -
- -
-
Manuel Lemos (mlemos-at-acm.org)
- - diff --git a/site/modules/.WireMailSmtp/smtp_classes/documentation/sasl_class.html b/site/modules/.WireMailSmtp/smtp_classes/documentation/sasl_class.html deleted file mode 100644 index 1bb48de..0000000 --- a/site/modules/.WireMailSmtp/smtp_classes/documentation/sasl_class.html +++ /dev/null @@ -1,193 +0,0 @@ - - - -Class: Simple Authentication and Security Layer client - - -

Class: Simple Authentication and Security Layer client

-
- -
-
    -

  • Summary
  • -
      -

      Name

      -

      Simple Authentication and Security Layer client

      -

      Author

      -

      Manuel Lemos (mlemos-at-acm.org)

      -

      Copyright

      -

      Copyright © (C) Manuel Lemos 2004

      -

      Version

      -

      @(#) $Id: sasl_class.html,v 1.1 2014/03/03 12:28:31 horst Exp $

      -

      Purpose

      -

      Provide a common interface to plug-in driver classes that implement different mechanisms for authentication used by clients of standard protocols like SMTP, POP3, IMAP, HTTP, etc.. Currently the supported authentication mechanisms are: PLAIN, LOGIN, CRAM-MD5, Digest and NTML (Windows or Samba).

      -

      Usage

      -

      .

      -

      Table of contents

      -
    -
-
-
    -

  • Variables
  • -
      -
    • error

    • -
    • mechanism

    • -
    • encode_response

    • -

      Table of contents

      -

    • error
    • -

      Type

      -

      string

      -

      Default value

      -

      ''

      -

      Purpose

      -

      Store the message that is returned when an error occurs.

      -

      Usage

      -

      Check this variable to understand what happened when a call to any of the class functions has failed.

      -

      This class uses cumulative error handling. This means that if one class functions that may fail is called and this variable was already set to an error message due to a failure in a previous call to the same or other function, the function will also fail and does not do anything.

      -

      This allows programs using this class to safely call several functions that may fail and only check the failure condition after the last function call.

      -

      Just set this variable to an empty string to clear the error condition.

      -

      Variables

      -

    • mechanism
    • -

      Type

      -

      string

      -

      Default value

      -

      ''

      -

      Purpose

      -

      Store the name of the mechanism that was selected during the call to the Start function.

      -

      Usage

      -

      You can access this variable but do not change it.

      -

      Variables

      -

    • encode_response
    • -

      Type

      -

      bool

      -

      Default value

      -

      1

      -

      Purpose

      -

      Let the drivers inform the applications whether responses need to be encoded.

      -

      Usage

      -

      Applications should check this variable before sending authentication responses to the server to determine if the responses need to be encoded, eventually with base64 algorithm.

      -

      Variables

      -

      Table of contents

      -
    -
-
-
    -

  • Functions
  • -
      -
    • SetCredential

    • -
    • GetCredentials

    • -
    • Start

    • -
    • Step

    • -

      Table of contents

      -

    • SetCredential
    • -

      Synopsis

      -

      SetCredential(

      -)

      -

      Purpose

      -

      Store the value of a credential that may be used by any of the supported mechanisms to process the authentication messages and responses.

      -

      Usage

      -

      Call this function before starting the authentication dialog to pass all the credential values that be needed to use the type of authentication that the applications may need.

      -

      Arguments

      -
        -

        key - Specify the name of the credential key.

        -

        value - Specify the value for the credential.

        -
      -

      Functions

      -

    • GetCredentials
    • -

      Synopsis

      -

      int GetCredentials(

      -)

      -

      Purpose

      -

      Retrieve the values of one or more credentials to be used by the authentication mechanism classes.

      -

      Usage

      -

      This is meant to be used by authentication mechanism driver classes to retrieve the credentials that may be neede.

      -

      Arguments

      -
        -

        credentials - Reference to an associative array variable with all the credentials that are being requested. The function initializes this associative array values.

        -

        defaults - Associative arrays with default values for credentials that may have not been defined.

        -

        interactions - Not yet in use. It is meant to provide context information to retrieve credentials that may be obtained interacting with the user.

        -
      -

      Return value

      -

      The function may return SASL_CONTINUE if it succeeded, or SASL_NOMECH if it was not possible to retrieve one of the requested credentials.

      -

      Functions

      -

    • Start
    • -

      Synopsis

      -

      int Start(

      -)

      -

      Purpose

      -

      Process the initial authentication step initializing the driver class that implements the first of the list of requested mechanisms that is supported by this SASL client library implementation.

      -

      Usage

      -

      Call this function specifying a list of mechanisms that the server supports. If the message argument returns a string, it should be sent to the server as initial message. Check the encode_response variable to determine whether the initial message needs to be encoded, eventually with base64 algorithm, before it is sent to the server.

      -

      Arguments

      -
        -

        mechanisms - Define the list of names of authentication mechanisms supported by the that should be tried.

        -

        message - Return the initial message that should be sent to the server to start the authentication dialog. If this value is undefined, no message should be sent to the server.

        -

        interactions - Not yet in use. It is meant to provide context information to interact with the end user.

        -
      -

      Return value

      -

      The function may return SASL_CONTINUE if it could start one of the requested authentication mechanisms. It may return SASL_NOMECH if it was not possible to start any of the requested mechanisms. It returns SASL_FAIL or other value in case of error.

      -

      Functions

      -

    • Step
    • -

      Synopsis

      -

      int Step(

      -)

      -

      Purpose

      -

      Process the authentication steps after the initial step, until the authetication iteration dialog is complete.

      -

      Usage

      -

      Call this function iteratively after a successful initial step calling the Start function.

      -

      Arguments

      -
        -

        response - Pass the response returned by the server to the previous step.

        -

        message - Return the message that should be sent to the server to continue the authentication dialog. If this value is undefined, no message should be sent to the server.

        -

        interactions - Not yet in use. It is meant to provide context information to interact with the end user.

        -
      -

      Return value

      -

      The function returns SASL_CONTINUE if step was processed successfully, or returns SASL_FAIL in case of error.

      -

      Functions

      -

      Table of contents

      -
    -
- -
-
Manuel Lemos (mlemos-at-acm.org)
- - diff --git a/site/modules/.WireMailSmtp/smtp_classes/documentation/smtp_class.html b/site/modules/.WireMailSmtp/smtp_classes/documentation/smtp_class.html deleted file mode 100644 index 569f52b..0000000 --- a/site/modules/.WireMailSmtp/smtp_classes/documentation/smtp_class.html +++ /dev/null @@ -1,584 +0,0 @@ - - - -Class: Sending e-mail messages via SMTP protocol - - -

Class: Sending e-mail messages via SMTP protocol

-
- -
-
    -

  • Summary
  • -
      -

      Name

      -

      Sending e-mail messages via SMTP protocol

      -

      Author

      -

      Manuel Lemos (mlemos-at-acm.org)

      -

      Copyright

      -

      Copyright (C) Manuel Lemos 1999-2011

      -

      Version

      -

      @(#) $Id: smtp_class.html,v 1.1 2014/03/03 12:28:31 horst Exp $

      -

      Purpose

      -

      Sending e-mail messages via SMTP protocol

      -

      Translation

      -

      If you are interested in translating the documentation of this class to your own idiom, please contact the author.

      -

      Support

      -

      Technical support for using this class may be obtained in the smtpclass support forum. Just go to the support forum pages page to browse the forum archives and post support request messages:

      -

      http://www.phpclasses.org/discuss/package/14/

      -

      Usage

      -

      To use this class just create a new object, set any variables to configure its options and call the SendMessage function to send a message.

      -

      It is not recommended that you use this class alone unless you have deep understanding of Internet mail standards on how to compose compliant e-mail messages. Instead, use the MIME message composing and sending class and its sub-class SMTP message together with this SMTP class to properly compose e-mail messages, so your messages are not discarded for not being correctly composed.

      -

      Table of contents

      -
    -
-
-
    -

  • Variables
  • -
      -
    • user

    • -
    • realm

    • -
    • password

    • -
    • workstation

    • -
    • authentication_mechanism

    • -
    • host_name

    • -
    • host_port

    • -
    • socks_host_name

    • -
    • socks_host_port

    • -
    • socks_version

    • -
    • http_proxy_host_name

    • -
    • http_proxy_host_port

    • -
    • user_agent

    • -
    • ssl

    • -
    • start_tls

    • -
    • localhost

    • -
    • timeout

    • -
    • data_timeout

    • -
    • direct_delivery

    • -
    • error

    • -
    • debug

    • -
    • html_debug

    • -
    • esmtp

    • -
    • esmtp_extensions

    • -
    • exclude_address

    • -
    • getmxrr

    • -
    • pop3_auth_host

    • -
    • pop3_auth_port

    • -

      Table of contents

      -

    • user
    • -

      Type

      -

      string

      -

      Default value

      -

      ''

      -

      Purpose

      -

      Define the authorized user when sending messages to a SMTP server.

      -

      Usage

      -

      Set this variable to the user name when the SMTP server requires authentication.

      -

      Variables

      -

    • realm
    • -

      Type

      -

      string

      -

      Default value

      -

      ''

      -

      Purpose

      -

      Define the authentication realm when sending messages to a SMTP server.

      -

      Usage

      -

      Set this variable when the SMTP server requires authentication and if more than one authentication realm is supported.

      -

      Variables

      -

    • password
    • -

      Type

      -

      string

      -

      Default value

      -

      ''

      -

      Purpose

      -

      Define the authorized user password when sending messages to a SMTP server.

      -

      Usage

      -

      Set this variable to the user password when the SMTP server requires authentication.

      -

      Variables

      -

    • workstation
    • -

      Type

      -

      string

      -

      Default value

      -

      ''

      -

      Purpose

      -

      Define the client workstation name when sending messages to a SMTP server.

      -

      Usage

      -

      Set this variable to the client workstation when the SMTP server requires authentication identifiying the origin workstation name.

      -

      Variables

      -

    • authentication_mechanism
    • -

      Type

      -

      string

      -

      Default value

      -

      ''

      -

      Purpose

      -

      Force the use of a specific authentication mechanism.

      -

      Usage

      -

      Set it to an empty string to let the class determine the authentication mechanism to use automatically based on the supported mechanisms by the server and by the SASL client library classes.

      -

      Set this variable to a specific mechanism name if you want to override the automatic authentication mechanism selection.

      -

      Variables

      -

    • host_name
    • -

      Type

      -

      string

      -

      Default value

      -

      ''

      -

      Purpose

      -

      Define the SMTP server host name.

      -

      Usage

      -

      Set to the host name of the SMTP server to which you want to relay the messages.

      -

      Variables

      -

    • host_port
    • -

      Type

      -

      int

      -

      Default value

      -

      25

      -

      Purpose

      -

      Define the SMTP server host port.

      -

      Usage

      -

      Set to the TCP port of the SMTP server host to connect.

      -

      Variables

      -

    • socks_host_name
    • -

      Type

      -

      string

      -

      Default value

      -

      ''

      -

      Purpose

      -

      Define the SOCKS server host name.

      -

      Usage

      -

      Set to the SOCKS server host name through which the SMTP connection should be routed. Leave it empty if you do not want the connections to be established through a SOCKS server.

      -

      Variables

      -

    • socks_host_port
    • -

      Type

      -

      int

      -

      Default value

      -

      1080

      -

      Purpose

      -

      Define the SOCKS server host port.

      -

      Usage

      -

      Set to the port of the SOCKS server host through which the the SMTP connection should be routed.

      -

      Variables

      -

    • socks_version
    • -

      Type

      -

      string

      -

      Default value

      -

      '5'

      -

      Purpose

      -

      Set the SOCKS protocol version.

      -

      Usage

      -

      Change this value if SOCKS server you want to use is listening to a different port.

      -

      Variables

      -

    • http_proxy_host_name
    • -

      Type

      -

      string

      -

      Default value

      -

      ''

      -

      Purpose

      -

      Define the HTTP proxy server host name.

      -

      Usage

      -

      Set to the HTTP proxy server host name through which the SMTP connection should be routed. Leave it empty if you do not want the connections to be established through an HTTP proxy.

      -

      Variables

      -

    • http_proxy_host_port
    • -

      Type

      -

      int

      -

      Default value

      -

      80

      -

      Purpose

      -

      Define the HTTP proxy server host port.

      -

      Usage

      -

      Set to the port of the HTTP proxy server host through which the SMTP connection should be routed.

      -

      Variables

      -

    • user_agent
    • -

      Type

      -

      string

      -

      Default value

      -

      'SMTP Class (http://www.phpclasses.org/smtpclass $Revision: 1.1 $)'

      -

      Purpose

      -

      Set the user agent used when connecting via an HTTP proxy.

      -

      Usage

      -

      Change this value only if for some reason you want emulate a certain e-mail client.

      -

      Variables

      -

    • ssl
    • -

      Type

      -

      bool

      -

      Default value

      -

      0

      -

      Purpose

      -

      Define whether the connection to the SMTP server should be established securely using SSL protocol.

      -

      Usage

      -

      Set to 1 if the SMTP server requires secure connections using SSL protocol.

      -

      Variables

      -

    • start_tls
    • -

      Type

      -

      bool

      -

      Default value

      -

      0

      -

      Purpose

      -

      Define whether the connection to the SMTP server should use encryption after the connection is established using TLS protocol.

      -

      Usage

      -

      Set to 1 if the SMTP server requires that authentication be done securely starting the TLS protocol after the connection is established.

      -

      Variables

      -

    • localhost
    • -

      Type

      -

      string

      -

      Default value

      -

      ''

      -

      Purpose

      -

      Name of the local host computer

      -

      Usage

      -

      Set to the name of the computer connecting to the SMTP server from the local network.

      -

      Variables

      -

    • timeout
    • -

      Type

      -

      int

      -

      Default value

      -

      0

      -

      Purpose

      -

      Specify the connection timeout period in seconds.

      -

      Usage

      -

      Leave it set to 0 if you want the connection attempts to wait forever. Change this value if for some reason the timeout period seems insufficient or otherwise it seems too long.

      -

      Variables

      -

    • data_timeout
    • -

      Type

      -

      int

      -

      Default value

      -

      0

      -

      Purpose

      -

      Specify the timeout period in seconds to wait for data from the server.

      -

      Usage

      -

      Leave it set to 0 if you want to use the same value defined in the timeout variable. Change this value if for some reason the default data timeout period seems insufficient or otherwise it seems too long.

      -

      Variables

      -

    • direct_delivery
    • -

      Type

      -

      bool

      -

      Default value

      -

      0

      -

      Purpose

      -

      Boolean flag that indicates whether the message should be sent in direct delivery mode, i.e. the message is sent to the SMTP server associated to the domain of the recipient instead of relaying to the server specified by the host_name variable.

      -

      Usage

      -

      Set this to 1 if you want to send urgent messages directly to the recipient domain SMTP server.

      -

      Variables

      -

    • error
    • -

      Type

      -

      string

      -

      Default value

      -

      ''

      -

      Purpose

      -

      Message that describes the error when a call to a class function fails.

      -

      Usage

      -

      Check this variable when an error occurs to understand what happened.

      -

      Variables

      -

    • debug
    • -

      Type

      -

      bool

      -

      Default value

      -

      0

      -

      Purpose

      -

      Specify whether it is necessary to output SMTP connection debug information.

      -

      Usage

      -

      Set this variable to 1 if you need to see the progress of the SMTP connection and protocol dialog when you need to understand the reason for delivery problems.

      -

      Variables

      -

    • html_debug
    • -

      Type

      -

      bool

      -

      Default value

      -

      0

      -

      Purpose

      -

      Specify whether the debug information should be outputted in HTML format.

      -

      Usage

      -

      Set this variable to 1 if you need to see the debug output in a Web page.

      -

      Variables

      -

    • esmtp
    • -

      Type

      -

      bool

      -

      Default value

      -

      1

      -

      Purpose

      -

      Specify whether the class should attempt to use ESMTP extensions supported by the server.

      -

      Usage

      -

      Set this variable to 0 if for some reason you want to avoid benefitting from ESMTP extensions.

      -

      Variables

      -

    • esmtp_extensions
    • -

      Type

      -

      array

      -

      Default value

      -

      array()

      -

      Purpose

      -

      Associative array with the list of ESMTP extensions supported by the SMTP server.

      -

      Usage

      -

      Check this variable after connecting to the SMTP server to determine which ESMTP extensions are supported.

      -

      Variables

      -

    • exclude_address
    • -

      Type

      -

      string

      -

      Default value

      -

      ''

      -

      Purpose

      -

      Specify an address that should be considered invalid when resolving host name addresses.

      -

      Usage

      -

      In some networks any domain name that does not exist is resolved as a sub-domain of the default local domain. If the DNS is configured in such way that it always resolves any sub-domain of the default local domain to a given address, it is hard to determine whether a given domain does not exist.

      -

      If your network is configured this way, you may set this variable to the address that all sub-domains of the default local domain resolves, so the class can assume that such address is invalid.

      -

      Variables

      -

    • getmxrr
    • -

      Type

      -

      string

      -

      Default value

      -

      'getmxrr'

      -

      Purpose

      -

      Specify the name of the function that is called to determine the SMTP server address of a given domain.

      -

      Usage

      -

      Change this to a working replacement of the PHP getmxrr() function if this is not working in your system and you want to send messages in direct delivery mode.

      -

      Variables

      -

    • pop3_auth_host
    • -

      Type

      -

      string

      -

      Default value

      -

      ''

      -

      Purpose

      -

      Specify the server address for POP3 based authentication.

      -

      Usage

      -

      Set this variable to the address of the POP3 server if the SMTP server requires POP3 based authentication.

      -

      Variables

      -

    • pop3_auth_port
    • -

      Type

      -

      int

      -

      Default value

      -

      110

      -

      Purpose

      -

      Specify the server port for POP3 based authentication.

      -

      Usage

      -

      Set this variable to the port of the POP3 server if the SMTP server requires POP3 based authentication.

      -

      Variables

      -

      Table of contents

      -
    -
-
-
    -

  • Functions
  • -
      -
    • Connect

    • -
    • MailFrom

    • -
    • SetRecipient

    • -
    • StartData

    • -
    • PrepareData

    • -
    • SendData

    • -
    • EndSendingData

    • -
    • ResetConnection

    • -
    • Disconnect

    • -
    • SendMessage

    • -

      Table of contents

      -

    • Connect
    • -

      Synopsis

      -

      bool Connect(

      -)

      -

      Purpose

      -

      Connect to an SMTP server.

      -

      Usage

      -

      Call this function as first step to send e-mail messages.

      -

      Arguments

      -
        -

        domain - Specify the domain of the recipient when using the direct delivery mode.

        -
      -

      Return value

      -

      The function returns 1 if the connection is successfully established.

      -

      Functions

      -

    • MailFrom
    • -

      Synopsis

      -

      bool MailFrom(

      -)

      -

      Purpose

      -

      Set the address of the message sender.

      -

      Usage

      -

      Call this function right after establishing a connection with the Connect function.

      -

      Arguments

      -
        -

        sender - E-mail address of the sender.

        -
      -

      Return value

      -

      The function returns 1 if the sender address is successfully set.

      -

      Functions

      -

    • SetRecipient
    • -

      Synopsis

      -

      bool SetRecipient(

      -)

      -

      Purpose

      -

      Set the address of a message recipient.

      -

      Usage

      -

      Call this function repeatedly for each recipient right after setting the message sender with the MailFrom function.

      -

      Arguments

      -
        -

        recipient - E-mail address of a recipient.

        -
      -

      Return value

      -

      The function returns 1 if the recipient address is successfully set.

      -

      Functions

      -

    • StartData
    • -

      Synopsis

      -

      bool StartData()

      -

      Purpose

      -

      Tell the SMTP server that the message data will start being sent.

      -

      Usage

      -

      Call this function right after you are done setting all the message recipients with the SetRecipient function.

      -

      Return value

      -

      The function returns 1 if the server is ready to start receiving the message data.

      -

      Functions

      -

    • PrepareData
    • -

      Synopsis

      -

      string PrepareData(

      -)

      -

      Purpose

      -

      Prepare message data to normalize line breaks and escaping lines that contain single dots.

      -

      Usage

      -

      Call this function if the message data you want to send may contain line breaks that are not the "\r\n" sequence or it may contain lines that just have a single dot.

      -

      Arguments

      -
        -

        data - Message data to be prepared.

        -
      -

      Return value

      -

      Resulting normalized messages data.

      -

      Functions

      -

    • SendData
    • -

      Synopsis

      -

      bool SendData(

      -)

      -

      Purpose

      -

      Send message data.

      -

      Usage

      -

      Call this function repeatedly for all message data blocks to be sent right after start sending message data with the StartData function.

      -

      Arguments

      -
        -

        data - Message data to be sent.

        -
      -

      Return value

      -

      The function returns 1 if the message data was sent to the SMTP server successfully.

      -

      Functions

      -

    • EndSendingData
    • -

      Synopsis

      -

      bool EndSendingData()

      -

      Purpose

      -

      Tell the server that all the message data was sent.

      -

      Usage

      -

      Call this function when you are done with sending the message data with the SendData function.

      -

      Return value

      -

      The function returns 1 if the server accepted the message.

      -

      Functions

      -

    • ResetConnection
    • -

      Synopsis

      -

      bool ResetConnection()

      -

      Purpose

      -

      Reset an already established SMTP connection to the initial state.

      -

      Usage

      -

      Call this function when there was an error sending a message and you need to skip to sending another message without disconnecting.

      -

      Return value

      -

      The function returns 1 if the connection was resetted successfully.

      -

      Functions

      -

    • Disconnect
    • -

      Synopsis

      -

      bool Disconnect(

        -bool quit [default 1]
      -)

      -

      Purpose

      -

      Terminate a previously opened connection.

      -

      Usage

      -

      Call this function after you are done sending your messages.

      -

      Arguments

      -
        -

        quit - Boolean option that tells whether the class should perform the final connection quit handshake, or just close the connection without waiting.

        -
      -

      Return value

      -

      The function returns 1 if the connection was successfully closed.

      -

      Functions

      -

    • SendMessage
    • -

      Synopsis

      -

      bool SendMessage(

      -)

      -

      Purpose

      -

      Send a message in a single call.

      -

      Usage

      -

      Call this function if you want to send a single messages to a small number of recipients in a single call.

      -

      Arguments

      -
        -

        sender - E-mail address of the sender.

        -

        recipients - Array with a list of the e-mail addresses of the recipients of the message.

        -

        headers - Array with a list of the header lines of the message.

        -

        body - Body data of the message.

        -
      -

      Return value

      -

      The function returns 1 if the message was sent successfully.

      -

      Functions

      -

      Table of contents

      -
    -
- -
-
Manuel Lemos (mlemos-at-acm.org)
- - diff --git a/site/modules/.WireMailSmtp/smtp_classes/documentation/smtp_message_class.html b/site/modules/.WireMailSmtp/smtp_classes/documentation/smtp_message_class.html deleted file mode 100644 index 3294e22..0000000 --- a/site/modules/.WireMailSmtp/smtp_classes/documentation/smtp_message_class.html +++ /dev/null @@ -1,477 +0,0 @@ - - - -Class: MIME E-mail message composing and sending via SMTP - - -

Class: MIME E-mail message composing and sending via SMTP

-
- -
-
    -

  • Summary
  • -
      -

      Name

      -

      MIME E-mail message composing and sending via SMTP

      -

      Author

      -

      Manuel Lemos (mlemos-at-acm.org)

      -

      Copyright

      -

      Copyright © (C) Manuel Lemos 1999-2004

      -

      Version

      -

      @(#) $Id: smtp_message_class.html,v 1.1 2014/03/03 12:28:32 horst Exp $

      -

      Parent classes

      -
        -

      • MIME E-mail message composing and sending
      • -

        Version: @(#) $Id: smtp_message_class.html,v 1.1 2014/03/03 12:28:32 horst Exp $

        -
      -

      Purpose

      -

      Implement an alternative message delivery method via SMTP protocol, overriding the method of using the PHP mail() function implemented by the base class.

      -

      Usage

      -

      This class should be used exactly the same way as the base class for composing and sending messages. Just create a new object of this class as follows and set only the necessary variables to configure details of the SMTP delivery.

      -

      require('email_message.php');
      - require('smtp.php');
      - require('smtp_message.php');
      -
      - $message_object = new smtp_message_class;
      -

      -

      - Requirements

      -

      You need the SMTP E-mail sending class to perform the actual message delivery via the SMTP protocol.

      -

      - SMTP connection

      -

      Before sending a message by relaying it to a given SMTP server you need set the smtp_host variable to that server address. The localhost variable needs to be set to the sending computer address.

      -

      You may also adjust the time the class will wait for establishing a connection by changing the timeout variable.

      -

      - Secure SMTP connections with SSL

      -

      Some SMTP servers, like for instance Gmail, require secure connections via SSL. In that case it is necessary to set the smtp_ssl variable to 1. In the case of Gmail, it is also necessary to set the connection port changing the smtp_port variable to 465.

      -

      SSL support requires at least PHP 4.3.0 with OpenSSL extension enabled.

      -

      - Secure SMTP connections starting TLS after connections is established

      -

      Some SMTP servers, like for instance Hotmail, require starting the TLS protocol after the connection is already established to exchange data securely. In that case it is necessary to set the smtp_start_tls variable to 1.

      -

      Starting TLS protocol on an already established connection requires at least PHP 5.1.0 with OpenSSL extension enabled.

      -

      - Authentication

      -

      Most servers only allow relaying messages sent by authorized users. If the SMTP server that you want to use requires authentication, you need to set the variables smtp_user, smtp_realm and smtp_password.

      -

      The way these values need to be set depends on the server. Usually the realm value is empty and only the user and password need to be set. If the server requires authentication via NTLM mechanism (Windows or Samba), you need to set the smtp_realm to the Windows domain name and also set the variable smtp_workstation to the user workstation name.

      -

      Some servers require that the authentication be done on a separate server using the POP3 protocol before connecting to the SMTP server. In this case you need to specify the address of the POP3 server setting the smtp_pop3_auth_host variable.

      -

      - Sending urgent messages with direct delivery

      -

      If you need to send urgent messages or obtain immediate confirmation that a message is accepted by the recipient SMTP server, you can use the direct delivery mode setting the direct_delivery variable to 1. This mode can be used to send a message to only one recipient.

      -

      To use this mode, it is necessary to have a way to determine the recipient domain SMTP server address. The class uses the PHP getmxrr() function, but on some systems like for instance under Windows, this function does not work. In this case you may specify an equivalent alternative by setting the smtp_getmxrr variable. See the SMTP class page for available alternatives.

      -

      - Troubleshooting and debugging

      -

      If for some reason the delivery via SMTP is not working and the error messages are not self-explanatory, you may set the smtp_debug to 1 to make the class output the SMTP protocol dialog with the server. If you want to display this dialog properly formatted in an HTML page, also set the smtp_debug to 1.

      -

      - Optimizing the delivery of messages to many recipients

      -

      When sending messages to many recipients, this class can hinted to optimize its behavior by using the SetBulkMail function. After calling this function passing 1 to the on argument, when the message is sent this class opens a TCP connection to the SMTP server but will not close it. This avoids the overhead of opening and closing connections.

      -

      When the delivery of the messages to all recipients is done, the connection may be closed implicitly by calling the SetBulkMail function again passing 0 to the on argument.

      -

      Table of contents

      -
    -
-
-
    -

  • Variables
  • -
      -
    • localhost

    • -
    • smtp_host

    • -
    • smtp_port

    • -
    • smtp_ssl

    • -
    • smtp_start_tls

    • -
    • smtp_http_proxy_host_name

    • -
    • smtp_http_proxy_host_port

    • -
    • smtp_socks_host_name

    • -
    • smtp_socks_host_port

    • -
    • smtp_socks_version

    • -
    • smtp_direct_delivery

    • -
    • smtp_getmxrr

    • -
    • smtp_exclude_address

    • -
    • smtp_user

    • -
    • smtp_realm

    • -
    • smtp_workstation

    • -
    • smtp_authentication_mechanism

    • -
    • smtp_password

    • -
    • smtp_pop3_auth_host

    • -
    • smtp_debug

    • -
    • smtp_html_debug

    • -
    • esmtp

    • -
    • timeout

    • -
    • invalid_recipients

    • -
    • mailer_delivery

    • -
    • maximum_bulk_deliveries

    • -

      Table of contents

      -

    • localhost
    • -

      Type

      -

      string

      -

      Default value

      -

      ''

      -

      Purpose

      -

      Specify the domain name of the computer sending the message.

      -

      Usage

      -

      This value is used to identify the sending machine to the SMTP server. When using the direct delivery mode, if this variable is set to a non-empty string it used to generate the Recieved header to show that the message passed by the specified host address. To prevent confusing directly delivered messages with spam, it is strongly recommended that you set this variable to you server host name.

      -

      Variables

      -

    • smtp_host
    • -

      Type

      -

      string

      -

      Default value

      -

      ''

      -

      Purpose

      -

      Specify the address of the SMTP server.

      -

      Usage

      -

      Set to the address of the SMTP server that will relay the messages. This variable is not used in direct delivery mode.

      -

      Variables

      -

    • smtp_port
    • -

      Type

      -

      int

      -

      Default value

      -

      25

      -

      Purpose

      -

      Specify the TCP/IP port of SMTP server to connect.

      -

      Usage

      -

      Most servers work on port 25 . Certain e-mail services use alternative ports to avoid firewall blocking. Gmail uses port 465.

      -

      Variables

      -

    • smtp_ssl
    • -

      Type

      -

      bool

      -

      Default value

      -

      0

      -

      Purpose

      -

      Specify whether it should use secure connections with SSL to connect to the SMTP server.

      -

      Usage

      -

      Certain e-mail services like Gmail require SSL connections.

      -

      Variables

      -

    • smtp_start_tls
    • -

      Type

      -

      bool

      -

      Default value

      -

      0

      -

      Purpose

      -

      Specify whether it should use secure connections starting TLS protocol after connecting to the SMTP server.

      -

      Usage

      -

      Certain e-mail services like Hotmail require starting TLS protocol after the connection to the SMTP server is already established.

      -

      Variables

      -

    • smtp_http_proxy_host_name
    • -

      Type

      -

      string

      -

      Default value

      -

      ''

      -

      Purpose

      -

      Specify name of the host when the connection should be routed via an HTTP proxy.

      -

      Usage

      -

      Leave empty if no proxy should be used.

      -

      Variables

      -

    • smtp_http_proxy_host_port
    • -

      Type

      -

      int

      -

      Default value

      -

      3128

      -

      Purpose

      -

      Specify proxy port when the connection should be routed via an HTTP proxy.

      -

      Usage

      -

      Change this variable if you need to use a proxy with a specific port.

      -

      Variables

      -

    • smtp_socks_host_name
    • -

      Type

      -

      string

      -

      Default value

      -

      ''

      -

      Purpose

      -

      Specify name of the host when the connection should be routed via a SOCKS protocol proxy.

      -

      Usage

      -

      Leave empty if no proxy should be used.

      -

      Variables

      -

    • smtp_socks_host_port
    • -

      Type

      -

      int

      -

      Default value

      -

      1080

      -

      Purpose

      -

      Specify proxy port when the connection should be routed via a SOCKS protocol proxy.

      -

      Usage

      -

      Change this variable if you need to use a proxy with a specific port.

      -

      Variables

      -

    • smtp_socks_version
    • -

      Type

      -

      string

      -

      Default value

      -

      ''

      -

      Purpose

      -

      Specify protocol version when the connection should be routed via a SOCKS protocol proxy.

      -

      Usage

      -

      Change this variable if you need to use a proxy with a specific SOCKS protocol version.

      -

      Variables

      -

    • smtp_direct_delivery
    • -

      Type

      -

      bool

      -

      Default value

      -

      0

      -

      Purpose

      -

      Boolean flag that indicates whether the message should be sent in direct delivery mode.

      -

      Usage

      -

      Set this to 1 if you want to send urgent messages directly to the recipient domain SMTP server.

      -

      Variables

      -

    • smtp_getmxrr
    • -

      Type

      -

      string

      -

      Default value

      -

      'getmxrr'

      -

      Purpose

      -

      Specify the name of the function that is called to determine the SMTP server address of a given domain.

      -

      Usage

      -

      Change this to a working replacement of the PHP getmxrr() function if this is not working in your system and you want to send messages in direct delivery mode.

      -

      Variables

      -

    • smtp_exclude_address
    • -

      Type

      -

      string

      -

      Default value

      -

      ''

      -

      Purpose

      -

      Specify an address that should be considered invalid when resolving host name addresses.

      -

      Usage

      -

      In some networks any domain name that does not exist is resolved as a sub-domain of the default local domain. If the DNS is configured in such way that it always resolves any sub-domain of the default local domain to a given address, it is hard to determine whether a given domain does not exist.

      -

      If your network is configured this way, you may set this variable to the address that all sub-domains of the default local domain resolves, so the class can assume that such address is invalid.

      -

      Variables

      -

    • smtp_user
    • -

      Type

      -

      string

      -

      Default value

      -

      ''

      -

      Purpose

      -

      Specify the user name for authentication.

      -

      Usage

      -

      Set this variable if you need to authenticate before sending a message.

      -

      Variables

      -

    • smtp_realm
    • -

      Type

      -

      string

      -

      Default value

      -

      ''

      -

      Purpose

      -

      Specify the user authentication realm.

      -

      Usage

      -

      Set this variable if you need to authenticate before sending a message.

      -

      Variables

      -

    • smtp_workstation
    • -

      Type

      -

      string

      -

      Default value

      -

      ''

      -

      Purpose

      -

      Specify the user authentication workstation needed when using the NTLM authentication (Windows or Samba).

      -

      Usage

      -

      Set this variable if you need to authenticate before sending a message.

      -

      Variables

      -

    • smtp_authentication_mechanism
    • -

      Type

      -

      string

      -

      Default value

      -

      ''

      -

      Purpose

      -

      Specify the user authentication mechanism that should be used when authenticating with the SMTP server.

      -

      Usage

      -

      Set this variable if you need to force the SMTP connection to authenticate with a specific authentication mechanism. Leave this variable with an empty string if you want the authentication mechanism be determined automatically from the list of mechanisms supported by the server.

      -

      Variables

      -

    • smtp_password
    • -

      Type

      -

      string

      -

      Default value

      -

      ''

      -

      Purpose

      -

      Specify the user authentication password.

      -

      Usage

      -

      Set this variable if you need to authenticate before sending a message.

      -

      Variables

      -

    • smtp_pop3_auth_host
    • -

      Type

      -

      string

      -

      Default value

      -

      ''

      -

      Purpose

      -

      Specify the server address for POP3 based authentication.

      -

      Usage

      -

      Set this variable to the address of the POP3 server if the SMTP server requires POP3 based authentication.

      -

      Variables

      -

    • smtp_debug
    • -

      Type

      -

      bool

      -

      Default value

      -

      0

      -

      Purpose

      -

      Specify whether it is necessary to output SMTP connection debug information.

      -

      Usage

      -

      Set this variable to 1 if you need to see the progress of the SMTP connection and protocol dialog when you need to understand the reason for delivery problems.

      -

      Variables

      -

    • smtp_html_debug
    • -

      Type

      -

      bool

      -

      Default value

      -

      0

      -

      Purpose

      -

      Specify whether the debug information should be outputted in HTML format.

      -

      Usage

      -

      Set this variable to 1 if you need to see the debug output in a Web page.

      -

      Variables

      -

    • esmtp
    • -

      Type

      -

      bool

      -

      Default value

      -

      1

      -

      Purpose

      -

      Specify whether the class should try to use Enhanced SMTP protocol features.

      -

      Usage

      -

      It is recommended to leave this variable set to 1 so the class can take advantage of Enhanced SMTP protocol features.

      -

      Variables

      -

    • timeout
    • -

      Type

      -

      int

      -

      Default value

      -

      25

      -

      Purpose

      -

      Specify the connection timeout period in seconds.

      -

      Usage

      -

      Change this value if for some reason the timeout period seems insufficient or otherwise it seems too long.

      -

      Variables

      -

    • invalid_recipients
    • -

      Type

      -

      array

      -

      Default value

      -

      array()

      -

      Purpose

      -

      Return the list of recipient addresses that were not accepted by the SMTP server.

      -

      Usage

      -

      Check this variable after attempting to send a message to figure whether there were any recipients that were rejected by the SMTP server.

      -

      Variables

      -

    • mailer_delivery
    • -

      Type

      -

      string

      -

      Default value

      -

      'smtp $Revision: 1.1 $'

      -

      Purpose

      -

      Specify the text that is used to identify the mail delivery class or sub-class. This text is appended to the X-Mailer header text defined by the mailer variable.

      -

      Usage

      -

      Do not change this variable.

      -

      Variables

      -

    • maximum_bulk_deliveries
    • -

      Type

      -

      int

      -

      Default value

      -

      100

      -

      Purpose

      -

      Specify the number of consecutive bulk mail deliveries without disconnecting.

      -

      Usage

      -

      Lower this value if you have enabled the bulk mail mode but the SMTP server does not accept sending more than a number of messages within the same SMTP connection.

      -

      Set this value to 0 to never disconnect during bulk mail mode unless an error occurs.

      -

      Variables

      -

      Table of contents

      -
    -
-
    -

  • Inherited variables
  • -
      -
    • email_regular_expression

    • -
    • mailer

    • -
    • default_charset

    • -
    • line_quote_prefix

    • -
    • break_long_lines

    • -
    • file_buffer_length

    • -
    • debug

    • -
    • cache_body

    • -
    • error

    • -

      Table of contents

      -
    -
-
- -
    -

  • Inherited functions
  • -
      -
    • ValidateEmailAddress

    • -
    • WrapText

    • -
    • CenterText

    • -
    • Ruler

    • -
    • QuoteText

    • -
    • SetHeader

    • -
    • SetEncodedHeader

    • -
    • SetEncodedEmailHeader

    • -
    • SetMultipleEncodedEmailHeader

    • -
    • ResetMessage

    • -
    • AddPart

    • -
    • ReplacePart

    • -
    • CreatePlainTextPart

    • -
    • AddPlainTextPart

    • -
    • CreateQuotedPrintableTextPart

    • -
    • AddQuotedPrintableTextPart

    • -
    • CreateHTMLPart

    • -
    • AddHTMLPart

    • -
    • CreateQuotedPrintableHTMLPart

    • -
    • AddQuotedPrintableHTMLPart

    • -
    • CreateFilePart

    • -
    • AddFilePart

    • -
    • CreateMessagePart

    • -
    • AddMessagePart

    • -
    • CreateAlternativeMultipart

    • -
    • AddAlternativeMultipart

    • -
    • CreateRelatedMultipart

    • -
    • AddRelatedMultipart

    • -
    • CreateMixedMultipart

    • -
    • AddMixedMultipart

    • -
    • GetPartContentID

    • -
    • GetDataURL

    • -
    • Send

    • -
    • GetMessage

    • -
    • GetMessageSize

    • -
    • Mail

    • -
    • SetBulkMail

    • -

      Table of contents

      -
    -
- -
-
Manuel Lemos (mlemos-at-acm.org)
- - diff --git a/site/modules/.WireMailSmtp/smtp_classes/email_message.php b/site/modules/.WireMailSmtp/smtp_classes/email_message.php deleted file mode 100644 index 9fb7150..0000000 --- a/site/modules/.WireMailSmtp/smtp_classes/email_message.php +++ /dev/null @@ -1,3862 +0,0 @@ - - - - net.manuellemos.mimemessage - - @(#) $Id: email_message.php,v 1.99 2013/09/08 22:44:46 mlemos Exp $ - Copyright © (C) Manuel Lemos 1999-2004 - MIME E-mail message composing and sending - Manuel Lemos - mlemos-at-acm.org - - - en - Compose and send e-mail messages according to the MIME - standards. - If you are interested in translating the documentation of - this class to your own idiom, please - contact the author - mailto:authoraddress - . - Technical support for using this class may be obtained in the - mimemessage-dev mailing list. Just go to the mailing list - page to browse the list archives, learn how to to join and post - support request messages: - - http://groups-beta.google.com/group/mimemessage-dev - http://groups-beta.google.com/group/mimemessage-dev - - To used this class just create a new object as follows, set any - variables to configure its behavior and call the functions you need - to compose and send your messages. - require('email_message.php');
-
- $message_object = new email_message_class;
- - Set the sender and recipients - You can set the message sender and one or more recipient addresses - using the SetHeader or the - SetEncodedEmailHeader functions - specifying the addresses for the From, To, - Cc and Bcc headers. - - - Formatting text messages - You can use the WrapText to assure that - a text message does not have more than 75 columns by breaking the - longer lines between words. - - If you are composing a reply to another text message, you can use the - QuoteText function to conveniently mark - the text quoted from the original message. - - - Add a plain text message body - If the text of the message that you want to send only contains ASCII - characters (7 bits), use the - AddPlainTextPart function to add the - text to the message. - - - Add a text message with non-ASCII characters - If your message text may contains non-ASCII characters (8 bits or - more), use the - AddQuotedPrintableTextPart function - to add the text to the message. - - If the text uses a character set other than - ISO-8859-1 (ISO Latin 1), set the - default_charset variable to change the - default character set. - - - Setting the error message bounce address - This class provides a means to specify the address where error - messages should be bounced in case it is not possible to deliver a - message. That can be done by setting the header Return-Path - with the SetHeader - function. - - - Request message receipt notification - If you would like to be receive an notification when a message that - is sent is received, just use the - SetHeader function with the - Disposition-Notification-To header to specify the address to - where you want to receive the notification message. - Keep in mind that this header just expresses that you want to get a - receipt notification, but it may be denied or ignored by the - recipient, which does not mean the message was not - received. - - - Avoding temporary delivery failure warning messages - Sometimes it is not possible to deliver a message immediately due - to a networking failure or some other problem. In that case, the mail - transfer system usually leaves the message in a queue and keeps - retrying to deliver the message until it succeeds or it has reached - the limit number of days before it gives up. When it gives up the - the message is bounced to the return-path address. - However some systems send a warning message to the original sender - when it is not delivered after the first few hours. This may be an - useful notification when the message is sent by a human but it maybe - inconvinient when you are sending messages to many users like for - instance newsletters or messages to subscribers of mailing lists. - If you want to hint the mail transfer system to not send temporary - delivery failure warning messages, just use the - SetHeader function to set the - Precedence header to bulk. - Setting this header this way is a convention used by mailing list - manager programs precisely for this purpose. It may also hint some - mail receiving systems to not send auto-response messages, for - instance when the recipient user is away on vaction. However, not all - systems are aware of this convention and still send auto-response - messages when you set this header. - - - Send the message - Once you have set the message sender, the recipients and added the - message text, use the Send function - to send the message. This class uses the PHP function mail() - to send messages. - - If for some reason you need to use a different message delivery - method, you may use one of the existing sub-classes that are - specialized in delivering messages by connecting to an SMTP server or - using directly the programs sendmail and qmail. - - - Add an HTML message body - If you want to send an HTML message you can use the - AddHTMLPart function if it contains - only ASCII characters. If it contains non-ASCII characters, you - should the AddQuotedPrintableHTMLPart - function instead. - - - Add alternative text body for HTML messages - Not every e-mail program can display HTML messages. Therefore, when - you send an HTML message, you should also include an alternative text - part to be displayed by programs that do not support HTML - messages. - - This is achieved by composing multipart/alternative - messages. This type of message is composed by creating the HTML - message part with the CreateHTMLPart or - the CreateQuotedPrintableHTMLPart - functions, then create the alternative text part with the - CreatePlainTextPart or the - CreateQuotedPrintableTextPart - functions, and finally use the - AddAlternativeMultipart function to add - an assembly of both message parts. - Note that the text part should be the first to be specified in the - array of parts passed to the - AddAlternativeMultipart function, or - else it will not appear correctly. - Despite this procedure adds a little complexity to the process of - sending HTML messages, it is the same procedure that is followed by - e-mail programs that are used by most people to send HTML - messages. - Therefore, you are strongly recommended to follow the same procedure - because some of the modern spam filter programs discard HTML messages - without an alternative plain text part, as it constitutes a pattern - that identifies messages composed by some of the spam sending - programs. - - - - Embed images in HTML messages - embed-image - - One way to show an image in an HTML message is to use - <img> tag with src attribute set to the - remote site URL of the image that is meant to be displayed. - However, since the message recipient user may not be online when - they will check their e-mail, an image referenced this way may not - appear. - Alternatively, an image file can be embedded in an HTML message using - multipart/related message parts. This type of message part - is composed by creating the image file part with the - CreateFilePart function. - Then use the GetPartContentID function - the image part identifier text. Prepend the string - cid: to this identifier to form a special - URL that should be used in the HTML part to reference the image part - like this: - $image_tag = <img src="cid: . - $message_object->GetPartContentID($image_part) . - "> ; - When you have composed the whole HTML document, create the HTML - message part with the CreateHTMLPart or - the CreateQuotedPrintableHTMLPart - functions, and finally use the - CreateRelatedMultipart function to - create a message part that can be added to the message with the - function AddAlternativeMultipart like - HTML messages with alternative text parts described - before. - Note that the HTML part must be the first listed in the parts array - argument that is passed to the function - CreateRelatedMultipart, or else the - message may not appear correctly. - Note also that when you are composing an HTML message with embedded - images and an alternative text part, first you need to create the - multipart/alternative part with the HTML and the text parts - using the CreateAlternativeMultipart - function, and then you add the multipart/related part to - the message with the - AddRelatedMultipart function, - passing an array of parts that lists first the - multipart/alternative part and then the image part created - before. - - - Attach files to messages - To send a message with attached files, it is necessary to compose a - multipart/mixed message. This is a type of message made by a - text or HTML part followed by one or more file - parts. - If you add multiple parts to a message, this class implicitly turns - it into a multipart/mixed message. Therefore you only need - to use the function AddFilePart for each - file that you want to attach and the class will automatically - generate the message treating any parts added after the first as - attachments. - - - Forward received messages - To forward an e-mail message received from somewhere, just use the - function AddMessagePart passing the - message complete with the original headers and body data. The message - is forwarded as an attachment that most mail programs can - display. - - - Sending messages to many recipients (mass or bulk mailing) - Sending messages to many recipients is an activity also known as - mass or bulk mailing. There are several alternatives for mass - mailing. One way consists on specifying all recipient addresses - with the Bcc header, separating the addresses with commas - (,), or using the - SetMultipleEncodedEmailHeader function. - This way you only need to send one message that is distributed to all - recipients by your mail transfer system. - Unfortunately, many mail account providers like Hotmail, tend to - consider messages sent this way as spam because the real recipients - addresses are not visible in To of Cc headers. - So, this method is no longer a good solution these - days. - The alternative is to send a separate message to each recipient by - iteratively setting the To header with each recipient - address and calling the Send function. - This way tends to take too much time and CPU as the number of - recipients grow. - When sending messages to many recipients, call the - SetBulkMail function to hint the class - to optimize the way it works to make the delivery of the messages - more efficient and eventually faster. - The actual optimizations that are performed depend on the delivery - method that is used by this class or any of its subclasses - specialized on the different delivery methods that are supported. - Check the documentation of the subclass that you use to learn about - the optimizations that are performed, if any. - If you intend to send messages with the same body to all recipients, - the class can optimize the generation of the messages and reduce - significantly the composition time if you set the - cache_body variable to - 1. - If you really need to personalize the content of a message part with - different text, HTML or file to each recipient, you should use the - ReplacePart function to avoid as much - as possible the overhead of composing a new message to each of the - recipients of the mailing. - If you are sending personalized messages to multiple recipients but - the messages include attached or embedded files that are the same - for all recipients, you should also set the - Cached option of the - file - CreateFilePart - parameter of the - CreateFilePart function. - Other than that, take a look at the documentation of the this class - sub-classes that may be used in your PHP environment, as these may - provide more efficient delivery solutions for mass mailing. - - - Error handling - Most of the functions of this class that may fail, return an error - message string that describes the error that has occurred. If there - was no error, the functions return an empty string. - Verifying the return value of all the functions to determine - whether there was an error is a tedious task to implement for most - developers. To avoid this problem, this class supports cumulative - error checking. - Cumulative error checking means that when an error occurs, the class - stores the error message in the error - variable. Then, when another function that may fail is called, it - does nothing and immediately returns the same error - message. - This way, the developers only need to check the return value of the - last function that is called, which is usually the - Send function. -
-
- -{/metadocument} -*/ - -class email_message_class -{ - /* Private variables */ - - var $headers=array("To"=>"","Subject"=>""); - var $body=-1; - var $body_parts=0; - var $parts=array(); - var $total_parts=0; - var $free_parts=array(); - var $total_free_parts=0; - var $delivery=array("State"=>""); - var $next_token=""; - var $php_version=0; - var $mailings=array(); - var $last_mailing=0; - var $header_length_limit=512; - var $auto_message_id=1; - var $mailing_path=""; - var $body_cache=array(); - var $line_break="\n"; - var $line_length=76; - var $ruler="_"; - var $email_address_pattern="([-!#\$%&'*+./0-9=?A-Z^_`a-z{|}~])+@([-!#\$%&'*+/0-9=?A-Z^_`a-z{|}~]+\\.)+[a-zA-Z]{2,6}"; - var $bulk_mail=0; - - /* Public variables */ - -/* -{metadocument} - - email_regular_expression - STRING - ^([-!#$%&'*+./0-9=?A-Z^_`a-z{|}~])+@([-!#$%&'*+/0-9=?A-Z^_`a-z{|}~]+\.)+[a-zA-Z]{2,6}$ - - Specify the regular expression that is used by the - ValidateEmailAddress function to - verify whether a given e-mail address may be valid. - Do not change this variable unless you have reason to believe - that it is rejecting existing e-mail addresses that are known to be - valid. - - -{/metadocument} -*/ - var $email_regular_expression="^([-!#\$%&'*+./0-9=?A-Z^_`a-z{|}~])+@([-!#\$%&'*+/0-9=?A-Z^_`a-z{|}~]+\\.)+[a-zA-Z]{2,6}\$"; - -/* -{metadocument} - - mailer - STRING - http://www.phpclasses.org/mimemessage $Revision: 1.99 $ - - Specify the base text that is used identify the name and the - version of the class that is used to send the message by setting an - implicit the X-Mailer message header. This is meant - mostly to assist on the debugging of delivery problems. - Change this to set another mailer identification string or - leave it to an empty string to prevent that the X-Mailer - header be added to the message. - - -{/metadocument} -*/ - var $mailer=''; - -/* -{metadocument} - - mailer_delivery - STRING - mail - - Specify the text that is used to identify the mail - delivery class or sub-class. This text is appended to the - X-Mailer header text defined by the - mailer variable. - This variable should only be redefined by the different mail - delivery sub-classes. - - -{/metadocument} -*/ - var $mailer_delivery='mail'; - -/* -{metadocument} - - default_charset - STRING - ISO-8859-1 - - Specify the default character set to be assumed for the - message headers and body text. - Change this variable to the correct character set name if it - is different than the default. - - -{/metadocument} -*/ - var $default_charset="ISO-8859-1"; - -/* -{metadocument} - - line_quote_prefix - STRING - > - - Specify the default line quote prefix text used by the - QuoteText function. - Change it only if you prefer to quote lines marking them with - a different line prefix. - - -{/metadocument} -*/ - var $line_quote_prefix="> "; - -/* -{metadocument} - - break_long_lines - BOOLEAN - 1 - - Determine whether lines exceeding the length limit will be - broken by the line break character when using the - WrapText function. - Change it only if you want to avoid breaking long lines - without any space characters, like for instance of messages with - long URLs. - - -{/metadocument} -*/ - var $break_long_lines=1; - -/* -{metadocument} - - file_buffer_length - INTEGER - 8000 - - Specify the length of the buffer that is used to read - files in chunks of limited size. - The default value may be increased if you have plenty of - memory and want to benefit from additional speed when processing - the files that are used to compose messages. - - -{/metadocument} -*/ - var $file_buffer_length=8000; - -/* -{metadocument} - - debug - STRING - - - Specify the name of a function that is called whenever an - error occurs. - If you need to track the errors that may happen during the use - of the class, set this variable to the name of a callback function. - It should take only one argument that is the error message. When - this variable is set to an empty string, no debug callback function - is called. - - -{/metadocument} -*/ - var $debug=""; - -/* -{metadocument} - - cache_body - BOOLEAN - 0 - - Specify whether the message bodies that are generated by the - class before sending, should be cached in memory to be reused on - the next message delivery. - Set this variable to 1 - if you intend to send the a message with the same body to many - recipients, so the class avoids the overhead of regenerating - messages with the same content. - - -{/metadocument} -*/ - var $cache_body=0; - -/* -{metadocument} - - error - STRING - - - Store the last error return by any function that may fail - due to some error. - Do not change this variable value unless you intend to clear - the error status by setting it to an empty string. - - -{/metadocument} -*/ - var $error=""; - -/* -{metadocument} - - localhost - STRING - - - Specify the domain name of the computer sending the - message. - This value is used as default domain of the sender e-mail - address when generating automatic Message-Id - headers. - - -{/metadocument} -*/ - var $localhost=""; - - /* Private methods */ - - Function Tokenize($string,$separator="") - { - if(!strcmp($separator,"")) - { - $separator=$string; - $string=$this->next_token; - } - for($character=0;$characternext_token=substr($string,$found+1); - return(substr($string,0,$found)); - } - else - { - $this->next_token=""; - return($string); - } - } - - Function GetFilenameExtension($filename) - { - return(GetType($dot=strrpos($filename,"."))=="integer" ? substr($filename,$dot) : ""); - } - - Function OutputError($error) - { - if(strcmp($function=$this->debug,"") - && strcmp($error,"")) - $function($error); - return($this->error=$error); - } - - Function OutputPHPError($error, &$php_error_message) - { - if(IsSet($php_error_message) - && strlen($php_error_message)) - $error.=": ".$php_error_message; - return($this->OutputError($error)); - } - - Function GetPHPVersion() - { - if($this->php_version==0) - { - $version=explode(".",function_exists("phpversion") ? phpversion() : "3.0.7"); - $this->php_version=$version[0]*1000000+$version[1]*1000+$version[2]; - } - return($this->php_version); - } - - Function EscapePattern($pattern) - { - return('/'.str_replace('/', '\\/', $pattern).'/'); - } - - Function GetRFC822Addresses($address,&$addresses) - { - if(function_exists("imap_rfc822_parse_adrlist")) - { - if(GetType($parsed_addresses=@imap_rfc822_parse_adrlist($address,$this->localhost))!="array") - return("it was not specified a valid address list"); - for($entry=0;$entryhost) - || $parsed_addresses[$entry]->host==".SYNTAX-ERROR.") - return($parsed_addresses[$entry]->mailbox." .SYNTAX-ERROR."); - $parsed_address=$parsed_addresses[$entry]->mailbox."@".$parsed_addresses[$entry]->host; - if(IsSet($addresses[$parsed_address])) - ++$addresses[$parsed_address]; - else - $addresses[$parsed_address]=1; - } - } - else - { - $length=strlen($address); - for($position=0;$position<$length;) - { - $match=preg_split($this->EscapePattern($this->email_address_pattern),strtolower(substr($address,$position)),2); - if(count($match)<2) - break; - $position+=strlen($match[0]); - $next_position=$length-strlen($match[1]); - $found=substr($address,$position,$next_position-$position); - if(!strcmp($found,"")) - break; - if(IsSet($addresses[$found])) - ++$addresses[$found]; - else - $addresses[$found]=1; - $position=$next_position; - } - } - return(""); - } - - Function FormatHeader($header_name,$header_value) - { - $length=strlen($header_value); - for($header_data="",$header_line=$header_name.": ",$line_length=strlen($header_line),$position=0;$position<$length;) - { - for($space=$position,$line_length=strlen($header_line);$space<$length;) - { - if(GetType($next=strpos($header_value," ",$space+1))!="integer") - $next=$length; - if($next-$position+$line_length>$this->header_length_limit) - { - if($space==$position) - $space=$next; - break; - } - $space=$next; - } - $header_data.=$header_line.substr($header_value,$position,$space-$position); - if($space<$length) - $header_line=""; - $position=$space; - if($position<$length) - $header_data.=$this->line_break; - } - return($header_data); - } - - Function GenerateMessageID($sender) - { - $micros=$this->Tokenize(microtime()," "); - $seconds=$this->Tokenize(""); - $local=$this->Tokenize($sender,"@"); - $host=$this->Tokenize(" @"); - if(strlen($host) - && $host[strlen($host)-1]=="-") - $host=substr($host,0,strlen($host)-1); - return($this->FormatHeader("Message-ID", "<".strftime("%Y%m%d%H%M%S", $seconds).substr($micros,1,5).".".preg_replace('/[^A-Za-z]/', '-', $local)."@".preg_replace('/[^.A-Za-z_-]/', '', $host).">")); - } - - Function SendMail($to, $subject, $body, $headers, $return_path) - { - if(!function_exists("mail")) - return($this->OutputError("the mail() function is not available in this PHP installation")); - if(strlen($return_path)) - { - if(!defined("PHP_OS")) - return($this->OutputError("it is not possible to set the Return-Path header with your PHP version")); - if(!strcmp(substr(PHP_OS,0,3),"WIN")) - return($this->OutputError("it is not possible to set the Return-Path header directly from a PHP script on Windows")); - if($this->GetPHPVersion()<4000005) - return($this->OutputError("it is not possible to set the Return-Path header in PHP version older than 4.0.5")); - if(function_exists("ini_get") - && ini_get("safe_mode")) - return($this->OutputError("it is not possible to set the Return-Path header due to PHP safe mode restrictions")); - $success=@mail($to,$subject,$body,$headers,"-f".$return_path); - } - else - $success=@mail($to,$subject,$body,$headers); - return($success ? "" : $this->OutputPHPError("it was not possible to send e-mail message", $php_errormsg)); - } - - Function StartSendingMessage() - { - if(strcmp($this->delivery["State"],"")) - return($this->OutputError("the message was already started to be sent")); - $this->delivery=array("State"=>"SendingHeaders"); - return(""); - } - - Function SendMessageHeaders($headers) - { - if(strcmp($this->delivery["State"],"SendingHeaders")) - { - if(!strcmp($this->delivery["State"],"")) - return($this->OutputError("the message was not yet started to be sent")); - else - return($this->OutputError("the message headers were already sent")); - } - $this->delivery["Headers"]=$headers; - $this->delivery["State"]="SendingBody"; - return(""); - } - - Function SendMessageBody($data) - { - if(strcmp($this->delivery["State"],"SendingBody")) - return($this->OutputError("the message headers were not yet sent")); - if(IsSet($this->delivery["Body"])) - $this->delivery["Body"].=$data; - else - $this->delivery["Body"]=$data; - return(""); - } - - Function EndSendingMessage() - { - if(strcmp($this->delivery["State"],"SendingBody")) - return($this->OutputError("the message body data was not yet sent")); - if(!IsSet($this->delivery["Headers"]) - || count($this->delivery["Headers"])==0) - return($this->OutputError("message has no headers")); - $line_break=((defined("PHP_OS") && !strcmp(substr(PHP_OS,0,3),"WIN")) ? "\r\n" : $this->line_break); - $headers=$this->delivery["Headers"]; - for($has=array(),$headers_text="",$header=0,Reset($headers);$headerline_break.$header_line; - else - $headers_text=$header_line; - } - } - if(strlen($has["to"])==0 - && !IsSet($has["cc"]) - && !IsSet($has["bcc"])) - return($this->OutputError("it were not specified a valid To:, Cc: or Bcc: headers")); - if(!IsSet($has["subject"])) - return($this->OutputError("it was not specified a valid Subject: header")); - if(!IsSet($has["message-id"]) - && $this->auto_message_id) - { - $sender = array(); - if(IsSet($has["return-path"])) - $sender[] = $has["return-path"]; - if(IsSet($has["from"])) - $sender[] = $has["from"]; - $sender[] = $has["to"]; - $ts = count($sender); - for($s = 0; $s < $ts; ++$s) - { - $error = $this->GetRFC822Addresses($sender[$s], $senders); - if(strlen($error) == 0 - && count($senders)) - break; - } - if(count($senders) == 0) - return('it was not specified a valid sender address'.(strlen($error) ? ': '.$error : '')); - Reset($senders); - $sender=Key($senders); - $header_line=$this->GenerateMessageID($sender); - if(strlen($headers_text)) - $headers_text.=$this->line_break.$header_line; - else - $headers_text=$header_line; - } - if(strcmp($error=$this->SendMail(strlen($has["to"]) ? $has["to"] : (IsSet($has["cc"]) ? "" : "undisclosed-recipients: ;"), $has["subject"], $this->delivery["Body"], $headers_text, IsSet($has["return-path"]) ? $has["return-path"] : ""),"")) - return($error); - $this->delivery=array("State"=>""); - return(""); - } - - Function StopSendingMessage() - { - $this->delivery=array("State"=>""); - return(""); - } - - Function GetPartBoundary($part) - { - if(!IsSet($this->parts[$part]["BOUNDARY"])) - $this->parts[$part]["BOUNDARY"]=md5(uniqid($part.time())); - } - - Function GetPartHeaders(&$headers,$part) - { - if(IsSet($this->parts[$part]['CachedHeaders'])) - { - $headers = $this->parts[$part]['CachedHeaders']; - return(''); - } - if(!IsSet($this->parts[$part]["Content-Type"])) - return($this->OutputError("it was added a part without Content-Type: defined")); - $type=$this->Tokenize($full_type=strtolower($this->parts[$part]["Content-Type"]),"/"); - $sub_type=$this->Tokenize(""); - switch($type) - { - case "text": - case "image": - case "audio": - case "video": - case "application": - case "message": - if(IsSet($this->parts[$part]["NAME"])) - $filename = $this->QuotedPrintableEncode($this->parts[$part]["NAME"], $this->default_charset, 1, 1); - $headers["Content-Type"]=$full_type.(IsSet($this->parts[$part]["CHARSET"]) ? "; charset=".$this->parts[$part]["CHARSET"] : "").(IsSet($this->parts[$part]["NAME"]) ? "; name=\"".$filename."\"" : ""); - if(IsSet($this->parts[$part]["Content-Transfer-Encoding"])) - $headers["Content-Transfer-Encoding"]=$this->parts[$part]["Content-Transfer-Encoding"]; - if(IsSet($this->parts[$part]["DISPOSITION"]) - && strlen($this->parts[$part]["DISPOSITION"])) - $headers["Content-Disposition"]=$this->parts[$part]["DISPOSITION"].(IsSet($this->parts[$part]["NAME"]) ? "; filename=\"".$filename."\"" : ""); - break; - case "multipart": - switch($sub_type) - { - case "alternative": - case "related": - case "mixed": - case "parallel": - $this->GetPartBoundary($part); - $headers["Content-Type"]=$full_type."; boundary=\"".$this->parts[$part]["BOUNDARY"]."\""; - break; - default: - return($this->OutputError("multipart Content-Type sub_type $sub_type not yet supported")); - } - break; - default: - return($this->OutputError("Content-Type: $full_type not yet supported")); - } - if(IsSet($this->parts[$part]["Content-ID"])) - $headers["Content-ID"]="<".$this->parts[$part]["Content-ID"].">"; - if(IsSet($this->parts[$part]['Cache']) - && $this->parts[$part]['Cache']) - $this->parts[$part]['CachedHeaders'] = $headers; - return(""); - } - - Function GetPartBody(&$body,$part) - { - if(IsSet($this->parts[$part]['CachedBody'])) - { - $body = $this->parts[$part]['CachedBody']; - return(''); - } - if(!IsSet($this->parts[$part]["Content-Type"])) - return($this->OutputError("it was added a part without Content-Type: defined")); - $type=$this->Tokenize($full_type=strtolower($this->parts[$part]["Content-Type"]),"/"); - $sub_type=$this->Tokenize(""); - $body=""; - switch($type) - { - case "text": - case "image": - case "audio": - case "video": - case "application": - case "message": - if(IsSet($this->parts[$part]["FILENAME"])) - { - $size=@filesize($this->parts[$part]["FILENAME"]); - if(!($file=@fopen($this->parts[$part]["FILENAME"],"rb"))) - return($this->OutputPHPError("could not open part file ".$this->parts[$part]["FILENAME"], $php_errormsg)); - while(!feof($file)) - { - if(GetType($block=@fread($file,$this->file_buffer_length))!="string") - { - fclose($file); - return($this->OutputPHPError("could not read part file", $php_errormsg)); - } - $body.=$block; - } - fclose($file); - if((GetType($size)=="integer" - && strlen($body)>$size) - || (function_exists("get_magic_quotes_runtime") - && get_magic_quotes_runtime())) - $body=StripSlashes($body); - if(GetType($size)=="integer" - && strlen($body)!=$size) - return($this->OutputError("the length of the file that was read does not match the size of the part file ".$this->parts[$part]["FILENAME"]." due to possible data corruption")); - } - else - { - if(!IsSet($this->parts[$part]["DATA"])) - return($this->OutputError("it was added a part without a body PART")); - $body=$this->parts[$part]["DATA"]; - } - $encoding=(IsSet($this->parts[$part]["Content-Transfer-Encoding"]) ? strtolower($this->parts[$part]["Content-Transfer-Encoding"]) : ""); - switch($encoding) - { - case "base64": - $body=chunk_split(base64_encode($body), $this->line_length, $this->line_break); - break; - case "": - case "quoted-printable": - case "7bit": - break; - default: - return($this->OutputError($encoding." is not yet a supported encoding type")); - } - break; - case "multipart": - switch($sub_type) - { - case "alternative": - case "related": - case "mixed": - case "parallel": - $this->GetPartBoundary($part); - $boundary="--".$this->parts[$part]["BOUNDARY"]; - $parts=count($this->parts[$part]["PARTS"]); - $b = $this->line_break; - $lb = strlen($b); - for($multipart=0;$multipart<$parts;$multipart++) - { - if(strlen($body) >= $lb - && strcmp(substr($body, -$lb), $b)) - $body.=$b; - $body.=$boundary.$this->line_break; - $part_headers=array(); - $sub_part=$this->parts[$part]["PARTS"][$multipart]; - if(strlen($error=$this->GetPartHeaders($part_headers,$sub_part))) - return($error); - for($part_header=0,Reset($part_headers);$part_headerGetPartBody($part_body,$sub_part))) - return($error); - $body.=$part_body; - } - if(strlen($body) >= $lb - && strcmp(substr($body, -$lb), $b)) - $body.=$b; - $body.=$boundary."--".$b; - break; - default: - return($this->OutputError("multipart Content-Type sub_type $sub_type not yet supported")); - } - break; - default: - return($this->OutputError("Content-Type: $full_type not yet supported")); - } - if(IsSet($this->parts[$part]['Cache']) - && $this->parts[$part]['Cache']) - $this->parts[$part]['CachedBody'] = $body; - return(""); - } - - /* Public functions */ - -/* -{metadocument} - - ValidateEmailAddress - BOOLEAN - - Determine whether a given e-mail address may be - valid. - Just pass the e-mail - ValidateEmailAddress - address - to be checked as function argument. This function - uses the regular expression defined by the - email_regular_expression variable to - check the address. - The function returns - 1 if the specified address - may be valid. - - - address - STRING - - Specify the e-mail address to be validated. - - - -{/metadocument} -*/ - Function ValidateEmailAddress($address) - { - return(preg_match('/'.str_replace('/', '\\/', $this->email_regular_expression).'/i',$address)); - } -/* -{metadocument} - - -{/metadocument} -*/ - - Function EncodeCharacter($matches) - { - return sprintf('=%02X', Ord($matches[1])); - } - - Function QuotedPrintableEncode($text, $header_charset='', $break_lines=1, $email_header = 0) - { - $ln=strlen($text); - $h=(strlen($header_charset)>0); - if($h) - { - $encode = array( - '='=>1, - '?'=>1, - '_'=>1, - '('=>1, - ')'=>1, - '<'=>1, - '>'=>1, - '@'=>1, - ','=>1, - ';'=>1, - '"'=>1, - '\\'=>1, - '['=>1, - ']'=>1, - ':'=>1, -/* - '/'=>1, - '.'=>1, -*/ - ); - $s=($email_header ? $encode : array()); - $b=$space=$break_lines=0; - for($i=0; $i<$ln; ++$i) - { - $c = $text[$i]; - if(IsSet($s[$c])) - { - $b=1; - break; - } - switch($o=Ord($c)) - { - case 9: - case 32: - $space=$i+1; - $b=1; - break 2; - case 10: - case 13: - break 2; - default: - if($o<32 - || $o>127) - { - $b=1; - $s = $encode; - break 2; - } - } - } - if($i==$ln) - return($text); - if($space>0) - return(substr($text,0,$space).($space<$ln ? $this->QuotedPrintableEncode(substr($text,$space), $header_charset, $break_lines, $email_header) : "")); - } - elseif(function_exists('quoted_printable_encode')) - { - $different = strcmp($this->line_break, "\r\n"); - if($different) - $text = str_replace($this->line_break, "\r\n", str_replace("\r\n", $this->line_break, $text)); - $encoded = preg_replace_callback('/^(f|F|\\.)/m', array($this, 'EncodeCharacter'), quoted_printable_encode($text)); - if($different) - $encoded = str_replace("\r\n", $this->line_break, $encoded); - return $encoded; - } - for($w=$e='',$n=0, $l=0,$i=0;$i<$ln; ++$i) - { - $c = $text[$i]; - $o=Ord($c); - $en=0; - switch($o) - { - case 9: - case 32: - if(!$h) - { - $w=$c; - $c=''; - } - else - { - if($b) - { - if($o==32) - $c='_'; - else - $en=1; - } - } - break; - case 10: - case 13: - if(strlen($w)) - { - if($break_lines - && $l+3>75) - { - $e.='='.$this->line_break; - $l=0; - } - $e.=sprintf('=%02X',Ord($w)); - $l+=3; - $w=''; - } - $e.=$c; - if($h) - $e.="\t"; - $l=0; - continue 2; - case 46: - case 70: - case 102: - $en=(!$h && ($l==0 || $l+1>75)); - break; - default: - if($o>127 - || $o<32 - || !strcmp($c,'=')) - $en=1; - elseif($h - && IsSet($s[$c])) - $en=1; - break; - } - if(strlen($w)) - { - if($break_lines - && $l+1>75) - { - $e.='='.$this->line_break; - $l=0; - } - $e.=$w; - ++$l; - $w=''; - } - if(strlen($c)) - { - if($en) - { - $c=sprintf('=%02X',$o); - $el=3; - $n=1; - $b=1; - } - else - $el=1; - if($break_lines - && $l+$el>75) - { - $e.='='.$this->line_break; - $l=0; - } - $e.=$c; - $l+=$el; - } - } - if(strlen($w)) - { - if($break_lines - && $l+3>75) - $e.='='.$this->line_break; - $e.=sprintf('=%02X',Ord($w)); - } - if($h - && $n) - return('=?'.$header_charset.'?q?'.$e.'?='); - else - return($e); - } - -/* -{metadocument} - - WrapText - STRING - - Split a text in lines that do not exceed the length limit - avoiding to break it in the middle of any words. - Just pass the - WrapText - text - to be wrapped. - The wrapped text eventually broken in multiple lines - that do not exceed the line length limit. - - - text - STRING - - Text to be wrapped. - - - - line_length - INTEGER - 0 - - Line length limit. Pass a value different than - 0 to use a line length - limit other than the default of 75 characters. - - - - line_break - STRING - - - Character sequence that is used to break the lines longer - than the length limit. Pass a non-empty to use a line breaking - sequence other than the default - . - - - - line_prefix - STRING - - - Character sequence that is used to insert in the beginning - of all lines. - - - -{/metadocument} -*/ - Function WrapText($text,$line_length=0,$line_break="",$line_prefix="") - { - if(strlen($line_break)==0) - $line_break=$this->line_break; - if($line_length==0) - $line_length=$this->line_length; - $lines=explode("\n",str_replace("\r","\n",str_replace("\r\n","\n",$text))); - for($wrapped="",$line=0;$line$line_length;) - { - if(GetType($cut=strrpos(substr($text_line,0,$line_length)," "))!="integer" - || $cutbreak_long_lines) - { - $wrapped.=substr($text_line,0,$line_length).$line_break; - $cut=$line_length; - } - elseif(GetType($cut=strpos($text_line," ",$line_length))=="integer") - { - $wrapped.=substr($text_line, 0, $cut).$line_break; - ++$cut; - } - else - { - $wrapped.=$text_line.$line_break; - $cut=strlen($text_line); - } - } - else - { - $wrapped.=substr($text_line,0,$cut).$line_break; - ++$cut; - } - $text_line=substr($text_line,$cut); - } - } - $wrapped.=$text_line.$line_break; - } - return($wrapped); - } -/* -{metadocument} - - -{/metadocument} -*/ - -/* -{metadocument} - - CenterText - STRING - - Center a text in the middle of line. - Just pass the - CenterText - text - to be centered. - The centered text. - - - text - STRING - - Text to be centered. - - - - line_length - INTEGER - 0 - - Line length limit. Pass a value different than - 0 to use a line length - limit other than the default of 75 characters. - - - -{/metadocument} -*/ - Function CenterText($text, $line_length=0) - { - if($line_length==0) - $line_length=$this->line_length; - $length = strlen($text); - if($length<$line_length) - $text = str_repeat(' ', ($line_length-$length)/2).$text; - return($text); - } -/* -{metadocument} - - -{/metadocument} -*/ - -/* -{metadocument} - - Ruler - STRING - - Generate a line with characters that can be displayed as a - separator ruler in a text message. - The ruler line string. - - - line_length - INTEGER - 0 - - Line length limit. Pass a value different than - 0 to use a line length - limit other than the default of 75 characters. - - - -{/metadocument} -*/ - Function Ruler($line_length=0) - { - if($line_length==0) - $line_length=$this->line_length; - return(str_repeat($this->ruler, $line_length)); - } -/* -{metadocument} - - -{/metadocument} -*/ - -/* -{metadocument} - - QuoteText - STRING - - Mark a text block to appear like in reply messages composed - with common e-mail programs that include text from the original - message being replied. - Just pass the - QuoteText - text - to be marked as a quote. - The quoted text with all lines prefixed with a quote - prefix mark. - - - text - STRING - - Text to be quoted. - - - - quote_prefix - STRING - - - Character sequence that is inserted in the beginning of - all lines as a quote mark. Set to an empty string to tell the - function to use the default specified by the - line_quote_prefix variable. - - - -{/metadocument} -*/ - Function QuoteText($text,$quote_prefix="") - { - if(strlen($quote_prefix)==0) - $quote_prefix=$this->line_quote_prefix; - return($this->WrapText($text,$line_length=0,$line_break="",$quote_prefix)); - } -/* -{metadocument} - - -{/metadocument} -*/ - -/* -{metadocument} - - SetHeader - STRING - - Set the value of a message header. - Use this function to set the values of the headers of the - message that may be needed. There are some message headers that are - automatically set by the class when the message is sent. Others - must be defined before sending. Here follows the list of the names - of the headers that must be set before sending: - - Message subject - Subject - Sender address - From - Recipient addresses - To, Cc and - Bcc - Each of the recipient address headers may contain one or more - addresses. Multiple addresses must be separated by a comma and a - space. - Return path address - Return-Path - Optional header to specify the address where the message should be - bounced in case it is not possible to deliver it. - In reality this is a virtual header. This means that adding this - header to a message will not do anything by itself. However, this - class looks for this header to adjust the message delivery - procedure in such way that the Message Transfer Agent (MTA) system - is hinted to direct any bounced messages to the address specified - by this header. - Note that under some systems there is no way to set the return path - address programmatically. This is the case when using the PHP - mail() function under Windows where the return path - address should be set in the php.ini configuration - file. - Keep in mind that even when it is possible to set the return path - address, the systems of some e-mail account providers may ignore - this address and send bounced messages to the sender address. This - is a bug of those systems. There is nothing that can be done other - than complain. - An error message in case there was an error or an empty - string otherwise. This return value may be safely ignored if the - function parameters are set correctly. - - - header - STRING - - Name of the header. - - - - value - STRING - - Text value for the header. - - - - encoding_charset - STRING - - - Character set used in the header value. If it is set to an - empty string, it is assumed the character set defined by the - default_charset variable. - - - -{/metadocument} -*/ - Function SetHeader($header, $value, $encoding_charset="") - { - if(strlen($this->error)) - return($this->error); - $this->headers[strval($header)]=(!strcmp($encoding_charset,"") ? strval($value) : $this->QuotedPrintableEncode($value, $encoding_charset, 1, 0)); - return(""); - } -/* -{metadocument} - - -{/metadocument} -*/ - -/* -{metadocument} - - SetEncodedHeader - STRING - - The same as the SetHeader - function assuming the default character set specified by the - default_charset variable. - See the SetHeader function. - An error message in case there was an error or an empty - string otherwise. This return value may be safely ignored if the - function parameters are set correctly. - - - header - STRING - - Name of the header. - - - - value - STRING - - Text value for the header. - - - - encoding_charset - STRING - - - Character set used in the header value. If it is set to an - empty string, it is assumed the character set defined by the - default_charset variable. - - - -{/metadocument} -*/ - Function SetEncodedHeader($header,$value, $encoding_charset = '') - { - return($this->SetHeader($header,$value,strlen($encoding_charset) ? $encoding_charset : $this->default_charset)); - } -/* -{metadocument} - - -{/metadocument} -*/ - -/* -{metadocument} - - SetEncodedEmailHeader - STRING - - Set the value of an header that is meant to represent the - e-mail address of a person or entity with a known name. This is - meant mostly to set the From, To, Cc and - Bcc headers. - Use this function like the - SetHeader specifying the e-mail - - SetEncodedEmailHeader - address - as header value and also specifying the - - SetEncodedEmailHeader - name - of the known person or entity. - An error message in case there was an error or an empty - string otherwise. This return value may be safely ignored if the - function parameters are set correctly. - - - header - STRING - - Name of the header. - - - - address - STRING - - E-mail address value. - - - - name - STRING - - Person or entity name associated with the specified e-mail - address. - - - - encoding_charset - STRING - - - Character set used in the header value. If it is set to an - empty string, it is assumed the character set defined by the - default_charset variable. - - - -{/metadocument} -*/ - Function SetEncodedEmailHeader($header, $address, $name, $encoding_charset = '') - { - return($this->SetHeader($header,$this->QuotedPrintableEncode($name, strlen($encoding_charset) ? $encoding_charset : $this->default_charset, 1, 1).' <'.$address.'>')); - } -/* -{metadocument} - - -{/metadocument} -*/ - -/* -{metadocument} - - SetMultipleEncodedEmailHeader - STRING - - Set the value of an header that is meant to represent a list - of e-mail addresses of names of people or entities. This is meant - mostly to set the To, Cc and Bcc - headers. - Use this function specifying the - SetMultipleEncodedEmailHeader - header - and all the - SetMultipleEncodedEmailHeader - addresses - in an associative array that should have - the email addresses as entry indexes and the name of the respective - people or entities as entry values. - An error message in case there was an error or an empty - string otherwise. This return value may be safely ignored if the - function parameters are set correctly. -
$message_object->SetMultipleEncodedEmailHeader('Bcc', array(
-  'peter@gabriel.org' => 'Peter Gabriel',
-  'paul@simon.net' => 'Paul Simon',
-  'mary@chain.com' => 'Mary Chain'
-));
-
- - header - STRING - - Name of the header. - - - - addresses - HASH - - List of all email addresses and associated person or - entity names. - - - - encoding_charset - STRING - - - Character set used in the header value. If it is set to an - empty string, it is assumed the character set defined by the - default_charset variable. - - - -{/metadocument} -*/ - Function SetMultipleEncodedEmailHeader($header,$addresses, $encoding_charset = '') - { - Reset($addresses); - $end=(GetType($address=Key($addresses))!="string"); - for($value="";!$end;) - { - if(strlen($value)) - $value.=", "; - $value.=$this->QuotedPrintableEncode($addresses[$address], strlen($encoding_charset) ? $encoding_charset : $this->default_charset, 1, 1).' <'.$address.'>'; - Next($addresses); - $end=(GetType($address=Key($addresses))!="string"); - } - return($this->SetHeader($header,$value)); - } -/* -{metadocument} - -
-{/metadocument} -*/ - -/* -{metadocument} - - ResetMessage - VOID - - Restore the content of the message to the initial state when - the class object is created, i.e. without any headers or body - parts. - Use this function if you want to start composing a completely - new message. - - -{/metadocument} -*/ - Function ResetMessage() - { - $this->headers=array(); - $this->body=-1; - $this->body_parts=0; - $this->parts=array(); - $this->total_parts=0; - $this->free_parts=array(); - $this->total_free_parts=0; - $this->delivery=array("State"=>""); - $this->error=""; - } -/* -{metadocument} - - -{/metadocument} -*/ - - Function CreatePart(&$definition,&$part) - { - $part=-1; - if(strlen($this->error)) - return($this->error); - if($this->total_free_parts) - { - $this->total_free_parts--; - $part=$this->free_parts[$this->total_free_parts]; - Unset($this->free_parts[$this->total_free_parts]); - } - else - { - $part=$this->total_parts; - ++$this->total_parts; - } - $this->parts[$part]=$definition; - return(""); - } - -/* -{metadocument} - - AddPart - STRING - - Add a previously created part to the message. - Use any of the functions to create standalone message parts - and then use this function to add them to the message. - An error message in case there was an error or an empty - string otherwise. This return value may be safely ignored if the - function parameters are set correctly. - - - part - INTEGER - - Number of the part as returned by the function that - originally created it. - - - -{/metadocument} -*/ - Function AddPart($part) - { - if(strlen($this->error)) - return($this->error); - switch($this->body_parts) - { - case 0; - $this->body=$part; - break; - case 1: - $parts=array( - $this->body, - $part - ); - if(strlen($error=$this->CreateMixedMultipart($parts,$body))) - return($error); - $this->body=$body; - break; - default: - $this->parts[$this->body]["PARTS"][]=$part; - break; - } - ++$this->body_parts; - return(""); - } -/* -{metadocument} - - -{/metadocument} -*/ - -/* -{metadocument} - - ReplacePart - STRING - - Replace a message part already added to the message with a - newly created part. The replaced part gets the definition of the - replacing part. The replacing part is discarded and its part number - becomes free for creation of a new part. - Use one of the functions to create message parts and then pass - the returned part numbers to this function. - An error message in case there was an error or an empty - string otherwise. This return value may be safely ignored if the - function parameters are set correctly. - - - old_part - INTEGER - - Number of the previously added part. - - - - new_part - INTEGER - - Number of the replacing part. - - - -{/metadocument} -*/ - Function ReplacePart($old_part,$new_part) - { - if(strlen($this->error)) - return($this->error); - if(!IsSet($this->parts[$old_part])) - return($this->error="it was attempted to replace an invalid message part"); - if(IsSet($this->parts[$old_part]["FREE"])) - return($this->error="it was attempted to replace a message part that is no longer valid"); - if(!IsSet($this->parts[$new_part])) - return($this->error="it was attempted to use an invalid message replacecement part"); - if(IsSet($this->parts[$new_part]["FREE"])) - return($this->error="it was attempted to use a message replacecement part that is no longer valid"); - $this->parts[$old_part]=$this->parts[$new_part]; - $this->parts[$new_part]=array("FREE"=>1); - $this->free_parts[$this->total_free_parts]=$new_part; - ++$this->total_free_parts; - return(""); - } -/* -{metadocument} - - -{/metadocument} -*/ - - Function CreateAndAddPart(&$definition) - { - if(strlen($error=$this->CreatePart($definition,$part)) - || strlen($error=$this->AddPart($part))) - return($error); - return(""); - } - -/* -{metadocument} - - CreatePlainTextPart - STRING - - Create a plain text message part. - Pass an ASCII (7 bits) - CreatePlainTextPart - text - string and get the created part number in the - - CreatePlainTextPart - part - that is returned by reference. - An error message in case there was an error or an empty - string otherwise. This return value may be safely ignored if the - function parameters are set correctly. - - - text - STRING - - Text of the message part to create. - - - - charset - STRING - - Character set used in the part text. If it is set to an - empty string, it is assumed the character set defined by the - default_charset variable. - - - - part - INTEGER - - - Number of the created part that is returned by reference. - - - -{/metadocument} -*/ - Function CreatePlainTextPart($text,$charset,&$part) - { - if(!strcmp($charset,"")) - $charset=$this->default_charset; - $definition=array( - "Content-Type"=>"text/plain", - "DATA"=>$text - ); - if(strcmp(strtoupper($charset),"ASCII")) - $definition["CHARSET"]=$charset; - return($this->CreatePart($definition,$part)); - } -/* -{metadocument} - - -{/metadocument} -*/ - -/* -{metadocument} - - AddPlainTextPart - STRING - - Add a plain text part to the message. - Pass an ASCII (7 bits) - AddPlainTextPart - text - string. - An error message in case there was an error or an empty - string otherwise. This return value may be safely ignored if the - function parameters are set correctly. - - - text - STRING - - Text of the message part to add. - - - - charset - STRING - - - Character set used in the part text. If it is set to an - empty string, it is assumed the character set defined by the - default_charset variable. - - - -{/metadocument} -*/ - Function AddPlainTextPart($text,$charset="") - { - if(strlen($error=$this->CreatePlainTextPart($text,$charset,$part)) - || strlen($error=$this->AddPart($part))) - return($error); - return(""); - } -/* -{metadocument} - - -{/metadocument} -*/ - - Function CreateEncodedQuotedPrintableTextPart($text,$charset,&$part) - { - if(!strcmp($charset,"")) - $charset=$this->default_charset; - $definition=array( - "Content-Type"=>"text/plain", - "Content-Transfer-Encoding"=>"quoted-printable", - "CHARSET"=>$charset, - "DATA"=>$text - ); - return($this->CreatePart($definition,$part)); - } - - Function AddEncodedQuotedPrintableTextPart($text,$charset="") - { - if(strlen($error=$this->CreateEncodedQuotedPrintableTextPart($text,$charset,$part)) - || strlen($error=$this->AddPart($part))) - return($error); - return(""); - } - -/* -{metadocument} - - CreateQuotedPrintableTextPart - STRING - - Create a text message part that may contain non-ASCII - characters (8 bits or more). - Pass a - CreateQuotedPrintableTextPart - text - string and get the created part number in the - - CreateQuotedPrintableTextPart - part - that is returned by reference. - An error message in case there was an error or an empty - string otherwise. This return value may be safely ignored if the - function parameters are set correctly. - - - text - STRING - - Text of the message part to create. - - - - charset - STRING - - Character set used in the part text. If it is set to an - empty string, it is assumed the character set defined by the - default_charset variable. - - - - part - INTEGER - - - Number of the created part that is returned by reference. - - - -{/metadocument} -*/ - Function CreateQuotedPrintableTextPart($text,$charset,&$part) - { - return($this->CreateEncodedQuotedPrintableTextPart($this->QuotedPrintableEncode($text),$charset,$part)); - } -/* -{metadocument} - - -{/metadocument} -*/ - -/* -{metadocument} - - AddQuotedPrintableTextPart - STRING - - Add a text part to the message that may contain non-ASCII - characters (8 bits or more). - Pass a - AddQuotedPrintableTextPart - text - string. - An error message in case there was an error or an empty - string otherwise. This return value may be safely ignored if the - function parameters are set correctly. - - - text - STRING - - Text of the message part to create. - - - - charset - STRING - - - Character set used in the part text. If it is set to an - empty string, it is assumed the character set defined by the - default_charset variable. - - - -{/metadocument} -*/ - Function AddQuotedPrintableTextPart($text,$charset="") - { - return($this->AddEncodedQuotedPrintableTextPart($this->QuotedPrintableEncode($text),$charset)); - } -/* -{metadocument} - - -{/metadocument} -*/ - -/* -{metadocument} - - CreateHTMLPart - STRING - - Create an HTML message part only with ASCII characters (7 bit). - Pass an ASCII (7 bits) - CreateHTMLPart - html - text string and get the created part number in the - - CreateHTMLPart - part - that is returned by reference. - An error message in case there was an error or an empty - string otherwise. This return value may be safely ignored if the - function parameters are set correctly. - - - html - STRING - - HTML of the message part to create. - - - - charset - STRING - - Character set used in the part text. If it is set to an - empty string, it is assumed the character set defined by the - default_charset variable. - - - - part - INTEGER - - - Number of the created part that is returned by reference. - - - -{/metadocument} -*/ - Function CreateHTMLPart($html,$charset,&$part) - { - if(!strcmp($charset,"")) - $charset=$this->default_charset; - $definition=array( - "Content-Type"=>"text/html", - "CHARSET"=>$charset, - "DATA"=>$html - ); - return($this->CreatePart($definition,$part)); - } -/* -{metadocument} - - -{/metadocument} -*/ - -/* -{metadocument} - - AddHTMLPart - STRING - - Add an HTML part to the message only with ASCII characters. - Pass an - AddHTMLPart - html - text string. - An error message in case there was an error or an empty - string otherwise. This return value may be safely ignored if the - function parameters are set correctly. - - - html - STRING - - HTML of the message part to create. - - - - charset - STRING - - - Character set used in the part text. If it is set to an - empty string, it is assumed the character set defined by the - default_charset variable. - - - -{/metadocument} -*/ - Function AddHTMLPart($html,$charset="") - { - if(strlen($error=$this->CreateHTMLPart($html,$charset,$part)) - || strlen($error=$this->AddPart($part))) - return($error); - return(""); - } -/* -{metadocument} - - -{/metadocument} -*/ - - Function CreateEncodedQuotedPrintableHTMLPart($html,$charset,&$part) - { - if(!strcmp($charset,"")) - $charset=$this->default_charset; - $definition=array( - "Content-Type"=>"text/html", - "Content-Transfer-Encoding"=>"quoted-printable", - "CHARSET"=>$charset, - "DATA"=>$html - ); - return($this->CreatePart($definition,$part)); - } - - Function AddEncodedQuotedPrintableHTMLPart($html,$charset="") - { - if(strlen($error=$this->CreateEncodedQuotedPrintableHTMLPart($html,$charset,$part)) - || strlen($error=$this->AddPart($part))) - return($error); - return(""); - } - -/* -{metadocument} - - CreateQuotedPrintableHTMLPart - STRING - - Create an HTML message part that may contain non-ASCII - characters (8 bits or more). - Pass a - CreateQuotedPrintableHTMLPart - html - text string and get the created part number in the - - CreateQuotedPrintableHTMLPart - part - that is returned by reference. - An error message in case there was an error or an empty - string otherwise. This return value may be safely ignored if the - function parameters are set correctly. - - - html - STRING - - HTML of the message part to create. - - - - charset - STRING - - Character set used in the part text. If it is set to an - empty string, it is assumed the character set defined by the - default_charset variable. - - - - part - INTEGER - - - Number of the created part that is returned by reference. - - - -{/metadocument} -*/ - Function CreateQuotedPrintableHTMLPart($html,$charset,&$part) - { - return($this->CreateEncodedQuotedPrintableHTMLPart($this->QuotedPrintableEncode($html),$charset,$part)); - } -/* -{metadocument} - - -{/metadocument} -*/ - - -/* -{metadocument} - - AddQuotedPrintableHTMLPart - STRING - - Add an HTML part to the message that may contain non-ASCII - characters (8 bits or more). - Pass a - AddQuotedPrintableHTMLPart - html - text string. - An error message in case there was an error or an empty - string otherwise. This return value may be safely ignored if the - function parameters are set correctly. - - - html - STRING - - HTML of the message part to create. - - - - charset - STRING - - - Character set used in the part text. If it is set to an - empty string, it is assumed the character set defined by the - default_charset variable. - - - -{/metadocument} -*/ - Function AddQuotedPrintableHTMLPart($html,$charset="") - { - return($this->AddEncodedQuotedPrintableHTMLPart($this->QuotedPrintableEncode($html),$charset)); - } -/* -{metadocument} - - -{/metadocument} -*/ - - Function GetFileDefinition($file, &$definition, $require_name=1) - { - if(strlen($this->error)) - return($this->error); - $name=""; - if(IsSet($file["FileName"])) - $name=basename($file["FileName"]); - else - { - if(!IsSet($file["Data"])) - return($this->OutputError("it was not specified the file part file name")); - } - if(IsSet($file["Name"])) - $name=$file["Name"]; - if($require_name - && strlen($name)==0) - return($this->OutputError("it was not specified the file part name")); - $encoding="base64"; - if(IsSet($file["Content-Type"])) - { - $content_type=$file["Content-Type"]; - $type=$this->Tokenize(strtolower($content_type),"/"); - $sub_type=$this->Tokenize(""); - switch($type) - { - case "text": - case "image": - case "audio": - case "video": - case "application": - break; - case "message": - $encoding="7bit"; - break; - case "automatic": - switch($sub_type) - { - case "name": - if(strlen($name)==0) - return($this->OutputError("it is not possible to determine content type from the name")); - switch(strtolower($this->GetFilenameExtension($name))) - { - case ".xls": - $content_type="application/excel"; - break; - case ".hqx": - $content_type="application/macbinhex40"; - break; - case ".doc": - case ".dot": - case ".wrd": - $content_type="application/msword"; - break; - case ".pdf": - $content_type="application/pdf"; - break; - case ".pgp": - $content_type="application/pgp"; - break; - case ".ps": - case ".eps": - case ".ai": - $content_type="application/postscript"; - break; - case ".ppt": - $content_type="application/powerpoint"; - break; - case ".rtf": - $content_type="application/rtf"; - break; - case ".tgz": - case ".gtar": - $content_type="application/x-gtar"; - break; - case ".gz": - $content_type="application/x-gzip"; - break; - case ".php": - case ".php3": - $content_type="application/x-httpd-php"; - break; - case ".js": - $content_type="application/x-javascript"; - break; - case ".ppd": - case ".psd": - $content_type="application/x-photoshop"; - break; - case ".swf": - case ".swc": - case ".rf": - $content_type="application/x-shockwave-flash"; - break; - case ".tar": - $content_type="application/x-tar"; - break; - case ".zip": - $content_type="application/zip"; - break; - case ".mid": - case ".midi": - case ".kar": - $content_type="audio/midi"; - break; - case ".mp2": - case ".mp3": - case ".mpga": - $content_type="audio/mpeg"; - break; - case ".ra": - $content_type="audio/x-realaudio"; - break; - case ".wav": - $content_type="audio/wav"; - break; - case ".bmp": - $content_type="image/bitmap"; - break; - case ".gif": - $content_type="image/gif"; - break; - case ".iff": - $content_type="image/iff"; - break; - case ".jb2": - $content_type="image/jb2"; - break; - case ".jpg": - case ".jpe": - case ".jpeg": - $content_type="image/jpeg"; - break; - case ".jpx": - $content_type="image/jpx"; - break; - case ".png": - $content_type="image/png"; - break; - case ".tif": - case ".tiff": - $content_type="image/tiff"; - break; - case ".wbmp": - $content_type="image/vnd.wap.wbmp"; - break; - case ".xbm": - $content_type="image/xbm"; - break; - case ".css": - $content_type="text/css"; - break; - case ".txt": - $content_type="text/plain"; - break; - case ".htm": - case ".html": - $content_type="text/html"; - break; - case ".xml": - $content_type="text/xml"; - break; - case ".mpg": - case ".mpe": - case ".mpeg": - $content_type="video/mpeg"; - break; - case ".qt": - case ".mov": - $content_type="video/quicktime"; - break; - case ".avi": - $content_type="video/x-ms-video"; - break; - case ".eml": - $content_type="message/rfc822"; - $encoding="7bit"; - break; - default: - $content_type="application/octet-stream"; - break; - } - break; - default: - return($this->OutputError($content_type." is not a supported automatic content type detection method")); - } - break; - default: - return($this->OutputError($content_type." is not a supported file content type")); - } - } - else - $content_type="application/octet-stream"; - $definition=array( - "Content-Type"=>$content_type, - "Content-Transfer-Encoding"=>$encoding, - "NAME"=>$name - ); - if(IsSet($file["Disposition"])) - { - switch(strtolower($file["Disposition"])) - { - case "inline": - case "attachment": - break; - default: - return($this->OutputError($file["Disposition"]." is not a supported message part content disposition")); - } - $definition["DISPOSITION"]=$file["Disposition"]; - } - if(IsSet($file["FileName"])) - $definition["FILENAME"]=$file["FileName"]; - else - { - if(IsSet($file["Data"])) - $definition["DATA"]=$file["Data"]; - } - if(IsSet($file['Cache']) - && $file['Cache']) - $definition['Cache'] = 1; - return(""); - } - -/* -{metadocument} - - CreateFilePart - STRING - - Create a message part to be handled as a file. - Pass a - CreateFilePart - file - definition associative array and get the created - part number in the - CreateFilePart - part - that is returned by reference. - An error message in case there was an error or an empty - string otherwise. This return value may be safely ignored if the - function parameters are set correctly. - - - file - HASH - - Associative array to specify parameters that describe the - file part. Here follows the list of supported parameters that - should be used as indexes of the array: - FileName - Name of the file from which the part data will be read when the - message is generated. It may be a remote URL as long as your PHP - installation is configured to allow accessing remote files with - the fopen() function. - Data - String that specifies the data of the file. This should be used - as alternative data source to FileName for passing data - available in memory, like for instance files stored in a database - that was queried dynamically and the file contents was fetched - into a string variable. - Name - Name of the file that will appear in the message. If this - parameter is missing the base name of the FileName - parameter is used, if present. - Content-Type - Content type of the part: text/plain for text, - text/html for HTML, image/gif for GIF images, - etc.. - There is one special type named automatic/name that may - be used to tell the class to try to guess the content type from - the file name. Many file types are recognized from the file name - extension. If the file name extension is not recognized, the - default for binary data application/octet-stream is - assumed. - Disposition - Information to whether this file part is meant to be used as a - file attachment or as a part meant to be displayed - inline, eventually integrated with another related - part. - Cache - Boolean flag that indicates that this message part should be - cached when generating the message body. Use only when sending - many messages to multiple recipients, but this part does not - change between each of the messages that are sent. - Note that it is also not worth using this option when setting the - cache_body, as that variable makes - the class cache the whole message body and the internal message - parts will not be rebuilt. - - - - part - INTEGER - - - Number of the created part that is returned by reference. - - - -{/metadocument} -*/ - Function CreateFilePart(&$file,&$part) - { - if(strlen($this->GetFileDefinition($file,$definition))) - return($this->error); - return($this->CreatePart($definition,$part)); - } -/* -{metadocument} - - -{/metadocument} -*/ - -/* -{metadocument} - - AddFilePart - STRING - - Add a message part to be handled as a file. - Pass a - AddFilePart - file - definition associative array. - An error message in case there was an error or an empty - string otherwise. This return value may be safely ignored if the - function parameters are set correctly. - - - file - HASH - - Associative array to specify parameters that describe the - file part. See the - CreateFilePart - file - argument description of the - CreateFilePart function for an - explanation about the supported file parameters. - - - -{/metadocument} -*/ - Function AddFilePart(&$file) - { - if(strlen($error=$this->CreateFilePart($file,$part)) - || strlen($error=$this->AddPart($part))) - return($error); - return(""); - } -/* -{metadocument} - - -{/metadocument} -*/ - -/* -{metadocument} - - CreateMessagePart - STRING - - Create a message part to encapsulate another message. This - is usually meant to create an attachment that contains a message - that was received and is being forwarded intact with the original - the headers and body data. - This function should be used like the - CreateFilePart function, passing the - same parameters to the - CreateMessagePart - message - argument. - The message to be encapsulated can be specified either as an - existing file with the FileName parameter, or as string - of data in memory with the Data - parameter. - The Content-Type and Disposition file parameters - do not need to be specified because they are overridden by this - function. - An error message in case there was an error or an empty - string otherwise. This return value may be safely ignored if the - function parameters are set correctly. - - - message - HASH - - Associative array that specifies definition parameters of - the message file part. - - - - part - INTEGER - - - Number of the created part that is returned by reference. - - - -{/metadocument} -*/ - Function CreateMessagePart(&$message,&$part) - { - $message["Content-Type"]="message/rfc822"; - $message["Disposition"]="inline"; - if(strlen($this->GetFileDefinition($message,$definition))) - return($this->error); - return($this->CreatePart($definition,$part)); - } -/* -{metadocument} - - -{/metadocument} -*/ - -/* -{metadocument} - - AddMessagePart - STRING - - Add a message part that encapsulates another message. This - is usually meant to add an attachment that contains a message that - was received and is being forwarded intact with the original the - headers and body data. - This function should be used like the - AddFilePart function, passing the - same parameters to the - AddMessagePart - message - argument. See the - CreateFilePart function for more - details. - An error message in case there was an error or an empty - string otherwise. This return value may be safely ignored if the - function parameters are set correctly. - - - message - HASH - - Associative array that specifies definition parameters of - the message file part. - - - -{/metadocument} -*/ - Function AddMessagePart(&$message) - { - if(strlen($error=$this->CreateMessagePart($message,$part)) - || strlen($error=$this->AddPart($part))) - return($error); - return(""); - } -/* -{metadocument} - - -{/metadocument} -*/ - - Function CreateMultipart(&$parts,&$part,$type) - { - $definition=array( - "Content-Type"=>"multipart/".$type, - "PARTS"=>$parts - ); - return($this->CreatePart($definition,$part)); - } - - Function AddMultipart(&$parts,$type) - { - if(strlen($error=$this->CreateMultipart($parts,$part,$type)) - || strlen($error=$this->AddPart($part))) - return($error); - return(""); - } - -/* -{metadocument} - - CreateAlternativeMultipart - STRING - - Create a message part composed of multiple parts that can be - displayed by the recipient e-mail program in alternative - formats. - This is usually meant to create HTML messages with an alternative - text part to be displayed by programs that cannot display HTML - messages. - Create all the alternative message parts that are going to be - sent and pass their numbers to the - CreateAlternativeMultipart - parts - array argument. - The least sophisticated part, usually the text part, should appear - first in the parts array because the e-mail programs that support - displaying more sophisticated message parts will pick the last part - in the message that is supported. - An error message in case there was an error or an empty - string otherwise. This return value may be safely ignored if the - function parameters are set correctly. - - - parts - ARRAY - - Array with the numbers with all the alternative parts. - - - - part - INTEGER - - - Number of the created part that is returned by reference. - - - -{/metadocument} -*/ - Function CreateAlternativeMultipart(&$parts,&$part) - { - return($this->CreateMultiPart($parts,$part,"alternative")); - } -/* -{metadocument} - - -{/metadocument} -*/ - -/* -{metadocument} - - AddAlternativeMultipart - STRING - - Add a message part composed of multiple parts that can be - displayed by the recipient e-mail program in alternative - formats. - This is usually meant to create HTML messages with an alternative - text part to be displayed by programs that cannot display HTML - messages. - Create all the alternative message parts that are going to be - sent and pass their numbers to the - AddAlternativeMultipart - parts - array argument. - The least sophisticated part, usually the text part, should appear - first in the parts array because the e-mail programs that support - displaying more sophisticated message parts will pick the last part - in the message that is supported. - An error message in case there was an error or an empty - string otherwise. This return value may be safely ignored if the - function parameters are set correctly. - - - parts - ARRAY - - Array with the numbers with all the alternative parts. - - - -{/metadocument} -*/ - Function AddAlternativeMultipart(&$parts) - { - return($this->AddMultipart($parts,"alternative")); - } -/* -{metadocument} - - -{/metadocument} -*/ - -/* -{metadocument} - - CreateRelatedMultipart - STRING - - Create a message part that groups several related - parts. - This is usually meant to group an HTML message part with images or - other types of files that should be embedded in the same message - and be displayed as a single part by the recipient e-mail - program. - Create all the related message parts that are going to be - sent and pass their numbers to the - CreateRelatedMultipart - parts - array argument. - When using this function to group an HTML message with embedded - images or other related files, make sure that the HTML part number - is the first listed in the - CreateRelatedMultipart - parts - array argument, or else the message may not appear - correctly. - An error message in case there was an error or an empty - string otherwise. This return value may be safely ignored if the - function parameters are set correctly. - - - parts - ARRAY - - Array with the numbers with all the related parts. - - - - part - INTEGER - - - Number of the created part that is returned by reference. - - - -{/metadocument} -*/ - Function CreateRelatedMultipart(&$parts,&$part) - { - return($this->CreateMultipart($parts,$part,"related")); - } -/* -{metadocument} - - -{/metadocument} -*/ - -/* -{metadocument} - - AddRelatedMultipart - STRING - - Add a message part that groups several related - parts. - This is usually meant to group an HTML message part with images or - other types of files that should be embedded in the same message - and be displayed as a single part by the recipient e-mail - program. - Create all the related message parts that are going to be - sent and pass their numbers to the - AddRelatedMultipart - parts - array argument. - When using this function to group an HTML message with embedded - images or other related files, make sure that the HTML part number - is the first listed in the - AddRelatedMultipart - parts - array argument, or else the message may not appear - correctly. - An error message in case there was an error or an empty - string otherwise. This return value may be safely ignored if the - function parameters are set correctly. - - - parts - ARRAY - - Array with the numbers with all the related parts. - - - -{/metadocument} -*/ - Function AddRelatedMultipart(&$parts) - { - return($this->AddMultipart($parts,"related")); - } -/* -{metadocument} - - -{/metadocument} -*/ - -/* -{metadocument} - - CreateMixedMultipart - STRING - - Create a message part that groups several independent - parts. - Usually this is meant compose messages with one or more file - attachments. However, it is not necessary to use this function as - the class implicitly creates a multipart/mixed message - when more than one part is added to the message. - Create all the independent message parts that are going to be - sent and pass their numbers to the - CreateMixedMultipart - parts - array argument. - An error message in case there was an error or an empty - string otherwise. This return value may be safely ignored if the - function parameters are set correctly. - - - parts - ARRAY - - Array with the numbers with all the related parts. - - - - part - INTEGER - - - Number of the created part that is returned by reference. - - - -{/metadocument} -*/ - Function CreateMixedMultipart(&$parts,&$part) - { - return($this->CreateMultipart($parts,$part,"mixed")); - } -/* -{metadocument} - - -{/metadocument} -*/ - -/* -{metadocument} - - AddMixedMultipart - STRING - - Add a message part that groups several independent - parts. - Usually this is meant compose messages with one or more file - attachments. However, it is not necessary to use this function as - the class implicitly creates a multipart/mixed message - when more than one part is added to the message. - Create all the independent message parts that are going to be - sent and pass their numbers to the - AddMixedMultipart - parts - array argument. - An error message in case there was an error or an empty - string otherwise. This return value may be safely ignored if the - function parameters are set correctly. - - - parts - ARRAY - - Array with the numbers with all the related parts. - - - -{/metadocument} -*/ - Function AddMixedMultipart(&$parts) - { - return($this->AddMultipart($parts,"mixed")); - } -/* -{metadocument} - - -{/metadocument} -*/ - - Function CreateParallelMultipart(&$parts,&$part) - { - return($this->CreateMultipart($parts,$part,"paralell")); - } - - Function AddParalellMultipart(&$parts) - { - return($this->AddMultipart($parts,"paralell")); - } - -/* -{metadocument} - - GetPartContentID - STRING - - Retrieve the content identifier associated to a given - message part. - Create a message part and pass its number to the - GetPartContentID - part - argument. - This function is usually meant to create an URL that can be used - in an HTML message part to reference related parts like images, CSS - (Cascaded Style Sheets), or any other type of files related to the - HTML part that are embedded in the same message as part of a - multipart/related composite part. - To use the part content identifier returned by this function you - need to prepend the string cid: - to form a special URL that can be used in the HTML document this - part file. - You may read more about using this function in the class usage - section about - embedding images in HTML messages - embed-image - . - The content identifier text string. - If it is specified an invalid message part, this function returns - an empty string. - - - part - INTEGER - - Number of the part as returned by the function that - originally created it. - - - -{/metadocument} -*/ - Function GetPartContentID($part) - { - if(!IsSet($this->parts[$part])) - return(""); - if(!IsSet($this->parts[$part]["Content-ID"])) - { - $extension=(IsSet($this->parts[$part]["NAME"]) ? $this->GetFilenameExtension($this->parts[$part]["NAME"]) : ""); - $this->parts[$part]["Content-ID"]=md5(uniqid($part.time())).$extension; - } - return($this->parts[$part]["Content-ID"]); - } -/* -{metadocument} - - -{/metadocument} -*/ - -/* -{metadocument} - - GetDataURL - STRING - - Generate a data: URL according to the - RFC 2397 - http://www.ietf.org/rfc/rfc2397.txt - suitable for using in HTML messages to represent an image - or other type of file on which the data is directly embedded in the - HTML code instead of being fetched from a separate file or remote - URL. - Note that not all e-mail programs are capable of displaying images - or other types of files embedded in HTML messages this way. - Pass a - GetDataURL - file - part definition array like for the - CreateFilePart function. - The data: representing the described file or an - empty string in case there was an error. - - - file - HASH - - File definition. - - - -{/metadocument} -*/ - Function GetDataURL($file) - { - if(strlen($this->GetFileDefinition($file,$definition,0))) - return($this->error); - if(IsSet($definition["FILENAME"])) - { - $size=@filesize($definition["FILENAME"]); - if(!($file=@fopen($definition["FILENAME"],"rb"))) - return($this->OutputPHPError("could not open data file ".$definition["FILENAME"], $php_errormsg)); - for($body="";!feof($file);) - { - if(GetType($block=@fread($file,$this->file_buffer_length))!="string") - { - $this->OutputPHPError("could not read data file", $php_errormsg); - fclose($file); - return(""); - } - $body.=$block; - } - fclose($file); - if(GetType($size)=="integer" - && strlen($body)!=$size) - { - $this->OutputError("the length of the file that was read does not match the size of the part file ".$definition["FILENAME"]." due to possible data corruption"); - return(""); - } - if(function_exists("ini_get") - && ini_get("magic_quotes_runtime")) - $body=StripSlashes($body); - $body=chunk_split(base64_encode($body), $this->line_length, $this->line_break); - } - else - { - if(!IsSet($definition["DATA"])) - { - $this->OutputError("it was not specified a file or data block"); - return(""); - } - $body=chunk_split(base64_encode($definition["DATA"]), $this->line_length, $this->line_break); - } - return("data:".$definition["Content-Type"].";base64,".$body); - } -/* -{metadocument} - - -{/metadocument} -*/ - - Function GetHeadersAndBody(&$headers, &$body) - { - $headers=$this->headers; - if(strcmp($this->mailer,"")) - { - $headers["X-Mailer"]=$this->mailer; - if(strlen($this->mailer_delivery)) - $headers["X-Mailer"].=' ('.$this->mailer_delivery.')'; - } - $headers["MIME-Version"]="1.0"; - if($this->body_parts==0) - return($this->OutputError("message has no body parts")); - if(strlen($error=$this->GetPartHeaders($headers,$this->body))) - return($error); - if($this->cache_body - && IsSet($this->body_cache[$this->body])) - $body=$this->body_cache[$this->body]; - else - { - if(strlen($error=$this->GetPartBody($body,$this->body))) - return($error); - if($this->cache_body) - $this->body_cache[$this->body]=$body; - } - return(""); - } - -/* -{metadocument} - - Send - STRING - - Send a composed message. - Use this function after you have set the necessary message - headers and added the message body parts. - An error message in case there was an error or an empty - string otherwise. This return value may be safely ignored if the - function parameters are set correctly. - - -{/metadocument} -*/ - Function Send() - { - if(strlen($this->error)) - return($this->error); - if(strlen($error=$this->GetHeadersAndBody($headers, $body))) - return($error); - if(strcmp($error=$this->StartSendingMessage(),"")) - return($error); - if(strlen($error=$this->SendMessageHeaders($headers))==0 - && strlen($error=$this->SendMessageBody($body))==0) - $error=$this->EndSendingMessage(); - $this->StopSendingMessage(); - return($error); - } -/* -{metadocument} - - -{/metadocument} -*/ - -/* -{metadocument} - - GetMessage - STRING - - Get the whole message headers and body. - Use this function to retrieve the message headers and body - without sending it. - An error message in case there was an error or an empty - string otherwise. This return value may be safely ignored if the - function parameters are set correctly. - - - message - STRING - - - Reference to a string variable to store the text of the - message headers and body. - - - -{/metadocument} -*/ - Function GetMessage(&$message) - { - if(strlen($this->error)) - return($this->error); - if(strlen($error=$this->GetHeadersAndBody($headers, $body))) - return($error); - for($message="", $h=0, Reset($headers); $hline_break; - } - $message.=$this->line_break; - $message.=$body; - return(""); - } -/* -{metadocument} - - -{/metadocument} -*/ - -/* -{metadocument} - - GetMessageSize - STRING - - Get the size of the whole message headers and body. - Use this function to retrieve the size in bytes of the - message headers and body without sending it. - An error message in case there was an error or an empty - string otherwise. This return value may be safely ignored if the - function parameters are set correctly. - - - message - STRING - - - Reference to an integer variable to store the size of the - message headers and body. - - - -{/metadocument} -*/ - Function GetMessageSize(&$size) - { - if(strlen($error=$this->GetMessage($message))) - return($error); - $size=strlen($message); - return(""); - } -/* -{metadocument} - - -{/metadocument} -*/ - -/* -{metadocument} - - Mail - BOOLEAN - - Emulate the PHP mail() function by composing and - sending a message given the same arguments. - This is mostly meant to provide a solution for sending messages - with alternative delivery methods provided by this class - sub-classes. It uses the same arguments as the PHP mail() - function. Developers willing to use this alternative do not need to - change much their scripts that already use the mail() - function. - Use this function passing the same arguments as to PHP - - mail() - http://www.php.net/manual/en/function.mail.php - function. - If this function succeeds, it returns - 1. - - - to - STRING - - Recipient e-mail address. - - - - subject - STRING - - Message subject. - - - - message - STRING - - Message body. - - - - additional_headers - STRING - - - Text string headers and the respective values. There - should be one header and value per line with line breaks - separating each line. - - - - additional_parameters - STRING - - - Text string with additional parameters. In the original - PHP mail() function these were actual switches to be - passed in the sendmail program invocation command line. This - function only supports the -f switch followed by an - e-mail address meant to specify the message bounce return path - address. - - - -{/metadocument} -*/ - Function Mail($to, $subject, $message, $additional_headers="", $additional_parameters="") - { - $this->ResetMessage(); - $this->headers=array("To"=>$to,"Subject"=>$subject); - $content_type=""; - while(strlen($additional_headers)) - { - preg_match("/([^\r\n]+)(\r?\n)?(.*)\$/",$additional_headers,$matches); - $header=$matches[1]; - $additional_headers=$matches[3]; - if(!preg_match("/^([^:]+):[ \t]+(.+)\$/",$header,$matches)) - { - $this->error="invalid header \"$header\""; - return(0); - } - if(strtolower($matches[1])=="content-type") - { - if(strlen($content_type)) - { - $this->error="the content-type header was specified more than once."; - return(0); - } - $content_type=$matches[2]; - } - else - $this->SetHeader($matches[1],$matches[2]); - } - if(strlen($additional_parameters)) - { - if(preg_match("/^[ \t]*-f[ \t]*([^@]+@[^ \t]+)[ \t]*(.*)\$/", $additional_parameters, $matches)) - { - if(!preg_match('/'.str_replace('/', '\\/', $this->email_regular_expression).'/i', $matches[1])) - { - $this->error="it was specified an invalid e-mail address for the additional parameter -f"; - return(0); - } - if(strlen($matches[2])) - { - $this->error="it were specified some additional parameters after -f e-mail address parameter that are not supported"; - return(0); - } - $this->SetHeader("Return-Path",$matches[1]); - } - else - { - $this->error="the additional parameters that were specified are not supported"; - return(0); - } - } - if(strlen($content_type)==0) - $content_type="text/plain"; - $definition=array( - "Content-Type"=>$content_type, - "DATA"=>$message - ); - $this->CreateAndAddPart($definition); - $this->Send(); - return(strlen($this->error)==0); - } -/* -{metadocument} - - -{/metadocument} -*/ - - Function ChangeBulkMail($on) - { - return(1); - } - -/* -{metadocument} - - SetBulkMail - BOOLEAN - - Hint the class to adjust itself in order to send individual - messages to many recipients more efficiently. - Call this function before starting sending messages to many - recipients passing 1 to the - - SetBulkMail - on - argument. Then call this function again after the - bulk mailing delivery has ended passing passing - 1 to the - SetBulkMail - on - argument. - If this function succeeds, it returns - 1. - - - on - BOOLEAN - - Boolean flag that indicates whether a bulk delivery is - going to start if set to 1 or that - the bulk delivery has ended if set to - 0. - - - -{/metadocument} -*/ - Function SetBulkMail($on) - { - if(strlen($this->error)) - return(0); - if(!$this->bulk_mail==!$on) - return(1); - if(!$this->ChangeBulkMail($on)) - return(0); - $this->bulk_mail=!!$on; - return(1); - } -/* -{metadocument} - - -{/metadocument} -*/ - - Function OpenMailing(&$mailing,&$mailing_properties) - { - if(strlen($this->error)) - return($this->error); - if(!IsSet($mailing_properties["Name"]) - || strlen($mailing_properties["Name"])==0) - return($this->OutputError("it was not specified a valid mailing Name")); - if(!IsSet($mailing_properties["Return-Path"]) - || strlen($mailing_properties["Return-Path"])==0) - return($this->OutputError("it was not specified a valid mailing Return-Path")); - $separator=""; - $directory_separator=(defined("DIRECTORY_SEPARATOR") ? DIRECTORY_SEPARATOR : ((defined("PHP_OS") && !strcmp(substr(PHP_OS,0,3),"WIN")) ? "\\" : "/")); - $length=strlen($this->mailing_path); - if($length) - { - if($this->mailing_path[$length-1]!=$directory_separator) - $separator=$directory_separator; - } - $base_path=$this->mailing_path.$separator.$mailing_properties["Name"]; - if($this->body_parts==0) - return($this->OutputError("message has no body parts")); - $line_break="\n"; - $headers=$this->headers; - if(strlen($this->mailer)) - $headers["X-Mailer"]=$this->mailer; - $headers["MIME-Version"]="1.0"; - if(strlen($error=$this->GetPartHeaders($headers,$this->body))) - return($error); - if(!($header_file=@fopen($base_path.".h","wb"))) - return($this->OutputPHPError("could not open mailing headers file ".$base_path.".h", $php_errormsg)); - for($header=0,Reset($headers);$headerOutputPHPError("could not write to the mailing headers file ".$base_path.".h", $php_errormsg)); - } - } - if(!@fflush($header_file)) - { - fclose($header_file); - @unlink($base_path.".h"); - return($this->OutputPHPError("could not write to the mailing headers file ".$base_path.".h", $php_errormsg)); - } - fclose($header_file); - if(strlen($error=$this->GetPartBody($body,$this->body))) - { - @unlink($base_path.".h"); - return($error); - } - if(!($body_file=@fopen($base_path.".b","wb"))) - { - @unlink($base_path.".h"); - return($this->OutputPHPError("could not open mailing body file ".$base_path.".b", $php_errormsg)); - } - if(!@fwrite($body_file,$body) - || !@fflush($body_file)) - { - fclose($body_file); - @unlink($base_path.".b"); - @unlink($base_path.".h"); - return($this->OutputPHPError("could not write to the mailing body file ".$base_path.".b", $php_errormsg)); - } - fclose($body_file); - if(!($envelope=@fopen($base_path.".e","wb"))) - { - @unlink($base_path.".b"); - @unlink($base_path.".h"); - return($this->OutputPHPError("could not open mailing envelope file ".$base_path.".e", $php_errormsg)); - } - if(!@fwrite($envelope,"F".$mailing_properties["Return-Path"].chr(0)) - || !@fflush($envelope)) - { - @fclose($envelope); - @unlink($base_path.".e"); - @unlink($base_path.".b"); - @unlink($base_path.".h"); - return($this->OutputPHPError("could not write to the return path to the mailing envelope file ".$base_path.".e", $php_errormsg)); - } - $mailing=++$this->last_mailing; - $this->mailings[$mailing]=array( - "Envelope"=>$envelope, - "BasePath"=>$base_path - ); - return(""); - } - - Function AddMailingRecipient($mailing,&$recipient_properties) - { - if(strlen($this->error)) - return($this->error); - if(!IsSet($this->mailings[$mailing])) - return($this->OutputError("it was not specified a valid mailing")); - if(!IsSet($recipient_properties["Address"]) - || strlen($recipient_properties["Address"])==0) - return($this->OutputError("it was not specified a valid mailing recipient Address")); - if(!@fwrite($this->mailings[$mailing]["Envelope"],"T".$recipient_properties["Address"].chr(0))) - return($this->OutputPHPError("could not write recipient address to the mailing envelope file", $php_errormsg)); - return(""); - } - - Function EndMailing($mailing) - { - if(strlen($this->error)) - return($this->error); - if(!IsSet($this->mailings[$mailing])) - return($this->OutputError("it was not specified a valid mailing")); - if(!IsSet($this->mailings[$mailing]["Envelope"])) - return($this->OutputError("the mailing was already ended")); - if(!@fwrite($this->mailings[$mailing]["Envelope"],chr(0)) - || !@fflush($this->mailings[$mailing]["Envelope"])) - return($this->OutputPHPError("could not end writing to the mailing envelope file", $php_errormsg)); - fclose($this->mailings[$mailing]["Envelope"]); - Unset($this->mailings[$mailing]["Envelope"]); - return(""); - } - - Function SendMailing($mailing) - { - if(strlen($this->error)) - return($this->error); - if(!IsSet($this->mailings[$mailing])) - return($this->OutputError("it was not specified a valid mailing")); - if(IsSet($this->mailings[$mailing]["Envelope"])) - return($this->OutputError("the mailing was not yet ended")); - $this->ResetMessage(); - $base_path=$this->mailings[$mailing]["BasePath"]; - if(GetType($header_lines=@File($base_path.".h"))!="array") - return($this->OutputPHPError("could not read the mailing headers file ".$base_path.".h", $php_errormsg)); - for($line=0;$lineTokenize($header_lines[$line],": "); - $this->headers[$header_name]=trim($this->Tokenize("\n")); - } - if(!($envelope_file=@fopen($base_path.".e","rb"))) - return($this->OutputPHPError("could not open the mailing envelope file ".$base_path.".e", $php_errormsg)); - for($bcc=$data="",$position=0;!feof($envelope_file) || strlen($data);) - { - if(GetType($break=strpos($data,chr(0),$position))!="integer") - { - if(GetType($chunk=@fread($envelope_file,$this->file_buffer_length))!="string") - { - fclose($envelope_file); - return($this->OutputPHPError("could not read the mailing envelop file ".$base_path.".e", $php_errormsg)); - } - $data=substr($data,$position).$chunk; - $position=0; - continue; - } - if($break==$position) - break; - switch($data[$position]) - { - case "F": - $this->headers["Return-Path"]=substr($data,$position+1,$break-$position-1); - break; - case "T": - $bcc.=(strlen($bcc)==0 ? "" : ", ").substr($data,$position+1,$break-$position-1); - break; - default: - return($this->OutputError("invalid mailing envelope file ".$base_path.".e")); - } - $position=$break+1; - } - fclose($envelope_file); - if(strlen($bcc)==0) - return($this->OutputError("the mailing envelop file ".$base_path.".e does not contain any recipients")); - $this->headers["Bcc"]=$bcc; - if(!($body_file=@fopen($base_path.".b","rb"))) - return($this->OutputPHPError("could not open the mailing body file ".$base_path.".b", $php_errormsg)); - for($data="";!feof($body_file);) - { - if(GetType($chunk=@fread($body_file,$this->file_buffer_length))!="string") - { - fclose($body_file); - return($this->OutputPHPError("could not read the mailing body file ".$base_path.".b", $php_errormsg)); - } - $data.=$chunk; - } - fclose($body_file); - if(strlen($error=$this->StartSendingMessage())) - return($error); - if(strlen($error=$this->SendMessageHeaders($this->headers))==0 - && strlen($error=$this->SendMessageBody($data))==0) - $error=$this->EndSendingMessage(); - $this->StopSendingMessage(); - return($error); - } -}; - -/* - -{metadocument} -
-{/metadocument} - -*/ - -?> diff --git a/site/modules/.WireMailSmtp/smtp_classes/login_sasl_client.php b/site/modules/.WireMailSmtp/smtp_classes/login_sasl_client.php deleted file mode 100644 index c8e6e61..0000000 --- a/site/modules/.WireMailSmtp/smtp_classes/login_sasl_client.php +++ /dev/null @@ -1,69 +0,0 @@ -state!=SASL_LOGIN_STATE_START) - { - $client->error="LOGIN authentication state is not at the start"; - return(SASL_FAIL); - } - $this->credentials=array( - "user"=>"", - "password"=>"", - "realm"=>"" - ); - $defaults=array( - "realm"=>"" - ); - $status=$client->GetCredentials($this->credentials,$defaults,$interactions); - if($status==SASL_CONTINUE) - $this->state=SASL_LOGIN_STATE_IDENTIFY_USER; - Unset($message); - return($status); - } - - Function Step(&$client, $response, &$message, &$interactions) - { - switch($this->state) - { - case SASL_LOGIN_STATE_IDENTIFY_USER: - $message=$this->credentials["user"].(strlen($this->credentials["realm"]) ? "@".$this->credentials["realm"] : ""); - $this->state=SASL_LOGIN_STATE_IDENTIFY_PASSWORD; - break; - case SASL_LOGIN_STATE_IDENTIFY_PASSWORD: - $message=$this->credentials["password"]; - $this->state=SASL_LOGIN_STATE_DONE; - break; - case SASL_LOGIN_STATE_DONE: - $client->error="LOGIN authentication was finished without success"; - break; - default: - $client->error="invalid LOGIN authentication step state"; - return(SASL_FAIL); - } - return(SASL_CONTINUE); - } -}; - -?> diff --git a/site/modules/.WireMailSmtp/smtp_classes/ntlm_sasl_client.php b/site/modules/.WireMailSmtp/smtp_classes/ntlm_sasl_client.php deleted file mode 100644 index 40612b4..0000000 --- a/site/modules/.WireMailSmtp/smtp_classes/ntlm_sasl_client.php +++ /dev/null @@ -1,180 +0,0 @@ -"mcrypt", - "mhash"=>"mhash" - ); - $client->error="the extension ".$extensions[$function]." required by the NTLM SASL client class is not available in this PHP configuration"; - return(0); - } - return(1); - } - - Function ASCIIToUnicode($ascii) - { - for($unicode="",$a=0;$aASCIIToUnicode($password); - $md4=mhash(MHASH_MD4,$unicode); - $padded=$md4.str_repeat(chr(0),21-strlen($md4)); - $iv_size=mcrypt_get_iv_size(MCRYPT_DES,MCRYPT_MODE_ECB); - $iv=mcrypt_create_iv($iv_size,MCRYPT_RAND); - for($response="",$third=0;$third<21;$third+=7) - { - for($packed="",$p=$third;$p<$third+7;$p++) - $packed.=str_pad(decbin(ord(substr($padded,$p,1))),8,"0",STR_PAD_LEFT); - for($key="",$p=0;$pASCIIToUnicode($domain); - $domain_length=strlen($domain_unicode); - $domain_offset=64; - $user_unicode=$this->ASCIIToUnicode($user); - $user_length=strlen($user_unicode); - $user_offset=$domain_offset+$domain_length; - $workstation_unicode=$this->ASCIIToUnicode($workstation); - $workstation_length=strlen($workstation_unicode); - $workstation_offset=$user_offset+$user_length; - $lm=""; - $lm_length=strlen($lm); - $lm_offset=$workstation_offset+$workstation_length; - $ntlm=$ntlm_response; - $ntlm_length=strlen($ntlm); - $ntlm_offset=$lm_offset+$lm_length; - $session=""; - $session_length=strlen($session); - $session_offset=$ntlm_offset+$ntlm_length; - return( - "NTLMSSP\0". - "\x03\x00\x00\x00". - pack("v",$lm_length). - pack("v",$lm_length). - pack("V",$lm_offset). - pack("v",$ntlm_length). - pack("v",$ntlm_length). - pack("V",$ntlm_offset). - pack("v",$domain_length). - pack("v",$domain_length). - pack("V",$domain_offset). - pack("v",$user_length). - pack("v",$user_length). - pack("V",$user_offset). - pack("v",$workstation_length). - pack("v",$workstation_length). - pack("V",$workstation_offset). - pack("v",$session_length). - pack("v",$session_length). - pack("V",$session_offset). - "\x01\x02\x00\x00". - $domain_unicode. - $user_unicode. - $workstation_unicode. - $lm. - $ntlm - ); - } - - Function Start(&$client, &$message, &$interactions) - { - if($this->state!=SASL_NTLM_STATE_START) - { - $client->error="NTLM authentication state is not at the start"; - return(SASL_FAIL); - } - $this->credentials=array( - "user"=>"", - "password"=>"", - "realm"=>"", - "workstation"=>"" - ); - $defaults=array(); - $status=$client->GetCredentials($this->credentials,$defaults,$interactions); - if($status==SASL_CONTINUE) - $this->state=SASL_NTLM_STATE_IDENTIFY_DOMAIN; - Unset($message); - return($status); - } - - Function Step(&$client, $response, &$message, &$interactions) - { - switch($this->state) - { - case SASL_NTLM_STATE_IDENTIFY_DOMAIN: - $message=$this->TypeMsg1($this->credentials["realm"],$this->credentials["workstation"]); - $this->state=SASL_NTLM_STATE_RESPOND_CHALLENGE; - break; - case SASL_NTLM_STATE_RESPOND_CHALLENGE: - $ntlm_response=$this->NTLMResponse(substr($response,24,8),$this->credentials["password"]); - $message=$this->TypeMsg3($ntlm_response,$this->credentials["user"],$this->credentials["realm"],$this->credentials["workstation"]); - $this->state=SASL_NTLM_STATE_DONE; - break; - case SASL_NTLM_STATE_DONE: - $client->error="NTLM authentication was finished without success"; - return(SASL_FAIL); - default: - $client->error="invalid NTLM authentication step state"; - return(SASL_FAIL); - } - return(SASL_CONTINUE); - } -}; - -?> diff --git a/site/modules/.WireMailSmtp/smtp_classes/plain_sasl_client.php b/site/modules/.WireMailSmtp/smtp_classes/plain_sasl_client.php deleted file mode 100644 index 4e81f04..0000000 --- a/site/modules/.WireMailSmtp/smtp_classes/plain_sasl_client.php +++ /dev/null @@ -1,99 +0,0 @@ -state!=SASL_PLAIN_STATE_START) - { - $client->error="PLAIN authentication state is not at the start"; - return(SASL_FAIL); - } - $this->credentials=array( - "user"=>"", - "password"=>"", - "realm"=>"", - "mode"=>"" - ); - $defaults=array( - "realm"=>"", - "mode"=>"" - ); - $status=$client->GetCredentials($this->credentials,$defaults,$interactions); - if($status==SASL_CONTINUE) - { - switch($this->credentials["mode"]) - { - case SASL_PLAIN_EXIM_MODE: - $message=$this->credentials["user"]."\0".$this->credentials["password"]."\0"; - break; - case SASL_PLAIN_EXIM_DOCUMENTATION_MODE: - $message="\0".$this->credentials["user"]."\0".$this->credentials["password"]; - break; - default: - $message=$this->credentials["user"]."\0".$this->credentials["user"].(strlen($this->credentials["realm"]) ? "@".$this->credentials["realm"] : "")."\0".$this->credentials["password"]; - break; - } - $this->state=SASL_PLAIN_STATE_DONE; - } - else - Unset($message); - return($status); - } - - Function Step(&$client, $response, &$message, &$interactions) - { - switch($this->state) - { -/* - case SASL_PLAIN_STATE_IDENTIFY: - switch($this->credentials["mode"]) - { - case SASL_PLAIN_EXIM_MODE: - $message=$this->credentials["user"]."\0".$this->credentials["password"]."\0"; - break; - case SASL_PLAIN_EXIM_DOCUMENTATION_MODE: - $message="\0".$this->credentials["user"]."\0".$this->credentials["password"]; - break; - default: - $message=$this->credentials["user"]."\0".$this->credentials["user"].(strlen($this->credentials["realm"]) ? "@".$this->credentials["realm"] : "")."\0".$this->credentials["password"]; - break; - } - var_dump($message); - $this->state=SASL_PLAIN_STATE_DONE; - break; -*/ - case SASL_PLAIN_STATE_DONE: - $client->error="PLAIN authentication was finished without success"; - return(SASL_FAIL); - default: - $client->error="invalid PLAIN authentication step state"; - return(SASL_FAIL); - } - return(SASL_CONTINUE); - } -}; - -?> diff --git a/site/modules/.WireMailSmtp/smtp_classes/sasl.php b/site/modules/.WireMailSmtp/smtp_classes/sasl.php deleted file mode 100644 index 3229a01..0000000 --- a/site/modules/.WireMailSmtp/smtp_classes/sasl.php +++ /dev/null @@ -1,422 +0,0 @@ - - - - net.manuellemos.sasl - - @(#) $Id: sasl.php,v 1.11 2005/10/31 18:43:27 mlemos Exp $ - Copyright © (C) Manuel Lemos 2004 - Simple Authentication and Security Layer client - Manuel Lemos - mlemos-at-acm.org - - - en - Provide a common interface to plug-in driver classes that - implement different mechanisms for authentication used by clients of - standard protocols like SMTP, POP3, IMAP, HTTP, etc.. Currently the - supported authentication mechanisms are: PLAIN, - LOGIN, CRAM-MD5, Digest and NTML - (Windows or Samba). - . - - -{/metadocument} -*/ - -class sasl_client_class -{ - /* Public variables */ - -/* -{metadocument} - - error - STRING - - - Store the message that is returned when an error - occurs. - Check this variable to understand what happened when a call to - any of the class functions has failed. - This class uses cumulative error handling. This means that if one - class functions that may fail is called and this variable was - already set to an error message due to a failure in a previous call - to the same or other function, the function will also fail and does - not do anything. - This allows programs using this class to safely call several - functions that may fail and only check the failure condition after - the last function call. - Just set this variable to an empty string to clear the error - condition. - - -{/metadocument} -*/ - var $error=''; - -/* -{metadocument} - - mechanism - STRING - - - Store the name of the mechanism that was selected during the - call to the Start function. - You can access this variable but do not change it. - - -{/metadocument} -*/ - var $mechanism=''; - -/* -{metadocument} - - encode_response - BOOLEAN - 1 - - Let the drivers inform the applications whether responses - need to be encoded. - Applications should check this variable before sending - authentication responses to the server to determine if the - responses need to be encoded, eventually with base64 algorithm. - - -{/metadocument} -*/ - var $encode_response=1; - - /* Private variables */ - - var $driver; - var $drivers=array( - "Digest" => array("digest_sasl_client_class", "digest_sasl_client.php" ), - "CRAM-MD5" => array("cram_md5_sasl_client_class", "cram_md5_sasl_client.php" ), - "LOGIN" => array("login_sasl_client_class", "login_sasl_client.php" ), - "NTLM" => array("ntlm_sasl_client_class", "ntlm_sasl_client.php" ), - "PLAIN" => array("plain_sasl_client_class", "plain_sasl_client.php" ), - "Basic" => array("basic_sasl_client_class", "basic_sasl_client.php" ) - ); - var $credentials=array(); - - /* Public functions */ - -/* -{metadocument} - - SetCredential - VOID - - Store the value of a credential that may be used by any of - the supported mechanisms to process the authentication messages and - responses. - Call this function before starting the authentication dialog - to pass all the credential values that be needed to use the type - of authentication that the applications may need. - . - - - key - STRING - - Specify the name of the credential key. - - - - value - STRING - - Specify the value for the credential. - - - -{/metadocument} -*/ - Function SetCredential($key,$value) - { - $this->credentials[$key]=$value; - } -/* -{metadocument} - - -{/metadocument} -*/ - -/* -{metadocument} - - GetCredentials - INTEGER - - Retrieve the values of one or more credentials to be used by - the authentication mechanism classes. - This is meant to be used by authentication mechanism driver - classes to retrieve the credentials that may be neede. - The function may return SASL_CONTINUE if it - succeeded, or SASL_NOMECH if it was not possible to - retrieve one of the requested credentials. - - - credentials - HASH - - Reference to an associative array variable with all the - credentials that are being requested. The function initializes - this associative array values. - - - - defaults - HASH - - Associative arrays with default values for credentials - that may have not been defined. - - - - interactions - ARRAY - - Not yet in use. It is meant to provide context - information to retrieve credentials that may be obtained - interacting with the user. - - - -{/metadocument} -*/ - Function GetCredentials(&$credentials,$defaults,&$interactions) - { - Reset($credentials); - $end=(GetType($key=Key($credentials))!="string"); - for(;!$end;) - { - if(!IsSet($this->credentials[$key])) - { - if(IsSet($defaults[$key])) - $credentials[$key]=$defaults[$key]; - else - { - $this->error="the requested credential ".$key." is not defined"; - return(SASL_NOMECH); - } - } - else - $credentials[$key]=$this->credentials[$key]; - Next($credentials); - $end=(GetType($key=Key($credentials))!="string"); - } - return(SASL_CONTINUE); - } -/* -{metadocument} - - -{/metadocument} -*/ - -/* -{metadocument} - - Start - INTEGER - - Process the initial authentication step initializing the - driver class that implements the first of the list of requested - mechanisms that is supported by this SASL client library - implementation. - Call this function specifying a list of mechanisms that the - server supports. If the - message - Start - argument returns a string, it should be sent to - the server as initial message. Check the - encode_response variable to determine - whether the initial message needs to be encoded, eventually with - base64 algorithm, before it is sent to the server. - The function may return SASL_CONTINUE if it - could start one of the requested authentication mechanisms. It - may return SASL_NOMECH if it was not possible to start - any of the requested mechanisms. It returns SASL_FAIL or - other value in case of error. - - - mechanisms - ARRAY - - - Define the list of names of authentication mechanisms - supported by the that should be tried. - - - - message - STRING - - - Return the initial message that should be sent to the - server to start the authentication dialog. If this value is - undefined, no message should be sent to the server. - - - - interactions - ARRAY - - Not yet in use. It is meant to provide context - information to interact with the end user. - - - -{/metadocument} -*/ - Function Start($mechanisms, &$message, &$interactions) - { - if(strlen($this->error)) - return(SASL_FAIL); - if(IsSet($this->driver)) - return($this->driver->Start($this,$message,$interactions)); - $no_mechanism_error=""; - for($m=0;$mdrivers[$mechanism])) - { - if(!class_exists($this->drivers[$mechanism][0])) - require(dirname(__FILE__)."/".$this->drivers[$mechanism][1]); - $this->driver=new $this->drivers[$mechanism][0]; - if($this->driver->Initialize($this)) - { - $this->encode_response=1; - $status=$this->driver->Start($this,$message,$interactions); - switch($status) - { - case SASL_NOMECH: - Unset($this->driver); - if(strlen($no_mechanism_error)==0) - $no_mechanism_error=$this->error; - $this->error=""; - break; - case SASL_CONTINUE: - $this->mechanism=$mechanism; - return($status); - default: - Unset($this->driver); - $this->error=""; - return($status); - } - } - else - { - Unset($this->driver); - if(strlen($no_mechanism_error)==0) - $no_mechanism_error=$this->error; - $this->error=""; - } - } - } - $this->error=(strlen($no_mechanism_error) ? $no_mechanism_error : "it was not requested any of the authentication mechanisms that are supported"); - return(SASL_NOMECH); - } -/* -{metadocument} - - -{/metadocument} -*/ - -/* -{metadocument} - - Step - INTEGER - - Process the authentication steps after the initial step, - until the authetication iteration dialog is complete. - Call this function iteratively after a successful initial - step calling the Start function. - The function returns SASL_CONTINUE if step was - processed successfully, or returns SASL_FAIL in case of - error. - - - response - STRING - - - Pass the response returned by the server to the previous - step. - - - - message - STRING - - - Return the message that should be sent to the server to - continue the authentication dialog. If this value is undefined, - no message should be sent to the server. - - - - interactions - ARRAY - - Not yet in use. It is meant to provide context - information to interact with the end user. - - - -{/metadocument} -*/ - Function Step($response, &$message, &$interactions) - { - if(strlen($this->error)) - return(SASL_FAIL); - return($this->driver->Step($this,$response,$message,$interactions)); - } -/* -{metadocument} - - -{/metadocument} -*/ - -}; - -/* - -{metadocument} - -{/metadocument} - -*/ - -?> diff --git a/site/modules/.WireMailSmtp/smtp_classes/smtp.php b/site/modules/.WireMailSmtp/smtp_classes/smtp.php deleted file mode 100644 index e0ae3fe..0000000 --- a/site/modules/.WireMailSmtp/smtp_classes/smtp.php +++ /dev/null @@ -1,1996 +0,0 @@ - - - - net.manuellemos.smtp - - @(#) $Id: smtp.php,v 1.52 2020/01/13 06:22:23 mlemos Exp $ - Copyright (C) Manuel Lemos 1999-2011 - Sending e-mail messages via SMTP protocol - Manuel Lemos - mlemos-at-acm.org - - - en - Sending e-mail messages via SMTP protocol - If you are interested in translating the documentation of - this class to your own idiom, please - contact the author - mailto:authoraddress - . - Technical support for using this class may be obtained in the - smtpclass support forum. Just go to the support forum pages - page to browse the forum archives and post support request - messages: - - http://www.phpclasses.org/discuss/package/14/ - http://www.phpclasses.org/discuss/package/14/ - - To use this class just create a new object, set any variables - to configure its options and call the - SendMessage function to send a - message.It is not recommended that you use this - class alone unless you have deep understanding of Internet mail - standards on how to compose compliant e-mail messages. Instead, use - the - MIME message composing and sending class - http://www.phpclasses.org/mimemessage - and its sub-class SMTP message together with this SMTP class - to properly compose e-mail messages, so your messages are not - discarded for not being correctly composed. - - -{/metadocument} -*/ - -class smtp_class -{ -/* -{metadocument} - - user - STRING - - - Define the authorized user when sending messages to a SMTP - server. - Set this variable to the user name when the SMTP server - requires authentication. - - -{/metadocument} -*/ - var $user=""; - -/* -{metadocument} - - realm - STRING - - - Define the authentication realm when sending messages to a - SMTP server. - Set this variable when the SMTP server requires - authentication and if more than one authentication realm is - supported. - - -{/metadocument} -*/ - var $realm=""; - -/* -{metadocument} - - password - STRING - - - Define the authorized user password when sending messages - to a SMTP server. - Set this variable to the user password when the SMTP server - requires authentication. - - -{/metadocument} -*/ - var $password=""; - -/* -{metadocument} - - workstation - STRING - - - Define the client workstation name when sending messages - to a SMTP server. - Set this variable to the client workstation when the SMTP - server requires authentication identifiying the origin workstation - name. - - -{/metadocument} -*/ - var $workstation=""; - -/* -{metadocument} - - token - STRING - - - Define the authentication token when sending messages - to a SMTP server. - Set this variable to the token value when the SMTP - server requires authentication to pass an authorization - token. - - -{/metadocument} -*/ - var $token=""; -/* -{metadocument} - - authentication_mechanism - STRING - - - Force the use of a specific authentication mechanism. - Set it to an empty string to let the class determine the - authentication mechanism to use automatically based on the - supported mechanisms by the server and by the SASL client library - classes. - Set this variable to a specific mechanism name if you want to - override the automatic authentication mechanism selection. - - -{/metadocument} -*/ - var $authentication_mechanism=""; - -/* -{metadocument} - - sasl_autoload - BOOLEAN - 0 - - Specify whether the class should check if the SASL classes - exists or should they be loaded with an autoloader. - Set this variable to - 1 if you are using an - autoloader to load the SASL classes. - - -{/metadocument} -*/ - var $sasl_autoload=0; - - -/* -{metadocument} - - host_name - STRING - - - Define the SMTP server host name. - Set to the host name of the SMTP server to which you want to - relay the messages. - - -{/metadocument} -*/ - var $host_name=""; - -/* -{metadocument} - - host_port - INTEGER - 25 - - Define the SMTP server host port. - Set to the TCP port of the SMTP server host to connect. - - -{/metadocument} -*/ - var $host_port=25; - -/* -{metadocument} - - socks_host_name - STRING - - - Define the SOCKS server host name. - Set to the SOCKS server host name through which the SMTP - connection should be routed. Leave it empty if you do not want the - connections to be established through a SOCKS server. - - -{/metadocument} -*/ - var $socks_host_name = ''; - -/* -{metadocument} - - socks_host_port - INTEGER - 1080 - - Define the SOCKS server host port. - Set to the port of the SOCKS server host through which the - the SMTP connection should be routed. - - -{/metadocument} -*/ - var $socks_host_port=1080; - -/* -{metadocument} - - socks_version - STRING - 5 - - Set the SOCKS protocol version. - Change this value if SOCKS server you want to use is - listening to a different port. - - -{/metadocument} -*/ - var $socks_version='5'; - -/* -{metadocument} - - http_proxy_host_name - STRING - - - Define the HTTP proxy server host name. - Set to the HTTP proxy server host name through which the - SMTP connection should be routed. Leave it empty if you do not - want the connections to be established through an HTTP proxy. - - -{/metadocument} -*/ - var $http_proxy_host_name = ''; - -/* -{metadocument} - - http_proxy_host_port - INTEGER - 80 - - Define the HTTP proxy server host port. - Set to the port of the HTTP proxy server host through which - the SMTP connection should be routed. - - -{/metadocument} -*/ - var $http_proxy_host_port=80; - -/* -{metadocument} - - user_agent - STRING - SMTP Class (http://www.phpclasses.org/smtpclass $Revision: 1.52 $) - - Set the user agent used when connecting via an HTTP proxy. - Change this value only if for some reason you want emulate a - certain e-mail client. - - -{/metadocument} -*/ - var $user_agent='SMTP Class (http://www.phpclasses.org/smtpclass $Revision: 1.52 $)'; - -/* -{metadocument} - - ssl - BOOLEAN - 0 - - Define whether the connection to the SMTP server should be - established securely using SSL protocol. - Set to 1 if the SMTP server - requires secure connections using SSL protocol. - - -{/metadocument} -*/ - var $ssl=0; - -/* -{metadocument} - - start_tls - BOOLEAN - 0 - - Define whether the connection to the SMTP server should use - encryption after the connection is established using TLS - protocol. - Set to 1 if the SMTP server - requires that authentication be done securely starting the TLS - protocol after the connection is established. - - -{/metadocument} -*/ - var $start_tls = 0; - -/* -{metadocument} - - localhost - STRING - - - Name of the local host computer - Set to the name of the computer connecting to the SMTP - server from the local network. - - -{/metadocument} -*/ - var $localhost=""; - -/* -{metadocument} - - timeout - INTEGER - 0 - - Specify the connection timeout period in seconds. - Leave it set to 0 if you want - the connection attempts to wait forever. Change this value if for - some reason the timeout period seems insufficient or otherwise it - seems too long. - - -{/metadocument} -*/ - var $timeout=0; - -/* -{metadocument} - - data_timeout - INTEGER - 0 - - Specify the timeout period in seconds to wait for data from - the server. - Leave it set to 0 if you want - to use the same value defined in the - timeout variable. Change this value - if for some reason the default data timeout period seems - insufficient or otherwise it seems too long. - - -{/metadocument} -*/ - var $data_timeout=0; - -/* -{metadocument} - - direct_delivery - BOOLEAN - 0 - - Boolean flag that indicates whether the message should be - sent in direct delivery mode, i.e. the message is sent to the SMTP - server associated to the domain of the recipient instead of - relaying to the server specified by the - host_name variable. - Set this to 1 if you - want to send urgent messages directly to the recipient domain SMTP - server. - - -{/metadocument} -*/ - var $direct_delivery=0; - -/* -{metadocument} - - error - STRING - - - Message that describes the error when a call to a class - function fails. - Check this variable when an error occurs to understand what - happened. - - -{/metadocument} -*/ - var $error=""; - -/* -{metadocument} - - debug - BOOLEAN - 0 - - Specify whether it is necessary to output SMTP connection - debug information. - Set this variable to - 1 if you need to see - the progress of the SMTP connection and protocol dialog when you - need to understand the reason for delivery problems. - - -{/metadocument} -*/ - var $debug=0; - -/* -{metadocument} - - html_debug - BOOLEAN - 0 - - Specify whether the debug information should be outputted in - HTML format. - Set this variable to - 1 if you need to see - the debug output in a Web page. - - -{/metadocument} -*/ - var $html_debug=0; - -/* -{metadocument} - - esmtp - BOOLEAN - 1 - - Specify whether the class should attempt to use ESMTP - extensions supported by the server. - Set this variable to - 0 if for some reason you - want to avoid benefitting from ESMTP extensions. - - -{/metadocument} -*/ - var $esmtp=1; - -/* -{metadocument} - - esmtp_extensions - HASH - - - Associative array with the list of ESMTP extensions - supported by the SMTP server. - Check this variable after connecting to the SMTP server to - determine which ESMTP extensions are supported. - - -{/metadocument} -*/ - var $esmtp_extensions=array(); - -/* -{metadocument} - - exclude_address - STRING - - - Specify an address that should be considered invalid - when resolving host name addresses. - In some networks any domain name that does not exist is - resolved as a sub-domain of the default local domain. If the DNS is - configured in such way that it always resolves any sub-domain of - the default local domain to a given address, it is hard to - determine whether a given domain does not exist. - If your network is configured this way, you may set this variable - to the address that all sub-domains of the default local domain - resolves, so the class can assume that such address is invalid. - - -{/metadocument} -*/ - var $exclude_address=""; - -/* -{metadocument} - - getmxrr - STRING - getmxrr - - Specify the name of the function that is called to determine - the SMTP server address of a given domain. - Change this to a working replacement of the PHP - getmxrr() function if this is not working in your system - and you want to send messages in direct delivery mode. - - -{/metadocument} -*/ - var $getmxrr="GetMXRR"; - -/* -{metadocument} - - pop3_auth_host - STRING - - - Specify the server address for POP3 based authentication. - Set this variable to the address of the POP3 server if the - SMTP server requires POP3 based authentication. - - -{/metadocument} -*/ - var $pop3_auth_host=""; - -/* -{metadocument} - - pop3_auth_port - INTEGER - 110 - - Specify the server port for POP3 based authentication. - Set this variable to the port of the POP3 server if the - SMTP server requires POP3 based authentication. - - -{/metadocument} -*/ - var $pop3_auth_port=110; - - - /* Support for manual Selection of a TLS Crypto Method */ - var $smtp_tls_crypto_method = ''; // @horst - - /* ONLY A PLACEHOLDER */ - var $smtp_ssl_crypto_method = ''; // @horst - - /* Server allows connecting without user name and password */ - var $allow_without_authentication = 0; // @horst - - /* Allow self signed certificate */ - var $smtp_certificate = false; // @flydev: https://processwire.com/talk/topic/5704-wiremailsmtp/page-5#entry113290 - - // @flydev: https://processwire.com/talk/topic/5704-wiremailsmtp/page-5#entry113290 - Function AllowSelfSignedCertificate($allow = false) - { - $version=explode(".",function_exists("phpversion") ? phpversion() : "3.0.7"); - $php_version=intval($version[0])*1000000+intval($version[1])*1000+intval($version[2]); - if($php_version<5006000) return; - if($allow) { - stream_context_set_option($this->connection, 'ssl', 'verify_peer', false); - stream_context_set_option($this->connection, 'ssl', 'allow_self_signed', true); - } - else - { - stream_context_set_option($this->connection, 'ssl', 'verify_peer', true); - stream_context_set_option($this->connection, 'ssl', 'allow_self_signed', false); - } - } - - /* private variables - DO NOT ACCESS */ - - var $state="Disconnected"; - var $connection=0; - var $pending_recipients=0; - var $next_token=""; - var $direct_sender=""; - var $connected_domain=""; - var $result_code; - var $disconnected_error=0; - var $esmtp_host=""; - var $maximum_piped_recipients=100; - - /* Private methods - DO NOT CALL */ - - Function Tokenize($string,$separator="") - { - if(!strcmp($separator,"")) - { - $separator=$string; - $string=$this->next_token; - } - for($character=0;$characternext_token=substr($string,$found+1); - return(substr($string,0,$found)); - } - else - { - $this->next_token=""; - return($string); - } - } - - Function OutputDebug($message) - { - $message.="\n"; - if($this->html_debug) - $message=str_replace("\n","
\n",HtmlEntities($message)); - echo $message; - flush(); - } - - Function SetDataAccessError($error) - { - $this->error=$error; - if(function_exists("socket_get_status")) - { - $status=socket_get_status($this->connection); - if($status["timed_out"]) - $this->error.=": data access time out"; - elseif($status["eof"]) - { - $this->error.=": the server disconnected"; - $this->disconnected_error=1; - } - } - return($this->error); - } - - Function SetError($error) - { - return($this->error=$error); - } - - Function GetLine() - { - for($line="";;) - { - if(feof($this->connection)) - { - $this->error="reached the end of data while reading from the SMTP server conection"; - return(""); - } - if(GetType($data=@fgets($this->connection,100))!="string" - || strlen($data)==0) - { - $this->SetDataAccessError("it was not possible to read line from the SMTP server"); - return(""); - } - $line.=$data; - $length=strlen($line); - if($length>=2 - && substr($line,$length-2,2)=="\r\n") - { - $line=substr($line,0,$length-2); - if($this->debug) - $this->OutputDebug("S $line"); - return($line); - } - } - } - - Function PutLine($line) - { - if($this->debug) - $this->OutputDebug("C $line"); - if(!@fputs($this->connection,"$line\r\n")) - { - $this->SetDataAccessError("it was not possible to send a line to the SMTP server"); - return(0); - } - return(1); - } - - Function PutData(&$data) - { - if(strlen($data)) - { - if($this->debug) - $this->OutputDebug("C $data"); - if(!@fputs($this->connection,$data)) - { - $this->SetDataAccessError("it was not possible to send data to the SMTP server"); - return(0); - } - } - return(1); - } - - Function VerifyResultLines($code,&$responses) - { - $responses=array(); - Unset($this->result_code); - while(strlen($line=$this->GetLine($this->connection))) - { - if(IsSet($this->result_code)) - { - if(strcmp($this->Tokenize($line," -"),$this->result_code)) - { - $this->error=$line; - return(0); - } - } - else - { - $this->result_code=$this->Tokenize($line," -"); - if(GetType($code)=="array") - { - for($codes=0;$codesresult_code,$code[$codes]);$codes++); - if($codes>=count($code)) - { - $this->error=$line; - return(0); - } - } - else - { - if(strcmp($this->result_code,$code)) - { - $this->error=$line; - return(0); - } - } - } - $responses[]=$this->Tokenize(""); - if(!strcmp($this->result_code,$this->Tokenize($line," "))) - return(1); - } - return(-1); - } - - Function FlushRecipients() - { - if($this->pending_sender) - { - if($this->VerifyResultLines("250",$responses)<=0) - return(0); - $this->pending_sender=0; - } - for(;$this->pending_recipients;$this->pending_recipients--) - { - if($this->VerifyResultLines(array("250","251"),$responses)<=0) - return(0); - } - return(1); - } - - Function Resolve($domain, &$ip, $server_type) - { - if(preg_match('/^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$/',$domain)) - $ip=$domain; - else - { - if($this->debug) - $this->OutputDebug('Resolving '.$server_type.' server domain "'.$domain.'"...'); - if(!strcmp($ip=@gethostbyname($domain),$domain)) - $ip=""; - } - if(strlen($ip)==0 - || (strlen($this->exclude_address) - && !strcmp(@gethostbyname($this->exclude_address),$ip))) - return($this->SetError("could not resolve the host domain \"".$domain."\"")); - return(''); - } - - Function ConnectToHost($domain, $port, $resolve_message) - { - if($this->ssl) - { - $version=explode(".",function_exists("phpversion") ? phpversion() : "3.0.7"); - $php_version=intval($version[0])*1000000+intval($version[1])*1000+intval($version[2]); - if($php_version<4003000) - return("establishing SSL connections requires at least PHP version 4.3.0"); - if(!function_exists("extension_loaded") - || !extension_loaded("openssl")) - return("establishing SSL connections requires the OpenSSL extension enabled"); - } - if(strlen($this->Resolve($domain, $ip, 'SMTP'))) - return($this->error); - if(strlen($this->socks_host_name)) - { - switch($this->socks_version) - { - case '4': - $version = 4; - break; - case '5': - $version = 5; - break; - default: - return('it was not specified a supported SOCKS protocol version'); - break; - } - $host_ip = $ip; - $host_port = $port; - if(strlen($this->error = $this->Resolve($this->socks_host_name, $ip, 'SOCKS'))) - return($this->error); - if($this->ssl) - $ip="ssl://".($socks_host = $this->socks_host_name); - else - $socks_host = $ip; - if($this->debug) - $this->OutputDebug("Connecting to SOCKS server \"".$socks_host."\" port ".$this->http_proxy_host_port."..."); - if(($this->connection=($this->timeout ? fsockopen($ip, $this->socks_host_port, $errno, $error, $this->timeout) : fsockopen($ip, $this->socks_host_port, $errno, $error)))) - { - $timeout=($this->data_timeout ? $this->data_timeout : $this->timeout); - if($timeout - && function_exists("socket_set_timeout")) - socket_set_timeout($this->connection,$timeout,0); - if(strlen($this->socks_host_name)) - { - if($this->debug) - $this->OutputDebug('Connected to the SOCKS server '.$this->socks_host_name); - $send_error = 'it was not possible to send data to the SOCKS server'; - $receive_error = 'it was not possible to receive data from the SOCKS server'; - switch($version) - { - case 4: - $command = 1; - $user = ''; - if(!fputs($this->connection, chr($version).chr($command).pack('nN', $host_port, ip2long($host_ip)).$user.Chr(0))) - $error = $this->SetDataAccessError($send_error); - else - { - $response = fgets($this->connection, 9); - if(strlen($response) != 8) - $error = $this->SetDataAccessError($receive_error); - else - { - $socks_errors = array( - "\x5a"=>'', - "\x5b"=>'request rejected', - "\x5c"=>'request failed because client is not running identd (or not reachable from the server)', - "\x5d"=>'request failed because client\'s identd could not confirm the user ID string in the request', - ); - $error_code = $response[1]; - $error = (IsSet($socks_errors[$error_code]) ? $socks_errors[$error_code] : 'unknown'); - if(strlen($error)) - $error = 'SOCKS error: '.$error; - } - } - break; - case 5: - if($this->debug) - $this->OutputDebug('Negotiating the authentication method ...'); - $methods = 1; - $method = 0; - if(!fputs($this->connection, chr($version).chr($methods).chr($method))) - $error = $this->SetDataAccessError($send_error); - else - { - $response = fgets($this->connection, 3); - if(strlen($response) != 2) - $error = $this->SetDataAccessError($receive_error); - elseif(Ord($response[1]) != $method) - $error = 'the SOCKS server requires an authentication method that is not yet supported'; - else - { - if($this->debug) - $this->OutputDebug('Connecting to SMTP server IP '.$host_ip.' port '.$host_port.'...'); - $command = 1; - $address_type = 1; - if(!fputs($this->connection, chr($version).chr($command)."\x00".chr($address_type).pack('Nn', ip2long($host_ip), $host_port))) - $error = $this->SetDataAccessError($send_error); - else - { - $response = fgets($this->connection, 11); - if(strlen($response) != 10) - $error = $this->SetDataAccessError($receive_error); - else - { - $socks_errors = array( - "\x00"=>'', - "\x01"=>'general SOCKS server failure', - "\x02"=>'connection not allowed by ruleset', - "\x03"=>'Network unreachable', - "\x04"=>'Host unreachable', - "\x05"=>'Connection refused', - "\x06"=>'TTL expired', - "\x07"=>'Command not supported', - "\x08"=>'Address type not supported' - ); - $error_code = $response[1]; - $error = (IsSet($socks_errors[$error_code]) ? $socks_errors[$error_code] : 'unknown'); - if(strlen($error)) - $error = 'SOCKS error: '.$error; - } - } - } - } - break; - default: - $error = 'support for SOCKS protocol version '.$this->socks_version.' is not yet implemented'; - break; - } - if(strlen($this->error = $error)) - { - fclose($this->connection); - return($error); - } - } - return(''); - } - } - elseif(strlen($this->http_proxy_host_name)) - { - if(strlen($error = $this->Resolve($this->http_proxy_host_name, $ip, 'SMTP'))) - return($error); - if($this->ssl) - $ip = 'ssl://'.($proxy_host = $this->http_proxy_host_name); - else - $proxy_host = $ip; - if($this->debug) - $this->OutputDebug("Connecting to HTTP proxy server \"".$ip."\" port ".$this->http_proxy_host_port."..."); - if(($this->connection=($this->timeout ? @fsockopen($ip, $this->http_proxy_host_port, $errno, $error, $this->timeout) : @fsockopen($ip, $this->http_proxy_host_port, $errno, $error)))) - { - if($this->debug) - $this->OutputDebug('Connected to HTTP proxy host "'.$this->http_proxy_host_name.'".'); - $timeout=($this->data_timeout ? $this->data_timeout : $this->timeout); - if($timeout - && function_exists("socket_set_timeout")) - socket_set_timeout($this->connection,$timeout,0); - if($this->PutLine('CONNECT '.$domain.':'.$port.' HTTP/1.0') - && $this->PutLine('User-Agent: '.$this->user_agent) - && $this->PutLine('')) - { - if(GetType($response = $this->GetLine()) == 'string') - { - if(!preg_match('/^http\\/[0-9]+\\.[0-9]+[ \t]+([0-9]+)[ \t]*(.*)$/i', $response,$matches)) - return($this->SetError("3 it was received an unexpected HTTP response status")); - $error = $matches[1]; - switch($error) - { - case '200': - for(;;) - { - if(GetType($response = $this->GetLine()) != 'string') - break; - if(strlen($response) == 0) - return(''); - } - break; - default: - $this->error = 'the HTTP proxy returned error '.$error.' '.$matches[2]; - break; - } - } - } - if($this->debug) - $this->OutputDebug("Disconnected."); - fclose($this->connection); - $this->connection = 0; - return($this->error); - } - } - else - { - if($this->ssl) - $ip = 'ssl://'.($host = $domain); - elseif($this->start_tls) - $ip = $host = $domain; - else - $host = $ip; - if($this->debug) - $this->OutputDebug("Connecting to SMTP server \"".$host."\" port ".$port."..."); - if(($this->connection=($this->timeout ? @fsockopen($ip, $port, $errno, $error, $this->timeout) : @fsockopen($ip, $port, $errno, $error)))) - return(""); - } - $error=($this->timeout ? strval($error) : "??"); - switch($error) - { - case "-3": - return("-3 socket could not be created"); - case "-4": - return("-4 dns lookup on hostname \"".$domain."\" failed"); - case "-5": - return("-5 connection refused or timed out"); - case "-6": - return("-6 fdopen() call failed"); - case "-7": - return("-7 setvbuf() call failed"); - } - return("could not connect to the host \"".$domain."\": ".$error); - } - - Function SASLAuthenticate($mechanisms, $credentials, &$authenticated, &$mechanism) - { - $authenticated=0; - if(!$this->sasl_autoload - && (!function_exists("class_exists") - || !class_exists("sasl_client_class"))) - { - $this->error="it is not possible to authenticate using the specified mechanism because the SASL library class is not loaded"; - return(0); - } - $sasl=new sasl_client_class; - $sasl->SetCredential("user",$credentials["user"]); - $sasl->SetCredential("password",$credentials["password"]); - if(IsSet($credentials["realm"])) - $sasl->SetCredential("realm",$credentials["realm"]); - if(IsSet($credentials["workstation"])) - $sasl->SetCredential("workstation",$credentials["workstation"]); - if(IsSet($credentials["mode"])) - $sasl->SetCredential("mode",$credentials["mode"]); - if(IsSet($credentials["token"])) - $sasl->SetCredential("token",$credentials["token"]); - do - { - $status=$sasl->Start($mechanisms,$message,$interactions); - } - while($status==SASL_INTERACT); - switch($status) - { - case SASL_CONTINUE: - break; - case SASL_NOMECH: - if(strlen($this->authentication_mechanism)) - { - $this->error="authenticated mechanism ".$this->authentication_mechanism." may not be used: ".$sasl->error; - return(0); - } - break; - default: - $this->error="Could not start the SASL authentication client: ".$sasl->error; - return(0); - } - if(strlen($mechanism=$sasl->mechanism)) - { - if($this->PutLine("AUTH ".$sasl->mechanism.(IsSet($message) ? " ".base64_encode($message) : ""))==0) - { - $this->error="Could not send the AUTH command"; - return(0); - } - if(!$this->VerifyResultLines(array("235","334"),$responses)) - return(0); - switch($this->result_code) - { - case "235": - $response=""; - $authenticated=1; - break; - case "334": - $response=base64_decode($responses[0]); - break; - default: - $this->error="Authentication error: ".$responses[0]; - return(0); - } - for(;!$authenticated;) - { - do - { - $status=$sasl->Step($response,$message,$interactions); - } - while($status==SASL_INTERACT); - switch($status) - { - case SASL_CONTINUE: - if($this->PutLine(base64_encode($message))==0) - { - $this->error="Could not send the authentication step message"; - return(0); - } - if(!$this->VerifyResultLines(array("235","334"),$responses)) - return(0); - switch($this->result_code) - { - case "235": - $response=""; - $authenticated=1; - break; - case "334": - $response=base64_decode($responses[0]); - break; - default: - $this->error="Authentication error: ".$responses[0]; - return(0); - } - break; - default: - $this->error="Could not process the SASL authentication step: ".$sasl->error; - return(0); - } - } - } - return(1); - } - - Function StartSMTP($localhost) - { - $success = 1; - $this->esmtp_extensions = array(); - $fallback=1; - if($this->esmtp - || strlen($this->user)) - { - if($this->PutLine('EHLO '.$localhost)) - { - if(($success_code=$this->VerifyResultLines('250',$responses))>0) - { - $this->esmtp_host=$this->Tokenize($responses[0]," "); - for($response=1;$responseTokenize($responses[$response]," ")); - $this->esmtp_extensions[$extension]=$this->Tokenize(""); - } - $success=1; - $fallback=0; - } - else - { - if($success_code==0) - { - $code=$this->Tokenize($this->error," -"); - switch($code) - { - case "421": - $fallback=0; - break; - } - } - } - } - else - $fallback=0; - } - if($fallback) - { - if($this->PutLine("HELO $localhost") - && $this->VerifyResultLines("250",$responses)>0) - $success=1; - } - return($success); - } - - /* Public methods */ - -/* -{metadocument} - - Connect - BOOLEAN - - Connect to an SMTP server. - Call this function as first step to send e-mail messages. - The function returns - 1 if the connection is - successfully established. - - - domain - STRING - - - Specify the domain of the recipient when using the direct - delivery mode. - - - -{/metadocument} -*/ - Function Connect($domain="") - { - if(strcmp($this->state,"Disconnected")) - { - $this->error="connection is already established"; - return(0); - } - $this->disconnected_error=0; - $this->error=$error=""; - $this->esmtp_host=""; - $this->esmtp_extensions=array(); - $hosts=array(); - if($this->direct_delivery) - { - if(strlen($domain)==0) - return(1); - $hosts=$weights=$mxhosts=array(); - $getmxrr=$this->getmxrr; - if(function_exists($getmxrr) - && $getmxrr($domain,$hosts,$weights)) - { - for($host=0;$hosthost_name)) - $hosts[]=$this->host_name; - if(strlen($this->pop3_auth_host)) - { - $user=$this->user; - if(strlen($user)==0) - { - $this->error="it was not specified the POP3 authentication user"; - return(0); - } - $password=$this->password; - if(strlen($password)==0) - { - $this->error="it was not specified the POP3 authentication password"; - return(0); - } - $domain=$this->pop3_auth_host; - $this->error=$this->ConnectToHost($domain, $this->pop3_auth_port, "Resolving POP3 authentication host \"".$domain."\"..."); - if(strlen($this->error)) - return(0); - if(strlen($response=$this->GetLine())==0) - return(0); - if(strcmp($this->Tokenize($response," "),"+OK")) - { - $this->error="POP3 authentication server greeting was not found"; - return(0); - } - if(!$this->PutLine("USER ".$this->user) - || strlen($response=$this->GetLine())==0) - return(0); - if(strcmp($this->Tokenize($response," "),"+OK")) - { - $this->error="POP3 authentication user was not accepted: ".$this->Tokenize("\r\n"); - return(0); - } - if(!$this->PutLine("PASS ".$password) - || strlen($response=$this->GetLine())==0) - return(0); - if(strcmp($this->Tokenize($response," "),"+OK")) - { - $this->error="POP3 authentication password was not accepted: ".$this->Tokenize("\r\n"); - return(0); - } - fclose($this->connection); - $this->connection=0; - } - } - if(count($hosts)==0) - { - $this->error="could not determine the SMTP to connect"; - return(0); - } - for($host=0, $error="not connected";strlen($error) && $hostConnectToHost($domain, $this->host_port, "Resolving SMTP server domain \"$domain\"..."); - } - if(strlen($error)) - { - $this->error=$error; - return(0); - } - $timeout=($this->data_timeout ? $this->data_timeout : $this->timeout); - if($timeout - && function_exists("socket_set_timeout")) - socket_set_timeout($this->connection,$timeout,0); - if($this->debug) - $this->OutputDebug("Connected to SMTP server \"".$domain."\"."); - if(!strcmp($localhost=$this->localhost,"") - && !strcmp($localhost=getenv("SERVER_NAME"),"") - && !strcmp($localhost=getenv("HOST"),"")) - $localhost="localhost"; - $success=0; - if($this->VerifyResultLines("220",$responses)>0) - { - $success = $this->StartSMTP($localhost); - if($this->start_tls) - { - if(!IsSet($this->esmtp_extensions["STARTTLS"])) - { - $this->error="server does not support starting TLS"; - $success=0; - } - elseif(!function_exists('stream_socket_enable_crypto')) - { - $this->error="this PHP installation or version does not support starting TLS"; - $success=0; - } - elseif($success = ($this->PutLine('STARTTLS') - && $this->VerifyResultLines('220',$responses)>0)) - { - if($this->debug) - $this->OutputDebug('Starting TLS cryptographic protocol'); - - // @flydev: https://processwire.com/talk/topic/5704-wiremailsmtp/page-5#entry113290 - $this->AllowSelfSignedCertificate($this->smtp_certificate); - - // @horst: support for different TLS crypto methods in differend PHP versions, - // see: https://processwire.com/talk/topic/5704-wiremailsmtp/page/12/?tab=comments#comment-184229 (thanks @androbey !) - // and: https://www.php.net/manual/en/function.stream-socket-enable-crypto.php#119122 - $validTlsCryptoMethods = WireMailSmtp::getCryptoMethodsTLS(); - // use the userdefined method or try to use the highest available method - $tls_crypto_method = in_array($this->smtp_tls_crypto_method, $validTlsCryptoMethods) ? $this->smtp_tls_crypto_method : array_shift($validTlsCryptoMethods); - if(($success = @stream_socket_enable_crypto($this->connection, 1, constant($tls_crypto_method)))) { - if($this->debug) $this->OutputDebug("TLS started: {$tls_crypto_method}"); - } else { - $this->error = "could not start TLS connection encryption protocol: {$tls_crypto_method}"; - if($this->debug) $this->OutputDebug("could not start TLS connection encryption protocol: {$tls_crypto_method}"); - } - - // Start SMTP, if TLS method is supported and working - if($success) { - $success = $this->StartSMTP($localhost); - } - } - } - if($success && $this->allow_without_authentication) - { - // we explicitly check if connecting without user name and password is allowed, - // or if the credentials are empty by accident - } - else if($success - //&& strlen($this->user) // this disables connections without authentication, see: https://processwire.com/talk/topic/5704-module-wiremailsmtp/page-2#entry75745 - && strlen($this->pop3_auth_host)==0) - { - if(!IsSet($this->esmtp_extensions["AUTH"])) - { - $this->error="server does not require authentication"; - if(IsSet($this->esmtp_extensions["STARTTLS"])) - $this->error .= ', it probably requires starting TLS'; - $success=0; - } - else - { - // we explicitly check if connecting without user name and password is allowed, - // or if the credentials are empty by accident - if(!strlen($this->user) || !strlen($this->password)) { - $this->error="missing SMTP user name and / or missing SMTP password"; - $success=0; - } - else - { - - if(strlen($this->authentication_mechanism)) - $mechanisms=array($this->authentication_mechanism); - else - { - $mechanisms=array(); - for($authentication=$this->Tokenize($this->esmtp_extensions["AUTH"]," ");strlen($authentication);$authentication=$this->Tokenize(" ")) - $mechanisms[]=$authentication; - } - $credentials=array( - "user"=>$this->user, - "password"=>$this->password - ); - if(strlen($this->realm)) - $credentials["realm"]=$this->realm; - if(strlen($this->workstation)) - $credentials["workstation"]=$this->workstation; - if(strlen($this->token)) - $credentials["token"]=$this->token; - $success=$this->SASLAuthenticate($mechanisms,$credentials,$authenticated,$mechanism); - if(!$success - && !strcmp($mechanism,"PLAIN")) - { - /* - * Author: Russell Robinson, 25 May 2003, http://www.tectite.com/ - * Purpose: Try various AUTH PLAIN authentication methods. - */ - $mechanisms=array("PLAIN"); - $credentials=array( - "user"=>$this->user, - "password"=>$this->password - ); - if(strlen($this->realm)) - { - /* - * According to: http://www.sendmail.org/~ca/email/authrealms.html#authpwcheck_method - * some sendmails won't accept the realm, so try again without it - */ - $success=$this->SASLAuthenticate($mechanisms,$credentials,$authenticated,$mechanism); - } - if(!$success) - { - /* - * It was seen an EXIM configuration like this: - * user^password^unused - */ - $credentials["mode"]=SASL_PLAIN_EXIM_DOCUMENTATION_MODE; - $success=$this->SASLAuthenticate($mechanisms,$credentials,$authenticated,$mechanism); - } - if(!$success) - { - /* - * ... though: http://exim.work.de/exim-html-3.20/doc/html/spec_36.html - * specifies: ^user^password - */ - $credentials["mode"]=SASL_PLAIN_EXIM_MODE; - $success=$this->SASLAuthenticate($mechanisms,$credentials,$authenticated,$mechanism); - } - } - if($success - && strlen($mechanism)==0) - { - $this->error="it is not supported any of the authentication mechanisms required by the server"; - $success=0; - } - } - } - } - } - if($success) - { - $this->state="Connected"; - $this->connected_domain=$domain; - } - else - { - fclose($this->connection); - $this->connection=0; - } - return($success); - } -/* -{metadocument} - - -{/metadocument} -*/ - -/* -{metadocument} - - MailFrom - BOOLEAN - - Set the address of the message sender. - Call this function right after establishing a connection with - the Connect function. - The function returns - 1 if the sender address is - successfully set. - - - sender - STRING - - E-mail address of the sender. - - - -{/metadocument} -*/ - Function MailFrom($sender) - { - if($this->direct_delivery) - { - switch($this->state) - { - case "Disconnected": - $this->direct_sender=$sender; - return(1); - case "Connected": - $sender=$this->direct_sender; - break; - default: - $this->error="direct delivery connection is already established and sender is already set"; - return(0); - } - } - else - { - if(strcmp($this->state,"Connected")) - { - $this->error="connection is not in the initial state"; - return(0); - } - } - $this->error=""; - if(!$this->PutLine("MAIL FROM:<$sender>")) - return(0); - if(!IsSet($this->esmtp_extensions["PIPELINING"]) - && $this->VerifyResultLines("250",$responses)<=0) - return(0); - $this->state="SenderSet"; - if(IsSet($this->esmtp_extensions["PIPELINING"])) - $this->pending_sender=1; - $this->pending_recipients=0; - return(1); - } -/* -{metadocument} - - -{/metadocument} -*/ - -/* -{metadocument} - - SetRecipient - BOOLEAN - - Set the address of a message recipient. - Call this function repeatedly for each recipient right after - setting the message sender with the - MailFrom function. - The function returns - 1 if the recipient address is - successfully set. - - - recipient - STRING - - E-mail address of a recipient. - - - -{/metadocument} -*/ - Function SetRecipient($recipient) - { - if($this->direct_delivery) - { - if(GetType($at=strrpos($recipient,"@"))!="integer") - return("it was not specified a valid direct recipient"); - $domain=substr($recipient,$at+1); - switch($this->state) - { - case "Disconnected": - if(!$this->Connect($domain)) - return(0); - if(!$this->MailFrom("")) - { - $error=$this->error; - $this->Disconnect(); - $this->error=$error; - return(0); - } - break; - case "SenderSet": - case "RecipientSet": - if(strcmp($this->connected_domain,$domain)) - { - $this->error="it is not possible to deliver directly to recipients of different domains"; - return(0); - } - break; - default: - $this->error="connection is already established and the recipient is already set"; - return(0); - } - } - else - { - switch($this->state) - { - case "SenderSet": - case "RecipientSet": - break; - default: - $this->error="connection is not in the recipient setting state"; - return(0); - } - } - $this->error=""; - if(!$this->PutLine("RCPT TO:<$recipient>")) - return(0); - if(IsSet($this->esmtp_extensions["PIPELINING"])) - { - $this->pending_recipients++; - if($this->pending_recipients>=$this->maximum_piped_recipients) - { - if(!$this->FlushRecipients()) - return(0); - } - } - else - { - if($this->VerifyResultLines(array("250","251"),$responses)<=0) - return(0); - } - $this->state="RecipientSet"; - return(1); - } -/* -{metadocument} - - -{/metadocument} -*/ - -/* -{metadocument} - - StartData - BOOLEAN - - Tell the SMTP server that the message data will start being - sent. - Call this function right after you are done setting all the - message recipients with the - SetRecipient function. - The function returns - 1 if the server is ready to - start receiving the message data. - - -{/metadocument} -*/ - Function StartData() - { - if(strcmp($this->state,"RecipientSet")) - { - $this->error="connection is not in the start sending data state"; - return(0); - } - $this->error=""; - if(!$this->PutLine("DATA")) - return(0); - if($this->pending_recipients) - { - if(!$this->FlushRecipients()) - return(0); - } - if($this->VerifyResultLines("354",$responses)<=0) - return(0); - $this->state="SendingData"; - return(1); - } -/* -{metadocument} - - -{/metadocument} -*/ - -/* -{metadocument} - - PrepareData - STRING - - Prepare message data to normalize line breaks and escaping - lines that contain single dots. - Call this function if the message data you want to send may - contain line breaks that are not the - sequence or it may contain - lines that just have a single dot. - Resulting normalized messages data. - - - data - STRING - - Message data to be prepared. - - - -{/metadocument} -*/ - Function PrepareData($data) - { - return(preg_replace(array("/\n\n|\r\r/","/(^|[^\r])\n/","/\r([^\n]|\$)/D","/(^|\n)\\./"),array("\r\n\r\n","\\1\r\n","\r\n\\1","\\1.."),$data)); - } -/* -{metadocument} - - -{/metadocument} -*/ - -/* -{metadocument} - - SendData - BOOLEAN - - Send message data. - Call this function repeatedly for all message data blocks - to be sent right after start sending message data with the - StartData function. - The function returns - 1 if the message data was - sent to the SMTP server successfully. - - - data - STRING - - Message data to be sent. - - - -{/metadocument} -*/ - Function SendData($data) - { - if(strcmp($this->state,"SendingData")) - { - $this->error="connection is not in the sending data state"; - return(0); - } - $this->error=""; - return($this->PutData($data)); - } -/* -{metadocument} - - -{/metadocument} -*/ - -/* -{metadocument} - - EndSendingData - BOOLEAN - - Tell the server that all the message data was sent. - Call this function when you are done with sending the message - data with the SendData function. - The function returns - 1 if the server accepted the - message. - - -{/metadocument} -*/ - Function EndSendingData() - { - if(strcmp($this->state,"SendingData")) - { - $this->error="connection is not in the sending data state"; - return(0); - } - $this->error=""; - if(!$this->PutLine("\r\n.") - || $this->VerifyResultLines("250",$responses)<=0) - return(0); - $this->state="Connected"; - return(1); - } -/* -{metadocument} - - -{/metadocument} -*/ - -/* -{metadocument} - - ResetConnection - BOOLEAN - - Reset an already established SMTP connection to the initial - state. - Call this function when there was an error sending a message - and you need to skip to sending another message without - disconnecting. - The function returns - 1 if the connection was - resetted successfully. - - -{/metadocument} -*/ - Function ResetConnection() - { - switch($this->state) - { - case "Connected": - return(1); - case "SendingData": - $this->error="can not reset the connection while sending data"; - return(0); - case "Disconnected": - $this->error="can not reset the connection before it is established"; - return(0); - } - $this->error=""; - if(!$this->PutLine("RSET") - || $this->VerifyResultLines("250",$responses)<=0) - return(0); - $this->state="Connected"; - return(1); - } -/* -{metadocument} - - -{/metadocument} -*/ - -/* -{metadocument} - - Disconnect - BOOLEAN - - Terminate a previously opened connection. - Call this function after you are done sending your - messages. - The function returns - 1 if the connection was - successfully closed. - - - quit - BOOLEAN - 1 - - Boolean option that tells whether the class should - perform the final connection quit handshake, or just close the - connection without waiting. - - - -{/metadocument} -*/ - Function Disconnect($quit=1) - { - if(!strcmp($this->state,"Disconnected")) - { - $this->error="it was not previously established a SMTP connection"; - return(0); - } - $this->error=""; - if(!strcmp($this->state,"Connected") - && $quit - && (!$this->PutLine("QUIT") - || ($this->VerifyResultLines("221",$responses)<=0 - && !$this->disconnected_error))) - return(0); - if($this->disconnected_error) - $this->disconnected_error=0; - else - fclose($this->connection); - $this->connection=0; - $this->state="Disconnected"; - if($this->debug) - $this->OutputDebug("Disconnected."); - return(1); - } -/* -{metadocument} - - -{/metadocument} -*/ - -/* -{metadocument} - - SendMessage - BOOLEAN - - Send a message in a single call. - Call this function if you want to send a single messages to a - small number of recipients in a single call. - The function returns - 1 if the message was sent - successfully. - - - sender - STRING - - E-mail address of the sender. - - - - recipients - STRING - - Array with a list of the e-mail addresses of the - recipients of the message. - - - - headers - ARRAY - - Array with a list of the header lines of the message. - - - - body - STRING - - Body data of the message. - - - -{/metadocument} -*/ - Function SendMessage($sender,$recipients,$headers,$body) - { - if(($success=$this->Connect())) - { - if(($success=$this->MailFrom($sender))) - { - for($recipient=0;$recipientSetRecipient($recipients[$recipient]))) - break; - } - if($success - && ($success=$this->StartData())) - { - for($header_data="",$header=0;$headerSendData($header_data."\r\n") - && $this->SendData($this->PrepareData($body)) - && $this->EndSendingData()); - } - } - $error=$this->error; - $disconnect_success=$this->Disconnect($success); - if($success) - $success=$disconnect_success; - else - $this->error=$error; - } - return($success); - } -/* -{metadocument} - - -{/metadocument} -*/ - -}; - -/* - -{metadocument} -
-{/metadocument} - -*/ - -?> \ No newline at end of file diff --git a/site/modules/.WireMailSmtp/smtp_classes/smtp_message.php b/site/modules/.WireMailSmtp/smtp_classes/smtp_message.php deleted file mode 100644 index cef4ab0..0000000 --- a/site/modules/.WireMailSmtp/smtp_classes/smtp_message.php +++ /dev/null @@ -1,803 +0,0 @@ - - - - net.manuellemos.mimemessage - - smtp_message_class - @(#) $Id: smtp_message.php,v 1.36 2011/03/09 07:48:52 mlemos Exp $ - Copyright © (C) Manuel Lemos 1999-2004 - MIME E-mail message composing and sending via SMTP - Manuel Lemos - mlemos-at-acm.org - - - en - Implement an alternative message delivery method via SMTP - protocol, overriding the method of using the PHP mail() - function implemented by the base class. - This class should be used exactly the same way as the base - class for composing and sending messages. Just create a new object of - this class as follows and set only the necessary variables to - configure details of the SMTP delivery. - require('email_message.php');
- require('smtp.php');
- require('smtp_message.php');
-
- $message_object = new smtp_message_class;
- - Requirements - You need the - SMTP E-mail sending class - http://freshmeat.net/projects/smtpclass/ - to perform the actual message delivery via the SMTP - protocol. - - SMTP connection - Before sending a message by relaying it to a given SMTP server you - need set the smtp_host variable to that - server address. The localhost variable - needs to be set to the sending computer address. - You may also adjust the time the class will wait for establishing - a connection by changing the timeout - variable. - - Secure SMTP connections with SSL - Some SMTP servers, like for instance Gmail, require secure - connections via SSL. In that case it is necessary to set the - smtp_ssl variable to - 1. In the case of Gmail, it is also - necessary to set the connection port changing the - smtp_port variable to - 465. - SSL support requires at least PHP 4.3.0 with OpenSSL extension - enabled. - - Secure SMTP connections starting TLS after connections is established - Some SMTP servers, like for instance Hotmail, require starting the - TLS protocol after the connection is already established to exchange - data securely. In that case it is necessary to set the - smtp_start_tls variable to - 1. - Starting TLS protocol on an already established connection requires - at least PHP 5.1.0 with OpenSSL extension enabled. - - Authentication - Most servers only allow relaying messages sent by authorized - users. If the SMTP server that you want to use requires - authentication, you need to set the variables - smtp_user, - smtp_realm and - smtp_password. - The way these values need to be set depends on the server. Usually - the realm value is empty and only the user and password need to be - set. If the server requires authentication via NTLM - mechanism (Windows or Samba), you need to set the - smtp_realm to the Windows domain name - and also set the variable - smtp_workstation to the user workstation - name. - Some servers require that the authentication be done on a separate - server using the POP3 protocol before connecting to the SMTP server. - In this case you need to specify the address of the POP3 server - setting the smtp_pop3_auth_host - variable. - - Sending urgent messages with direct delivery - If you need to send urgent messages or obtain immediate confirmation - that a message is accepted by the recipient SMTP server, you can use - the direct delivery mode setting the - direct_delivery variable to - 1. This mode can be used to - send a message to only one recipient. - To use this mode, it is necessary to have a way to determine the - recipient domain SMTP server address. The class uses the PHP - getmxrr() function, but on some systems like for instance - under Windows, this function does not work. In this case you may - specify an equivalent alternative by setting the - smtp_getmxrr variable. See the SMTP - class page for available alternatives. - - Troubleshooting and debugging - If for some reason the delivery via SMTP is not working and the error - messages are not self-explanatory, you may set the - smtp_debug to - 1 to make the class output the - SMTP protocol dialog with the server. If you want to display this - dialog properly formatted in an HTML page, also set the - smtp_debug to - 1. - - Optimizing the delivery of messages to many recipients - When sending messages to many recipients, this class can hinted to - optimize its behavior by using the - SetBulkMail function. After calling this - function passing 1 to the - SetBulkMail - on - argument, when the message is sent this class opens - a TCP connection to the SMTP server but will not close it. This - avoids the overhead of opening and closing connections. - When the delivery of the messages to all recipients is done, the - connection may be closed implicitly by calling the - SetBulkMail function again passing - 0 to the - SetBulkMail - on - argument.
-
- -{/metadocument} -*/ - -class smtp_message_class extends email_message_class -{ - /* Private variables */ - - var $smtp; - var $line_break="\r\n"; - var $delivery = 0; - - /* Public variables */ - - /* Allow Self Signed Certificate */ - var $smtp_certificate = 0; // @flydev: https://processwire.com/talk/topic/5704-wiremailsmtp/page-5#entry113290 - - /* @horst: Allow Connections without Authentication */ - var $allow_without_authentication = 0; - - /* @horst: Allow to define the crypto method for TLS connections */ - var $smtp_tls_crypto_method = ''; - - /* @horst: Allow to define the crypto method for SSL connections */ - var $smtp_ssl_crypto_method = ''; - -/* -{metadocument} - - localhost - - - Specify the domain name of the computer sending the - message. - This value is used to identify the sending machine to the - SMTP server. When using the direct delivery mode, if this variable - is set to a non-empty string it used to generate the - Recieved header to show that the message passed by the - specified host address. To prevent confusing directly delivered - messages with spam, it is strongly recommended that you set this - variable to you server host name. - - -{/metadocument} -*/ - var $localhost=""; - -/* -{metadocument} - - smtp_host - STRING - - - Specify the address of the SMTP server. - Set to the address of the SMTP server that will relay the - messages. This variable is not used in direct delivery mode. - - -{/metadocument} -*/ - var $smtp_host="localhost"; - -/* -{metadocument} - - smtp_port - INTEGER - 25 - - Specify the TCP/IP port of SMTP server to connect. - Most servers work on port 25 . Certain e-mail services use - alternative ports to avoid firewall blocking. Gmail uses port - 465. - - -{/metadocument} -*/ - var $smtp_port=25; - -/* -{metadocument} - - smtp_ssl - BOOLEAN - 0 - - Specify whether it should use secure connections with SSL - to connect to the SMTP server. - Certain e-mail services like Gmail require SSL connections. - - -{/metadocument} -*/ - var $smtp_ssl=0; - -/* -{metadocument} - - smtp_start_tls - BOOLEAN - 0 - - Specify whether it should use secure connections starting - TLS protocol after connecting to the SMTP server. - Certain e-mail services like Hotmail require starting TLS - protocol after the connection to the SMTP server is already - established. - - -{/metadocument} -*/ - var $smtp_start_tls=0; - -/* -{metadocument} - - smtp_http_proxy_host_name - STRING - - - Specify name of the host when the connection should be - routed via an HTTP proxy. - Leave empty if no proxy should be used. - - -{/metadocument} -*/ - var $smtp_http_proxy_host_name=''; - -/* -{metadocument} - - smtp_http_proxy_host_port - INTEGER - 3128 - - Specify proxy port when the connection should be routed via - an HTTP proxy. - Change this variable if you need to use a proxy with a - specific port. - - -{/metadocument} -*/ - var $smtp_http_proxy_host_port=3128; - -/* -{metadocument} - - smtp_socks_host_name - STRING - - - Specify name of the host when the connection should be - routed via a SOCKS protocol proxy. - Leave empty if no proxy should be used. - - -{/metadocument} -*/ - var $smtp_socks_host_name = ''; - -/* -{metadocument} - - smtp_socks_host_port - INTEGER - 1080 - - Specify proxy port when the connection should be routed via - a SOCKS protocol proxy. - Change this variable if you need to use a proxy with a - specific port. - - -{/metadocument} -*/ - var $smtp_socks_host_port = 1080; - -/* -{metadocument} - - smtp_socks_version - STRING - - - Specify protocol version when the connection should be - routed via a SOCKS protocol proxy. - Change this variable if you need to use a proxy with a - specific SOCKS protocol version. - - -{/metadocument} -*/ - var $smtp_socks_version = '5'; - -/* -{metadocument} - - smtp_direct_delivery - BOOLEAN - 0 - - Boolean flag that indicates whether the message should be - sent in direct delivery mode. - Set this to 1 if you - want to send urgent messages directly to the recipient domain SMTP - server. - - -{/metadocument} -*/ - var $smtp_direct_delivery=0; - -/* -{metadocument} - - smtp_getmxrr - STRING - getmxrr - - Specify the name of the function that is called to determine - the SMTP server address of a given domain. - Change this to a working replacement of the PHP - getmxrr() function if this is not working in your system - and you want to send messages in direct delivery mode. - - -{/metadocument} -*/ - var $smtp_getmxrr="getmxrr"; - -/* -{metadocument} - - smtp_exclude_address - STRING - - - Specify an address that should be considered invalid - when resolving host name addresses. - In some networks any domain name that does not exist is - resolved as a sub-domain of the default local domain. If the DNS is - configured in such way that it always resolves any sub-domain of - the default local domain to a given address, it is hard to - determine whether a given domain does not exist. - If your network is configured this way, you may set this variable - to the address that all sub-domains of the default local domain - resolves, so the class can assume that such address is invalid. - - -{/metadocument} -*/ - var $smtp_exclude_address=""; - -/* -{metadocument} - - smtp_user - STRING - - - Specify the user name for authentication. - Set this variable if you need to authenticate before sending - a message. - - -{/metadocument} -*/ - var $smtp_user=""; - -/* -{metadocument} - - smtp_realm - STRING - - - Specify the user authentication realm. - Set this variable if you need to authenticate before sending - a message. - - -{/metadocument} -*/ - var $smtp_realm=""; - -/* -{metadocument} - - smtp_workstation - STRING - - - Specify the user authentication workstation needed when - using the NTLM authentication (Windows or Samba). - Set this variable if you need to authenticate before sending - a message. - - -{/metadocument} -*/ - var $smtp_workstation=""; - -/* -{metadocument} - - smtp_authentication_mechanism - STRING - - - Specify the user authentication mechanism that should be - used when authenticating with the SMTP server. - Set this variable if you need to force the SMTP connection to - authenticate with a specific authentication mechanism. Leave this - variable with an empty string if you want the authentication - mechanism be determined automatically from the list of mechanisms - supported by the server. - - -{/metadocument} -*/ - var $smtp_authentication_mechanism=""; - -/* -{metadocument} - - smtp_password - STRING - - - Specify the user authentication password. - Set this variable if you need to authenticate before sending - a message. - - -{/metadocument} -*/ - var $smtp_password=""; - -/* -{metadocument} - - smtp_pop3_auth_host - STRING - - - Specify the server address for POP3 based authentication. - Set this variable to the address of the POP3 server if the - SMTP server requires POP3 based authentication. - - -{/metadocument} -*/ - var $smtp_pop3_auth_host=""; - -/* -{metadocument} - - smtp_debug - BOOLEAN - 0 - - Specify whether it is necessary to output SMTP connection - debug information. - Set this variable to - 1 if you need to see - the progress of the SMTP connection and protocol dialog when you - need to understand the reason for delivery problems. - - -{/metadocument} -*/ - var $smtp_debug=0; - -/* -{metadocument} - - smtp_html_debug - BOOLEAN - 0 - - Specify whether the debug information should be outputted in - HTML format. - Set this variable to - 1 if you need to see - the debug output in a Web page. - - -{/metadocument} -*/ - var $smtp_html_debug=0; - -/* -{metadocument} - - esmtp - BOOLEAN - 1 - - Specify whether the class should try to use Enhanced SMTP - protocol features. - It is recommended to leave this variable set to - 1 so the class can take - advantage of Enhanced SMTP protocol features. - - -{/metadocument} -*/ - var $esmtp=1; - -/* -{metadocument} - - timeout - INTEGER - 25 - - Specify the connection timeout period in seconds. - Change this value if for some reason the timeout period seems - insufficient or otherwise it seems too long. - - -{/metadocument} -*/ - var $timeout=25; - -/* -{metadocument} - - invalid_recipients - ARRAY - - - Return the list of recipient addresses that were not - accepted by the SMTP server. - Check this variable after attempting to send a message to - figure whether there were any recipients that were rejected by the - SMTP server. - - -{/metadocument} -*/ - var $invalid_recipients=array(); - -/* -{metadocument} - - mailer_delivery - smtp $Revision: 1.36 $ - - Specify the text that is used to identify the mail - delivery class or sub-class. This text is appended to the - X-Mailer header text defined by the - mailer variable. - Do not change this variable. - - -{/metadocument} -*/ - var $mailer_delivery='smtp $Revision: 1.36 $'; - -/* -{metadocument} - - maximum_bulk_deliveries - INTEGER - 100 - - Specify the number of consecutive bulk mail deliveries - without disconnecting. - Lower this value if you have enabled the bulk mail mode but - the SMTP server does not accept sending more than a number of - messages within the same SMTP connection. - Set this value to 0 to never - disconnect during bulk mail mode unless an error occurs. - - -{/metadocument} -*/ - var $maximum_bulk_deliveries=100; - - Function SetRecipients(&$recipients,&$valid_recipients) - { - for($valid_recipients=$recipient=0,Reset($recipients);$recipientsmtp->SetRecipient($address)) - $valid_recipients++; - else - $this->invalid_recipients[$address]=$this->smtp->error; - } - return(1); - } - - Function ResetConnection($error) - { - if(IsSet($this->smtp)) - { - if(!$this->smtp->Disconnect() - && strlen($error) == 0) - $error = $this->smtp->error; - UnSet($this->smtp); - } - if(strlen($error)) - $this->OutputError($error); - return($error); - } - - Function StartSendingMessage() - { - if(function_exists("class_exists") - && !class_exists("smtp_class")) - return("the smtp_class class was not included"); - if(IsSet($this->smtp)) - return(""); - $this->smtp=new smtp_class; - $this->smtp->localhost=$this->localhost; - $this->smtp->host_name=$this->smtp_host; - $this->smtp->host_port=$this->smtp_port; - $this->smtp->ssl=$this->smtp_ssl; - $this->smtp->smtp_ssl_crypto_method=$this->smtp_ssl_crypto_method; // @horst - $this->smtp->start_tls=$this->smtp_start_tls; - $this->smtp->smtp_tls_crypto_method=$this->smtp_tls_crypto_method; // @horst - $this->smtp->http_proxy_host_name=$this->smtp_http_proxy_host_name; - $this->smtp->http_proxy_host_port=$this->smtp_http_proxy_host_port; - $this->smtp->socks_host_name=$this->smtp_socks_host_name; - $this->smtp->socks_host_port=$this->smtp_socks_host_port; - $this->smtp->socks_version=$this->smtp_socks_version; - $this->smtp->timeout=$this->timeout; - $this->smtp->debug=$this->smtp_debug; - $this->smtp->html_debug=$this->smtp_html_debug; - $this->smtp->direct_delivery=$this->smtp_direct_delivery; - $this->smtp->getmxrr=$this->smtp_getmxrr; - $this->smtp->exclude_address=$this->smtp_exclude_address; - $this->smtp->pop3_auth_host=$this->smtp_pop3_auth_host; - $this->smtp->user=$this->smtp_user; - $this->smtp->realm=$this->smtp_realm; - $this->smtp->workstation=$this->smtp_workstation; - $this->smtp->authentication_mechanism=$this->smtp_authentication_mechanism; - $this->smtp->password=$this->smtp_password; - $this->smtp->esmtp=$this->esmtp; - $this->smtp->smtp_certificate = $this->smtp_certificate; // @flydev: https://processwire.com/talk/topic/5704-wiremailsmtp/page-5#entry113290 - $this->smtp->allow_without_authentication = $this->allow_without_authentication; // @horst - if($this->smtp->Connect()) - { - $this->delivery = 0; - return(""); - } - return($this->ResetConnection($this->smtp->error)); - } - - Function SendMessageHeaders($headers) - { - $header_data=""; - $date=date("D, d M Y H:i:s T"); - if($this->smtp_direct_delivery - && strlen($this->localhost)) - { - $local_ip=gethostbyname($this->localhost); - $header_data.=$this->FormatHeader("Received","FROM ".$this->localhost." ([".$local_ip."]) BY ".$this->localhost." ([".$local_ip."]) WITH SMTP; ".$date)."\r\n"; - } - for($message_id_set=$date_set=0,$header=0,$return_path=$from=$to=$recipients=array(),Reset($headers);$headerGetRFC822Addresses($headers[$header_name],$from); - break; - case "to": - $error=$this->GetRFC822Addresses($headers[$header_name],$to); - break; - case "cc": - case "bcc": - $this->GetRFC822Addresses($headers[$header_name],$recipients); - break; - case "date": - $date_set=1; - break; - case "message-id": - $message_id_set=1; - break; - } - if(strcmp($error,"")) - return($this->ResetConnection($error)); - if(strtolower($header_name)=="bcc") - continue; - $header_data.=$this->FormatHeader($header_name,$headers[$header_name])."\r\n"; - } - if(count($from)==0) - return($this->ResetConnection("it was not specified a valid From header")); - Reset($return_path); - Reset($from); - $this->invalid_recipients=array(); - if(!$this->smtp->MailFrom(count($return_path) ? Key($return_path) : Key($from))) - return($this->ResetConnection($this->smtp->error)); - $r = 0; - if(count($to)) - { - if(!$this->SetRecipients($to,$valid_recipients)) - return($this->ResetConnection($this->smtp->error)); - $r += $valid_recipients; - } - if(!$date_set) - $header_data.="Date: ".$date."\r\n"; - if(!$message_id_set - && $this->auto_message_id) - { - $sender=(count($return_path) ? Key($return_path) : Key($from)); - $header_data.=$this->GenerateMessageID($sender)."\r\n"; - } - if(count($recipients)) - { - if(!$this->SetRecipients($recipients,$valid_recipients)) - return($this->ResetConnection($this->smtp->error)); - $r += $valid_recipients; - } - if($r==0) - return($this->ResetConnection("it were not specified any valid recipients")); - if(!$this->smtp->StartData() - || !$this->smtp->SendData($header_data."\r\n")) - return($this->ResetConnection($this->smtp->error)); - return(""); - } - - Function SendMessageBody($data) - { - return($this->smtp->SendData($this->smtp->PrepareData($data)) ? "" : $this->ResetConnection($this->smtp->error)); - } - - Function EndSendingMessage() - { - return($this->smtp->EndSendingData() ? "" : $this->ResetConnection($this->smtp->error)); - } - - Function StopSendingMessage() - { - ++$this->delivery; - if($this->bulk_mail - && !$this->smtp_direct_delivery - && ($this->maximum_bulk_deliveries == 0 - || $this->delivery < $this->maximum_bulk_deliveries)) - return(""); - return($this->ResetConnection('')); - } - - Function ChangeBulkMail($on) - { - if($on - || !IsSet($this->smtp)) - return(1); - return($this->smtp->Disconnect() ? "" : $this->ResetConnection($this->smtp->error)); - } -}; - -/* - -{metadocument} -
-{/metadocument} - -*/ - -?> diff --git a/site/modules/FieldtypeColor/FieldtypeColor.module b/site/modules/FieldtypeColor/FieldtypeColor.module index fcc3903..9bee5eb 100644 --- a/site/modules/FieldtypeColor/FieldtypeColor.module +++ b/site/modules/FieldtypeColor/FieldtypeColor.module @@ -8,7 +8,7 @@ * @copyright © 2017 Christoph Thelen * @license Licensed under GNU/GPL v3 * @link https://processwire.com/talk/topic/... - * @version 1.2.0 + * @version 1.2.2 * * * @since 1.0.1 2017/07/05 - better validation, spectrum options modifiable @@ -31,6 +31,8 @@ * @since 1.1.8 2023/07/17 added output format option: array([0,255], [0,255], [0,255]) indexed array: H,S,L * @since 1.1.9 2023/10/03 update sanitizeValue() formatColorString() * @since 1.2.0 2024/03/27 fixed PHP 8.1 deprecation warning on strlen() + * @since 1.2.1 2024/06/08 fixed PHP 8.1 deprecation warning hexdec() + * @since 1.2.2 2024/07/16 made functions hookable: sleepValue(), wakeupValue() * * * made for ProcessWire 3.x by Ryan Cramer @@ -43,11 +45,12 @@ class FieldtypeColor extends Fieldtype { public static function getModuleInfo() { return array( 'title' => 'Color', - 'version' => 120, + 'version' => 122, 'summary' => 'Field that stores a color value as 32bit integer reflecting a RGBA value. Many options for Input (HTML5 Inputfield Color, Textfield with changing background, various jQuery/JS ColorPickers, custom jQuery/JS/CSS) and Output (RGB, RGBA, HSL, HSLA, HEX, Array).', 'installs' => 'InputfieldColor', - 'href' => 'https://processwire.com/talk/topic/16679-fieldtypecolor/' - ); + 'href' => 'https://processwire.com/talk/topic/16679-fieldtypecolor/', + 'requires' => 'PHP>=7.2.0' + ); } public function ___getCompatibleFieldtypes(Field $field) { @@ -81,11 +84,11 @@ class FieldtypeColor extends Fieldtype { else throw New WireException('Expecting Hex color string (length 6 or 8 digits) with optional leading \'#\''); } - public function sleepValue(Page $page, Field $field, $value) { - return hexdec($value); + public function ___sleepValue(Page $page, Field $field, $value) { + return hexdec($value ?? ''); } - public function wakeupValue(Page $page, Field $field, $value) { + public function ___wakeupValue(Page $page, Field $field, $value) { if (!$value) return $value; if (function_exists("bcmod")) return str_pad(self::bcdechex($value), 8, '0', STR_PAD_LEFT); // BCMath extension required return str_pad(dechex($value), 8, '0', STR_PAD_LEFT); // 64-bit system required diff --git a/site/modules/FileValidatorSvgSanitizer-master/FileValidatorSvgSanitizer.config.php b/site/modules/FileValidatorSvgSanitizer/FileValidatorSvgSanitizer.config.php similarity index 100% rename from site/modules/FileValidatorSvgSanitizer-master/FileValidatorSvgSanitizer.config.php rename to site/modules/FileValidatorSvgSanitizer/FileValidatorSvgSanitizer.config.php diff --git a/site/modules/FileValidatorSvgSanitizer-master/FileValidatorSvgSanitizer.data.php b/site/modules/FileValidatorSvgSanitizer/FileValidatorSvgSanitizer.data.php similarity index 100% rename from site/modules/FileValidatorSvgSanitizer-master/FileValidatorSvgSanitizer.data.php rename to site/modules/FileValidatorSvgSanitizer/FileValidatorSvgSanitizer.data.php diff --git a/site/modules/FileValidatorSvgSanitizer-master/FileValidatorSvgSanitizer.module.php b/site/modules/FileValidatorSvgSanitizer/FileValidatorSvgSanitizer.module.php similarity index 100% rename from site/modules/FileValidatorSvgSanitizer-master/FileValidatorSvgSanitizer.module.php rename to site/modules/FileValidatorSvgSanitizer/FileValidatorSvgSanitizer.module.php diff --git a/site/modules/FileValidatorSvgSanitizer-master/README.md b/site/modules/FileValidatorSvgSanitizer/README.md similarity index 100% rename from site/modules/FileValidatorSvgSanitizer-master/README.md rename to site/modules/FileValidatorSvgSanitizer/README.md diff --git a/site/modules/FileValidatorSvgSanitizer-master/svgSanitize/ElementReference/Resolver.php b/site/modules/FileValidatorSvgSanitizer/svgSanitize/ElementReference/Resolver.php similarity index 100% rename from site/modules/FileValidatorSvgSanitizer-master/svgSanitize/ElementReference/Resolver.php rename to site/modules/FileValidatorSvgSanitizer/svgSanitize/ElementReference/Resolver.php diff --git a/site/modules/FileValidatorSvgSanitizer-master/svgSanitize/ElementReference/Subject.php b/site/modules/FileValidatorSvgSanitizer/svgSanitize/ElementReference/Subject.php similarity index 100% rename from site/modules/FileValidatorSvgSanitizer-master/svgSanitize/ElementReference/Subject.php rename to site/modules/FileValidatorSvgSanitizer/svgSanitize/ElementReference/Subject.php diff --git a/site/modules/FileValidatorSvgSanitizer-master/svgSanitize/ElementReference/Usage.php b/site/modules/FileValidatorSvgSanitizer/svgSanitize/ElementReference/Usage.php similarity index 100% rename from site/modules/FileValidatorSvgSanitizer-master/svgSanitize/ElementReference/Usage.php rename to site/modules/FileValidatorSvgSanitizer/svgSanitize/ElementReference/Usage.php diff --git a/site/modules/FileValidatorSvgSanitizer-master/svgSanitize/Exceptions/NestingException.php b/site/modules/FileValidatorSvgSanitizer/svgSanitize/Exceptions/NestingException.php similarity index 100% rename from site/modules/FileValidatorSvgSanitizer-master/svgSanitize/Exceptions/NestingException.php rename to site/modules/FileValidatorSvgSanitizer/svgSanitize/Exceptions/NestingException.php diff --git a/site/modules/FileValidatorSvgSanitizer-master/svgSanitize/Helper.php b/site/modules/FileValidatorSvgSanitizer/svgSanitize/Helper.php similarity index 100% rename from site/modules/FileValidatorSvgSanitizer-master/svgSanitize/Helper.php rename to site/modules/FileValidatorSvgSanitizer/svgSanitize/Helper.php diff --git a/site/modules/FileValidatorSvgSanitizer-master/svgSanitize/LICENSE b/site/modules/FileValidatorSvgSanitizer/svgSanitize/LICENSE similarity index 100% rename from site/modules/FileValidatorSvgSanitizer-master/svgSanitize/LICENSE rename to site/modules/FileValidatorSvgSanitizer/svgSanitize/LICENSE diff --git a/site/modules/FileValidatorSvgSanitizer-master/svgSanitize/README.md b/site/modules/FileValidatorSvgSanitizer/svgSanitize/README.md similarity index 100% rename from site/modules/FileValidatorSvgSanitizer-master/svgSanitize/README.md rename to site/modules/FileValidatorSvgSanitizer/svgSanitize/README.md diff --git a/site/modules/FileValidatorSvgSanitizer-master/svgSanitize/Sanitizer.php b/site/modules/FileValidatorSvgSanitizer/svgSanitize/Sanitizer.php similarity index 100% rename from site/modules/FileValidatorSvgSanitizer-master/svgSanitize/Sanitizer.php rename to site/modules/FileValidatorSvgSanitizer/svgSanitize/Sanitizer.php diff --git a/site/modules/FileValidatorSvgSanitizer-master/svgSanitize/data/AllowedAttributes.php b/site/modules/FileValidatorSvgSanitizer/svgSanitize/data/AllowedAttributes.php similarity index 100% rename from site/modules/FileValidatorSvgSanitizer-master/svgSanitize/data/AllowedAttributes.php rename to site/modules/FileValidatorSvgSanitizer/svgSanitize/data/AllowedAttributes.php diff --git a/site/modules/FileValidatorSvgSanitizer-master/svgSanitize/data/AllowedTags.php b/site/modules/FileValidatorSvgSanitizer/svgSanitize/data/AllowedTags.php similarity index 100% rename from site/modules/FileValidatorSvgSanitizer-master/svgSanitize/data/AllowedTags.php rename to site/modules/FileValidatorSvgSanitizer/svgSanitize/data/AllowedTags.php diff --git a/site/modules/FileValidatorSvgSanitizer-master/svgSanitize/data/AttributeInterface.php b/site/modules/FileValidatorSvgSanitizer/svgSanitize/data/AttributeInterface.php similarity index 100% rename from site/modules/FileValidatorSvgSanitizer-master/svgSanitize/data/AttributeInterface.php rename to site/modules/FileValidatorSvgSanitizer/svgSanitize/data/AttributeInterface.php diff --git a/site/modules/FileValidatorSvgSanitizer-master/svgSanitize/data/TagInterface.php b/site/modules/FileValidatorSvgSanitizer/svgSanitize/data/TagInterface.php similarity index 100% rename from site/modules/FileValidatorSvgSanitizer-master/svgSanitize/data/TagInterface.php rename to site/modules/FileValidatorSvgSanitizer/svgSanitize/data/TagInterface.php diff --git a/site/modules/FileValidatorSvgSanitizer-master/svgSanitize/data/XPath.php b/site/modules/FileValidatorSvgSanitizer/svgSanitize/data/XPath.php similarity index 100% rename from site/modules/FileValidatorSvgSanitizer-master/svgSanitize/data/XPath.php rename to site/modules/FileValidatorSvgSanitizer/svgSanitize/data/XPath.php diff --git a/site/modules/ImageRasterizer/ImageRasterizer.module b/site/modules/ImageRasterizer/ImageRasterizer.module new file mode 100644 index 0000000..7bdc73d --- /dev/null +++ b/site/modules/ImageRasterizer/ImageRasterizer.module @@ -0,0 +1,391 @@ + 'ImageRasterizer', + 'version' => '0.2.4', + 'summary' => 'Admin and front-end resizing and rasterizing of vector SVG images', + 'href' => 'http://modules.processwire.com/modules/image-rasterizer/', + 'singular' => true, + 'autoload' => true, + 'icon' => 'file-image-o' + ); + } + + protected static $configDefaults = array( + // global + "rasterizedImagesField" => "same", + "rasterDimensions" => "", + "format" => "png", + "image_type" => 7, + "image_depth" => 8, + "jpg_compression" => "90", + "jpg_background_color" => "#FFFFFF", + "png_background_color" => "#FFFFFF" + ); + + /** + * Data as used by the get/set functions + * + */ + protected $data = array(); + protected $thumbWidth = 0; + protected $thumbHeight = 100; + + + /** + * Initialize the module + * + */ + public function init() { + } + + public function ready() { + if($this->page->template == 'admin'){ + $this->addHook('Pageimage::isVariation', $this, 'isVariationWithRasterizer'); + $this->addHookBefore('InputfieldFile::fileAdded', $this, 'rasterizeImage'); + if($this->rasterizedImagesField == 'replace') { + $this->addHookAfter('InputfieldImage::renderItem', $this, 'rasterizeThumb'); + } + } + else{ + $this->addHook('Pageimage::rasterize', $this, 'rasterizeImage'); + } + } + + + public function rasterizeThumb(HookEvent $event){ + $this->thumbWidth = $this->config->adminThumbOptions['width'] ? $this->config->adminThumbOptions['width'] : $this->thumbWidth; + $this->thumbHeight = $this->config->adminThumbOptions['height'] ? $this->config->adminThumbOptions['height'] : $this->thumbHeight; + $dom = new DOMDocument(); + libxml_use_internal_errors(true); //hide any errors that relate to invalid HTML in the textarea code + $dom->loadHTML(mb_convert_encoding($event->return, 'HTML-ENTITIES', 'UTF-8')); + foreach($dom->getElementsByTagName('img') as $img) { + $fullFilename = $img->getAttribute('src'); + if(strpos(pathinfo($fullFilename, PATHINFO_EXTENSION), 'svg') !== FALSE) { + $this->rasterizeImage($event); + $img->setAttribute('src', str_replace(".svg", ".".$this->thumbWidth."x".$this->thumbHeight.".".$this->format, $fullFilename)); + } + } + $event->return = $dom->saveHTML(); + } + + + public function rasterizeImage(HookEvent $event){ + + if($this->page->template == 'admin'){ + $image = $event->argumentsByName("pagefile"); + $fieldname = $event->object->name; + } + else{ //must be a front-end call from rasterize() + $image = $event->object; + $fieldname = $image->field; + } + + // get actual fieldname if it's a repeater field + if (strpos($fieldname, '_repeater') !== false) $fieldname = strstr($fieldname, '_repeater', true); + + if(pathinfo($image->filename, PATHINFO_EXTENSION) != 'svg') return; // leave now if we are not dealing with an SVG file + + // these are the values sent when using rasterize(w,h) + if($this->page->template != 'admin'){ + $rasterizeWidth = $event->arguments(0); + $rasterizeHeight = $event->arguments(1); + } + + elseif($this->page->template == 'admin' && $this->rasterizedImagesField == 'replace'){ + $rasterizeWidth = $this->thumbWidth; + $rasterizeHeight = $this->thumbHeight; + } + + if(($this->page->template == 'admin' && $this->rasterizedImagesField != 'replace') || (!isset($rasterizeWidth) && !isset($rasterizeHeight))){ + $new_img_path = str_replace('.svg', '.'.$this->format, $image->filename); + } + else{ + $new_img_path = str_replace('.svg', '.'.$rasterizeWidth.'x'.$rasterizeHeight.'.'.$this->format, $image->filename); + } + + if(!$this->page->$fieldname) { //if the current page does not contain the image field - eg an ajax called script + $pathSegments = explode('/', $new_img_path); + $pageId = (int) $pathSegments[count($pathSegments)-2]; + $imagePage = $this->pages->get($pageId); + } + else { + $imagePage = $this->page; + } + + //various checks to stop this module from starting the rasterize process + if(file_exists($new_img_path)){ + $new_img = new Pageimage($imagePage->$fieldname, $new_img_path); + $event->return = $new_img; + return; //if rasterized variation already exists, return it now + } + + if($this->rasterizedImagesField == 'none' && $this->page->template == 'admin') return; + + if($this->rasterizedImagesField != 'none'){ + $inputfield = $this->rasterizedImagesField == 'same' || $this->rasterizedImagesField == 'replace' || $this->rasterizedImagesField == '' ? $this->fields->get($fieldname) : $this->fields->get($this->rasterizedImagesField); //set inputfield for rasterized image + if(!$inputfield) return; + if(!$inputfield->type instanceof FieldtypeImage) return; + } + + //if we get this far, get SVG details, resize and rasterize + clearstatcache(); + $im = new Imagick(); + if($this->format == 'png'){ + // http://www.php.net/manual/en/imagick.getimagetype.php - "7" is imagick::IMGTYPE_TRUECOLORMATTE + $png_background_color = $this->image_type == '7' ? new ImagickPixel("transparent") : $this->png_background_color; + $im->setBackgroundColor($png_background_color); + } + else{ + $im->setBackgroundColor($this->jpg_background_color); + } + + //read the image to get the existing resolution and dimensions + $im->readImage($image->filename); + $res = $im->getImageResolution(); + + //get initial dimensions from the SVG + $initialWidth = $im->getImageWidth(); + $initialHeight = $im->getImageHeight(); + + //get entered dimensions from module config settings + $rasterDimensions = ''; + if($this->rasterDimensions != '') $rasterDimensions = explode(",", preg_replace('/\s+/', '', $this->rasterDimensions)); + + //set new dimensions to those in the module config settings, or if not set, then to the original dimensions of the SVG + $newWidth = $rasterDimensions ? $rasterDimensions[0] : $initialWidth; + $newHeight = $rasterDimensions ? $rasterDimensions[1] : $initialHeight; + + if($this->page->template != 'admin' || $this->rasterizedImagesField == 'replace'){ //if front-end rasterize (or replacing admin thumb), and dimensions set, override dimensions just set above + //if no dimensions specified in rasterize(), use the ones entered in the module config settings or revert to initial dimensions + if(isset($rasterizeWidth)) $newWidth = $rasterizeWidth; + if(isset($rasterizeHeight)) $newHeight = $rasterizeHeight; + } + + // if one of the dimensions is set to 0 (which it should be), then calculate the other dimension, otherwise just squish the image. Maybe should be cropping instead, but this could be handled by using a PW ->size() on the newly created PNG. + if($newWidth == 0 || $newHeight == 0){ + if($newWidth > $newHeight){ + $newHeight = round($newWidth / $initialWidth * $initialHeight); + } + else{ + $newWidth = round($newHeight / $initialHeight * $initialWidth); + } + } + + // calculate the resolution required before rasterizing based on the initial dimensions and the final required dimensions + $x_res = round($res['x'] * $newWidth / $initialWidth); + $y_res = round($res['y'] * $newHeight / $initialHeight); + $im->removeImage(); // Remove the image because setResolution has to be called before readImage because the image gets rasterized after that, and setResolution has no effect. + $im->setResolution($x_res, $y_res); + $im->readImage($image->filename); + + //rasterize + if($this->format == 'png'){ + $im->setImageFormat("png"); + $im->setImageDepth($this->image_depth); + $im->setImageColorSpace(imagick::COLORSPACE_RGB); + $im->setImageType($this->image_type); + //$im->setOption("png:color-type","6"); + //$im->setOption("png:compression-level","9"); // 9 is highest compression and going down towards 0 just makes huge files with no obvious improvements in quality + } + else{ + $im->setImageFormat("jpg"); + $im->setImageCompression(imagick::COMPRESSION_JPEG); + $im->setImageCompressionQuality($this->jpg_compression); + } + + clearstatcache(); + + $im->writeImage($new_img_path); + + $im->clear(); + $im->destroy(); + + //add rasterized version to the images field + if($this->page->template == 'admin' && $this->rasterizedImagesField != 'replace' && $this->rasterizedImagesField != 'none'){ + $image_page = $this->pages->get((int) $this->input->get->id); + $image_page->$inputfield->add(str_replace('.svg', '.'.$this->format, $image->filename)); + $image_page->save($inputfield); + } + //front-end, so don't add to images field, just return the rasterized version to the rasterize() method for display + else{ + $new_img = new Pageimage($imagePage->$fieldname, $new_img_path); + $event->return = $new_img; + } + + } + + /** + * Remove any rasterized versions when deleting an SVG in the admin. + * This is for images that were created by the rasterize() method on the front-end and therefore not added to the Pageimage, hence the need for this. + * + */ + public function isVariationWithRasterizer($event) { + $pageimage = $event->object; + $variationName = basename($event->arguments[0]); + + // if the result of hooked method isn't false, or if the file isn't an SVG, leave now + if(pathinfo($pageimage->filename, PATHINFO_EXTENSION) != 'svg' || false!==$event->return) return $event->return; + + //check to see if the variation also exists in the pageimage - in that case, return and don't remove it. + $image_page = $this->pages->get((int) $this->input->get->id); + if(count($image_page->{$pageimage->field})) { + $variation_image = $image_page->{$pageimage->field}->get("$variationName"); + if($variation_image && !$variation_image->name =='') return $event->return; + } + + $basename = basename($pageimage->name, '.' . $pageimage->ext); + $re = '/^' . $basename . '.*?' . '\.(gif|jpg|png)' . '$/'; + if(preg_match($re, $variationName)) { + // we have a match, now return array with imageinfo + // (the following rows are taken from original method Pageimage::isVariation(), only regexp is modified) + $re2 = '/^.*?' . $basename . '\.' . + '(\d+)x(\d+)' . // 50x50 + '([pd]\d+x\d+|[a-z]{1,2})?' . // nw or p30x40 or d30x40 + '\.(gif|jpg|jpeg|png)' . // .ext + '$/'; + preg_match($re2, $variationName, $matches); + $info = array( + 'original' => $basename . '.' . $pageimage->ext, + 'width' => $matches[1], + 'height' => $matches[2], + 'crop' => (isset($matches[3]) ? $matches[3] : '') + ); + $event->return = $info; + return $event->return; + } + return false; + } + + + /** + * Get any inputfields used for configuration of this Fieldtype. + * + * This is in addition to any configuration fields supplied by the parent Inputfield. + * + * @param Field $field + * @return InputfieldWrapper + * + */ + public static function getModuleConfigInputfields(array $data) { + + $modules = wire('modules'); + + foreach(self::$configDefaults as $key => $value) { + if(!isset($data[$key]) || $data[$key]=='') $data[$key] = $value; + } + + $inputfields = new InputfieldWrapper(); + + $f = $modules->get("InputfieldSelect"); + $f->attr('name', 'rasterizedImagesField'); + $f->attr('value', $data["rasterizedImagesField"]); + $f->label = __('Rasterized Images Field'); + $f->description = __("The field to send the rasterized images to.\n\nChoose 'Same as source image' to save them to the same images field as the vector image.\nChoose 'Replace the source image thumbnail' to replace the SVG with a rasterized version when viewing the thumbnails in the admin. This can significantly speed things up with complex SVG files.\nChoose 'None' if you don't want a rasterized version saved to the images field. NB You'll still be able to access a raster version in your templates using the rasterize() method."); + $f->addOption('same', 'Same as source image'); + $f->addOption('replace', 'Replace the source image thumbnail'); + $f->addOption('none', 'None'); + // populate with all available fields + foreach(wire('fields') as $fieldoption) { + // filter out incompatible field types + if($fieldoption->type == "FieldtypeImage") $f->addOption($fieldoption->name); + } + $inputfields->add($f); + + $f = $modules->get("InputfieldText"); + $f->attr('name', 'rasterDimensions'); + $f->attr('value', $data["rasterDimensions"]); + $f->attr('size', 10); + $f->label = __('Raster Dimensions'); + $f->description = __('This determines dimensions of the rasterized version. Leave blank to keep same existing dimensions from the SVG.'); + $f->notes = __("Width, Height. Be sure to enter 0 for one dimension to ensure proportional scaling, eg: 500,0"); + $inputfields->add($f); + + $f = $modules->get("InputfieldSelect"); + $f->attr('name', 'format'); + $f->attr('value', $data["format"]); + $f->label = __('Image Format'); + $f->addOption('png'); + $f->addOption('jpg'); + $inputfields->add($f); + + //http://www.php.net/manual/en/imagick.getimagetype.php + $f = $modules->get("InputfieldSelect"); + $f->showIf = "format=png"; + $f->attr('name', 'image_type'); + $f->attr('value', $data["image_type"]); + $f->label = __('Color Type'); + $f->addOption('7', 'True Color Alpha Transparent'); + $f->addOption('6', 'True Color'); + $f->addOption('4', 'Pallete'); + $inputfields->add($f); + + //http://www.php.net/manual/en/gmagick.setimagedepth.php + $f = $modules->get("InputfieldSelect"); + $f->showIf = "format=png"; + $f->attr('name', 'image_depth'); + $f->attr('value', $data["image_depth"]); + $f->label = __('Image Depth'); + $f->addOption('8', '8'); + $f->addOption('16', '16'); + $f->addOption('32', '32'); + $f->notes = __("Default: 8"); + $inputfields->add($f); + + $f = $modules->get("InputfieldText"); + $f->showIf = "format=jpg"; + $f->attr('name', 'jpg_background_color'); + $f->attr('value', $data["jpg_background_color"]); + $f->attr('size', 10); + $f->label = __('Background (Matte) Color'); + $f->notes = __("Default: #FFFFFF"); + $inputfields->add($f); + + $f = $modules->get("InputfieldText"); + $f->showIf = "format=png, image_type!=7"; + $f->attr('name', 'png_background_color'); + $f->attr('value', $data["png_background_color"]); + $f->attr('size', 10); + $f->label = __('Background (Matte) Color'); + $f->notes = __("Default: #FFFFFF"); + $inputfields->add($f); + + $f = $modules->get("InputfieldText"); + $f->showIf = "format=jpg"; + $f->description = __('This determines filesize and image quality as percentage. 100 is the best quality and largest file size.'); + $f->attr('name', 'jpg_compression'); + $f->attr('value', $data["jpg_compression"]); + $f->attr('size', 10); + $f->label = __('JPG Compression Level'); + $f->notes = __("Default: 90"); + $inputfields->add($f); + + return $inputfields; + + } + +} diff --git a/site/modules/ImageRasterizer/LICENSE b/site/modules/ImageRasterizer/LICENSE new file mode 100644 index 0000000..22fbe5d --- /dev/null +++ b/site/modules/ImageRasterizer/LICENSE @@ -0,0 +1,339 @@ +GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + {description} + Copyright (C) {year} {fullname} + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + {signature of Ty Coon}, 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. \ No newline at end of file diff --git a/site/modules/ImageRasterizer/README.md b/site/modules/ImageRasterizer/README.md new file mode 100644 index 0000000..654314a --- /dev/null +++ b/site/modules/ImageRasterizer/README.md @@ -0,0 +1,50 @@ +ImageRasterizer +=============== + +ProcessWire module for admin and front-end resizing and rasterizing of vector SVG images + +###Requirements +IMPORTANT: This module requires Imagemagick and the pecl imagick extension. For anything but simple SVGs, you must make sure imagemagick was compiled with a relatively recent version of rsvg (I know that 2.32.1 works well and presumably anything more recent should also be fine). + +If you don't manage your own server and the results are not good, check with your host. If everything is set up correctly, the rendered PNGs will be "perfect" representations of the SVGs. + + +###How to use + +You must add SVG as an allowed file type for an images field. + +Check the module configuration for a variety of settings for both PNG and JPG output options. +In particular be aware of the Rasterized Images Field selector: +* If you choose "None" only the SVG will be stored in the images field. You can still access rasterized versions via the rasterize() method - see below for details. +* If you choose 'Replace the source image thumbnail' it will replace the SVG with a rasterized version when viewing the thumbnails in the admin. This can significantly speed things up with complex SVG files. + +Once the module configuration settings are completed: +* Upload an SVG image and the module will create a rasterized version. +* You need to save the page to see the rasterized version which can then be accessed via the API like any other image. +* The module also adds a new method: rasterize() which can be called from your templates like: +``` +$image->rasterize(200,0)->url +``` +* This method optionally resizes the vector version of the image and then rasterizes it so you can scale it infinitely and there will be no loss of quality. Make sure you point it to the svg version in your images field. + +####Support Forum +http://processwire.com/talk/topic/4632-image-rasterizer/ + + +## License + +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +(See included LICENSE file for full license text.) diff --git a/site/modules/ProcessRSSFetch/ProcessRSSFetch.module b/site/modules/ProcessRSSFetch/ProcessRSSFetch.module new file mode 100644 index 0000000..765968a --- /dev/null +++ b/site/modules/ProcessRSSFetch/ProcessRSSFetch.module @@ -0,0 +1,236 @@ +' => ' ', + '
' => ' ', + '

' => ' ', + "\n" => ' ', + "\r" => ' ', + ); + + public static function getModuleInfo() + { + return array( + 'title' => 'ProcessWire RSS Fetch', + 'summary' => 'ProcessWire External RSS Feed Fetch', + 'version' => 001, + 'author' => 'Laegnur', + 'href' => 'https://laegnur.artabro.org/', + 'icon' => 'rss' + ); + } + + public function ___execute() + { + $form = $this->modules->get("InputfieldForm"); + $form->action = "./"; + $form->method = "post"; + $form->attr("id+name",'rssfetch-form'); + + $fieldText = $this->modules->get("InputfieldText"); + $fieldText->label = "RSS feed"; + $fieldText->name = 'rss'; + $fieldText->description = "URL del feed RSS"; + $fieldText->columnWidth = 100; + $fieldText->required = 1; + $form->append($fieldText); + + $submit = $this->modules->get("InputfieldSubmit"); + $submit->attr("value","Traer posts"); + $submit->attr("id+name","submit"); + $form->append($submit); + + $out = $form->render(); + + if($this->input->post->submit) + { + set_time_limit(600); + + $form->processInput($this->input->post); + if(!$form->getErrors()) + { + $this->items = new WireArray(); + $xmlData = $this->loadXmlData($this->input->post->rss); + $rss = simplexml_load_string($xmlData); + if(!$rss) + { + $msg = "Unable to load RSS feed at $url: \n"; + foreach(libxml_get_errors() as $error) $msg .= $error . " \n"; + $out .= $msg; + return $out; + } + + foreach($rss->channel->category as $category) + { + $name = $this->sanitizer->pageNameTranslate($category); + + if(($this->pages->findOne("template=etiqueta,name=$name") instanceof NullPage)) + { + $t = new Page(); + $t->template = 'etiqueta'; + $t->parent = wire('pages')->get('/noticias/etiquetas/'); + $t->name = $name; + $t->title = $category; + $t->save(); + + $this->log('Creada etiqueta: ' . $category, ['name' => 'rssfetch']); + } + else + { + $this->log('Etiqueta ya existente: ' . $category, ['name' => 'rssfetch']); + } + } + foreach($rss->channel->item as $item) + { + $title = ''; + $date = ''; + $img = ''; + $content = ''; + $category = array(); + $tags = array(); + + foreach($item as $key => $value) + { + switch ($key) + { + case 'pubDate': + $date = $value; + break; + case 'title': + $title = $value; + break; + case 'description': + $content = $this->cleanText($value); + break; + case 'media:thumbnail': + $attributes = $key->attributes(); + $img = $attributes['url']; + break; + case 'category': + $tags[] = $value; + break; + default: + break; + } + + } + + $out .= '[ '. "\n" . 'Data: ' . $date . "\n" . 'Titulo: ' . $title . "\n" . 'Contenido: ' . $content . "\n" . 'Img: ' . $img . "\n" . 'Etiquetas: ' . implode(', ', $tags) . "\n" . ']'. "\n"; + + /*$p = new Page(); + $p->template = 'publicacion'; + $p->parent = wire('pages')->get('/noticias/publicaciones/'); + $p->addStatus(Page::statusUnpublished); + + $p + + $p->save();*/ + } + } + return $out; + } + return $out; + } + + public function install() + { + $page = new Page(); + + $page->template = "admin"; + $page->name = "feed-fetch"; + $page->title = "RSS Feed Fetch"; + $page->save(); + + $page->process = 'ProcessRSSFetch'; + + $admin = $this->pages->get("id=2"); + $page->parent = $admin; + + $page->save(); + } + + public function uninstall() + { + $page = $this->pages->get("name=feed-fetch"); + if(count($page)) $this->pages->delete($page, true); + } + + /** + * Load XML data from either the RSS URL or the cache file + * + * @param string $url + * @return bool|string + * + */ + protected function loadXmlData($url) + { + $cacheFile = $this->config->paths->cache . $this->className() . '/' . md5($url) . '.xml.cache'; + + if(!is_file($cacheFile) || time() - filemtime($cacheFile) > 120) + { + $http = new WireHttp(); + $this->wire($http); + $xmlData = $http->get($url); + if(empty($xmlData)) + { + $this->error("Unable to load: $url"); + return false; + } + else + { + @file_put_contents($cacheFile, $xmlData, LOCK_EX); + } + } + else + { + $xmlData = file_get_contents($cacheFile); + if($xmlData === false) + { + $this->error("Unable to load XML data cache"); + return false; + } + } + + return $xmlData; + } + + /** + * Cleans text string from a feed before storage in our object + * + * @param string $value + * @return string + * + */ + protected function cleanText($value) + { + if(count($this->replacements)) + { + $value = str_ireplace(array_keys($this->replacements), array_values($this->replacements), $value); + } + $value = trim(strip_tags($value)); + + if(mb_strlen($value, "UTF-8") > 2048) + { + $value = mb_substr($value, 0, 2048, "UTF-8"); + } + + $sanitizer = $this->wire('sanitizer'); + $value = $sanitizer->unentities($value); + $value = $sanitizer->entities($value); + + return $value; + } +} \ No newline at end of file diff --git a/site/modules/pw-admin-custom-pages/FieldtypeAdminCustomPagesSelect.module b/site/modules/pw-admin-custom-pages/FieldtypeAdminCustomPagesSelect.module new file mode 100644 index 0000000..72264a5 --- /dev/null +++ b/site/modules/pw-admin-custom-pages/FieldtypeAdminCustomPagesSelect.module @@ -0,0 +1,97 @@ + 'Admin Custom Pages Select', + 'version' => 100, + 'summary' => __('This Fieldtype creates a template selector for "Admin Custom Pages".') + ); + } + + public function getInputfield(Page $page, Field $field) { + + $inputfield = $this->modules->get('InputfieldSelect'); + $inputfield->showIf = 'process=ProcessAdminCustomPages'; + $inputfield->addOption(''); // blank or unselected option + + $options = $this->getOptions(); + + foreach($options as $option) { + $inputfield->addOption($option['path'],$option['basename']); + } + return $inputfield; + } + + private function getOptions() { + // Not sure but I think it's easier if choose the file directly instead of creating a template first + $globPath = $this->config->paths->templates; + $files = $this->rglob('*.php', 0, $globPath); + + foreach($files as $file) { + $templateFiles[] = array( + 'path' => str_replace(wire('config')->paths->root, '', $file), // Make path relative + 'basename' => str_replace($globPath, '', $file) + ); + } + + return $templateFiles; + } + + + // recursive looking for templates + private function rglob($pattern = '*', $flags = 0, $path = '') { + $paths = @glob($path.'*', GLOB_MARK|GLOB_ONLYDIR|GLOB_NOSORT); + $files = array(); + $files = @glob($path.$pattern, $flags); + + + foreach ($paths as $path) { $files = @array_merge((array)$files,(array)$this->rglob($pattern, $flags, $path)); } + + foreach($files as $key => $file) { + if($file == '' || $file == false || !$file) { + unset($files[$key]); + } + } + + return $files; + } + + + public function sanitizeValue(Page $page, Field $field, $value) { + return $value; + } + + + public function getDatabaseSchema(Field $field) { + $schema = parent::getDatabaseSchema($field); + $schema['data'] = 'text NOT NULL'; + $schema['keys']['data_exact'] = 'KEY `data_exact` (`data`(255))'; + $schema['keys']['data'] = 'FULLTEXT KEY `data` (`data`)'; + + return $schema; + } + +} diff --git a/site/modules/pw-admin-custom-pages/ProcessAdminCustomPages.module b/site/modules/pw-admin-custom-pages/ProcessAdminCustomPages.module new file mode 100644 index 0000000..139d056 --- /dev/null +++ b/site/modules/pw-admin-custom-pages/ProcessAdminCustomPages.module @@ -0,0 +1,155 @@ + 'Admin Custom Pages', + 'summary' => __('Create custom admin pages without building a Process Module'), + 'version' => 111, + 'author' => 'Diogo Oliveira', + 'permission' => 'page-view', + 'installs' => array('FieldtypeAdminCustomPagesSelect'), + 'requires' => array('FieldtypeAdminCustomPagesSelect') + ); + } + + public function init() { + + parent::init(); + + // load script and style files for this page (expects a ACP_scripts_and_styles field with one url per line) + if ($this->page->ACP_scripts_and_styles != "") { + + // get one url for each line of the field + $files = explode("\n", $this->page->ACP_scripts_and_styles); + + foreach ($files as $f) { + + // get the file extension + $extension = trim(substr(strrchr($f,'.'),1)); + + // check if url is absolute, if not concatenate it with the site root url + if (strpos($f, "http://") === false) { + $f = $this->config->urls->root . $f; + } + + // load the correct type of file + switch ($extension) { + + case "js": + $this->config->scripts->add($f); + break; + + case "css": + $this->config->styles->add($f); + break; + } + } + } + } + + public function ___execute() { + + $template_file = wire('config')->paths->root . $this->page->ACP_template; + + if (file_exists($template_file)) { + + // only works with dev version of ProcessWire May 8 2013 + return $this->page->render($template_file); + + } elseif ($this->page->child->id) { + + // for the current stable version use this method + // 'include=hidden' added by suggestion of Macrura and kongondo at the forum + // http://processwire.com/talk/topic/3474-admin-custom-pages-module/?p=38304 + return $this->page->child('include=hidden')->render(); + + } else { + + return $this->error(__("You have to assign a template file to this 'Admin Custom Page'.")); + + } + + } + + // install method created by Pete (https://github.com/Notanotherdotcom) + public function ___install() { + + // Check if PW 2.4 or higher is installed + if(ProcessWire::versionMajor == 2 && ProcessWire::versionMinor < 4) { + throw new WireException(__("This module requires ProcessWire 2.4 or newer")); + } + + // Check for existence of the field below, throw a message if it already exists + if($this->fields->get('ACP_scripts_and_styles') == NULL) { + // If it doesn't exist then carry on and create it + $field = new Field(); + $field->type = $this->modules->get("FieldtypeTextarea"); + $field->name = 'ACP_scripts_and_styles'; + $field->label = __('Scripts and styles for admin pages'); + $field->description = __('Add the .js and .css URLs in this field textarea, one in each line. can be absolute or relative (relative is assumed from the site root eg: site/templates/styles/my.css)'); + $field->save(); + $this->message(__("Added field 'ACP_scripts_and_styles'. Add this field to the page template of your custom admin pages when needed.")); + } + + + if($this->fields->get('ACP_template') == NULL) { + // If it doesn't exist then carry on and create it + $field = new Field(); + $field->type = $this->modules->get("FieldtypeAdminCustomPagesSelect"); + $field->name = 'ACP_template'; + $field->label = 'Template'; + $field->description = __('Select the template which should get rendered. Templates have to be in /site/templates/.'); + $field->save(); + + // Add field to admin template + $adminTemplate = $this->templates->get('admin'); + $adminTemplate->fields->add($field); + $adminTemplate->fields->save(); + + $this->message(__("Added field 'ACP_template' to admin.")); + } + + } + + + public function ___uninstall() { + // Remove the select field + $adminTemplate = $this->templates->get('admin'); + if($adminTemplate->fields->get('ACP_template')) { + $adminTemplate->fields->remove($adminTemplate->fields->get('ACP_template')); + $adminTemplate->fields->save(); + } + + // Remove ACP_template + if($this->fields->get('ACP_template')) { + $field = $this->fields->get('ACP_template'); + $this->fields->delete($field); + } + + // Remove ACP_scripts_and_styles + if($this->fields->get('ACP_scripts_and_styles')) { + $field = $this->fields->get('ACP_scripts_and_styles'); + $this->fields->delete($field); + } + + } + +} diff --git a/site/modules/pw-admin-custom-pages/README.md b/site/modules/pw-admin-custom-pages/README.md new file mode 100644 index 0000000..4470b1a --- /dev/null +++ b/site/modules/pw-admin-custom-pages/README.md @@ -0,0 +1,46 @@ +# Admin Custom Pages Module for ProcessWire + +### Create custom admin pages easily without having to build a Process Module. + +The new version of this module works only with ProcessWire 2.4 and higher. +Differences are explained bellow. + +Since version 1.1.0 the installation process automatically adds a custom Fieldtype to the admin template. This creates a select field where you can choose the template file to render. This functionality was added by [Nico](http://nico.is) + +☞ This module makes it easy to create simple admin pages but you can also create them in much more powerfull way without the need of a module. Have a look at this post written by Bernhard Baumrock to know how it's done https://processwire.com/blog/posts/building-custom-admin-pages-with-process-modules/ + + +### To prepare the module: + +1. Place the module folder in /site/modules/ +2. Install the module in the modules page from the admin + +### To create the pages: + +1. Create a new page under "Admin" and give it the "admin" template. As "process" you have to choose "ProcessAdminCustomPages". +2. A field called "Template file" will appear. Select the file you want (we recommend that the file name starts with underscore "\_" so it doesn't appear in new template sugestions, ex: "\_custom.php"). +3. That's all. + +### To add custom script and style files to the page: + +1. Add the "ACP_scripts_and_styles" to the page template (the field that was created automaticaly on instalation) +2. Add the .js and .css URLs in this field textarea, one in each line. can be absolute or relative (relative is assumed from the site root on eg: site/templates/styles/my.css) + +-- + +### Troubleshooting: + +> This page has no Process assigned. + +You probably forgot to choose "ProcessCustomPages" as Process. (See step 1) + + +-- + +Module home: http://modules.processwire.com/modules/process-admin-custom-pages/ + +Support forum: http://processwire.com/talk/topic/3474-admin-custom-pages-module/ + +-- + +That's it! Hope you enjoy the module ;) diff --git a/site/templates/css/fonts.css b/site/templates/css/fonts.css index a43012b..cbb01d8 100644 --- a/site/templates/css/fonts.css +++ b/site/templates/css/fonts.css @@ -2,7 +2,7 @@ * @FONTS * ============================================================================= * - * fonts.css v0.1.20 | GNU GPL License | + * fonts.css v0.1.23 | GNU GPL License | * */ @@ -17,128 +17,16 @@ 6. Legacy iOS */ -@font-face -{ - font-family: 'Josefin Sans'; - src: url('../fonts/Josefin_Sans_Light.eot'); /* 1 */ - src: url('../fonts/Josefin_Sans_Light.eot?#iefix') format('embedded-opentype'), /* 2 */ - url('../fonts/Josefin_Sans_Light.woff2') format('woff2'), /* 3 */ - url('../fonts/Josefin_Sans_Light.woff') format('woff'), /* 4 */ - url('../fonts/Josefin_Sans_Light.otf') format('opentype'), /* 5 */ - url('../fonts/Josefin_Sans_Light.ttf') format('truetype'), /* 5 */ - url('../fonts/Josefin_Sans_Light.svg#josefinsans') format('svg'); /* 6 */ - font-weight: normal; - font-style: normal; -} - -@font-face -{ - font-family: 'Josefin Sans'; - src: url('../fonts/Josefin_Sans_Light_Italic.eot'); /* 1 */ - src: url('../fonts/Josefin_Sans_Light_Italic.eot?#iefix') format('embedded-opentype'), /* 2 */ - url('../fonts/Josefin_Sans_Light_Italic.woff2') format('woff2'), /* 3 */ - url('../fonts/Josefin_Sans_Light_Italic.woff') format('woff'), /* 4 */ - url('../fonts/Josefin_Sans_Light_Italic.otf') format('opentype'), /* 5 */ - url('../fonts/Josefin_Sans_Light_Italic.ttf') format('truetype'), /* 5 */ - url('../fonts/Josefin_Sans_Light_Italic.svg#josefinsanst') format('svg'); /* 6 */ - font-weight: normal; - font-style: italic; -} - -@font-face -{ - font-family: 'Josefin Sans'; - src: url('../fonts/Josefin_Sans_Regular.eot'); /* 1 */ - src: url('../fonts/Josefin_Sans_Regular.eot?#iefix') format('embedded-opentype'), /* 2 */ - url('../fonts/Josefin_Sans_Regular.woff2') format('woff2'), /* 3 */ - url('../fonts/Josefin_Sans_Regular.woff') format('woff'), /* 4 */ - url('../fonts/Josefin_Sans_Regular.otf') format('opentype'), /* 5 */ - url('../fonts/Josefin_Sans_Regular.ttf') format('truetype'), /* 5 */ - url('../fonts/Josefin_Sans_Regular.svg#josefinsans') format('svg'); /* 6 */ - font-weight: bold; - font-style: normal; -} - -@font-face -{ - font-family: 'Josefin Sans'; - src: url('../fonts/Josefin_Sans_Reguar_Italic.eot'); /* 1 */ - src: url('../fonts/Josefin_Sans_Reguar_Italic.eot?#iefix') format('embedded-opentype'), /* 2 */ - url('../fonts/Josefin_Sans_Reguar_Italic.woff2') format('woff2'), /* 3 */ - url('../fonts/Josefin_Sans_Reguar_Italic.woff') format('woff'), /* 4 */ - url('../fonts/Josefin_Sans_Reguar_Italic.otf') format('opentype'), /* 5 */ - url('../fonts/Josefin_Sans_Reguar_Italic.ttf') format('truetype'), /* 5 */ - url('../fonts/Josefin_Sans_Reguar_Italic.svg#josefinsans') format('svg'); /* 6 */ - font-weight: bold; - font-style: italic; -} - -@font-face -{ - font-family: 'Source Sans Pro'; - src: url('../fonts/Source_Sans_Pro_Regular.eot'); /* 1 */ - src: url('../fonts/Source_Sans_Pro_Regular.eot?#iefix') format('embedded-opentype'), /* 2 */ - url('../fonts/Source_Sans_Pro_Regular.woff2') format('woff2'), /* 3 */ - url('../fonts/Source_Sans_Pro_Regular.woff') format('woff'), /* 4 */ - url('../fonts/Source_Sans_Pro_Regular.otf') format('opentype'), /* 5 */ - url('../fonts/Source_Sans_Pro_Regular.ttf') format('truetype'), /* 5 */ - url('../fonts/Source_Sans_Pro_Regular.svg#sourcesansproregular') format('svg'); /* 6 */ - font-weight: normal; - font-style: normal; -} - -@font-face -{ - font-family: 'Source Sans Pro'; - src: url('../fonts/Source_Sans_Pro_Italic.eot'); /* 1 */ - src: url('../fonts/Source_Sans_Pro_Italic.eot?#iefix') format('embedded-opentype'), /* 2 */ - url('../fonts/Source_Sans_Pro_Italic.woff2') format('woff2'), /* 3 */ - url('../fonts/Source_Sans_Pro_Italic.woff') format('woff'), /* 4 */ - url('../fonts/Source_Sans_Pro_Italic.otf') format('opentype'), /* 5 */ - url('../fonts/Source_Sans_Pro_Italic.ttf') format('truetype'), /* 5 */ - url('../fonts/Source_Sans_Pro_Italic.svg#sourcesansproitalic') format('svg'); /* 6 */ - font-weight: normal; - font-style: italic; -} - -@font-face -{ - font-family: 'Source Sans Pro'; - src: url('../fonts/Source_Sans_Pro_SemiBold.eot'); /* 1 */ - src: url('../fonts/Source_Sans_Pro_SemiBold.eot?#iefix') format('embedded-opentype'), /* 2 */ - url('../fonts/Source_Sans_Pro_SemiBold.woff2') format('woff2'), /* 3 */ - url('../fonts/Source_Sans_Pro_SemiBold.woff') format('woff'), /* 4 */ - url('../fonts/Source_Sans_Pro_SemiBold.otf') format('opentype'), /* 5 */ - url('../fonts/Source_Sans_Pro_SemiBold.ttf') format('truetype'), /* 5 */ - url('../fonts/Source_Sans_Pro_SemiBold.svg#sourcesansprosemibold') format('svg'); /* 6 */ - font-weight: bold; - font-style: normal; -} - -@font-face -{ - font-family: 'Source Sans Pro'; - src: url('../fonts/Source_Sans_Pro_SemiBold_Italic.eot'); /* 1 */ - src: url('../fonts/Source_Sans_Pro_SemiBold_Italic.eot?#iefix') format('embedded-opentype'), /* 2 */ - url('../fonts/Source_Sans_Pro_SemiBold_Italic.woff2') format('woff2'), /* 3 */ - url('../fonts/Source_Sans_Pro_SemiBold_Italic.woff') format('woff'), /* 4 */ - url('../fonts/Source_Sans_Pro_SemiBold_Italic.otf') format('opentype'), /* 5 */ - url('../fonts/Source_Sans_Pro_SemiBold_Italic.ttf') format('truetype'), /* 5 */ - url('../fonts/Source_Sans_Pro_SemiBold_Italic.svg#sourcesansprobolditalic') format('svg'); /* 6 */ - font-weight: bold; - font-style: italic; -} - @font-face { font-family: 'icomoon'; - src: url('../fonts/icomoon_Regular.eot?qri1u5'); /* 1 */ - src: url('../fonts/icomoon_Regular.eot?qri1u5#iefix') format('embedded-opentype'), /* 2 */ - url('../fonts/icomoon_Regular.woff2?qri1u5') format('woff2'), /* 3 */ - url('../fonts/icomoon_Regular.woff?qri1u5') format('woff'), /* 4 */ - url('../fonts/icomoon_Regular.otf?qri1u5') format('opentype'), /* 5 */ - url('../fonts/icomoon_Regular.ttf?qri1u5') format('truetype'), /* 5 */ - url('../fonts/icomoon_Regular.svg?qri1u5#icomoon') format('svg'); /* 6 */ + src: url('../fonts/icomoon.eot?rwmkoy'); /* 1 */ + src: url('../fonts/icomoon.eot?rwmkoy#iefix') format('embedded-opentype'), /* 2 */ + url('../fonts/icomoon.woff2?rwmkoy') format('woff2'), /* 3 */ + url('../fonts/icomoon.woff?rwmkoy') format('woff'), /* 4 */ + url('../fonts/icomoon.otf?rwmkoy') format('opentype'), /* 5 */ + url('../fonts/icomoon.ttf?rwmkoy') format('truetype'), /* 5 */ + url('../fonts/icomoon.svg?rwmkoy#icomoon') format('svg'); /* 6 */ font-display: block; font-style: normal; font-weight: normal; @@ -155,10 +43,15 @@ font-family: 'icomoon' !important; font-variant: normal; font-style: normal; + font-weight: normal; line-height: 1; text-transform: none; speak: never; + + /* Better Font Rendering =========== */ + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; } .icon-chevrons-right:before @@ -171,112 +64,112 @@ content: "\e901"; } -.icon-document-file-txt:before +.icon-corner-right-down:before { content: "\e902"; } -.icon-corner-right-down:before +.icon-folder:before { content: "\e903"; } -.icon-folder:before +.icon-book:before { content: "\e904"; } -.icon-tag:before +.icon-book-open:before { content: "\e905"; } -.icon-book-open:before +.icon-tag:before { content: "\e906"; } -.icon-book:before +.icon-arrow-right:before { content: "\e907"; } -.icon-arrow-right:before +.icon-alert-circle:before { content: "\e908"; } -.icon-user:before +.icon-check-circle:before { content: "\e909"; } -.icon-skip-back:before +.icon-facebook:before { content: "\e90a"; } -.icon-skip-forward:before +.icon-home:before { content: "\e90b"; } -.icon-play:before +.icon-instagram:before { content: "\e90c"; } -.icon-search:before +.icon-play:before { content: "\e90d"; } -.icon-settings:before +.icon-search:before { content: "\e90e"; } -.icon-home:before +.icon-settings:before { content: "\e90f"; } -.icon-alert-circle:before +.icon-skip-back:before { content: "\e910"; } -.icon-check-circle:before +.icon-skip-forward:before { content: "\e911"; } -.icon-x-circle:before +.icon-user:before { content: "\e912"; } -.icon-facebook:before +.icon-x:before { content: "\e913"; } -.icon-instagram:before +.icon-x-circle:before { content: "\e914"; } -.icon-x:before +.icon-home3:before { content: "\e915"; } -.icon-home3:before +.icon-chevrons-down:before { content: "\e916"; } -.icon-chevron-down:before +.icon-mail:before { content: "\e917"; } @@ -291,16 +184,66 @@ content: "\e919"; } -.icon-mail:before +.icon-menu:before { content: "\e91a"; } +.icon-airplay:before +{ + content: "\e91b"; +} + +.icon-chevron-left:before +{ + content: "\e91c"; +} + +.icon-chevron-right:before +{ + content: "\e91d"; +} + +.icon-square:before +{ + content: "\e91e"; +} + +.icon-picture:before +{ + content: "\eaa1"; +} + +.icon-washing-machine:before +{ + content: "\eb07"; +} + .icon-tv:before { content: "\ebce"; } +.icon-cake:before +{ + content: "\ec50"; +} + +.icon-refrigerator:before +{ + content: "\ec72"; +} + +.icon-burger:before +{ + content: "\ec80"; +} + +.icon-coffee-pot:before +{ + content: "\ec92"; +} + .icon-leaf:before { content: "\ec9b"; @@ -316,41 +259,6 @@ content: "\eccb"; } -.icon-wifi-100:before -{ - content: "\ed65"; -} - -.icon-picture:before -{ - content: "\eaa1"; -} - -.icon-washing-machine:before -{ - content: "\eb07"; -} - -.icon-refrigerator:before -{ - content: "\ec72"; -} - -.icon-burger:before -{ - content: "\ec80"; -} - -.icon-cake:before -{ - content: "\ec50"; -} - -.icon-coffee-pot:before -{ - content: "\ec92"; -} - .icon-bicycle-riding:before { content: "\ece4"; @@ -359,4 +267,9 @@ .icon-rowing:before { content: "\ece7"; +} + +.icon-wifi-100:before +{ + content: "\ed65"; } \ No newline at end of file diff --git a/site/templates/css/main.css b/site/templates/css/main.css new file mode 100644 index 0000000..834ad18 --- /dev/null +++ b/site/templates/css/main.css @@ -0,0 +1,747 @@ +*, *::before, *::after +{ + box-sizing: border-box; +} + +.grella +{ + display: grid; + grid-template-columns: + [completo-start] minmax(var(--separacion), 1fr) + [destacado-start] minmax(0, var(--destacado)) + [contido-start] min(100% - (var(--separacion) * 2), var(--contido-max)) [contido-end] + minmax(0, var(--destacado)) [destacado-end] + minmax(var(--separacion), 1fr) [completo-end] + ; +} + +.grella > :not(.destacado, .completo), +.completo > :not(.destacado, .completo) +{ + grid-column: contido; +} + +.grella > .completo +{ + display: grid; + grid-column: completo; + grid-template-columns: inherit; +} + +.completo > .completo +{ + display: grid; + grid-column: completo; + grid-template-columns: inherit; +} + +.grella > .destacado, +.completo > .destacado +{ + grid-column: destacado; +} + +html, body +{ + height: 100%; +} + +body +{ + display: grid; + grid-template-rows: auto 1fr auto; + + color: rgb(var(--cor_10)); + font-family: Avenir, Montserrat, Corbel, 'URW Gothic', source-sans-pro, sans-serif; + font-size: 1rem; + font-weight: normal; + + background-color: rgb(var(--cor_60)); +} + +a +{ + color: rgb(var(--cor_30)); + text-decoration-line: underline; + text-decoration-style: dotted; +} + +h1, h2, h3, h4, h5, h6 +{ + color: rgb(var(--cor_30)); + font-family: ui-rounded, 'Hiragino Maru Gothic ProN', Quicksand, Comfortaa, Manjari, 'Arial Rounded MT', 'Arial Rounded MT Bold', Calibri, source-sans-pro, sans-serif; + font-weight: bold; + text-wrap: balance; +} + +figure +{ + margin: 0; +} + +figure img +{ + width: 100%; +} + +ul, +ol +{ + display: flex; + flex-direction: row; + + margin: 0; + + padding: 0; + + list-style: none; +} + +ul a, +ol a +{ + text-decoration: none; +} + +section h3, +section p +{ + margin: 0; +} + +header#cabeceira +{ + grid-template-rows: auto 1fr auto; + + margin-bottom: var(--separacion); + + padding-bottom: var(--separacion); + + border-bottom: 1px solid rgba(var(--cor_10), 0.5); +} + +div#cabeceira-superior +{ + margin-bottom: var(--separacion); + + padding-block: 0.5rem; + + border-bottom: 1px solid rgba(var(--cor_10), 0.5); + + background-color: #eeeeee; +} + +nav#menu-usuario +{ + display: grid; + grid-template-columns: auto auto; + justify-content: space-between; +} + +nav#menu-usuario ul +{ + grid-column: 2; + justify-content: flex-end; +} + +div#cabeceira-inferior +{ + display: grid; + grid-template-columns: minmax(0, 1fr) auto var(--separacion) auto minmax(0, 1fr); + justify-content: center; + align-items: center; + gap: var(--separacion) 0; +} + +div#cabeceira-inferior a#logo +{ + grid-column: 1 / span 5; +} + +form#atopar +{ + grid-column: 2; + + position: relative; +} + +form#atopar input +{ + display: block; + appearance: none; + + width: 100%; + + padding: 0.5rem 0.75rem; + + border: 1px solid rgb(var(--cor_10)); + border-radius: 0; + + color: rgb(var(--cor_10)); + + transition: border-color 0.15s ease-in-out, +} + +form#atopar label +{ + position: absolute; + top: 0; + left: 0; + + width: 100%; + height: 100%; + overflow: hidden; + + padding: 0.5rem 0.75rem; + + border: 1PX solid transparent; + + text-align: start; + text-overflow: ellipsis; + white-space: nowrap; + + pointer-events: none; + + transform-origin: 0 0; + + transition: opacity 0.1s ease-in-out, + transform 0.1s ease-in-out; +} + +form#atopar input:focus +{ + border-color: rgb(var(--cor_30)); + outline: 0; + + color: var(--bs-body-color); +} + +form#atopar input:focus ~ label +{ + height: unset; + width: unset; + + padding: 0; + + background-color: rgb(var(--cor_60)); + + opacity: unset; + + transform: scale(0.85) translateY(-0.8rem) translateX(0.15rem); +} + +form#atopar .boton +{ + position: absolute; + top: 0; + right: 0; +} + +nav#menu-idiomas +{ + grid-column: 4; +} + +nav#menu-principal +{ + grid-column: 1 / 6; +} + +nav#menu-principal div#menu-despregable +{ + position: fixed; + top: 0; + left: 0; + bottom: 0; + z-index: 99; + + max-width: 100%; + width: 50%; + + border-right: 2px solid rgb(var(--cor_30)); + + background-color: rgb(var(--cor_60)); + + transform: translateX(-100%); + transition: transform 0.3s ease-in-out; +} + +nav#menu-principal div#menu-despregable.despregado +{ + transform: translateX(0); +} + +nav#menu-principal button.pechar +{ + margin: 0.5rem var(--separacion); +} + +nav#menu-principal ul +{ + flex-direction: column; +} + +div#menu-despregable li +{ + border-left: 0.625rem solid rgb(var(--cor_60)) +} + +div#menu-despregable li:has(.activo), +div#menu-despregable li:hover +{ + border-left: 0.625rem solid rgb(var(--cor_30)); + + text-decoration-line: underline; + text-decoration-style: dotted; +} + +div#menu-despregable li a +{ + display: block; + + padding: 0.5rem; + + color: rgb(var(--cor_10)); + font-size: 1rem; + font-weight: var(--bs-nav-link-font-weight); + text-decoration: none; + + transition: color 0.15s ease-in-out, + background-color 0.15s ease-in-out, + border-color 0.15s ease-in-out; +} + +nav#migas +{ + margin-bottom: var(--separacion); +} + +article section +{ + margin-bottom: var(--separacion); +} + +section#mantemento img +{ + margin-bottom: 1.5rem; + + padding: 3rem; + + border: 1px solid rgba(var(--cor_10), 0.3); + border-radius: 8px; + + box-shadow: 0 1rem 3rem rgba(var(--cor_10), 0.3); +} + +section[id^="galeria-"] +{ + grid-column: destacado; + + width: 100%; + height: auto; + + margin-inline: auto; +} + +section[id^="galeria-"] div.swiper-wrapper +{ + height: auto; +} + +section[id^="galeria-"] figure img +{ + display: block; + + width: 100%; + height: auto; + object-fit: contain; + + background-color: rgb(var(--cor_60)); +} + +section[id^="galeria-"] figure figcaption +{ + padding: 10px 40px 20px; + + color: rgb(var(--cor_30)); + font-family: ui-rounded, 'Hiragino Maru Gothic ProN', Quicksand, Comfortaa, Manjari, 'Arial Rounded MT', 'Arial Rounded MT Bold', Calibri, source-sans-pro, sans-serif; + font-weight: normal; + font-size: 1rem; + text-align: center; +} + +section[id^="galeria-"] p.controis +{ + display: flex; + justify-content: center; + + margin: 0 auto; +} + +section[id^="galeria-"] .swiper-button-prev, +section[id^="galeria-"] .swiper-button-next +{ + padding: var(--separacion); +} + +section[id^="galeria-"] .swiper-pagination +{ + padding: var(--separacion) 0; +} + +section[id^="galeria-"] .swiper-button-prev, +section[id^="galeria-"] .swiper-button-next, +section[id^="galeria-"] .swiper-pagination +{ + display: inline; + + position: relative; + bottom: initial; + top: initial; + left: initial; + right: initial; + + width: fit-content; + height: auto; + + margin: -20px 0 0; + + color: rgb(var(--cor_10)); +} + +section[id^="galeria-"] .swiper-button-next::after, +section[id^="galeria-"] .swiper-button-prev::after +{ + font-family: 'icomoon' !important;; + font-size: 1.5rem; + text-transform: none !important; + letter-spacing: 0; + font-variant: initial; + line-height: 1.5; +} + +section[id^="galeria-"] .swiper-button-prev::after, +section[id^="galeria-"] .swiper-rtl .swiper-button-next::after +{ + content: '\e91c'; +} + +section[id^="galeria-"] .swiper-button-next::after, +section[id^="galeria-"] .swiper-rtl .swiper-button-prev::after +{ + content: '\e91d'; +} + +section[id^="galeria-"] .swiper-pagination-bullet +{ + display: inline; + + width: fit-content; + + margin: 0; + + padding: var(--separacion); + + background-color: transparent; +} + +section[id^="galeria-"] .swiper-pagination-bullet:after +{ + font-family: 'icomoon' !important;; + font-size: 1.5rem; + text-transform: none !important; + letter-spacing: 0; + font-variant: initial; + line-height: 1.5; + + content: "\e91e"; +} + +section[id^="galeria-"] .swiper-pagination-bullet-active:after +{ + content: "\e91b"; +} + +section[id^="imaxe-"], +div[id^="imaxe-"] +{ + display: grid; + align-items: center; + gap: var(--separacion); +} + +section[id^="imaxe-"] div.artigo +{ + align-self: start; +} + +footer#pe +{ + padding-block: 1.5rem; + + border-top: 1px solid ; + + color: rgb(var(--cor_60)); + font-size: 0.875rem; + + background-color: rgb(var(--cor_30)); +} + +footer#pe a +{ + color: rgb(var(--cor_60)); +} + +footer#pe div#info +{ + display: grid; + grid-template-columns: auto var(--separacion) auto +} + +footer#pe p#copy +{ + grid-column: 3; +} + +footer#pe ul#redes +{ + grid-column: 1 / 4; +} + +footer#pe p#banners +{ + grid-column: 1 / 4; +} + +footer#pe p#desenrolo +{ + grid-column: 1 / 4; +} + +footer#pe p#banners img +{ + padding: var(--separacion); +} + +footer#pe ul#redes +{ + justify-content: center; +} + +footer#pe ul#redes li a +{ + padding: var(--separacion); + + font-size: 2rem; +} + +footer#pe p#desenrolo +{ + grid-column: 1 / 7; +} + +footer#pe p#desenrolo span +{ + font-size: 0.75rem; +} + +.boton +{ + display: inline-block; + + padding: 0.5rem; + + border: 1px solid rgb(var(--cor_10)); + + color: rgb(var(--cor_10)); + + background-color: transparent; + + cursor: pointer; +} + +.boton.primario +{ + border-color: transparent; + + color: rgb(var(--cor_60)); + + background-color: rgb(var(--cor_30)); + +} + +.boton.activo +{ + color: rgb(var(--cor_60)); + + background-color: rgb(var(--cor_10)); +} + +.centrado +{ + text-align: center; +} + +.visually-hidden +{ + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + white-space: nowrap; + overflow: hidden; + clip: rect(1px, 1px, 1px, 1px); + border: 0; +} + +.element-focusable:focus +{ + clip: auto; + overflow: visible; + height: auto; +} + +.bypass-to-main:focus +{ + top: 0; + left: 0; + width: 100%; + height: 40px; + line-height: 40px; + text-align: center; + background: rgb(var(--cor_30)); + color: rgb(var(--cor_60)); +} + +@media (min-width: 640px) +{ + footer#pe div#info + { + grid-template-columns: auto var(--separacion) auto 1fr auto; + } + + footer#pe ul#redes + { + grid-column: 5; + } + + footer#pe p#banners + { + grid-column: 1 / 6; + } + + footer#pe p#desenrolo + { + grid-column: 1 / 6; + } +} + +@media (min-width: 768px) +{ + div#cabeceira-inferior + { + grid-template-columns: auto 1fr auto var(--separacion) auto; + } + + div#cabeceira-inferior a#logo + { + grid-column: 1; + } + + form#atopar + { + grid-column: 3; + } + + nav#menu-idiomas + { + grid-column: 5; + } + + section[id^="imaxe-"], + div[id^="imaxe-"] + { + grid-template-columns: 1fr 1fr; + } + + section[id^="imaxe-"].superior, + div[id^="imaxe-"].superior + { + grid-template-columns: 1fr; + } + + section[id^="imaxe-"].esquerda figure, + div[id^="imaxe-"].esquerda figure + { + grid-column: 1; + grid-row: 2; + } + + section[id^="imaxe-"].esquerda div.artigo, + div[id^="imaxe-"].esquerda figure div.artigo + { + grid-column: 2; + grid-row: 2; + } + + section[id^="imaxe-"].dereita figure, + div[id^="imaxe-"].dereita figure + { + grid-column: 2; + grid-row: 2; + } + + section[id^="imaxe-"].dereita div.artigo, + div[id^="imaxe-"].dereita div.artigo + { + grid-column: 1; + grid-row: 2; + } + + section[id^="imaxe-"] h3 + { + grid-column: 1 / 3; + grid-row: 1; + } +} + +@media (min-width: 1024px) +{ + nav#menu-usuario button.boton, + nav#menu-principal div#menu-despregable button.boton + { + display: none; + } + + nav#menu-principal div#menu-despregable + { + flex-grow: 1; + + position: static; + z-index: auto; + + width: auto; + height: auto; + + border: 0; + + background-color: transparent; + + transform: none; + transition: none; + } + + nav#menu-principal ul + { + flex-direction: row; + justify-content: center; + } + + nav#menu-principal ul li, + nav#menu-principal ul li:has(.activo), + nav#menu-principal ul li:hover + { + border-left: 0; + } +} \ No newline at end of file diff --git a/site/templates/css/style.css b/site/templates/css/style.css deleted file mode 100644 index abd5b61..0000000 --- a/site/templates/css/style.css +++ /dev/null @@ -1,510 +0,0 @@ -*, *::before, *::after -{ - box-sizing: border-box; -} - -body -{ - color: rgb(var(--cor_10)); - font-family: 'Source Sans Pro', sans-serif; - font-size: 1rem; -} - -body.signin -{ - display: flex; - align-items: center; - padding-top: 40px; - padding-bottom: 40px; - background-color: #f5f5f5; -} - -a -{ - color: rgba(var(--cor_30), var(--bs-link-opacity, 1)); - text-decoration-line: underline; - text-decoration-style: dotted; -} - -h1, h2, h3, h4, h5, h6 -{ - color: rgb(var(--cor_30)); - font-family: 'Josefin Sans', serif; -} - -dl -{ - display: flex; - flex-direction: row; - flex-wrap: wrap; - gap: 10%; - - max-width: 18.75rem; - - margin: 0; -} - -dt -{ - width: 10%; - - color: rgb(var(--cor_30)); -} - -dt::after -{ - content: ": "; -} - -dd -{ - width: 80%; - - margin: 0; - - padding: 0; -} - -figure -{ - margin: 0; -} - -figure figcaption -{ - padding: 10px 40px 20px; - - color: rgb(var(--cor_30)); - font-family: 'Source Sans Pro', sans-serif; - font-weight: normal; - font-size: 1rem; - text-align: center; -} - -figure img -{ - display: block; - - width: 100%; - height: auto; - object-fit: contain; - - background-color: rgb(var(--cor_60)); -} - -figure.effect-ming -{ - background: #030c17; - - position: relative; - float: left; - overflow: hidden; - margin: 10px 1%; - padding: 0; - min-width: 320px; - max-width: 480px; - max-height: 360px; - width: 100%; - height: auto; - background: rgb(var(--cor_30)); - text-align: center; - cursor: pointer; -} - -figure.effect-ming img -{ - position: relative; - display: block; - min-height: 100%; - max-width: 100%; - opacity: 0.9; - transition: opacity 0.35s; -} - -figure.effect-ming:hover img -{ - opacity: 0.4; -} - -figure.effect-ming figcaption -{ - padding: 2em; - color: #fff; - text-transform: uppercase; - font-size: 1.25em; - backface-visibility: hidden; -} - -figure.effect-ming figcaption > a -{ - z-index: 1000; - text-indent: 200%; - white-space: nowrap; - font-size: 0; - opacity: 0; -} - -figure.effect-ming figcaption, -figure.effect-ming figcaption > a -{ - position: absolute; - top: 0; - left: 0; - width: 100%; - height: 100%; -} - -figure.effect-ming h3 -{ - margin: 20% 0 10px 0; - word-spacing: -0.15em; - font-weight: 700; - transition: transform 0.35s; - background: rgba(255,255,255,0.5); - color: rgb(var(--cor_30)); -} - -figure.effect-ming:hover h3 -{ - transform: scale(0.9); -} - -figure.effect-ming p -{ - padding: 1em; - opacity: 0; - letter-spacing: 1px; - font-size: 68.5%; - transition: opacity 0.35s, transform 0.35s; - transform: scale(1.5); -} - -figure.effect-ming figcaption::before -{ - position: absolute; - top: 30px; - right: 30px; - bottom: 30px; - left: 30px; - border: 2px solid #fff; - box-shadow: 0 0 0 30px rgba(255,255,255,0.2); - content: ''; - opacity: 0; - transition: opacity 0.35s, transform 0.35s; - transform: scale3d(1.4,1.4,1); -} - -figure.effect-ming:hover figcaption::before, -figure.effect-ming:hover p -{ - opacity: 1; - transform: scale3d(1,1,1); -} - -figure.effect-ming figcaption::before, figure.effect-ming figcaption::after -{ - pointer-events: none; -} - -time -{ - display: block; - - position: relative; - - height: 5rem; - overflow: hidden; - width: 5rem; - - border-radius: 0.6em; - box-shadow: 0 1px 0 #bdbdbd, 0 2px 0 #fff, 0 3px 0 #bdbdbd, 0 4px 0 #fff, 0 5px 0 #bdbdbd, 0 0 0 1px #bdbdbd; - - font-size: 0.75rem; - - background-color: #fff; -} - -time * -{ - display: block; - - width: 100%; - - font-size: 0.8rem; - font-style: normal; - font-weight: bold; - text-align: center; -} - -time em -{ - position: absolute; - bottom: 0; - color: rgb(var(--cor_30)); -} - -time strong -{ - position: absolute; - top: 0; - - padding: 0.3rem 0; - - box-shadow: 0 2px 0 rgb(var(--cor_30)); - - color: white; - - background-color: rgb(var(--cor_30)); -} - -time span -{ - padding-top: 1.4rem; - - color: black; - font-size: 2rem; - letter-spacing: -0.05rem; -} - -.btn-primary -{ - --bs-btn-bg: rgb(var(--cor_30)); - --bs-btn-border-color: rgb(var(--cor_30)); - --bs-btn-hover-bg: rgb(var(--cor_30)); - --bs-btn-hover-border-color: rgb(var(--cor_30)); - --bs-btn-active-bg: rgb(var(--cor_30)); - --bs-btn-active-border-color: rgb(var(--cor_30)); - --bs-btn-disabled-bg: rgb(var(--cor_30)); - --bs-btn-disabled-border-color: rgb(var(--cor_30)); -} - -.breadcrumb-item + .breadcrumb-item::before -{ - padding-right: unset; -} - -#search .form-floating > .form-control, -#search .form-floating > .form-control-plaintext, -#search .form-floating > .form-select -{ - height: calc(2.25rem + 2px); - line-height: 1.25; -} - -#search .form-floating > .form-control:focus ~ label, -#search .form-floating > .form-control:not(:placeholder-shown) ~ label, -#search .form-floating > .form-control-plaintext ~ label, -#search .form-floating > .form-select ~ label -{ - height: unset; - width: unset; - - padding: 0 !important; - - background-color: #fff; - - opacity: unset; - - transform: scale(0.85) translateY(-0.8rem) translateX(0.15rem); -} - -#menu-desplegable .nav-item -{ - border-left: 0.625rem solid rgb(var(--cor_60)); -} - -#menu-desplegable .nav-item.active, -#menu-desplegable .nav-item:hover -{ - border-left: 0.625rem solid rgb(var(--cor_30)); - - text-decoration-line: underline; - text-decoration-style: dotted; -} - -.navbar-toggler-icon -{ - color: rgba(var(--cor_10)); - - background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%280, 0, 0, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e"); -} - -.btn-close:focus -{ - outline: 2px dotted rgb(var(--cor_10)) !important; - box-shadow: none; -} - -.swiper -{ - width: 100%; - height: auto; - - margin-left: auto; - margin-right: auto; -} - -.galeria .swiper-slide -{ - display: flex; - justify-content: center; - align-items: center; - - padding: 10px; - - text-align: center; - font-size: 18px; - - background: #fff; -} - -.swiper-button-prev, -.swiper-button-next -{ - bottom: 15px; - top: unset; - - color: rgb(var(--cor_10)); -} - -.swiper-pagination-bullet-active -{ - background: rgb(var(--cor_30)); -} - -.reixa-item -{ - cursor: pointer; -} - -.feature-icon -{ - width: 3rem; - height: 3rem; - border-radius: .75rem; -} - -a.collapse-head::before -{ - font-family: 'icomoon'; - content: "\e917"; - float: right; - transition: all 0.5s; -} - -a.collapse-head.active:before -{ - transform: rotate(180deg); -} - -.text-bg-primary -{ - - background-color: rgba(var(--cor_30), var(--bs-bg-opacity, 1)) !important; -} - -.text-bg-secondary -{ - background-color: rgba(var(--cor_10), var(--bs-bg-opacity, 1)) !important; -} - -.bg-primary -{ - - background-color: rgba(var(--cor_30), var(--bs-bg-opacity)) !important; -} - -.border-primary -{ - border-color: rgba(var(--cor_30), var(--bs-border-opacity)) !important; -} - -.form-signin -{ - max-width: 330px; - padding: 15px; -} - -.form-signin .form-floating:focus-within -{ - z-index: 2; -} - -.form-signin input[type="text"] -{ - margin-bottom: -1px; - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; -} - -.form-signin input[type="password"] -{ - margin-bottom: 10px; - border-top-left-radius: 0; - border-top-right-radius: 0; -} - -@media (min-width: 992px) -{ - #menu-desplegable .nav-item, - #menu-desplegable .nav-item.active, - #menu-desplegable .nav-item:hover - { - border-left: 0; - } - - .navbar-toggler - { - display: none; - } -} - -@media (min-width: 1024px) -{ - dl - { - gap: 0; - } - - dt - { - width: 60%; - } - - dd - { - width: 40%; - } -} - -.visually-hidden -{ - position: absolute; - width: 1px; - height: 1px; - padding: 0; - margin: -1px; - white-space: nowrap; - overflow: hidden; - clip: rect(1px, 1px, 1px, 1px); - border: 0; -} - -.element-focusable:focus -{ - clip: auto; - overflow: visible; - height: auto; -} - -.bypass-to-main:focus -{ - top: 0; - left: 0; - width: 100%; - height: 40px; - line-height: 40px; - text-align: center; - background: rgb(var(--cor_30)); - color: rgb(var(--cor_60)); -} \ No newline at end of file diff --git a/site/templates/css/swiper-bundle.min.css b/site/templates/css/swiper-bundle.min.css new file mode 100644 index 0000000..53b5c80 --- /dev/null +++ b/site/templates/css/swiper-bundle.min.css @@ -0,0 +1,13 @@ +/** + * Swiper 11.1.14 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2024 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: September 12, 2024 + */ + +@font-face{font-family:swiper-icons;src:url('data:application/font-woff;charset=utf-8;base64, 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');font-weight:400;font-style:normal}:root{--swiper-theme-color:#007aff}:host{position:relative;display:block;margin-left:auto;margin-right:auto;z-index:1}.swiper{margin-left:auto;margin-right:auto;position:relative;overflow:hidden;list-style:none;padding:0;z-index:1;display:block}.swiper-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{position:relative;width:100%;height:100%;z-index:1;display:flex;transition-property:transform;transition-timing-function:var(--swiper-wrapper-transition-timing-function,initial);box-sizing:content-box}.swiper-android .swiper-slide,.swiper-ios .swiper-slide,.swiper-wrapper{transform:translate3d(0px,0,0)}.swiper-horizontal{touch-action:pan-y}.swiper-vertical{touch-action:pan-x}.swiper-slide{flex-shrink:0;width:100%;height:100%;position:relative;transition-property:transform;display:block}.swiper-slide-invisible-blank{visibility:hidden}.swiper-autoheight,.swiper-autoheight .swiper-slide{height:auto}.swiper-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-backface-hidden .swiper-slide{transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-3d.swiper-css-mode .swiper-wrapper{perspective:1200px}.swiper-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-3d{perspective:1200px}.swiper-3d .swiper-cube-shadow,.swiper-3d .swiper-slide{transform-style:preserve-3d}.swiper-css-mode>.swiper-wrapper{overflow:auto;scrollbar-width:none;-ms-overflow-style:none}.swiper-css-mode>.swiper-wrapper::-webkit-scrollbar{display:none}.swiper-css-mode>.swiper-wrapper>.swiper-slide{scroll-snap-align:start start}.swiper-css-mode.swiper-horizontal>.swiper-wrapper{scroll-snap-type:x mandatory}.swiper-css-mode.swiper-vertical>.swiper-wrapper{scroll-snap-type:y mandatory}.swiper-css-mode.swiper-free-mode>.swiper-wrapper{scroll-snap-type:none}.swiper-css-mode.swiper-free-mode>.swiper-wrapper>.swiper-slide{scroll-snap-align:none}.swiper-css-mode.swiper-centered>.swiper-wrapper::before{content:'';flex-shrink:0;order:9999}.swiper-css-mode.swiper-centered>.swiper-wrapper>.swiper-slide{scroll-snap-align:center center;scroll-snap-stop:always}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper>.swiper-slide:first-child{margin-inline-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper::before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper>.swiper-slide:first-child{margin-block-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper::before{width:100%;min-width:1px;height:var(--swiper-centered-offset-after)}.swiper-3d .swiper-slide-shadow,.swiper-3d .swiper-slide-shadow-bottom,.swiper-3d .swiper-slide-shadow-left,.swiper-3d .swiper-slide-shadow-right,.swiper-3d .swiper-slide-shadow-top{position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:10}.swiper-3d .swiper-slide-shadow{background:rgba(0,0,0,.15)}.swiper-3d .swiper-slide-shadow-left{background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-3d .swiper-slide-shadow-right{background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-3d .swiper-slide-shadow-top{background-image:linear-gradient(to top,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-3d .swiper-slide-shadow-bottom{background-image:linear-gradient(to bottom,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-lazy-preloader{width:42px;height:42px;position:absolute;left:50%;top:50%;margin-left:-21px;margin-top:-21px;z-index:10;transform-origin:50%;box-sizing:border-box;border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));border-radius:50%;border-top-color:transparent}.swiper-watch-progress .swiper-slide-visible .swiper-lazy-preloader,.swiper:not(.swiper-watch-progress) .swiper-lazy-preloader{animation:swiper-preloader-spin 1s infinite linear}.swiper-lazy-preloader-white{--swiper-preloader-color:#fff}.swiper-lazy-preloader-black{--swiper-preloader-color:#000}@keyframes swiper-preloader-spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}.swiper-virtual .swiper-slide{-webkit-backface-visibility:hidden;transform:translateZ(0)}.swiper-virtual.swiper-css-mode .swiper-wrapper::after{content:'';position:absolute;left:0;top:0;pointer-events:none}.swiper-virtual.swiper-css-mode.swiper-horizontal .swiper-wrapper::after{height:1px;width:var(--swiper-virtual-size)}.swiper-virtual.swiper-css-mode.swiper-vertical .swiper-wrapper::after{width:1px;height:var(--swiper-virtual-size)}:root{--swiper-navigation-size:44px}.swiper-button-next,.swiper-button-prev{position:absolute;top:var(--swiper-navigation-top-offset,50%);width:calc(var(--swiper-navigation-size)/ 44 * 27);height:var(--swiper-navigation-size);margin-top:calc(0px - (var(--swiper-navigation-size)/ 2));z-index:10;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--swiper-navigation-color,var(--swiper-theme-color))}.swiper-button-next.swiper-button-disabled,.swiper-button-prev.swiper-button-disabled{opacity:.35;cursor:auto;pointer-events:none}.swiper-button-next.swiper-button-hidden,.swiper-button-prev.swiper-button-hidden{opacity:0;cursor:auto;pointer-events:none}.swiper-navigation-disabled .swiper-button-next,.swiper-navigation-disabled .swiper-button-prev{display:none!important}.swiper-button-next svg,.swiper-button-prev svg{width:100%;height:100%;object-fit:contain;transform-origin:center}.swiper-rtl .swiper-button-next svg,.swiper-rtl .swiper-button-prev svg{transform:rotate(180deg)}.swiper-button-prev,.swiper-rtl .swiper-button-next{left:var(--swiper-navigation-sides-offset,10px);right:auto}.swiper-button-next,.swiper-rtl .swiper-button-prev{right:var(--swiper-navigation-sides-offset,10px);left:auto}.swiper-button-lock{display:none}.swiper-button-next:after,.swiper-button-prev:after{font-family:swiper-icons;font-size:var(--swiper-navigation-size);text-transform:none!important;letter-spacing:0;font-variant:initial;line-height:1}.swiper-button-prev:after,.swiper-rtl .swiper-button-next:after{content:'prev'}.swiper-button-next,.swiper-rtl .swiper-button-prev{right:var(--swiper-navigation-sides-offset,10px);left:auto}.swiper-button-next:after,.swiper-rtl .swiper-button-prev:after{content:'next'}.swiper-pagination{position:absolute;text-align:center;transition:.3s opacity;transform:translate3d(0,0,0);z-index:10}.swiper-pagination.swiper-pagination-hidden{opacity:0}.swiper-pagination-disabled>.swiper-pagination,.swiper-pagination.swiper-pagination-disabled{display:none!important}.swiper-horizontal>.swiper-pagination-bullets,.swiper-pagination-bullets.swiper-pagination-horizontal,.swiper-pagination-custom,.swiper-pagination-fraction{bottom:var(--swiper-pagination-bottom,8px);top:var(--swiper-pagination-top,auto);left:0;width:100%}.swiper-pagination-bullets-dynamic{overflow:hidden;font-size:0}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transform:scale(.33);position:relative}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev{transform:scale(.33)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next{transform:scale(.33)}.swiper-pagination-bullet{width:var(--swiper-pagination-bullet-width,var(--swiper-pagination-bullet-size,8px));height:var(--swiper-pagination-bullet-height,var(--swiper-pagination-bullet-size,8px));display:inline-block;border-radius:var(--swiper-pagination-bullet-border-radius,50%);background:var(--swiper-pagination-bullet-inactive-color,#000);opacity:var(--swiper-pagination-bullet-inactive-opacity, .2)}button.swiper-pagination-bullet{border:none;margin:0;padding:0;box-shadow:none;-webkit-appearance:none;appearance:none}.swiper-pagination-clickable .swiper-pagination-bullet{cursor:pointer}.swiper-pagination-bullet:only-child{display:none!important}.swiper-pagination-bullet-active{opacity:var(--swiper-pagination-bullet-opacity, 1);background:var(--swiper-pagination-color,var(--swiper-theme-color))}.swiper-pagination-vertical.swiper-pagination-bullets,.swiper-vertical>.swiper-pagination-bullets{right:var(--swiper-pagination-right,8px);left:var(--swiper-pagination-left,auto);top:50%;transform:translate3d(0px,-50%,0)}.swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets .swiper-pagination-bullet{margin:var(--swiper-pagination-bullet-vertical-gap,6px) 0;display:block}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{top:50%;transform:translateY(-50%);width:8px}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{display:inline-block;transition:.2s transform,.2s top}.swiper-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 var(--swiper-pagination-bullet-horizontal-gap,4px)}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{left:50%;transform:translateX(-50%);white-space:nowrap}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s left}.swiper-horizontal.swiper-rtl>.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s right}.swiper-pagination-fraction{color:var(--swiper-pagination-fraction-color,inherit)}.swiper-pagination-progressbar{background:var(--swiper-pagination-progressbar-bg-color,rgba(0,0,0,.25));position:absolute}.swiper-pagination-progressbar .swiper-pagination-progressbar-fill{background:var(--swiper-pagination-color,var(--swiper-theme-color));position:absolute;left:0;top:0;width:100%;height:100%;transform:scale(0);transform-origin:left top}.swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill{transform-origin:right top}.swiper-horizontal>.swiper-pagination-progressbar,.swiper-pagination-progressbar.swiper-pagination-horizontal,.swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite,.swiper-vertical>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite{width:100%;height:var(--swiper-pagination-progressbar-size,4px);left:0;top:0}.swiper-horizontal>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-vertical,.swiper-vertical>.swiper-pagination-progressbar{width:var(--swiper-pagination-progressbar-size,4px);height:100%;left:0;top:0}.swiper-pagination-lock{display:none}.swiper-scrollbar{border-radius:var(--swiper-scrollbar-border-radius,10px);position:relative;touch-action:none;background:var(--swiper-scrollbar-bg-color,rgba(0,0,0,.1))}.swiper-scrollbar-disabled>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-disabled{display:none!important}.swiper-horizontal>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-horizontal{position:absolute;left:var(--swiper-scrollbar-sides-offset,1%);bottom:var(--swiper-scrollbar-bottom,4px);top:var(--swiper-scrollbar-top,auto);z-index:50;height:var(--swiper-scrollbar-size,4px);width:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%))}.swiper-scrollbar.swiper-scrollbar-vertical,.swiper-vertical>.swiper-scrollbar{position:absolute;left:var(--swiper-scrollbar-left,auto);right:var(--swiper-scrollbar-right,4px);top:var(--swiper-scrollbar-sides-offset,1%);z-index:50;width:var(--swiper-scrollbar-size,4px);height:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%))}.swiper-scrollbar-drag{height:100%;width:100%;position:relative;background:var(--swiper-scrollbar-drag-bg-color,rgba(0,0,0,.5));border-radius:var(--swiper-scrollbar-border-radius,10px);left:0;top:0}.swiper-scrollbar-cursor-drag{cursor:move}.swiper-scrollbar-lock{display:none}.swiper-zoom-container{width:100%;height:100%;display:flex;justify-content:center;align-items:center;text-align:center}.swiper-zoom-container>canvas,.swiper-zoom-container>img,.swiper-zoom-container>svg{max-width:100%;max-height:100%;object-fit:contain}.swiper-slide-zoomed{cursor:move;touch-action:none}.swiper .swiper-notification{position:absolute;left:0;top:0;pointer-events:none;opacity:0;z-index:-1000}.swiper-free-mode>.swiper-wrapper{transition-timing-function:ease-out;margin:0 auto}.swiper-grid>.swiper-wrapper{flex-wrap:wrap}.swiper-grid-column>.swiper-wrapper{flex-wrap:wrap;flex-direction:column}.swiper-fade.swiper-free-mode .swiper-slide{transition-timing-function:ease-out}.swiper-fade .swiper-slide{pointer-events:none;transition-property:opacity}.swiper-fade .swiper-slide .swiper-slide{pointer-events:none}.swiper-fade .swiper-slide-active{pointer-events:auto}.swiper-fade .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper.swiper-cube{overflow:visible}.swiper-cube .swiper-slide{pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1;visibility:hidden;transform-origin:0 0;width:100%;height:100%}.swiper-cube .swiper-slide .swiper-slide{pointer-events:none}.swiper-cube.swiper-rtl .swiper-slide{transform-origin:100% 0}.swiper-cube .swiper-slide-active,.swiper-cube .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-cube .swiper-slide-active,.swiper-cube .swiper-slide-next,.swiper-cube .swiper-slide-prev{pointer-events:auto;visibility:visible}.swiper-cube .swiper-cube-shadow{position:absolute;left:0;bottom:0px;width:100%;height:100%;opacity:.6;z-index:0}.swiper-cube .swiper-cube-shadow:before{content:'';background:#000;position:absolute;left:0;top:0;bottom:0;right:0;filter:blur(50px)}.swiper-cube .swiper-slide-next+.swiper-slide{pointer-events:auto;visibility:visible}.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-bottom,.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-left,.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-right,.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-top{z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper.swiper-flip{overflow:visible}.swiper-flip .swiper-slide{pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1}.swiper-flip .swiper-slide .swiper-slide{pointer-events:none}.swiper-flip .swiper-slide-active,.swiper-flip .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-bottom,.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-left,.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-right,.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-top{z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-creative .swiper-slide{-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden;transition-property:transform,opacity,height}.swiper.swiper-cards{overflow:visible}.swiper-cards .swiper-slide{transform-origin:center bottom;-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden} \ No newline at end of file diff --git a/site/templates/fonts/Josefin_Sans_Light.eot b/site/templates/fonts/Josefin_Sans_Light.eot deleted file mode 100644 index 653b120..0000000 Binary files a/site/templates/fonts/Josefin_Sans_Light.eot and /dev/null differ diff --git a/site/templates/fonts/Josefin_Sans_Light.otf b/site/templates/fonts/Josefin_Sans_Light.otf deleted file mode 100644 index be21387..0000000 Binary files a/site/templates/fonts/Josefin_Sans_Light.otf and /dev/null differ diff --git a/site/templates/fonts/Josefin_Sans_Light.svg b/site/templates/fonts/Josefin_Sans_Light.svg deleted file mode 100644 index aa742ea..0000000 --- a/site/templates/fonts/Josefin_Sans_Light.svg +++ /dev/null @@ -1,3241 +0,0 @@ - - - - -Created by FontForge 20201107 at Wed Aug 4 17:12:24 2021 - By Unknown -Copyright 2010 The Josefin Sans Project Authors (https://github.com/ThomasJockin/JosefinSansFont-master), with Reserved Font Name "Josefin Sans". - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/site/templates/fonts/Josefin_Sans_Light.ttf b/site/templates/fonts/Josefin_Sans_Light.ttf deleted file mode 100644 index 33ae128..0000000 Binary files a/site/templates/fonts/Josefin_Sans_Light.ttf and /dev/null differ diff --git a/site/templates/fonts/Josefin_Sans_Light.woff b/site/templates/fonts/Josefin_Sans_Light.woff deleted file mode 100644 index 8defdab..0000000 Binary files a/site/templates/fonts/Josefin_Sans_Light.woff and /dev/null differ diff --git a/site/templates/fonts/Josefin_Sans_Light.woff2 b/site/templates/fonts/Josefin_Sans_Light.woff2 deleted file mode 100644 index 59522de..0000000 Binary files a/site/templates/fonts/Josefin_Sans_Light.woff2 and /dev/null differ diff --git a/site/templates/fonts/Josefin_Sans_Light_Italic.eot b/site/templates/fonts/Josefin_Sans_Light_Italic.eot deleted file mode 100644 index 779f313..0000000 Binary files a/site/templates/fonts/Josefin_Sans_Light_Italic.eot and /dev/null differ diff --git a/site/templates/fonts/Josefin_Sans_Light_Italic.otf b/site/templates/fonts/Josefin_Sans_Light_Italic.otf deleted file mode 100644 index 0edcb4b..0000000 Binary files a/site/templates/fonts/Josefin_Sans_Light_Italic.otf and /dev/null differ diff --git a/site/templates/fonts/Josefin_Sans_Light_Italic.svg b/site/templates/fonts/Josefin_Sans_Light_Italic.svg deleted file mode 100644 index 973fd57..0000000 --- a/site/templates/fonts/Josefin_Sans_Light_Italic.svg +++ /dev/null @@ -1,3202 +0,0 @@ - - - - -Created by FontForge 20201107 at Wed Aug 4 17:12:24 2021 - By Unknown -Copyright 2010 The Josefin Sans Project Authors (https://github.com/ThomasJockin/JosefinSansFont-master), with Reserved Font Name "Josefin Sans". - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/site/templates/fonts/Josefin_Sans_Light_Italic.ttf b/site/templates/fonts/Josefin_Sans_Light_Italic.ttf deleted file mode 100644 index 8c30b0f..0000000 Binary files a/site/templates/fonts/Josefin_Sans_Light_Italic.ttf and /dev/null differ diff --git a/site/templates/fonts/Josefin_Sans_Light_Italic.woff b/site/templates/fonts/Josefin_Sans_Light_Italic.woff deleted file mode 100644 index eea8406..0000000 Binary files a/site/templates/fonts/Josefin_Sans_Light_Italic.woff and /dev/null differ diff --git a/site/templates/fonts/Josefin_Sans_Light_Italic.woff2 b/site/templates/fonts/Josefin_Sans_Light_Italic.woff2 deleted file mode 100644 index 364d0e0..0000000 Binary files a/site/templates/fonts/Josefin_Sans_Light_Italic.woff2 and /dev/null differ diff --git a/site/templates/fonts/Josefin_Sans_Reguar_Italic.eot b/site/templates/fonts/Josefin_Sans_Reguar_Italic.eot deleted file mode 100644 index 69497b4..0000000 Binary files a/site/templates/fonts/Josefin_Sans_Reguar_Italic.eot and /dev/null differ diff --git a/site/templates/fonts/Josefin_Sans_Reguar_Italic.otf b/site/templates/fonts/Josefin_Sans_Reguar_Italic.otf deleted file mode 100644 index b9dbcfc..0000000 Binary files a/site/templates/fonts/Josefin_Sans_Reguar_Italic.otf and /dev/null differ diff --git a/site/templates/fonts/Josefin_Sans_Reguar_Italic.svg b/site/templates/fonts/Josefin_Sans_Reguar_Italic.svg deleted file mode 100644 index c53a7ed..0000000 --- a/site/templates/fonts/Josefin_Sans_Reguar_Italic.svg +++ /dev/null @@ -1,3199 +0,0 @@ - - - - -Created by FontForge 20201107 at Wed Aug 4 17:12:24 2021 - By Unknown -Copyright 2010 The Josefin Sans Project Authors (https://github.com/ThomasJockin/JosefinSansFont-master), with Reserved Font Name "Josefin Sans". - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/site/templates/fonts/Josefin_Sans_Reguar_Italic.ttf b/site/templates/fonts/Josefin_Sans_Reguar_Italic.ttf deleted file mode 100644 index 6e4be84..0000000 Binary files a/site/templates/fonts/Josefin_Sans_Reguar_Italic.ttf and /dev/null differ diff --git a/site/templates/fonts/Josefin_Sans_Reguar_Italic.woff b/site/templates/fonts/Josefin_Sans_Reguar_Italic.woff deleted file mode 100644 index 63275a3..0000000 Binary files a/site/templates/fonts/Josefin_Sans_Reguar_Italic.woff and /dev/null differ diff --git a/site/templates/fonts/Josefin_Sans_Reguar_Italic.woff2 b/site/templates/fonts/Josefin_Sans_Reguar_Italic.woff2 deleted file mode 100644 index 4bdee8b..0000000 Binary files a/site/templates/fonts/Josefin_Sans_Reguar_Italic.woff2 and /dev/null differ diff --git a/site/templates/fonts/Josefin_Sans_Regular.eot b/site/templates/fonts/Josefin_Sans_Regular.eot deleted file mode 100644 index b26f8c6..0000000 Binary files a/site/templates/fonts/Josefin_Sans_Regular.eot and /dev/null differ diff --git a/site/templates/fonts/Josefin_Sans_Regular.otf b/site/templates/fonts/Josefin_Sans_Regular.otf deleted file mode 100644 index c26e2b5..0000000 Binary files a/site/templates/fonts/Josefin_Sans_Regular.otf and /dev/null differ diff --git a/site/templates/fonts/Josefin_Sans_Regular.svg b/site/templates/fonts/Josefin_Sans_Regular.svg deleted file mode 100644 index 4d9f56e..0000000 --- a/site/templates/fonts/Josefin_Sans_Regular.svg +++ /dev/null @@ -1,3240 +0,0 @@ - - - - -Created by FontForge 20201107 at Wed Aug 4 17:12:24 2021 - By Unknown -Copyright 2010 The Josefin Sans Project Authors (https://github.com/ThomasJockin/JosefinSansFont-master), with Reserved Font Name "Josefin Sans". - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/site/templates/fonts/Josefin_Sans_Regular.ttf b/site/templates/fonts/Josefin_Sans_Regular.ttf deleted file mode 100644 index 15e9d8f..0000000 Binary files a/site/templates/fonts/Josefin_Sans_Regular.ttf and /dev/null differ diff --git a/site/templates/fonts/Josefin_Sans_Regular.woff b/site/templates/fonts/Josefin_Sans_Regular.woff deleted file mode 100644 index 04506ed..0000000 Binary files a/site/templates/fonts/Josefin_Sans_Regular.woff and /dev/null differ diff --git a/site/templates/fonts/Josefin_Sans_Regular.woff2 b/site/templates/fonts/Josefin_Sans_Regular.woff2 deleted file mode 100644 index 1eecabb..0000000 Binary files a/site/templates/fonts/Josefin_Sans_Regular.woff2 and /dev/null differ diff --git a/site/templates/fonts/Source_Sans_Pro_Italic.eot b/site/templates/fonts/Source_Sans_Pro_Italic.eot deleted file mode 100644 index 5b7fc58..0000000 Binary files a/site/templates/fonts/Source_Sans_Pro_Italic.eot and /dev/null differ diff --git a/site/templates/fonts/Source_Sans_Pro_Italic.otf b/site/templates/fonts/Source_Sans_Pro_Italic.otf deleted file mode 100644 index d2ca6b7..0000000 Binary files a/site/templates/fonts/Source_Sans_Pro_Italic.otf and /dev/null differ diff --git a/site/templates/fonts/Source_Sans_Pro_Italic.svg b/site/templates/fonts/Source_Sans_Pro_Italic.svg deleted file mode 100644 index 05c4add..0000000 --- a/site/templates/fonts/Source_Sans_Pro_Italic.svg +++ /dev/null @@ -1,5127 +0,0 @@ - - - - -Created by FontForge 20201107 at Tue Sep 14 10:51:35 2021 - By Unknown -(c) 2010 - 2018 Adobe Systems Incorporated (http://www.adobe.com/), with Reserved Font Name `Source'. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/site/templates/fonts/Source_Sans_Pro_Italic.ttf b/site/templates/fonts/Source_Sans_Pro_Italic.ttf deleted file mode 100644 index 7dbece7..0000000 Binary files a/site/templates/fonts/Source_Sans_Pro_Italic.ttf and /dev/null differ diff --git a/site/templates/fonts/Source_Sans_Pro_Italic.woff b/site/templates/fonts/Source_Sans_Pro_Italic.woff deleted file mode 100644 index 2ac6876..0000000 Binary files a/site/templates/fonts/Source_Sans_Pro_Italic.woff and /dev/null differ diff --git a/site/templates/fonts/Source_Sans_Pro_Italic.woff2 b/site/templates/fonts/Source_Sans_Pro_Italic.woff2 deleted file mode 100644 index 6178f20..0000000 Binary files a/site/templates/fonts/Source_Sans_Pro_Italic.woff2 and /dev/null differ diff --git a/site/templates/fonts/Source_Sans_Pro_Regular.eot b/site/templates/fonts/Source_Sans_Pro_Regular.eot deleted file mode 100644 index 302e8d9..0000000 Binary files a/site/templates/fonts/Source_Sans_Pro_Regular.eot and /dev/null differ diff --git a/site/templates/fonts/Source_Sans_Pro_Regular.otf b/site/templates/fonts/Source_Sans_Pro_Regular.otf deleted file mode 100644 index a19ce67..0000000 Binary files a/site/templates/fonts/Source_Sans_Pro_Regular.otf and /dev/null differ diff --git a/site/templates/fonts/Source_Sans_Pro_Regular.svg b/site/templates/fonts/Source_Sans_Pro_Regular.svg deleted file mode 100644 index 79cb04f..0000000 --- a/site/templates/fonts/Source_Sans_Pro_Regular.svg +++ /dev/null @@ -1,19063 +0,0 @@ - - - - -Created by FontForge 20201107 at Tue Sep 14 10:51:34 2021 - By Unknown -(c) 2010 - 2018 Adobe Systems Incorporated (http://www.adobe.com/), with Reserved Font Name `Source'. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/site/templates/fonts/Source_Sans_Pro_Regular.ttf b/site/templates/fonts/Source_Sans_Pro_Regular.ttf deleted file mode 100644 index 98e8579..0000000 Binary files a/site/templates/fonts/Source_Sans_Pro_Regular.ttf and /dev/null differ diff --git a/site/templates/fonts/Source_Sans_Pro_Regular.woff b/site/templates/fonts/Source_Sans_Pro_Regular.woff deleted file mode 100644 index 631573d..0000000 Binary files a/site/templates/fonts/Source_Sans_Pro_Regular.woff and /dev/null differ diff --git a/site/templates/fonts/Source_Sans_Pro_Regular.woff2 b/site/templates/fonts/Source_Sans_Pro_Regular.woff2 deleted file mode 100644 index d10a342..0000000 Binary files a/site/templates/fonts/Source_Sans_Pro_Regular.woff2 and /dev/null differ diff --git a/site/templates/fonts/Source_Sans_Pro_SemiBold.eot b/site/templates/fonts/Source_Sans_Pro_SemiBold.eot deleted file mode 100644 index 86fb7e6..0000000 Binary files a/site/templates/fonts/Source_Sans_Pro_SemiBold.eot and /dev/null differ diff --git a/site/templates/fonts/Source_Sans_Pro_SemiBold.otf b/site/templates/fonts/Source_Sans_Pro_SemiBold.otf deleted file mode 100644 index dd17fea..0000000 Binary files a/site/templates/fonts/Source_Sans_Pro_SemiBold.otf and /dev/null differ diff --git a/site/templates/fonts/Source_Sans_Pro_SemiBold.svg b/site/templates/fonts/Source_Sans_Pro_SemiBold.svg deleted file mode 100644 index 9715e29..0000000 --- a/site/templates/fonts/Source_Sans_Pro_SemiBold.svg +++ /dev/null @@ -1,18804 +0,0 @@ - - - - -Created by FontForge 20201107 at Tue Sep 14 10:51:35 2021 - By Unknown -(c) 2010 - 2018 Adobe Systems Incorporated (http://www.adobe.com/), with Reserved Font Name `Source'. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/site/templates/fonts/Source_Sans_Pro_SemiBold.ttf b/site/templates/fonts/Source_Sans_Pro_SemiBold.ttf deleted file mode 100644 index 99dcc81..0000000 Binary files a/site/templates/fonts/Source_Sans_Pro_SemiBold.ttf and /dev/null differ diff --git a/site/templates/fonts/Source_Sans_Pro_SemiBold.woff b/site/templates/fonts/Source_Sans_Pro_SemiBold.woff deleted file mode 100644 index d467481..0000000 Binary files a/site/templates/fonts/Source_Sans_Pro_SemiBold.woff and /dev/null differ diff --git a/site/templates/fonts/Source_Sans_Pro_SemiBold.woff2 b/site/templates/fonts/Source_Sans_Pro_SemiBold.woff2 deleted file mode 100644 index fdca0c6..0000000 Binary files a/site/templates/fonts/Source_Sans_Pro_SemiBold.woff2 and /dev/null differ diff --git a/site/templates/fonts/Source_Sans_Pro_SemiBold_Italic.eot b/site/templates/fonts/Source_Sans_Pro_SemiBold_Italic.eot deleted file mode 100644 index 0b97c66..0000000 Binary files a/site/templates/fonts/Source_Sans_Pro_SemiBold_Italic.eot and /dev/null differ diff --git a/site/templates/fonts/Source_Sans_Pro_SemiBold_Italic.otf b/site/templates/fonts/Source_Sans_Pro_SemiBold_Italic.otf deleted file mode 100644 index 93579cb..0000000 Binary files a/site/templates/fonts/Source_Sans_Pro_SemiBold_Italic.otf and /dev/null differ diff --git a/site/templates/fonts/Source_Sans_Pro_SemiBold_Italic.svg b/site/templates/fonts/Source_Sans_Pro_SemiBold_Italic.svg deleted file mode 100644 index 8d82db3..0000000 --- a/site/templates/fonts/Source_Sans_Pro_SemiBold_Italic.svg +++ /dev/null @@ -1,5106 +0,0 @@ - - - - -Created by FontForge 20201107 at Tue Sep 14 10:51:34 2021 - By Unknown -(c) 2010 - 2018 Adobe Systems Incorporated (http://www.adobe.com/), with Reserved Font Name `Source'. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/site/templates/fonts/Source_Sans_Pro_SemiBold_Italic.ttf b/site/templates/fonts/Source_Sans_Pro_SemiBold_Italic.ttf deleted file mode 100644 index 9c3891b..0000000 Binary files a/site/templates/fonts/Source_Sans_Pro_SemiBold_Italic.ttf and /dev/null differ diff --git a/site/templates/fonts/Source_Sans_Pro_SemiBold_Italic.woff b/site/templates/fonts/Source_Sans_Pro_SemiBold_Italic.woff deleted file mode 100644 index 828d254..0000000 Binary files a/site/templates/fonts/Source_Sans_Pro_SemiBold_Italic.woff and /dev/null differ diff --git a/site/templates/fonts/Source_Sans_Pro_SemiBold_Italic.woff2 b/site/templates/fonts/Source_Sans_Pro_SemiBold_Italic.woff2 deleted file mode 100644 index 3bd9153..0000000 Binary files a/site/templates/fonts/Source_Sans_Pro_SemiBold_Italic.woff2 and /dev/null differ diff --git a/site/templates/fonts/icomoon.eot b/site/templates/fonts/icomoon.eot new file mode 100644 index 0000000..50503ab Binary files /dev/null and b/site/templates/fonts/icomoon.eot differ diff --git a/site/templates/fonts/icomoon_Regular.otf b/site/templates/fonts/icomoon.otf similarity index 80% rename from site/templates/fonts/icomoon_Regular.otf rename to site/templates/fonts/icomoon.otf index 6d73d3a..70f018d 100644 Binary files a/site/templates/fonts/icomoon_Regular.otf and b/site/templates/fonts/icomoon.otf differ diff --git a/site/templates/fonts/icomoon.svg b/site/templates/fonts/icomoon.svg new file mode 100644 index 0000000..4320e43 --- /dev/null +++ b/site/templates/fonts/icomoon.svg @@ -0,0 +1,54 @@ + + + +Generated by IcoMoon + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/site/templates/fonts/icomoon_Regular.ttf b/site/templates/fonts/icomoon.ttf similarity index 57% rename from site/templates/fonts/icomoon_Regular.ttf rename to site/templates/fonts/icomoon.ttf index 62d09c2..5a349f4 100644 Binary files a/site/templates/fonts/icomoon_Regular.ttf and b/site/templates/fonts/icomoon.ttf differ diff --git a/site/templates/fonts/icomoon.woff b/site/templates/fonts/icomoon.woff new file mode 100644 index 0000000..7fdfdc3 Binary files /dev/null and b/site/templates/fonts/icomoon.woff differ diff --git a/site/templates/fonts/icomoon.woff2 b/site/templates/fonts/icomoon.woff2 new file mode 100644 index 0000000..62ab62d Binary files /dev/null and b/site/templates/fonts/icomoon.woff2 differ diff --git a/site/templates/fonts/icomoon_Regular.eot b/site/templates/fonts/icomoon_Regular.eot deleted file mode 100644 index 04e7040..0000000 Binary files a/site/templates/fonts/icomoon_Regular.eot and /dev/null differ diff --git a/site/templates/fonts/icomoon_Regular.svg b/site/templates/fonts/icomoon_Regular.svg deleted file mode 100644 index 3669000..0000000 --- a/site/templates/fonts/icomoon_Regular.svg +++ /dev/null @@ -1,231 +0,0 @@ - - - - -Created by FontForge 20201107 at Fri Mar 10 18:08:55 2023 - By Unknown - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/site/templates/fonts/icomoon_Regular.woff b/site/templates/fonts/icomoon_Regular.woff deleted file mode 100644 index 44e60eb..0000000 Binary files a/site/templates/fonts/icomoon_Regular.woff and /dev/null differ diff --git a/site/templates/fonts/icomoon_Regular.woff2 b/site/templates/fonts/icomoon_Regular.woff2 deleted file mode 100644 index 6156db2..0000000 Binary files a/site/templates/fonts/icomoon_Regular.woff2 and /dev/null differ diff --git a/site/templates/images/logo-praia-seselle-150x116.jpg b/site/templates/images/logo-praia-seselle-150x116.jpg deleted file mode 100644 index 0521dc2..0000000 Binary files a/site/templates/images/logo-praia-seselle-150x116.jpg and /dev/null differ diff --git a/site/templates/images/logo-praia-seselle-230x179.jpg b/site/templates/images/logo-praia-seselle-230x179.jpg deleted file mode 100644 index 77fae9d..0000000 Binary files a/site/templates/images/logo-praia-seselle-230x179.jpg and /dev/null differ diff --git a/site/templates/images/logo-praia-seselle.svg b/site/templates/images/logo-praia-seselle.svg deleted file mode 100644 index 28ce1b2..0000000 --- a/site/templates/images/logo-praia-seselle.svg +++ /dev/null @@ -1,215 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/site/templates/images/logo.jpg b/site/templates/images/logo.jpg deleted file mode 100644 index aeeafe7..0000000 Binary files a/site/templates/images/logo.jpg and /dev/null differ diff --git a/site/templates/inicio.php b/site/templates/inicio.php index 8e4d4c7..f8b69f3 100644 --- a/site/templates/inicio.php +++ b/site/templates/inicio.php @@ -1,23 +1,28 @@ ' . "\n"; -$contido .= '

' . ucfirst($inicio->title) . '

' . "\n"; - -if($configuracion['mantemento']['activo'] && !$user->isLoggedin()) -{ - $menu = renderMenu($pages->get('/noticias')->and($pages->get('/contacto'))); - $contido .= renderTextoMantemento($configuracion['mantemento']['titular'], $configuracion['mantemento']['artigo'], $configuracion['mantemento']['imaxe']) . "\n"; -} -else -{ - $menu = renderMenu($inicio->children); - - $contido .= getSeccions($page->seccions) . "\n"; -} -$contido .= '' . "\n"; \ No newline at end of file +?> +
+ +
+

title);?>

+isLoggedin()):?> +and($pages->get('/noticias')->and($pages->get('/contacto'))));?> + + +and($inicio->children));?> + seccions);?> + +
+
\ No newline at end of file diff --git a/site/templates/js/main.js b/site/templates/js/main.js index 81931cd..244c950 100644 --- a/site/templates/js/main.js +++ b/site/templates/js/main.js @@ -1,42 +1,33 @@ -document.addEventListener("click", function (e) +function abrirMenu() { - if(e.target.classList.contains("reixa-item")) - { - const src = e.target.getAttribute("src"); - const alt = e.target.getAttribute("alt"); - const myModal = new bootstrap.Modal(document.getElementById("reixa-modal")) - - document.querySelector(".modal-img").src = src; - document.querySelector(".modal-label").innerHTML = alt; - myModal.show(); - } -}); - -document.addEventListener("show.bs.collapse", function (e) + document.getElementById("menu-despregable").classList.add("despregado"); + +} + +function pecharMenu() { - e.target.previousElementSibling.classList.add("active"); -}); + document.getElementById("menu-despregable").classList.remove("despregado"); +} -document.addEventListener("hide.bs.collapse", function (e) -{ - e.target.previousElementSibling.classList.remove("active"); -}); - -const swiper_galeria = new Swiper("#galeria", +const swiper_galeria = new Swiper(".galeria", { + allowTouchMove: false, slidesPerView: 1, - spaceBetween: 30, + spaceBetween: 0, loop: true, - lazy: true, autoHeight: false, - keyboard: true, centeredSlides: true, - autoplay: + keyboard: { + enabled: true, + onlyInViewport: false, + }, + autoplay: false, + /*{ delay: 2500, disableOnInteraction: false, pauseOnMouseEnter: true, - }, + },*/ pagination: { el: ".swiper-pagination", @@ -47,60 +38,5 @@ const swiper_galeria = new Swiper("#galeria", nextEl: ".swiper-button-next", prevEl: ".swiper-button-prev", }, -}); - -function getLogin(event) -{ - event.preventDefault(); - grecaptcha.ready(function() - { - grecaptcha.execute('6LexXqYiAAAAACwDpMGIg1OMnAXVJU0VmbEMQUD8', { action: 'submit' }).then(function(token) - { - var form = document.getElementById("inicio-sesion"); - var boton_token = document.createElement('input'); - - boton_token.type = 'hidden'; - boton_token.name = 'token'; - boton_token.id = 'token'; - boton_token.value = token; - - var boton_action = document.createElement('input'); - boton_action.type = 'hidden'; - boton_action.name = 'action'; - boton_action.id = 'action'; - boton_action.value = 'submit'; - - form.appendChild(boton_token); - form.appendChild(boton_action); - form.submit(); - });; - }); -} - -function getContact(event) -{ - event.preventDefault(); - grecaptcha.ready(function() - { - grecaptcha.execute('6LexXqYiAAAAACwDpMGIg1OMnAXVJU0VmbEMQUD8', { action: 'submit' }).then(function(token) - { - var form = document.getElementById("formulario-contacto"); - var boton_token = document.createElement('input'); - - boton_token.type = 'hidden'; - boton_token.name = 'token'; - boton_token.id = 'token'; - boton_token.value = token; - - var boton_action = document.createElement('input'); - boton_action.type = 'hidden'; - boton_action.name = 'action'; - boton_action.id = 'action'; - boton_action.value = 'submit'; - - form.appendChild(boton_token); - form.appendChild(boton_action); - form.submit(); - });; - }); -} \ No newline at end of file + freeMode: false, +}); \ No newline at end of file diff --git a/site/templates/js/swiper-bundle.min.js b/site/templates/js/swiper-bundle.min.js new file mode 100644 index 0000000..b1694e1 --- /dev/null +++ b/site/templates/js/swiper-bundle.min.js @@ -0,0 +1,14 @@ +/** + * Swiper 11.1.14 + * Most modern mobile touch slider and framework with hardware accelerated transitions + * https://swiperjs.com + * + * Copyright 2014-2024 Vladimir Kharlampidi + * + * Released under the MIT License + * + * Released on: September 12, 2024 + */ + +var Swiper=function(){"use strict";function e(e){return null!==e&&"object"==typeof e&&"constructor"in e&&e.constructor===Object}function t(s,a){void 0===s&&(s={}),void 0===a&&(a={}),Object.keys(a).forEach((i=>{void 0===s[i]?s[i]=a[i]:e(a[i])&&e(s[i])&&Object.keys(a[i]).length>0&&t(s[i],a[i])}))}const s={body:{},addEventListener(){},removeEventListener(){},activeElement:{blur(){},nodeName:""},querySelector:()=>null,querySelectorAll:()=>[],getElementById:()=>null,createEvent:()=>({initEvent(){}}),createElement:()=>({children:[],childNodes:[],style:{},setAttribute(){},getElementsByTagName:()=>[]}),createElementNS:()=>({}),importNode:()=>null,location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""}};function a(){const e="undefined"!=typeof document?document:{};return t(e,s),e}const i={document:s,navigator:{userAgent:""},location:{hash:"",host:"",hostname:"",href:"",origin:"",pathname:"",protocol:"",search:""},history:{replaceState(){},pushState(){},go(){},back(){}},CustomEvent:function(){return this},addEventListener(){},removeEventListener(){},getComputedStyle:()=>({getPropertyValue:()=>""}),Image(){},Date(){},screen:{},setTimeout(){},clearTimeout(){},matchMedia:()=>({}),requestAnimationFrame:e=>"undefined"==typeof setTimeout?(e(),null):setTimeout(e,0),cancelAnimationFrame(e){"undefined"!=typeof setTimeout&&clearTimeout(e)}};function r(){const e="undefined"!=typeof window?window:{};return t(e,i),e}function n(e){return void 0===e&&(e=""),e.trim().split(" ").filter((e=>!!e.trim()))}function l(e,t){return void 0===t&&(t=0),setTimeout(e,t)}function o(){return Date.now()}function d(e,t){void 0===t&&(t="x");const s=r();let a,i,n;const l=function(e){const t=r();let s;return t.getComputedStyle&&(s=t.getComputedStyle(e,null)),!s&&e.currentStyle&&(s=e.currentStyle),s||(s=e.style),s}(e);return s.WebKitCSSMatrix?(i=l.transform||l.webkitTransform,i.split(",").length>6&&(i=i.split(", ").map((e=>e.replace(",","."))).join(", ")),n=new s.WebKitCSSMatrix("none"===i?"":i)):(n=l.MozTransform||l.OTransform||l.MsTransform||l.msTransform||l.transform||l.getPropertyValue("transform").replace("translate(","matrix(1, 0, 0, 1,"),a=n.toString().split(",")),"x"===t&&(i=s.WebKitCSSMatrix?n.m41:16===a.length?parseFloat(a[12]):parseFloat(a[4])),"y"===t&&(i=s.WebKitCSSMatrix?n.m42:16===a.length?parseFloat(a[13]):parseFloat(a[5])),i||0}function c(e){return"object"==typeof e&&null!==e&&e.constructor&&"Object"===Object.prototype.toString.call(e).slice(8,-1)}function p(){const e=Object(arguments.length<=0?void 0:arguments[0]),t=["__proto__","constructor","prototype"];for(let a=1;at.indexOf(e)<0));for(let t=0,a=s.length;tn?"next":"prev",p=(e,t)=>"next"===c&&e>=t||"prev"===c&&e<=t,u=()=>{l=(new Date).getTime(),null===o&&(o=l);const e=Math.max(Math.min((l-o)/d,1),0),r=.5-Math.cos(e*Math.PI)/2;let c=n+r*(s-n);if(p(c,s)&&(c=s),t.wrapperEl.scrollTo({[a]:c}),p(c,s))return t.wrapperEl.style.overflow="hidden",t.wrapperEl.style.scrollSnapType="",setTimeout((()=>{t.wrapperEl.style.overflow="",t.wrapperEl.scrollTo({[a]:c})})),void i.cancelAnimationFrame(t.cssModeFrameID);t.cssModeFrameID=i.requestAnimationFrame(u)};u()}function h(e){return e.querySelector(".swiper-slide-transform")||e.shadowRoot&&e.shadowRoot.querySelector(".swiper-slide-transform")||e}function f(e,t){void 0===t&&(t="");const s=[...e.children];return e instanceof HTMLSlotElement&&s.push(...e.assignedElements()),t?s.filter((e=>e.matches(t))):s}function g(e){try{return void console.warn(e)}catch(e){}}function v(e,t){void 0===t&&(t=[]);const s=document.createElement(e);return s.classList.add(...Array.isArray(t)?t:n(t)),s}function w(e){const t=r(),s=a(),i=e.getBoundingClientRect(),n=s.body,l=e.clientTop||n.clientTop||0,o=e.clientLeft||n.clientLeft||0,d=e===t?t.scrollY:e.scrollTop,c=e===t?t.scrollX:e.scrollLeft;return{top:i.top+d-l,left:i.left+c-o}}function b(e,t){return r().getComputedStyle(e,null).getPropertyValue(t)}function y(e){let t,s=e;if(s){for(t=0;null!==(s=s.previousSibling);)1===s.nodeType&&(t+=1);return t}}function E(e,t){const s=[];let a=e.parentElement;for(;a;)t?a.matches(t)&&s.push(a):s.push(a),a=a.parentElement;return s}function x(e,t){t&&e.addEventListener("transitionend",(function s(a){a.target===e&&(t.call(e,a),e.removeEventListener("transitionend",s))}))}function S(e,t,s){const a=r();return s?e["width"===t?"offsetWidth":"offsetHeight"]+parseFloat(a.getComputedStyle(e,null).getPropertyValue("width"===t?"margin-right":"margin-top"))+parseFloat(a.getComputedStyle(e,null).getPropertyValue("width"===t?"margin-left":"margin-bottom")):e.offsetWidth}function T(e){return(Array.isArray(e)?e:[e]).filter((e=>!!e))}function M(e){return t=>Math.abs(t)>0&&e.browser&&e.browser.need3dFix&&Math.abs(t)%90==0?t+.001:t}let C,P,L;function I(){return C||(C=function(){const e=r(),t=a();return{smoothScroll:t.documentElement&&t.documentElement.style&&"scrollBehavior"in t.documentElement.style,touch:!!("ontouchstart"in e||e.DocumentTouch&&t instanceof e.DocumentTouch)}}()),C}function z(e){return void 0===e&&(e={}),P||(P=function(e){let{userAgent:t}=void 0===e?{}:e;const s=I(),a=r(),i=a.navigator.platform,n=t||a.navigator.userAgent,l={ios:!1,android:!1},o=a.screen.width,d=a.screen.height,c=n.match(/(Android);?[\s\/]+([\d.]+)?/);let p=n.match(/(iPad).*OS\s([\d_]+)/);const u=n.match(/(iPod)(.*OS\s([\d_]+))?/),m=!p&&n.match(/(iPhone\sOS|iOS)\s([\d_]+)/),h="Win32"===i;let f="MacIntel"===i;return!p&&f&&s.touch&&["1024x1366","1366x1024","834x1194","1194x834","834x1112","1112x834","768x1024","1024x768","820x1180","1180x820","810x1080","1080x810"].indexOf(`${o}x${d}`)>=0&&(p=n.match(/(Version)\/([\d.]+)/),p||(p=[0,1,"13_0_0"]),f=!1),c&&!h&&(l.os="android",l.android=!0),(p||m||u)&&(l.os="ios",l.ios=!0),l}(e)),P}function A(){return L||(L=function(){const e=r(),t=z();let s=!1;function a(){const t=e.navigator.userAgent.toLowerCase();return t.indexOf("safari")>=0&&t.indexOf("chrome")<0&&t.indexOf("android")<0}if(a()){const t=String(e.navigator.userAgent);if(t.includes("Version/")){const[e,a]=t.split("Version/")[1].split(" ")[0].split(".").map((e=>Number(e)));s=e<16||16===e&&a<2}}const i=/(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(e.navigator.userAgent),n=a();return{isSafari:s||n,needPerspectiveFix:s,need3dFix:n||i&&t.ios,isWebView:i}}()),L}var $={on(e,t,s){const a=this;if(!a.eventsListeners||a.destroyed)return a;if("function"!=typeof t)return a;const i=s?"unshift":"push";return e.split(" ").forEach((e=>{a.eventsListeners[e]||(a.eventsListeners[e]=[]),a.eventsListeners[e][i](t)})),a},once(e,t,s){const a=this;if(!a.eventsListeners||a.destroyed)return a;if("function"!=typeof t)return a;function i(){a.off(e,i),i.__emitterProxy&&delete i.__emitterProxy;for(var s=arguments.length,r=new Array(s),n=0;n=0&&t.eventsAnyListeners.splice(s,1),t},off(e,t){const s=this;return!s.eventsListeners||s.destroyed?s:s.eventsListeners?(e.split(" ").forEach((e=>{void 0===t?s.eventsListeners[e]=[]:s.eventsListeners[e]&&s.eventsListeners[e].forEach(((a,i)=>{(a===t||a.__emitterProxy&&a.__emitterProxy===t)&&s.eventsListeners[e].splice(i,1)}))})),s):s},emit(){const e=this;if(!e.eventsListeners||e.destroyed)return e;if(!e.eventsListeners)return e;let t,s,a;for(var i=arguments.length,r=new Array(i),n=0;n{e.eventsAnyListeners&&e.eventsAnyListeners.length&&e.eventsAnyListeners.forEach((e=>{e.apply(a,[t,...s])})),e.eventsListeners&&e.eventsListeners[t]&&e.eventsListeners[t].forEach((e=>{e.apply(a,s)}))})),e}};const k=(e,t,s)=>{t&&!e.classList.contains(s)?e.classList.add(s):!t&&e.classList.contains(s)&&e.classList.remove(s)};const O=(e,t,s)=>{t&&!e.classList.contains(s)?e.classList.add(s):!t&&e.classList.contains(s)&&e.classList.remove(s)};const D=(e,t)=>{if(!e||e.destroyed||!e.params)return;const s=t.closest(e.isElement?"swiper-slide":`.${e.params.slideClass}`);if(s){let t=s.querySelector(`.${e.params.lazyPreloaderClass}`);!t&&e.isElement&&(s.shadowRoot?t=s.shadowRoot.querySelector(`.${e.params.lazyPreloaderClass}`):requestAnimationFrame((()=>{s.shadowRoot&&(t=s.shadowRoot.querySelector(`.${e.params.lazyPreloaderClass}`),t&&t.remove())}))),t&&t.remove()}},G=(e,t)=>{if(!e.slides[t])return;const s=e.slides[t].querySelector('[loading="lazy"]');s&&s.removeAttribute("loading")},H=e=>{if(!e||e.destroyed||!e.params)return;let t=e.params.lazyPreloadPrevNext;const s=e.slides.length;if(!s||!t||t<0)return;t=Math.min(t,s);const a="auto"===e.params.slidesPerView?e.slidesPerViewDynamic():Math.ceil(e.params.slidesPerView),i=e.activeIndex;if(e.params.grid&&e.params.grid.rows>1){const s=i,r=[s-t];return r.push(...Array.from({length:t}).map(((e,t)=>s+a+t))),void e.slides.forEach(((t,s)=>{r.includes(t.column)&&G(e,s)}))}const r=i+a-1;if(e.params.rewind||e.params.loop)for(let a=i-t;a<=r+t;a+=1){const t=(a%s+s)%s;(tr)&&G(e,t)}else for(let a=Math.max(i-t,0);a<=Math.min(r+t,s-1);a+=1)a!==i&&(a>r||a=0?x=parseFloat(x.replace("%",""))/100*r:"string"==typeof x&&(x=parseFloat(x)),e.virtualSize=-x,c.forEach((e=>{n?e.style.marginLeft="":e.style.marginRight="",e.style.marginBottom="",e.style.marginTop=""})),s.centeredSlides&&s.cssMode&&(u(a,"--swiper-centered-offset-before",""),u(a,"--swiper-centered-offset-after",""));const P=s.grid&&s.grid.rows>1&&e.grid;let L;P?e.grid.initSlides(c):e.grid&&e.grid.unsetSlides();const I="auto"===s.slidesPerView&&s.breakpoints&&Object.keys(s.breakpoints).filter((e=>void 0!==s.breakpoints[e].slidesPerView)).length>0;for(let a=0;a1&&m.push(e.virtualSize-r)}if(o&&s.loop){const t=g[0]+x;if(s.slidesPerGroup>1){const a=Math.ceil((e.virtual.slidesBefore+e.virtual.slidesAfter)/s.slidesPerGroup),i=t*s.slidesPerGroup;for(let e=0;e!(s.cssMode&&!s.loop)||t!==c.length-1)).forEach((e=>{e.style[t]=`${x}px`}))}if(s.centeredSlides&&s.centeredSlidesBounds){let e=0;g.forEach((t=>{e+=t+(x||0)})),e-=x;const t=e>r?e-r:0;m=m.map((e=>e<=0?-v:e>t?t+w:e))}if(s.centerInsufficientSlides){let e=0;g.forEach((t=>{e+=t+(x||0)})),e-=x;const t=(s.slidesOffsetBefore||0)+(s.slidesOffsetAfter||0);if(e+t{m[t]=e-s})),h.forEach(((e,t)=>{h[t]=e+s}))}}if(Object.assign(e,{slides:c,snapGrid:m,slidesGrid:h,slidesSizesGrid:g}),s.centeredSlides&&s.cssMode&&!s.centeredSlidesBounds){u(a,"--swiper-centered-offset-before",-m[0]+"px"),u(a,"--swiper-centered-offset-after",e.size/2-g[g.length-1]/2+"px");const t=-e.snapGrid[0],s=-e.slidesGrid[0];e.snapGrid=e.snapGrid.map((e=>e+t)),e.slidesGrid=e.slidesGrid.map((e=>e+s))}if(p!==d&&e.emit("slidesLengthChange"),m.length!==y&&(e.params.watchOverflow&&e.checkOverflow(),e.emit("snapGridLengthChange")),h.length!==E&&e.emit("slidesGridLengthChange"),s.watchSlidesProgress&&e.updateSlidesOffset(),e.emit("slidesUpdated"),!(o||s.cssMode||"slide"!==s.effect&&"fade"!==s.effect)){const t=`${s.containerModifierClass}backface-hidden`,a=e.el.classList.contains(t);p<=s.maxBackfaceHiddenSlides?a||e.el.classList.add(t):a&&e.el.classList.remove(t)}},updateAutoHeight:function(e){const t=this,s=[],a=t.virtual&&t.params.virtual.enabled;let i,r=0;"number"==typeof e?t.setTransition(e):!0===e&&t.setTransition(t.params.speed);const n=e=>a?t.slides[t.getSlideIndexByData(e)]:t.slides[e];if("auto"!==t.params.slidesPerView&&t.params.slidesPerView>1)if(t.params.centeredSlides)(t.visibleSlides||[]).forEach((e=>{s.push(e)}));else for(i=0;it.slides.length&&!a)break;s.push(n(e))}else s.push(n(t.activeIndex));for(i=0;ir?e:r}(r||0===r)&&(t.wrapperEl.style.height=`${r}px`)},updateSlidesOffset:function(){const e=this,t=e.slides,s=e.isElement?e.isHorizontal()?e.wrapperEl.offsetLeft:e.wrapperEl.offsetTop:0;for(let a=0;a=0?l=parseFloat(l.replace("%",""))/100*t.size:"string"==typeof l&&(l=parseFloat(l));for(let e=0;e=0&&u<=t.size-t.slidesSizesGrid[e],f=u>=0&&u1&&m<=t.size||u<=0&&m>=t.size;f&&(t.visibleSlides.push(o),t.visibleSlidesIndexes.push(e)),k(o,f,s.slideVisibleClass),k(o,h,s.slideFullyVisibleClass),o.progress=i?-c:c,o.originalProgress=i?-p:p}},updateProgress:function(e){const t=this;if(void 0===e){const s=t.rtlTranslate?-1:1;e=t&&t.translate&&t.translate*s||0}const s=t.params,a=t.maxTranslate()-t.minTranslate();let{progress:i,isBeginning:r,isEnd:n,progressLoop:l}=t;const o=r,d=n;if(0===a)i=0,r=!0,n=!0;else{i=(e-t.minTranslate())/a;const s=Math.abs(e-t.minTranslate())<1,l=Math.abs(e-t.maxTranslate())<1;r=s||i<=0,n=l||i>=1,s&&(i=0),l&&(i=1)}if(s.loop){const s=t.getSlideIndexByData(0),a=t.getSlideIndexByData(t.slides.length-1),i=t.slidesGrid[s],r=t.slidesGrid[a],n=t.slidesGrid[t.slidesGrid.length-1],o=Math.abs(e);l=o>=i?(o-i)/n:(o+n-r)/n,l>1&&(l-=1)}Object.assign(t,{progress:i,progressLoop:l,isBeginning:r,isEnd:n}),(s.watchSlidesProgress||s.centeredSlides&&s.autoHeight)&&t.updateSlidesProgress(e),r&&!o&&t.emit("reachBeginning toEdge"),n&&!d&&t.emit("reachEnd toEdge"),(o&&!r||d&&!n)&&t.emit("fromEdge"),t.emit("progress",i)},updateSlidesClasses:function(){const e=this,{slides:t,params:s,slidesEl:a,activeIndex:i}=e,r=e.virtual&&s.virtual.enabled,n=e.grid&&s.grid&&s.grid.rows>1,l=e=>f(a,`.${s.slideClass}${e}, swiper-slide${e}`)[0];let o,d,c;if(r)if(s.loop){let t=i-e.virtual.slidesBefore;t<0&&(t=e.virtual.slides.length+t),t>=e.virtual.slides.length&&(t-=e.virtual.slides.length),o=l(`[data-swiper-slide-index="${t}"]`)}else o=l(`[data-swiper-slide-index="${i}"]`);else n?(o=t.filter((e=>e.column===i))[0],c=t.filter((e=>e.column===i+1))[0],d=t.filter((e=>e.column===i-1))[0]):o=t[i];o&&(n||(c=function(e,t){const s=[];for(;e.nextElementSibling;){const a=e.nextElementSibling;t?a.matches(t)&&s.push(a):s.push(a),e=a}return s}(o,`.${s.slideClass}, swiper-slide`)[0],s.loop&&!c&&(c=t[0]),d=function(e,t){const s=[];for(;e.previousElementSibling;){const a=e.previousElementSibling;t?a.matches(t)&&s.push(a):s.push(a),e=a}return s}(o,`.${s.slideClass}, swiper-slide`)[0],s.loop&&0===!d&&(d=t[t.length-1]))),t.forEach((e=>{O(e,e===o,s.slideActiveClass),O(e,e===c,s.slideNextClass),O(e,e===d,s.slidePrevClass)})),e.emitSlidesClasses()},updateActiveIndex:function(e){const t=this,s=t.rtlTranslate?t.translate:-t.translate,{snapGrid:a,params:i,activeIndex:r,realIndex:n,snapIndex:l}=t;let o,d=e;const c=e=>{let s=e-t.virtual.slidesBefore;return s<0&&(s=t.virtual.slides.length+s),s>=t.virtual.slides.length&&(s-=t.virtual.slides.length),s};if(void 0===d&&(d=function(e){const{slidesGrid:t,params:s}=e,a=e.rtlTranslate?e.translate:-e.translate;let i;for(let e=0;e=t[e]&&a=t[e]&&a=t[e]&&(i=e);return s.normalizeSlideIndex&&(i<0||void 0===i)&&(i=0),i}(t)),a.indexOf(s)>=0)o=a.indexOf(s);else{const e=Math.min(i.slidesPerGroupSkip,d);o=e+Math.floor((d-e)/i.slidesPerGroup)}if(o>=a.length&&(o=a.length-1),d===r&&!t.params.loop)return void(o!==l&&(t.snapIndex=o,t.emit("snapIndexChange")));if(d===r&&t.params.loop&&t.virtual&&t.params.virtual.enabled)return void(t.realIndex=c(d));const p=t.grid&&i.grid&&i.grid.rows>1;let u;if(t.virtual&&i.virtual.enabled&&i.loop)u=c(d);else if(p){const e=t.slides.filter((e=>e.column===d))[0];let s=parseInt(e.getAttribute("data-swiper-slide-index"),10);Number.isNaN(s)&&(s=Math.max(t.slides.indexOf(e),0)),u=Math.floor(s/i.grid.rows)}else if(t.slides[d]){const e=t.slides[d].getAttribute("data-swiper-slide-index");u=e?parseInt(e,10):d}else u=d;Object.assign(t,{previousSnapIndex:l,snapIndex:o,previousRealIndex:n,realIndex:u,previousIndex:r,activeIndex:d}),t.initialized&&H(t),t.emit("activeIndexChange"),t.emit("snapIndexChange"),(t.initialized||t.params.runCallbacksOnInit)&&(n!==u&&t.emit("realIndexChange"),t.emit("slideChange"))},updateClickedSlide:function(e,t){const s=this,a=s.params;let i=e.closest(`.${a.slideClass}, swiper-slide`);!i&&s.isElement&&t&&t.length>1&&t.includes(e)&&[...t.slice(t.indexOf(e)+1,t.length)].forEach((e=>{!i&&e.matches&&e.matches(`.${a.slideClass}, swiper-slide`)&&(i=e)}));let r,n=!1;if(i)for(let e=0;eo?o:a&&en?"next":r=o.length&&(v=o.length-1);const w=-o[v];if(l.normalizeSlideIndex)for(let e=0;e=s&&t=s&&t=s&&(n=e)}if(r.initialized&&n!==p){if(!r.allowSlideNext&&(u?w>r.translate&&w>r.minTranslate():wr.translate&&w>r.maxTranslate()&&(p||0)!==n)return!1}let b;n!==(c||0)&&s&&r.emit("beforeSlideChangeStart"),r.updateProgress(w),b=n>p?"next":n0?(r._cssModeVirtualInitialSet=!0,requestAnimationFrame((()=>{h[e?"scrollLeft":"scrollTop"]=s}))):h[e?"scrollLeft":"scrollTop"]=s,y&&requestAnimationFrame((()=>{r.wrapperEl.style.scrollSnapType="",r._immediateVirtual=!1}));else{if(!r.support.smoothScroll)return m({swiper:r,targetPosition:s,side:e?"left":"top"}),!0;h.scrollTo({[e?"left":"top"]:s,behavior:"smooth"})}return!0}return r.setTransition(t),r.setTranslate(w),r.updateActiveIndex(n),r.updateSlidesClasses(),r.emit("beforeTransitionStart",t,a),r.transitionStart(s,b),0===t?r.transitionEnd(s,b):r.animating||(r.animating=!0,r.onSlideToWrapperTransitionEnd||(r.onSlideToWrapperTransitionEnd=function(e){r&&!r.destroyed&&e.target===this&&(r.wrapperEl.removeEventListener("transitionend",r.onSlideToWrapperTransitionEnd),r.onSlideToWrapperTransitionEnd=null,delete r.onSlideToWrapperTransitionEnd,r.transitionEnd(s,b))}),r.wrapperEl.addEventListener("transitionend",r.onSlideToWrapperTransitionEnd)),!0},slideToLoop:function(e,t,s,a){if(void 0===e&&(e=0),void 0===s&&(s=!0),"string"==typeof e){e=parseInt(e,10)}const i=this;if(i.destroyed)return;void 0===t&&(t=i.params.speed);const r=i.grid&&i.params.grid&&i.params.grid.rows>1;let n=e;if(i.params.loop)if(i.virtual&&i.params.virtual.enabled)n+=i.virtual.slidesBefore;else{let e;if(r){const t=n*i.params.grid.rows;e=i.slides.filter((e=>1*e.getAttribute("data-swiper-slide-index")===t))[0].column}else e=i.getSlideIndexByData(n);const t=r?Math.ceil(i.slides.length/i.params.grid.rows):i.slides.length,{centeredSlides:s}=i.params;let l=i.params.slidesPerView;"auto"===l?l=i.slidesPerViewDynamic():(l=Math.ceil(parseFloat(i.params.slidesPerView,10)),s&&l%2==0&&(l+=1));let o=t-e1*t.getAttribute("data-swiper-slide-index")===e))[0].column}else n=i.getSlideIndexByData(n)}return requestAnimationFrame((()=>{i.slideTo(n,t,s,a)})),i},slideNext:function(e,t,s){void 0===t&&(t=!0);const a=this,{enabled:i,params:r,animating:n}=a;if(!i||a.destroyed)return a;void 0===e&&(e=a.params.speed);let l=r.slidesPerGroup;"auto"===r.slidesPerView&&1===r.slidesPerGroup&&r.slidesPerGroupAuto&&(l=Math.max(a.slidesPerViewDynamic("current",!0),1));const o=a.activeIndex{a.slideTo(a.activeIndex+o,e,t,s)})),!0}return r.rewind&&a.isEnd?a.slideTo(0,e,t,s):a.slideTo(a.activeIndex+o,e,t,s)},slidePrev:function(e,t,s){void 0===t&&(t=!0);const a=this,{params:i,snapGrid:r,slidesGrid:n,rtlTranslate:l,enabled:o,animating:d}=a;if(!o||a.destroyed)return a;void 0===e&&(e=a.params.speed);const c=a.virtual&&i.virtual.enabled;if(i.loop){if(d&&!c&&i.loopPreventsSliding)return!1;a.loopFix({direction:"prev"}),a._clientLeft=a.wrapperEl.clientLeft}function p(e){return e<0?-Math.floor(Math.abs(e)):Math.floor(e)}const u=p(l?a.translate:-a.translate),m=r.map((e=>p(e)));let h=r[m.indexOf(u)-1];if(void 0===h&&i.cssMode){let e;r.forEach(((t,s)=>{u>=t&&(e=s)})),void 0!==e&&(h=r[e>0?e-1:e])}let f=0;if(void 0!==h&&(f=n.indexOf(h),f<0&&(f=a.activeIndex-1),"auto"===i.slidesPerView&&1===i.slidesPerGroup&&i.slidesPerGroupAuto&&(f=f-a.slidesPerViewDynamic("previous",!0)+1,f=Math.max(f,0))),i.rewind&&a.isBeginning){const i=a.params.virtual&&a.params.virtual.enabled&&a.virtual?a.virtual.slides.length-1:a.slides.length-1;return a.slideTo(i,e,t,s)}return i.loop&&0===a.activeIndex&&i.cssMode?(requestAnimationFrame((()=>{a.slideTo(f,e,t,s)})),!0):a.slideTo(f,e,t,s)},slideReset:function(e,t,s){void 0===t&&(t=!0);const a=this;if(!a.destroyed)return void 0===e&&(e=a.params.speed),a.slideTo(a.activeIndex,e,t,s)},slideToClosest:function(e,t,s,a){void 0===t&&(t=!0),void 0===a&&(a=.5);const i=this;if(i.destroyed)return;void 0===e&&(e=i.params.speed);let r=i.activeIndex;const n=Math.min(i.params.slidesPerGroupSkip,r),l=n+Math.floor((r-n)/i.params.slidesPerGroup),o=i.rtlTranslate?i.translate:-i.translate;if(o>=i.snapGrid[l]){const e=i.snapGrid[l];o-e>(i.snapGrid[l+1]-e)*a&&(r+=i.params.slidesPerGroup)}else{const e=i.snapGrid[l-1];o-e<=(i.snapGrid[l]-e)*a&&(r-=i.params.slidesPerGroup)}return r=Math.max(r,0),r=Math.min(r,i.slidesGrid.length-1),i.slideTo(r,e,t,s)},slideToClickedSlide:function(){const e=this;if(e.destroyed)return;const{params:t,slidesEl:s}=e,a="auto"===t.slidesPerView?e.slidesPerViewDynamic():t.slidesPerView;let i,r=e.clickedIndex;const n=e.isElement?"swiper-slide":`.${t.slideClass}`;if(t.loop){if(e.animating)return;i=parseInt(e.clickedSlide.getAttribute("data-swiper-slide-index"),10),t.centeredSlides?re.slides.length-e.loopedSlides+a/2?(e.loopFix(),r=e.getSlideIndex(f(s,`${n}[data-swiper-slide-index="${i}"]`)[0]),l((()=>{e.slideTo(r)}))):e.slideTo(r):r>e.slides.length-a?(e.loopFix(),r=e.getSlideIndex(f(s,`${n}[data-swiper-slide-index="${i}"]`)[0]),l((()=>{e.slideTo(r)}))):e.slideTo(r)}else e.slideTo(r)}};var R={loopCreate:function(e){const t=this,{params:s,slidesEl:a}=t;if(!s.loop||t.virtual&&t.params.virtual.enabled)return;const i=()=>{f(a,`.${s.slideClass}, swiper-slide`).forEach(((e,t)=>{e.setAttribute("data-swiper-slide-index",t)}))},r=t.grid&&s.grid&&s.grid.rows>1,n=s.slidesPerGroup*(r?s.grid.rows:1),l=t.slides.length%n!=0,o=r&&t.slides.length%s.grid.rows!=0,d=e=>{for(let a=0;a1;d.lengthe.classList.contains(m.slideActiveClass)))[0]):x=r;const S="next"===a||!a,T="prev"===a||!a;let M=0,C=0;const P=b?Math.ceil(d.length/m.grid.rows):d.length,L=(b?d[r].column:r)+(h&&void 0===i?-f/2+.5:0);if(L=0;t-=1)d[t].column===e&&y.push(t)}else y.push(P-t-1)}}else if(L+f>P-w){C=Math.max(L-(P-2*w),v);for(let e=0;e{e.column===t&&E.push(s)})):E.push(t)}}if(o.__preventObserver__=!0,requestAnimationFrame((()=>{o.__preventObserver__=!1})),T&&y.forEach((e=>{d[e].swiperLoopMoveDOM=!0,u.prepend(d[e]),d[e].swiperLoopMoveDOM=!1})),S&&E.forEach((e=>{d[e].swiperLoopMoveDOM=!0,u.append(d[e]),d[e].swiperLoopMoveDOM=!1})),o.recalcSlides(),"auto"===m.slidesPerView?o.updateSlides():b&&(y.length>0&&T||E.length>0&&S)&&o.slides.forEach(((e,t)=>{o.grid.updateSlide(t,e,o.slides)})),m.watchSlidesProgress&&o.updateSlidesOffset(),s)if(y.length>0&&T){if(void 0===t){const e=o.slidesGrid[x],t=o.slidesGrid[x+M]-e;l?o.setTranslate(o.translate-t):(o.slideTo(x+Math.ceil(M),0,!1,!0),i&&(o.touchEventsData.startTranslate=o.touchEventsData.startTranslate-t,o.touchEventsData.currentTranslate=o.touchEventsData.currentTranslate-t))}else if(i){const e=b?y.length/m.grid.rows:y.length;o.slideTo(o.activeIndex+e,0,!1,!0),o.touchEventsData.currentTranslate=o.translate}}else if(E.length>0&&S)if(void 0===t){const e=o.slidesGrid[x],t=o.slidesGrid[x-C]-e;l?o.setTranslate(o.translate-t):(o.slideTo(x-C,0,!1,!0),i&&(o.touchEventsData.startTranslate=o.touchEventsData.startTranslate-t,o.touchEventsData.currentTranslate=o.touchEventsData.currentTranslate-t))}else{const e=b?E.length/m.grid.rows:E.length;o.slideTo(o.activeIndex-e,0,!1,!0)}if(o.allowSlidePrev=c,o.allowSlideNext=p,o.controller&&o.controller.control&&!n){const e={slideRealIndex:t,direction:a,setTranslate:i,activeSlideIndex:r,byController:!0};Array.isArray(o.controller.control)?o.controller.control.forEach((t=>{!t.destroyed&&t.params.loop&&t.loopFix({...e,slideTo:t.params.slidesPerView===m.slidesPerView&&s})})):o.controller.control instanceof o.constructor&&o.controller.control.params.loop&&o.controller.control.loopFix({...e,slideTo:o.controller.control.params.slidesPerView===m.slidesPerView&&s})}o.emit("loopFix")},loopDestroy:function(){const e=this,{params:t,slidesEl:s}=e;if(!t.loop||e.virtual&&e.params.virtual.enabled)return;e.recalcSlides();const a=[];e.slides.forEach((e=>{const t=void 0===e.swiperSlideIndex?1*e.getAttribute("data-swiper-slide-index"):e.swiperSlideIndex;a[t]=e})),e.slides.forEach((e=>{e.removeAttribute("data-swiper-slide-index")})),a.forEach((e=>{s.append(e)})),e.recalcSlides(),e.slideTo(e.realIndex,0)}};function q(e,t,s){const a=r(),{params:i}=e,n=i.edgeSwipeDetection,l=i.edgeSwipeThreshold;return!n||!(s<=l||s>=a.innerWidth-l)||"prevent"===n&&(t.preventDefault(),!0)}function F(e){const t=this,s=a();let i=e;i.originalEvent&&(i=i.originalEvent);const n=t.touchEventsData;if("pointerdown"===i.type){if(null!==n.pointerId&&n.pointerId!==i.pointerId)return;n.pointerId=i.pointerId}else"touchstart"===i.type&&1===i.targetTouches.length&&(n.touchId=i.targetTouches[0].identifier);if("touchstart"===i.type)return void q(t,i,i.targetTouches[0].pageX);const{params:l,touches:d,enabled:c}=t;if(!c)return;if(!l.simulateTouch&&"mouse"===i.pointerType)return;if(t.animating&&l.preventInteractionOnTransition)return;!t.animating&&l.cssMode&&l.loop&&t.loopFix();let p=i.target;if("wrapper"===l.touchEventsTarget&&!function(e,t){const s=t.contains(e);if(!s&&t instanceof HTMLSlotElement)return[...t.assignedElements()].includes(e);return s}(p,t.wrapperEl))return;if("which"in i&&3===i.which)return;if("button"in i&&i.button>0)return;if(n.isTouched&&n.isMoved)return;const u=!!l.noSwipingClass&&""!==l.noSwipingClass,m=i.composedPath?i.composedPath():i.path;u&&i.target&&i.target.shadowRoot&&m&&(p=m[0]);const h=l.noSwipingSelector?l.noSwipingSelector:`.${l.noSwipingClass}`,f=!(!i.target||!i.target.shadowRoot);if(l.noSwiping&&(f?function(e,t){return void 0===t&&(t=this),function t(s){if(!s||s===a()||s===r())return null;s.assignedSlot&&(s=s.assignedSlot);const i=s.closest(e);return i||s.getRootNode?i||t(s.getRootNode().host):null}(t)}(h,p):p.closest(h)))return void(t.allowClick=!0);if(l.swipeHandler&&!p.closest(l.swipeHandler))return;d.currentX=i.pageX,d.currentY=i.pageY;const g=d.currentX,v=d.currentY;if(!q(t,i,g))return;Object.assign(n,{isTouched:!0,isMoved:!1,allowTouchCallbacks:!0,isScrolling:void 0,startMoving:void 0}),d.startX=g,d.startY=v,n.touchStartTime=o(),t.allowClick=!0,t.updateSize(),t.swipeDirection=void 0,l.threshold>0&&(n.allowThresholdMove=!1);let w=!0;p.matches(n.focusableElements)&&(w=!1,"SELECT"===p.nodeName&&(n.isTouched=!1)),s.activeElement&&s.activeElement.matches(n.focusableElements)&&s.activeElement!==p&&("mouse"===i.pointerType||"mouse"!==i.pointerType&&!p.matches(n.focusableElements))&&s.activeElement.blur();const b=w&&t.allowTouchMove&&l.touchStartPreventDefault;!l.touchStartForcePreventDefault&&!b||p.isContentEditable||i.preventDefault(),l.freeMode&&l.freeMode.enabled&&t.freeMode&&t.animating&&!l.cssMode&&t.freeMode.onTouchStart(),t.emit("touchStart",i)}function V(e){const t=a(),s=this,i=s.touchEventsData,{params:r,touches:n,rtlTranslate:l,enabled:d}=s;if(!d)return;if(!r.simulateTouch&&"mouse"===e.pointerType)return;let c,p=e;if(p.originalEvent&&(p=p.originalEvent),"pointermove"===p.type){if(null!==i.touchId)return;if(p.pointerId!==i.pointerId)return}if("touchmove"===p.type){if(c=[...p.changedTouches].filter((e=>e.identifier===i.touchId))[0],!c||c.identifier!==i.touchId)return}else c=p;if(!i.isTouched)return void(i.startMoving&&i.isScrolling&&s.emit("touchMoveOpposite",p));const u=c.pageX,m=c.pageY;if(p.preventedByNestedSwiper)return n.startX=u,void(n.startY=m);if(!s.allowTouchMove)return p.target.matches(i.focusableElements)||(s.allowClick=!1),void(i.isTouched&&(Object.assign(n,{startX:u,startY:m,currentX:u,currentY:m}),i.touchStartTime=o()));if(r.touchReleaseOnEdges&&!r.loop)if(s.isVertical()){if(mn.startY&&s.translate>=s.minTranslate())return i.isTouched=!1,void(i.isMoved=!1)}else if(un.startX&&s.translate>=s.minTranslate())return;if(t.activeElement&&t.activeElement.matches(i.focusableElements)&&t.activeElement!==p.target&&"mouse"!==p.pointerType&&t.activeElement.blur(),t.activeElement&&p.target===t.activeElement&&p.target.matches(i.focusableElements))return i.isMoved=!0,void(s.allowClick=!1);i.allowTouchCallbacks&&s.emit("touchMove",p),n.previousX=n.currentX,n.previousY=n.currentY,n.currentX=u,n.currentY=m;const h=n.currentX-n.startX,f=n.currentY-n.startY;if(s.params.threshold&&Math.sqrt(h**2+f**2)=25&&(e=180*Math.atan2(Math.abs(f),Math.abs(h))/Math.PI,i.isScrolling=s.isHorizontal()?e>r.touchAngle:90-e>r.touchAngle)}if(i.isScrolling&&s.emit("touchMoveOpposite",p),void 0===i.startMoving&&(n.currentX===n.startX&&n.currentY===n.startY||(i.startMoving=!0)),i.isScrolling||"touchmove"===p.type&&i.preventTouchMoveFromPointerMove)return void(i.isTouched=!1);if(!i.startMoving)return;s.allowClick=!1,!r.cssMode&&p.cancelable&&p.preventDefault(),r.touchMoveStopPropagation&&!r.nested&&p.stopPropagation();let g=s.isHorizontal()?h:f,v=s.isHorizontal()?n.currentX-n.previousX:n.currentY-n.previousY;r.oneWayMovement&&(g=Math.abs(g)*(l?1:-1),v=Math.abs(v)*(l?1:-1)),n.diff=g,g*=r.touchRatio,l&&(g=-g,v=-v);const w=s.touchesDirection;s.swipeDirection=g>0?"prev":"next",s.touchesDirection=v>0?"prev":"next";const b=s.params.loop&&!r.cssMode,y="next"===s.touchesDirection&&s.allowSlideNext||"prev"===s.touchesDirection&&s.allowSlidePrev;if(!i.isMoved){if(b&&y&&s.loopFix({direction:s.swipeDirection}),i.startTranslate=s.getTranslate(),s.setTransition(0),s.animating){const e=new window.CustomEvent("transitionend",{bubbles:!0,cancelable:!0,detail:{bySwiperTouchMove:!0}});s.wrapperEl.dispatchEvent(e)}i.allowMomentumBounce=!1,!r.grabCursor||!0!==s.allowSlideNext&&!0!==s.allowSlidePrev||s.setGrabCursor(!0),s.emit("sliderFirstMove",p)}if((new Date).getTime(),i.isMoved&&i.allowThresholdMove&&w!==s.touchesDirection&&b&&y&&Math.abs(g)>=1)return Object.assign(n,{startX:u,startY:m,currentX:u,currentY:m,startTranslate:i.currentTranslate}),i.loopSwapReset=!0,void(i.startTranslate=i.currentTranslate);s.emit("sliderMove",p),i.isMoved=!0,i.currentTranslate=g+i.startTranslate;let E=!0,x=r.resistanceRatio;if(r.touchReleaseOnEdges&&(x=0),g>0?(b&&y&&i.allowThresholdMove&&i.currentTranslate>(r.centeredSlides?s.minTranslate()-s.slidesSizesGrid[s.activeIndex+1]-("auto"!==r.slidesPerView&&s.slides.length-r.slidesPerView>=2?s.slidesSizesGrid[s.activeIndex+1]+s.params.spaceBetween:0)-s.params.spaceBetween:s.minTranslate())&&s.loopFix({direction:"prev",setTranslate:!0,activeSlideIndex:0}),i.currentTranslate>s.minTranslate()&&(E=!1,r.resistance&&(i.currentTranslate=s.minTranslate()-1+(-s.minTranslate()+i.startTranslate+g)**x))):g<0&&(b&&y&&i.allowThresholdMove&&i.currentTranslate<(r.centeredSlides?s.maxTranslate()+s.slidesSizesGrid[s.slidesSizesGrid.length-1]+s.params.spaceBetween+("auto"!==r.slidesPerView&&s.slides.length-r.slidesPerView>=2?s.slidesSizesGrid[s.slidesSizesGrid.length-1]+s.params.spaceBetween:0):s.maxTranslate())&&s.loopFix({direction:"next",setTranslate:!0,activeSlideIndex:s.slides.length-("auto"===r.slidesPerView?s.slidesPerViewDynamic():Math.ceil(parseFloat(r.slidesPerView,10)))}),i.currentTranslatei.startTranslate&&(i.currentTranslate=i.startTranslate),s.allowSlidePrev||s.allowSlideNext||(i.currentTranslate=i.startTranslate),r.threshold>0){if(!(Math.abs(g)>r.threshold||i.allowThresholdMove))return void(i.currentTranslate=i.startTranslate);if(!i.allowThresholdMove)return i.allowThresholdMove=!0,n.startX=n.currentX,n.startY=n.currentY,i.currentTranslate=i.startTranslate,void(n.diff=s.isHorizontal()?n.currentX-n.startX:n.currentY-n.startY)}r.followFinger&&!r.cssMode&&((r.freeMode&&r.freeMode.enabled&&s.freeMode||r.watchSlidesProgress)&&(s.updateActiveIndex(),s.updateSlidesClasses()),r.freeMode&&r.freeMode.enabled&&s.freeMode&&s.freeMode.onTouchMove(),s.updateProgress(i.currentTranslate),s.setTranslate(i.currentTranslate))}function _(e){const t=this,s=t.touchEventsData;let a,i=e;i.originalEvent&&(i=i.originalEvent);if("touchend"===i.type||"touchcancel"===i.type){if(a=[...i.changedTouches].filter((e=>e.identifier===s.touchId))[0],!a||a.identifier!==s.touchId)return}else{if(null!==s.touchId)return;if(i.pointerId!==s.pointerId)return;a=i}if(["pointercancel","pointerout","pointerleave","contextmenu"].includes(i.type)){if(!(["pointercancel","contextmenu"].includes(i.type)&&(t.browser.isSafari||t.browser.isWebView)))return}s.pointerId=null,s.touchId=null;const{params:r,touches:n,rtlTranslate:d,slidesGrid:c,enabled:p}=t;if(!p)return;if(!r.simulateTouch&&"mouse"===i.pointerType)return;if(s.allowTouchCallbacks&&t.emit("touchEnd",i),s.allowTouchCallbacks=!1,!s.isTouched)return s.isMoved&&r.grabCursor&&t.setGrabCursor(!1),s.isMoved=!1,void(s.startMoving=!1);r.grabCursor&&s.isMoved&&s.isTouched&&(!0===t.allowSlideNext||!0===t.allowSlidePrev)&&t.setGrabCursor(!1);const u=o(),m=u-s.touchStartTime;if(t.allowClick){const e=i.path||i.composedPath&&i.composedPath();t.updateClickedSlide(e&&e[0]||i.target,e),t.emit("tap click",i),m<300&&u-s.lastClickTime<300&&t.emit("doubleTap doubleClick",i)}if(s.lastClickTime=o(),l((()=>{t.destroyed||(t.allowClick=!0)})),!s.isTouched||!s.isMoved||!t.swipeDirection||0===n.diff&&!s.loopSwapReset||s.currentTranslate===s.startTranslate&&!s.loopSwapReset)return s.isTouched=!1,s.isMoved=!1,void(s.startMoving=!1);let h;if(s.isTouched=!1,s.isMoved=!1,s.startMoving=!1,h=r.followFinger?d?t.translate:-t.translate:-s.currentTranslate,r.cssMode)return;if(r.freeMode&&r.freeMode.enabled)return void t.freeMode.onTouchEnd({currentPos:h});const f=h>=-t.maxTranslate()&&!t.params.loop;let g=0,v=t.slidesSizesGrid[0];for(let e=0;e=c[e]&&h=c[e])&&(g=e,v=c[c.length-1]-c[c.length-2])}let w=null,b=null;r.rewind&&(t.isBeginning?b=r.virtual&&r.virtual.enabled&&t.virtual?t.virtual.slides.length-1:t.slides.length-1:t.isEnd&&(w=0));const y=(h-c[g])/v,E=gr.longSwipesMs){if(!r.longSwipes)return void t.slideTo(t.activeIndex);"next"===t.swipeDirection&&(y>=r.longSwipesRatio?t.slideTo(r.rewind&&t.isEnd?w:g+E):t.slideTo(g)),"prev"===t.swipeDirection&&(y>1-r.longSwipesRatio?t.slideTo(g+E):null!==b&&y<0&&Math.abs(y)>r.longSwipesRatio?t.slideTo(b):t.slideTo(g))}else{if(!r.shortSwipes)return void t.slideTo(t.activeIndex);t.navigation&&(i.target===t.navigation.nextEl||i.target===t.navigation.prevEl)?i.target===t.navigation.nextEl?t.slideTo(g+E):t.slideTo(g):("next"===t.swipeDirection&&t.slideTo(null!==w?w:g+E),"prev"===t.swipeDirection&&t.slideTo(null!==b?b:g))}}function W(){const e=this,{params:t,el:s}=e;if(s&&0===s.offsetWidth)return;t.breakpoints&&e.setBreakpoint();const{allowSlideNext:a,allowSlidePrev:i,snapGrid:r}=e,n=e.virtual&&e.params.virtual.enabled;e.allowSlideNext=!0,e.allowSlidePrev=!0,e.updateSize(),e.updateSlides(),e.updateSlidesClasses();const l=n&&t.loop;!("auto"===t.slidesPerView||t.slidesPerView>1)||!e.isEnd||e.isBeginning||e.params.centeredSlides||l?e.params.loop&&!n?e.slideToLoop(e.realIndex,0,!1,!0):e.slideTo(e.activeIndex,0,!1,!0):e.slideTo(e.slides.length-1,0,!1,!0),e.autoplay&&e.autoplay.running&&e.autoplay.paused&&(clearTimeout(e.autoplay.resizeTimeout),e.autoplay.resizeTimeout=setTimeout((()=>{e.autoplay&&e.autoplay.running&&e.autoplay.paused&&e.autoplay.resume()}),500)),e.allowSlidePrev=i,e.allowSlideNext=a,e.params.watchOverflow&&r!==e.snapGrid&&e.checkOverflow()}function j(e){const t=this;t.enabled&&(t.allowClick||(t.params.preventClicks&&e.preventDefault(),t.params.preventClicksPropagation&&t.animating&&(e.stopPropagation(),e.stopImmediatePropagation())))}function U(){const e=this,{wrapperEl:t,rtlTranslate:s,enabled:a}=e;if(!a)return;let i;e.previousTranslate=e.translate,e.isHorizontal()?e.translate=-t.scrollLeft:e.translate=-t.scrollTop,0===e.translate&&(e.translate=0),e.updateActiveIndex(),e.updateSlidesClasses();const r=e.maxTranslate()-e.minTranslate();i=0===r?0:(e.translate-e.minTranslate())/r,i!==e.progress&&e.updateProgress(s?-e.translate:e.translate),e.emit("setTranslate",e.translate,!1)}function K(e){const t=this;D(t,e.target),t.params.cssMode||"auto"!==t.params.slidesPerView&&!t.params.autoHeight||t.update()}function Z(){const e=this;e.documentTouchHandlerProceeded||(e.documentTouchHandlerProceeded=!0,e.params.touchReleaseOnEdges&&(e.el.style.touchAction="auto"))}const Q=(e,t)=>{const s=a(),{params:i,el:r,wrapperEl:n,device:l}=e,o=!!i.nested,d="on"===t?"addEventListener":"removeEventListener",c=t;r&&"string"!=typeof r&&(s[d]("touchstart",e.onDocumentTouchStart,{passive:!1,capture:o}),r[d]("touchstart",e.onTouchStart,{passive:!1}),r[d]("pointerdown",e.onTouchStart,{passive:!1}),s[d]("touchmove",e.onTouchMove,{passive:!1,capture:o}),s[d]("pointermove",e.onTouchMove,{passive:!1,capture:o}),s[d]("touchend",e.onTouchEnd,{passive:!0}),s[d]("pointerup",e.onTouchEnd,{passive:!0}),s[d]("pointercancel",e.onTouchEnd,{passive:!0}),s[d]("touchcancel",e.onTouchEnd,{passive:!0}),s[d]("pointerout",e.onTouchEnd,{passive:!0}),s[d]("pointerleave",e.onTouchEnd,{passive:!0}),s[d]("contextmenu",e.onTouchEnd,{passive:!0}),(i.preventClicks||i.preventClicksPropagation)&&r[d]("click",e.onClick,!0),i.cssMode&&n[d]("scroll",e.onScroll),i.updateOnWindowResize?e[c](l.ios||l.android?"resize orientationchange observerUpdate":"resize observerUpdate",W,!0):e[c]("observerUpdate",W,!0),r[d]("load",e.onLoad,{capture:!0}))};const J=(e,t)=>e.grid&&t.grid&&t.grid.rows>1;var ee={init:!0,direction:"horizontal",oneWayMovement:!1,swiperElementNodeName:"SWIPER-CONTAINER",touchEventsTarget:"wrapper",initialSlide:0,speed:300,cssMode:!1,updateOnWindowResize:!0,resizeObserver:!0,nested:!1,createElements:!1,eventsPrefix:"swiper",enabled:!0,focusableElements:"input, select, option, textarea, button, video, label",width:null,height:null,preventInteractionOnTransition:!1,userAgent:null,url:null,edgeSwipeDetection:!1,edgeSwipeThreshold:20,autoHeight:!1,setWrapperSize:!1,virtualTranslate:!1,effect:"slide",breakpoints:void 0,breakpointsBase:"window",spaceBetween:0,slidesPerView:1,slidesPerGroup:1,slidesPerGroupSkip:0,slidesPerGroupAuto:!1,centeredSlides:!1,centeredSlidesBounds:!1,slidesOffsetBefore:0,slidesOffsetAfter:0,normalizeSlideIndex:!0,centerInsufficientSlides:!1,watchOverflow:!0,roundLengths:!1,touchRatio:1,touchAngle:45,simulateTouch:!0,shortSwipes:!0,longSwipes:!0,longSwipesRatio:.5,longSwipesMs:300,followFinger:!0,allowTouchMove:!0,threshold:5,touchMoveStopPropagation:!1,touchStartPreventDefault:!0,touchStartForcePreventDefault:!1,touchReleaseOnEdges:!1,uniqueNavElements:!0,resistance:!0,resistanceRatio:.85,watchSlidesProgress:!1,grabCursor:!1,preventClicks:!0,preventClicksPropagation:!0,slideToClickedSlide:!1,loop:!1,loopAddBlankSlides:!0,loopAdditionalSlides:0,loopPreventsSliding:!0,rewind:!1,allowSlidePrev:!0,allowSlideNext:!0,swipeHandler:null,noSwiping:!0,noSwipingClass:"swiper-no-swiping",noSwipingSelector:null,passiveListeners:!0,maxBackfaceHiddenSlides:10,containerModifierClass:"swiper-",slideClass:"swiper-slide",slideBlankClass:"swiper-slide-blank",slideActiveClass:"swiper-slide-active",slideVisibleClass:"swiper-slide-visible",slideFullyVisibleClass:"swiper-slide-fully-visible",slideNextClass:"swiper-slide-next",slidePrevClass:"swiper-slide-prev",wrapperClass:"swiper-wrapper",lazyPreloaderClass:"swiper-lazy-preloader",lazyPreloadPrevNext:0,runCallbacksOnInit:!0,_emitClasses:!1};function te(e,t){return function(s){void 0===s&&(s={});const a=Object.keys(s)[0],i=s[a];"object"==typeof i&&null!==i?(!0===e[a]&&(e[a]={enabled:!0}),"navigation"===a&&e[a]&&e[a].enabled&&!e[a].prevEl&&!e[a].nextEl&&(e[a].auto=!0),["pagination","scrollbar"].indexOf(a)>=0&&e[a]&&e[a].enabled&&!e[a].el&&(e[a].auto=!0),a in e&&"enabled"in i?("object"!=typeof e[a]||"enabled"in e[a]||(e[a].enabled=!0),e[a]||(e[a]={enabled:!1}),p(t,s)):p(t,s)):p(t,s)}}const se={eventsEmitter:$,update:B,translate:N,transition:{setTransition:function(e,t){const s=this;s.params.cssMode||(s.wrapperEl.style.transitionDuration=`${e}ms`,s.wrapperEl.style.transitionDelay=0===e?"0ms":""),s.emit("setTransition",e,t)},transitionStart:function(e,t){void 0===e&&(e=!0);const s=this,{params:a}=s;a.cssMode||(a.autoHeight&&s.updateAutoHeight(),X({swiper:s,runCallbacks:e,direction:t,step:"Start"}))},transitionEnd:function(e,t){void 0===e&&(e=!0);const s=this,{params:a}=s;s.animating=!1,a.cssMode||(s.setTransition(0),X({swiper:s,runCallbacks:e,direction:t,step:"End"}))}},slide:Y,loop:R,grabCursor:{setGrabCursor:function(e){const t=this;if(!t.params.simulateTouch||t.params.watchOverflow&&t.isLocked||t.params.cssMode)return;const s="container"===t.params.touchEventsTarget?t.el:t.wrapperEl;t.isElement&&(t.__preventObserver__=!0),s.style.cursor="move",s.style.cursor=e?"grabbing":"grab",t.isElement&&requestAnimationFrame((()=>{t.__preventObserver__=!1}))},unsetGrabCursor:function(){const e=this;e.params.watchOverflow&&e.isLocked||e.params.cssMode||(e.isElement&&(e.__preventObserver__=!0),e["container"===e.params.touchEventsTarget?"el":"wrapperEl"].style.cursor="",e.isElement&&requestAnimationFrame((()=>{e.__preventObserver__=!1})))}},events:{attachEvents:function(){const e=this,{params:t}=e;e.onTouchStart=F.bind(e),e.onTouchMove=V.bind(e),e.onTouchEnd=_.bind(e),e.onDocumentTouchStart=Z.bind(e),t.cssMode&&(e.onScroll=U.bind(e)),e.onClick=j.bind(e),e.onLoad=K.bind(e),Q(e,"on")},detachEvents:function(){Q(this,"off")}},breakpoints:{setBreakpoint:function(){const e=this,{realIndex:t,initialized:s,params:a,el:i}=e,r=a.breakpoints;if(!r||r&&0===Object.keys(r).length)return;const n=e.getBreakpoint(r,e.params.breakpointsBase,e.el);if(!n||e.currentBreakpoint===n)return;const l=(n in r?r[n]:void 0)||e.originalParams,o=J(e,a),d=J(e,l),c=e.params.grabCursor,u=l.grabCursor,m=a.enabled;o&&!d?(i.classList.remove(`${a.containerModifierClass}grid`,`${a.containerModifierClass}grid-column`),e.emitContainerClasses()):!o&&d&&(i.classList.add(`${a.containerModifierClass}grid`),(l.grid.fill&&"column"===l.grid.fill||!l.grid.fill&&"column"===a.grid.fill)&&i.classList.add(`${a.containerModifierClass}grid-column`),e.emitContainerClasses()),c&&!u?e.unsetGrabCursor():!c&&u&&e.setGrabCursor(),["navigation","pagination","scrollbar"].forEach((t=>{if(void 0===l[t])return;const s=a[t]&&a[t].enabled,i=l[t]&&l[t].enabled;s&&!i&&e[t].disable(),!s&&i&&e[t].enable()}));const h=l.direction&&l.direction!==a.direction,f=a.loop&&(l.slidesPerView!==a.slidesPerView||h),g=a.loop;h&&s&&e.changeDirection(),p(e.params,l);const v=e.params.enabled,w=e.params.loop;Object.assign(e,{allowTouchMove:e.params.allowTouchMove,allowSlideNext:e.params.allowSlideNext,allowSlidePrev:e.params.allowSlidePrev}),m&&!v?e.disable():!m&&v&&e.enable(),e.currentBreakpoint=n,e.emit("_beforeBreakpoint",l),s&&(f?(e.loopDestroy(),e.loopCreate(t),e.updateSlides()):!g&&w?(e.loopCreate(t),e.updateSlides()):g&&!w&&e.loopDestroy()),e.emit("breakpoint",l)},getBreakpoint:function(e,t,s){if(void 0===t&&(t="window"),!e||"container"===t&&!s)return;let a=!1;const i=r(),n="window"===t?i.innerHeight:s.clientHeight,l=Object.keys(e).map((e=>{if("string"==typeof e&&0===e.indexOf("@")){const t=parseFloat(e.substr(1));return{value:n*t,point:e}}return{value:e,point:e}}));l.sort(((e,t)=>parseInt(e.value,10)-parseInt(t.value,10)));for(let e=0;es}else e.isLocked=1===e.snapGrid.length;!0===s.allowSlideNext&&(e.allowSlideNext=!e.isLocked),!0===s.allowSlidePrev&&(e.allowSlidePrev=!e.isLocked),t&&t!==e.isLocked&&(e.isEnd=!1),t!==e.isLocked&&e.emit(e.isLocked?"lock":"unlock")}},classes:{addClasses:function(){const e=this,{classNames:t,params:s,rtl:a,el:i,device:r}=e,n=function(e,t){const s=[];return e.forEach((e=>{"object"==typeof e?Object.keys(e).forEach((a=>{e[a]&&s.push(t+a)})):"string"==typeof e&&s.push(t+e)})),s}(["initialized",s.direction,{"free-mode":e.params.freeMode&&s.freeMode.enabled},{autoheight:s.autoHeight},{rtl:a},{grid:s.grid&&s.grid.rows>1},{"grid-column":s.grid&&s.grid.rows>1&&"column"===s.grid.fill},{android:r.android},{ios:r.ios},{"css-mode":s.cssMode},{centered:s.cssMode&&s.centeredSlides},{"watch-progress":s.watchSlidesProgress}],s.containerModifierClass);t.push(...n),i.classList.add(...t),e.emitContainerClasses()},removeClasses:function(){const{el:e,classNames:t}=this;e&&"string"!=typeof e&&(e.classList.remove(...t),this.emitContainerClasses())}}},ae={};class ie{constructor(){let e,t;for(var s=arguments.length,i=new Array(s),r=0;r1){const e=[];return n.querySelectorAll(t.el).forEach((s=>{const a=p({},t,{el:s});e.push(new ie(a))})),e}const l=this;l.__swiper__=!0,l.support=I(),l.device=z({userAgent:t.userAgent}),l.browser=A(),l.eventsListeners={},l.eventsAnyListeners=[],l.modules=[...l.__modules__],t.modules&&Array.isArray(t.modules)&&l.modules.push(...t.modules);const o={};l.modules.forEach((e=>{e({params:t,swiper:l,extendParams:te(t,o),on:l.on.bind(l),once:l.once.bind(l),off:l.off.bind(l),emit:l.emit.bind(l)})}));const d=p({},ee,o);return l.params=p({},d,ae,t),l.originalParams=p({},l.params),l.passedParams=p({},t),l.params&&l.params.on&&Object.keys(l.params.on).forEach((e=>{l.on(e,l.params.on[e])})),l.params&&l.params.onAny&&l.onAny(l.params.onAny),Object.assign(l,{enabled:l.params.enabled,el:e,classNames:[],slides:[],slidesGrid:[],snapGrid:[],slidesSizesGrid:[],isHorizontal:()=>"horizontal"===l.params.direction,isVertical:()=>"vertical"===l.params.direction,activeIndex:0,realIndex:0,isBeginning:!0,isEnd:!1,translate:0,previousTranslate:0,progress:0,velocity:0,animating:!1,cssOverflowAdjustment(){return Math.trunc(this.translate/2**23)*2**23},allowSlideNext:l.params.allowSlideNext,allowSlidePrev:l.params.allowSlidePrev,touchEventsData:{isTouched:void 0,isMoved:void 0,allowTouchCallbacks:void 0,touchStartTime:void 0,isScrolling:void 0,currentTranslate:void 0,startTranslate:void 0,allowThresholdMove:void 0,focusableElements:l.params.focusableElements,lastClickTime:0,clickTimeout:void 0,velocities:[],allowMomentumBounce:void 0,startMoving:void 0,pointerId:null,touchId:null},allowClick:!0,allowTouchMove:l.params.allowTouchMove,touches:{startX:0,startY:0,currentX:0,currentY:0,diff:0},imagesToLoad:[],imagesLoaded:0}),l.emit("_swiper"),l.params.init&&l.init(),l}getDirectionLabel(e){return this.isHorizontal()?e:{width:"height","margin-top":"margin-left","margin-bottom ":"margin-right","margin-left":"margin-top","margin-right":"margin-bottom","padding-left":"padding-top","padding-right":"padding-bottom",marginRight:"marginBottom"}[e]}getSlideIndex(e){const{slidesEl:t,params:s}=this,a=y(f(t,`.${s.slideClass}, swiper-slide`)[0]);return y(e)-a}getSlideIndexByData(e){return this.getSlideIndex(this.slides.filter((t=>1*t.getAttribute("data-swiper-slide-index")===e))[0])}recalcSlides(){const{slidesEl:e,params:t}=this;this.slides=f(e,`.${t.slideClass}, swiper-slide`)}enable(){const e=this;e.enabled||(e.enabled=!0,e.params.grabCursor&&e.setGrabCursor(),e.emit("enable"))}disable(){const e=this;e.enabled&&(e.enabled=!1,e.params.grabCursor&&e.unsetGrabCursor(),e.emit("disable"))}setProgress(e,t){const s=this;e=Math.min(Math.max(e,0),1);const a=s.minTranslate(),i=(s.maxTranslate()-a)*e+a;s.translateTo(i,void 0===t?0:t),s.updateActiveIndex(),s.updateSlidesClasses()}emitContainerClasses(){const e=this;if(!e.params._emitClasses||!e.el)return;const t=e.el.className.split(" ").filter((t=>0===t.indexOf("swiper")||0===t.indexOf(e.params.containerModifierClass)));e.emit("_containerClasses",t.join(" "))}getSlideClasses(e){const t=this;return t.destroyed?"":e.className.split(" ").filter((e=>0===e.indexOf("swiper-slide")||0===e.indexOf(t.params.slideClass))).join(" ")}emitSlidesClasses(){const e=this;if(!e.params._emitClasses||!e.el)return;const t=[];e.slides.forEach((s=>{const a=e.getSlideClasses(s);t.push({slideEl:s,classNames:a}),e.emit("_slideClass",s,a)})),e.emit("_slideClasses",t)}slidesPerViewDynamic(e,t){void 0===e&&(e="current"),void 0===t&&(t=!1);const{params:s,slides:a,slidesGrid:i,slidesSizesGrid:r,size:n,activeIndex:l}=this;let o=1;if("number"==typeof s.slidesPerView)return s.slidesPerView;if(s.centeredSlides){let e,t=a[l]?Math.ceil(a[l].swiperSlideSize):0;for(let s=l+1;sn&&(e=!0));for(let s=l-1;s>=0;s-=1)a[s]&&!e&&(t+=a[s].swiperSlideSize,o+=1,t>n&&(e=!0))}else if("current"===e)for(let e=l+1;e=0;e-=1){i[l]-i[e]{t.complete&&D(e,t)})),e.updateSize(),e.updateSlides(),e.updateProgress(),e.updateSlidesClasses(),s.freeMode&&s.freeMode.enabled&&!s.cssMode)a(),s.autoHeight&&e.updateAutoHeight();else{if(("auto"===s.slidesPerView||s.slidesPerView>1)&&e.isEnd&&!s.centeredSlides){const t=e.virtual&&s.virtual.enabled?e.virtual.slides:e.slides;i=e.slideTo(t.length-1,0,!1,!0)}else i=e.slideTo(e.activeIndex,0,!1,!0);i||a()}s.watchOverflow&&t!==e.snapGrid&&e.checkOverflow(),e.emit("update")}changeDirection(e,t){void 0===t&&(t=!0);const s=this,a=s.params.direction;return e||(e="horizontal"===a?"vertical":"horizontal"),e===a||"horizontal"!==e&&"vertical"!==e||(s.el.classList.remove(`${s.params.containerModifierClass}${a}`),s.el.classList.add(`${s.params.containerModifierClass}${e}`),s.emitContainerClasses(),s.params.direction=e,s.slides.forEach((t=>{"vertical"===e?t.style.width="":t.style.height=""})),s.emit("changeDirection"),t&&s.update()),s}changeLanguageDirection(e){const t=this;t.rtl&&"rtl"===e||!t.rtl&&"ltr"===e||(t.rtl="rtl"===e,t.rtlTranslate="horizontal"===t.params.direction&&t.rtl,t.rtl?(t.el.classList.add(`${t.params.containerModifierClass}rtl`),t.el.dir="rtl"):(t.el.classList.remove(`${t.params.containerModifierClass}rtl`),t.el.dir="ltr"),t.update())}mount(e){const t=this;if(t.mounted)return!0;let s=e||t.params.el;if("string"==typeof s&&(s=document.querySelector(s)),!s)return!1;s.swiper=t,s.parentNode&&s.parentNode.host&&s.parentNode.host.nodeName===t.params.swiperElementNodeName.toUpperCase()&&(t.isElement=!0);const a=()=>`.${(t.params.wrapperClass||"").trim().split(" ").join(".")}`;let i=(()=>{if(s&&s.shadowRoot&&s.shadowRoot.querySelector){return s.shadowRoot.querySelector(a())}return f(s,a())[0]})();return!i&&t.params.createElements&&(i=v("div",t.params.wrapperClass),s.append(i),f(s,`.${t.params.slideClass}`).forEach((e=>{i.append(e)}))),Object.assign(t,{el:s,wrapperEl:i,slidesEl:t.isElement&&!s.parentNode.host.slideSlots?s.parentNode.host:i,hostEl:t.isElement?s.parentNode.host:s,mounted:!0,rtl:"rtl"===s.dir.toLowerCase()||"rtl"===b(s,"direction"),rtlTranslate:"horizontal"===t.params.direction&&("rtl"===s.dir.toLowerCase()||"rtl"===b(s,"direction")),wrongRTL:"-webkit-box"===b(i,"display")}),!0}init(e){const t=this;if(t.initialized)return t;if(!1===t.mount(e))return t;t.emit("beforeInit"),t.params.breakpoints&&t.setBreakpoint(),t.addClasses(),t.updateSize(),t.updateSlides(),t.params.watchOverflow&&t.checkOverflow(),t.params.grabCursor&&t.enabled&&t.setGrabCursor(),t.params.loop&&t.virtual&&t.params.virtual.enabled?t.slideTo(t.params.initialSlide+t.virtual.slidesBefore,0,t.params.runCallbacksOnInit,!1,!0):t.slideTo(t.params.initialSlide,0,t.params.runCallbacksOnInit,!1,!0),t.params.loop&&t.loopCreate(),t.attachEvents();const s=[...t.el.querySelectorAll('[loading="lazy"]')];return t.isElement&&s.push(...t.hostEl.querySelectorAll('[loading="lazy"]')),s.forEach((e=>{e.complete?D(t,e):e.addEventListener("load",(e=>{D(t,e.target)}))})),H(t),t.initialized=!0,H(t),t.emit("init"),t.emit("afterInit"),t}destroy(e,t){void 0===e&&(e=!0),void 0===t&&(t=!0);const s=this,{params:a,el:i,wrapperEl:r,slides:n}=s;return void 0===s.params||s.destroyed||(s.emit("beforeDestroy"),s.initialized=!1,s.detachEvents(),a.loop&&s.loopDestroy(),t&&(s.removeClasses(),i&&"string"!=typeof i&&i.removeAttribute("style"),r&&r.removeAttribute("style"),n&&n.length&&n.forEach((e=>{e.classList.remove(a.slideVisibleClass,a.slideFullyVisibleClass,a.slideActiveClass,a.slideNextClass,a.slidePrevClass),e.removeAttribute("style"),e.removeAttribute("data-swiper-slide-index")}))),s.emit("destroy"),Object.keys(s.eventsListeners).forEach((e=>{s.off(e)})),!1!==e&&(s.el&&"string"!=typeof s.el&&(s.el.swiper=null),function(e){const t=e;Object.keys(t).forEach((e=>{try{t[e]=null}catch(e){}try{delete t[e]}catch(e){}}))}(s)),s.destroyed=!0),null}static extendDefaults(e){p(ae,e)}static get extendedDefaults(){return ae}static get defaults(){return ee}static installModule(e){ie.prototype.__modules__||(ie.prototype.__modules__=[]);const t=ie.prototype.__modules__;"function"==typeof e&&t.indexOf(e)<0&&t.push(e)}static use(e){return Array.isArray(e)?(e.forEach((e=>ie.installModule(e))),ie):(ie.installModule(e),ie)}}function re(e,t,s,a){return e.params.createElements&&Object.keys(a).forEach((i=>{if(!s[i]&&!0===s.auto){let r=f(e.el,`.${a[i]}`)[0];r||(r=v("div",a[i]),r.className=a[i],e.el.append(r)),s[i]=r,t[i]=r}})),s}function ne(e){return void 0===e&&(e=""),`.${e.trim().replace(/([\.:!+\/])/g,"\\$1").replace(/ /g,".")}`}function le(e){const t=this,{params:s,slidesEl:a}=t;s.loop&&t.loopDestroy();const i=e=>{if("string"==typeof e){const t=document.createElement("div");t.innerHTML=e,a.append(t.children[0]),t.innerHTML=""}else a.append(e)};if("object"==typeof e&&"length"in e)for(let t=0;t{if("string"==typeof e){const t=document.createElement("div");t.innerHTML=e,i.prepend(t.children[0]),t.innerHTML=""}else i.prepend(e)};if("object"==typeof e&&"length"in e){for(let t=0;t=l)return void s.appendSlide(t);let o=n>e?n+1:n;const d=[];for(let t=l-1;t>=e;t-=1){const e=s.slides[t];e.remove(),d.unshift(e)}if("object"==typeof t&&"length"in t){for(let e=0;ee?n+t.length:n}else r.append(t);for(let e=0;e{if(s.params.effect!==t)return;s.classNames.push(`${s.params.containerModifierClass}${t}`),l&&l()&&s.classNames.push(`${s.params.containerModifierClass}3d`);const e=n?n():{};Object.assign(s.params,e),Object.assign(s.originalParams,e)})),a("setTranslate",(()=>{s.params.effect===t&&i()})),a("setTransition",((e,a)=>{s.params.effect===t&&r(a)})),a("transitionEnd",(()=>{if(s.params.effect===t&&o){if(!d||!d().slideShadows)return;s.slides.forEach((e=>{e.querySelectorAll(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").forEach((e=>e.remove()))})),o()}})),a("virtualUpdate",(()=>{s.params.effect===t&&(s.slides.length||(c=!0),requestAnimationFrame((()=>{c&&s.slides&&s.slides.length&&(i(),c=!1)})))}))}function me(e,t){const s=h(t);return s!==t&&(s.style.backfaceVisibility="hidden",s.style["-webkit-backface-visibility"]="hidden"),s}function he(e){let{swiper:t,duration:s,transformElements:a,allSlides:i}=e;const{activeIndex:r}=t;if(t.params.virtualTranslate&&0!==s){let e,s=!1;e=i?a:a.filter((e=>{const s=e.classList.contains("swiper-slide-transform")?(e=>{if(!e.parentElement)return t.slides.filter((t=>t.shadowRoot&&t.shadowRoot===e.parentNode))[0];return e.parentElement})(e):e;return t.getSlideIndex(s)===r})),e.forEach((e=>{x(e,(()=>{if(s)return;if(!t||t.destroyed)return;s=!0,t.animating=!1;const e=new window.CustomEvent("transitionend",{bubbles:!0,cancelable:!0});t.wrapperEl.dispatchEvent(e)}))}))}}function fe(e,t,s){const a=`swiper-slide-shadow${s?`-${s}`:""}${e?` swiper-slide-shadow-${e}`:""}`,i=h(t);let r=i.querySelector(`.${a.split(" ").join(".")}`);return r||(r=v("div",a.split(" ")),i.append(r)),r}Object.keys(se).forEach((e=>{Object.keys(se[e]).forEach((t=>{ie.prototype[t]=se[e][t]}))})),ie.use([function(e){let{swiper:t,on:s,emit:a}=e;const i=r();let n=null,l=null;const o=()=>{t&&!t.destroyed&&t.initialized&&(a("beforeResize"),a("resize"))},d=()=>{t&&!t.destroyed&&t.initialized&&a("orientationchange")};s("init",(()=>{t.params.resizeObserver&&void 0!==i.ResizeObserver?t&&!t.destroyed&&t.initialized&&(n=new ResizeObserver((e=>{l=i.requestAnimationFrame((()=>{const{width:s,height:a}=t;let i=s,r=a;e.forEach((e=>{let{contentBoxSize:s,contentRect:a,target:n}=e;n&&n!==t.el||(i=a?a.width:(s[0]||s).inlineSize,r=a?a.height:(s[0]||s).blockSize)})),i===s&&r===a||o()}))})),n.observe(t.el)):(i.addEventListener("resize",o),i.addEventListener("orientationchange",d))})),s("destroy",(()=>{l&&i.cancelAnimationFrame(l),n&&n.unobserve&&t.el&&(n.unobserve(t.el),n=null),i.removeEventListener("resize",o),i.removeEventListener("orientationchange",d)}))},function(e){let{swiper:t,extendParams:s,on:a,emit:i}=e;const n=[],l=r(),o=function(e,s){void 0===s&&(s={});const a=new(l.MutationObserver||l.WebkitMutationObserver)((e=>{if(t.__preventObserver__)return;if(1===e.length)return void i("observerUpdate",e[0]);const s=function(){i("observerUpdate",e[0])};l.requestAnimationFrame?l.requestAnimationFrame(s):l.setTimeout(s,0)}));a.observe(e,{attributes:void 0===s.attributes||s.attributes,childList:t.isElement||(void 0===s.childList||s).childList,characterData:void 0===s.characterData||s.characterData}),n.push(a)};s({observer:!1,observeParents:!1,observeSlideChildren:!1}),a("init",(()=>{if(t.params.observer){if(t.params.observeParents){const e=E(t.hostEl);for(let t=0;t{n.forEach((e=>{e.disconnect()})),n.splice(0,n.length)}))}]);const ge=[function(e){let t,{swiper:s,extendParams:i,on:r,emit:n}=e;i({virtual:{enabled:!1,slides:[],cache:!0,renderSlide:null,renderExternal:null,renderExternalUpdate:!0,addSlidesBefore:0,addSlidesAfter:0}});const l=a();s.virtual={cache:{},from:void 0,to:void 0,slides:[],offset:0,slidesGrid:[]};const o=l.createElement("div");function d(e,t){const a=s.params.virtual;if(a.cache&&s.virtual.cache[t])return s.virtual.cache[t];let i;return a.renderSlide?(i=a.renderSlide.call(s,e,t),"string"==typeof i&&(o.innerHTML=i,i=o.children[0])):i=s.isElement?v("swiper-slide"):v("div",s.params.slideClass),i.setAttribute("data-swiper-slide-index",t),a.renderSlide||(i.innerHTML=e),a.cache&&(s.virtual.cache[t]=i),i}function c(e,t){const{slidesPerView:a,slidesPerGroup:i,centeredSlides:r,loop:l,initialSlide:o}=s.params;if(t&&!l&&o>0)return;const{addSlidesBefore:c,addSlidesAfter:p}=s.params.virtual,{from:u,to:m,slides:h,slidesGrid:g,offset:v}=s.virtual;s.params.cssMode||s.updateActiveIndex();const w=s.activeIndex||0;let b,y,E;b=s.rtlTranslate?"right":s.isHorizontal()?"left":"top",r?(y=Math.floor(a/2)+i+p,E=Math.floor(a/2)+i+c):(y=a+(i-1)+p,E=(l?a:i)+c);let x=w-E,S=w+y;l||(x=Math.max(x,0),S=Math.min(S,h.length-1));let T=(s.slidesGrid[x]||0)-(s.slidesGrid[0]||0);function M(){s.updateSlides(),s.updateProgress(),s.updateSlidesClasses(),n("virtualUpdate")}if(l&&w>=E?(x-=E,r||(T+=s.slidesGrid[0])):l&&w{e.style[b]=T-Math.abs(s.cssOverflowAdjustment())+"px"})),s.updateProgress(),void n("virtualUpdate");if(s.params.virtual.renderExternal)return s.params.virtual.renderExternal.call(s,{offset:T,from:x,to:S,slides:function(){const e=[];for(let t=x;t<=S;t+=1)e.push(h[t]);return e}()}),void(s.params.virtual.renderExternalUpdate?M():n("virtualUpdate"));const C=[],P=[],L=e=>{let t=e;return e<0?t=h.length+e:t>=h.length&&(t-=h.length),t};if(e)s.slides.filter((e=>e.matches(`.${s.params.slideClass}, swiper-slide`))).forEach((e=>{e.remove()}));else for(let e=u;e<=m;e+=1)if(eS){const t=L(e);s.slides.filter((e=>e.matches(`.${s.params.slideClass}[data-swiper-slide-index="${t}"], swiper-slide[data-swiper-slide-index="${t}"]`))).forEach((e=>{e.remove()}))}const I=l?-h.length:0,z=l?2*h.length:h.length;for(let t=I;t=x&&t<=S){const s=L(t);void 0===m||e?P.push(s):(t>m&&P.push(s),t{s.slidesEl.append(d(h[e],e))})),l)for(let e=C.length-1;e>=0;e-=1){const t=C[e];s.slidesEl.prepend(d(h[t],t))}else C.sort(((e,t)=>t-e)),C.forEach((e=>{s.slidesEl.prepend(d(h[e],e))}));f(s.slidesEl,".swiper-slide, swiper-slide").forEach((e=>{e.style[b]=T-Math.abs(s.cssOverflowAdjustment())+"px"})),M()}r("beforeInit",(()=>{if(!s.params.virtual.enabled)return;let e;if(void 0===s.passedParams.virtual.slides){const t=[...s.slidesEl.children].filter((e=>e.matches(`.${s.params.slideClass}, swiper-slide`)));t&&t.length&&(s.virtual.slides=[...t],e=!0,t.forEach(((e,t)=>{e.setAttribute("data-swiper-slide-index",t),s.virtual.cache[t]=e,e.remove()})))}e||(s.virtual.slides=s.params.virtual.slides),s.classNames.push(`${s.params.containerModifierClass}virtual`),s.params.watchSlidesProgress=!0,s.originalParams.watchSlidesProgress=!0,c(!1,!0)})),r("setTranslate",(()=>{s.params.virtual.enabled&&(s.params.cssMode&&!s._immediateVirtual?(clearTimeout(t),t=setTimeout((()=>{c()}),100)):c())})),r("init update resize",(()=>{s.params.virtual.enabled&&s.params.cssMode&&u(s.wrapperEl,"--swiper-virtual-size",`${s.virtualSize}px`)})),Object.assign(s.virtual,{appendSlide:function(e){if("object"==typeof e&&"length"in e)for(let t=0;t{const a=e[s],r=a.getAttribute("data-swiper-slide-index");r&&a.setAttribute("data-swiper-slide-index",parseInt(r,10)+i),t[parseInt(s,10)+i]=a})),s.virtual.cache=t}c(!0),s.slideTo(a,0)},removeSlide:function(e){if(null==e)return;let t=s.activeIndex;if(Array.isArray(e))for(let a=e.length-1;a>=0;a-=1)s.params.virtual.cache&&(delete s.virtual.cache[e[a]],Object.keys(s.virtual.cache).forEach((t=>{t>e&&(s.virtual.cache[t-1]=s.virtual.cache[t],s.virtual.cache[t-1].setAttribute("data-swiper-slide-index",t-1),delete s.virtual.cache[t])}))),s.virtual.slides.splice(e[a],1),e[a]{t>e&&(s.virtual.cache[t-1]=s.virtual.cache[t],s.virtual.cache[t-1].setAttribute("data-swiper-slide-index",t-1),delete s.virtual.cache[t])}))),s.virtual.slides.splice(e,1),e0&&0===E(t.el,`.${t.params.slideActiveClass}`).length)return;const a=t.el,i=a.clientWidth,r=a.clientHeight,n=o.innerWidth,l=o.innerHeight,d=w(a);s&&(d.left-=a.scrollLeft);const c=[[d.left,d.top],[d.left+i,d.top],[d.left,d.top+r],[d.left+i,d.top+r]];for(let t=0;t=0&&s[0]<=n&&s[1]>=0&&s[1]<=l){if(0===s[0]&&0===s[1])continue;e=!0}}if(!e)return}t.isHorizontal()?((d||c||p||u)&&(a.preventDefault?a.preventDefault():a.returnValue=!1),((c||u)&&!s||(d||p)&&s)&&t.slideNext(),((d||p)&&!s||(c||u)&&s)&&t.slidePrev()):((d||c||m||h)&&(a.preventDefault?a.preventDefault():a.returnValue=!1),(c||h)&&t.slideNext(),(d||m)&&t.slidePrev()),n("keyPress",i)}}function c(){t.keyboard.enabled||(l.addEventListener("keydown",d),t.keyboard.enabled=!0)}function p(){t.keyboard.enabled&&(l.removeEventListener("keydown",d),t.keyboard.enabled=!1)}t.keyboard={enabled:!1},s({keyboard:{enabled:!1,onlyInViewport:!0,pageUpDown:!0}}),i("init",(()=>{t.params.keyboard.enabled&&c()})),i("destroy",(()=>{t.keyboard.enabled&&p()})),Object.assign(t.keyboard,{enable:c,disable:p})},function(e){let{swiper:t,extendParams:s,on:a,emit:i}=e;const n=r();let d;s({mousewheel:{enabled:!1,releaseOnEdges:!1,invert:!1,forceToAxis:!1,sensitivity:1,eventsTarget:"container",thresholdDelta:null,thresholdTime:null,noMousewheelClass:"swiper-no-mousewheel"}}),t.mousewheel={enabled:!1};let c,p=o();const u=[];function m(){t.enabled&&(t.mouseEntered=!0)}function h(){t.enabled&&(t.mouseEntered=!1)}function f(e){return!(t.params.mousewheel.thresholdDelta&&e.delta=6&&o()-p<60||(e.direction<0?t.isEnd&&!t.params.loop||t.animating||(t.slideNext(),i("scroll",e.raw)):t.isBeginning&&!t.params.loop||t.animating||(t.slidePrev(),i("scroll",e.raw)),p=(new n.Date).getTime(),!1)))}function g(e){let s=e,a=!0;if(!t.enabled)return;if(e.target.closest(`.${t.params.mousewheel.noMousewheelClass}`))return;const r=t.params.mousewheel;t.params.cssMode&&s.preventDefault();let n=t.el;"container"!==t.params.mousewheel.eventsTarget&&(n=document.querySelector(t.params.mousewheel.eventsTarget));const p=n&&n.contains(s.target);if(!t.mouseEntered&&!p&&!r.releaseOnEdges)return!0;s.originalEvent&&(s=s.originalEvent);let m=0;const h=t.rtlTranslate?-1:1,g=function(e){let t=0,s=0,a=0,i=0;return"detail"in e&&(s=e.detail),"wheelDelta"in e&&(s=-e.wheelDelta/120),"wheelDeltaY"in e&&(s=-e.wheelDeltaY/120),"wheelDeltaX"in e&&(t=-e.wheelDeltaX/120),"axis"in e&&e.axis===e.HORIZONTAL_AXIS&&(t=s,s=0),a=10*t,i=10*s,"deltaY"in e&&(i=e.deltaY),"deltaX"in e&&(a=e.deltaX),e.shiftKey&&!a&&(a=i,i=0),(a||i)&&e.deltaMode&&(1===e.deltaMode?(a*=40,i*=40):(a*=800,i*=800)),a&&!t&&(t=a<1?-1:1),i&&!s&&(s=i<1?-1:1),{spinX:t,spinY:s,pixelX:a,pixelY:i}}(s);if(r.forceToAxis)if(t.isHorizontal()){if(!(Math.abs(g.pixelX)>Math.abs(g.pixelY)))return!0;m=-g.pixelX*h}else{if(!(Math.abs(g.pixelY)>Math.abs(g.pixelX)))return!0;m=-g.pixelY}else m=Math.abs(g.pixelX)>Math.abs(g.pixelY)?-g.pixelX*h:-g.pixelY;if(0===m)return!0;r.invert&&(m=-m);let v=t.getTranslate()+m*r.sensitivity;if(v>=t.minTranslate()&&(v=t.minTranslate()),v<=t.maxTranslate()&&(v=t.maxTranslate()),a=!!t.params.loop||!(v===t.minTranslate()||v===t.maxTranslate()),a&&t.params.nested&&s.stopPropagation(),t.params.freeMode&&t.params.freeMode.enabled){const e={time:o(),delta:Math.abs(m),direction:Math.sign(m)},a=c&&e.time=t.minTranslate()&&(n=t.minTranslate()),n<=t.maxTranslate()&&(n=t.maxTranslate()),t.setTransition(0),t.setTranslate(n),t.updateProgress(),t.updateActiveIndex(),t.updateSlidesClasses(),(!o&&t.isBeginning||!p&&t.isEnd)&&t.updateSlidesClasses(),t.params.loop&&t.loopFix({direction:e.direction<0?"next":"prev",byMousewheel:!0}),t.params.freeMode.sticky){clearTimeout(d),d=void 0,u.length>=15&&u.shift();const s=u.length?u[u.length-1]:void 0,a=u[0];if(u.push(e),s&&(e.delta>s.delta||e.direction!==s.direction))u.splice(0);else if(u.length>=15&&e.time-a.time<500&&a.delta-e.delta>=1&&e.delta<=6){const s=m>0?.8:.2;c=e,u.splice(0),d=l((()=>{!t.destroyed&&t.params&&t.slideToClosest(t.params.speed,!0,void 0,s)}),0)}d||(d=l((()=>{if(t.destroyed||!t.params)return;c=e,u.splice(0),t.slideToClosest(t.params.speed,!0,void 0,.5)}),500))}if(a||i("scroll",s),t.params.autoplay&&t.params.autoplayDisableOnInteraction&&t.autoplay.stop(),r.releaseOnEdges&&(n===t.minTranslate()||n===t.maxTranslate()))return!0}}else{const s={time:o(),delta:Math.abs(m),direction:Math.sign(m),raw:e};u.length>=2&&u.shift();const a=u.length?u[u.length-1]:void 0;if(u.push(s),a?(s.direction!==a.direction||s.delta>a.delta||s.time>a.time+150)&&f(s):f(s),function(e){const s=t.params.mousewheel;if(e.direction<0){if(t.isEnd&&!t.params.loop&&s.releaseOnEdges)return!0}else if(t.isBeginning&&!t.params.loop&&s.releaseOnEdges)return!0;return!1}(s))return!0}return s.preventDefault?s.preventDefault():s.returnValue=!1,!1}function v(e){let s=t.el;"container"!==t.params.mousewheel.eventsTarget&&(s=document.querySelector(t.params.mousewheel.eventsTarget)),s[e]("mouseenter",m),s[e]("mouseleave",h),s[e]("wheel",g)}function w(){return t.params.cssMode?(t.wrapperEl.removeEventListener("wheel",g),!0):!t.mousewheel.enabled&&(v("addEventListener"),t.mousewheel.enabled=!0,!0)}function b(){return t.params.cssMode?(t.wrapperEl.addEventListener(event,g),!0):!!t.mousewheel.enabled&&(v("removeEventListener"),t.mousewheel.enabled=!1,!0)}a("init",(()=>{!t.params.mousewheel.enabled&&t.params.cssMode&&b(),t.params.mousewheel.enabled&&w()})),a("destroy",(()=>{t.params.cssMode&&w(),t.mousewheel.enabled&&b()})),Object.assign(t.mousewheel,{enable:w,disable:b})},function(e){let{swiper:t,extendParams:s,on:a,emit:i}=e;function r(e){let s;return e&&"string"==typeof e&&t.isElement&&(s=t.el.querySelector(e)||t.hostEl.querySelector(e),s)?s:(e&&("string"==typeof e&&(s=[...document.querySelectorAll(e)]),t.params.uniqueNavElements&&"string"==typeof e&&s&&s.length>1&&1===t.el.querySelectorAll(e).length?s=t.el.querySelector(e):s&&1===s.length&&(s=s[0])),e&&!s?e:s)}function n(e,s){const a=t.params.navigation;(e=T(e)).forEach((e=>{e&&(e.classList[s?"add":"remove"](...a.disabledClass.split(" ")),"BUTTON"===e.tagName&&(e.disabled=s),t.params.watchOverflow&&t.enabled&&e.classList[t.isLocked?"add":"remove"](a.lockClass))}))}function l(){const{nextEl:e,prevEl:s}=t.navigation;if(t.params.loop)return n(s,!1),void n(e,!1);n(s,t.isBeginning&&!t.params.rewind),n(e,t.isEnd&&!t.params.rewind)}function o(e){e.preventDefault(),(!t.isBeginning||t.params.loop||t.params.rewind)&&(t.slidePrev(),i("navigationPrev"))}function d(e){e.preventDefault(),(!t.isEnd||t.params.loop||t.params.rewind)&&(t.slideNext(),i("navigationNext"))}function c(){const e=t.params.navigation;if(t.params.navigation=re(t,t.originalParams.navigation,t.params.navigation,{nextEl:"swiper-button-next",prevEl:"swiper-button-prev"}),!e.nextEl&&!e.prevEl)return;let s=r(e.nextEl),a=r(e.prevEl);Object.assign(t.navigation,{nextEl:s,prevEl:a}),s=T(s),a=T(a);const i=(s,a)=>{s&&s.addEventListener("click","next"===a?d:o),!t.enabled&&s&&s.classList.add(...e.lockClass.split(" "))};s.forEach((e=>i(e,"next"))),a.forEach((e=>i(e,"prev")))}function p(){let{nextEl:e,prevEl:s}=t.navigation;e=T(e),s=T(s);const a=(e,s)=>{e.removeEventListener("click","next"===s?d:o),e.classList.remove(...t.params.navigation.disabledClass.split(" "))};e.forEach((e=>a(e,"next"))),s.forEach((e=>a(e,"prev")))}s({navigation:{nextEl:null,prevEl:null,hideOnClick:!1,disabledClass:"swiper-button-disabled",hiddenClass:"swiper-button-hidden",lockClass:"swiper-button-lock",navigationDisabledClass:"swiper-navigation-disabled"}}),t.navigation={nextEl:null,prevEl:null},a("init",(()=>{!1===t.params.navigation.enabled?u():(c(),l())})),a("toEdge fromEdge lock unlock",(()=>{l()})),a("destroy",(()=>{p()})),a("enable disable",(()=>{let{nextEl:e,prevEl:s}=t.navigation;e=T(e),s=T(s),t.enabled?l():[...e,...s].filter((e=>!!e)).forEach((e=>e.classList.add(t.params.navigation.lockClass)))})),a("click",((e,s)=>{let{nextEl:a,prevEl:r}=t.navigation;a=T(a),r=T(r);const n=s.target;let l=r.includes(n)||a.includes(n);if(t.isElement&&!l){const e=s.path||s.composedPath&&s.composedPath();e&&(l=e.find((e=>a.includes(e)||r.includes(e))))}if(t.params.navigation.hideOnClick&&!l){if(t.pagination&&t.params.pagination&&t.params.pagination.clickable&&(t.pagination.el===n||t.pagination.el.contains(n)))return;let e;a.length?e=a[0].classList.contains(t.params.navigation.hiddenClass):r.length&&(e=r[0].classList.contains(t.params.navigation.hiddenClass)),i(!0===e?"navigationShow":"navigationHide"),[...a,...r].filter((e=>!!e)).forEach((e=>e.classList.toggle(t.params.navigation.hiddenClass)))}}));const u=()=>{t.el.classList.add(...t.params.navigation.navigationDisabledClass.split(" ")),p()};Object.assign(t.navigation,{enable:()=>{t.el.classList.remove(...t.params.navigation.navigationDisabledClass.split(" ")),c(),l()},disable:u,update:l,init:c,destroy:p})},function(e){let{swiper:t,extendParams:s,on:a,emit:i}=e;const r="swiper-pagination";let n;s({pagination:{el:null,bulletElement:"span",clickable:!1,hideOnClick:!1,renderBullet:null,renderProgressbar:null,renderFraction:null,renderCustom:null,progressbarOpposite:!1,type:"bullets",dynamicBullets:!1,dynamicMainBullets:1,formatFractionCurrent:e=>e,formatFractionTotal:e=>e,bulletClass:`${r}-bullet`,bulletActiveClass:`${r}-bullet-active`,modifierClass:`${r}-`,currentClass:`${r}-current`,totalClass:`${r}-total`,hiddenClass:`${r}-hidden`,progressbarFillClass:`${r}-progressbar-fill`,progressbarOppositeClass:`${r}-progressbar-opposite`,clickableClass:`${r}-clickable`,lockClass:`${r}-lock`,horizontalClass:`${r}-horizontal`,verticalClass:`${r}-vertical`,paginationDisabledClass:`${r}-disabled`}}),t.pagination={el:null,bullets:[]};let l=0;function o(){return!t.params.pagination.el||!t.pagination.el||Array.isArray(t.pagination.el)&&0===t.pagination.el.length}function d(e,s){const{bulletActiveClass:a}=t.params.pagination;e&&(e=e[("prev"===s?"previous":"next")+"ElementSibling"])&&(e.classList.add(`${a}-${s}`),(e=e[("prev"===s?"previous":"next")+"ElementSibling"])&&e.classList.add(`${a}-${s}-${s}`))}function c(e){const s=e.target.closest(ne(t.params.pagination.bulletClass));if(!s)return;e.preventDefault();const a=y(s)*t.params.slidesPerGroup;if(t.params.loop){if(t.realIndex===a)return;const e=(i=t.realIndex,r=a,n=t.slides.length,(r%=n)==1+(i%=n)?"next":r===i-1?"previous":void 0);"next"===e?t.slideNext():"previous"===e?t.slidePrev():t.slideToLoop(a)}else t.slideTo(a);var i,r,n}function p(){const e=t.rtl,s=t.params.pagination;if(o())return;let a,r,c=t.pagination.el;c=T(c);const p=t.virtual&&t.params.virtual.enabled?t.virtual.slides.length:t.slides.length,u=t.params.loop?Math.ceil(p/t.params.slidesPerGroup):t.snapGrid.length;if(t.params.loop?(r=t.previousRealIndex||0,a=t.params.slidesPerGroup>1?Math.floor(t.realIndex/t.params.slidesPerGroup):t.realIndex):void 0!==t.snapIndex?(a=t.snapIndex,r=t.previousSnapIndex):(r=t.previousIndex||0,a=t.activeIndex||0),"bullets"===s.type&&t.pagination.bullets&&t.pagination.bullets.length>0){const i=t.pagination.bullets;let o,p,u;if(s.dynamicBullets&&(n=S(i[0],t.isHorizontal()?"width":"height",!0),c.forEach((e=>{e.style[t.isHorizontal()?"width":"height"]=n*(s.dynamicMainBullets+4)+"px"})),s.dynamicMainBullets>1&&void 0!==r&&(l+=a-(r||0),l>s.dynamicMainBullets-1?l=s.dynamicMainBullets-1:l<0&&(l=0)),o=Math.max(a-l,0),p=o+(Math.min(i.length,s.dynamicMainBullets)-1),u=(p+o)/2),i.forEach((e=>{const t=[...["","-next","-next-next","-prev","-prev-prev","-main"].map((e=>`${s.bulletActiveClass}${e}`))].map((e=>"string"==typeof e&&e.includes(" ")?e.split(" "):e)).flat();e.classList.remove(...t)})),c.length>1)i.forEach((e=>{const i=y(e);i===a?e.classList.add(...s.bulletActiveClass.split(" ")):t.isElement&&e.setAttribute("part","bullet"),s.dynamicBullets&&(i>=o&&i<=p&&e.classList.add(...`${s.bulletActiveClass}-main`.split(" ")),i===o&&d(e,"prev"),i===p&&d(e,"next"))}));else{const e=i[a];if(e&&e.classList.add(...s.bulletActiveClass.split(" ")),t.isElement&&i.forEach(((e,t)=>{e.setAttribute("part",t===a?"bullet-active":"bullet")})),s.dynamicBullets){const e=i[o],t=i[p];for(let e=o;e<=p;e+=1)i[e]&&i[e].classList.add(...`${s.bulletActiveClass}-main`.split(" "));d(e,"prev"),d(t,"next")}}if(s.dynamicBullets){const a=Math.min(i.length,s.dynamicMainBullets+4),r=(n*a-n)/2-u*n,l=e?"right":"left";i.forEach((e=>{e.style[t.isHorizontal()?l:"top"]=`${r}px`}))}}c.forEach(((e,r)=>{if("fraction"===s.type&&(e.querySelectorAll(ne(s.currentClass)).forEach((e=>{e.textContent=s.formatFractionCurrent(a+1)})),e.querySelectorAll(ne(s.totalClass)).forEach((e=>{e.textContent=s.formatFractionTotal(u)}))),"progressbar"===s.type){let i;i=s.progressbarOpposite?t.isHorizontal()?"vertical":"horizontal":t.isHorizontal()?"horizontal":"vertical";const r=(a+1)/u;let n=1,l=1;"horizontal"===i?n=r:l=r,e.querySelectorAll(ne(s.progressbarFillClass)).forEach((e=>{e.style.transform=`translate3d(0,0,0) scaleX(${n}) scaleY(${l})`,e.style.transitionDuration=`${t.params.speed}ms`}))}"custom"===s.type&&s.renderCustom?(e.innerHTML=s.renderCustom(t,a+1,u),0===r&&i("paginationRender",e)):(0===r&&i("paginationRender",e),i("paginationUpdate",e)),t.params.watchOverflow&&t.enabled&&e.classList[t.isLocked?"add":"remove"](s.lockClass)}))}function u(){const e=t.params.pagination;if(o())return;const s=t.virtual&&t.params.virtual.enabled?t.virtual.slides.length:t.grid&&t.params.grid.rows>1?t.slides.length/Math.ceil(t.params.grid.rows):t.slides.length;let a=t.pagination.el;a=T(a);let r="";if("bullets"===e.type){let a=t.params.loop?Math.ceil(s/t.params.slidesPerGroup):t.snapGrid.length;t.params.freeMode&&t.params.freeMode.enabled&&a>s&&(a=s);for(let s=0;s`}"fraction"===e.type&&(r=e.renderFraction?e.renderFraction.call(t,e.currentClass,e.totalClass):` / `),"progressbar"===e.type&&(r=e.renderProgressbar?e.renderProgressbar.call(t,e.progressbarFillClass):``),t.pagination.bullets=[],a.forEach((s=>{"custom"!==e.type&&(s.innerHTML=r||""),"bullets"===e.type&&t.pagination.bullets.push(...s.querySelectorAll(ne(e.bulletClass)))})),"custom"!==e.type&&i("paginationRender",a[0])}function m(){t.params.pagination=re(t,t.originalParams.pagination,t.params.pagination,{el:"swiper-pagination"});const e=t.params.pagination;if(!e.el)return;let s;"string"==typeof e.el&&t.isElement&&(s=t.el.querySelector(e.el)),s||"string"!=typeof e.el||(s=[...document.querySelectorAll(e.el)]),s||(s=e.el),s&&0!==s.length&&(t.params.uniqueNavElements&&"string"==typeof e.el&&Array.isArray(s)&&s.length>1&&(s=[...t.el.querySelectorAll(e.el)],s.length>1&&(s=s.filter((e=>E(e,".swiper")[0]===t.el))[0])),Array.isArray(s)&&1===s.length&&(s=s[0]),Object.assign(t.pagination,{el:s}),s=T(s),s.forEach((s=>{"bullets"===e.type&&e.clickable&&s.classList.add(...(e.clickableClass||"").split(" ")),s.classList.add(e.modifierClass+e.type),s.classList.add(t.isHorizontal()?e.horizontalClass:e.verticalClass),"bullets"===e.type&&e.dynamicBullets&&(s.classList.add(`${e.modifierClass}${e.type}-dynamic`),l=0,e.dynamicMainBullets<1&&(e.dynamicMainBullets=1)),"progressbar"===e.type&&e.progressbarOpposite&&s.classList.add(e.progressbarOppositeClass),e.clickable&&s.addEventListener("click",c),t.enabled||s.classList.add(e.lockClass)})))}function h(){const e=t.params.pagination;if(o())return;let s=t.pagination.el;s&&(s=T(s),s.forEach((s=>{s.classList.remove(e.hiddenClass),s.classList.remove(e.modifierClass+e.type),s.classList.remove(t.isHorizontal()?e.horizontalClass:e.verticalClass),e.clickable&&(s.classList.remove(...(e.clickableClass||"").split(" ")),s.removeEventListener("click",c))}))),t.pagination.bullets&&t.pagination.bullets.forEach((t=>t.classList.remove(...e.bulletActiveClass.split(" "))))}a("changeDirection",(()=>{if(!t.pagination||!t.pagination.el)return;const e=t.params.pagination;let{el:s}=t.pagination;s=T(s),s.forEach((s=>{s.classList.remove(e.horizontalClass,e.verticalClass),s.classList.add(t.isHorizontal()?e.horizontalClass:e.verticalClass)}))})),a("init",(()=>{!1===t.params.pagination.enabled?f():(m(),u(),p())})),a("activeIndexChange",(()=>{void 0===t.snapIndex&&p()})),a("snapIndexChange",(()=>{p()})),a("snapGridLengthChange",(()=>{u(),p()})),a("destroy",(()=>{h()})),a("enable disable",(()=>{let{el:e}=t.pagination;e&&(e=T(e),e.forEach((e=>e.classList[t.enabled?"remove":"add"](t.params.pagination.lockClass))))})),a("lock unlock",(()=>{p()})),a("click",((e,s)=>{const a=s.target,r=T(t.pagination.el);if(t.params.pagination.el&&t.params.pagination.hideOnClick&&r&&r.length>0&&!a.classList.contains(t.params.pagination.bulletClass)){if(t.navigation&&(t.navigation.nextEl&&a===t.navigation.nextEl||t.navigation.prevEl&&a===t.navigation.prevEl))return;const e=r[0].classList.contains(t.params.pagination.hiddenClass);i(!0===e?"paginationShow":"paginationHide"),r.forEach((e=>e.classList.toggle(t.params.pagination.hiddenClass)))}}));const f=()=>{t.el.classList.add(t.params.pagination.paginationDisabledClass);let{el:e}=t.pagination;e&&(e=T(e),e.forEach((e=>e.classList.add(t.params.pagination.paginationDisabledClass)))),h()};Object.assign(t.pagination,{enable:()=>{t.el.classList.remove(t.params.pagination.paginationDisabledClass);let{el:e}=t.pagination;e&&(e=T(e),e.forEach((e=>e.classList.remove(t.params.pagination.paginationDisabledClass)))),m(),u(),p()},disable:f,render:u,update:p,init:m,destroy:h})},function(e){let{swiper:t,extendParams:s,on:i,emit:r}=e;const o=a();let d,c,p,u,m=!1,h=null,f=null;function g(){if(!t.params.scrollbar.el||!t.scrollbar.el)return;const{scrollbar:e,rtlTranslate:s}=t,{dragEl:a,el:i}=e,r=t.params.scrollbar,n=t.params.loop?t.progressLoop:t.progress;let l=c,o=(p-c)*n;s?(o=-o,o>0?(l=c-o,o=0):-o+c>p&&(l=p+o)):o<0?(l=c+o,o=0):o+c>p&&(l=p-o),t.isHorizontal()?(a.style.transform=`translate3d(${o}px, 0, 0)`,a.style.width=`${l}px`):(a.style.transform=`translate3d(0px, ${o}px, 0)`,a.style.height=`${l}px`),r.hide&&(clearTimeout(h),i.style.opacity=1,h=setTimeout((()=>{i.style.opacity=0,i.style.transitionDuration="400ms"}),1e3))}function b(){if(!t.params.scrollbar.el||!t.scrollbar.el)return;const{scrollbar:e}=t,{dragEl:s,el:a}=e;s.style.width="",s.style.height="",p=t.isHorizontal()?a.offsetWidth:a.offsetHeight,u=t.size/(t.virtualSize+t.params.slidesOffsetBefore-(t.params.centeredSlides?t.snapGrid[0]:0)),c="auto"===t.params.scrollbar.dragSize?p*u:parseInt(t.params.scrollbar.dragSize,10),t.isHorizontal()?s.style.width=`${c}px`:s.style.height=`${c}px`,a.style.display=u>=1?"none":"",t.params.scrollbar.hide&&(a.style.opacity=0),t.params.watchOverflow&&t.enabled&&e.el.classList[t.isLocked?"add":"remove"](t.params.scrollbar.lockClass)}function y(e){return t.isHorizontal()?e.clientX:e.clientY}function E(e){const{scrollbar:s,rtlTranslate:a}=t,{el:i}=s;let r;r=(y(e)-w(i)[t.isHorizontal()?"left":"top"]-(null!==d?d:c/2))/(p-c),r=Math.max(Math.min(r,1),0),a&&(r=1-r);const n=t.minTranslate()+(t.maxTranslate()-t.minTranslate())*r;t.updateProgress(n),t.setTranslate(n),t.updateActiveIndex(),t.updateSlidesClasses()}function x(e){const s=t.params.scrollbar,{scrollbar:a,wrapperEl:i}=t,{el:n,dragEl:l}=a;m=!0,d=e.target===l?y(e)-e.target.getBoundingClientRect()[t.isHorizontal()?"left":"top"]:null,e.preventDefault(),e.stopPropagation(),i.style.transitionDuration="100ms",l.style.transitionDuration="100ms",E(e),clearTimeout(f),n.style.transitionDuration="0ms",s.hide&&(n.style.opacity=1),t.params.cssMode&&(t.wrapperEl.style["scroll-snap-type"]="none"),r("scrollbarDragStart",e)}function S(e){const{scrollbar:s,wrapperEl:a}=t,{el:i,dragEl:n}=s;m&&(e.preventDefault&&e.cancelable?e.preventDefault():e.returnValue=!1,E(e),a.style.transitionDuration="0ms",i.style.transitionDuration="0ms",n.style.transitionDuration="0ms",r("scrollbarDragMove",e))}function M(e){const s=t.params.scrollbar,{scrollbar:a,wrapperEl:i}=t,{el:n}=a;m&&(m=!1,t.params.cssMode&&(t.wrapperEl.style["scroll-snap-type"]="",i.style.transitionDuration=""),s.hide&&(clearTimeout(f),f=l((()=>{n.style.opacity=0,n.style.transitionDuration="400ms"}),1e3)),r("scrollbarDragEnd",e),s.snapOnRelease&&t.slideToClosest())}function C(e){const{scrollbar:s,params:a}=t,i=s.el;if(!i)return;const r=i,n=!!a.passiveListeners&&{passive:!1,capture:!1},l=!!a.passiveListeners&&{passive:!0,capture:!1};if(!r)return;const d="on"===e?"addEventListener":"removeEventListener";r[d]("pointerdown",x,n),o[d]("pointermove",S,n),o[d]("pointerup",M,l)}function P(){const{scrollbar:e,el:s}=t;t.params.scrollbar=re(t,t.originalParams.scrollbar,t.params.scrollbar,{el:"swiper-scrollbar"});const a=t.params.scrollbar;if(!a.el)return;let i,r;if("string"==typeof a.el&&t.isElement&&(i=t.el.querySelector(a.el)),i||"string"!=typeof a.el)i||(i=a.el);else if(i=o.querySelectorAll(a.el),!i.length)return;t.params.uniqueNavElements&&"string"==typeof a.el&&i.length>1&&1===s.querySelectorAll(a.el).length&&(i=s.querySelector(a.el)),i.length>0&&(i=i[0]),i.classList.add(t.isHorizontal()?a.horizontalClass:a.verticalClass),i&&(r=i.querySelector(ne(t.params.scrollbar.dragClass)),r||(r=v("div",t.params.scrollbar.dragClass),i.append(r))),Object.assign(e,{el:i,dragEl:r}),a.draggable&&t.params.scrollbar.el&&t.scrollbar.el&&C("on"),i&&i.classList[t.enabled?"remove":"add"](...n(t.params.scrollbar.lockClass))}function L(){const e=t.params.scrollbar,s=t.scrollbar.el;s&&s.classList.remove(...n(t.isHorizontal()?e.horizontalClass:e.verticalClass)),t.params.scrollbar.el&&t.scrollbar.el&&C("off")}s({scrollbar:{el:null,dragSize:"auto",hide:!1,draggable:!1,snapOnRelease:!0,lockClass:"swiper-scrollbar-lock",dragClass:"swiper-scrollbar-drag",scrollbarDisabledClass:"swiper-scrollbar-disabled",horizontalClass:"swiper-scrollbar-horizontal",verticalClass:"swiper-scrollbar-vertical"}}),t.scrollbar={el:null,dragEl:null},i("changeDirection",(()=>{if(!t.scrollbar||!t.scrollbar.el)return;const e=t.params.scrollbar;let{el:s}=t.scrollbar;s=T(s),s.forEach((s=>{s.classList.remove(e.horizontalClass,e.verticalClass),s.classList.add(t.isHorizontal()?e.horizontalClass:e.verticalClass)}))})),i("init",(()=>{!1===t.params.scrollbar.enabled?I():(P(),b(),g())})),i("update resize observerUpdate lock unlock changeDirection",(()=>{b()})),i("setTranslate",(()=>{g()})),i("setTransition",((e,s)=>{!function(e){t.params.scrollbar.el&&t.scrollbar.el&&(t.scrollbar.dragEl.style.transitionDuration=`${e}ms`)}(s)})),i("enable disable",(()=>{const{el:e}=t.scrollbar;e&&e.classList[t.enabled?"remove":"add"](...n(t.params.scrollbar.lockClass))})),i("destroy",(()=>{L()}));const I=()=>{t.el.classList.add(...n(t.params.scrollbar.scrollbarDisabledClass)),t.scrollbar.el&&t.scrollbar.el.classList.add(...n(t.params.scrollbar.scrollbarDisabledClass)),L()};Object.assign(t.scrollbar,{enable:()=>{t.el.classList.remove(...n(t.params.scrollbar.scrollbarDisabledClass)),t.scrollbar.el&&t.scrollbar.el.classList.remove(...n(t.params.scrollbar.scrollbarDisabledClass)),P(),b(),g()},disable:I,updateSize:b,setTranslate:g,init:P,destroy:L})},function(e){let{swiper:t,extendParams:s,on:a}=e;s({parallax:{enabled:!1}});const i="[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]",r=(e,s)=>{const{rtl:a}=t,i=a?-1:1,r=e.getAttribute("data-swiper-parallax")||"0";let n=e.getAttribute("data-swiper-parallax-x"),l=e.getAttribute("data-swiper-parallax-y");const o=e.getAttribute("data-swiper-parallax-scale"),d=e.getAttribute("data-swiper-parallax-opacity"),c=e.getAttribute("data-swiper-parallax-rotate");if(n||l?(n=n||"0",l=l||"0"):t.isHorizontal()?(n=r,l="0"):(l=r,n="0"),n=n.indexOf("%")>=0?parseInt(n,10)*s*i+"%":n*s*i+"px",l=l.indexOf("%")>=0?parseInt(l,10)*s+"%":l*s+"px",null!=d){const t=d-(d-1)*(1-Math.abs(s));e.style.opacity=t}let p=`translate3d(${n}, ${l}, 0px)`;if(null!=o){p+=` scale(${o-(o-1)*(1-Math.abs(s))})`}if(c&&null!=c){p+=` rotate(${c*s*-1}deg)`}e.style.transform=p},n=()=>{const{el:e,slides:s,progress:a,snapGrid:n,isElement:l}=t,o=f(e,i);t.isElement&&o.push(...f(t.hostEl,i)),o.forEach((e=>{r(e,a)})),s.forEach(((e,s)=>{let l=e.progress;t.params.slidesPerGroup>1&&"auto"!==t.params.slidesPerView&&(l+=Math.ceil(s/2)-a*(n.length-1)),l=Math.min(Math.max(l,-1),1),e.querySelectorAll(`${i}, [data-swiper-parallax-rotate]`).forEach((e=>{r(e,l)}))}))};a("beforeInit",(()=>{t.params.parallax.enabled&&(t.params.watchSlidesProgress=!0,t.originalParams.watchSlidesProgress=!0)})),a("init",(()=>{t.params.parallax.enabled&&n()})),a("setTranslate",(()=>{t.params.parallax.enabled&&n()})),a("setTransition",((e,s)=>{t.params.parallax.enabled&&function(e){void 0===e&&(e=t.params.speed);const{el:s,hostEl:a}=t,r=[...s.querySelectorAll(i)];t.isElement&&r.push(...a.querySelectorAll(i)),r.forEach((t=>{let s=parseInt(t.getAttribute("data-swiper-parallax-duration"),10)||e;0===e&&(s=0),t.style.transitionDuration=`${s}ms`}))}(s)}))},function(e){let{swiper:t,extendParams:s,on:a,emit:i}=e;const n=r();s({zoom:{enabled:!1,limitToOriginalSize:!1,maxRatio:3,minRatio:1,toggle:!0,containerClass:"swiper-zoom-container",zoomedSlideClass:"swiper-slide-zoomed"}}),t.zoom={enabled:!1};let l,o,c=1,p=!1;const u=[],m={originX:0,originY:0,slideEl:void 0,slideWidth:void 0,slideHeight:void 0,imageEl:void 0,imageWrapEl:void 0,maxRatio:3},h={isTouched:void 0,isMoved:void 0,currentX:void 0,currentY:void 0,minX:void 0,minY:void 0,maxX:void 0,maxY:void 0,width:void 0,height:void 0,startX:void 0,startY:void 0,touchesStart:{},touchesCurrent:{}},g={x:void 0,y:void 0,prevPositionX:void 0,prevPositionY:void 0,prevTime:void 0};let v,b=1;function y(){if(u.length<2)return 1;const e=u[0].pageX,t=u[0].pageY,s=u[1].pageX,a=u[1].pageY;return Math.sqrt((s-e)**2+(a-t)**2)}function x(){const e=t.params.zoom,s=m.imageWrapEl.getAttribute("data-swiper-zoom")||e.maxRatio;if(e.limitToOriginalSize&&m.imageEl&&m.imageEl.naturalWidth){const e=m.imageEl.naturalWidth/m.imageEl.offsetWidth;return Math.min(e,s)}return s}function S(e){const s=t.isElement?"swiper-slide":`.${t.params.slideClass}`;return!!e.target.matches(s)||t.slides.filter((t=>t.contains(e.target))).length>0}function T(e){if("mouse"===e.pointerType&&u.splice(0,u.length),!S(e))return;const s=t.params.zoom;if(l=!1,o=!1,u.push(e),!(u.length<2)){if(l=!0,m.scaleStart=y(),!m.slideEl){m.slideEl=e.target.closest(`.${t.params.slideClass}, swiper-slide`),m.slideEl||(m.slideEl=t.slides[t.activeIndex]);let a=m.slideEl.querySelector(`.${s.containerClass}`);if(a&&(a=a.querySelectorAll("picture, img, svg, canvas, .swiper-zoom-target")[0]),m.imageEl=a,m.imageWrapEl=a?E(m.imageEl,`.${s.containerClass}`)[0]:void 0,!m.imageWrapEl)return void(m.imageEl=void 0);m.maxRatio=x()}if(m.imageEl){const[e,t]=function(){if(u.length<2)return{x:null,y:null};const e=m.imageEl.getBoundingClientRect();return[(u[0].pageX+(u[1].pageX-u[0].pageX)/2-e.x-n.scrollX)/c,(u[0].pageY+(u[1].pageY-u[0].pageY)/2-e.y-n.scrollY)/c]}();m.originX=e,m.originY=t,m.imageEl.style.transitionDuration="0ms"}p=!0}}function M(e){if(!S(e))return;const s=t.params.zoom,a=t.zoom,i=u.findIndex((t=>t.pointerId===e.pointerId));i>=0&&(u[i]=e),u.length<2||(o=!0,m.scaleMove=y(),m.imageEl&&(a.scale=m.scaleMove/m.scaleStart*c,a.scale>m.maxRatio&&(a.scale=m.maxRatio-1+(a.scale-m.maxRatio+1)**.5),a.scalet.pointerId===e.pointerId));i>=0&&u.splice(i,1),l&&o&&(l=!1,o=!1,m.imageEl&&(a.scale=Math.max(Math.min(a.scale,m.maxRatio),s.minRatio),m.imageEl.style.transitionDuration=`${t.params.speed}ms`,m.imageEl.style.transform=`translate3d(0,0,0) scale(${a.scale})`,c=a.scale,p=!1,a.scale>1&&m.slideEl?m.slideEl.classList.add(`${s.zoomedSlideClass}`):a.scale<=1&&m.slideEl&&m.slideEl.classList.remove(`${s.zoomedSlideClass}`),1===a.scale&&(m.originX=0,m.originY=0,m.slideEl=void 0)))}function P(){t.touchEventsData.preventTouchMoveFromPointerMove=!1}function L(e){if(!S(e)||!function(e){const s=`.${t.params.zoom.containerClass}`;return!!e.target.matches(s)||[...t.hostEl.querySelectorAll(s)].filter((t=>t.contains(e.target))).length>0}(e))return;const s=t.zoom;if(!m.imageEl)return;if(!h.isTouched||!m.slideEl)return;h.isMoved||(h.width=m.imageEl.offsetWidth||m.imageEl.clientWidth,h.height=m.imageEl.offsetHeight||m.imageEl.clientHeight,h.startX=d(m.imageWrapEl,"x")||0,h.startY=d(m.imageWrapEl,"y")||0,m.slideWidth=m.slideEl.offsetWidth,m.slideHeight=m.slideEl.offsetHeight,m.imageWrapEl.style.transitionDuration="0ms");const a=h.width*s.scale,i=h.height*s.scale;h.minX=Math.min(m.slideWidth/2-a/2,0),h.maxX=-h.minX,h.minY=Math.min(m.slideHeight/2-i/2,0),h.maxY=-h.minY,h.touchesCurrent.x=u.length>0?u[0].pageX:e.pageX,h.touchesCurrent.y=u.length>0?u[0].pageY:e.pageY;if(Math.max(Math.abs(h.touchesCurrent.x-h.touchesStart.x),Math.abs(h.touchesCurrent.y-h.touchesStart.y))>5&&(t.allowClick=!1),!h.isMoved&&!p){if(t.isHorizontal()&&(Math.floor(h.minX)===Math.floor(h.startX)&&h.touchesCurrent.xh.touchesStart.x))return h.isTouched=!1,void P();if(!t.isHorizontal()&&(Math.floor(h.minY)===Math.floor(h.startY)&&h.touchesCurrent.yh.touchesStart.y))return h.isTouched=!1,void P()}e.cancelable&&e.preventDefault(),e.stopPropagation(),clearTimeout(v),t.touchEventsData.preventTouchMoveFromPointerMove=!0,v=setTimeout((()=>{t.destroyed||P()})),h.isMoved=!0;const r=(s.scale-c)/(m.maxRatio-t.params.zoom.minRatio),{originX:n,originY:l}=m;h.currentX=h.touchesCurrent.x-h.touchesStart.x+h.startX+r*(h.width-2*n),h.currentY=h.touchesCurrent.y-h.touchesStart.y+h.startY+r*(h.height-2*l),h.currentXh.maxX&&(h.currentX=h.maxX-1+(h.currentX-h.maxX+1)**.8),h.currentYh.maxY&&(h.currentY=h.maxY-1+(h.currentY-h.maxY+1)**.8),g.prevPositionX||(g.prevPositionX=h.touchesCurrent.x),g.prevPositionY||(g.prevPositionY=h.touchesCurrent.y),g.prevTime||(g.prevTime=Date.now()),g.x=(h.touchesCurrent.x-g.prevPositionX)/(Date.now()-g.prevTime)/2,g.y=(h.touchesCurrent.y-g.prevPositionY)/(Date.now()-g.prevTime)/2,Math.abs(h.touchesCurrent.x-g.prevPositionX)<2&&(g.x=0),Math.abs(h.touchesCurrent.y-g.prevPositionY)<2&&(g.y=0),g.prevPositionX=h.touchesCurrent.x,g.prevPositionY=h.touchesCurrent.y,g.prevTime=Date.now(),m.imageWrapEl.style.transform=`translate3d(${h.currentX}px, ${h.currentY}px,0)`}function I(){const e=t.zoom;m.slideEl&&t.activeIndex!==t.slides.indexOf(m.slideEl)&&(m.imageEl&&(m.imageEl.style.transform="translate3d(0,0,0) scale(1)"),m.imageWrapEl&&(m.imageWrapEl.style.transform="translate3d(0,0,0)"),m.slideEl.classList.remove(`${t.params.zoom.zoomedSlideClass}`),e.scale=1,c=1,m.slideEl=void 0,m.imageEl=void 0,m.imageWrapEl=void 0,m.originX=0,m.originY=0)}function z(e){const s=t.zoom,a=t.params.zoom;if(!m.slideEl){e&&e.target&&(m.slideEl=e.target.closest(`.${t.params.slideClass}, swiper-slide`)),m.slideEl||(t.params.virtual&&t.params.virtual.enabled&&t.virtual?m.slideEl=f(t.slidesEl,`.${t.params.slideActiveClass}`)[0]:m.slideEl=t.slides[t.activeIndex]);let s=m.slideEl.querySelector(`.${a.containerClass}`);s&&(s=s.querySelectorAll("picture, img, svg, canvas, .swiper-zoom-target")[0]),m.imageEl=s,m.imageWrapEl=s?E(m.imageEl,`.${a.containerClass}`)[0]:void 0}if(!m.imageEl||!m.imageWrapEl)return;let i,r,l,o,d,p,u,g,v,b,y,S,T,M,C,P,L,I;t.params.cssMode&&(t.wrapperEl.style.overflow="hidden",t.wrapperEl.style.touchAction="none"),m.slideEl.classList.add(`${a.zoomedSlideClass}`),void 0===h.touchesStart.x&&e?(i=e.pageX,r=e.pageY):(i=h.touchesStart.x,r=h.touchesStart.y);const z="number"==typeof e?e:null;1===c&&z&&(i=void 0,r=void 0,h.touchesStart.x=void 0,h.touchesStart.y=void 0);const A=x();s.scale=z||A,c=z||A,!e||1===c&&z?(u=0,g=0):(L=m.slideEl.offsetWidth,I=m.slideEl.offsetHeight,l=w(m.slideEl).left+n.scrollX,o=w(m.slideEl).top+n.scrollY,d=l+L/2-i,p=o+I/2-r,v=m.imageEl.offsetWidth||m.imageEl.clientWidth,b=m.imageEl.offsetHeight||m.imageEl.clientHeight,y=v*s.scale,S=b*s.scale,T=Math.min(L/2-y/2,0),M=Math.min(I/2-S/2,0),C=-T,P=-M,u=d*s.scale,g=p*s.scale,uC&&(u=C),gP&&(g=P)),z&&1===s.scale&&(m.originX=0,m.originY=0),m.imageWrapEl.style.transitionDuration="300ms",m.imageWrapEl.style.transform=`translate3d(${u}px, ${g}px,0)`,m.imageEl.style.transitionDuration="300ms",m.imageEl.style.transform=`translate3d(0,0,0) scale(${s.scale})`}function A(){const e=t.zoom,s=t.params.zoom;if(!m.slideEl){t.params.virtual&&t.params.virtual.enabled&&t.virtual?m.slideEl=f(t.slidesEl,`.${t.params.slideActiveClass}`)[0]:m.slideEl=t.slides[t.activeIndex];let e=m.slideEl.querySelector(`.${s.containerClass}`);e&&(e=e.querySelectorAll("picture, img, svg, canvas, .swiper-zoom-target")[0]),m.imageEl=e,m.imageWrapEl=e?E(m.imageEl,`.${s.containerClass}`)[0]:void 0}m.imageEl&&m.imageWrapEl&&(t.params.cssMode&&(t.wrapperEl.style.overflow="",t.wrapperEl.style.touchAction=""),e.scale=1,c=1,h.touchesStart.x=void 0,h.touchesStart.y=void 0,m.imageWrapEl.style.transitionDuration="300ms",m.imageWrapEl.style.transform="translate3d(0,0,0)",m.imageEl.style.transitionDuration="300ms",m.imageEl.style.transform="translate3d(0,0,0) scale(1)",m.slideEl.classList.remove(`${s.zoomedSlideClass}`),m.slideEl=void 0,m.originX=0,m.originY=0)}function $(e){const s=t.zoom;s.scale&&1!==s.scale?A():z(e)}function k(){return{passiveListener:!!t.params.passiveListeners&&{passive:!0,capture:!1},activeListenerWithCapture:!t.params.passiveListeners||{passive:!1,capture:!0}}}function O(){const e=t.zoom;if(e.enabled)return;e.enabled=!0;const{passiveListener:s,activeListenerWithCapture:a}=k();t.wrapperEl.addEventListener("pointerdown",T,s),t.wrapperEl.addEventListener("pointermove",M,a),["pointerup","pointercancel","pointerout"].forEach((e=>{t.wrapperEl.addEventListener(e,C,s)})),t.wrapperEl.addEventListener("pointermove",L,a)}function D(){const e=t.zoom;if(!e.enabled)return;e.enabled=!1;const{passiveListener:s,activeListenerWithCapture:a}=k();t.wrapperEl.removeEventListener("pointerdown",T,s),t.wrapperEl.removeEventListener("pointermove",M,a),["pointerup","pointercancel","pointerout"].forEach((e=>{t.wrapperEl.removeEventListener(e,C,s)})),t.wrapperEl.removeEventListener("pointermove",L,a)}Object.defineProperty(t.zoom,"scale",{get:()=>b,set(e){if(b!==e){const t=m.imageEl,s=m.slideEl;i("zoomChange",e,t,s)}b=e}}),a("init",(()=>{t.params.zoom.enabled&&O()})),a("destroy",(()=>{D()})),a("touchStart",((e,s)=>{t.zoom.enabled&&function(e){const s=t.device;if(!m.imageEl)return;if(h.isTouched)return;s.android&&e.cancelable&&e.preventDefault(),h.isTouched=!0;const a=u.length>0?u[0]:e;h.touchesStart.x=a.pageX,h.touchesStart.y=a.pageY}(s)})),a("touchEnd",((e,s)=>{t.zoom.enabled&&function(){const e=t.zoom;if(!m.imageEl)return;if(!h.isTouched||!h.isMoved)return h.isTouched=!1,void(h.isMoved=!1);h.isTouched=!1,h.isMoved=!1;let s=300,a=300;const i=g.x*s,r=h.currentX+i,n=g.y*a,l=h.currentY+n;0!==g.x&&(s=Math.abs((r-h.currentX)/g.x)),0!==g.y&&(a=Math.abs((l-h.currentY)/g.y));const o=Math.max(s,a);h.currentX=r,h.currentY=l;const d=h.width*e.scale,c=h.height*e.scale;h.minX=Math.min(m.slideWidth/2-d/2,0),h.maxX=-h.minX,h.minY=Math.min(m.slideHeight/2-c/2,0),h.maxY=-h.minY,h.currentX=Math.max(Math.min(h.currentX,h.maxX),h.minX),h.currentY=Math.max(Math.min(h.currentY,h.maxY),h.minY),m.imageWrapEl.style.transitionDuration=`${o}ms`,m.imageWrapEl.style.transform=`translate3d(${h.currentX}px, ${h.currentY}px,0)`}()})),a("doubleTap",((e,s)=>{!t.animating&&t.params.zoom.enabled&&t.zoom.enabled&&t.params.zoom.toggle&&$(s)})),a("transitionEnd",(()=>{t.zoom.enabled&&t.params.zoom.enabled&&I()})),a("slideChange",(()=>{t.zoom.enabled&&t.params.zoom.enabled&&t.params.cssMode&&I()})),Object.assign(t.zoom,{enable:O,disable:D,in:z,out:A,toggle:$})},function(e){let{swiper:t,extendParams:s,on:a}=e;function i(e,t){const s=function(){let e,t,s;return(a,i)=>{for(t=-1,e=a.length;e-t>1;)s=e+t>>1,a[s]<=i?t=s:e=s;return e}}();let a,i;return this.x=e,this.y=t,this.lastIndex=e.length-1,this.interpolate=function(e){return e?(i=s(this.x,e),a=i-1,(e-this.x[a])*(this.y[i]-this.y[a])/(this.x[i]-this.x[a])+this.y[a]):0},this}function r(){t.controller.control&&t.controller.spline&&(t.controller.spline=void 0,delete t.controller.spline)}s({controller:{control:void 0,inverse:!1,by:"slide"}}),t.controller={control:void 0},a("beforeInit",(()=>{if("undefined"!=typeof window&&("string"==typeof t.params.controller.control||t.params.controller.control instanceof HTMLElement)){("string"==typeof t.params.controller.control?[...document.querySelectorAll(t.params.controller.control)]:[t.params.controller.control]).forEach((e=>{if(t.controller.control||(t.controller.control=[]),e&&e.swiper)t.controller.control.push(e.swiper);else if(e){const s=`${t.params.eventsPrefix}init`,a=i=>{t.controller.control.push(i.detail[0]),t.update(),e.removeEventListener(s,a)};e.addEventListener(s,a)}}))}else t.controller.control=t.params.controller.control})),a("update",(()=>{r()})),a("resize",(()=>{r()})),a("observerUpdate",(()=>{r()})),a("setTranslate",((e,s,a)=>{t.controller.control&&!t.controller.control.destroyed&&t.controller.setTranslate(s,a)})),a("setTransition",((e,s,a)=>{t.controller.control&&!t.controller.control.destroyed&&t.controller.setTransition(s,a)})),Object.assign(t.controller,{setTranslate:function(e,s){const a=t.controller.control;let r,n;const l=t.constructor;function o(e){if(e.destroyed)return;const s=t.rtlTranslate?-t.translate:t.translate;"slide"===t.params.controller.by&&(!function(e){t.controller.spline=t.params.loop?new i(t.slidesGrid,e.slidesGrid):new i(t.snapGrid,e.snapGrid)}(e),n=-t.controller.spline.interpolate(-s)),n&&"container"!==t.params.controller.by||(r=(e.maxTranslate()-e.minTranslate())/(t.maxTranslate()-t.minTranslate()),!Number.isNaN(r)&&Number.isFinite(r)||(r=1),n=(s-t.minTranslate())*r+e.minTranslate()),t.params.controller.inverse&&(n=e.maxTranslate()-n),e.updateProgress(n),e.setTranslate(n,t),e.updateActiveIndex(),e.updateSlidesClasses()}if(Array.isArray(a))for(let e=0;e{s.updateAutoHeight()})),x(s.wrapperEl,(()=>{i&&s.transitionEnd()}))))}if(Array.isArray(i))for(r=0;r{e.setAttribute("tabIndex","0")}))}function p(e){(e=T(e)).forEach((e=>{e.setAttribute("tabIndex","-1")}))}function u(e,t){(e=T(e)).forEach((e=>{e.setAttribute("role",t)}))}function m(e,t){(e=T(e)).forEach((e=>{e.setAttribute("aria-roledescription",t)}))}function h(e,t){(e=T(e)).forEach((e=>{e.setAttribute("aria-label",t)}))}function f(e){(e=T(e)).forEach((e=>{e.setAttribute("aria-disabled",!0)}))}function g(e){(e=T(e)).forEach((e=>{e.setAttribute("aria-disabled",!1)}))}function w(e){if(13!==e.keyCode&&32!==e.keyCode)return;const s=t.params.a11y,a=e.target;if(!t.pagination||!t.pagination.el||a!==t.pagination.el&&!t.pagination.el.contains(e.target)||e.target.matches(ne(t.params.pagination.bulletClass))){if(t.navigation&&t.navigation.prevEl&&t.navigation.nextEl){const e=T(t.navigation.prevEl);T(t.navigation.nextEl).includes(a)&&(t.isEnd&&!t.params.loop||t.slideNext(),t.isEnd?d(s.lastSlideMessage):d(s.nextSlideMessage)),e.includes(a)&&(t.isBeginning&&!t.params.loop||t.slidePrev(),t.isBeginning?d(s.firstSlideMessage):d(s.prevSlideMessage))}t.pagination&&a.matches(ne(t.params.pagination.bulletClass))&&a.click()}}function b(){return t.pagination&&t.pagination.bullets&&t.pagination.bullets.length}function E(){return b()&&t.params.pagination.clickable}const x=(e,t,s)=>{c(e),"BUTTON"!==e.tagName&&(u(e,"button"),e.addEventListener("keydown",w)),h(e,s),function(e,t){(e=T(e)).forEach((e=>{e.setAttribute("aria-controls",t)}))}(e,t)},S=e=>{n&&n!==e.target&&!n.contains(e.target)&&(r=!0),t.a11y.clicked=!0},M=()=>{r=!1,requestAnimationFrame((()=>{requestAnimationFrame((()=>{t.destroyed||(t.a11y.clicked=!1)}))}))},C=e=>{o=(new Date).getTime()},P=e=>{if(t.a11y.clicked||!t.params.a11y.scrollOnFocus)return;if((new Date).getTime()-o<100)return;const s=e.target.closest(`.${t.params.slideClass}, swiper-slide`);if(!s||!t.slides.includes(s))return;n=s;const a=t.slides.indexOf(s)===t.activeIndex,i=t.params.watchSlidesProgress&&t.visibleSlides&&t.visibleSlides.includes(s);a||i||e.sourceCapabilities&&e.sourceCapabilities.firesTouchEvents||(t.isHorizontal()?t.el.scrollLeft=0:t.el.scrollTop=0,requestAnimationFrame((()=>{r||(t.params.loop?t.slideToLoop(parseInt(s.getAttribute("data-swiper-slide-index")),0):t.slideTo(t.slides.indexOf(s),0),r=!1)})))},L=()=>{const e=t.params.a11y;e.itemRoleDescriptionMessage&&m(t.slides,e.itemRoleDescriptionMessage),e.slideRole&&u(t.slides,e.slideRole);const s=t.slides.length;e.slideLabelMessage&&t.slides.forEach(((a,i)=>{const r=t.params.loop?parseInt(a.getAttribute("data-swiper-slide-index"),10):i;h(a,e.slideLabelMessage.replace(/\{\{index\}\}/,r+1).replace(/\{\{slidesLength\}\}/,s))}))},I=()=>{const e=t.params.a11y;t.el.append(l);const s=t.el;e.containerRoleDescriptionMessage&&m(s,e.containerRoleDescriptionMessage),e.containerMessage&&h(s,e.containerMessage),e.containerRole&&u(s,e.containerRole);const i=t.wrapperEl,r=e.id||i.getAttribute("id")||`swiper-wrapper-${n=16,void 0===n&&(n=16),"x".repeat(n).replace(/x/g,(()=>Math.round(16*Math.random()).toString(16)))}`;var n;const o=t.params.autoplay&&t.params.autoplay.enabled?"off":"polite";var d;d=r,T(i).forEach((e=>{e.setAttribute("id",d)})),function(e,t){(e=T(e)).forEach((e=>{e.setAttribute("aria-live",t)}))}(i,o),L();let{nextEl:c,prevEl:p}=t.navigation?t.navigation:{};if(c=T(c),p=T(p),c&&c.forEach((t=>x(t,r,e.nextSlideMessage))),p&&p.forEach((t=>x(t,r,e.prevSlideMessage))),E()){T(t.pagination.el).forEach((e=>{e.addEventListener("keydown",w)}))}a().addEventListener("visibilitychange",C),t.el.addEventListener("focus",P,!0),t.el.addEventListener("focus",P,!0),t.el.addEventListener("pointerdown",S,!0),t.el.addEventListener("pointerup",M,!0)};i("beforeInit",(()=>{l=v("span",t.params.a11y.notificationClass),l.setAttribute("aria-live","assertive"),l.setAttribute("aria-atomic","true")})),i("afterInit",(()=>{t.params.a11y.enabled&&I()})),i("slidesLengthChange snapGridLengthChange slidesGridLengthChange",(()=>{t.params.a11y.enabled&&L()})),i("fromEdge toEdge afterInit lock unlock",(()=>{t.params.a11y.enabled&&function(){if(t.params.loop||t.params.rewind||!t.navigation)return;const{nextEl:e,prevEl:s}=t.navigation;s&&(t.isBeginning?(f(s),p(s)):(g(s),c(s))),e&&(t.isEnd?(f(e),p(e)):(g(e),c(e)))}()})),i("paginationUpdate",(()=>{t.params.a11y.enabled&&function(){const e=t.params.a11y;b()&&t.pagination.bullets.forEach((s=>{t.params.pagination.clickable&&(c(s),t.params.pagination.renderBullet||(u(s,"button"),h(s,e.paginationBulletMessage.replace(/\{\{index\}\}/,y(s)+1)))),s.matches(ne(t.params.pagination.bulletActiveClass))?s.setAttribute("aria-current","true"):s.removeAttribute("aria-current")}))}()})),i("destroy",(()=>{t.params.a11y.enabled&&function(){l&&l.remove();let{nextEl:e,prevEl:s}=t.navigation?t.navigation:{};e=T(e),s=T(s),e&&e.forEach((e=>e.removeEventListener("keydown",w))),s&&s.forEach((e=>e.removeEventListener("keydown",w))),E()&&T(t.pagination.el).forEach((e=>{e.removeEventListener("keydown",w)}));a().removeEventListener("visibilitychange",C),t.el&&"string"!=typeof t.el&&(t.el.removeEventListener("focus",P,!0),t.el.removeEventListener("pointerdown",S,!0),t.el.removeEventListener("pointerup",M,!0))}()}))},function(e){let{swiper:t,extendParams:s,on:a}=e;s({history:{enabled:!1,root:"",replaceState:!1,key:"slides",keepQuery:!1}});let i=!1,n={};const l=e=>e.toString().replace(/\s+/g,"-").replace(/[^\w-]+/g,"").replace(/--+/g,"-").replace(/^-+/,"").replace(/-+$/,""),o=e=>{const t=r();let s;s=e?new URL(e):t.location;const a=s.pathname.slice(1).split("/").filter((e=>""!==e)),i=a.length;return{key:a[i-2],value:a[i-1]}},d=(e,s)=>{const a=r();if(!i||!t.params.history.enabled)return;let n;n=t.params.url?new URL(t.params.url):a.location;const o=t.virtual&&t.params.virtual.enabled?t.slidesEl.querySelector(`[data-swiper-slide-index="${s}"]`):t.slides[s];let d=l(o.getAttribute("data-history"));if(t.params.history.root.length>0){let s=t.params.history.root;"/"===s[s.length-1]&&(s=s.slice(0,s.length-1)),d=`${s}/${e?`${e}/`:""}${d}`}else n.pathname.includes(e)||(d=`${e?`${e}/`:""}${d}`);t.params.history.keepQuery&&(d+=n.search);const c=a.history.state;c&&c.value===d||(t.params.history.replaceState?a.history.replaceState({value:d},null,d):a.history.pushState({value:d},null,d))},c=(e,s,a)=>{if(s)for(let i=0,r=t.slides.length;i{n=o(t.params.url),c(t.params.speed,n.value,!1)};a("init",(()=>{t.params.history.enabled&&(()=>{const e=r();if(t.params.history){if(!e.history||!e.history.pushState)return t.params.history.enabled=!1,void(t.params.hashNavigation.enabled=!0);i=!0,n=o(t.params.url),n.key||n.value?(c(0,n.value,t.params.runCallbacksOnInit),t.params.history.replaceState||e.addEventListener("popstate",p)):t.params.history.replaceState||e.addEventListener("popstate",p)}})()})),a("destroy",(()=>{t.params.history.enabled&&(()=>{const e=r();t.params.history.replaceState||e.removeEventListener("popstate",p)})()})),a("transitionEnd _freeModeNoMomentumRelease",(()=>{i&&d(t.params.history.key,t.activeIndex)})),a("slideChange",(()=>{i&&t.params.cssMode&&d(t.params.history.key,t.activeIndex)}))},function(e){let{swiper:t,extendParams:s,emit:i,on:n}=e,l=!1;const o=a(),d=r();s({hashNavigation:{enabled:!1,replaceState:!1,watchState:!1,getSlideIndex(e,s){if(t.virtual&&t.params.virtual.enabled){const e=t.slides.filter((e=>e.getAttribute("data-hash")===s))[0];if(!e)return 0;return parseInt(e.getAttribute("data-swiper-slide-index"),10)}return t.getSlideIndex(f(t.slidesEl,`.${t.params.slideClass}[data-hash="${s}"], swiper-slide[data-hash="${s}"]`)[0])}}});const c=()=>{i("hashChange");const e=o.location.hash.replace("#",""),s=t.virtual&&t.params.virtual.enabled?t.slidesEl.querySelector(`[data-swiper-slide-index="${t.activeIndex}"]`):t.slides[t.activeIndex];if(e!==(s?s.getAttribute("data-hash"):"")){const s=t.params.hashNavigation.getSlideIndex(t,e);if(void 0===s||Number.isNaN(s))return;t.slideTo(s)}},p=()=>{if(!l||!t.params.hashNavigation.enabled)return;const e=t.virtual&&t.params.virtual.enabled?t.slidesEl.querySelector(`[data-swiper-slide-index="${t.activeIndex}"]`):t.slides[t.activeIndex],s=e?e.getAttribute("data-hash")||e.getAttribute("data-history"):"";t.params.hashNavigation.replaceState&&d.history&&d.history.replaceState?(d.history.replaceState(null,null,`#${s}`||""),i("hashSet")):(o.location.hash=s||"",i("hashSet"))};n("init",(()=>{t.params.hashNavigation.enabled&&(()=>{if(!t.params.hashNavigation.enabled||t.params.history&&t.params.history.enabled)return;l=!0;const e=o.location.hash.replace("#","");if(e){const s=0,a=t.params.hashNavigation.getSlideIndex(t,e);t.slideTo(a||0,s,t.params.runCallbacksOnInit,!0)}t.params.hashNavigation.watchState&&d.addEventListener("hashchange",c)})()})),n("destroy",(()=>{t.params.hashNavigation.enabled&&t.params.hashNavigation.watchState&&d.removeEventListener("hashchange",c)})),n("transitionEnd _freeModeNoMomentumRelease",(()=>{l&&p()})),n("slideChange",(()=>{l&&t.params.cssMode&&p()}))},function(e){let t,s,{swiper:i,extendParams:r,on:n,emit:l,params:o}=e;i.autoplay={running:!1,paused:!1,timeLeft:0},r({autoplay:{enabled:!1,delay:3e3,waitForTransition:!0,disableOnInteraction:!1,stopOnLastSlide:!1,reverseDirection:!1,pauseOnMouseEnter:!1}});let d,c,p,u,m,h,f,g,v=o&&o.autoplay?o.autoplay.delay:3e3,w=o&&o.autoplay?o.autoplay.delay:3e3,b=(new Date).getTime();function y(e){i&&!i.destroyed&&i.wrapperEl&&e.target===i.wrapperEl&&(i.wrapperEl.removeEventListener("transitionend",y),g||e.detail&&e.detail.bySwiperTouchMove||C())}const E=()=>{if(i.destroyed||!i.autoplay.running)return;i.autoplay.paused?c=!0:c&&(w=d,c=!1);const e=i.autoplay.paused?d:b+w-(new Date).getTime();i.autoplay.timeLeft=e,l("autoplayTimeLeft",e,e/v),s=requestAnimationFrame((()=>{E()}))},x=e=>{if(i.destroyed||!i.autoplay.running)return;cancelAnimationFrame(s),E();let a=void 0===e?i.params.autoplay.delay:e;v=i.params.autoplay.delay,w=i.params.autoplay.delay;const r=(()=>{let e;if(e=i.virtual&&i.params.virtual.enabled?i.slides.filter((e=>e.classList.contains("swiper-slide-active")))[0]:i.slides[i.activeIndex],!e)return;return parseInt(e.getAttribute("data-swiper-autoplay"),10)})();!Number.isNaN(r)&&r>0&&void 0===e&&(a=r,v=r,w=r),d=a;const n=i.params.speed,o=()=>{i&&!i.destroyed&&(i.params.autoplay.reverseDirection?!i.isBeginning||i.params.loop||i.params.rewind?(i.slidePrev(n,!0,!0),l("autoplay")):i.params.autoplay.stopOnLastSlide||(i.slideTo(i.slides.length-1,n,!0,!0),l("autoplay")):!i.isEnd||i.params.loop||i.params.rewind?(i.slideNext(n,!0,!0),l("autoplay")):i.params.autoplay.stopOnLastSlide||(i.slideTo(0,n,!0,!0),l("autoplay")),i.params.cssMode&&(b=(new Date).getTime(),requestAnimationFrame((()=>{x()}))))};return a>0?(clearTimeout(t),t=setTimeout((()=>{o()}),a)):requestAnimationFrame((()=>{o()})),a},S=()=>{b=(new Date).getTime(),i.autoplay.running=!0,x(),l("autoplayStart")},T=()=>{i.autoplay.running=!1,clearTimeout(t),cancelAnimationFrame(s),l("autoplayStop")},M=(e,s)=>{if(i.destroyed||!i.autoplay.running)return;clearTimeout(t),e||(f=!0);const a=()=>{l("autoplayPause"),i.params.autoplay.waitForTransition?i.wrapperEl.addEventListener("transitionend",y):C()};if(i.autoplay.paused=!0,s)return h&&(d=i.params.autoplay.delay),h=!1,void a();const r=d||i.params.autoplay.delay;d=r-((new Date).getTime()-b),i.isEnd&&d<0&&!i.params.loop||(d<0&&(d=0),a())},C=()=>{i.isEnd&&d<0&&!i.params.loop||i.destroyed||!i.autoplay.running||(b=(new Date).getTime(),f?(f=!1,x(d)):x(),i.autoplay.paused=!1,l("autoplayResume"))},P=()=>{if(i.destroyed||!i.autoplay.running)return;const e=a();"hidden"===e.visibilityState&&(f=!0,M(!0)),"visible"===e.visibilityState&&C()},L=e=>{"mouse"===e.pointerType&&(f=!0,g=!0,i.animating||i.autoplay.paused||M(!0))},I=e=>{"mouse"===e.pointerType&&(g=!1,i.autoplay.paused&&C())};n("init",(()=>{i.params.autoplay.enabled&&(i.params.autoplay.pauseOnMouseEnter&&(i.el.addEventListener("pointerenter",L),i.el.addEventListener("pointerleave",I)),a().addEventListener("visibilitychange",P),S())})),n("destroy",(()=>{i.el&&"string"!=typeof i.el&&(i.el.removeEventListener("pointerenter",L),i.el.removeEventListener("pointerleave",I)),a().removeEventListener("visibilitychange",P),i.autoplay.running&&T()})),n("_freeModeStaticRelease",(()=>{(u||f)&&C()})),n("_freeModeNoMomentumRelease",(()=>{i.params.autoplay.disableOnInteraction?T():M(!0,!0)})),n("beforeTransitionStart",((e,t,s)=>{!i.destroyed&&i.autoplay.running&&(s||!i.params.autoplay.disableOnInteraction?M(!0,!0):T())})),n("sliderFirstMove",(()=>{!i.destroyed&&i.autoplay.running&&(i.params.autoplay.disableOnInteraction?T():(p=!0,u=!1,f=!1,m=setTimeout((()=>{f=!0,u=!0,M(!0)}),200)))})),n("touchEnd",(()=>{if(!i.destroyed&&i.autoplay.running&&p){if(clearTimeout(m),clearTimeout(t),i.params.autoplay.disableOnInteraction)return u=!1,void(p=!1);u&&i.params.cssMode&&C(),u=!1,p=!1}})),n("slideChange",(()=>{!i.destroyed&&i.autoplay.running&&(h=!0)})),Object.assign(i.autoplay,{start:S,stop:T,pause:M,resume:C})},function(e){let{swiper:t,extendParams:s,on:i}=e;s({thumbs:{swiper:null,multipleActiveThumbs:!0,autoScrollOffset:0,slideThumbActiveClass:"swiper-slide-thumb-active",thumbsContainerClass:"swiper-thumbs"}});let r=!1,n=!1;function l(){const e=t.thumbs.swiper;if(!e||e.destroyed)return;const s=e.clickedIndex,a=e.clickedSlide;if(a&&a.classList.contains(t.params.thumbs.slideThumbActiveClass))return;if(null==s)return;let i;i=e.params.loop?parseInt(e.clickedSlide.getAttribute("data-swiper-slide-index"),10):s,t.params.loop?t.slideToLoop(i):t.slideTo(i)}function o(){const{thumbs:e}=t.params;if(r)return!1;r=!0;const s=t.constructor;if(e.swiper instanceof s)t.thumbs.swiper=e.swiper,Object.assign(t.thumbs.swiper.originalParams,{watchSlidesProgress:!0,slideToClickedSlide:!1}),Object.assign(t.thumbs.swiper.params,{watchSlidesProgress:!0,slideToClickedSlide:!1}),t.thumbs.swiper.update();else if(c(e.swiper)){const a=Object.assign({},e.swiper);Object.assign(a,{watchSlidesProgress:!0,slideToClickedSlide:!1}),t.thumbs.swiper=new s(a),n=!0}return t.thumbs.swiper.el.classList.add(t.params.thumbs.thumbsContainerClass),t.thumbs.swiper.on("tap",l),!0}function d(e){const s=t.thumbs.swiper;if(!s||s.destroyed)return;const a="auto"===s.params.slidesPerView?s.slidesPerViewDynamic():s.params.slidesPerView;let i=1;const r=t.params.thumbs.slideThumbActiveClass;if(t.params.slidesPerView>1&&!t.params.centeredSlides&&(i=t.params.slidesPerView),t.params.thumbs.multipleActiveThumbs||(i=1),i=Math.floor(i),s.slides.forEach((e=>e.classList.remove(r))),s.params.loop||s.params.virtual&&s.params.virtual.enabled)for(let e=0;e{e.classList.add(r)}));else for(let e=0;ee.getAttribute("data-swiper-slide-index")===`${t.realIndex}`))[0];r=s.slides.indexOf(e),o=t.activeIndex>t.previousIndex?"next":"prev"}else r=t.realIndex,o=r>t.previousIndex?"next":"prev";l&&(r+="next"===o?n:-1*n),s.visibleSlidesIndexes&&s.visibleSlidesIndexes.indexOf(r)<0&&(s.params.centeredSlides?r=r>i?r-Math.floor(a/2)+1:r+Math.floor(a/2)-1:r>i&&s.params.slidesPerGroup,s.slideTo(r,e?0:void 0))}}t.thumbs={swiper:null},i("beforeInit",(()=>{const{thumbs:e}=t.params;if(e&&e.swiper)if("string"==typeof e.swiper||e.swiper instanceof HTMLElement){const s=a(),i=()=>{const a="string"==typeof e.swiper?s.querySelector(e.swiper):e.swiper;if(a&&a.swiper)e.swiper=a.swiper,o(),d(!0);else if(a){const s=`${t.params.eventsPrefix}init`,i=r=>{e.swiper=r.detail[0],a.removeEventListener(s,i),o(),d(!0),e.swiper.update(),t.update()};a.addEventListener(s,i)}return a},r=()=>{if(t.destroyed)return;i()||requestAnimationFrame(r)};requestAnimationFrame(r)}else o(),d(!0)})),i("slideChange update resize observerUpdate",(()=>{d()})),i("setTransition",((e,s)=>{const a=t.thumbs.swiper;a&&!a.destroyed&&a.setTransition(s)})),i("beforeDestroy",(()=>{const e=t.thumbs.swiper;e&&!e.destroyed&&n&&e.destroy()})),Object.assign(t.thumbs,{init:o,update:d})},function(e){let{swiper:t,extendParams:s,emit:a,once:i}=e;s({freeMode:{enabled:!1,momentum:!0,momentumRatio:1,momentumBounce:!0,momentumBounceRatio:1,momentumVelocityRatio:1,sticky:!1,minimumVelocity:.02}}),Object.assign(t,{freeMode:{onTouchStart:function(){if(t.params.cssMode)return;const e=t.getTranslate();t.setTranslate(e),t.setTransition(0),t.touchEventsData.velocities.length=0,t.freeMode.onTouchEnd({currentPos:t.rtl?t.translate:-t.translate})},onTouchMove:function(){if(t.params.cssMode)return;const{touchEventsData:e,touches:s}=t;0===e.velocities.length&&e.velocities.push({position:s[t.isHorizontal()?"startX":"startY"],time:e.touchStartTime}),e.velocities.push({position:s[t.isHorizontal()?"currentX":"currentY"],time:o()})},onTouchEnd:function(e){let{currentPos:s}=e;if(t.params.cssMode)return;const{params:r,wrapperEl:n,rtlTranslate:l,snapGrid:d,touchEventsData:c}=t,p=o()-c.touchStartTime;if(s<-t.minTranslate())t.slideTo(t.activeIndex);else if(s>-t.maxTranslate())t.slides.length1){const e=c.velocities.pop(),s=c.velocities.pop(),a=e.position-s.position,i=e.time-s.time;t.velocity=a/i,t.velocity/=2,Math.abs(t.velocity)150||o()-e.time>300)&&(t.velocity=0)}else t.velocity=0;t.velocity*=r.freeMode.momentumVelocityRatio,c.velocities.length=0;let e=1e3*r.freeMode.momentumRatio;const s=t.velocity*e;let p=t.translate+s;l&&(p=-p);let u,m=!1;const h=20*Math.abs(t.velocity)*r.freeMode.momentumBounceRatio;let f;if(pt.minTranslate())r.freeMode.momentumBounce?(p-t.minTranslate()>h&&(p=t.minTranslate()+h),u=t.minTranslate(),m=!0,c.allowMomentumBounce=!0):p=t.minTranslate(),r.loop&&r.centeredSlides&&(f=!0);else if(r.freeMode.sticky){let e;for(let t=0;t-p){e=t;break}p=Math.abs(d[e]-p){t.loopFix()})),0!==t.velocity){if(e=l?Math.abs((-p-t.translate)/t.velocity):Math.abs((p-t.translate)/t.velocity),r.freeMode.sticky){const s=Math.abs((l?-p:p)-t.translate),a=t.slidesSizesGrid[t.activeIndex];e=s{t&&!t.destroyed&&c.allowMomentumBounce&&(a("momentumBounce"),t.setTransition(r.speed),setTimeout((()=>{t.setTranslate(u),x(n,(()=>{t&&!t.destroyed&&t.transitionEnd()}))}),0))}))):t.velocity?(a("_freeModeNoMomentumRelease"),t.updateProgress(p),t.setTransition(e),t.setTranslate(p),t.transitionStart(!0,t.swipeDirection),t.animating||(t.animating=!0,x(n,(()=>{t&&!t.destroyed&&t.transitionEnd()})))):t.updateProgress(p),t.updateActiveIndex(),t.updateSlidesClasses()}else{if(r.freeMode.sticky)return void t.slideToClosest();r.freeMode&&a("_freeModeNoMomentumRelease")}(!r.freeMode.momentum||p>=r.longSwipesMs)&&(a("_freeModeStaticRelease"),t.updateProgress(),t.updateActiveIndex(),t.updateSlidesClasses())}}}})},function(e){let t,s,a,i,{swiper:r,extendParams:n,on:l}=e;n({grid:{rows:1,fill:"column"}});const o=()=>{let e=r.params.spaceBetween;return"string"==typeof e&&e.indexOf("%")>=0?e=parseFloat(e.replace("%",""))/100*r.size:"string"==typeof e&&(e=parseFloat(e)),e};l("init",(()=>{i=r.params.grid&&r.params.grid.rows>1})),l("update",(()=>{const{params:e,el:t}=r,s=e.grid&&e.grid.rows>1;i&&!s?(t.classList.remove(`${e.containerModifierClass}grid`,`${e.containerModifierClass}grid-column`),a=1,r.emitContainerClasses()):!i&&s&&(t.classList.add(`${e.containerModifierClass}grid`),"column"===e.grid.fill&&t.classList.add(`${e.containerModifierClass}grid-column`),r.emitContainerClasses()),i=s})),r.grid={initSlides:e=>{const{slidesPerView:i}=r.params,{rows:n,fill:l}=r.params.grid,o=r.virtual&&r.params.virtual.enabled?r.virtual.slides.length:e.length;a=Math.floor(o/n),t=Math.floor(o/n)===o/n?o:Math.ceil(o/n)*n,"auto"!==i&&"row"===l&&(t=Math.max(t,i*n)),s=t/n},unsetSlides:()=>{r.slides&&r.slides.forEach((e=>{e.swiperSlideGridSet&&(e.style.height="",e.style[r.getDirectionLabel("margin-top")]="")}))},updateSlide:(e,i,n)=>{const{slidesPerGroup:l}=r.params,d=o(),{rows:c,fill:p}=r.params.grid,u=r.virtual&&r.params.virtual.enabled?r.virtual.slides.length:n.length;let m,h,f;if("row"===p&&l>1){const s=Math.floor(e/(l*c)),a=e-c*l*s,r=0===s?l:Math.min(Math.ceil((u-s*c*l)/c),l);f=Math.floor(a/r),h=a-f*r+s*l,m=h+f*t/c,i.style.order=m}else"column"===p?(h=Math.floor(e/c),f=e-h*c,(h>a||h===a&&f===c-1)&&(f+=1,f>=c&&(f=0,h+=1))):(f=Math.floor(e/s),h=e-f*s);i.row=f,i.column=h,i.style.height=`calc((100% - ${(c-1)*d}px) / ${c})`,i.style[r.getDirectionLabel("margin-top")]=0!==f?d&&`${d}px`:"",i.swiperSlideGridSet=!0},updateWrapperSize:(e,s)=>{const{centeredSlides:a,roundLengths:i}=r.params,n=o(),{rows:l}=r.params.grid;if(r.virtualSize=(e+n)*t,r.virtualSize=Math.ceil(r.virtualSize/l)-n,r.params.cssMode||(r.wrapperEl.style[r.getDirectionLabel("width")]=`${r.virtualSize+n}px`),a){const e=[];for(let t=0;t{const{slides:e}=t;t.params.fadeEffect;for(let s=0;s{const s=t.slides.map((e=>h(e)));s.forEach((t=>{t.style.transitionDuration=`${e}ms`})),he({swiper:t,duration:e,transformElements:s,allSlides:!0})},overwriteParams:()=>({slidesPerView:1,slidesPerGroup:1,watchSlidesProgress:!0,spaceBetween:0,virtualTranslate:!t.params.cssMode})})},function(e){let{swiper:t,extendParams:s,on:a}=e;s({cubeEffect:{slideShadows:!0,shadow:!0,shadowOffset:20,shadowScale:.94}});const i=(e,t,s)=>{let a=s?e.querySelector(".swiper-slide-shadow-left"):e.querySelector(".swiper-slide-shadow-top"),i=s?e.querySelector(".swiper-slide-shadow-right"):e.querySelector(".swiper-slide-shadow-bottom");a||(a=v("div",("swiper-slide-shadow-cube swiper-slide-shadow-"+(s?"left":"top")).split(" ")),e.append(a)),i||(i=v("div",("swiper-slide-shadow-cube swiper-slide-shadow-"+(s?"right":"bottom")).split(" ")),e.append(i)),a&&(a.style.opacity=Math.max(-t,0)),i&&(i.style.opacity=Math.max(t,0))};ue({effect:"cube",swiper:t,on:a,setTranslate:()=>{const{el:e,wrapperEl:s,slides:a,width:r,height:n,rtlTranslate:l,size:o,browser:d}=t,c=M(t),p=t.params.cubeEffect,u=t.isHorizontal(),m=t.virtual&&t.params.virtual.enabled;let h,f=0;p.shadow&&(u?(h=t.wrapperEl.querySelector(".swiper-cube-shadow"),h||(h=v("div","swiper-cube-shadow"),t.wrapperEl.append(h)),h.style.height=`${r}px`):(h=e.querySelector(".swiper-cube-shadow"),h||(h=v("div","swiper-cube-shadow"),e.append(h))));for(let e=0;e-1&&(f=90*s+90*d,l&&(f=90*-s-90*d)),t.style.transform=w,p.slideShadows&&i(t,d,u)}if(s.style.transformOrigin=`50% 50% -${o/2}px`,s.style["-webkit-transform-origin"]=`50% 50% -${o/2}px`,p.shadow)if(u)h.style.transform=`translate3d(0px, ${r/2+p.shadowOffset}px, ${-r/2}px) rotateX(89.99deg) rotateZ(0deg) scale(${p.shadowScale})`;else{const e=Math.abs(f)-90*Math.floor(Math.abs(f)/90),t=1.5-(Math.sin(2*e*Math.PI/360)/2+Math.cos(2*e*Math.PI/360)/2),s=p.shadowScale,a=p.shadowScale/t,i=p.shadowOffset;h.style.transform=`scale3d(${s}, 1, ${a}) translate3d(0px, ${n/2+i}px, ${-n/2/a}px) rotateX(-89.99deg)`}const g=(d.isSafari||d.isWebView)&&d.needPerspectiveFix?-o/2:0;s.style.transform=`translate3d(0px,0,${g}px) rotateX(${c(t.isHorizontal()?0:f)}deg) rotateY(${c(t.isHorizontal()?-f:0)}deg)`,s.style.setProperty("--swiper-cube-translate-z",`${g}px`)},setTransition:e=>{const{el:s,slides:a}=t;if(a.forEach((t=>{t.style.transitionDuration=`${e}ms`,t.querySelectorAll(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").forEach((t=>{t.style.transitionDuration=`${e}ms`}))})),t.params.cubeEffect.shadow&&!t.isHorizontal()){const t=s.querySelector(".swiper-cube-shadow");t&&(t.style.transitionDuration=`${e}ms`)}},recreateShadows:()=>{const e=t.isHorizontal();t.slides.forEach((t=>{const s=Math.max(Math.min(t.progress,1),-1);i(t,s,e)}))},getEffectParams:()=>t.params.cubeEffect,perspective:()=>!0,overwriteParams:()=>({slidesPerView:1,slidesPerGroup:1,watchSlidesProgress:!0,resistanceRatio:0,spaceBetween:0,centeredSlides:!1,virtualTranslate:!0})})},function(e){let{swiper:t,extendParams:s,on:a}=e;s({flipEffect:{slideShadows:!0,limitRotation:!0}});const i=(e,s)=>{let a=t.isHorizontal()?e.querySelector(".swiper-slide-shadow-left"):e.querySelector(".swiper-slide-shadow-top"),i=t.isHorizontal()?e.querySelector(".swiper-slide-shadow-right"):e.querySelector(".swiper-slide-shadow-bottom");a||(a=fe("flip",e,t.isHorizontal()?"left":"top")),i||(i=fe("flip",e,t.isHorizontal()?"right":"bottom")),a&&(a.style.opacity=Math.max(-s,0)),i&&(i.style.opacity=Math.max(s,0))};ue({effect:"flip",swiper:t,on:a,setTranslate:()=>{const{slides:e,rtlTranslate:s}=t,a=t.params.flipEffect,r=M(t);for(let n=0;n{const s=t.slides.map((e=>h(e)));s.forEach((t=>{t.style.transitionDuration=`${e}ms`,t.querySelectorAll(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").forEach((t=>{t.style.transitionDuration=`${e}ms`}))})),he({swiper:t,duration:e,transformElements:s})},recreateShadows:()=>{t.params.flipEffect,t.slides.forEach((e=>{let s=e.progress;t.params.flipEffect.limitRotation&&(s=Math.max(Math.min(e.progress,1),-1)),i(e,s)}))},getEffectParams:()=>t.params.flipEffect,perspective:()=>!0,overwriteParams:()=>({slidesPerView:1,slidesPerGroup:1,watchSlidesProgress:!0,spaceBetween:0,virtualTranslate:!t.params.cssMode})})},function(e){let{swiper:t,extendParams:s,on:a}=e;s({coverflowEffect:{rotate:50,stretch:0,depth:100,scale:1,modifier:1,slideShadows:!0}}),ue({effect:"coverflow",swiper:t,on:a,setTranslate:()=>{const{width:e,height:s,slides:a,slidesSizesGrid:i}=t,r=t.params.coverflowEffect,n=t.isHorizontal(),l=t.translate,o=n?e/2-l:s/2-l,d=n?r.rotate:-r.rotate,c=r.depth,p=M(t);for(let e=0,t=a.length;e0?u:0),s&&(s.style.opacity=-u>0?-u:0)}}},setTransition:e=>{t.slides.map((e=>h(e))).forEach((t=>{t.style.transitionDuration=`${e}ms`,t.querySelectorAll(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").forEach((t=>{t.style.transitionDuration=`${e}ms`}))}))},perspective:()=>!0,overwriteParams:()=>({watchSlidesProgress:!0})})},function(e){let{swiper:t,extendParams:s,on:a}=e;s({creativeEffect:{limitProgress:1,shadowPerProgress:!1,progressMultiplier:1,perspective:!0,prev:{translate:[0,0,0],rotate:[0,0,0],opacity:1,scale:1},next:{translate:[0,0,0],rotate:[0,0,0],opacity:1,scale:1}}});const i=e=>"string"==typeof e?e:`${e}px`;ue({effect:"creative",swiper:t,on:a,setTranslate:()=>{const{slides:e,wrapperEl:s,slidesSizesGrid:a}=t,r=t.params.creativeEffect,{progressMultiplier:n}=r,l=t.params.centeredSlides,o=M(t);if(l){const e=a[0]/2-t.params.slidesOffsetBefore||0;s.style.transform=`translateX(calc(50% - ${e}px))`}for(let s=0;s0&&(g=r.prev,f=!0),m.forEach(((e,t)=>{m[t]=`calc(${e}px + (${i(g.translate[t])} * ${Math.abs(c*n)}))`})),h.forEach(((e,t)=>{let s=g.rotate[t]*Math.abs(c*n);h[t]=s})),a.style.zIndex=-Math.abs(Math.round(d))+e.length;const v=m.join(", "),w=`rotateX(${o(h[0])}deg) rotateY(${o(h[1])}deg) rotateZ(${o(h[2])}deg)`,b=p<0?`scale(${1+(1-g.scale)*p*n})`:`scale(${1-(1-g.scale)*p*n})`,y=p<0?1+(1-g.opacity)*p*n:1-(1-g.opacity)*p*n,E=`translate3d(${v}) ${w} ${b}`;if(f&&g.shadow||!f){let e=a.querySelector(".swiper-slide-shadow");if(!e&&g.shadow&&(e=fe("creative",a)),e){const t=r.shadowPerProgress?c*(1/r.limitProgress):c;e.style.opacity=Math.min(Math.max(Math.abs(t),0),1)}}const x=me(0,a);x.style.transform=E,x.style.opacity=y,g.origin&&(x.style.transformOrigin=g.origin)}},setTransition:e=>{const s=t.slides.map((e=>h(e)));s.forEach((t=>{t.style.transitionDuration=`${e}ms`,t.querySelectorAll(".swiper-slide-shadow").forEach((t=>{t.style.transitionDuration=`${e}ms`}))})),he({swiper:t,duration:e,transformElements:s,allSlides:!0})},perspective:()=>t.params.creativeEffect.perspective,overwriteParams:()=>({watchSlidesProgress:!0,virtualTranslate:!t.params.cssMode})})},function(e){let{swiper:t,extendParams:s,on:a}=e;s({cardsEffect:{slideShadows:!0,rotate:!0,perSlideRotate:2,perSlideOffset:8}}),ue({effect:"cards",swiper:t,on:a,setTranslate:()=>{const{slides:e,activeIndex:s,rtlTranslate:a}=t,i=t.params.cardsEffect,{startTranslate:r,isTouched:n}=t.touchEventsData,l=a?-t.translate:t.translate;for(let o=0;o0&&p<1&&(n||t.params.cssMode)&&l-1&&(n||t.params.cssMode)&&l>r;if(y||E){const e=(1-Math.abs((Math.abs(p)-.5)/.5))**.5;v+=-28*p*e,g+=-.5*e,w+=96*e,h=-25*e*Math.abs(p)+"%"}if(m=p<0?`calc(${m}px ${a?"-":"+"} (${w*Math.abs(p)}%))`:p>0?`calc(${m}px ${a?"-":"+"} (-${w*Math.abs(p)}%))`:`${m}px`,!t.isHorizontal()){const e=h;h=m,m=e}const x=p<0?""+(1+(1-g)*p):""+(1-(1-g)*p),S=`\n translate3d(${m}, ${h}, ${f}px)\n rotateZ(${i.rotate?a?-v:v:0}deg)\n scale(${x})\n `;if(i.slideShadows){let e=d.querySelector(".swiper-slide-shadow");e||(e=fe("cards",d)),e&&(e.style.opacity=Math.min(Math.max((Math.abs(p)-.5)/.5,0),1))}d.style.zIndex=-Math.abs(Math.round(c))+e.length;me(0,d).style.transform=S}},setTransition:e=>{const s=t.slides.map((e=>h(e)));s.forEach((t=>{t.style.transitionDuration=`${e}ms`,t.querySelectorAll(".swiper-slide-shadow").forEach((t=>{t.style.transitionDuration=`${e}ms`}))})),he({swiper:t,duration:e,transformElements:s})},perspective:()=>!0,overwriteParams:()=>({watchSlidesProgress:!0,virtualTranslate:!t.params.cssMode})})}];return ie.use(ge),ie}(); +//# sourceMappingURL=swiper-bundle.min.js.map \ No newline at end of file diff --git a/site/templates/js/swiper-bundle.min.js.map b/site/templates/js/swiper-bundle.min.js.map new file mode 100644 index 0000000..5b4e7d0 --- /dev/null +++ b/site/templates/js/swiper-bundle.min.js.map @@ -0,0 +1 @@ +{"version":3,"file":"swiper-bundle.js.js","names":["Swiper","isObject$1","obj","constructor","Object","extend$1","target","src","keys","forEach","key","length","ssrDocument","body","addEventListener","removeEventListener","activeElement","blur","nodeName","querySelector","querySelectorAll","getElementById","createEvent","initEvent","createElement","children","childNodes","style","setAttribute","getElementsByTagName","createElementNS","importNode","location","hash","host","hostname","href","origin","pathname","protocol","search","getDocument","doc","document","ssrWindow","navigator","userAgent","history","replaceState","pushState","go","back","CustomEvent","this","getComputedStyle","getPropertyValue","Image","Date","screen","setTimeout","clearTimeout","matchMedia","requestAnimationFrame","callback","cancelAnimationFrame","id","getWindow","win","window","classesToTokens","classes","trim","split","filter","c","nextTick","delay","now","getTranslate","el","axis","matrix","curTransform","transformMatrix","curStyle","currentStyle","getComputedStyle$1","WebKitCSSMatrix","transform","webkitTransform","map","a","replace","join","MozTransform","OTransform","MsTransform","msTransform","toString","m41","parseFloat","m42","isObject","o","prototype","call","slice","extend","to","arguments","undefined","noExtend","i","nextSource","node","HTMLElement","nodeType","keysArray","indexOf","nextIndex","len","nextKey","desc","getOwnPropertyDescriptor","enumerable","__swiper__","setCSSProperty","varName","varValue","setProperty","animateCSSModeScroll","_ref","swiper","targetPosition","side","startPosition","translate","time","startTime","duration","params","speed","wrapperEl","scrollSnapType","cssModeFrameID","dir","isOutOfBound","current","animate","getTime","progress","Math","max","min","easeProgress","cos","PI","currentPosition","scrollTo","overflow","getSlideTransformEl","slideEl","shadowRoot","elementChildren","element","selector","HTMLSlotElement","push","assignedElements","matches","showWarning","text","console","warn","err","tag","classList","add","Array","isArray","elementOffset","box","getBoundingClientRect","clientTop","clientLeft","scrollTop","scrollY","scrollLeft","scrollX","top","left","elementStyle","prop","elementIndex","child","previousSibling","elementParents","parents","parent","parentElement","elementTransitionEnd","fireCallBack","e","elementOuterSize","size","includeMargins","offsetWidth","makeElementsArray","getRotateFix","v","abs","browser","need3dFix","support","deviceCached","getSupport","smoothScroll","documentElement","touch","DocumentTouch","calcSupport","getDevice","overrides","_temp","platform","ua","device","ios","android","screenWidth","width","screenHeight","height","match","ipad","ipod","iphone","windows","macos","os","calcDevice","getBrowser","needPerspectiveFix","isSafari","toLowerCase","String","includes","major","minor","num","Number","isWebView","test","isSafariBrowser","calcBrowser","eventsEmitter","on","events","handler","priority","self","eventsListeners","destroyed","method","event","once","onceHandler","off","__emitterProxy","_len","args","_key","apply","onAny","eventsAnyListeners","offAny","index","splice","eventHandler","emit","data","context","_len2","_key2","unshift","toggleSlideClasses$1","condition","className","contains","remove","toggleSlideClasses","processLazyPreloader","imageEl","closest","isElement","slideClass","lazyEl","lazyPreloaderClass","unlazy","slides","removeAttribute","preload","amount","lazyPreloadPrevNext","slidesPerView","slidesPerViewDynamic","ceil","activeIndex","grid","rows","activeColumn","preloadColumns","from","_","column","slideIndexLastInView","rewind","loop","realIndex","update","updateSize","clientWidth","clientHeight","isHorizontal","isVertical","parseInt","isNaN","assign","updateSlides","getDirectionPropertyValue","label","getDirectionLabel","slidesEl","swiperSize","rtlTranslate","rtl","wrongRTL","isVirtual","virtual","enabled","previousSlidesLength","slidesLength","snapGrid","slidesGrid","slidesSizesGrid","offsetBefore","slidesOffsetBefore","offsetAfter","slidesOffsetAfter","previousSnapGridLength","previousSlidesGridLength","spaceBetween","slidePosition","prevSlideSize","virtualSize","marginLeft","marginRight","marginBottom","marginTop","centeredSlides","cssMode","gridEnabled","slideSize","initSlides","unsetSlides","shouldResetSlideSize","breakpoints","slide","updateSlide","slideStyles","currentTransform","currentWebKitTransform","roundLengths","paddingLeft","paddingRight","boxSizing","floor","swiperSlideSize","slidesPerGroup","slidesPerGroupSkip","effect","setWrapperSize","updateWrapperSize","newSlidesGrid","slidesGridItem","groups","slidesBefore","slidesAfter","groupSize","slideIndex","centeredSlidesBounds","allSlidesSize","slideSizeValue","maxSnap","snap","centerInsufficientSlides","offsetSize","allSlidesOffset","snapIndex","addToSnapGrid","addToSlidesGrid","watchOverflow","checkOverflow","watchSlidesProgress","updateSlidesOffset","backFaceHiddenClass","containerModifierClass","hasClassBackfaceClassAdded","maxBackfaceHiddenSlides","updateAutoHeight","activeSlides","newHeight","setTransition","getSlideByIndex","getSlideIndexByData","visibleSlides","offsetHeight","minusOffset","offsetLeft","offsetTop","swiperSlideOffset","cssOverflowAdjustment","updateSlidesProgress","offsetCenter","visibleSlidesIndexes","slideOffset","slideProgress","minTranslate","originalSlideProgress","slideBefore","slideAfter","isFullyVisible","isVisible","slideVisibleClass","slideFullyVisibleClass","originalProgress","updateProgress","multiplier","translatesDiff","maxTranslate","isBeginning","isEnd","progressLoop","wasBeginning","wasEnd","isBeginningRounded","isEndRounded","firstSlideIndex","lastSlideIndex","firstSlideTranslate","lastSlideTranslate","translateMax","translateAbs","autoHeight","updateSlidesClasses","getFilteredSlide","activeSlide","prevSlide","nextSlide","nextEls","nextElementSibling","next","elementNextAll","prevEls","previousElementSibling","prev","elementPrevAll","slideActiveClass","slideNextClass","slidePrevClass","emitSlidesClasses","updateActiveIndex","newActiveIndex","previousIndex","previousRealIndex","previousSnapIndex","getVirtualRealIndex","aIndex","normalizeSlideIndex","getActiveIndexByTranslate","skip","firstSlideInColumn","activeSlideIndex","getAttribute","initialized","runCallbacksOnInit","updateClickedSlide","path","pathEl","slideFound","clickedSlide","clickedIndex","slideToClickedSlide","virtualTranslate","currentTranslate","setTranslate","byController","newProgress","x","y","previousTranslate","translateTo","runCallbacks","translateBounds","internal","animating","preventInteractionOnTransition","newTranslate","isH","behavior","onTranslateToWrapperTransitionEnd","transitionEmit","direction","step","slideTo","initial","normalizedTranslate","normalizedGrid","normalizedGridNext","allowSlideNext","allowSlidePrev","transitionStart","transitionEnd","t","_immediateVirtual","_cssModeVirtualInitialSet","initialSlide","onSlideToWrapperTransitionEnd","slideToLoop","newIndex","targetSlideIndex","cols","needLoopFix","loopFix","slideRealIndex","slideNext","perGroup","slidesPerGroupAuto","increment","loopPreventsSliding","_clientLeft","slidePrev","normalize","val","normalizedSnapGrid","prevSnap","prevSnapIndex","prevIndex","lastIndex","slideReset","slideToClosest","threshold","currentSnap","slideToIndex","slideSelector","loopedSlides","getSlideIndex","loopCreate","shouldFillGroup","shouldFillGrid","addBlankSlides","amountOfSlides","slideBlankClass","append","loopAddBlankSlides","recalcSlides","byMousewheel","loopAdditionalSlides","fill","prependSlidesIndexes","appendSlidesIndexes","isNext","isPrev","slidesPrepended","slidesAppended","activeColIndexWithShift","colIndexToPrepend","__preventObserver__","swiperLoopMoveDOM","prepend","currentSlideTranslate","diff","touchEventsData","startTranslate","shift","controller","control","loopParams","loopDestroy","newSlidesOrder","swiperSlideIndex","preventEdgeSwipe","startX","edgeSwipeDetection","edgeSwipeThreshold","innerWidth","preventDefault","onTouchStart","originalEvent","type","pointerId","targetTouches","touchId","identifier","pageX","touches","simulateTouch","pointerType","targetEl","touchEventsTarget","isChild","elementIsChildOf","which","button","isTouched","isMoved","swipingClassHasValue","noSwipingClass","eventPath","composedPath","noSwipingSelector","isTargetShadow","noSwiping","base","__closestFrom","assignedSlot","found","getRootNode","closestElement","allowClick","swipeHandler","currentX","currentY","pageY","startY","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","swipeDirection","allowThresholdMove","focusableElements","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","isContentEditable","freeMode","onTouchMove","targetTouch","changedTouches","preventedByNestedSwiper","touchReleaseOnEdges","previousX","previousY","diffX","diffY","sqrt","touchAngle","atan2","preventTouchMoveFromPointerMove","cancelable","touchMoveStopPropagation","nested","stopPropagation","touchesDiff","oneWayMovement","touchRatio","prevTouchesDirection","touchesDirection","isLoop","allowLoopFix","evt","bubbles","detail","bySwiperTouchMove","dispatchEvent","allowMomentumBounce","grabCursor","setGrabCursor","loopSwapReset","disableParentSwiper","resistanceRatio","resistance","followFinger","onTouchEnd","touchEndTime","timeDiff","pathTree","lastClickTime","currentPos","swipeToLast","stopIndex","rewindFirstIndex","rewindLastIndex","ratio","longSwipesMs","longSwipes","longSwipesRatio","shortSwipes","navigation","nextEl","prevEl","onResize","setBreakpoint","isVirtualLoop","autoplay","running","paused","resizeTimeout","resume","onClick","preventClicks","preventClicksPropagation","stopImmediatePropagation","onScroll","onLoad","onDocumentTouchStart","documentTouchHandlerProceeded","touchAction","capture","domMethod","swiperMethod","passive","updateOnWindowResize","isGridEnabled","defaults","init","swiperElementNodeName","resizeObserver","createElements","eventsPrefix","url","breakpointsBase","uniqueNavElements","passiveListeners","wrapperClass","_emitClasses","moduleExtendParams","allModulesParams","moduleParamName","moduleParams","auto","prototypes","transition","transitionDuration","transitionDelay","moving","isLocked","cursor","unsetGrabCursor","attachEvents","bind","detachEvents","breakpoint","getBreakpoint","currentBreakpoint","breakpointParams","originalParams","wasMultiRow","isMultiRow","wasGrabCursor","isGrabCursor","wasEnabled","emitContainerClasses","wasModuleEnabled","isModuleEnabled","disable","enable","directionChanged","needsReLoop","wasLoop","changeDirection","isEnabled","hasLoop","containerEl","currentHeight","innerHeight","points","point","minRatio","substr","value","sort","b","wasLocked","lastSlideRightEdge","addClasses","classNames","suffixes","entries","prefix","resultClasses","item","prepareClasses","autoheight","centered","removeClasses","extendedDefaults","swipers","newParams","modules","__modules__","mod","extendParams","swiperParams","passedParams","eventName","velocity","trunc","clickTimeout","velocities","imagesToLoad","imagesLoaded","property","setProgress","cls","getSlideClasses","updates","view","exact","spv","breakLoop","translateValue","translated","complete","newDirection","needUpdate","currentDirection","changeLanguageDirection","mount","mounted","parentNode","toUpperCase","getWrapperSelector","getWrapper","slideSlots","hostEl","lazyElements","destroy","deleteInstance","cleanStyles","object","deleteProps","extendDefaults","newDefaults","installModule","use","module","m","createElementIfNotDefined","checkProps","classesToSelector","appendSlide","appendElement","tempDOM","innerHTML","observer","prependSlide","prependElement","addSlide","activeIndexBuffer","baseLength","slidesBuffer","currentSlide","removeSlide","slidesIndexes","indexToRemove","removeAllSlides","effectInit","overwriteParams","perspective","recreateShadows","getEffectParams","requireUpdateOnVirtual","overwriteParamsResult","_s","slideShadows","shadowEl","effectTarget","effectParams","transformEl","backfaceVisibility","effectVirtualTransitionEnd","transformElements","allSlides","transitionEndTarget","eventTriggered","getSlide","createShadow","suffix","shadowClass","shadowContainer","prototypeGroup","protoMethod","animationFrame","resizeHandler","orientationChangeHandler","ResizeObserver","newWidth","_ref2","contentBoxSize","contentRect","inlineSize","blockSize","observe","unobserve","observers","attach","options","MutationObserver","WebkitMutationObserver","mutations","observerUpdate","attributes","childList","characterData","observeParents","observeSlideChildren","containerParents","disconnect","cssModeTimeout","cache","renderSlide","renderExternal","renderExternalUpdate","addSlidesBefore","addSlidesAfter","offset","force","beforeInit","previousFrom","previousTo","previousSlidesGrid","previousOffset","offsetProp","onRendered","slidesToRender","prependIndexes","appendIndexes","loopFrom","loopTo","domSlidesAssigned","numberOfNewSlides","newCache","cachedIndex","cachedEl","cachedElIndex","handle","kc","keyCode","charCode","pageUpDown","keyboard","isPageUp","isPageDown","isArrowLeft","isArrowRight","isArrowUp","isArrowDown","shiftKey","altKey","ctrlKey","metaKey","onlyInViewport","inView","swiperWidth","swiperHeight","windowWidth","windowHeight","swiperOffset","swiperCoord","returnValue","timeout","mousewheel","releaseOnEdges","invert","forceToAxis","sensitivity","eventsTarget","thresholdDelta","thresholdTime","noMousewheelClass","lastEventBeforeSnap","lastScrollTime","recentWheelEvents","handleMouseEnter","mouseEntered","handleMouseLeave","animateSlider","newEvent","delta","raw","targetElContainsTarget","rtlFactor","sX","sY","pX","pY","wheelDelta","wheelDeltaY","wheelDeltaX","HORIZONTAL_AXIS","deltaY","deltaX","deltaMode","spinX","spinY","pixelX","pixelY","positions","sign","ignoreWheelEvents","position","sticky","prevEvent","firstEvent","snapToThreshold","autoplayDisableOnInteraction","stop","releaseScroll","getEl","res","toggleEl","disabled","subEl","disabledClass","tagName","lockClass","onPrevClick","onNextClick","initButton","destroyButton","hideOnClick","hiddenClass","navigationDisabledClass","targetIsButton","find","pagination","clickable","isHidden","toggle","pfx","bulletSize","bulletElement","renderBullet","renderProgressbar","renderFraction","renderCustom","progressbarOpposite","dynamicBullets","dynamicMainBullets","formatFractionCurrent","number","formatFractionTotal","bulletClass","bulletActiveClass","modifierClass","currentClass","totalClass","progressbarFillClass","progressbarOppositeClass","clickableClass","horizontalClass","verticalClass","paginationDisabledClass","bullets","dynamicBulletIndex","isPaginationDisabled","setSideBullets","bulletEl","onBulletClick","moveDirection","total","firstIndex","midIndex","classesToRemove","s","flat","bullet","bulletIndex","firstDisplayedBullet","lastDisplayedBullet","dynamicBulletsLength","bulletsOffset","subElIndex","fractionEl","textContent","totalEl","progressbarDirection","scale","scaleX","scaleY","progressEl","render","paginationHTML","numberOfBullets","dragStartPos","dragSize","trackSize","divider","dragTimeout","scrollbar","dragEl","newSize","newPos","hide","opacity","display","getPointerPosition","clientX","clientY","setDragPosition","positionRatio","onDragStart","onDragMove","onDragEnd","snapOnRelease","activeListener","passiveListener","eventMethod","swiperEl","dragClass","draggable","scrollbarDisabledClass","parallax","elementsSelector","setTransform","p","rotate","currentOpacity","elements","_swiper","parallaxEl","parallaxDuration","zoom","limitToOriginalSize","maxRatio","containerClass","zoomedSlideClass","fakeGestureTouched","fakeGestureMoved","currentScale","isScaling","evCache","gesture","originX","originY","slideWidth","slideHeight","imageWrapEl","image","minX","minY","maxX","maxY","touchesStart","touchesCurrent","prevPositionX","prevPositionY","prevTime","allowTouchMoveTimeout","getDistanceBetweenTouches","x1","y1","x2","y2","getMaxRatio","naturalWidth","imageMaxRatio","eventWithinSlide","onGestureStart","scaleStart","getScaleOrigin","onGestureChange","pointerIndex","findIndex","cachedEv","scaleMove","onGestureEnd","eventWithinZoomContainer","scaledWidth","scaledHeight","scaleRatio","onTransitionEnd","zoomIn","touchX","touchY","offsetX","offsetY","translateX","translateY","imageWidth","imageHeight","translateMinX","translateMinY","translateMaxX","translateMaxY","forceZoomRatio","zoomOut","zoomToggle","getListeners","activeListenerWithCapture","defineProperty","get","set","momentumDurationX","momentumDurationY","momentumDistanceX","newPositionX","momentumDistanceY","newPositionY","momentumDuration","in","out","LinearSpline","binarySearch","maxIndex","minIndex","guess","array","i1","i3","interpolate","removeSpline","spline","inverse","by","controlElement","onControllerSwiper","_t","controlled","controlledTranslate","setControlledTranslate","getInterpolateFunction","isFinite","setControlledTransition","a11y","notificationClass","prevSlideMessage","nextSlideMessage","firstSlideMessage","lastSlideMessage","paginationBulletMessage","slideLabelMessage","containerMessage","containerRoleDescriptionMessage","containerRole","itemRoleDescriptionMessage","slideRole","scrollOnFocus","clicked","preventFocusHandler","focusTargetSlideEl","liveRegion","visibilityChangedTimestamp","notify","message","notification","makeElFocusable","makeElNotFocusable","addElRole","role","addElRoleDescription","description","addElLabel","disableEl","enableEl","onEnterOrSpaceKey","click","hasPagination","hasClickablePagination","initNavEl","wrapperId","controls","addElControls","handlePointerDown","handlePointerUp","onVisibilityChange","handleFocus","isActive","sourceCapabilities","firesTouchEvents","repeat","round","random","live","addElLive","updateNavigation","updatePagination","root","keepQuery","paths","slugify","getPathValues","urlOverride","URL","pathArray","part","setHistory","currentState","state","scrollToSlide","setHistoryPopState","hashNavigation","watchState","slideWithHash","onHashChange","newHash","activeSlideEl","setHash","activeSlideHash","raf","timeLeft","waitForTransition","disableOnInteraction","stopOnLastSlide","reverseDirection","pauseOnMouseEnter","autoplayTimeLeft","wasPaused","pausedByTouch","touchStartTimeout","slideChanged","pausedByInteraction","pausedByPointerEnter","autoplayDelayTotal","autoplayDelayCurrent","autoplayStartTime","calcTimeLeft","run","delayForce","currentSlideDelay","getSlideDelay","proceed","start","pause","reset","visibilityState","onPointerEnter","onPointerLeave","thumbs","multipleActiveThumbs","autoScrollOffset","slideThumbActiveClass","thumbsContainerClass","swiperCreated","onThumbClick","thumbsSwiper","thumbsParams","SwiperClass","thumbsSwiperParams","thumbsToActivate","thumbActiveClass","useOffset","currentThumbsIndex","newThumbsIndex","newThumbsSlide","getThumbsElementAndInit","thumbsElement","onThumbsSwiper","watchForThumbsToAppear","momentum","momentumRatio","momentumBounce","momentumBounceRatio","momentumVelocityRatio","minimumVelocity","lastMoveEvent","pop","velocityEvent","distance","momentumDistance","newPosition","afterBouncePosition","doBounce","bounceAmount","needsLoopFix","j","moveDistance","currentSlideSize","slidesNumberEvenToRows","slidesPerRow","numFullColumns","getSpaceBetween","swiperSlideGridSet","newSlideOrderIndex","row","groupIndex","slideIndexInGroup","columnsInGroup","order","fadeEffect","crossFade","tx","ty","slideOpacity","cubeEffect","shadow","shadowOffset","shadowScale","createSlideShadows","shadowBefore","shadowAfter","r","cubeShadowEl","wrapperRotate","slideAngle","tz","transformOrigin","shadowAngle","sin","scale1","scale2","zFactor","flipEffect","limitRotation","rotateFix","rotateY","rotateX","zIndex","coverflowEffect","stretch","depth","modifier","center","centerOffset","offsetMultiplier","translateZ","slideTransform","shadowBeforeEl","shadowAfterEl","creativeEffect","limitProgress","shadowPerProgress","progressMultiplier","getTranslateValue","isCenteredSlides","margin","custom","translateString","rotateString","scaleString","opacityString","shadowOpacity","cardsEffect","perSlideRotate","perSlideOffset","tX","tY","tZ","tXAdd","isSwipeToNext","isSwipeToPrev","subProgress","prevY"],"sources":["0"],"mappings":"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"} \ No newline at end of file diff --git a/site/templates/layout/foot.php b/site/templates/layout/foot.php new file mode 100644 index 0000000..37c822f --- /dev/null +++ b/site/templates/layout/foot.php @@ -0,0 +1,31 @@ + +
+
+ + + <?=_x('Logo of Praia de Seselle Tourist Apartments', 'Site logo'); ?> + + +

© 2022- .

+
    + $url): ?> +
  • + +
  • + +
+

+ $imaxe): ?> + <?=$imaxe->description;?> + +

+

Codigo Artabro +isLoggedin()): ?> +
+ +

+
+
+ + + \ No newline at end of file diff --git a/site/templates/layout/func.php b/site/templates/layout/func.php index 4c31ace..4174393 100644 --- a/site/templates/layout/func.php +++ b/site/templates/layout/func.php @@ -1,5 +1,15 @@ configuracion as $cfg) { switch ($cfg->parametro_tipo->value) { case 'texto': - $configuracion[$cfg->parametro_nome] = $cfg->parametro_valor; + if(strpos($cfg->parametro_nome, 'rrss') === 0) + { + $nome = substr($cfg->parametro_nome, strpos($cfg->parametro_nome, "_") + 1); + + $configuracion['redes'][$nome] = $cfg->parametro_valor; + } + else + { + $configuracion[$cfg->parametro_nome] = $cfg->parametro_valor; + } break; case 'cor': $configuracion[$cfg->parametro_nome] = $cfg->parametro_cor[0] . ", " . $cfg->parametro_cor[1] . ", " . $cfg->parametro_cor[2]; @@ -37,10 +57,26 @@ function getConfig($paxina) case 'logo': foreach($cfg->imaxes as $logo) { - $configuracion['logo'][$logo->tags] = array( - 'url' => $logo->url, - 'alt' => $logo->description - ); + if($logo->hasTag('completo')) + { + $configuracion['logo']['completo'] = $logo; + } + if($logo->hasTag('mini')) + { + $configuracion['logo']['mini'] = $logo; + } + } + break; + case 'imaxe': + if(strpos($cfg->parametro_nome, 'banner') === 0) + { + $nome = substr($cfg->parametro_nome, strpos($cfg->parametro_nome, "_") + 1); + + $configuracion['banners'][$nome] = $cfg->imaxes->first(); + } + else + { + $configuracion[$cfg->parametro_nome] = $cfg->parametro_valor; } break; } @@ -67,30 +103,39 @@ function getSeccions($seccions) case 'repeater_seccions': switch ($seccion->seccion_tipo->value) { - case 'deslizante': - $saida .= renderDeslizante($seccion); - break; - case 'destacados': - $saida .= renderDestacado($seccion); - break; - case 'columnas': - $saida .= renderColumna($seccion); - break; - case 'imaxe_texto_lateral': - $saida .= renderImaxeTexto($seccion); - break; - case 'opinions': - $saida .= renderOpinions($seccion); - break; case 'texto': $saida .= renderTexto($seccion, true); break; + case 'imaxe': + $saida .= renderImaxe($seccion); + break; case 'galeria': $saida .= renderGaleria($seccion); break; case 'reixa': $saida .= renderReixa($seccion); break; + case 'columnas': + $saida .= renderColumna($seccion); + break; + case 'lapelas': + $saida .= renderLapelas($seccion); + break; + case 'deslizante': + $saida .= renderDeslizante($seccion); + break; + case 'destacados': + $saida .= renderDestacado($seccion); + break; + case 'tarxetas': + $saida .= renderTarxetas($seccion); + break; + case 'opinions': + $saida .= renderOpinions($seccion); + break; + case 'empresas': + $saida .= renderEmpresas($seccion); + break; } break; case 'repeater_deslizante': @@ -136,7 +181,7 @@ function getTextoLimpo($texto) * @return string */ -function renderMenu($paxinas, $clase = 'navbar-nav') +function renderMenu($paxinas) { $saida = ''; $inicio = wire('pages')->get('/'); @@ -147,18 +192,14 @@ function renderMenu($paxinas, $clase = 'navbar-nav') $paxinas = array($paxinas); } - $saida .= ''; return $saida; } @@ -201,27 +242,124 @@ function renderMigasPan($paxina, $separador = '' . "\n"; - $saida .= '' . "\n"; - $saida .= '
'; + $saida .= ''; + $saida .= ''; return $saida; } +/** + * @param string $titulo + * @param string $texto + * @param array|PageArray $imaxe + * @return string + */ + +function renderTextoMantemento($titulo, $texto, $imaxe) +{ + $saida = ''; + + $saida .= '
'; + $saida .= '

' . $titulo . '

'; + $saida .= $texto; + $saida .= '' . $imaxe->description . ''; + $saida .= '
'; + + return $saida; +} + +/** + * @param array|PageArray $seccion + * @return string + */ + +function renderGaleria($seccion) +{ + $saida = ''; + + $saida .= '
'; + $saida .= '

' . (($seccion->titular) ? $seccion->titular : 'Galeria') . '

'; + $saida .= '
'; + foreach($seccion->imaxes as $imaxe) + { + $saida .= '
'; + $saida .= '' . $imaxe->description . ''; + $saida .= '
' . $imaxe->description . '
'; + $saida .= '
'; + } + $saida .= '
'; + $saida .= '

Previous'; + $saida .= ''; + $saida .= 'Next

'; + $saida .= '
'; + + return $saida; +} + +/** + * @param array|PageArray $seccion + * @return string + */ + +function renderImaxe($seccion) +{ + $saida = ''; + $imaxe = ''; + $botons = ''; + + if($seccion->imaxe) + { + $imaxe .= '
'; + $imaxe .= '' . $seccion->imaxe->description . ''; + $imaxe .= '
' . $seccion->imaxe->description . '
'; + $imaxe .= '
'; + } + + if($seccion->botons->isEmpty()) + { + $botons .= getSeccions($seccion->botons); + } + + if($seccion->titular) + { + $saida .= '
'; + $saida .= '

' . $seccion->titular . '

'; + $saida .= $imaxe; + $saida .= '
' . $seccion->artigo . '
'; + $saida .= $botons; + $saida .= '
'; + } + else + { + $saida .= '
'; + $saida .= $imaxe; + $saida .= '
' . $seccion->artigo . '
'; + $saida .= $botons; + $saida .= '
'; + } + + + return $saida; +} + + + + + + + + +/** Rehacer */ + /** * @param array|PageArray $paxinas * @param int $maxDepth How many levels of navigation below current should it go? @@ -239,78 +377,23 @@ function renderMapaDoSitio($paxinas, $profundidade = 0, $clase = 'nav') foreach($paxinas as $paxina) { - $saida .= '
  • ' . "\n"; + $saida .= '
  • '; $saida .= "$paxina->title"; if($paxina->hasChildren() && $profundidade) { - if($class == 'nav') $class = 'nav nav-tree'; + if($clase == 'nav') $clase = 'nav nav-tree'; $saida .= renderMapaDoSitio($paxina->children, $profundidade-1, $clase); } $saida .= "
  • "; } - if($saida) $saida = '' ."\n"; + if($saida) $saida = ''; return $saida; } -/** - * @param string $titulo - * @param string $texto - * @param array|PageArray $imaxe - * @return string - */ -function renderTextoMantemento($titulo, $texto, $imaxe) -{ - $saida = ''; - - $saida .= '
    ' . "\n"; - $saida .= '

    ' . $titulo . '

    ' . "\n"; - $saida .= '
    ' . "\n"; - $saida .= $texto . "\n"; - $saida .= '
    ' . "\n"; - $saida .= '
    ' . "\n"; - $saida .= '
    ' . "\n"; - $saida .= '' . $imaxe->description . '' . "\n"; - $saida .= '
    ' . "\n"; - $saida .= '
    ' . "\n"; - - return $saida; -} - -/** - * @param array|PageArray $seccion - * @return string - */ - -function renderGaleria($seccion) -{ - $saida = ''; - - $saida .= '
    ' . "\n"; - $saida .= '

    ' . (($seccion->titular) ? $seccion->titular : 'Galeria') . '

    ' . "\n"; - $saida .= '
    ' . "\n"; - foreach($seccion->imaxes as $imaxe) - { - $saida .= '
    ' . "\n"; - $saida .= '
    ' . "\n"; - $saida .= '' . $imaxe->description . '' . "\n"; - $saida .= '
    ' . $imaxe->description . '
    ' . "\n"; - $saida .= '
    ' . "\n"; - $saida .= '
    ' . "\n"; - $saida .= '
    ' . "\n"; - } - $saida .= '
    ' . "\n"; - - $saida .= '
    Previous
    ' . "\n"; - $saida .= '
    Next
    ' . "\n"; - $saida .= '
    ' . "\n"; - $saida .= '
    '; - - return $saida; -} /** * @param array|PageArray $seccion @@ -352,79 +435,7 @@ function renderReixa($seccion) return $saida; } -/** - * @param array|PageArray $seccion - * @return string - */ -function renderImaxeTexto($seccion) -{ - $saida = ''; - $imaxe = ''; - $texto = ''; - $botons = ''; - - if($seccion->imaxe) - { - $imaxe .= renderImaxe($seccion); - } - - $texto .= renderTexto($seccion); - - if($seccion->botons->isEmpty()) - { - $botons .= '
    ' . "\n"; - $botons .= getSeccions($seccion->botons) . "\n"; - $botons .= '
    ' . "\n"; - } - - switch ($seccion->imaxe_posicion->value) - { - case 'superior': - $saida .= '
    ' . "\n"; - $saida .= '
    ' . "\n"; - $saida .= $imaxe . "\n"; - $saida .= '
    ' . "\n"; - $saida .= '
    ' . "\n"; - $saida .= $texto . "\n"; - $saida .= '
    ' . "\n"; - $saida .= $botons . "\n"; - break; - case 'esquerda': - case 'dereita': - $saida .= '
    ' . "\n"; - $saida .= '
    ' . "\n"; - $saida .= '
    ' . "\n"; - $saida .= $imaxe . "\n"; - $saida .= '
    ' . "\n"; - $saida .= '
    ' . "\n"; - $saida .= $texto . "\n"; - $saida .= $botons . "\n"; - $saida .= '
    ' . "\n"; - $saida .= '
    ' . "\n"; - break; - } - $saida .= '
    ' . "\n"; - - return $saida; -} - -/** - * @param array|PageArray $seccion - * @return string - */ - -function renderImaxe($seccion) -{ - $saida = ''; - - $saida .= '
    ' . "\n"; - $saida .= '' . $seccion->maxe->description . '' . "\n"; - $saida .= '
    ' . $seccion->imaxe->description . '
    ' . "\n"; - $saida .= '
    ' . "\n"; - - return $saida; -} /** * @param array|PageArray $seccion diff --git a/site/templates/layout/head.php b/site/templates/layout/head.php new file mode 100644 index 0000000..8a97af3 --- /dev/null +++ b/site/templates/layout/head.php @@ -0,0 +1,127 @@ +get->logout == true) +{ + $session->logout(); + $session->redirect($inicio->url); +} +?> + + + <?=$titulo;?> + + + + + + + + + + + + + + + + + + + + +viewable($idioma)): continue; endif;?> + + + + + + + +
    +
    + +
    +
    + + + + +
    +
    diff --git a/site/templates/layout/init.php b/site/templates/layout/init.php index 25caad0..4615ff5 100644 --- a/site/templates/layout/init.php +++ b/site/templates/layout/init.php @@ -1,24 +1,19 @@ get('/'); -$xestion = $pages->get('/gestion'); -$configuracion = getConfig($xestion); -$titulo = $page->title . ' - ' . $configuracion['sitio_nome']; - -/** What happens after this? - * ------------------------ - * 1. ProcessWire loads your page's template file (i.e. basic-page.php). - * 2. ProcessWire loads the _main.php file - */ +$configuracion = getConfig($inicio); +$titulo = $page->title . ' - ' . $configuracion['sitio_nome']; \ No newline at end of file diff --git a/site/templates/layout/main.php b/site/templates/layout/main.php index 852ebef..df111cb 100644 --- a/site/templates/layout/main.php +++ b/site/templates/layout/main.php @@ -1,24 +1,17 @@ -
    - +
    + +
    + -
    - - - - - - \ No newline at end of file diff --git a/site/templates/layout/partial/main_head.php b/site/templates/layout/partial/main_head.php deleted file mode 100644 index be36c53..0000000 --- a/site/templates/layout/partial/main_head.php +++ /dev/null @@ -1,143 +0,0 @@ -get->logout == true) -{ - $session->logout(); - $session->redirect($inicio->url); -} -?> - - - <?php echo $titulo; ?> - - - - - - - - - - - - - - - - - - - - - - - - - -viewable($idioma)): continue; endif; ?> - - - - - - - - - - - -
    - -
    - - - - - <?php echo _x('Logo of Praia de Seselle Tourist Apartments', 'Site logo'); ?> - -

    -
    -
    - - -
    -
    -
    -
    - -
    -
    -
    diff --git a/site/templates/layout/partial/xes-foot.php b/site/templates/layout/partial/xes-foot.php deleted file mode 100644 index dbf15c6..0000000 --- a/site/templates/layout/partial/xes-foot.php +++ /dev/null @@ -1,14 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/site/templates/layout/partial/xes-head.php b/site/templates/layout/partial/xes-head.php deleted file mode 100644 index e40fdaa..0000000 --- a/site/templates/layout/partial/xes-head.php +++ /dev/null @@ -1,51 +0,0 @@ - - - - <?php echo $titulo; ?> - - - - - - - - - - - - -
    -
    - - -
    - - - -
    - -
    -
    \ No newline at end of file diff --git a/site/templates/layout/xes.php b/site/templates/layout/xes.php deleted file mode 100644 index ef2f66a..0000000 --- a/site/templates/layout/xes.php +++ /dev/null @@ -1,11 +0,0 @@ -children, 0, 'paxinas'); - -include('./layout/partial/xes-head.php'); -?> -
    - -
    - * { - box-sizing: border-box; - flex-shrink: 0; - width: 100%; - max-width: 100%; - padding-right: calc(var(--bs-gutter-x) * 0.5); - padding-left: calc(var(--bs-gutter-x) * 0.5); - margin-top: var(--bs-gutter-y); -} - -.col { - flex: 1 0 0%; -} - -.row-cols-auto > * { - flex: 0 0 auto; - width: auto; -} - -.row-cols-1 > * { - flex: 0 0 auto; - width: 100%; -} - -.row-cols-2 > * { - flex: 0 0 auto; - width: 50%; -} - -.row-cols-3 > * { - flex: 0 0 auto; - width: 33.3333333333%; -} - -.row-cols-4 > * { - flex: 0 0 auto; - width: 25%; -} - -.row-cols-5 > * { - flex: 0 0 auto; - width: 20%; -} - -.row-cols-6 > * { - flex: 0 0 auto; - width: 16.6666666667%; -} - -.col-auto { - flex: 0 0 auto; - width: auto; -} - -.col-1 { - flex: 0 0 auto; - width: 8.33333333%; -} - -.col-2 { - flex: 0 0 auto; - width: 16.66666667%; -} - -.col-3 { - flex: 0 0 auto; - width: 25%; -} - -.col-4 { - flex: 0 0 auto; - width: 33.33333333%; -} - -.col-5 { - flex: 0 0 auto; - width: 41.66666667%; -} - -.col-6 { - flex: 0 0 auto; - width: 50%; -} - -.col-7 { - flex: 0 0 auto; - width: 58.33333333%; -} - -.col-8 { - flex: 0 0 auto; - width: 66.66666667%; -} - -.col-9 { - flex: 0 0 auto; - width: 75%; -} - -.col-10 { - flex: 0 0 auto; - width: 83.33333333%; -} - -.col-11 { - flex: 0 0 auto; - width: 91.66666667%; -} - -.col-12 { - flex: 0 0 auto; - width: 100%; -} - -.offset-1 { - margin-left: 8.33333333%; -} - -.offset-2 { - margin-left: 16.66666667%; -} - -.offset-3 { - margin-left: 25%; -} - -.offset-4 { - margin-left: 33.33333333%; -} - -.offset-5 { - margin-left: 41.66666667%; -} - -.offset-6 { - margin-left: 50%; -} - -.offset-7 { - margin-left: 58.33333333%; -} - -.offset-8 { - margin-left: 66.66666667%; -} - -.offset-9 { - margin-left: 75%; -} - -.offset-10 { - margin-left: 83.33333333%; -} - -.offset-11 { - margin-left: 91.66666667%; -} - -.g-0, -.gx-0 { - --bs-gutter-x: 0; -} - -.g-0, -.gy-0 { - --bs-gutter-y: 0; -} - -.g-1, -.gx-1 { - --bs-gutter-x: 0.25rem; -} - -.g-1, -.gy-1 { - --bs-gutter-y: 0.25rem; -} - -.g-2, -.gx-2 { - --bs-gutter-x: 0.5rem; -} - -.g-2, -.gy-2 { - --bs-gutter-y: 0.5rem; -} - -.g-3, -.gx-3 { - --bs-gutter-x: 1rem; -} - -.g-3, -.gy-3 { - --bs-gutter-y: 1rem; -} - -.g-4, -.gx-4 { - --bs-gutter-x: 1.5rem; -} - -.g-4, -.gy-4 { - --bs-gutter-y: 1.5rem; -} - -.g-5, -.gx-5 { - --bs-gutter-x: 3rem; -} - -.g-5, -.gy-5 { - --bs-gutter-y: 3rem; -} - -@media (min-width: 576px) { - .col-sm { - flex: 1 0 0%; - } - .row-cols-sm-auto > * { - flex: 0 0 auto; - width: auto; - } - .row-cols-sm-1 > * { - flex: 0 0 auto; - width: 100%; - } - .row-cols-sm-2 > * { - flex: 0 0 auto; - width: 50%; - } - .row-cols-sm-3 > * { - flex: 0 0 auto; - width: 33.3333333333%; - } - .row-cols-sm-4 > * { - flex: 0 0 auto; - width: 25%; - } - .row-cols-sm-5 > * { - flex: 0 0 auto; - width: 20%; - } - .row-cols-sm-6 > * { - flex: 0 0 auto; - width: 16.6666666667%; - } - .col-sm-auto { - flex: 0 0 auto; - width: auto; - } - .col-sm-1 { - flex: 0 0 auto; - width: 8.33333333%; - } - .col-sm-2 { - flex: 0 0 auto; - width: 16.66666667%; - } - .col-sm-3 { - flex: 0 0 auto; - width: 25%; - } - .col-sm-4 { - flex: 0 0 auto; - width: 33.33333333%; - } - .col-sm-5 { - flex: 0 0 auto; - width: 41.66666667%; - } - .col-sm-6 { - flex: 0 0 auto; - width: 50%; - } - .col-sm-7 { - flex: 0 0 auto; - width: 58.33333333%; - } - .col-sm-8 { - flex: 0 0 auto; - width: 66.66666667%; - } - .col-sm-9 { - flex: 0 0 auto; - width: 75%; - } - .col-sm-10 { - flex: 0 0 auto; - width: 83.33333333%; - } - .col-sm-11 { - flex: 0 0 auto; - width: 91.66666667%; - } - .col-sm-12 { - flex: 0 0 auto; - width: 100%; - } - .offset-sm-0 { - margin-left: 0; - } - .offset-sm-1 { - margin-left: 8.33333333%; - } - .offset-sm-2 { - margin-left: 16.66666667%; - } - .offset-sm-3 { - margin-left: 25%; - } - .offset-sm-4 { - margin-left: 33.33333333%; - } - .offset-sm-5 { - margin-left: 41.66666667%; - } - .offset-sm-6 { - margin-left: 50%; - } - .offset-sm-7 { - margin-left: 58.33333333%; - } - .offset-sm-8 { - margin-left: 66.66666667%; - } - .offset-sm-9 { - margin-left: 75%; - } - .offset-sm-10 { - margin-left: 83.33333333%; - } - .offset-sm-11 { - margin-left: 91.66666667%; - } - .g-sm-0, - .gx-sm-0 { - --bs-gutter-x: 0; - } - .g-sm-0, - .gy-sm-0 { - --bs-gutter-y: 0; - } - .g-sm-1, - .gx-sm-1 { - --bs-gutter-x: 0.25rem; - } - .g-sm-1, - .gy-sm-1 { - --bs-gutter-y: 0.25rem; - } - .g-sm-2, - .gx-sm-2 { - --bs-gutter-x: 0.5rem; - } - .g-sm-2, - .gy-sm-2 { - --bs-gutter-y: 0.5rem; - } - .g-sm-3, - .gx-sm-3 { - --bs-gutter-x: 1rem; - } - .g-sm-3, - .gy-sm-3 { - --bs-gutter-y: 1rem; - } - .g-sm-4, - .gx-sm-4 { - --bs-gutter-x: 1.5rem; - } - .g-sm-4, - .gy-sm-4 { - --bs-gutter-y: 1.5rem; - } - .g-sm-5, - .gx-sm-5 { - --bs-gutter-x: 3rem; - } - .g-sm-5, - .gy-sm-5 { - --bs-gutter-y: 3rem; - } -} -@media (min-width: 768px) { - .col-md { - flex: 1 0 0%; - } - .row-cols-md-auto > * { - flex: 0 0 auto; - width: auto; - } - .row-cols-md-1 > * { - flex: 0 0 auto; - width: 100%; - } - .row-cols-md-2 > * { - flex: 0 0 auto; - width: 50%; - } - .row-cols-md-3 > * { - flex: 0 0 auto; - width: 33.3333333333%; - } - .row-cols-md-4 > * { - flex: 0 0 auto; - width: 25%; - } - .row-cols-md-5 > * { - flex: 0 0 auto; - width: 20%; - } - .row-cols-md-6 > * { - flex: 0 0 auto; - width: 16.6666666667%; - } - .col-md-auto { - flex: 0 0 auto; - width: auto; - } - .col-md-1 { - flex: 0 0 auto; - width: 8.33333333%; - } - .col-md-2 { - flex: 0 0 auto; - width: 16.66666667%; - } - .col-md-3 { - flex: 0 0 auto; - width: 25%; - } - .col-md-4 { - flex: 0 0 auto; - width: 33.33333333%; - } - .col-md-5 { - flex: 0 0 auto; - width: 41.66666667%; - } - .col-md-6 { - flex: 0 0 auto; - width: 50%; - } - .col-md-7 { - flex: 0 0 auto; - width: 58.33333333%; - } - .col-md-8 { - flex: 0 0 auto; - width: 66.66666667%; - } - .col-md-9 { - flex: 0 0 auto; - width: 75%; - } - .col-md-10 { - flex: 0 0 auto; - width: 83.33333333%; - } - .col-md-11 { - flex: 0 0 auto; - width: 91.66666667%; - } - .col-md-12 { - flex: 0 0 auto; - width: 100%; - } - .offset-md-0 { - margin-left: 0; - } - .offset-md-1 { - margin-left: 8.33333333%; - } - .offset-md-2 { - margin-left: 16.66666667%; - } - .offset-md-3 { - margin-left: 25%; - } - .offset-md-4 { - margin-left: 33.33333333%; - } - .offset-md-5 { - margin-left: 41.66666667%; - } - .offset-md-6 { - margin-left: 50%; - } - .offset-md-7 { - margin-left: 58.33333333%; - } - .offset-md-8 { - margin-left: 66.66666667%; - } - .offset-md-9 { - margin-left: 75%; - } - .offset-md-10 { - margin-left: 83.33333333%; - } - .offset-md-11 { - margin-left: 91.66666667%; - } - .g-md-0, - .gx-md-0 { - --bs-gutter-x: 0; - } - .g-md-0, - .gy-md-0 { - --bs-gutter-y: 0; - } - .g-md-1, - .gx-md-1 { - --bs-gutter-x: 0.25rem; - } - .g-md-1, - .gy-md-1 { - --bs-gutter-y: 0.25rem; - } - .g-md-2, - .gx-md-2 { - --bs-gutter-x: 0.5rem; - } - .g-md-2, - .gy-md-2 { - --bs-gutter-y: 0.5rem; - } - .g-md-3, - .gx-md-3 { - --bs-gutter-x: 1rem; - } - .g-md-3, - .gy-md-3 { - --bs-gutter-y: 1rem; - } - .g-md-4, - .gx-md-4 { - --bs-gutter-x: 1.5rem; - } - .g-md-4, - .gy-md-4 { - --bs-gutter-y: 1.5rem; - } - .g-md-5, - .gx-md-5 { - --bs-gutter-x: 3rem; - } - .g-md-5, - .gy-md-5 { - --bs-gutter-y: 3rem; - } -} -@media (min-width: 992px) { - .col-lg { - flex: 1 0 0%; - } - .row-cols-lg-auto > * { - flex: 0 0 auto; - width: auto; - } - .row-cols-lg-1 > * { - flex: 0 0 auto; - width: 100%; - } - .row-cols-lg-2 > * { - flex: 0 0 auto; - width: 50%; - } - .row-cols-lg-3 > * { - flex: 0 0 auto; - width: 33.3333333333%; - } - .row-cols-lg-4 > * { - flex: 0 0 auto; - width: 25%; - } - .row-cols-lg-5 > * { - flex: 0 0 auto; - width: 20%; - } - .row-cols-lg-6 > * { - flex: 0 0 auto; - width: 16.6666666667%; - } - .col-lg-auto { - flex: 0 0 auto; - width: auto; - } - .col-lg-1 { - flex: 0 0 auto; - width: 8.33333333%; - } - .col-lg-2 { - flex: 0 0 auto; - width: 16.66666667%; - } - .col-lg-3 { - flex: 0 0 auto; - width: 25%; - } - .col-lg-4 { - flex: 0 0 auto; - width: 33.33333333%; - } - .col-lg-5 { - flex: 0 0 auto; - width: 41.66666667%; - } - .col-lg-6 { - flex: 0 0 auto; - width: 50%; - } - .col-lg-7 { - flex: 0 0 auto; - width: 58.33333333%; - } - .col-lg-8 { - flex: 0 0 auto; - width: 66.66666667%; - } - .col-lg-9 { - flex: 0 0 auto; - width: 75%; - } - .col-lg-10 { - flex: 0 0 auto; - width: 83.33333333%; - } - .col-lg-11 { - flex: 0 0 auto; - width: 91.66666667%; - } - .col-lg-12 { - flex: 0 0 auto; - width: 100%; - } - .offset-lg-0 { - margin-left: 0; - } - .offset-lg-1 { - margin-left: 8.33333333%; - } - .offset-lg-2 { - margin-left: 16.66666667%; - } - .offset-lg-3 { - margin-left: 25%; - } - .offset-lg-4 { - margin-left: 33.33333333%; - } - .offset-lg-5 { - margin-left: 41.66666667%; - } - .offset-lg-6 { - margin-left: 50%; - } - .offset-lg-7 { - margin-left: 58.33333333%; - } - .offset-lg-8 { - margin-left: 66.66666667%; - } - .offset-lg-9 { - margin-left: 75%; - } - .offset-lg-10 { - margin-left: 83.33333333%; - } - .offset-lg-11 { - margin-left: 91.66666667%; - } - .g-lg-0, - .gx-lg-0 { - --bs-gutter-x: 0; - } - .g-lg-0, - .gy-lg-0 { - --bs-gutter-y: 0; - } - .g-lg-1, - .gx-lg-1 { - --bs-gutter-x: 0.25rem; - } - .g-lg-1, - .gy-lg-1 { - --bs-gutter-y: 0.25rem; - } - .g-lg-2, - .gx-lg-2 { - --bs-gutter-x: 0.5rem; - } - .g-lg-2, - .gy-lg-2 { - --bs-gutter-y: 0.5rem; - } - .g-lg-3, - .gx-lg-3 { - --bs-gutter-x: 1rem; - } - .g-lg-3, - .gy-lg-3 { - --bs-gutter-y: 1rem; - } - .g-lg-4, - .gx-lg-4 { - --bs-gutter-x: 1.5rem; - } - .g-lg-4, - .gy-lg-4 { - --bs-gutter-y: 1.5rem; - } - .g-lg-5, - .gx-lg-5 { - --bs-gutter-x: 3rem; - } - .g-lg-5, - .gy-lg-5 { - --bs-gutter-y: 3rem; - } -} -@media (min-width: 1200px) { - .col-xl { - flex: 1 0 0%; - } - .row-cols-xl-auto > * { - flex: 0 0 auto; - width: auto; - } - .row-cols-xl-1 > * { - flex: 0 0 auto; - width: 100%; - } - .row-cols-xl-2 > * { - flex: 0 0 auto; - width: 50%; - } - .row-cols-xl-3 > * { - flex: 0 0 auto; - width: 33.3333333333%; - } - .row-cols-xl-4 > * { - flex: 0 0 auto; - width: 25%; - } - .row-cols-xl-5 > * { - flex: 0 0 auto; - width: 20%; - } - .row-cols-xl-6 > * { - flex: 0 0 auto; - width: 16.6666666667%; - } - .col-xl-auto { - flex: 0 0 auto; - width: auto; - } - .col-xl-1 { - flex: 0 0 auto; - width: 8.33333333%; - } - .col-xl-2 { - flex: 0 0 auto; - width: 16.66666667%; - } - .col-xl-3 { - flex: 0 0 auto; - width: 25%; - } - .col-xl-4 { - flex: 0 0 auto; - width: 33.33333333%; - } - .col-xl-5 { - flex: 0 0 auto; - width: 41.66666667%; - } - .col-xl-6 { - flex: 0 0 auto; - width: 50%; - } - .col-xl-7 { - flex: 0 0 auto; - width: 58.33333333%; - } - .col-xl-8 { - flex: 0 0 auto; - width: 66.66666667%; - } - .col-xl-9 { - flex: 0 0 auto; - width: 75%; - } - .col-xl-10 { - flex: 0 0 auto; - width: 83.33333333%; - } - .col-xl-11 { - flex: 0 0 auto; - width: 91.66666667%; - } - .col-xl-12 { - flex: 0 0 auto; - width: 100%; - } - .offset-xl-0 { - margin-left: 0; - } - .offset-xl-1 { - margin-left: 8.33333333%; - } - .offset-xl-2 { - margin-left: 16.66666667%; - } - .offset-xl-3 { - margin-left: 25%; - } - .offset-xl-4 { - margin-left: 33.33333333%; - } - .offset-xl-5 { - margin-left: 41.66666667%; - } - .offset-xl-6 { - margin-left: 50%; - } - .offset-xl-7 { - margin-left: 58.33333333%; - } - .offset-xl-8 { - margin-left: 66.66666667%; - } - .offset-xl-9 { - margin-left: 75%; - } - .offset-xl-10 { - margin-left: 83.33333333%; - } - .offset-xl-11 { - margin-left: 91.66666667%; - } - .g-xl-0, - .gx-xl-0 { - --bs-gutter-x: 0; - } - .g-xl-0, - .gy-xl-0 { - --bs-gutter-y: 0; - } - .g-xl-1, - .gx-xl-1 { - --bs-gutter-x: 0.25rem; - } - .g-xl-1, - .gy-xl-1 { - --bs-gutter-y: 0.25rem; - } - .g-xl-2, - .gx-xl-2 { - --bs-gutter-x: 0.5rem; - } - .g-xl-2, - .gy-xl-2 { - --bs-gutter-y: 0.5rem; - } - .g-xl-3, - .gx-xl-3 { - --bs-gutter-x: 1rem; - } - .g-xl-3, - .gy-xl-3 { - --bs-gutter-y: 1rem; - } - .g-xl-4, - .gx-xl-4 { - --bs-gutter-x: 1.5rem; - } - .g-xl-4, - .gy-xl-4 { - --bs-gutter-y: 1.5rem; - } - .g-xl-5, - .gx-xl-5 { - --bs-gutter-x: 3rem; - } - .g-xl-5, - .gy-xl-5 { - --bs-gutter-y: 3rem; - } -} -@media (min-width: 1400px) { - .col-xxl { - flex: 1 0 0%; - } - .row-cols-xxl-auto > * { - flex: 0 0 auto; - width: auto; - } - .row-cols-xxl-1 > * { - flex: 0 0 auto; - width: 100%; - } - .row-cols-xxl-2 > * { - flex: 0 0 auto; - width: 50%; - } - .row-cols-xxl-3 > * { - flex: 0 0 auto; - width: 33.3333333333%; - } - .row-cols-xxl-4 > * { - flex: 0 0 auto; - width: 25%; - } - .row-cols-xxl-5 > * { - flex: 0 0 auto; - width: 20%; - } - .row-cols-xxl-6 > * { - flex: 0 0 auto; - width: 16.6666666667%; - } - .col-xxl-auto { - flex: 0 0 auto; - width: auto; - } - .col-xxl-1 { - flex: 0 0 auto; - width: 8.33333333%; - } - .col-xxl-2 { - flex: 0 0 auto; - width: 16.66666667%; - } - .col-xxl-3 { - flex: 0 0 auto; - width: 25%; - } - .col-xxl-4 { - flex: 0 0 auto; - width: 33.33333333%; - } - .col-xxl-5 { - flex: 0 0 auto; - width: 41.66666667%; - } - .col-xxl-6 { - flex: 0 0 auto; - width: 50%; - } - .col-xxl-7 { - flex: 0 0 auto; - width: 58.33333333%; - } - .col-xxl-8 { - flex: 0 0 auto; - width: 66.66666667%; - } - .col-xxl-9 { - flex: 0 0 auto; - width: 75%; - } - .col-xxl-10 { - flex: 0 0 auto; - width: 83.33333333%; - } - .col-xxl-11 { - flex: 0 0 auto; - width: 91.66666667%; - } - .col-xxl-12 { - flex: 0 0 auto; - width: 100%; - } - .offset-xxl-0 { - margin-left: 0; - } - .offset-xxl-1 { - margin-left: 8.33333333%; - } - .offset-xxl-2 { - margin-left: 16.66666667%; - } - .offset-xxl-3 { - margin-left: 25%; - } - .offset-xxl-4 { - margin-left: 33.33333333%; - } - .offset-xxl-5 { - margin-left: 41.66666667%; - } - .offset-xxl-6 { - margin-left: 50%; - } - .offset-xxl-7 { - margin-left: 58.33333333%; - } - .offset-xxl-8 { - margin-left: 66.66666667%; - } - .offset-xxl-9 { - margin-left: 75%; - } - .offset-xxl-10 { - margin-left: 83.33333333%; - } - .offset-xxl-11 { - margin-left: 91.66666667%; - } - .g-xxl-0, - .gx-xxl-0 { - --bs-gutter-x: 0; - } - .g-xxl-0, - .gy-xxl-0 { - --bs-gutter-y: 0; - } - .g-xxl-1, - .gx-xxl-1 { - --bs-gutter-x: 0.25rem; - } - .g-xxl-1, - .gy-xxl-1 { - --bs-gutter-y: 0.25rem; - } - .g-xxl-2, - .gx-xxl-2 { - --bs-gutter-x: 0.5rem; - } - .g-xxl-2, - .gy-xxl-2 { - --bs-gutter-y: 0.5rem; - } - .g-xxl-3, - .gx-xxl-3 { - --bs-gutter-x: 1rem; - } - .g-xxl-3, - .gy-xxl-3 { - --bs-gutter-y: 1rem; - } - .g-xxl-4, - .gx-xxl-4 { - --bs-gutter-x: 1.5rem; - } - .g-xxl-4, - .gy-xxl-4 { - --bs-gutter-y: 1.5rem; - } - .g-xxl-5, - .gx-xxl-5 { - --bs-gutter-x: 3rem; - } - .g-xxl-5, - .gy-xxl-5 { - --bs-gutter-y: 3rem; - } -} -.d-inline { - display: inline !important; -} - -.d-inline-block { - display: inline-block !important; -} - -.d-block { - display: block !important; -} - -.d-grid { - display: grid !important; -} - -.d-table { - display: table !important; -} - -.d-table-row { - display: table-row !important; -} - -.d-table-cell { - display: table-cell !important; -} - -.d-flex { - display: flex !important; -} - -.d-inline-flex { - display: inline-flex !important; -} - -.d-none { - display: none !important; -} - -.flex-fill { - flex: 1 1 auto !important; -} - -.flex-row { - flex-direction: row !important; -} - -.flex-column { - flex-direction: column !important; -} - -.flex-row-reverse { - flex-direction: row-reverse !important; -} - -.flex-column-reverse { - flex-direction: column-reverse !important; -} - -.flex-grow-0 { - flex-grow: 0 !important; -} - -.flex-grow-1 { - flex-grow: 1 !important; -} - -.flex-shrink-0 { - flex-shrink: 0 !important; -} - -.flex-shrink-1 { - flex-shrink: 1 !important; -} - -.flex-wrap { - flex-wrap: wrap !important; -} - -.flex-nowrap { - flex-wrap: nowrap !important; -} - -.flex-wrap-reverse { - flex-wrap: wrap-reverse !important; -} - -.justify-content-start { - justify-content: flex-start !important; -} - -.justify-content-end { - justify-content: flex-end !important; -} - -.justify-content-center { - justify-content: center !important; -} - -.justify-content-between { - justify-content: space-between !important; -} - -.justify-content-around { - justify-content: space-around !important; -} - -.justify-content-evenly { - justify-content: space-evenly !important; -} - -.align-items-start { - align-items: flex-start !important; -} - -.align-items-end { - align-items: flex-end !important; -} - -.align-items-center { - align-items: center !important; -} - -.align-items-baseline { - align-items: baseline !important; -} - -.align-items-stretch { - align-items: stretch !important; -} - -.align-content-start { - align-content: flex-start !important; -} - -.align-content-end { - align-content: flex-end !important; -} - -.align-content-center { - align-content: center !important; -} - -.align-content-between { - align-content: space-between !important; -} - -.align-content-around { - align-content: space-around !important; -} - -.align-content-stretch { - align-content: stretch !important; -} - -.align-self-auto { - align-self: auto !important; -} - -.align-self-start { - align-self: flex-start !important; -} - -.align-self-end { - align-self: flex-end !important; -} - -.align-self-center { - align-self: center !important; -} - -.align-self-baseline { - align-self: baseline !important; -} - -.align-self-stretch { - align-self: stretch !important; -} - -.order-first { - order: -1 !important; -} - -.order-0 { - order: 0 !important; -} - -.order-1 { - order: 1 !important; -} - -.order-2 { - order: 2 !important; -} - -.order-3 { - order: 3 !important; -} - -.order-4 { - order: 4 !important; -} - -.order-5 { - order: 5 !important; -} - -.order-last { - order: 6 !important; -} - -.m-0 { - margin: 0 !important; -} - -.m-1 { - margin: 0.25rem !important; -} - -.m-2 { - margin: 0.5rem !important; -} - -.m-3 { - margin: 1rem !important; -} - -.m-4 { - margin: 1.5rem !important; -} - -.m-5 { - margin: 3rem !important; -} - -.m-auto { - margin: auto !important; -} - -.mx-0 { - margin-right: 0 !important; - margin-left: 0 !important; -} - -.mx-1 { - margin-right: 0.25rem !important; - margin-left: 0.25rem !important; -} - -.mx-2 { - margin-right: 0.5rem !important; - margin-left: 0.5rem !important; -} - -.mx-3 { - margin-right: 1rem !important; - margin-left: 1rem !important; -} - -.mx-4 { - margin-right: 1.5rem !important; - margin-left: 1.5rem !important; -} - -.mx-5 { - margin-right: 3rem !important; - margin-left: 3rem !important; -} - -.mx-auto { - margin-right: auto !important; - margin-left: auto !important; -} - -.my-0 { - margin-top: 0 !important; - margin-bottom: 0 !important; -} - -.my-1 { - margin-top: 0.25rem !important; - margin-bottom: 0.25rem !important; -} - -.my-2 { - margin-top: 0.5rem !important; - margin-bottom: 0.5rem !important; -} - -.my-3 { - margin-top: 1rem !important; - margin-bottom: 1rem !important; -} - -.my-4 { - margin-top: 1.5rem !important; - margin-bottom: 1.5rem !important; -} - -.my-5 { - margin-top: 3rem !important; - margin-bottom: 3rem !important; -} - -.my-auto { - margin-top: auto !important; - margin-bottom: auto !important; -} - -.mt-0 { - margin-top: 0 !important; -} - -.mt-1 { - margin-top: 0.25rem !important; -} - -.mt-2 { - margin-top: 0.5rem !important; -} - -.mt-3 { - margin-top: 1rem !important; -} - -.mt-4 { - margin-top: 1.5rem !important; -} - -.mt-5 { - margin-top: 3rem !important; -} - -.mt-auto { - margin-top: auto !important; -} - -.me-0 { - margin-right: 0 !important; -} - -.me-1 { - margin-right: 0.25rem !important; -} - -.me-2 { - margin-right: 0.5rem !important; -} - -.me-3 { - margin-right: 1rem !important; -} - -.me-4 { - margin-right: 1.5rem !important; -} - -.me-5 { - margin-right: 3rem !important; -} - -.me-auto { - margin-right: auto !important; -} - -.mb-0 { - margin-bottom: 0 !important; -} - -.mb-1 { - margin-bottom: 0.25rem !important; -} - -.mb-2 { - margin-bottom: 0.5rem !important; -} - -.mb-3 { - margin-bottom: 1rem !important; -} - -.mb-4 { - margin-bottom: 1.5rem !important; -} - -.mb-5 { - margin-bottom: 3rem !important; -} - -.mb-auto { - margin-bottom: auto !important; -} - -.ms-0 { - margin-left: 0 !important; -} - -.ms-1 { - margin-left: 0.25rem !important; -} - -.ms-2 { - margin-left: 0.5rem !important; -} - -.ms-3 { - margin-left: 1rem !important; -} - -.ms-4 { - margin-left: 1.5rem !important; -} - -.ms-5 { - margin-left: 3rem !important; -} - -.ms-auto { - margin-left: auto !important; -} - -.p-0 { - padding: 0 !important; -} - -.p-1 { - padding: 0.25rem !important; -} - -.p-2 { - padding: 0.5rem !important; -} - -.p-3 { - padding: 1rem !important; -} - -.p-4 { - padding: 1.5rem !important; -} - -.p-5 { - padding: 3rem !important; -} - -.px-0 { - padding-right: 0 !important; - padding-left: 0 !important; -} - -.px-1 { - padding-right: 0.25rem !important; - padding-left: 0.25rem !important; -} - -.px-2 { - padding-right: 0.5rem !important; - padding-left: 0.5rem !important; -} - -.px-3 { - padding-right: 1rem !important; - padding-left: 1rem !important; -} - -.px-4 { - padding-right: 1.5rem !important; - padding-left: 1.5rem !important; -} - -.px-5 { - padding-right: 3rem !important; - padding-left: 3rem !important; -} - -.py-0 { - padding-top: 0 !important; - padding-bottom: 0 !important; -} - -.py-1 { - padding-top: 0.25rem !important; - padding-bottom: 0.25rem !important; -} - -.py-2 { - padding-top: 0.5rem !important; - padding-bottom: 0.5rem !important; -} - -.py-3 { - padding-top: 1rem !important; - padding-bottom: 1rem !important; -} - -.py-4 { - padding-top: 1.5rem !important; - padding-bottom: 1.5rem !important; -} - -.py-5 { - padding-top: 3rem !important; - padding-bottom: 3rem !important; -} - -.pt-0 { - padding-top: 0 !important; -} - -.pt-1 { - padding-top: 0.25rem !important; -} - -.pt-2 { - padding-top: 0.5rem !important; -} - -.pt-3 { - padding-top: 1rem !important; -} - -.pt-4 { - padding-top: 1.5rem !important; -} - -.pt-5 { - padding-top: 3rem !important; -} - -.pe-0 { - padding-right: 0 !important; -} - -.pe-1 { - padding-right: 0.25rem !important; -} - -.pe-2 { - padding-right: 0.5rem !important; -} - -.pe-3 { - padding-right: 1rem !important; -} - -.pe-4 { - padding-right: 1.5rem !important; -} - -.pe-5 { - padding-right: 3rem !important; -} - -.pb-0 { - padding-bottom: 0 !important; -} - -.pb-1 { - padding-bottom: 0.25rem !important; -} - -.pb-2 { - padding-bottom: 0.5rem !important; -} - -.pb-3 { - padding-bottom: 1rem !important; -} - -.pb-4 { - padding-bottom: 1.5rem !important; -} - -.pb-5 { - padding-bottom: 3rem !important; -} - -.ps-0 { - padding-left: 0 !important; -} - -.ps-1 { - padding-left: 0.25rem !important; -} - -.ps-2 { - padding-left: 0.5rem !important; -} - -.ps-3 { - padding-left: 1rem !important; -} - -.ps-4 { - padding-left: 1.5rem !important; -} - -.ps-5 { - padding-left: 3rem !important; -} - -@media (min-width: 576px) { - .d-sm-inline { - display: inline !important; - } - .d-sm-inline-block { - display: inline-block !important; - } - .d-sm-block { - display: block !important; - } - .d-sm-grid { - display: grid !important; - } - .d-sm-table { - display: table !important; - } - .d-sm-table-row { - display: table-row !important; - } - .d-sm-table-cell { - display: table-cell !important; - } - .d-sm-flex { - display: flex !important; - } - .d-sm-inline-flex { - display: inline-flex !important; - } - .d-sm-none { - display: none !important; - } - .flex-sm-fill { - flex: 1 1 auto !important; - } - .flex-sm-row { - flex-direction: row !important; - } - .flex-sm-column { - flex-direction: column !important; - } - .flex-sm-row-reverse { - flex-direction: row-reverse !important; - } - .flex-sm-column-reverse { - flex-direction: column-reverse !important; - } - .flex-sm-grow-0 { - flex-grow: 0 !important; - } - .flex-sm-grow-1 { - flex-grow: 1 !important; - } - .flex-sm-shrink-0 { - flex-shrink: 0 !important; - } - .flex-sm-shrink-1 { - flex-shrink: 1 !important; - } - .flex-sm-wrap { - flex-wrap: wrap !important; - } - .flex-sm-nowrap { - flex-wrap: nowrap !important; - } - .flex-sm-wrap-reverse { - flex-wrap: wrap-reverse !important; - } - .justify-content-sm-start { - justify-content: flex-start !important; - } - .justify-content-sm-end { - justify-content: flex-end !important; - } - .justify-content-sm-center { - justify-content: center !important; - } - .justify-content-sm-between { - justify-content: space-between !important; - } - .justify-content-sm-around { - justify-content: space-around !important; - } - .justify-content-sm-evenly { - justify-content: space-evenly !important; - } - .align-items-sm-start { - align-items: flex-start !important; - } - .align-items-sm-end { - align-items: flex-end !important; - } - .align-items-sm-center { - align-items: center !important; - } - .align-items-sm-baseline { - align-items: baseline !important; - } - .align-items-sm-stretch { - align-items: stretch !important; - } - .align-content-sm-start { - align-content: flex-start !important; - } - .align-content-sm-end { - align-content: flex-end !important; - } - .align-content-sm-center { - align-content: center !important; - } - .align-content-sm-between { - align-content: space-between !important; - } - .align-content-sm-around { - align-content: space-around !important; - } - .align-content-sm-stretch { - align-content: stretch !important; - } - .align-self-sm-auto { - align-self: auto !important; - } - .align-self-sm-start { - align-self: flex-start !important; - } - .align-self-sm-end { - align-self: flex-end !important; - } - .align-self-sm-center { - align-self: center !important; - } - .align-self-sm-baseline { - align-self: baseline !important; - } - .align-self-sm-stretch { - align-self: stretch !important; - } - .order-sm-first { - order: -1 !important; - } - .order-sm-0 { - order: 0 !important; - } - .order-sm-1 { - order: 1 !important; - } - .order-sm-2 { - order: 2 !important; - } - .order-sm-3 { - order: 3 !important; - } - .order-sm-4 { - order: 4 !important; - } - .order-sm-5 { - order: 5 !important; - } - .order-sm-last { - order: 6 !important; - } - .m-sm-0 { - margin: 0 !important; - } - .m-sm-1 { - margin: 0.25rem !important; - } - .m-sm-2 { - margin: 0.5rem !important; - } - .m-sm-3 { - margin: 1rem !important; - } - .m-sm-4 { - margin: 1.5rem !important; - } - .m-sm-5 { - margin: 3rem !important; - } - .m-sm-auto { - margin: auto !important; - } - .mx-sm-0 { - margin-right: 0 !important; - margin-left: 0 !important; - } - .mx-sm-1 { - margin-right: 0.25rem !important; - margin-left: 0.25rem !important; - } - .mx-sm-2 { - margin-right: 0.5rem !important; - margin-left: 0.5rem !important; - } - .mx-sm-3 { - margin-right: 1rem !important; - margin-left: 1rem !important; - } - .mx-sm-4 { - margin-right: 1.5rem !important; - margin-left: 1.5rem !important; - } - .mx-sm-5 { - margin-right: 3rem !important; - margin-left: 3rem !important; - } - .mx-sm-auto { - margin-right: auto !important; - margin-left: auto !important; - } - .my-sm-0 { - margin-top: 0 !important; - margin-bottom: 0 !important; - } - .my-sm-1 { - margin-top: 0.25rem !important; - margin-bottom: 0.25rem !important; - } - .my-sm-2 { - margin-top: 0.5rem !important; - margin-bottom: 0.5rem !important; - } - .my-sm-3 { - margin-top: 1rem !important; - margin-bottom: 1rem !important; - } - .my-sm-4 { - margin-top: 1.5rem !important; - margin-bottom: 1.5rem !important; - } - .my-sm-5 { - margin-top: 3rem !important; - margin-bottom: 3rem !important; - } - .my-sm-auto { - margin-top: auto !important; - margin-bottom: auto !important; - } - .mt-sm-0 { - margin-top: 0 !important; - } - .mt-sm-1 { - margin-top: 0.25rem !important; - } - .mt-sm-2 { - margin-top: 0.5rem !important; - } - .mt-sm-3 { - margin-top: 1rem !important; - } - .mt-sm-4 { - margin-top: 1.5rem !important; - } - .mt-sm-5 { - margin-top: 3rem !important; - } - .mt-sm-auto { - margin-top: auto !important; - } - .me-sm-0 { - margin-right: 0 !important; - } - .me-sm-1 { - margin-right: 0.25rem !important; - } - .me-sm-2 { - margin-right: 0.5rem !important; - } - .me-sm-3 { - margin-right: 1rem !important; - } - .me-sm-4 { - margin-right: 1.5rem !important; - } - .me-sm-5 { - margin-right: 3rem !important; - } - .me-sm-auto { - margin-right: auto !important; - } - .mb-sm-0 { - margin-bottom: 0 !important; - } - .mb-sm-1 { - margin-bottom: 0.25rem !important; - } - .mb-sm-2 { - margin-bottom: 0.5rem !important; - } - .mb-sm-3 { - margin-bottom: 1rem !important; - } - .mb-sm-4 { - margin-bottom: 1.5rem !important; - } - .mb-sm-5 { - margin-bottom: 3rem !important; - } - .mb-sm-auto { - margin-bottom: auto !important; - } - .ms-sm-0 { - margin-left: 0 !important; - } - .ms-sm-1 { - margin-left: 0.25rem !important; - } - .ms-sm-2 { - margin-left: 0.5rem !important; - } - .ms-sm-3 { - margin-left: 1rem !important; - } - .ms-sm-4 { - margin-left: 1.5rem !important; - } - .ms-sm-5 { - margin-left: 3rem !important; - } - .ms-sm-auto { - margin-left: auto !important; - } - .p-sm-0 { - padding: 0 !important; - } - .p-sm-1 { - padding: 0.25rem !important; - } - .p-sm-2 { - padding: 0.5rem !important; - } - .p-sm-3 { - padding: 1rem !important; - } - .p-sm-4 { - padding: 1.5rem !important; - } - .p-sm-5 { - padding: 3rem !important; - } - .px-sm-0 { - padding-right: 0 !important; - padding-left: 0 !important; - } - .px-sm-1 { - padding-right: 0.25rem !important; - padding-left: 0.25rem !important; - } - .px-sm-2 { - padding-right: 0.5rem !important; - padding-left: 0.5rem !important; - } - .px-sm-3 { - padding-right: 1rem !important; - padding-left: 1rem !important; - } - .px-sm-4 { - padding-right: 1.5rem !important; - padding-left: 1.5rem !important; - } - .px-sm-5 { - padding-right: 3rem !important; - padding-left: 3rem !important; - } - .py-sm-0 { - padding-top: 0 !important; - padding-bottom: 0 !important; - } - .py-sm-1 { - padding-top: 0.25rem !important; - padding-bottom: 0.25rem !important; - } - .py-sm-2 { - padding-top: 0.5rem !important; - padding-bottom: 0.5rem !important; - } - .py-sm-3 { - padding-top: 1rem !important; - padding-bottom: 1rem !important; - } - .py-sm-4 { - padding-top: 1.5rem !important; - padding-bottom: 1.5rem !important; - } - .py-sm-5 { - padding-top: 3rem !important; - padding-bottom: 3rem !important; - } - .pt-sm-0 { - padding-top: 0 !important; - } - .pt-sm-1 { - padding-top: 0.25rem !important; - } - .pt-sm-2 { - padding-top: 0.5rem !important; - } - .pt-sm-3 { - padding-top: 1rem !important; - } - .pt-sm-4 { - padding-top: 1.5rem !important; - } - .pt-sm-5 { - padding-top: 3rem !important; - } - .pe-sm-0 { - padding-right: 0 !important; - } - .pe-sm-1 { - padding-right: 0.25rem !important; - } - .pe-sm-2 { - padding-right: 0.5rem !important; - } - .pe-sm-3 { - padding-right: 1rem !important; - } - .pe-sm-4 { - padding-right: 1.5rem !important; - } - .pe-sm-5 { - padding-right: 3rem !important; - } - .pb-sm-0 { - padding-bottom: 0 !important; - } - .pb-sm-1 { - padding-bottom: 0.25rem !important; - } - .pb-sm-2 { - padding-bottom: 0.5rem !important; - } - .pb-sm-3 { - padding-bottom: 1rem !important; - } - .pb-sm-4 { - padding-bottom: 1.5rem !important; - } - .pb-sm-5 { - padding-bottom: 3rem !important; - } - .ps-sm-0 { - padding-left: 0 !important; - } - .ps-sm-1 { - padding-left: 0.25rem !important; - } - .ps-sm-2 { - padding-left: 0.5rem !important; - } - .ps-sm-3 { - padding-left: 1rem !important; - } - .ps-sm-4 { - padding-left: 1.5rem !important; - } - .ps-sm-5 { - padding-left: 3rem !important; - } -} -@media (min-width: 768px) { - .d-md-inline { - display: inline !important; - } - .d-md-inline-block { - display: inline-block !important; - } - .d-md-block { - display: block !important; - } - .d-md-grid { - display: grid !important; - } - .d-md-table { - display: table !important; - } - .d-md-table-row { - display: table-row !important; - } - .d-md-table-cell { - display: table-cell !important; - } - .d-md-flex { - display: flex !important; - } - .d-md-inline-flex { - display: inline-flex !important; - } - .d-md-none { - display: none !important; - } - .flex-md-fill { - flex: 1 1 auto !important; - } - .flex-md-row { - flex-direction: row !important; - } - .flex-md-column { - flex-direction: column !important; - } - .flex-md-row-reverse { - flex-direction: row-reverse !important; - } - .flex-md-column-reverse { - flex-direction: column-reverse !important; - } - .flex-md-grow-0 { - flex-grow: 0 !important; - } - .flex-md-grow-1 { - flex-grow: 1 !important; - } - .flex-md-shrink-0 { - flex-shrink: 0 !important; - } - .flex-md-shrink-1 { - flex-shrink: 1 !important; - } - .flex-md-wrap { - flex-wrap: wrap !important; - } - .flex-md-nowrap { - flex-wrap: nowrap !important; - } - .flex-md-wrap-reverse { - flex-wrap: wrap-reverse !important; - } - .justify-content-md-start { - justify-content: flex-start !important; - } - .justify-content-md-end { - justify-content: flex-end !important; - } - .justify-content-md-center { - justify-content: center !important; - } - .justify-content-md-between { - justify-content: space-between !important; - } - .justify-content-md-around { - justify-content: space-around !important; - } - .justify-content-md-evenly { - justify-content: space-evenly !important; - } - .align-items-md-start { - align-items: flex-start !important; - } - .align-items-md-end { - align-items: flex-end !important; - } - .align-items-md-center { - align-items: center !important; - } - .align-items-md-baseline { - align-items: baseline !important; - } - .align-items-md-stretch { - align-items: stretch !important; - } - .align-content-md-start { - align-content: flex-start !important; - } - .align-content-md-end { - align-content: flex-end !important; - } - .align-content-md-center { - align-content: center !important; - } - .align-content-md-between { - align-content: space-between !important; - } - .align-content-md-around { - align-content: space-around !important; - } - .align-content-md-stretch { - align-content: stretch !important; - } - .align-self-md-auto { - align-self: auto !important; - } - .align-self-md-start { - align-self: flex-start !important; - } - .align-self-md-end { - align-self: flex-end !important; - } - .align-self-md-center { - align-self: center !important; - } - .align-self-md-baseline { - align-self: baseline !important; - } - .align-self-md-stretch { - align-self: stretch !important; - } - .order-md-first { - order: -1 !important; - } - .order-md-0 { - order: 0 !important; - } - .order-md-1 { - order: 1 !important; - } - .order-md-2 { - order: 2 !important; - } - .order-md-3 { - order: 3 !important; - } - .order-md-4 { - order: 4 !important; - } - .order-md-5 { - order: 5 !important; - } - .order-md-last { - order: 6 !important; - } - .m-md-0 { - margin: 0 !important; - } - .m-md-1 { - margin: 0.25rem !important; - } - .m-md-2 { - margin: 0.5rem !important; - } - .m-md-3 { - margin: 1rem !important; - } - .m-md-4 { - margin: 1.5rem !important; - } - .m-md-5 { - margin: 3rem !important; - } - .m-md-auto { - margin: auto !important; - } - .mx-md-0 { - margin-right: 0 !important; - margin-left: 0 !important; - } - .mx-md-1 { - margin-right: 0.25rem !important; - margin-left: 0.25rem !important; - } - .mx-md-2 { - margin-right: 0.5rem !important; - margin-left: 0.5rem !important; - } - .mx-md-3 { - margin-right: 1rem !important; - margin-left: 1rem !important; - } - .mx-md-4 { - margin-right: 1.5rem !important; - margin-left: 1.5rem !important; - } - .mx-md-5 { - margin-right: 3rem !important; - margin-left: 3rem !important; - } - .mx-md-auto { - margin-right: auto !important; - margin-left: auto !important; - } - .my-md-0 { - margin-top: 0 !important; - margin-bottom: 0 !important; - } - .my-md-1 { - margin-top: 0.25rem !important; - margin-bottom: 0.25rem !important; - } - .my-md-2 { - margin-top: 0.5rem !important; - margin-bottom: 0.5rem !important; - } - .my-md-3 { - margin-top: 1rem !important; - margin-bottom: 1rem !important; - } - .my-md-4 { - margin-top: 1.5rem !important; - margin-bottom: 1.5rem !important; - } - .my-md-5 { - margin-top: 3rem !important; - margin-bottom: 3rem !important; - } - .my-md-auto { - margin-top: auto !important; - margin-bottom: auto !important; - } - .mt-md-0 { - margin-top: 0 !important; - } - .mt-md-1 { - margin-top: 0.25rem !important; - } - .mt-md-2 { - margin-top: 0.5rem !important; - } - .mt-md-3 { - margin-top: 1rem !important; - } - .mt-md-4 { - margin-top: 1.5rem !important; - } - .mt-md-5 { - margin-top: 3rem !important; - } - .mt-md-auto { - margin-top: auto !important; - } - .me-md-0 { - margin-right: 0 !important; - } - .me-md-1 { - margin-right: 0.25rem !important; - } - .me-md-2 { - margin-right: 0.5rem !important; - } - .me-md-3 { - margin-right: 1rem !important; - } - .me-md-4 { - margin-right: 1.5rem !important; - } - .me-md-5 { - margin-right: 3rem !important; - } - .me-md-auto { - margin-right: auto !important; - } - .mb-md-0 { - margin-bottom: 0 !important; - } - .mb-md-1 { - margin-bottom: 0.25rem !important; - } - .mb-md-2 { - margin-bottom: 0.5rem !important; - } - .mb-md-3 { - margin-bottom: 1rem !important; - } - .mb-md-4 { - margin-bottom: 1.5rem !important; - } - .mb-md-5 { - margin-bottom: 3rem !important; - } - .mb-md-auto { - margin-bottom: auto !important; - } - .ms-md-0 { - margin-left: 0 !important; - } - .ms-md-1 { - margin-left: 0.25rem !important; - } - .ms-md-2 { - margin-left: 0.5rem !important; - } - .ms-md-3 { - margin-left: 1rem !important; - } - .ms-md-4 { - margin-left: 1.5rem !important; - } - .ms-md-5 { - margin-left: 3rem !important; - } - .ms-md-auto { - margin-left: auto !important; - } - .p-md-0 { - padding: 0 !important; - } - .p-md-1 { - padding: 0.25rem !important; - } - .p-md-2 { - padding: 0.5rem !important; - } - .p-md-3 { - padding: 1rem !important; - } - .p-md-4 { - padding: 1.5rem !important; - } - .p-md-5 { - padding: 3rem !important; - } - .px-md-0 { - padding-right: 0 !important; - padding-left: 0 !important; - } - .px-md-1 { - padding-right: 0.25rem !important; - padding-left: 0.25rem !important; - } - .px-md-2 { - padding-right: 0.5rem !important; - padding-left: 0.5rem !important; - } - .px-md-3 { - padding-right: 1rem !important; - padding-left: 1rem !important; - } - .px-md-4 { - padding-right: 1.5rem !important; - padding-left: 1.5rem !important; - } - .px-md-5 { - padding-right: 3rem !important; - padding-left: 3rem !important; - } - .py-md-0 { - padding-top: 0 !important; - padding-bottom: 0 !important; - } - .py-md-1 { - padding-top: 0.25rem !important; - padding-bottom: 0.25rem !important; - } - .py-md-2 { - padding-top: 0.5rem !important; - padding-bottom: 0.5rem !important; - } - .py-md-3 { - padding-top: 1rem !important; - padding-bottom: 1rem !important; - } - .py-md-4 { - padding-top: 1.5rem !important; - padding-bottom: 1.5rem !important; - } - .py-md-5 { - padding-top: 3rem !important; - padding-bottom: 3rem !important; - } - .pt-md-0 { - padding-top: 0 !important; - } - .pt-md-1 { - padding-top: 0.25rem !important; - } - .pt-md-2 { - padding-top: 0.5rem !important; - } - .pt-md-3 { - padding-top: 1rem !important; - } - .pt-md-4 { - padding-top: 1.5rem !important; - } - .pt-md-5 { - padding-top: 3rem !important; - } - .pe-md-0 { - padding-right: 0 !important; - } - .pe-md-1 { - padding-right: 0.25rem !important; - } - .pe-md-2 { - padding-right: 0.5rem !important; - } - .pe-md-3 { - padding-right: 1rem !important; - } - .pe-md-4 { - padding-right: 1.5rem !important; - } - .pe-md-5 { - padding-right: 3rem !important; - } - .pb-md-0 { - padding-bottom: 0 !important; - } - .pb-md-1 { - padding-bottom: 0.25rem !important; - } - .pb-md-2 { - padding-bottom: 0.5rem !important; - } - .pb-md-3 { - padding-bottom: 1rem !important; - } - .pb-md-4 { - padding-bottom: 1.5rem !important; - } - .pb-md-5 { - padding-bottom: 3rem !important; - } - .ps-md-0 { - padding-left: 0 !important; - } - .ps-md-1 { - padding-left: 0.25rem !important; - } - .ps-md-2 { - padding-left: 0.5rem !important; - } - .ps-md-3 { - padding-left: 1rem !important; - } - .ps-md-4 { - padding-left: 1.5rem !important; - } - .ps-md-5 { - padding-left: 3rem !important; - } -} -@media (min-width: 992px) { - .d-lg-inline { - display: inline !important; - } - .d-lg-inline-block { - display: inline-block !important; - } - .d-lg-block { - display: block !important; - } - .d-lg-grid { - display: grid !important; - } - .d-lg-table { - display: table !important; - } - .d-lg-table-row { - display: table-row !important; - } - .d-lg-table-cell { - display: table-cell !important; - } - .d-lg-flex { - display: flex !important; - } - .d-lg-inline-flex { - display: inline-flex !important; - } - .d-lg-none { - display: none !important; - } - .flex-lg-fill { - flex: 1 1 auto !important; - } - .flex-lg-row { - flex-direction: row !important; - } - .flex-lg-column { - flex-direction: column !important; - } - .flex-lg-row-reverse { - flex-direction: row-reverse !important; - } - .flex-lg-column-reverse { - flex-direction: column-reverse !important; - } - .flex-lg-grow-0 { - flex-grow: 0 !important; - } - .flex-lg-grow-1 { - flex-grow: 1 !important; - } - .flex-lg-shrink-0 { - flex-shrink: 0 !important; - } - .flex-lg-shrink-1 { - flex-shrink: 1 !important; - } - .flex-lg-wrap { - flex-wrap: wrap !important; - } - .flex-lg-nowrap { - flex-wrap: nowrap !important; - } - .flex-lg-wrap-reverse { - flex-wrap: wrap-reverse !important; - } - .justify-content-lg-start { - justify-content: flex-start !important; - } - .justify-content-lg-end { - justify-content: flex-end !important; - } - .justify-content-lg-center { - justify-content: center !important; - } - .justify-content-lg-between { - justify-content: space-between !important; - } - .justify-content-lg-around { - justify-content: space-around !important; - } - .justify-content-lg-evenly { - justify-content: space-evenly !important; - } - .align-items-lg-start { - align-items: flex-start !important; - } - .align-items-lg-end { - align-items: flex-end !important; - } - .align-items-lg-center { - align-items: center !important; - } - .align-items-lg-baseline { - align-items: baseline !important; - } - .align-items-lg-stretch { - align-items: stretch !important; - } - .align-content-lg-start { - align-content: flex-start !important; - } - .align-content-lg-end { - align-content: flex-end !important; - } - .align-content-lg-center { - align-content: center !important; - } - .align-content-lg-between { - align-content: space-between !important; - } - .align-content-lg-around { - align-content: space-around !important; - } - .align-content-lg-stretch { - align-content: stretch !important; - } - .align-self-lg-auto { - align-self: auto !important; - } - .align-self-lg-start { - align-self: flex-start !important; - } - .align-self-lg-end { - align-self: flex-end !important; - } - .align-self-lg-center { - align-self: center !important; - } - .align-self-lg-baseline { - align-self: baseline !important; - } - .align-self-lg-stretch { - align-self: stretch !important; - } - .order-lg-first { - order: -1 !important; - } - .order-lg-0 { - order: 0 !important; - } - .order-lg-1 { - order: 1 !important; - } - .order-lg-2 { - order: 2 !important; - } - .order-lg-3 { - order: 3 !important; - } - .order-lg-4 { - order: 4 !important; - } - .order-lg-5 { - order: 5 !important; - } - .order-lg-last { - order: 6 !important; - } - .m-lg-0 { - margin: 0 !important; - } - .m-lg-1 { - margin: 0.25rem !important; - } - .m-lg-2 { - margin: 0.5rem !important; - } - .m-lg-3 { - margin: 1rem !important; - } - .m-lg-4 { - margin: 1.5rem !important; - } - .m-lg-5 { - margin: 3rem !important; - } - .m-lg-auto { - margin: auto !important; - } - .mx-lg-0 { - margin-right: 0 !important; - margin-left: 0 !important; - } - .mx-lg-1 { - margin-right: 0.25rem !important; - margin-left: 0.25rem !important; - } - .mx-lg-2 { - margin-right: 0.5rem !important; - margin-left: 0.5rem !important; - } - .mx-lg-3 { - margin-right: 1rem !important; - margin-left: 1rem !important; - } - .mx-lg-4 { - margin-right: 1.5rem !important; - margin-left: 1.5rem !important; - } - .mx-lg-5 { - margin-right: 3rem !important; - margin-left: 3rem !important; - } - .mx-lg-auto { - margin-right: auto !important; - margin-left: auto !important; - } - .my-lg-0 { - margin-top: 0 !important; - margin-bottom: 0 !important; - } - .my-lg-1 { - margin-top: 0.25rem !important; - margin-bottom: 0.25rem !important; - } - .my-lg-2 { - margin-top: 0.5rem !important; - margin-bottom: 0.5rem !important; - } - .my-lg-3 { - margin-top: 1rem !important; - margin-bottom: 1rem !important; - } - .my-lg-4 { - margin-top: 1.5rem !important; - margin-bottom: 1.5rem !important; - } - .my-lg-5 { - margin-top: 3rem !important; - margin-bottom: 3rem !important; - } - .my-lg-auto { - margin-top: auto !important; - margin-bottom: auto !important; - } - .mt-lg-0 { - margin-top: 0 !important; - } - .mt-lg-1 { - margin-top: 0.25rem !important; - } - .mt-lg-2 { - margin-top: 0.5rem !important; - } - .mt-lg-3 { - margin-top: 1rem !important; - } - .mt-lg-4 { - margin-top: 1.5rem !important; - } - .mt-lg-5 { - margin-top: 3rem !important; - } - .mt-lg-auto { - margin-top: auto !important; - } - .me-lg-0 { - margin-right: 0 !important; - } - .me-lg-1 { - margin-right: 0.25rem !important; - } - .me-lg-2 { - margin-right: 0.5rem !important; - } - .me-lg-3 { - margin-right: 1rem !important; - } - .me-lg-4 { - margin-right: 1.5rem !important; - } - .me-lg-5 { - margin-right: 3rem !important; - } - .me-lg-auto { - margin-right: auto !important; - } - .mb-lg-0 { - margin-bottom: 0 !important; - } - .mb-lg-1 { - margin-bottom: 0.25rem !important; - } - .mb-lg-2 { - margin-bottom: 0.5rem !important; - } - .mb-lg-3 { - margin-bottom: 1rem !important; - } - .mb-lg-4 { - margin-bottom: 1.5rem !important; - } - .mb-lg-5 { - margin-bottom: 3rem !important; - } - .mb-lg-auto { - margin-bottom: auto !important; - } - .ms-lg-0 { - margin-left: 0 !important; - } - .ms-lg-1 { - margin-left: 0.25rem !important; - } - .ms-lg-2 { - margin-left: 0.5rem !important; - } - .ms-lg-3 { - margin-left: 1rem !important; - } - .ms-lg-4 { - margin-left: 1.5rem !important; - } - .ms-lg-5 { - margin-left: 3rem !important; - } - .ms-lg-auto { - margin-left: auto !important; - } - .p-lg-0 { - padding: 0 !important; - } - .p-lg-1 { - padding: 0.25rem !important; - } - .p-lg-2 { - padding: 0.5rem !important; - } - .p-lg-3 { - padding: 1rem !important; - } - .p-lg-4 { - padding: 1.5rem !important; - } - .p-lg-5 { - padding: 3rem !important; - } - .px-lg-0 { - padding-right: 0 !important; - padding-left: 0 !important; - } - .px-lg-1 { - padding-right: 0.25rem !important; - padding-left: 0.25rem !important; - } - .px-lg-2 { - padding-right: 0.5rem !important; - padding-left: 0.5rem !important; - } - .px-lg-3 { - padding-right: 1rem !important; - padding-left: 1rem !important; - } - .px-lg-4 { - padding-right: 1.5rem !important; - padding-left: 1.5rem !important; - } - .px-lg-5 { - padding-right: 3rem !important; - padding-left: 3rem !important; - } - .py-lg-0 { - padding-top: 0 !important; - padding-bottom: 0 !important; - } - .py-lg-1 { - padding-top: 0.25rem !important; - padding-bottom: 0.25rem !important; - } - .py-lg-2 { - padding-top: 0.5rem !important; - padding-bottom: 0.5rem !important; - } - .py-lg-3 { - padding-top: 1rem !important; - padding-bottom: 1rem !important; - } - .py-lg-4 { - padding-top: 1.5rem !important; - padding-bottom: 1.5rem !important; - } - .py-lg-5 { - padding-top: 3rem !important; - padding-bottom: 3rem !important; - } - .pt-lg-0 { - padding-top: 0 !important; - } - .pt-lg-1 { - padding-top: 0.25rem !important; - } - .pt-lg-2 { - padding-top: 0.5rem !important; - } - .pt-lg-3 { - padding-top: 1rem !important; - } - .pt-lg-4 { - padding-top: 1.5rem !important; - } - .pt-lg-5 { - padding-top: 3rem !important; - } - .pe-lg-0 { - padding-right: 0 !important; - } - .pe-lg-1 { - padding-right: 0.25rem !important; - } - .pe-lg-2 { - padding-right: 0.5rem !important; - } - .pe-lg-3 { - padding-right: 1rem !important; - } - .pe-lg-4 { - padding-right: 1.5rem !important; - } - .pe-lg-5 { - padding-right: 3rem !important; - } - .pb-lg-0 { - padding-bottom: 0 !important; - } - .pb-lg-1 { - padding-bottom: 0.25rem !important; - } - .pb-lg-2 { - padding-bottom: 0.5rem !important; - } - .pb-lg-3 { - padding-bottom: 1rem !important; - } - .pb-lg-4 { - padding-bottom: 1.5rem !important; - } - .pb-lg-5 { - padding-bottom: 3rem !important; - } - .ps-lg-0 { - padding-left: 0 !important; - } - .ps-lg-1 { - padding-left: 0.25rem !important; - } - .ps-lg-2 { - padding-left: 0.5rem !important; - } - .ps-lg-3 { - padding-left: 1rem !important; - } - .ps-lg-4 { - padding-left: 1.5rem !important; - } - .ps-lg-5 { - padding-left: 3rem !important; - } -} -@media (min-width: 1200px) { - .d-xl-inline { - display: inline !important; - } - .d-xl-inline-block { - display: inline-block !important; - } - .d-xl-block { - display: block !important; - } - .d-xl-grid { - display: grid !important; - } - .d-xl-table { - display: table !important; - } - .d-xl-table-row { - display: table-row !important; - } - .d-xl-table-cell { - display: table-cell !important; - } - .d-xl-flex { - display: flex !important; - } - .d-xl-inline-flex { - display: inline-flex !important; - } - .d-xl-none { - display: none !important; - } - .flex-xl-fill { - flex: 1 1 auto !important; - } - .flex-xl-row { - flex-direction: row !important; - } - .flex-xl-column { - flex-direction: column !important; - } - .flex-xl-row-reverse { - flex-direction: row-reverse !important; - } - .flex-xl-column-reverse { - flex-direction: column-reverse !important; - } - .flex-xl-grow-0 { - flex-grow: 0 !important; - } - .flex-xl-grow-1 { - flex-grow: 1 !important; - } - .flex-xl-shrink-0 { - flex-shrink: 0 !important; - } - .flex-xl-shrink-1 { - flex-shrink: 1 !important; - } - .flex-xl-wrap { - flex-wrap: wrap !important; - } - .flex-xl-nowrap { - flex-wrap: nowrap !important; - } - .flex-xl-wrap-reverse { - flex-wrap: wrap-reverse !important; - } - .justify-content-xl-start { - justify-content: flex-start !important; - } - .justify-content-xl-end { - justify-content: flex-end !important; - } - .justify-content-xl-center { - justify-content: center !important; - } - .justify-content-xl-between { - justify-content: space-between !important; - } - .justify-content-xl-around { - justify-content: space-around !important; - } - .justify-content-xl-evenly { - justify-content: space-evenly !important; - } - .align-items-xl-start { - align-items: flex-start !important; - } - .align-items-xl-end { - align-items: flex-end !important; - } - .align-items-xl-center { - align-items: center !important; - } - .align-items-xl-baseline { - align-items: baseline !important; - } - .align-items-xl-stretch { - align-items: stretch !important; - } - .align-content-xl-start { - align-content: flex-start !important; - } - .align-content-xl-end { - align-content: flex-end !important; - } - .align-content-xl-center { - align-content: center !important; - } - .align-content-xl-between { - align-content: space-between !important; - } - .align-content-xl-around { - align-content: space-around !important; - } - .align-content-xl-stretch { - align-content: stretch !important; - } - .align-self-xl-auto { - align-self: auto !important; - } - .align-self-xl-start { - align-self: flex-start !important; - } - .align-self-xl-end { - align-self: flex-end !important; - } - .align-self-xl-center { - align-self: center !important; - } - .align-self-xl-baseline { - align-self: baseline !important; - } - .align-self-xl-stretch { - align-self: stretch !important; - } - .order-xl-first { - order: -1 !important; - } - .order-xl-0 { - order: 0 !important; - } - .order-xl-1 { - order: 1 !important; - } - .order-xl-2 { - order: 2 !important; - } - .order-xl-3 { - order: 3 !important; - } - .order-xl-4 { - order: 4 !important; - } - .order-xl-5 { - order: 5 !important; - } - .order-xl-last { - order: 6 !important; - } - .m-xl-0 { - margin: 0 !important; - } - .m-xl-1 { - margin: 0.25rem !important; - } - .m-xl-2 { - margin: 0.5rem !important; - } - .m-xl-3 { - margin: 1rem !important; - } - .m-xl-4 { - margin: 1.5rem !important; - } - .m-xl-5 { - margin: 3rem !important; - } - .m-xl-auto { - margin: auto !important; - } - .mx-xl-0 { - margin-right: 0 !important; - margin-left: 0 !important; - } - .mx-xl-1 { - margin-right: 0.25rem !important; - margin-left: 0.25rem !important; - } - .mx-xl-2 { - margin-right: 0.5rem !important; - margin-left: 0.5rem !important; - } - .mx-xl-3 { - margin-right: 1rem !important; - margin-left: 1rem !important; - } - .mx-xl-4 { - margin-right: 1.5rem !important; - margin-left: 1.5rem !important; - } - .mx-xl-5 { - margin-right: 3rem !important; - margin-left: 3rem !important; - } - .mx-xl-auto { - margin-right: auto !important; - margin-left: auto !important; - } - .my-xl-0 { - margin-top: 0 !important; - margin-bottom: 0 !important; - } - .my-xl-1 { - margin-top: 0.25rem !important; - margin-bottom: 0.25rem !important; - } - .my-xl-2 { - margin-top: 0.5rem !important; - margin-bottom: 0.5rem !important; - } - .my-xl-3 { - margin-top: 1rem !important; - margin-bottom: 1rem !important; - } - .my-xl-4 { - margin-top: 1.5rem !important; - margin-bottom: 1.5rem !important; - } - .my-xl-5 { - margin-top: 3rem !important; - margin-bottom: 3rem !important; - } - .my-xl-auto { - margin-top: auto !important; - margin-bottom: auto !important; - } - .mt-xl-0 { - margin-top: 0 !important; - } - .mt-xl-1 { - margin-top: 0.25rem !important; - } - .mt-xl-2 { - margin-top: 0.5rem !important; - } - .mt-xl-3 { - margin-top: 1rem !important; - } - .mt-xl-4 { - margin-top: 1.5rem !important; - } - .mt-xl-5 { - margin-top: 3rem !important; - } - .mt-xl-auto { - margin-top: auto !important; - } - .me-xl-0 { - margin-right: 0 !important; - } - .me-xl-1 { - margin-right: 0.25rem !important; - } - .me-xl-2 { - margin-right: 0.5rem !important; - } - .me-xl-3 { - margin-right: 1rem !important; - } - .me-xl-4 { - margin-right: 1.5rem !important; - } - .me-xl-5 { - margin-right: 3rem !important; - } - .me-xl-auto { - margin-right: auto !important; - } - .mb-xl-0 { - margin-bottom: 0 !important; - } - .mb-xl-1 { - margin-bottom: 0.25rem !important; - } - .mb-xl-2 { - margin-bottom: 0.5rem !important; - } - .mb-xl-3 { - margin-bottom: 1rem !important; - } - .mb-xl-4 { - margin-bottom: 1.5rem !important; - } - .mb-xl-5 { - margin-bottom: 3rem !important; - } - .mb-xl-auto { - margin-bottom: auto !important; - } - .ms-xl-0 { - margin-left: 0 !important; - } - .ms-xl-1 { - margin-left: 0.25rem !important; - } - .ms-xl-2 { - margin-left: 0.5rem !important; - } - .ms-xl-3 { - margin-left: 1rem !important; - } - .ms-xl-4 { - margin-left: 1.5rem !important; - } - .ms-xl-5 { - margin-left: 3rem !important; - } - .ms-xl-auto { - margin-left: auto !important; - } - .p-xl-0 { - padding: 0 !important; - } - .p-xl-1 { - padding: 0.25rem !important; - } - .p-xl-2 { - padding: 0.5rem !important; - } - .p-xl-3 { - padding: 1rem !important; - } - .p-xl-4 { - padding: 1.5rem !important; - } - .p-xl-5 { - padding: 3rem !important; - } - .px-xl-0 { - padding-right: 0 !important; - padding-left: 0 !important; - } - .px-xl-1 { - padding-right: 0.25rem !important; - padding-left: 0.25rem !important; - } - .px-xl-2 { - padding-right: 0.5rem !important; - padding-left: 0.5rem !important; - } - .px-xl-3 { - padding-right: 1rem !important; - padding-left: 1rem !important; - } - .px-xl-4 { - padding-right: 1.5rem !important; - padding-left: 1.5rem !important; - } - .px-xl-5 { - padding-right: 3rem !important; - padding-left: 3rem !important; - } - .py-xl-0 { - padding-top: 0 !important; - padding-bottom: 0 !important; - } - .py-xl-1 { - padding-top: 0.25rem !important; - padding-bottom: 0.25rem !important; - } - .py-xl-2 { - padding-top: 0.5rem !important; - padding-bottom: 0.5rem !important; - } - .py-xl-3 { - padding-top: 1rem !important; - padding-bottom: 1rem !important; - } - .py-xl-4 { - padding-top: 1.5rem !important; - padding-bottom: 1.5rem !important; - } - .py-xl-5 { - padding-top: 3rem !important; - padding-bottom: 3rem !important; - } - .pt-xl-0 { - padding-top: 0 !important; - } - .pt-xl-1 { - padding-top: 0.25rem !important; - } - .pt-xl-2 { - padding-top: 0.5rem !important; - } - .pt-xl-3 { - padding-top: 1rem !important; - } - .pt-xl-4 { - padding-top: 1.5rem !important; - } - .pt-xl-5 { - padding-top: 3rem !important; - } - .pe-xl-0 { - padding-right: 0 !important; - } - .pe-xl-1 { - padding-right: 0.25rem !important; - } - .pe-xl-2 { - padding-right: 0.5rem !important; - } - .pe-xl-3 { - padding-right: 1rem !important; - } - .pe-xl-4 { - padding-right: 1.5rem !important; - } - .pe-xl-5 { - padding-right: 3rem !important; - } - .pb-xl-0 { - padding-bottom: 0 !important; - } - .pb-xl-1 { - padding-bottom: 0.25rem !important; - } - .pb-xl-2 { - padding-bottom: 0.5rem !important; - } - .pb-xl-3 { - padding-bottom: 1rem !important; - } - .pb-xl-4 { - padding-bottom: 1.5rem !important; - } - .pb-xl-5 { - padding-bottom: 3rem !important; - } - .ps-xl-0 { - padding-left: 0 !important; - } - .ps-xl-1 { - padding-left: 0.25rem !important; - } - .ps-xl-2 { - padding-left: 0.5rem !important; - } - .ps-xl-3 { - padding-left: 1rem !important; - } - .ps-xl-4 { - padding-left: 1.5rem !important; - } - .ps-xl-5 { - padding-left: 3rem !important; - } -} -@media (min-width: 1400px) { - .d-xxl-inline { - display: inline !important; - } - .d-xxl-inline-block { - display: inline-block !important; - } - .d-xxl-block { - display: block !important; - } - .d-xxl-grid { - display: grid !important; - } - .d-xxl-table { - display: table !important; - } - .d-xxl-table-row { - display: table-row !important; - } - .d-xxl-table-cell { - display: table-cell !important; - } - .d-xxl-flex { - display: flex !important; - } - .d-xxl-inline-flex { - display: inline-flex !important; - } - .d-xxl-none { - display: none !important; - } - .flex-xxl-fill { - flex: 1 1 auto !important; - } - .flex-xxl-row { - flex-direction: row !important; - } - .flex-xxl-column { - flex-direction: column !important; - } - .flex-xxl-row-reverse { - flex-direction: row-reverse !important; - } - .flex-xxl-column-reverse { - flex-direction: column-reverse !important; - } - .flex-xxl-grow-0 { - flex-grow: 0 !important; - } - .flex-xxl-grow-1 { - flex-grow: 1 !important; - } - .flex-xxl-shrink-0 { - flex-shrink: 0 !important; - } - .flex-xxl-shrink-1 { - flex-shrink: 1 !important; - } - .flex-xxl-wrap { - flex-wrap: wrap !important; - } - .flex-xxl-nowrap { - flex-wrap: nowrap !important; - } - .flex-xxl-wrap-reverse { - flex-wrap: wrap-reverse !important; - } - .justify-content-xxl-start { - justify-content: flex-start !important; - } - .justify-content-xxl-end { - justify-content: flex-end !important; - } - .justify-content-xxl-center { - justify-content: center !important; - } - .justify-content-xxl-between { - justify-content: space-between !important; - } - .justify-content-xxl-around { - justify-content: space-around !important; - } - .justify-content-xxl-evenly { - justify-content: space-evenly !important; - } - .align-items-xxl-start { - align-items: flex-start !important; - } - .align-items-xxl-end { - align-items: flex-end !important; - } - .align-items-xxl-center { - align-items: center !important; - } - .align-items-xxl-baseline { - align-items: baseline !important; - } - .align-items-xxl-stretch { - align-items: stretch !important; - } - .align-content-xxl-start { - align-content: flex-start !important; - } - .align-content-xxl-end { - align-content: flex-end !important; - } - .align-content-xxl-center { - align-content: center !important; - } - .align-content-xxl-between { - align-content: space-between !important; - } - .align-content-xxl-around { - align-content: space-around !important; - } - .align-content-xxl-stretch { - align-content: stretch !important; - } - .align-self-xxl-auto { - align-self: auto !important; - } - .align-self-xxl-start { - align-self: flex-start !important; - } - .align-self-xxl-end { - align-self: flex-end !important; - } - .align-self-xxl-center { - align-self: center !important; - } - .align-self-xxl-baseline { - align-self: baseline !important; - } - .align-self-xxl-stretch { - align-self: stretch !important; - } - .order-xxl-first { - order: -1 !important; - } - .order-xxl-0 { - order: 0 !important; - } - .order-xxl-1 { - order: 1 !important; - } - .order-xxl-2 { - order: 2 !important; - } - .order-xxl-3 { - order: 3 !important; - } - .order-xxl-4 { - order: 4 !important; - } - .order-xxl-5 { - order: 5 !important; - } - .order-xxl-last { - order: 6 !important; - } - .m-xxl-0 { - margin: 0 !important; - } - .m-xxl-1 { - margin: 0.25rem !important; - } - .m-xxl-2 { - margin: 0.5rem !important; - } - .m-xxl-3 { - margin: 1rem !important; - } - .m-xxl-4 { - margin: 1.5rem !important; - } - .m-xxl-5 { - margin: 3rem !important; - } - .m-xxl-auto { - margin: auto !important; - } - .mx-xxl-0 { - margin-right: 0 !important; - margin-left: 0 !important; - } - .mx-xxl-1 { - margin-right: 0.25rem !important; - margin-left: 0.25rem !important; - } - .mx-xxl-2 { - margin-right: 0.5rem !important; - margin-left: 0.5rem !important; - } - .mx-xxl-3 { - margin-right: 1rem !important; - margin-left: 1rem !important; - } - .mx-xxl-4 { - margin-right: 1.5rem !important; - margin-left: 1.5rem !important; - } - .mx-xxl-5 { - margin-right: 3rem !important; - margin-left: 3rem !important; - } - .mx-xxl-auto { - margin-right: auto !important; - margin-left: auto !important; - } - .my-xxl-0 { - margin-top: 0 !important; - margin-bottom: 0 !important; - } - .my-xxl-1 { - margin-top: 0.25rem !important; - margin-bottom: 0.25rem !important; - } - .my-xxl-2 { - margin-top: 0.5rem !important; - margin-bottom: 0.5rem !important; - } - .my-xxl-3 { - margin-top: 1rem !important; - margin-bottom: 1rem !important; - } - .my-xxl-4 { - margin-top: 1.5rem !important; - margin-bottom: 1.5rem !important; - } - .my-xxl-5 { - margin-top: 3rem !important; - margin-bottom: 3rem !important; - } - .my-xxl-auto { - margin-top: auto !important; - margin-bottom: auto !important; - } - .mt-xxl-0 { - margin-top: 0 !important; - } - .mt-xxl-1 { - margin-top: 0.25rem !important; - } - .mt-xxl-2 { - margin-top: 0.5rem !important; - } - .mt-xxl-3 { - margin-top: 1rem !important; - } - .mt-xxl-4 { - margin-top: 1.5rem !important; - } - .mt-xxl-5 { - margin-top: 3rem !important; - } - .mt-xxl-auto { - margin-top: auto !important; - } - .me-xxl-0 { - margin-right: 0 !important; - } - .me-xxl-1 { - margin-right: 0.25rem !important; - } - .me-xxl-2 { - margin-right: 0.5rem !important; - } - .me-xxl-3 { - margin-right: 1rem !important; - } - .me-xxl-4 { - margin-right: 1.5rem !important; - } - .me-xxl-5 { - margin-right: 3rem !important; - } - .me-xxl-auto { - margin-right: auto !important; - } - .mb-xxl-0 { - margin-bottom: 0 !important; - } - .mb-xxl-1 { - margin-bottom: 0.25rem !important; - } - .mb-xxl-2 { - margin-bottom: 0.5rem !important; - } - .mb-xxl-3 { - margin-bottom: 1rem !important; - } - .mb-xxl-4 { - margin-bottom: 1.5rem !important; - } - .mb-xxl-5 { - margin-bottom: 3rem !important; - } - .mb-xxl-auto { - margin-bottom: auto !important; - } - .ms-xxl-0 { - margin-left: 0 !important; - } - .ms-xxl-1 { - margin-left: 0.25rem !important; - } - .ms-xxl-2 { - margin-left: 0.5rem !important; - } - .ms-xxl-3 { - margin-left: 1rem !important; - } - .ms-xxl-4 { - margin-left: 1.5rem !important; - } - .ms-xxl-5 { - margin-left: 3rem !important; - } - .ms-xxl-auto { - margin-left: auto !important; - } - .p-xxl-0 { - padding: 0 !important; - } - .p-xxl-1 { - padding: 0.25rem !important; - } - .p-xxl-2 { - padding: 0.5rem !important; - } - .p-xxl-3 { - padding: 1rem !important; - } - .p-xxl-4 { - padding: 1.5rem !important; - } - .p-xxl-5 { - padding: 3rem !important; - } - .px-xxl-0 { - padding-right: 0 !important; - padding-left: 0 !important; - } - .px-xxl-1 { - padding-right: 0.25rem !important; - padding-left: 0.25rem !important; - } - .px-xxl-2 { - padding-right: 0.5rem !important; - padding-left: 0.5rem !important; - } - .px-xxl-3 { - padding-right: 1rem !important; - padding-left: 1rem !important; - } - .px-xxl-4 { - padding-right: 1.5rem !important; - padding-left: 1.5rem !important; - } - .px-xxl-5 { - padding-right: 3rem !important; - padding-left: 3rem !important; - } - .py-xxl-0 { - padding-top: 0 !important; - padding-bottom: 0 !important; - } - .py-xxl-1 { - padding-top: 0.25rem !important; - padding-bottom: 0.25rem !important; - } - .py-xxl-2 { - padding-top: 0.5rem !important; - padding-bottom: 0.5rem !important; - } - .py-xxl-3 { - padding-top: 1rem !important; - padding-bottom: 1rem !important; - } - .py-xxl-4 { - padding-top: 1.5rem !important; - padding-bottom: 1.5rem !important; - } - .py-xxl-5 { - padding-top: 3rem !important; - padding-bottom: 3rem !important; - } - .pt-xxl-0 { - padding-top: 0 !important; - } - .pt-xxl-1 { - padding-top: 0.25rem !important; - } - .pt-xxl-2 { - padding-top: 0.5rem !important; - } - .pt-xxl-3 { - padding-top: 1rem !important; - } - .pt-xxl-4 { - padding-top: 1.5rem !important; - } - .pt-xxl-5 { - padding-top: 3rem !important; - } - .pe-xxl-0 { - padding-right: 0 !important; - } - .pe-xxl-1 { - padding-right: 0.25rem !important; - } - .pe-xxl-2 { - padding-right: 0.5rem !important; - } - .pe-xxl-3 { - padding-right: 1rem !important; - } - .pe-xxl-4 { - padding-right: 1.5rem !important; - } - .pe-xxl-5 { - padding-right: 3rem !important; - } - .pb-xxl-0 { - padding-bottom: 0 !important; - } - .pb-xxl-1 { - padding-bottom: 0.25rem !important; - } - .pb-xxl-2 { - padding-bottom: 0.5rem !important; - } - .pb-xxl-3 { - padding-bottom: 1rem !important; - } - .pb-xxl-4 { - padding-bottom: 1.5rem !important; - } - .pb-xxl-5 { - padding-bottom: 3rem !important; - } - .ps-xxl-0 { - padding-left: 0 !important; - } - .ps-xxl-1 { - padding-left: 0.25rem !important; - } - .ps-xxl-2 { - padding-left: 0.5rem !important; - } - .ps-xxl-3 { - padding-left: 1rem !important; - } - .ps-xxl-4 { - padding-left: 1.5rem !important; - } - .ps-xxl-5 { - padding-left: 3rem !important; - } -} -@media print { - .d-print-inline { - display: inline !important; - } - .d-print-inline-block { - display: inline-block !important; - } - .d-print-block { - display: block !important; - } - .d-print-grid { - display: grid !important; - } - .d-print-table { - display: table !important; - } - .d-print-table-row { - display: table-row !important; - } - .d-print-table-cell { - display: table-cell !important; - } - .d-print-flex { - display: flex !important; - } - .d-print-inline-flex { - display: inline-flex !important; - } - .d-print-none { - display: none !important; - } -} - -/*# sourceMappingURL=bootstrap-grid.css.map */ \ No newline at end of file diff --git a/site/templates/vendors/Bootstrap/css/bootstrap-grid.css.map b/site/templates/vendors/Bootstrap/css/bootstrap-grid.css.map deleted file mode 100644 index 41b6c20..0000000 --- a/site/templates/vendors/Bootstrap/css/bootstrap-grid.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../../scss/mixins/_banner.scss","../../scss/_root.scss","../../scss/vendor/_rfs.scss","bootstrap-grid.css","../../scss/mixins/_color-mode.scss","../../scss/_containers.scss","../../scss/mixins/_container.scss","../../scss/mixins/_breakpoints.scss","../../scss/_variables.scss","../../scss/_grid.scss","../../scss/mixins/_grid.scss","../../scss/mixins/_utilities.scss","../../scss/utilities/_api.scss"],"names":[],"mappings":"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,yBAAA;ERoyDV;EQ3yDM;IAOI,wBAAA;ERuyDV;EQ9yDM;IAOI,yBAAA;ER0yDV;EQjzDM;IAOI,6BAAA;ER6yDV;EQpzDM;IAOI,8BAAA;ERgzDV;EQvzDM;IAOI,wBAAA;ERmzDV;EQ1zDM;IAOI,+BAAA;ERszDV;EQ7zDM;IAOI,wBAAA;ERyzDV;EQh0DM;IAOI,yBAAA;ER4zDV;EQn0DM;IAOI,8BAAA;ER+zDV;EQt0DM;IAOI,iCAAA;ERk0DV;EQz0DM;IAOI,sCAAA;ERq0DV;EQ50DM;IAOI,yCAAA;ERw0DV;EQ/0DM;IAOI,uBAAA;ER20DV;EQl1DM;IAOI,uBAAA;ER80DV;EQr1DM;IAOI,yBAAA;ERi1DV;EQx1DM;IAOI,yBAAA;ERo1DV;EQ31DM;IAOI,0BAAA;ERu1DV;EQ91DM;IAOI,4BAAA;ER01DV;EQj2DM;IAOI,kCAAA;ER61DV;EQp2DM;IAOI,sCAAA;ERg2DV;EQv2DM;IAOI,oCAAA;ERm2DV;EQ12DM;IAOI,kCAAA;ERs2DV;EQ72DM;IAOI,yCAAA;ERy2DV;EQh3DM;IAOI,wCAAA;ER42DV;EQn3DM;IAOI,wCAAA;ER+2DV;EQt3DM;IAOI,kCAAA;ERk3DV;EQz3DM;IAOI,gCAAA;ERq3DV;EQ53DM;IAOI,8BAAA;ERw3DV;EQ/3DM;IAOI,gCAAA;ER23DV;EQl4DM;IAOI,+BAAA;ER83DV;EQr4DM;IAOI,oCAAA;ERi4DV;EQx4DM;IAOI,kCAAA;ERo4DV;EQ34DM;IAOI,gCAAA;ERu4DV;EQ94DM;IAOI,uCAAA;ER04DV;EQj5DM;IAOI,sCAAA;ER64DV;EQp5DM;IAOI,iCAAA;ERg5DV;EQv5DM;IAOI,2BAAA;ERm5DV;EQ15DM;IAOI,iCAAA;ERs5DV;EQ75DM;IAOI,+BAAA;ERy5DV;EQh6DM;IAOI,6BAAA;ER45DV;EQn6DM;IAOI,+BAAA;ER+5DV;EQt6DM;IAOI,8BAAA;ERk6DV;EQz6DM;IAOI,oBAAA;ERq6DV;EQ56DM;IAOI,mBAAA;ERw6DV;EQ/6DM;IAOI,mBAAA;ER26DV;EQl7DM;IAOI,mBAAA;ER86DV;EQr7DM;IAOI,mBAAA;ERi7DV;EQx7DM;IAOI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EQjtEM;IAOI,+BAAA;ER6sEV;EQptEM;IAOI,iCAAA;ERgtEV;EQvtEM;IAOI,+BAAA;ERmtEV;EQ1tEM;IAOI,0BAAA;ERstEV;EQ7tEM;IAOI,gCAAA;ERytEV;EQhuEM;IAOI,+BAAA;ER4tEV;EQnuEM;IAOI,6BAAA;ER+tEV;EQtuEM;IAOI,+BAAA;ERkuEV;EQzuEM;IAOI,6BAAA;ERquEV;AACF;AIhvEI;EIGI;IAOI,0BAAA;ER0uEV;EQjvEM;IAOI,gCAAA;ER6uEV;EQpvEM;IAOI,yBAAA;ERgvEV;EQvvEM;IAOI,wBAAA;ERmvEV;EQ1vEM;IAOI,yBAAA;ERsvEV;EQ7vEM;IAOI,6BAAA;ERyvEV;EQhwEM;IAOI,8BAAA;ER4vEV;EQnwEM;IAOI,wBAAA;ER+vEV;EQtwEM;IAOI,+BAAA;ERkwEV;EQzwEM;IAOI,wBAAA;ERqwEV;EQ5wEM;IAOI,yBAAA;ERwwEV;EQ/wEM;IAOI,8BAAA;ER2wEV;EQlxEM;IAOI,iCAAA;ER8wEV;EQrxEM;IAOI,sCAAA;ERixEV;EQxxEM;IAOI,yCAAA;ERoxEV;EQ3xEM;IAOI,uBAAA;ERuxEV;EQ9xEM;IAOI,uBAAA;ER0xEV;EQjyEM;IAOI,yBAAA;ER6xEV;EQpyEM;IAOI,yBAAA;ERgyEV;EQvyEM;IAOI,0BAAA;ERmyEV;EQ1yEM;IAOI,4BAAA;ERsyEV;EQ7yEM;IAOI,kCAAA;ERyyEV;EQhzEM;IAOI,sCAAA;ER4yEV;EQnzEM;IAOI,oCAAA;ER+yEV;EQtzEM;IAOI,kCAAA;ERkzEV;EQzzEM;IAOI,yCAAA;ERqzEV;EQ5zEM;IAOI,wCAAA;ERwzEV;EQ/zEM;IAOI,wCAAA;ER2zEV;EQl0EM;IAOI,kCAAA;ER8zEV;EQr0EM;IAOI,gCAAA;ERi0EV;EQx0EM;IAOI,8BAAA;ERo0EV;EQ30EM;IAOI,gCAAA;ERu0EV;EQ90EM;IAOI,+BAAA;ER00EV;EQj1EM;IAOI,oCAAA;ER60EV;EQp1EM;IAOI,kCAAA;ERg1EV;EQv1EM;IAOI,gCAAA;ERm1EV;EQ11EM;IAOI,uCAAA;ERs1EV;EQ71EM;IAOI,sCAAA;ERy1EV;EQh2EM;IAOI,iCA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FM;IAOI,4BAAA;ERqnFV;EQ5nFM;IAOI,8BAAA;ERwnFV;EQ/nFM;IAOI,4BAAA;ER2nFV;EQloFM;IAOI,2BAAA;ER8nFV;EQroFM;IAOI,iCAAA;ERioFV;EQxoFM;IAOI,gCAAA;ERooFV;EQ3oFM;IAOI,8BAAA;ERuoFV;EQ9oFM;IAOI,gCAAA;ER0oFV;EQjpFM;IAOI,8BAAA;ER6oFV;EQppFM;IAOI,4BAAA;ERgpFV;EQvpFM;IAOI,kCAAA;ERmpFV;EQ1pFM;IAOI,iCAAA;ERspFV;EQ7pFM;IAOI,+BAAA;ERypFV;EQhqFM;IAOI,iCAAA;ER4pFV;EQnqFM;IAOI,+BAAA;ER+pFV;EQtqFM;IAOI,0BAAA;ERkqFV;EQzqFM;IAOI,gCAAA;ERqqFV;EQ5qFM;IAOI,+BAAA;ERwqFV;EQ/qFM;IAOI,6BAAA;ER2qFV;EQlrFM;IAOI,+BAAA;ER8qFV;EQrrFM;IAOI,6BAAA;ERirFV;AACF;AI5rFI;EIGI;IAOI,0BAAA;ERsrFV;EQ7rFM;IAOI,gCAAA;ERyrFV;EQhsFM;IAOI,yBAAA;ER4rFV;EQnsFM;IAOI,wBAAA;ER+rFV;EQtsFM;IAOI,yBAAA;ERksFV;EQzsFM;IAOI,6BAAA;ERqsFV;EQ5sFM;IAOI,8BAAA;ERwsFV;EQ/sFM;IAOI,wBAAA;ER2sFV;EQltFM;IAOI,+BAAA;ER8sFV;EQrtFM;IAOI,wBAAA;ERitFV;EQxtFM;IAOI,yBAAA;ERotFV;EQ3tFM;IAOI,8BAAA;ERutFV;EQ9tFM;IAOI,iCAAA;ER0tFV;EQjuFM;IAOI,sCAAA;ER6tFV;EQpuFM;IAOI,yCAAA;ERguFV;EQvuFM;IAOI,uBAAA;ERmuFV;EQ1uFM;IAOI,uBAAA;ERsuFV;EQ7uFM;IAOI,yBAAA;ERyuFV;EQhvFM;IAOI,yBAAA;ER4uFV;EQnvFM;IAOI,0BAAA;ER+uFV;EQtvFM;IAOI,4BAAA;ERkvFV;EQzvFM;IAOI,kCAAA;ERqvFV;EQ5vFM;IAOI,sCAAA;ERwvFV;EQ/vFM;IAOI,oCAAA;ER2vFV;EQlwFM;IAOI,kCAAA;ER8vFV;EQrwFM;IAOI,yCAAA;ERiwFV;EQxwFM;IAOI,wCAAA;E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3lHM;IAOI,wBAAA;ERulHV;EQ9lHM;IAOI,yBAAA;ER0lHV;EQjmHM;IAOI,6BAAA;ER6lHV;EQpmHM;IAOI,8BAAA;ERgmHV;EQvmHM;IAOI,wBAAA;ERmmHV;EQ1mHM;IAOI,+BAAA;ERsmHV;EQ7mHM;IAOI,wBAAA;ERymHV;EQhnHM;IAOI,yBAAA;ER4mHV;EQnnHM;IAOI,8BAAA;ER+mHV;EQtnHM;IAOI,iCAAA;ERknHV;EQznHM;IAOI,sCAAA;ERqnHV;EQ5nHM;IAOI,yCAAA;ERwnHV;EQ/nHM;IAOI,uBAAA;ER2nHV;EQloHM;IAOI,uBAAA;ER8nHV;EQroHM;IAOI,yBAAA;ERioHV;EQxoHM;IAOI,yBAAA;ERooHV;EQ3oHM;IAOI,0BAAA;ERuoHV;EQ9oHM;IAOI,4BAAA;ER0oHV;EQjpHM;IAOI,kCAAA;ER6oHV;EQppHM;IAOI,sCAAA;ERgpHV;EQvpHM;IAOI,oCAAA;ERmpHV;EQ1pHM;IAOI,kCAAA;ERspHV;EQ7pHM;IAOI,yCAAA;ERypHV;EQhqHM;IAOI,wCAAA;ER4pHV;EQnqHM;IAOI,wCAAA;ER+pHV;EQtqHM;IAOI,kCAAA;ERkqHV;EQzqHM;IAOI,gCAAA;ERqqHV;EQ5qHM;IAOI,8BAAA;ERwqHV;EQ/qHM;IAOI,gCAAA;ER2qHV;EQlrHM;IAOI,+BAAA;ER8qHV;EQrrHM;IAOI,oCAAA;ERirHV;EQxrHM;IAOI,kCAAA;ERorHV;EQ3rHM;IAOI,gCAAA;ERurHV;EQ9rHM;IAOI,uCAAA;ER0rHV;EQjsHM;IAOI,sCAAA;ER6rHV;EQpsHM;IAOI,iCAAA;ERgsHV;EQvsHM;IAOI,2BAAA;ERmsHV;EQ1sHM;IAOI,iCAAA;ERssHV;EQ7sHM;IAOI,+BAAA;ERysHV;EQhtHM;IAOI,6BAAA;ER4sHV;EQntHM;IAOI,+BAAA;ER+sHV;EQttHM;IAOI,8BAAA;ERktHV;EQztHM;IAOI,oBAAA;ERqtHV;EQ5tHM;IAOI,mBAAA;ERwtHV;EQ/tHM;IAOI,mBAAA;ER2tHV;EQluHM;IAOI,mBAAA;ER8tHV;EQruHM;IAOI,mBAAA;ERiuHV;EQxuHM;IAOI,mBAAA;ERouHV;EQ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","file":"bootstrap-grid.css","sourcesContent":["@mixin bsBanner($file) {\n /*!\n * Bootstrap #{$file} v5.3.0-alpha1 (https://getbootstrap.com/)\n * Copyright 2011-2022 The Bootstrap Authors\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n}\n",":root,\n[data-bs-theme=\"light\"] {\n // Note: Custom variable values only support SassScript inside `#{}`.\n\n // Colors\n //\n // Generate palettes for full colors, grays, and theme colors.\n\n @each $color, $value in $colors {\n --#{$prefix}#{$color}: #{$value};\n }\n\n @each $color, $value in $grays {\n --#{$prefix}gray-#{$color}: #{$value};\n }\n\n @each $color, $value in $theme-colors {\n --#{$prefix}#{$color}: #{$value};\n }\n\n @each $color, $value in $theme-colors-rgb {\n --#{$prefix}#{$color}-rgb: #{$value};\n }\n\n @each $color, $value in $theme-colors-text {\n --#{$prefix}#{$color}-text: #{$value};\n }\n\n @each $color, $value in $theme-colors-bg-subtle {\n --#{$prefix}#{$color}-bg-subtle: #{$value};\n }\n\n @each $color, $value in $theme-colors-border-subtle {\n --#{$prefix}#{$color}-border-subtle: #{$value};\n }\n\n --#{$prefix}white-rgb: #{to-rgb($white)};\n --#{$prefix}black-rgb: #{to-rgb($black)};\n --#{$prefix}body-color-rgb: #{to-rgb($body-color)};\n --#{$prefix}body-bg-rgb: #{to-rgb($body-bg)};\n\n // Fonts\n\n // Note: Use `inspect` for lists so that quoted items keep the quotes.\n // See https://github.com/sass/sass/issues/2383#issuecomment-336349172\n --#{$prefix}font-sans-serif: #{inspect($font-family-sans-serif)};\n --#{$prefix}font-monospace: #{inspect($font-family-monospace)};\n --#{$prefix}gradient: #{$gradient};\n\n // Root and body\n // scss-docs-start root-body-variables\n @if $font-size-root != null {\n --#{$prefix}root-font-size: #{$font-size-root};\n }\n --#{$prefix}body-font-family: #{inspect($font-family-base)};\n @include rfs($font-size-base, --#{$prefix}body-font-size);\n --#{$prefix}body-font-weight: #{$font-weight-base};\n --#{$prefix}body-line-height: #{$line-height-base};\n --#{$prefix}body-color: #{$body-color};\n\n --#{$prefix}emphasis-color: #{$body-emphasis-color};\n --#{$prefix}emphasis-color-rgb: #{to-rgb($body-emphasis-color)};\n\n --#{$prefix}secondary-color: #{$body-secondary-color};\n --#{$prefix}secondary-color-rgb: #{to-rgb($body-secondary-color)};\n --#{$prefix}secondary-bg: #{$body-secondary-bg};\n --#{$prefix}secondary-bg-rgb: #{to-rgb($body-secondary-bg)};\n\n --#{$prefix}tertiary-color: #{$body-tertiary-color};\n --#{$prefix}tertiary-color-rgb: #{to-rgb($body-tertiary-color)};\n --#{$prefix}tertiary-bg: #{$body-tertiary-bg};\n --#{$prefix}tertiary-bg-rgb: #{to-rgb($body-tertiary-bg)};\n\n @if $body-text-align != null {\n --#{$prefix}body-text-align: #{$body-text-align};\n }\n --#{$prefix}body-bg: #{$body-bg};\n --#{$prefix}body-bg-rgb: #{to-rgb($body-bg)};\n // scss-docs-end root-body-variables\n\n @if $headings-color != null {\n --#{$prefix}heading-color: #{$headings-color};\n }\n\n --#{$prefix}link-color: #{$link-color};\n --#{$prefix}link-color-rgb: #{to-rgb($link-color)};\n --#{$prefix}link-decoration: #{$link-decoration};\n\n --#{$prefix}link-hover-color: #{$link-hover-color};\n --#{$prefix}link-hover-color-rgb: #{to-rgb($link-hover-color)};\n\n @if $link-hover-decoration != null {\n --#{$prefix}link-hover-decoration: #{$link-hover-decoration};\n }\n\n --#{$prefix}code-color: #{$code-color};\n --#{$prefix}highlight-bg: #{$mark-bg};\n\n // scss-docs-start root-border-var\n --#{$prefix}border-width: #{$border-width};\n --#{$prefix}border-style: #{$border-style};\n --#{$prefix}border-color: #{$border-color};\n --#{$prefix}border-color-translucent: #{$border-color-translucent};\n\n --#{$prefix}border-radius: #{$border-radius};\n --#{$prefix}border-radius-sm: #{$border-radius-sm};\n --#{$prefix}border-radius-lg: #{$border-radius-lg};\n --#{$prefix}border-radius-xl: #{$border-radius-xl};\n --#{$prefix}border-radius-2xl: #{$border-radius-2xl};\n --#{$prefix}border-radius-pill: #{$border-radius-pill};\n // scss-docs-end root-border-var\n\n --#{$prefix}box-shadow: #{$box-shadow};\n --#{$prefix}box-shadow-sm: #{$box-shadow-sm};\n --#{$prefix}box-shadow-lg: #{$box-shadow-lg};\n --#{$prefix}box-shadow-inset: #{$box-shadow-inset};\n\n --#{$prefix}emphasis-color: #{$emphasis-color};\n\n // scss-docs-start form-control-vars\n --#{$prefix}form-control-bg: var(--#{$prefix}body-bg);\n --#{$prefix}form-control-disabled-bg: var(--#{$prefix}secondary-bg);\n // scss-docs-end form-control-vars\n\n --#{$prefix}highlight-bg: #{$mark-bg};\n\n @each $name, $value in $grid-breakpoints {\n --#{$prefix}breakpoint-#{$name}: #{$value};\n }\n}\n\n@if $enable-dark-mode {\n @include color-mode(dark, true) {\n // scss-docs-start root-dark-mode-vars\n --#{$prefix}body-color: #{$body-color-dark};\n --#{$prefix}body-color-rgb: #{to-rgb($body-color-dark)};\n --#{$prefix}body-bg: #{$body-bg-dark};\n --#{$prefix}body-bg-rgb: #{to-rgb($body-bg-dark)};\n\n --#{$prefix}emphasis-color: #{$body-emphasis-color-dark};\n --#{$prefix}emphasis-color-rgb: #{to-rgb($body-emphasis-color-dark)};\n\n --#{$prefix}secondary-color: #{$body-secondary-color-dark};\n --#{$prefix}secondary-color-rgb: #{to-rgb($body-secondary-color-dark)};\n --#{$prefix}secondary-bg: #{$body-secondary-bg-dark};\n --#{$prefix}secondary-bg-rgb: #{to-rgb($body-secondary-bg-dark)};\n\n --#{$prefix}tertiary-color: #{$body-tertiary-color-dark};\n --#{$prefix}tertiary-color-rgb: #{to-rgb($body-tertiary-color-dark)};\n --#{$prefix}tertiary-bg: #{$body-tertiary-bg-dark};\n --#{$prefix}tertiary-bg-rgb: #{to-rgb($body-tertiary-bg-dark)};\n\n --#{$prefix}emphasis-color: #{$emphasis-color-dark};\n\n --#{$prefix}primary-text: #{$primary-text-dark};\n --#{$prefix}secondary-text: #{$secondary-text-dark};\n --#{$prefix}success-text: #{$success-text-dark};\n --#{$prefix}info-text: #{$info-text-dark};\n --#{$prefix}warning-text: #{$warning-text-dark};\n --#{$prefix}danger-text: #{$danger-text-dark};\n --#{$prefix}light-text: #{$light-text-dark};\n --#{$prefix}dark-text: #{$dark-text-dark};\n\n --#{$prefix}primary-bg-subtle: #{$primary-bg-subtle-dark};\n --#{$prefix}secondary-bg-subtle: #{$secondary-bg-subtle-dark};\n --#{$prefix}success-bg-subtle: #{$success-bg-subtle-dark};\n --#{$prefix}info-bg-subtle: #{$info-bg-subtle-dark};\n --#{$prefix}warning-bg-subtle: #{$warning-bg-subtle-dark};\n --#{$prefix}danger-bg-subtle: #{$danger-bg-subtle-dark};\n --#{$prefix}light-bg-subtle: #{$light-bg-subtle-dark};\n --#{$prefix}dark-bg-subtle: #{$dark-bg-subtle-dark};\n\n --#{$prefix}primary-border-subtle: #{$primary-border-subtle-dark};\n --#{$prefix}secondary-border-subtle: #{$secondary-border-subtle-dark};\n --#{$prefix}success-border-subtle: #{$success-border-subtle-dark};\n --#{$prefix}info-border-subtle: #{$info-border-subtle-dark};\n --#{$prefix}warning-border-subtle: #{$warning-border-subtle-dark};\n --#{$prefix}danger-border-subtle: #{$danger-border-subtle-dark};\n --#{$prefix}light-border-subtle: #{$light-border-subtle-dark};\n --#{$prefix}dark-border-subtle: #{$dark-border-subtle-dark};\n\n --#{$prefix}heading-color: #{$headings-color-dark};\n\n --#{$prefix}link-color: #{$link-color-dark};\n --#{$prefix}link-hover-color: #{$link-hover-color-dark};\n --#{$prefix}link-color-rgb: #{to-rgb($link-color-dark)};\n --#{$prefix}link-hover-color-rgb: #{to-rgb($link-hover-color-dark)};\n\n --#{$prefix}code-color: #{$code-color-dark};\n\n --#{$prefix}border-color: #{$border-color-dark};\n --#{$prefix}border-color-translucent: #{$border-color-translucent-dark};\n // scss-docs-end root-dark-mode-vars\n }\n}\n","// stylelint-disable property-blacklist, scss/dollar-variable-default\n\n// SCSS RFS mixin\n//\n// Automated responsive values for font sizes, paddings, margins and much more\n//\n// Licensed under MIT (https://github.com/twbs/rfs/blob/main/LICENSE)\n\n// Configuration\n\n// Base value\n$rfs-base-value: 1.25rem !default;\n$rfs-unit: rem !default;\n\n@if $rfs-unit != rem and $rfs-unit != px {\n @error \"`#{$rfs-unit}` is not a valid unit for $rfs-unit. Use `px` or `rem`.\";\n}\n\n// Breakpoint at where values start decreasing if screen width is smaller\n$rfs-breakpoint: 1200px !default;\n$rfs-breakpoint-unit: px !default;\n\n@if $rfs-breakpoint-unit != px and $rfs-breakpoint-unit != em and $rfs-breakpoint-unit != rem {\n @error \"`#{$rfs-breakpoint-unit}` is not a valid unit for $rfs-breakpoint-unit. Use `px`, `em` or `rem`.\";\n}\n\n// Resize values based on screen height and width\n$rfs-two-dimensional: false !default;\n\n// Factor of decrease\n$rfs-factor: 10 !default;\n\n@if type-of($rfs-factor) != number or $rfs-factor <= 1 {\n @error \"`#{$rfs-factor}` is not a valid $rfs-factor, it must be greater than 1.\";\n}\n\n// Mode. Possibilities: \"min-media-query\", \"max-media-query\"\n$rfs-mode: min-media-query !default;\n\n// Generate enable or disable classes. Possibilities: false, \"enable\" or \"disable\"\n$rfs-class: false !default;\n\n// 1 rem = $rfs-rem-value px\n$rfs-rem-value: 16 !default;\n\n// Safari iframe resize bug: https://github.com/twbs/rfs/issues/14\n$rfs-safari-iframe-resize-bug-fix: false !default;\n\n// Disable RFS by setting $enable-rfs to false\n$enable-rfs: true !default;\n\n// Cache $rfs-base-value unit\n$rfs-base-value-unit: unit($rfs-base-value);\n\n@function divide($dividend, $divisor, $precision: 10) {\n $sign: if($dividend > 0 and $divisor > 0 or $dividend < 0 and $divisor < 0, 1, -1);\n $dividend: abs($dividend);\n $divisor: abs($divisor);\n @if $dividend == 0 {\n @return 0;\n }\n @if $divisor == 0 {\n @error \"Cannot divide by 0\";\n }\n $remainder: $dividend;\n $result: 0;\n $factor: 10;\n @while ($remainder > 0 and $precision >= 0) {\n $quotient: 0;\n @while ($remainder >= $divisor) {\n $remainder: $remainder - $divisor;\n $quotient: $quotient + 1;\n }\n $result: $result * 10 + $quotient;\n $factor: $factor * .1;\n $remainder: $remainder * 10;\n $precision: $precision - 1;\n @if ($precision < 0 and $remainder >= $divisor * 5) {\n $result: $result + 1;\n }\n }\n $result: $result * $factor * $sign;\n $dividend-unit: unit($dividend);\n $divisor-unit: unit($divisor);\n $unit-map: (\n \"px\": 1px,\n \"rem\": 1rem,\n \"em\": 1em,\n \"%\": 1%\n );\n @if ($dividend-unit != $divisor-unit and map-has-key($unit-map, $dividend-unit)) {\n $result: $result * map-get($unit-map, $dividend-unit);\n }\n @return $result;\n}\n\n// Remove px-unit from $rfs-base-value for calculations\n@if $rfs-base-value-unit == px {\n $rfs-base-value: divide($rfs-base-value, $rfs-base-value * 0 + 1);\n}\n@else if $rfs-base-value-unit == rem {\n $rfs-base-value: divide($rfs-base-value, divide($rfs-base-value * 0 + 1, $rfs-rem-value));\n}\n\n// Cache $rfs-breakpoint unit to prevent multiple calls\n$rfs-breakpoint-unit-cache: unit($rfs-breakpoint);\n\n// Remove unit from $rfs-breakpoint for calculations\n@if $rfs-breakpoint-unit-cache == px {\n $rfs-breakpoint: divide($rfs-breakpoint, $rfs-breakpoint * 0 + 1);\n}\n@else if $rfs-breakpoint-unit-cache == rem or $rfs-breakpoint-unit-cache == \"em\" {\n $rfs-breakpoint: divide($rfs-breakpoint, divide($rfs-breakpoint * 0 + 1, $rfs-rem-value));\n}\n\n// Calculate the media query value\n$rfs-mq-value: if($rfs-breakpoint-unit == px, #{$rfs-breakpoint}px, #{divide($rfs-breakpoint, $rfs-rem-value)}#{$rfs-breakpoint-unit});\n$rfs-mq-property-width: if($rfs-mode == max-media-query, max-width, min-width);\n$rfs-mq-property-height: if($rfs-mode == max-media-query, max-height, min-height);\n\n// Internal mixin used to determine which media query needs to be used\n@mixin _rfs-media-query {\n @if $rfs-two-dimensional {\n @if $rfs-mode == max-media-query {\n @media (#{$rfs-mq-property-width}: #{$rfs-mq-value}), (#{$rfs-mq-property-height}: #{$rfs-mq-value}) {\n @content;\n }\n }\n @else {\n @media (#{$rfs-mq-property-width}: #{$rfs-mq-value}) and (#{$rfs-mq-property-height}: #{$rfs-mq-value}) {\n @content;\n }\n }\n }\n @else {\n @media (#{$rfs-mq-property-width}: #{$rfs-mq-value}) {\n @content;\n }\n }\n}\n\n// Internal mixin that adds disable classes to the selector if needed.\n@mixin _rfs-rule {\n @if $rfs-class == disable and $rfs-mode == max-media-query {\n // Adding an extra class increases specificity, which prevents the media query to override the property\n &,\n .disable-rfs &,\n &.disable-rfs {\n @content;\n }\n }\n @else if $rfs-class == enable and $rfs-mode == min-media-query {\n .enable-rfs &,\n &.enable-rfs {\n @content;\n }\n }\n @else {\n @content;\n }\n}\n\n// Internal mixin that adds enable classes to the selector if needed.\n@mixin _rfs-media-query-rule {\n\n @if $rfs-class == enable {\n @if $rfs-mode == min-media-query {\n @content;\n }\n\n @include _rfs-media-query {\n .enable-rfs &,\n &.enable-rfs {\n @content;\n }\n }\n }\n @else {\n @if $rfs-class == disable and $rfs-mode == min-media-query {\n .disable-rfs &,\n &.disable-rfs {\n @content;\n }\n }\n @include _rfs-media-query {\n @content;\n }\n }\n}\n\n// Helper function to get the formatted non-responsive value\n@function rfs-value($values) {\n // Convert to list\n $values: if(type-of($values) != list, ($values,), $values);\n\n $val: '';\n\n // Loop over each value and calculate value\n @each $value in $values {\n @if $value == 0 {\n $val: $val + ' 0';\n }\n @else {\n // Cache $value unit\n $unit: if(type-of($value) == \"number\", unit($value), false);\n\n @if $unit == px {\n // Convert to rem if needed\n $val: $val + ' ' + if($rfs-unit == rem, #{divide($value, $value * 0 + $rfs-rem-value)}rem, $value);\n }\n @else if $unit == rem {\n // Convert to px if needed\n $val: $val + ' ' + if($rfs-unit == px, #{divide($value, $value * 0 + 1) * $rfs-rem-value}px, $value);\n }\n @else {\n // If $value isn't a number (like inherit) or $value has a unit (not px or rem, like 1.5em) or $ is 0, just print the value\n $val: $val + ' ' + $value;\n }\n }\n }\n\n // Remove first space\n @return unquote(str-slice($val, 2));\n}\n\n// Helper function to get the responsive value calculated by RFS\n@function rfs-fluid-value($values) {\n // Convert to list\n $values: if(type-of($values) != list, ($values,), $values);\n\n $val: '';\n\n // Loop over each value and calculate value\n @each $value in $values {\n @if $value == 0 {\n $val: $val + ' 0';\n }\n\n @else {\n // Cache $value unit\n $unit: if(type-of($value) == \"number\", unit($value), false);\n\n // If $value isn't a number (like inherit) or $value has a unit (not px or rem, like 1.5em) or $ is 0, just print the value\n @if not $unit or $unit != px and $unit != rem {\n $val: $val + ' ' + $value;\n }\n\n @else {\n // Remove unit from $value for calculations\n $value: divide($value, $value * 0 + if($unit == px, 1, divide(1, $rfs-rem-value)));\n\n // Only add the media query if the value is greater than the minimum value\n @if abs($value) <= $rfs-base-value or not $enable-rfs {\n $val: $val + ' ' + if($rfs-unit == rem, #{divide($value, $rfs-rem-value)}rem, #{$value}px);\n }\n @else {\n // Calculate the minimum value\n $value-min: $rfs-base-value + divide(abs($value) - $rfs-base-value, $rfs-factor);\n\n // Calculate difference between $value and the minimum value\n $value-diff: abs($value) - $value-min;\n\n // Base value formatting\n $min-width: if($rfs-unit == rem, #{divide($value-min, $rfs-rem-value)}rem, #{$value-min}px);\n\n // Use negative value if needed\n $min-width: if($value < 0, -$min-width, $min-width);\n\n // Use `vmin` if two-dimensional is enabled\n $variable-unit: if($rfs-two-dimensional, vmin, vw);\n\n // Calculate the variable width between 0 and $rfs-breakpoint\n $variable-width: #{divide($value-diff * 100, $rfs-breakpoint)}#{$variable-unit};\n\n // Return the calculated value\n $val: $val + ' calc(' + $min-width + if($value < 0, ' - ', ' + ') + $variable-width + ')';\n }\n }\n }\n }\n\n // Remove first space\n @return unquote(str-slice($val, 2));\n}\n\n// RFS mixin\n@mixin rfs($values, $property: font-size) {\n @if $values != null {\n $val: rfs-value($values);\n $fluidVal: rfs-fluid-value($values);\n\n // Do not print the media query if responsive & non-responsive values are the same\n @if $val == $fluidVal {\n #{$property}: $val;\n }\n @else {\n @include _rfs-rule {\n #{$property}: if($rfs-mode == max-media-query, $val, $fluidVal);\n\n // Include safari iframe resize fix if needed\n min-width: if($rfs-safari-iframe-resize-bug-fix, (0 * 1vw), null);\n }\n\n @include _rfs-media-query-rule {\n #{$property}: if($rfs-mode == max-media-query, $fluidVal, $val);\n }\n }\n }\n}\n\n// Shorthand helper mixins\n@mixin font-size($value) {\n @include rfs($value);\n}\n\n@mixin padding($value) {\n @include rfs($value, padding);\n}\n\n@mixin padding-top($value) {\n @include rfs($value, padding-top);\n}\n\n@mixin padding-right($value) {\n @include rfs($value, padding-right);\n}\n\n@mixin padding-bottom($value) {\n @include rfs($value, padding-bottom);\n}\n\n@mixin padding-left($value) {\n @include rfs($value, padding-left);\n}\n\n@mixin margin($value) {\n @include rfs($value, margin);\n}\n\n@mixin margin-top($value) {\n @include rfs($value, margin-top);\n}\n\n@mixin margin-right($value) {\n @include rfs($value, margin-right);\n}\n\n@mixin margin-bottom($value) {\n @include rfs($value, margin-bottom);\n}\n\n@mixin margin-left($value) {\n @include rfs($value, margin-left);\n}\n","/*!\n * Bootstrap Grid v5.3.0-alpha1 (https://getbootstrap.com/)\n * Copyright 2011-2022 The Bootstrap Authors\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n:root,\n[data-bs-theme=light] {\n --bs-blue: #0d6efd;\n --bs-indigo: #6610f2;\n --bs-purple: #6f42c1;\n --bs-pink: #d63384;\n --bs-red: #dc3545;\n --bs-orange: #fd7e14;\n --bs-yellow: #ffc107;\n --bs-green: #198754;\n --bs-teal: #20c997;\n --bs-cyan: #0dcaf0;\n --bs-black: #000;\n --bs-white: #fff;\n --bs-gray: #6c757d;\n --bs-gray-dark: #343a40;\n --bs-gray-100: #f8f9fa;\n --bs-gray-200: #e9ecef;\n --bs-gray-300: #dee2e6;\n --bs-gray-400: #ced4da;\n --bs-gray-500: #adb5bd;\n --bs-gray-600: #6c757d;\n --bs-gray-700: #495057;\n --bs-gray-800: #343a40;\n --bs-gray-900: #212529;\n --bs-primary: #0d6efd;\n --bs-secondary: #6c757d;\n --bs-success: #198754;\n --bs-info: #0dcaf0;\n --bs-warning: #ffc107;\n --bs-danger: #dc3545;\n --bs-light: #f8f9fa;\n --bs-dark: #212529;\n --bs-primary-rgb: 13, 110, 253;\n --bs-secondary-rgb: 108, 117, 125;\n --bs-success-rgb: 25, 135, 84;\n --bs-info-rgb: 13, 202, 240;\n --bs-warning-rgb: 255, 193, 7;\n --bs-danger-rgb: 220, 53, 69;\n --bs-light-rgb: 248, 249, 250;\n --bs-dark-rgb: 33, 37, 41;\n --bs-primary-text: #0a58ca;\n --bs-secondary-text: #6c757d;\n --bs-success-text: #146c43;\n --bs-info-text: #087990;\n --bs-warning-text: #997404;\n --bs-danger-text: #b02a37;\n --bs-light-text: #6c757d;\n --bs-dark-text: #495057;\n --bs-primary-bg-subtle: #cfe2ff;\n --bs-secondary-bg-subtle: #f8f9fa;\n --bs-success-bg-subtle: #d1e7dd;\n --bs-info-bg-subtle: #cff4fc;\n --bs-warning-bg-subtle: #fff3cd;\n --bs-danger-bg-subtle: #f8d7da;\n --bs-light-bg-subtle: #fcfcfd;\n --bs-dark-bg-subtle: #ced4da;\n --bs-primary-border-subtle: #9ec5fe;\n --bs-secondary-border-subtle: #e9ecef;\n --bs-success-border-subtle: #a3cfbb;\n --bs-info-border-subtle: #9eeaf9;\n --bs-warning-border-subtle: #ffe69c;\n --bs-danger-border-subtle: #f1aeb5;\n --bs-light-border-subtle: #e9ecef;\n --bs-dark-border-subtle: #adb5bd;\n --bs-white-rgb: 255, 255, 255;\n --bs-black-rgb: 0, 0, 0;\n --bs-body-color-rgb: 33, 37, 41;\n --bs-body-bg-rgb: 255, 255, 255;\n --bs-font-sans-serif: system-ui, -apple-system, \"Segoe UI\", Roboto, \"Helvetica Neue\", \"Noto Sans\", \"Liberation Sans\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\n --bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;\n --bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));\n --bs-body-font-family: var(--bs-font-sans-serif);\n --bs-body-font-size: 1rem;\n --bs-body-font-weight: 400;\n --bs-body-line-height: 1.5;\n --bs-body-color: #212529;\n --bs-emphasis-color: #000;\n --bs-emphasis-color-rgb: 0, 0, 0;\n --bs-secondary-color: rgba(33, 37, 41, 0.75);\n --bs-secondary-color-rgb: 33, 37, 41;\n --bs-secondary-bg: #e9ecef;\n --bs-secondary-bg-rgb: 233, 236, 239;\n --bs-tertiary-color: rgba(33, 37, 41, 0.5);\n --bs-tertiary-color-rgb: 33, 37, 41;\n --bs-tertiary-bg: #f8f9fa;\n --bs-tertiary-bg-rgb: 248, 249, 250;\n --bs-body-bg: #fff;\n --bs-body-bg-rgb: 255, 255, 255;\n --bs-link-color: #0d6efd;\n --bs-link-color-rgb: 13, 110, 253;\n --bs-link-decoration: underline;\n --bs-link-hover-color: #0a58ca;\n --bs-link-hover-color-rgb: 10, 88, 202;\n --bs-code-color: #d63384;\n --bs-highlight-bg: #fff3cd;\n --bs-border-width: 1px;\n --bs-border-style: solid;\n --bs-border-color: #dee2e6;\n --bs-border-color-translucent: rgba(0, 0, 0, 0.175);\n --bs-border-radius: 0.375rem;\n --bs-border-radius-sm: 0.25rem;\n --bs-border-radius-lg: 0.5rem;\n --bs-border-radius-xl: 1rem;\n --bs-border-radius-2xl: 2rem;\n --bs-border-radius-pill: 50rem;\n --bs-box-shadow: 0 0.5rem 1rem rgba(var(--bs-body-color-rgb), 0.15);\n --bs-box-shadow-sm: 0 0.125rem 0.25rem rgba(var(--bs-body-color-rgb), 0.075);\n --bs-box-shadow-lg: 0 1rem 3rem rgba(var(--bs-body-color-rgb), 0.175);\n --bs-box-shadow-inset: inset 0 1px 2px rgba(var(--bs-body-color-rgb), 0.075);\n --bs-emphasis-color: #000;\n --bs-form-control-bg: var(--bs-body-bg);\n --bs-form-control-disabled-bg: var(--bs-secondary-bg);\n --bs-highlight-bg: #fff3cd;\n --bs-breakpoint-xs: 0;\n --bs-breakpoint-sm: 576px;\n --bs-breakpoint-md: 768px;\n --bs-breakpoint-lg: 992px;\n --bs-breakpoint-xl: 1200px;\n --bs-breakpoint-xxl: 1400px;\n}\n\n[data-bs-theme=dark] {\n --bs-body-color: #adb5bd;\n --bs-body-color-rgb: 173, 181, 189;\n --bs-body-bg: #212529;\n --bs-body-bg-rgb: 33, 37, 41;\n --bs-emphasis-color: #f8f9fa;\n --bs-emphasis-color-rgb: 248, 249, 250;\n --bs-secondary-color: rgba(173, 181, 189, 0.75);\n --bs-secondary-color-rgb: 173, 181, 189;\n --bs-secondary-bg: #343a40;\n --bs-secondary-bg-rgb: 52, 58, 64;\n --bs-tertiary-color: rgba(173, 181, 189, 0.5);\n --bs-tertiary-color-rgb: 173, 181, 189;\n --bs-tertiary-bg: #2b3035;\n --bs-tertiary-bg-rgb: 43, 48, 53;\n --bs-emphasis-color: #fff;\n --bs-primary-text: #6ea8fe;\n --bs-secondary-text: #dee2e6;\n --bs-success-text: #75b798;\n --bs-info-text: #6edff6;\n --bs-warning-text: #ffda6a;\n --bs-danger-text: #ea868f;\n --bs-light-text: #f8f9fa;\n --bs-dark-text: #dee2e6;\n --bs-primary-bg-subtle: #031633;\n --bs-secondary-bg-subtle: #212529;\n --bs-success-bg-subtle: #051b11;\n --bs-info-bg-subtle: #032830;\n --bs-warning-bg-subtle: #332701;\n --bs-danger-bg-subtle: #2c0b0e;\n --bs-light-bg-subtle: #343a40;\n --bs-dark-bg-subtle: #1a1d20;\n --bs-primary-border-subtle: #084298;\n --bs-secondary-border-subtle: #495057;\n --bs-success-border-subtle: #0f5132;\n --bs-info-border-subtle: #055160;\n --bs-warning-border-subtle: #664d03;\n --bs-danger-border-subtle: #842029;\n --bs-light-border-subtle: #495057;\n --bs-dark-border-subtle: #343a40;\n --bs-heading-color: #fff;\n --bs-link-color: #6ea8fe;\n --bs-link-hover-color: #9ec5fe;\n --bs-link-color-rgb: 110, 168, 254;\n --bs-link-hover-color-rgb: 158, 197, 254;\n --bs-code-color: #e685b5;\n --bs-border-color: #495057;\n --bs-border-color-translucent: rgba(255, 255, 255, 0.15);\n}\n\n.container,\n.container-fluid,\n.container-xxl,\n.container-xl,\n.container-lg,\n.container-md,\n.container-sm {\n --bs-gutter-x: 1.5rem;\n --bs-gutter-y: 0;\n width: 100%;\n padding-right: calc(var(--bs-gutter-x) * 0.5);\n padding-left: calc(var(--bs-gutter-x) * 0.5);\n margin-right: auto;\n margin-left: auto;\n}\n\n@media (min-width: 576px) {\n .container-sm, .container {\n max-width: 540px;\n }\n}\n@media (min-width: 768px) {\n .container-md, .container-sm, .container {\n max-width: 720px;\n }\n}\n@media (min-width: 992px) {\n .container-lg, .container-md, .container-sm, .container {\n max-width: 960px;\n }\n}\n@media (min-width: 1200px) {\n .container-xl, .container-lg, .container-md, .container-sm, .container {\n max-width: 1140px;\n }\n}\n@media (min-width: 1400px) {\n .container-xxl, .container-xl, .container-lg, .container-md, .container-sm, .container {\n max-width: 1320px;\n }\n}\n.row {\n --bs-gutter-x: 1.5rem;\n --bs-gutter-y: 0;\n display: flex;\n flex-wrap: wrap;\n margin-top: calc(-1 * var(--bs-gutter-y));\n margin-right: calc(-0.5 * var(--bs-gutter-x));\n margin-left: calc(-0.5 * var(--bs-gutter-x));\n}\n.row > * {\n box-sizing: border-box;\n flex-shrink: 0;\n width: 100%;\n max-width: 100%;\n padding-right: calc(var(--bs-gutter-x) * 0.5);\n padding-left: calc(var(--bs-gutter-x) * 0.5);\n margin-top: var(--bs-gutter-y);\n}\n\n.col {\n flex: 1 0 0%;\n}\n\n.row-cols-auto > * {\n flex: 0 0 auto;\n width: auto;\n}\n\n.row-cols-1 > * {\n flex: 0 0 auto;\n width: 100%;\n}\n\n.row-cols-2 > * {\n flex: 0 0 auto;\n width: 50%;\n}\n\n.row-cols-3 > * {\n flex: 0 0 auto;\n width: 33.3333333333%;\n}\n\n.row-cols-4 > * {\n flex: 0 0 auto;\n width: 25%;\n}\n\n.row-cols-5 > * {\n flex: 0 0 auto;\n width: 20%;\n}\n\n.row-cols-6 > * {\n flex: 0 0 auto;\n width: 16.6666666667%;\n}\n\n.col-auto {\n flex: 0 0 auto;\n width: auto;\n}\n\n.col-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n}\n\n.col-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n}\n\n.col-3 {\n flex: 0 0 auto;\n width: 25%;\n}\n\n.col-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n}\n\n.col-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n}\n\n.col-6 {\n flex: 0 0 auto;\n width: 50%;\n}\n\n.col-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n}\n\n.col-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n}\n\n.col-9 {\n flex: 0 0 auto;\n width: 75%;\n}\n\n.col-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n}\n\n.col-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n}\n\n.col-12 {\n flex: 0 0 auto;\n width: 100%;\n}\n\n.offset-1 {\n margin-left: 8.33333333%;\n}\n\n.offset-2 {\n margin-left: 16.66666667%;\n}\n\n.offset-3 {\n margin-left: 25%;\n}\n\n.offset-4 {\n margin-left: 33.33333333%;\n}\n\n.offset-5 {\n margin-left: 41.66666667%;\n}\n\n.offset-6 {\n margin-left: 50%;\n}\n\n.offset-7 {\n margin-left: 58.33333333%;\n}\n\n.offset-8 {\n margin-left: 66.66666667%;\n}\n\n.offset-9 {\n margin-left: 75%;\n}\n\n.offset-10 {\n margin-left: 83.33333333%;\n}\n\n.offset-11 {\n margin-left: 91.66666667%;\n}\n\n.g-0,\n.gx-0 {\n --bs-gutter-x: 0;\n}\n\n.g-0,\n.gy-0 {\n --bs-gutter-y: 0;\n}\n\n.g-1,\n.gx-1 {\n --bs-gutter-x: 0.25rem;\n}\n\n.g-1,\n.gy-1 {\n --bs-gutter-y: 0.25rem;\n}\n\n.g-2,\n.gx-2 {\n --bs-gutter-x: 0.5rem;\n}\n\n.g-2,\n.gy-2 {\n --bs-gutter-y: 0.5rem;\n}\n\n.g-3,\n.gx-3 {\n --bs-gutter-x: 1rem;\n}\n\n.g-3,\n.gy-3 {\n --bs-gutter-y: 1rem;\n}\n\n.g-4,\n.gx-4 {\n --bs-gutter-x: 1.5rem;\n}\n\n.g-4,\n.gy-4 {\n --bs-gutter-y: 1.5rem;\n}\n\n.g-5,\n.gx-5 {\n --bs-gutter-x: 3rem;\n}\n\n.g-5,\n.gy-5 {\n --bs-gutter-y: 3rem;\n}\n\n@media (min-width: 576px) {\n .col-sm {\n flex: 1 0 0%;\n }\n .row-cols-sm-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-sm-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-sm-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-sm-3 > * {\n flex: 0 0 auto;\n width: 33.3333333333%;\n }\n .row-cols-sm-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-sm-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-sm-6 > * {\n flex: 0 0 auto;\n width: 16.6666666667%;\n }\n .col-sm-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-sm-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-sm-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-sm-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-sm-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-sm-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-sm-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-sm-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-sm-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-sm-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-sm-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-sm-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-sm-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-sm-0 {\n margin-left: 0;\n }\n .offset-sm-1 {\n margin-left: 8.33333333%;\n }\n .offset-sm-2 {\n margin-left: 16.66666667%;\n }\n .offset-sm-3 {\n margin-left: 25%;\n }\n .offset-sm-4 {\n margin-left: 33.33333333%;\n }\n .offset-sm-5 {\n margin-left: 41.66666667%;\n }\n .offset-sm-6 {\n margin-left: 50%;\n }\n .offset-sm-7 {\n margin-left: 58.33333333%;\n }\n .offset-sm-8 {\n margin-left: 66.66666667%;\n }\n .offset-sm-9 {\n margin-left: 75%;\n }\n .offset-sm-10 {\n margin-left: 83.33333333%;\n }\n .offset-sm-11 {\n margin-left: 91.66666667%;\n }\n .g-sm-0,\n .gx-sm-0 {\n --bs-gutter-x: 0;\n }\n .g-sm-0,\n .gy-sm-0 {\n --bs-gutter-y: 0;\n }\n .g-sm-1,\n .gx-sm-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-sm-1,\n .gy-sm-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-sm-2,\n .gx-sm-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-sm-2,\n .gy-sm-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-sm-3,\n .gx-sm-3 {\n --bs-gutter-x: 1rem;\n }\n .g-sm-3,\n .gy-sm-3 {\n --bs-gutter-y: 1rem;\n }\n .g-sm-4,\n .gx-sm-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-sm-4,\n .gy-sm-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-sm-5,\n .gx-sm-5 {\n --bs-gutter-x: 3rem;\n }\n .g-sm-5,\n .gy-sm-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 768px) {\n .col-md {\n flex: 1 0 0%;\n }\n .row-cols-md-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-md-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-md-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-md-3 > * {\n flex: 0 0 auto;\n width: 33.3333333333%;\n }\n .row-cols-md-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-md-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-md-6 > * {\n flex: 0 0 auto;\n width: 16.6666666667%;\n }\n .col-md-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-md-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-md-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-md-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-md-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-md-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-md-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-md-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-md-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-md-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-md-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-md-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-md-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-md-0 {\n margin-left: 0;\n }\n .offset-md-1 {\n margin-left: 8.33333333%;\n }\n .offset-md-2 {\n margin-left: 16.66666667%;\n }\n .offset-md-3 {\n margin-left: 25%;\n }\n .offset-md-4 {\n margin-left: 33.33333333%;\n }\n .offset-md-5 {\n margin-left: 41.66666667%;\n }\n .offset-md-6 {\n margin-left: 50%;\n }\n .offset-md-7 {\n margin-left: 58.33333333%;\n }\n .offset-md-8 {\n margin-left: 66.66666667%;\n }\n .offset-md-9 {\n margin-left: 75%;\n }\n .offset-md-10 {\n margin-left: 83.33333333%;\n }\n .offset-md-11 {\n margin-left: 91.66666667%;\n }\n .g-md-0,\n .gx-md-0 {\n --bs-gutter-x: 0;\n }\n .g-md-0,\n .gy-md-0 {\n --bs-gutter-y: 0;\n }\n .g-md-1,\n .gx-md-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-md-1,\n .gy-md-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-md-2,\n .gx-md-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-md-2,\n .gy-md-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-md-3,\n .gx-md-3 {\n --bs-gutter-x: 1rem;\n }\n .g-md-3,\n .gy-md-3 {\n --bs-gutter-y: 1rem;\n }\n .g-md-4,\n .gx-md-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-md-4,\n .gy-md-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-md-5,\n .gx-md-5 {\n --bs-gutter-x: 3rem;\n }\n .g-md-5,\n .gy-md-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 992px) {\n .col-lg {\n flex: 1 0 0%;\n }\n .row-cols-lg-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-lg-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-lg-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-lg-3 > * {\n flex: 0 0 auto;\n width: 33.3333333333%;\n }\n .row-cols-lg-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-lg-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-lg-6 > * {\n flex: 0 0 auto;\n width: 16.6666666667%;\n }\n .col-lg-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-lg-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-lg-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-lg-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-lg-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-lg-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-lg-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-lg-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-lg-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-lg-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-lg-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-lg-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-lg-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-lg-0 {\n margin-left: 0;\n }\n .offset-lg-1 {\n margin-left: 8.33333333%;\n }\n .offset-lg-2 {\n margin-left: 16.66666667%;\n }\n .offset-lg-3 {\n margin-left: 25%;\n }\n .offset-lg-4 {\n margin-left: 33.33333333%;\n }\n .offset-lg-5 {\n margin-left: 41.66666667%;\n }\n .offset-lg-6 {\n margin-left: 50%;\n }\n .offset-lg-7 {\n margin-left: 58.33333333%;\n }\n .offset-lg-8 {\n margin-left: 66.66666667%;\n }\n .offset-lg-9 {\n margin-left: 75%;\n }\n .offset-lg-10 {\n margin-left: 83.33333333%;\n }\n .offset-lg-11 {\n margin-left: 91.66666667%;\n }\n .g-lg-0,\n .gx-lg-0 {\n --bs-gutter-x: 0;\n }\n .g-lg-0,\n .gy-lg-0 {\n --bs-gutter-y: 0;\n }\n .g-lg-1,\n .gx-lg-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-lg-1,\n .gy-lg-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-lg-2,\n .gx-lg-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-lg-2,\n .gy-lg-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-lg-3,\n .gx-lg-3 {\n --bs-gutter-x: 1rem;\n }\n .g-lg-3,\n .gy-lg-3 {\n --bs-gutter-y: 1rem;\n }\n .g-lg-4,\n .gx-lg-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-lg-4,\n .gy-lg-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-lg-5,\n .gx-lg-5 {\n --bs-gutter-x: 3rem;\n }\n .g-lg-5,\n .gy-lg-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 1200px) {\n .col-xl {\n flex: 1 0 0%;\n }\n .row-cols-xl-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-xl-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-xl-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-xl-3 > * {\n flex: 0 0 auto;\n width: 33.3333333333%;\n }\n .row-cols-xl-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-xl-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-xl-6 > * {\n flex: 0 0 auto;\n width: 16.6666666667%;\n }\n .col-xl-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-xl-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-xl-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-xl-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-xl-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-xl-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-xl-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-xl-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-xl-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-xl-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-xl-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-xl-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-xl-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-xl-0 {\n margin-left: 0;\n }\n .offset-xl-1 {\n margin-left: 8.33333333%;\n }\n .offset-xl-2 {\n margin-left: 16.66666667%;\n }\n .offset-xl-3 {\n margin-left: 25%;\n }\n .offset-xl-4 {\n margin-left: 33.33333333%;\n }\n .offset-xl-5 {\n margin-left: 41.66666667%;\n }\n .offset-xl-6 {\n margin-left: 50%;\n }\n .offset-xl-7 {\n margin-left: 58.33333333%;\n }\n .offset-xl-8 {\n margin-left: 66.66666667%;\n }\n .offset-xl-9 {\n margin-left: 75%;\n }\n .offset-xl-10 {\n margin-left: 83.33333333%;\n }\n .offset-xl-11 {\n margin-left: 91.66666667%;\n }\n .g-xl-0,\n .gx-xl-0 {\n --bs-gutter-x: 0;\n }\n .g-xl-0,\n .gy-xl-0 {\n --bs-gutter-y: 0;\n }\n .g-xl-1,\n .gx-xl-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-xl-1,\n .gy-xl-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-xl-2,\n .gx-xl-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-xl-2,\n .gy-xl-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-xl-3,\n .gx-xl-3 {\n --bs-gutter-x: 1rem;\n }\n .g-xl-3,\n .gy-xl-3 {\n --bs-gutter-y: 1rem;\n }\n .g-xl-4,\n .gx-xl-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-xl-4,\n .gy-xl-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-xl-5,\n .gx-xl-5 {\n --bs-gutter-x: 3rem;\n }\n .g-xl-5,\n .gy-xl-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 1400px) {\n .col-xxl {\n flex: 1 0 0%;\n }\n .row-cols-xxl-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-xxl-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-xxl-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-xxl-3 > * {\n flex: 0 0 auto;\n width: 33.3333333333%;\n }\n .row-cols-xxl-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-xxl-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-xxl-6 > * {\n flex: 0 0 auto;\n width: 16.6666666667%;\n }\n .col-xxl-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-xxl-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-xxl-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-xxl-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-xxl-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-xxl-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-xxl-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-xxl-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-xxl-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-xxl-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-xxl-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-xxl-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-xxl-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-xxl-0 {\n margin-left: 0;\n }\n .offset-xxl-1 {\n margin-left: 8.33333333%;\n }\n .offset-xxl-2 {\n margin-left: 16.66666667%;\n }\n .offset-xxl-3 {\n margin-left: 25%;\n }\n .offset-xxl-4 {\n margin-left: 33.33333333%;\n }\n .offset-xxl-5 {\n margin-left: 41.66666667%;\n }\n .offset-xxl-6 {\n margin-left: 50%;\n }\n .offset-xxl-7 {\n margin-left: 58.33333333%;\n }\n .offset-xxl-8 {\n margin-left: 66.66666667%;\n }\n .offset-xxl-9 {\n margin-left: 75%;\n }\n .offset-xxl-10 {\n margin-left: 83.33333333%;\n }\n .offset-xxl-11 {\n margin-left: 91.66666667%;\n }\n .g-xxl-0,\n .gx-xxl-0 {\n --bs-gutter-x: 0;\n }\n .g-xxl-0,\n .gy-xxl-0 {\n --bs-gutter-y: 0;\n }\n .g-xxl-1,\n .gx-xxl-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-xxl-1,\n .gy-xxl-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-xxl-2,\n .gx-xxl-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-xxl-2,\n .gy-xxl-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-xxl-3,\n .gx-xxl-3 {\n --bs-gutter-x: 1rem;\n }\n .g-xxl-3,\n .gy-xxl-3 {\n --bs-gutter-y: 1rem;\n }\n .g-xxl-4,\n .gx-xxl-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-xxl-4,\n .gy-xxl-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-xxl-5,\n .gx-xxl-5 {\n --bs-gutter-x: 3rem;\n }\n .g-xxl-5,\n .gy-xxl-5 {\n --bs-gutter-y: 3rem;\n }\n}\n.d-inline {\n display: inline !important;\n}\n\n.d-inline-block {\n display: inline-block !important;\n}\n\n.d-block {\n display: block !important;\n}\n\n.d-grid {\n display: grid !important;\n}\n\n.d-table {\n display: table !important;\n}\n\n.d-table-row {\n display: table-row !important;\n}\n\n.d-table-cell {\n display: table-cell !important;\n}\n\n.d-flex {\n display: flex !important;\n}\n\n.d-inline-flex {\n display: inline-flex !important;\n}\n\n.d-none {\n display: none !important;\n}\n\n.flex-fill {\n flex: 1 1 auto !important;\n}\n\n.flex-row {\n flex-direction: row !important;\n}\n\n.flex-column {\n flex-direction: column !important;\n}\n\n.flex-row-reverse {\n flex-direction: row-reverse !important;\n}\n\n.flex-column-reverse {\n flex-direction: column-reverse !important;\n}\n\n.flex-grow-0 {\n flex-grow: 0 !important;\n}\n\n.flex-grow-1 {\n flex-grow: 1 !important;\n}\n\n.flex-shrink-0 {\n flex-shrink: 0 !important;\n}\n\n.flex-shrink-1 {\n flex-shrink: 1 !important;\n}\n\n.flex-wrap {\n flex-wrap: wrap !important;\n}\n\n.flex-nowrap {\n flex-wrap: nowrap !important;\n}\n\n.flex-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n}\n\n.justify-content-start {\n justify-content: flex-start !important;\n}\n\n.justify-content-end {\n justify-content: flex-end !important;\n}\n\n.justify-content-center {\n justify-content: center !important;\n}\n\n.justify-content-between {\n justify-content: space-between !important;\n}\n\n.justify-content-around {\n justify-content: space-around !important;\n}\n\n.justify-content-evenly {\n justify-content: space-evenly !important;\n}\n\n.align-items-start {\n align-items: flex-start !important;\n}\n\n.align-items-end {\n align-items: flex-end !important;\n}\n\n.align-items-center {\n align-items: center !important;\n}\n\n.align-items-baseline {\n align-items: baseline !important;\n}\n\n.align-items-stretch {\n align-items: stretch !important;\n}\n\n.align-content-start {\n align-content: flex-start !important;\n}\n\n.align-content-end {\n align-content: flex-end !important;\n}\n\n.align-content-center {\n align-content: center !important;\n}\n\n.align-content-between {\n align-content: space-between !important;\n}\n\n.align-content-around {\n align-content: space-around !important;\n}\n\n.align-content-stretch {\n align-content: stretch !important;\n}\n\n.align-self-auto {\n align-self: auto !important;\n}\n\n.align-self-start {\n align-self: flex-start !important;\n}\n\n.align-self-end {\n align-self: flex-end !important;\n}\n\n.align-self-center {\n align-self: center !important;\n}\n\n.align-self-baseline {\n align-self: baseline !important;\n}\n\n.align-self-stretch {\n align-self: stretch !important;\n}\n\n.order-first {\n order: -1 !important;\n}\n\n.order-0 {\n order: 0 !important;\n}\n\n.order-1 {\n order: 1 !important;\n}\n\n.order-2 {\n order: 2 !important;\n}\n\n.order-3 {\n order: 3 !important;\n}\n\n.order-4 {\n order: 4 !important;\n}\n\n.order-5 {\n order: 5 !important;\n}\n\n.order-last {\n order: 6 !important;\n}\n\n.m-0 {\n margin: 0 !important;\n}\n\n.m-1 {\n margin: 0.25rem !important;\n}\n\n.m-2 {\n margin: 0.5rem !important;\n}\n\n.m-3 {\n margin: 1rem !important;\n}\n\n.m-4 {\n margin: 1.5rem !important;\n}\n\n.m-5 {\n margin: 3rem !important;\n}\n\n.m-auto {\n margin: auto !important;\n}\n\n.mx-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n}\n\n.mx-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n}\n\n.mx-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n}\n\n.mx-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n}\n\n.mx-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n}\n\n.mx-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n}\n\n.mx-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n}\n\n.my-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n}\n\n.my-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n}\n\n.my-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n}\n\n.my-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n}\n\n.my-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n}\n\n.my-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n}\n\n.my-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n}\n\n.mt-0 {\n margin-top: 0 !important;\n}\n\n.mt-1 {\n margin-top: 0.25rem !important;\n}\n\n.mt-2 {\n margin-top: 0.5rem !important;\n}\n\n.mt-3 {\n margin-top: 1rem !important;\n}\n\n.mt-4 {\n margin-top: 1.5rem !important;\n}\n\n.mt-5 {\n margin-top: 3rem !important;\n}\n\n.mt-auto {\n margin-top: auto !important;\n}\n\n.me-0 {\n margin-right: 0 !important;\n}\n\n.me-1 {\n margin-right: 0.25rem !important;\n}\n\n.me-2 {\n margin-right: 0.5rem !important;\n}\n\n.me-3 {\n margin-right: 1rem !important;\n}\n\n.me-4 {\n margin-right: 1.5rem !important;\n}\n\n.me-5 {\n margin-right: 3rem !important;\n}\n\n.me-auto {\n margin-right: auto !important;\n}\n\n.mb-0 {\n margin-bottom: 0 !important;\n}\n\n.mb-1 {\n margin-bottom: 0.25rem !important;\n}\n\n.mb-2 {\n margin-bottom: 0.5rem !important;\n}\n\n.mb-3 {\n margin-bottom: 1rem !important;\n}\n\n.mb-4 {\n margin-bottom: 1.5rem !important;\n}\n\n.mb-5 {\n margin-bottom: 3rem !important;\n}\n\n.mb-auto {\n margin-bottom: auto !important;\n}\n\n.ms-0 {\n margin-left: 0 !important;\n}\n\n.ms-1 {\n margin-left: 0.25rem !important;\n}\n\n.ms-2 {\n margin-left: 0.5rem !important;\n}\n\n.ms-3 {\n margin-left: 1rem !important;\n}\n\n.ms-4 {\n margin-left: 1.5rem !important;\n}\n\n.ms-5 {\n margin-left: 3rem !important;\n}\n\n.ms-auto {\n margin-left: auto !important;\n}\n\n.p-0 {\n padding: 0 !important;\n}\n\n.p-1 {\n padding: 0.25rem !important;\n}\n\n.p-2 {\n padding: 0.5rem !important;\n}\n\n.p-3 {\n padding: 1rem !important;\n}\n\n.p-4 {\n padding: 1.5rem !important;\n}\n\n.p-5 {\n padding: 3rem !important;\n}\n\n.px-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n}\n\n.px-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n}\n\n.px-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n}\n\n.px-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n}\n\n.px-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n}\n\n.px-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n}\n\n.py-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n}\n\n.py-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n}\n\n.py-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n}\n\n.py-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n}\n\n.py-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n}\n\n.py-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n}\n\n.pt-0 {\n padding-top: 0 !important;\n}\n\n.pt-1 {\n padding-top: 0.25rem !important;\n}\n\n.pt-2 {\n padding-top: 0.5rem !important;\n}\n\n.pt-3 {\n padding-top: 1rem !important;\n}\n\n.pt-4 {\n padding-top: 1.5rem !important;\n}\n\n.pt-5 {\n padding-top: 3rem !important;\n}\n\n.pe-0 {\n padding-right: 0 !important;\n}\n\n.pe-1 {\n padding-right: 0.25rem !important;\n}\n\n.pe-2 {\n padding-right: 0.5rem !important;\n}\n\n.pe-3 {\n padding-right: 1rem !important;\n}\n\n.pe-4 {\n padding-right: 1.5rem !important;\n}\n\n.pe-5 {\n padding-right: 3rem !important;\n}\n\n.pb-0 {\n padding-bottom: 0 !important;\n}\n\n.pb-1 {\n padding-bottom: 0.25rem !important;\n}\n\n.pb-2 {\n padding-bottom: 0.5rem !important;\n}\n\n.pb-3 {\n padding-bottom: 1rem !important;\n}\n\n.pb-4 {\n padding-bottom: 1.5rem !important;\n}\n\n.pb-5 {\n padding-bottom: 3rem !important;\n}\n\n.ps-0 {\n padding-left: 0 !important;\n}\n\n.ps-1 {\n padding-left: 0.25rem !important;\n}\n\n.ps-2 {\n padding-left: 0.5rem !important;\n}\n\n.ps-3 {\n padding-left: 1rem !important;\n}\n\n.ps-4 {\n padding-left: 1.5rem !important;\n}\n\n.ps-5 {\n padding-left: 3rem !important;\n}\n\n@media (min-width: 576px) {\n .d-sm-inline {\n display: inline !important;\n }\n .d-sm-inline-block {\n display: inline-block !important;\n }\n .d-sm-block {\n display: block !important;\n }\n .d-sm-grid {\n display: grid !important;\n }\n .d-sm-table {\n display: table !important;\n }\n .d-sm-table-row {\n display: table-row !important;\n }\n .d-sm-table-cell {\n display: table-cell !important;\n }\n .d-sm-flex {\n display: flex !important;\n }\n .d-sm-inline-flex {\n display: inline-flex !important;\n }\n .d-sm-none {\n display: none !important;\n }\n .flex-sm-fill {\n flex: 1 1 auto !important;\n }\n .flex-sm-row {\n flex-direction: row !important;\n }\n .flex-sm-column {\n flex-direction: column !important;\n }\n .flex-sm-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-sm-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-sm-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-sm-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-sm-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-sm-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-sm-wrap {\n flex-wrap: wrap !important;\n }\n .flex-sm-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-sm-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-sm-start {\n justify-content: flex-start !important;\n }\n .justify-content-sm-end {\n justify-content: flex-end !important;\n }\n .justify-content-sm-center {\n justify-content: center !important;\n }\n .justify-content-sm-between {\n justify-content: space-between !important;\n }\n .justify-content-sm-around {\n justify-content: space-around !important;\n }\n .justify-content-sm-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-sm-start {\n align-items: flex-start !important;\n }\n .align-items-sm-end {\n align-items: flex-end !important;\n }\n .align-items-sm-center {\n align-items: center !important;\n }\n .align-items-sm-baseline {\n align-items: baseline !important;\n }\n .align-items-sm-stretch {\n align-items: stretch !important;\n }\n .align-content-sm-start {\n align-content: flex-start !important;\n }\n .align-content-sm-end {\n align-content: flex-end !important;\n }\n .align-content-sm-center {\n align-content: center !important;\n }\n .align-content-sm-between {\n align-content: space-between !important;\n }\n .align-content-sm-around {\n align-content: space-around !important;\n }\n .align-content-sm-stretch {\n align-content: stretch !important;\n }\n .align-self-sm-auto {\n align-self: auto !important;\n }\n .align-self-sm-start {\n align-self: flex-start !important;\n }\n .align-self-sm-end {\n align-self: flex-end !important;\n }\n .align-self-sm-center {\n align-self: center !important;\n }\n .align-self-sm-baseline {\n align-self: baseline !important;\n }\n .align-self-sm-stretch {\n align-self: stretch !important;\n }\n .order-sm-first {\n order: -1 !important;\n }\n .order-sm-0 {\n order: 0 !important;\n }\n .order-sm-1 {\n order: 1 !important;\n }\n .order-sm-2 {\n order: 2 !important;\n }\n .order-sm-3 {\n order: 3 !important;\n }\n .order-sm-4 {\n order: 4 !important;\n }\n .order-sm-5 {\n order: 5 !important;\n }\n .order-sm-last {\n order: 6 !important;\n }\n .m-sm-0 {\n margin: 0 !important;\n }\n .m-sm-1 {\n margin: 0.25rem !important;\n }\n .m-sm-2 {\n margin: 0.5rem !important;\n }\n .m-sm-3 {\n margin: 1rem !important;\n }\n .m-sm-4 {\n margin: 1.5rem !important;\n }\n .m-sm-5 {\n margin: 3rem !important;\n }\n .m-sm-auto {\n margin: auto !important;\n }\n .mx-sm-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-sm-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-sm-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-sm-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-sm-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-sm-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-sm-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-sm-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-sm-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-sm-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-sm-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-sm-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-sm-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-sm-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-sm-0 {\n margin-top: 0 !important;\n }\n .mt-sm-1 {\n margin-top: 0.25rem !important;\n }\n .mt-sm-2 {\n margin-top: 0.5rem !important;\n }\n .mt-sm-3 {\n margin-top: 1rem !important;\n }\n .mt-sm-4 {\n margin-top: 1.5rem !important;\n }\n .mt-sm-5 {\n margin-top: 3rem !important;\n }\n .mt-sm-auto {\n margin-top: auto !important;\n }\n .me-sm-0 {\n margin-right: 0 !important;\n }\n .me-sm-1 {\n margin-right: 0.25rem !important;\n }\n .me-sm-2 {\n margin-right: 0.5rem !important;\n }\n .me-sm-3 {\n margin-right: 1rem !important;\n }\n .me-sm-4 {\n margin-right: 1.5rem !important;\n }\n .me-sm-5 {\n margin-right: 3rem !important;\n }\n .me-sm-auto {\n margin-right: auto !important;\n }\n .mb-sm-0 {\n margin-bottom: 0 !important;\n }\n .mb-sm-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-sm-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-sm-3 {\n margin-bottom: 1rem !important;\n }\n .mb-sm-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-sm-5 {\n margin-bottom: 3rem !important;\n }\n .mb-sm-auto {\n margin-bottom: auto !important;\n }\n .ms-sm-0 {\n margin-left: 0 !important;\n }\n .ms-sm-1 {\n margin-left: 0.25rem !important;\n }\n .ms-sm-2 {\n margin-left: 0.5rem !important;\n }\n .ms-sm-3 {\n margin-left: 1rem !important;\n }\n .ms-sm-4 {\n margin-left: 1.5rem !important;\n }\n .ms-sm-5 {\n margin-left: 3rem !important;\n }\n .ms-sm-auto {\n margin-left: auto !important;\n }\n .p-sm-0 {\n padding: 0 !important;\n }\n .p-sm-1 {\n padding: 0.25rem !important;\n }\n .p-sm-2 {\n padding: 0.5rem !important;\n }\n .p-sm-3 {\n padding: 1rem !important;\n }\n .p-sm-4 {\n padding: 1.5rem !important;\n }\n .p-sm-5 {\n padding: 3rem !important;\n }\n .px-sm-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-sm-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-sm-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-sm-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-sm-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-sm-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-sm-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-sm-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-sm-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-sm-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-sm-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-sm-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-sm-0 {\n padding-top: 0 !important;\n }\n .pt-sm-1 {\n padding-top: 0.25rem !important;\n }\n .pt-sm-2 {\n padding-top: 0.5rem !important;\n }\n .pt-sm-3 {\n padding-top: 1rem !important;\n }\n .pt-sm-4 {\n padding-top: 1.5rem !important;\n }\n .pt-sm-5 {\n padding-top: 3rem !important;\n }\n .pe-sm-0 {\n padding-right: 0 !important;\n }\n .pe-sm-1 {\n padding-right: 0.25rem !important;\n }\n .pe-sm-2 {\n padding-right: 0.5rem !important;\n }\n .pe-sm-3 {\n padding-right: 1rem !important;\n }\n .pe-sm-4 {\n padding-right: 1.5rem !important;\n }\n .pe-sm-5 {\n padding-right: 3rem !important;\n }\n .pb-sm-0 {\n padding-bottom: 0 !important;\n }\n .pb-sm-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-sm-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-sm-3 {\n padding-bottom: 1rem !important;\n }\n .pb-sm-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-sm-5 {\n padding-bottom: 3rem !important;\n }\n .ps-sm-0 {\n padding-left: 0 !important;\n }\n .ps-sm-1 {\n padding-left: 0.25rem !important;\n }\n .ps-sm-2 {\n padding-left: 0.5rem !important;\n }\n .ps-sm-3 {\n padding-left: 1rem !important;\n }\n .ps-sm-4 {\n padding-left: 1.5rem !important;\n }\n .ps-sm-5 {\n padding-left: 3rem !important;\n }\n}\n@media (min-width: 768px) {\n .d-md-inline {\n display: inline !important;\n }\n .d-md-inline-block {\n display: inline-block !important;\n }\n .d-md-block {\n display: block !important;\n }\n .d-md-grid {\n display: grid !important;\n }\n .d-md-table {\n display: table !important;\n }\n .d-md-table-row {\n display: table-row !important;\n }\n .d-md-table-cell {\n display: table-cell !important;\n }\n .d-md-flex {\n display: flex !important;\n }\n .d-md-inline-flex {\n display: inline-flex !important;\n }\n .d-md-none {\n display: none !important;\n }\n .flex-md-fill {\n flex: 1 1 auto !important;\n }\n .flex-md-row {\n flex-direction: row !important;\n }\n .flex-md-column {\n flex-direction: column !important;\n }\n .flex-md-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-md-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-md-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-md-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-md-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-md-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-md-wrap {\n flex-wrap: wrap !important;\n }\n .flex-md-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-md-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-md-start {\n justify-content: flex-start !important;\n }\n .justify-content-md-end {\n justify-content: flex-end !important;\n }\n .justify-content-md-center {\n justify-content: center !important;\n }\n .justify-content-md-between {\n justify-content: space-between !important;\n }\n .justify-content-md-around {\n justify-content: space-around !important;\n }\n .justify-content-md-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-md-start {\n align-items: flex-start !important;\n }\n .align-items-md-end {\n align-items: flex-end !important;\n }\n .align-items-md-center {\n align-items: center !important;\n }\n .align-items-md-baseline {\n align-items: baseline !important;\n }\n .align-items-md-stretch {\n align-items: stretch !important;\n }\n .align-content-md-start {\n align-content: flex-start !important;\n }\n .align-content-md-end {\n align-content: flex-end !important;\n }\n .align-content-md-center {\n align-content: center !important;\n }\n .align-content-md-between {\n align-content: space-between !important;\n }\n .align-content-md-around {\n align-content: space-around !important;\n }\n .align-content-md-stretch {\n align-content: stretch !important;\n }\n .align-self-md-auto {\n align-self: auto !important;\n }\n .align-self-md-start {\n align-self: flex-start !important;\n }\n .align-self-md-end {\n align-self: flex-end !important;\n }\n .align-self-md-center {\n align-self: center !important;\n }\n .align-self-md-baseline {\n align-self: baseline !important;\n }\n .align-self-md-stretch {\n align-self: stretch !important;\n }\n .order-md-first {\n order: -1 !important;\n }\n .order-md-0 {\n order: 0 !important;\n }\n .order-md-1 {\n order: 1 !important;\n }\n .order-md-2 {\n order: 2 !important;\n }\n .order-md-3 {\n order: 3 !important;\n }\n .order-md-4 {\n order: 4 !important;\n }\n .order-md-5 {\n order: 5 !important;\n }\n .order-md-last {\n order: 6 !important;\n }\n .m-md-0 {\n margin: 0 !important;\n }\n .m-md-1 {\n margin: 0.25rem !important;\n }\n .m-md-2 {\n margin: 0.5rem !important;\n }\n .m-md-3 {\n margin: 1rem !important;\n }\n .m-md-4 {\n margin: 1.5rem !important;\n }\n .m-md-5 {\n margin: 3rem !important;\n }\n .m-md-auto {\n margin: auto !important;\n }\n .mx-md-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-md-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-md-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-md-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-md-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-md-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-md-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-md-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-md-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-md-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-md-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-md-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-md-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-md-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-md-0 {\n margin-top: 0 !important;\n }\n .mt-md-1 {\n margin-top: 0.25rem !important;\n }\n .mt-md-2 {\n margin-top: 0.5rem !important;\n }\n .mt-md-3 {\n margin-top: 1rem !important;\n }\n .mt-md-4 {\n margin-top: 1.5rem !important;\n }\n .mt-md-5 {\n margin-top: 3rem !important;\n }\n .mt-md-auto {\n margin-top: auto !important;\n }\n .me-md-0 {\n margin-right: 0 !important;\n }\n .me-md-1 {\n margin-right: 0.25rem !important;\n }\n .me-md-2 {\n margin-right: 0.5rem !important;\n }\n .me-md-3 {\n margin-right: 1rem !important;\n }\n .me-md-4 {\n margin-right: 1.5rem !important;\n }\n .me-md-5 {\n margin-right: 3rem !important;\n }\n .me-md-auto {\n margin-right: auto !important;\n }\n .mb-md-0 {\n margin-bottom: 0 !important;\n }\n .mb-md-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-md-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-md-3 {\n margin-bottom: 1rem !important;\n }\n .mb-md-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-md-5 {\n margin-bottom: 3rem !important;\n }\n .mb-md-auto {\n margin-bottom: auto !important;\n }\n .ms-md-0 {\n margin-left: 0 !important;\n }\n .ms-md-1 {\n margin-left: 0.25rem !important;\n }\n .ms-md-2 {\n margin-left: 0.5rem !important;\n }\n .ms-md-3 {\n margin-left: 1rem !important;\n }\n .ms-md-4 {\n margin-left: 1.5rem !important;\n }\n .ms-md-5 {\n margin-left: 3rem !important;\n }\n .ms-md-auto {\n margin-left: auto !important;\n }\n .p-md-0 {\n padding: 0 !important;\n }\n .p-md-1 {\n padding: 0.25rem !important;\n }\n .p-md-2 {\n padding: 0.5rem !important;\n }\n .p-md-3 {\n padding: 1rem !important;\n }\n .p-md-4 {\n padding: 1.5rem !important;\n }\n .p-md-5 {\n padding: 3rem !important;\n }\n .px-md-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-md-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-md-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-md-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-md-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-md-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-md-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-md-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-md-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-md-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-md-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-md-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-md-0 {\n padding-top: 0 !important;\n }\n .pt-md-1 {\n padding-top: 0.25rem !important;\n }\n .pt-md-2 {\n padding-top: 0.5rem !important;\n }\n .pt-md-3 {\n padding-top: 1rem !important;\n }\n .pt-md-4 {\n padding-top: 1.5rem !important;\n }\n .pt-md-5 {\n padding-top: 3rem !important;\n }\n .pe-md-0 {\n padding-right: 0 !important;\n }\n .pe-md-1 {\n padding-right: 0.25rem !important;\n }\n .pe-md-2 {\n padding-right: 0.5rem !important;\n }\n .pe-md-3 {\n padding-right: 1rem !important;\n }\n .pe-md-4 {\n padding-right: 1.5rem !important;\n }\n .pe-md-5 {\n padding-right: 3rem !important;\n }\n .pb-md-0 {\n padding-bottom: 0 !important;\n }\n .pb-md-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-md-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-md-3 {\n padding-bottom: 1rem !important;\n }\n .pb-md-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-md-5 {\n padding-bottom: 3rem !important;\n }\n .ps-md-0 {\n padding-left: 0 !important;\n }\n .ps-md-1 {\n padding-left: 0.25rem !important;\n }\n .ps-md-2 {\n padding-left: 0.5rem !important;\n }\n .ps-md-3 {\n padding-left: 1rem !important;\n }\n .ps-md-4 {\n padding-left: 1.5rem !important;\n }\n .ps-md-5 {\n padding-left: 3rem !important;\n }\n}\n@media (min-width: 992px) {\n .d-lg-inline {\n display: inline !important;\n }\n .d-lg-inline-block {\n display: inline-block !important;\n }\n .d-lg-block {\n display: block !important;\n }\n .d-lg-grid {\n display: grid !important;\n }\n .d-lg-table {\n display: table !important;\n }\n .d-lg-table-row {\n display: table-row !important;\n }\n .d-lg-table-cell {\n display: table-cell !important;\n }\n .d-lg-flex {\n display: flex !important;\n }\n .d-lg-inline-flex {\n display: inline-flex !important;\n }\n .d-lg-none {\n display: none !important;\n }\n .flex-lg-fill {\n flex: 1 1 auto !important;\n }\n .flex-lg-row {\n flex-direction: row !important;\n }\n .flex-lg-column {\n flex-direction: column !important;\n }\n .flex-lg-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-lg-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-lg-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-lg-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-lg-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-lg-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-lg-wrap {\n flex-wrap: wrap !important;\n }\n .flex-lg-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-lg-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-lg-start {\n justify-content: flex-start !important;\n }\n .justify-content-lg-end {\n justify-content: flex-end !important;\n }\n .justify-content-lg-center {\n justify-content: center !important;\n }\n .justify-content-lg-between {\n justify-content: space-between !important;\n }\n .justify-content-lg-around {\n justify-content: space-around !important;\n }\n .justify-content-lg-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-lg-start {\n align-items: flex-start !important;\n }\n .align-items-lg-end {\n align-items: flex-end !important;\n }\n .align-items-lg-center {\n align-items: center !important;\n }\n .align-items-lg-baseline {\n align-items: baseline !important;\n }\n .align-items-lg-stretch {\n align-items: stretch !important;\n }\n .align-content-lg-start {\n align-content: flex-start !important;\n }\n .align-content-lg-end {\n align-content: flex-end !important;\n }\n .align-content-lg-center {\n align-content: center !important;\n }\n .align-content-lg-between {\n align-content: space-between !important;\n }\n .align-content-lg-around {\n align-content: space-around !important;\n }\n .align-content-lg-stretch {\n align-content: stretch !important;\n }\n .align-self-lg-auto {\n align-self: auto !important;\n }\n .align-self-lg-start {\n align-self: flex-start !important;\n }\n .align-self-lg-end {\n align-self: flex-end !important;\n }\n .align-self-lg-center {\n align-self: center !important;\n }\n .align-self-lg-baseline {\n align-self: baseline !important;\n }\n .align-self-lg-stretch {\n align-self: stretch !important;\n }\n .order-lg-first {\n order: -1 !important;\n }\n .order-lg-0 {\n order: 0 !important;\n }\n .order-lg-1 {\n order: 1 !important;\n }\n .order-lg-2 {\n order: 2 !important;\n }\n .order-lg-3 {\n order: 3 !important;\n }\n .order-lg-4 {\n order: 4 !important;\n }\n .order-lg-5 {\n order: 5 !important;\n }\n .order-lg-last {\n order: 6 !important;\n }\n .m-lg-0 {\n margin: 0 !important;\n }\n .m-lg-1 {\n margin: 0.25rem !important;\n }\n .m-lg-2 {\n margin: 0.5rem !important;\n }\n .m-lg-3 {\n margin: 1rem !important;\n }\n .m-lg-4 {\n margin: 1.5rem !important;\n }\n .m-lg-5 {\n margin: 3rem !important;\n }\n .m-lg-auto {\n margin: auto !important;\n }\n .mx-lg-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-lg-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-lg-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-lg-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-lg-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-lg-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-lg-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-lg-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-lg-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-lg-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-lg-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-lg-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-lg-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-lg-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-lg-0 {\n margin-top: 0 !important;\n }\n .mt-lg-1 {\n margin-top: 0.25rem !important;\n }\n .mt-lg-2 {\n margin-top: 0.5rem !important;\n }\n .mt-lg-3 {\n margin-top: 1rem !important;\n }\n .mt-lg-4 {\n margin-top: 1.5rem !important;\n }\n .mt-lg-5 {\n margin-top: 3rem !important;\n }\n .mt-lg-auto {\n margin-top: auto !important;\n }\n .me-lg-0 {\n margin-right: 0 !important;\n }\n .me-lg-1 {\n margin-right: 0.25rem !important;\n }\n .me-lg-2 {\n margin-right: 0.5rem !important;\n }\n .me-lg-3 {\n margin-right: 1rem !important;\n }\n .me-lg-4 {\n margin-right: 1.5rem !important;\n }\n .me-lg-5 {\n margin-right: 3rem !important;\n }\n .me-lg-auto {\n margin-right: auto !important;\n }\n .mb-lg-0 {\n margin-bottom: 0 !important;\n }\n .mb-lg-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-lg-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-lg-3 {\n margin-bottom: 1rem !important;\n }\n .mb-lg-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-lg-5 {\n margin-bottom: 3rem !important;\n }\n .mb-lg-auto {\n margin-bottom: auto !important;\n }\n .ms-lg-0 {\n margin-left: 0 !important;\n }\n .ms-lg-1 {\n margin-left: 0.25rem !important;\n }\n .ms-lg-2 {\n margin-left: 0.5rem !important;\n }\n .ms-lg-3 {\n margin-left: 1rem !important;\n }\n .ms-lg-4 {\n margin-left: 1.5rem !important;\n }\n .ms-lg-5 {\n margin-left: 3rem !important;\n }\n .ms-lg-auto {\n margin-left: auto !important;\n }\n .p-lg-0 {\n padding: 0 !important;\n }\n .p-lg-1 {\n padding: 0.25rem !important;\n }\n .p-lg-2 {\n padding: 0.5rem !important;\n }\n .p-lg-3 {\n padding: 1rem !important;\n }\n .p-lg-4 {\n padding: 1.5rem !important;\n }\n .p-lg-5 {\n padding: 3rem !important;\n }\n .px-lg-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-lg-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-lg-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-lg-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-lg-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-lg-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-lg-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-lg-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-lg-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-lg-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-lg-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-lg-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-lg-0 {\n padding-top: 0 !important;\n }\n .pt-lg-1 {\n padding-top: 0.25rem !important;\n }\n .pt-lg-2 {\n padding-top: 0.5rem !important;\n }\n .pt-lg-3 {\n padding-top: 1rem !important;\n }\n .pt-lg-4 {\n padding-top: 1.5rem !important;\n }\n .pt-lg-5 {\n padding-top: 3rem !important;\n }\n .pe-lg-0 {\n padding-right: 0 !important;\n }\n .pe-lg-1 {\n padding-right: 0.25rem !important;\n }\n .pe-lg-2 {\n padding-right: 0.5rem !important;\n }\n .pe-lg-3 {\n padding-right: 1rem !important;\n }\n .pe-lg-4 {\n padding-right: 1.5rem !important;\n }\n .pe-lg-5 {\n padding-right: 3rem !important;\n }\n .pb-lg-0 {\n padding-bottom: 0 !important;\n }\n .pb-lg-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-lg-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-lg-3 {\n padding-bottom: 1rem !important;\n }\n .pb-lg-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-lg-5 {\n padding-bottom: 3rem !important;\n }\n .ps-lg-0 {\n padding-left: 0 !important;\n }\n .ps-lg-1 {\n padding-left: 0.25rem !important;\n }\n .ps-lg-2 {\n padding-left: 0.5rem !important;\n }\n .ps-lg-3 {\n padding-left: 1rem !important;\n }\n .ps-lg-4 {\n padding-left: 1.5rem !important;\n }\n .ps-lg-5 {\n padding-left: 3rem !important;\n }\n}\n@media (min-width: 1200px) {\n .d-xl-inline {\n display: inline !important;\n }\n .d-xl-inline-block {\n display: inline-block !important;\n }\n .d-xl-block {\n display: block !important;\n }\n .d-xl-grid {\n display: grid !important;\n }\n .d-xl-table {\n display: table !important;\n }\n .d-xl-table-row {\n display: table-row !important;\n }\n .d-xl-table-cell {\n display: table-cell !important;\n }\n .d-xl-flex {\n display: flex !important;\n }\n .d-xl-inline-flex {\n display: inline-flex !important;\n }\n .d-xl-none {\n display: none !important;\n }\n .flex-xl-fill {\n flex: 1 1 auto !important;\n }\n .flex-xl-row {\n flex-direction: row !important;\n }\n .flex-xl-column {\n flex-direction: column !important;\n }\n .flex-xl-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-xl-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-xl-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-xl-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-xl-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-xl-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-xl-wrap {\n flex-wrap: wrap !important;\n }\n .flex-xl-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-xl-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-xl-start {\n justify-content: flex-start !important;\n }\n .justify-content-xl-end {\n justify-content: flex-end !important;\n }\n .justify-content-xl-center {\n justify-content: center !important;\n }\n .justify-content-xl-between {\n justify-content: space-between !important;\n }\n .justify-content-xl-around {\n justify-content: space-around !important;\n }\n .justify-content-xl-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-xl-start {\n align-items: flex-start !important;\n }\n .align-items-xl-end {\n align-items: flex-end !important;\n }\n .align-items-xl-center {\n align-items: center !important;\n }\n .align-items-xl-baseline {\n align-items: baseline !important;\n }\n .align-items-xl-stretch {\n align-items: stretch !important;\n }\n .align-content-xl-start {\n align-content: flex-start !important;\n }\n .align-content-xl-end {\n align-content: flex-end !important;\n }\n .align-content-xl-center {\n align-content: center !important;\n }\n .align-content-xl-between {\n align-content: space-between !important;\n }\n .align-content-xl-around {\n align-content: space-around !important;\n }\n .align-content-xl-stretch {\n align-content: stretch !important;\n }\n .align-self-xl-auto {\n align-self: auto !important;\n }\n .align-self-xl-start {\n align-self: flex-start !important;\n }\n .align-self-xl-end {\n align-self: flex-end !important;\n }\n .align-self-xl-center {\n align-self: center !important;\n }\n .align-self-xl-baseline {\n align-self: baseline !important;\n }\n .align-self-xl-stretch {\n align-self: stretch !important;\n }\n .order-xl-first {\n order: -1 !important;\n }\n .order-xl-0 {\n order: 0 !important;\n }\n .order-xl-1 {\n order: 1 !important;\n }\n .order-xl-2 {\n order: 2 !important;\n }\n .order-xl-3 {\n order: 3 !important;\n }\n .order-xl-4 {\n order: 4 !important;\n }\n .order-xl-5 {\n order: 5 !important;\n }\n .order-xl-last {\n order: 6 !important;\n }\n .m-xl-0 {\n margin: 0 !important;\n }\n .m-xl-1 {\n margin: 0.25rem !important;\n }\n .m-xl-2 {\n margin: 0.5rem !important;\n }\n .m-xl-3 {\n margin: 1rem !important;\n }\n .m-xl-4 {\n margin: 1.5rem !important;\n }\n .m-xl-5 {\n margin: 3rem !important;\n }\n .m-xl-auto {\n margin: auto !important;\n }\n .mx-xl-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-xl-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-xl-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-xl-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-xl-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-xl-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-xl-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-xl-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-xl-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-xl-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-xl-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-xl-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-xl-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-xl-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-xl-0 {\n margin-top: 0 !important;\n }\n .mt-xl-1 {\n margin-top: 0.25rem !important;\n }\n .mt-xl-2 {\n margin-top: 0.5rem !important;\n }\n .mt-xl-3 {\n margin-top: 1rem !important;\n }\n .mt-xl-4 {\n margin-top: 1.5rem !important;\n }\n .mt-xl-5 {\n margin-top: 3rem !important;\n }\n .mt-xl-auto {\n margin-top: auto !important;\n }\n .me-xl-0 {\n margin-right: 0 !important;\n }\n .me-xl-1 {\n margin-right: 0.25rem !important;\n }\n .me-xl-2 {\n margin-right: 0.5rem !important;\n }\n .me-xl-3 {\n margin-right: 1rem !important;\n }\n .me-xl-4 {\n margin-right: 1.5rem !important;\n }\n .me-xl-5 {\n margin-right: 3rem !important;\n }\n .me-xl-auto {\n margin-right: auto !important;\n }\n .mb-xl-0 {\n margin-bottom: 0 !important;\n }\n .mb-xl-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-xl-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-xl-3 {\n margin-bottom: 1rem !important;\n }\n .mb-xl-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-xl-5 {\n margin-bottom: 3rem !important;\n }\n .mb-xl-auto {\n margin-bottom: auto !important;\n }\n .ms-xl-0 {\n margin-left: 0 !important;\n }\n .ms-xl-1 {\n margin-left: 0.25rem !important;\n }\n .ms-xl-2 {\n margin-left: 0.5rem !important;\n }\n .ms-xl-3 {\n margin-left: 1rem !important;\n }\n .ms-xl-4 {\n margin-left: 1.5rem !important;\n }\n .ms-xl-5 {\n margin-left: 3rem !important;\n }\n .ms-xl-auto {\n margin-left: auto !important;\n }\n .p-xl-0 {\n padding: 0 !important;\n }\n .p-xl-1 {\n padding: 0.25rem !important;\n }\n .p-xl-2 {\n padding: 0.5rem !important;\n }\n .p-xl-3 {\n padding: 1rem !important;\n }\n .p-xl-4 {\n padding: 1.5rem !important;\n }\n .p-xl-5 {\n padding: 3rem !important;\n }\n .px-xl-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-xl-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-xl-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-xl-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-xl-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-xl-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-xl-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-xl-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-xl-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-xl-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-xl-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-xl-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-xl-0 {\n padding-top: 0 !important;\n }\n .pt-xl-1 {\n padding-top: 0.25rem !important;\n }\n .pt-xl-2 {\n padding-top: 0.5rem !important;\n }\n .pt-xl-3 {\n padding-top: 1rem !important;\n }\n .pt-xl-4 {\n padding-top: 1.5rem !important;\n }\n .pt-xl-5 {\n padding-top: 3rem !important;\n }\n .pe-xl-0 {\n padding-right: 0 !important;\n }\n .pe-xl-1 {\n padding-right: 0.25rem !important;\n }\n .pe-xl-2 {\n padding-right: 0.5rem !important;\n }\n .pe-xl-3 {\n padding-right: 1rem !important;\n }\n .pe-xl-4 {\n padding-right: 1.5rem !important;\n }\n .pe-xl-5 {\n padding-right: 3rem !important;\n }\n .pb-xl-0 {\n padding-bottom: 0 !important;\n }\n .pb-xl-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-xl-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-xl-3 {\n padding-bottom: 1rem !important;\n }\n .pb-xl-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-xl-5 {\n padding-bottom: 3rem !important;\n }\n .ps-xl-0 {\n padding-left: 0 !important;\n }\n .ps-xl-1 {\n padding-left: 0.25rem !important;\n }\n .ps-xl-2 {\n padding-left: 0.5rem !important;\n }\n .ps-xl-3 {\n padding-left: 1rem !important;\n }\n .ps-xl-4 {\n padding-left: 1.5rem !important;\n }\n .ps-xl-5 {\n padding-left: 3rem !important;\n }\n}\n@media (min-width: 1400px) {\n .d-xxl-inline {\n display: inline !important;\n }\n .d-xxl-inline-block {\n display: inline-block !important;\n }\n .d-xxl-block {\n display: block !important;\n }\n .d-xxl-grid {\n display: grid !important;\n }\n .d-xxl-table {\n display: table !important;\n }\n .d-xxl-table-row {\n display: table-row !important;\n }\n .d-xxl-table-cell {\n display: table-cell !important;\n }\n .d-xxl-flex {\n display: flex !important;\n }\n .d-xxl-inline-flex {\n display: inline-flex !important;\n }\n .d-xxl-none {\n display: none !important;\n }\n .flex-xxl-fill {\n flex: 1 1 auto !important;\n }\n .flex-xxl-row {\n flex-direction: row !important;\n }\n .flex-xxl-column {\n flex-direction: column !important;\n }\n .flex-xxl-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-xxl-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-xxl-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-xxl-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-xxl-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-xxl-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-xxl-wrap {\n flex-wrap: wrap !important;\n }\n .flex-xxl-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-xxl-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-xxl-start {\n justify-content: flex-start !important;\n }\n .justify-content-xxl-end {\n justify-content: flex-end !important;\n }\n .justify-content-xxl-center {\n justify-content: center !important;\n }\n .justify-content-xxl-between {\n justify-content: space-between !important;\n }\n .justify-content-xxl-around {\n justify-content: space-around !important;\n }\n .justify-content-xxl-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-xxl-start {\n align-items: flex-start !important;\n }\n .align-items-xxl-end {\n align-items: flex-end !important;\n }\n .align-items-xxl-center {\n align-items: center !important;\n }\n .align-items-xxl-baseline {\n align-items: baseline !important;\n }\n .align-items-xxl-stretch {\n align-items: stretch !important;\n }\n .align-content-xxl-start {\n align-content: flex-start !important;\n }\n .align-content-xxl-end {\n align-content: flex-end !important;\n }\n .align-content-xxl-center {\n align-content: center !important;\n }\n .align-content-xxl-between {\n align-content: space-between !important;\n }\n .align-content-xxl-around {\n align-content: space-around !important;\n }\n .align-content-xxl-stretch {\n align-content: stretch !important;\n }\n .align-self-xxl-auto {\n align-self: auto !important;\n }\n .align-self-xxl-start {\n align-self: flex-start !important;\n }\n .align-self-xxl-end {\n align-self: flex-end !important;\n }\n .align-self-xxl-center {\n align-self: center !important;\n }\n .align-self-xxl-baseline {\n align-self: baseline !important;\n }\n .align-self-xxl-stretch {\n align-self: stretch !important;\n }\n .order-xxl-first {\n order: -1 !important;\n }\n .order-xxl-0 {\n order: 0 !important;\n }\n .order-xxl-1 {\n order: 1 !important;\n }\n .order-xxl-2 {\n order: 2 !important;\n }\n .order-xxl-3 {\n order: 3 !important;\n }\n .order-xxl-4 {\n order: 4 !important;\n }\n .order-xxl-5 {\n order: 5 !important;\n }\n .order-xxl-last {\n order: 6 !important;\n }\n .m-xxl-0 {\n margin: 0 !important;\n }\n .m-xxl-1 {\n margin: 0.25rem !important;\n }\n .m-xxl-2 {\n margin: 0.5rem !important;\n }\n .m-xxl-3 {\n margin: 1rem !important;\n }\n .m-xxl-4 {\n margin: 1.5rem !important;\n }\n .m-xxl-5 {\n margin: 3rem !important;\n }\n .m-xxl-auto {\n margin: auto !important;\n }\n .mx-xxl-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-xxl-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-xxl-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-xxl-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-xxl-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-xxl-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-xxl-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-xxl-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-xxl-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-xxl-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-xxl-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-xxl-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-xxl-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-xxl-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-xxl-0 {\n margin-top: 0 !important;\n }\n .mt-xxl-1 {\n margin-top: 0.25rem !important;\n }\n .mt-xxl-2 {\n margin-top: 0.5rem !important;\n }\n .mt-xxl-3 {\n margin-top: 1rem !important;\n }\n .mt-xxl-4 {\n margin-top: 1.5rem !important;\n }\n .mt-xxl-5 {\n margin-top: 3rem !important;\n }\n .mt-xxl-auto {\n margin-top: auto !important;\n }\n .me-xxl-0 {\n margin-right: 0 !important;\n }\n .me-xxl-1 {\n margin-right: 0.25rem !important;\n }\n .me-xxl-2 {\n margin-right: 0.5rem !important;\n }\n .me-xxl-3 {\n margin-right: 1rem !important;\n }\n .me-xxl-4 {\n margin-right: 1.5rem !important;\n }\n .me-xxl-5 {\n margin-right: 3rem !important;\n }\n .me-xxl-auto {\n margin-right: auto !important;\n }\n .mb-xxl-0 {\n margin-bottom: 0 !important;\n }\n .mb-xxl-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-xxl-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-xxl-3 {\n margin-bottom: 1rem !important;\n }\n .mb-xxl-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-xxl-5 {\n margin-bottom: 3rem !important;\n }\n .mb-xxl-auto {\n margin-bottom: auto !important;\n }\n .ms-xxl-0 {\n margin-left: 0 !important;\n }\n .ms-xxl-1 {\n margin-left: 0.25rem !important;\n }\n .ms-xxl-2 {\n margin-left: 0.5rem !important;\n }\n .ms-xxl-3 {\n margin-left: 1rem !important;\n }\n .ms-xxl-4 {\n margin-left: 1.5rem !important;\n }\n .ms-xxl-5 {\n margin-left: 3rem !important;\n }\n .ms-xxl-auto {\n margin-left: auto !important;\n }\n .p-xxl-0 {\n padding: 0 !important;\n }\n .p-xxl-1 {\n padding: 0.25rem !important;\n }\n .p-xxl-2 {\n padding: 0.5rem !important;\n }\n .p-xxl-3 {\n padding: 1rem !important;\n }\n .p-xxl-4 {\n padding: 1.5rem !important;\n }\n .p-xxl-5 {\n padding: 3rem !important;\n }\n .px-xxl-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-xxl-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-xxl-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-xxl-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-xxl-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-xxl-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-xxl-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-xxl-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-xxl-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-xxl-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-xxl-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-xxl-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-xxl-0 {\n padding-top: 0 !important;\n }\n .pt-xxl-1 {\n padding-top: 0.25rem !important;\n }\n .pt-xxl-2 {\n padding-top: 0.5rem !important;\n }\n .pt-xxl-3 {\n padding-top: 1rem !important;\n }\n .pt-xxl-4 {\n padding-top: 1.5rem !important;\n }\n .pt-xxl-5 {\n padding-top: 3rem !important;\n }\n .pe-xxl-0 {\n padding-right: 0 !important;\n }\n .pe-xxl-1 {\n padding-right: 0.25rem !important;\n }\n .pe-xxl-2 {\n padding-right: 0.5rem !important;\n }\n .pe-xxl-3 {\n padding-right: 1rem !important;\n }\n .pe-xxl-4 {\n padding-right: 1.5rem !important;\n }\n .pe-xxl-5 {\n padding-right: 3rem !important;\n }\n .pb-xxl-0 {\n padding-bottom: 0 !important;\n }\n .pb-xxl-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-xxl-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-xxl-3 {\n padding-bottom: 1rem !important;\n }\n .pb-xxl-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-xxl-5 {\n padding-bottom: 3rem !important;\n }\n .ps-xxl-0 {\n padding-left: 0 !important;\n }\n .ps-xxl-1 {\n padding-left: 0.25rem !important;\n }\n .ps-xxl-2 {\n padding-left: 0.5rem !important;\n }\n .ps-xxl-3 {\n padding-left: 1rem !important;\n }\n .ps-xxl-4 {\n padding-left: 1.5rem !important;\n }\n .ps-xxl-5 {\n padding-left: 3rem !important;\n }\n}\n@media print {\n .d-print-inline {\n display: inline !important;\n }\n .d-print-inline-block {\n display: inline-block !important;\n }\n .d-print-block {\n display: block !important;\n }\n .d-print-grid {\n display: grid !important;\n }\n .d-print-table {\n display: table !important;\n }\n .d-print-table-row {\n display: table-row !important;\n }\n .d-print-table-cell {\n display: table-cell !important;\n }\n .d-print-flex {\n display: flex !important;\n }\n .d-print-inline-flex {\n display: inline-flex !important;\n }\n .d-print-none {\n display: none !important;\n }\n}\n\n/*# sourceMappingURL=bootstrap-grid.css.map */\n","// scss-docs-start color-mode-mixin\n@mixin color-mode($mode: light, $root: false) {\n @if $color-mode-type == \"media-query\" {\n @if $root == true {\n @media (prefers-color-scheme: $mode) {\n :root {\n @content;\n }\n }\n } @else {\n @media (prefers-color-scheme: $mode) {\n @content;\n }\n }\n } @else {\n [data-bs-theme=\"#{$mode}\"] {\n @content;\n }\n }\n}\n// scss-docs-end color-mode-mixin\n","// Container widths\n//\n// Set the container width, and override it for fixed navbars in media queries.\n\n@if $enable-container-classes {\n // Single container class with breakpoint max-widths\n .container,\n // 100% wide container at all breakpoints\n .container-fluid {\n @include make-container();\n }\n\n // Responsive containers that are 100% wide until a breakpoint\n @each $breakpoint, $container-max-width in $container-max-widths {\n .container-#{$breakpoint} {\n @extend .container-fluid;\n }\n\n @include media-breakpoint-up($breakpoint, $grid-breakpoints) {\n %responsive-container-#{$breakpoint} {\n max-width: $container-max-width;\n }\n\n // Extend each breakpoint which is smaller or equal to the current breakpoint\n $extend-breakpoint: true;\n\n @each $name, $width in $grid-breakpoints {\n @if ($extend-breakpoint) {\n .container#{breakpoint-infix($name, $grid-breakpoints)} {\n @extend %responsive-container-#{$breakpoint};\n }\n\n // Once the current breakpoint is reached, stop extending\n @if ($breakpoint == $name) {\n $extend-breakpoint: false;\n }\n }\n }\n }\n }\n}\n","// Container mixins\n\n@mixin make-container($gutter: $container-padding-x) {\n --#{$prefix}gutter-x: #{$gutter};\n --#{$prefix}gutter-y: 0;\n width: 100%;\n padding-right: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n padding-left: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n margin-right: auto;\n margin-left: auto;\n}\n","// Breakpoint viewport sizes and media queries.\n//\n// Breakpoints are defined as a map of (name: minimum width), order from small to large:\n//\n// (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px)\n//\n// The map defined in the `$grid-breakpoints` global variable is used as the `$breakpoints` argument by default.\n\n// Name of the next breakpoint, or null for the last breakpoint.\n//\n// >> breakpoint-next(sm)\n// md\n// >> breakpoint-next(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// md\n// >> breakpoint-next(sm, $breakpoint-names: (xs sm md lg xl xxl))\n// md\n@function breakpoint-next($name, $breakpoints: $grid-breakpoints, $breakpoint-names: map-keys($breakpoints)) {\n $n: index($breakpoint-names, $name);\n @if not $n {\n @error \"breakpoint `#{$name}` not found in `#{$breakpoints}`\";\n }\n @return if($n < length($breakpoint-names), nth($breakpoint-names, $n + 1), null);\n}\n\n// Minimum breakpoint width. Null for the smallest (first) breakpoint.\n//\n// >> breakpoint-min(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// 576px\n@function breakpoint-min($name, $breakpoints: $grid-breakpoints) {\n $min: map-get($breakpoints, $name);\n @return if($min != 0, $min, null);\n}\n\n// Maximum breakpoint width.\n// The maximum value is reduced by 0.02px to work around the limitations of\n// `min-` and `max-` prefixes and viewports with fractional widths.\n// See https://www.w3.org/TR/mediaqueries-4/#mq-min-max\n// Uses 0.02px rather than 0.01px to work around a current rounding bug in Safari.\n// See https://bugs.webkit.org/show_bug.cgi?id=178261\n//\n// >> breakpoint-max(md, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// 767.98px\n@function breakpoint-max($name, $breakpoints: $grid-breakpoints) {\n $max: map-get($breakpoints, $name);\n @return if($max and $max > 0, $max - .02, null);\n}\n\n// Returns a blank string if smallest breakpoint, otherwise returns the name with a dash in front.\n// Useful for making responsive utilities.\n//\n// >> breakpoint-infix(xs, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// \"\" (Returns a blank string)\n// >> breakpoint-infix(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// \"-sm\"\n@function breakpoint-infix($name, $breakpoints: $grid-breakpoints) {\n @return if(breakpoint-min($name, $breakpoints) == null, \"\", \"-#{$name}\");\n}\n\n// Media of at least the minimum breakpoint width. No query for the smallest breakpoint.\n// Makes the @content apply to the given breakpoint and wider.\n@mixin media-breakpoint-up($name, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n @if $min {\n @media (min-width: $min) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Media of at most the maximum breakpoint width. No query for the largest breakpoint.\n// Makes the @content apply to the given breakpoint and narrower.\n@mixin media-breakpoint-down($name, $breakpoints: $grid-breakpoints) {\n $max: breakpoint-max($name, $breakpoints);\n @if $max {\n @media (max-width: $max) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Media that spans multiple breakpoint widths.\n// Makes the @content apply between the min and max breakpoints\n@mixin media-breakpoint-between($lower, $upper, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($lower, $breakpoints);\n $max: breakpoint-max($upper, $breakpoints);\n\n @if $min != null and $max != null {\n @media (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else if $max == null {\n @include media-breakpoint-up($lower, $breakpoints) {\n @content;\n }\n } @else if $min == null {\n @include media-breakpoint-down($upper, $breakpoints) {\n @content;\n }\n }\n}\n\n// Media between the breakpoint's minimum and maximum widths.\n// No minimum for the smallest breakpoint, and no maximum for the largest one.\n// Makes the @content apply only to the given breakpoint, not viewports any wider or narrower.\n@mixin media-breakpoint-only($name, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n $next: breakpoint-next($name, $breakpoints);\n $max: breakpoint-max($next, $breakpoints);\n\n @if $min != null and $max != null {\n @media (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else if $max == null {\n @include media-breakpoint-up($name, $breakpoints) {\n @content;\n }\n } @else if $min == null {\n @include media-breakpoint-down($next, $breakpoints) {\n @content;\n }\n }\n}\n","// Variables\n//\n// Variables should follow the `$component-state-property-size` formula for\n// consistent naming. Ex: $nav-link-disabled-color and $modal-content-box-shadow-xs.\n\n// Color system\n\n// scss-docs-start gray-color-variables\n$white: #fff !default;\n$gray-100: #f8f9fa !default;\n$gray-200: #e9ecef !default;\n$gray-300: #dee2e6 !default;\n$gray-400: #ced4da !default;\n$gray-500: #adb5bd !default;\n$gray-600: #6c757d !default;\n$gray-700: #495057 !default;\n$gray-800: #343a40 !default;\n$gray-900: #212529 !default;\n$black: #000 !default;\n// scss-docs-end gray-color-variables\n\n// fusv-disable\n// scss-docs-start gray-colors-map\n$grays: (\n \"100\": $gray-100,\n \"200\": $gray-200,\n \"300\": $gray-300,\n \"400\": $gray-400,\n \"500\": $gray-500,\n \"600\": $gray-600,\n \"700\": $gray-700,\n \"800\": $gray-800,\n \"900\": $gray-900\n) !default;\n// scss-docs-end gray-colors-map\n// fusv-enable\n\n// scss-docs-start color-variables\n$blue: #0d6efd !default;\n$indigo: #6610f2 !default;\n$purple: #6f42c1 !default;\n$pink: #d63384 !default;\n$red: #dc3545 !default;\n$orange: #fd7e14 !default;\n$yellow: #ffc107 !default;\n$green: #198754 !default;\n$teal: #20c997 !default;\n$cyan: #0dcaf0 !default;\n// scss-docs-end color-variables\n\n// scss-docs-start colors-map\n$colors: (\n \"blue\": $blue,\n \"indigo\": $indigo,\n \"purple\": $purple,\n \"pink\": $pink,\n \"red\": $red,\n \"orange\": $orange,\n \"yellow\": $yellow,\n \"green\": $green,\n \"teal\": $teal,\n \"cyan\": $cyan,\n \"black\": $black,\n \"white\": $white,\n \"gray\": $gray-600,\n \"gray-dark\": $gray-800\n) !default;\n// scss-docs-end colors-map\n\n// The contrast ratio to reach against white, to determine if color changes from \"light\" to \"dark\". Acceptable values for WCAG 2.0 are 3, 4.5 and 7.\n// See https://www.w3.org/TR/WCAG20/#visual-audio-contrast-contrast\n$min-contrast-ratio: 4.5 !default;\n\n// Customize the light and dark text colors for use in our color contrast function.\n$color-contrast-dark: $black !default;\n$color-contrast-light: $white !default;\n\n// fusv-disable\n$blue-100: tint-color($blue, 80%) !default;\n$blue-200: tint-color($blue, 60%) !default;\n$blue-300: tint-color($blue, 40%) !default;\n$blue-400: tint-color($blue, 20%) !default;\n$blue-500: $blue !default;\n$blue-600: shade-color($blue, 20%) !default;\n$blue-700: shade-color($blue, 40%) !default;\n$blue-800: shade-color($blue, 60%) !default;\n$blue-900: shade-color($blue, 80%) !default;\n\n$indigo-100: tint-color($indigo, 80%) !default;\n$indigo-200: tint-color($indigo, 60%) !default;\n$indigo-300: tint-color($indigo, 40%) !default;\n$indigo-400: tint-color($indigo, 20%) !default;\n$indigo-500: $indigo !default;\n$indigo-600: shade-color($indigo, 20%) !default;\n$indigo-700: shade-color($indigo, 40%) !default;\n$indigo-800: shade-color($indigo, 60%) !default;\n$indigo-900: shade-color($indigo, 80%) !default;\n\n$purple-100: tint-color($purple, 80%) !default;\n$purple-200: tint-color($purple, 60%) !default;\n$purple-300: tint-color($purple, 40%) !default;\n$purple-400: tint-color($purple, 20%) !default;\n$purple-500: $purple !default;\n$purple-600: shade-color($purple, 20%) !default;\n$purple-700: shade-color($purple, 40%) !default;\n$purple-800: shade-color($purple, 60%) !default;\n$purple-900: shade-color($purple, 80%) !default;\n\n$pink-100: tint-color($pink, 80%) !default;\n$pink-200: tint-color($pink, 60%) !default;\n$pink-300: tint-color($pink, 40%) !default;\n$pink-400: tint-color($pink, 20%) !default;\n$pink-500: $pink !default;\n$pink-600: shade-color($pink, 20%) !default;\n$pink-700: shade-color($pink, 40%) !default;\n$pink-800: shade-color($pink, 60%) !default;\n$pink-900: shade-color($pink, 80%) !default;\n\n$red-100: tint-color($red, 80%) !default;\n$red-200: tint-color($red, 60%) !default;\n$red-300: tint-color($red, 40%) !default;\n$red-400: tint-color($red, 20%) !default;\n$red-500: $red !default;\n$red-600: shade-color($red, 20%) !default;\n$red-700: shade-color($red, 40%) !default;\n$red-800: shade-color($red, 60%) !default;\n$red-900: shade-color($red, 80%) !default;\n\n$orange-100: tint-color($orange, 80%) !default;\n$orange-200: tint-color($orange, 60%) !default;\n$orange-300: tint-color($orange, 40%) !default;\n$orange-400: tint-color($orange, 20%) !default;\n$orange-500: $orange !default;\n$orange-600: shade-color($orange, 20%) !default;\n$orange-700: shade-color($orange, 40%) !default;\n$orange-800: shade-color($orange, 60%) !default;\n$orange-900: shade-color($orange, 80%) !default;\n\n$yellow-100: tint-color($yellow, 80%) !default;\n$yellow-200: tint-color($yellow, 60%) !default;\n$yellow-300: tint-color($yellow, 40%) !default;\n$yellow-400: tint-color($yellow, 20%) !default;\n$yellow-500: $yellow !default;\n$yellow-600: shade-color($yellow, 20%) !default;\n$yellow-700: shade-color($yellow, 40%) !default;\n$yellow-800: shade-color($yellow, 60%) !default;\n$yellow-900: shade-color($yellow, 80%) !default;\n\n$green-100: tint-color($green, 80%) !default;\n$green-200: tint-color($green, 60%) !default;\n$green-300: tint-color($green, 40%) !default;\n$green-400: tint-color($green, 20%) !default;\n$green-500: $green !default;\n$green-600: shade-color($green, 20%) !default;\n$green-700: shade-color($green, 40%) !default;\n$green-800: shade-color($green, 60%) !default;\n$green-900: shade-color($green, 80%) !default;\n\n$teal-100: tint-color($teal, 80%) !default;\n$teal-200: tint-color($teal, 60%) !default;\n$teal-300: tint-color($teal, 40%) !default;\n$teal-400: tint-color($teal, 20%) !default;\n$teal-500: $teal !default;\n$teal-600: shade-color($teal, 20%) !default;\n$teal-700: shade-color($teal, 40%) !default;\n$teal-800: shade-color($teal, 60%) !default;\n$teal-900: shade-color($teal, 80%) !default;\n\n$cyan-100: tint-color($cyan, 80%) !default;\n$cyan-200: tint-color($cyan, 60%) !default;\n$cyan-300: tint-color($cyan, 40%) !default;\n$cyan-400: tint-color($cyan, 20%) !default;\n$cyan-500: $cyan !default;\n$cyan-600: shade-color($cyan, 20%) !default;\n$cyan-700: shade-color($cyan, 40%) !default;\n$cyan-800: shade-color($cyan, 60%) !default;\n$cyan-900: shade-color($cyan, 80%) !default;\n\n$blues: (\n \"blue-100\": $blue-100,\n \"blue-200\": $blue-200,\n \"blue-300\": $blue-300,\n \"blue-400\": $blue-400,\n \"blue-500\": $blue-500,\n \"blue-600\": $blue-600,\n \"blue-700\": $blue-700,\n \"blue-800\": $blue-800,\n \"blue-900\": $blue-900\n) !default;\n\n$indigos: (\n \"indigo-100\": $indigo-100,\n \"indigo-200\": $indigo-200,\n \"indigo-300\": $indigo-300,\n \"indigo-400\": $indigo-400,\n \"indigo-500\": $indigo-500,\n \"indigo-600\": $indigo-600,\n \"indigo-700\": $indigo-700,\n \"indigo-800\": $indigo-800,\n \"indigo-900\": $indigo-900\n) !default;\n\n$purples: (\n \"purple-100\": $purple-100,\n \"purple-200\": $purple-200,\n \"purple-300\": $purple-300,\n \"purple-400\": $purple-400,\n \"purple-500\": $purple-500,\n \"purple-600\": $purple-600,\n \"purple-700\": $purple-700,\n \"purple-800\": $purple-800,\n \"purple-900\": $purple-900\n) !default;\n\n$pinks: (\n \"pink-100\": $pink-100,\n \"pink-200\": $pink-200,\n \"pink-300\": $pink-300,\n \"pink-400\": $pink-400,\n \"pink-500\": $pink-500,\n \"pink-600\": $pink-600,\n \"pink-700\": $pink-700,\n \"pink-800\": $pink-800,\n \"pink-900\": $pink-900\n) !default;\n\n$reds: (\n \"red-100\": $red-100,\n \"red-200\": $red-200,\n \"red-300\": $red-300,\n \"red-400\": $red-400,\n \"red-500\": $red-500,\n \"red-600\": $red-600,\n \"red-700\": $red-700,\n \"red-800\": $red-800,\n \"red-900\": $red-900\n) !default;\n\n$oranges: (\n \"orange-100\": $orange-100,\n \"orange-200\": $orange-200,\n \"orange-300\": $orange-300,\n \"orange-400\": $orange-400,\n \"orange-500\": $orange-500,\n \"orange-600\": $orange-600,\n \"orange-700\": $orange-700,\n \"orange-800\": $orange-800,\n \"orange-900\": $orange-900\n) !default;\n\n$yellows: (\n \"yellow-100\": $yellow-100,\n \"yellow-200\": $yellow-200,\n \"yellow-300\": $yellow-300,\n \"yellow-400\": $yellow-400,\n \"yellow-500\": $yellow-500,\n \"yellow-600\": $yellow-600,\n \"yellow-700\": $yellow-700,\n \"yellow-800\": $yellow-800,\n \"yellow-900\": $yellow-900\n) !default;\n\n$greens: (\n \"green-100\": $green-100,\n \"green-200\": $green-200,\n \"green-300\": $green-300,\n \"green-400\": $green-400,\n \"green-500\": $green-500,\n \"green-600\": $green-600,\n \"green-700\": $green-700,\n \"green-800\": $green-800,\n \"green-900\": $green-900\n) !default;\n\n$teals: (\n \"teal-100\": $teal-100,\n \"teal-200\": $teal-200,\n \"teal-300\": $teal-300,\n \"teal-400\": $teal-400,\n \"teal-500\": $teal-500,\n \"teal-600\": $teal-600,\n \"teal-700\": $teal-700,\n \"teal-800\": $teal-800,\n \"teal-900\": $teal-900\n) !default;\n\n$cyans: (\n \"cyan-100\": $cyan-100,\n \"cyan-200\": $cyan-200,\n \"cyan-300\": $cyan-300,\n \"cyan-400\": $cyan-400,\n \"cyan-500\": $cyan-500,\n \"cyan-600\": $cyan-600,\n \"cyan-700\": $cyan-700,\n \"cyan-800\": $cyan-800,\n \"cyan-900\": $cyan-900\n) !default;\n// fusv-enable\n\n// scss-docs-start theme-color-variables\n$primary: $blue !default;\n$secondary: $gray-600 !default;\n$success: $green !default;\n$info: $cyan !default;\n$warning: $yellow !default;\n$danger: $red !default;\n$light: $gray-100 !default;\n$dark: $gray-900 !default;\n// scss-docs-end theme-color-variables\n\n// scss-docs-start theme-colors-map\n$theme-colors: (\n \"primary\": $primary,\n \"secondary\": $secondary,\n \"success\": $success,\n \"info\": $info,\n \"warning\": $warning,\n \"danger\": $danger,\n \"light\": $light,\n \"dark\": $dark\n) !default;\n// scss-docs-end theme-colors-map\n\n$primary-text: $blue-600 !default;\n$secondary-text: $gray-600 !default;\n$success-text: $green-600 !default;\n$info-text: $cyan-700 !default;\n$warning-text: $yellow-700 !default;\n$danger-text: $red-600 !default;\n$light-text: $gray-600 !default;\n$dark-text: $gray-700 !default;\n\n$primary-bg-subtle: $blue-100 !default;\n$secondary-bg-subtle: $gray-100 !default;\n$success-bg-subtle: $green-100 !default;\n$info-bg-subtle: $cyan-100 !default;\n$warning-bg-subtle: $yellow-100 !default;\n$danger-bg-subtle: $red-100 !default;\n$light-bg-subtle: mix($gray-100, $white) !default;\n$dark-bg-subtle: $gray-400 !default;\n\n$primary-border-subtle: $blue-200 !default;\n$secondary-border-subtle: $gray-200 !default;\n$success-border-subtle: $green-200 !default;\n$info-border-subtle: $cyan-200 !default;\n$warning-border-subtle: $yellow-200 !default;\n$danger-border-subtle: $red-200 !default;\n$light-border-subtle: $gray-200 !default;\n$dark-border-subtle: $gray-500 !default;\n\n// Characters which are escaped by the escape-svg function\n$escaped-characters: (\n (\"<\", \"%3c\"),\n (\">\", \"%3e\"),\n (\"#\", \"%23\"),\n (\"(\", \"%28\"),\n (\")\", \"%29\"),\n) !default;\n\n// Options\n//\n// Quickly modify global styling by enabling or disabling optional features.\n\n$enable-caret: true !default;\n$enable-rounded: true !default;\n$enable-shadows: false !default;\n$enable-gradients: false !default;\n$enable-transitions: true !default;\n$enable-reduced-motion: true !default;\n$enable-smooth-scroll: true !default;\n$enable-grid-classes: true !default;\n$enable-container-classes: true !default;\n$enable-cssgrid: false !default;\n$enable-button-pointers: true !default;\n$enable-rfs: true !default;\n$enable-validation-icons: true !default;\n$enable-negative-margins: false !default;\n$enable-deprecation-messages: true !default;\n$enable-important-utilities: true !default;\n\n$enable-dark-mode: true !default;\n$color-mode-type: data !default; // `data` or `media-query`\n\n// Prefix for :root CSS variables\n\n$variable-prefix: bs- !default; // Deprecated in v5.2.0 for the shorter `$prefix`\n$prefix: $variable-prefix !default;\n\n// Gradient\n//\n// The gradient which is added to components if `$enable-gradients` is `true`\n// This gradient is also added to elements with `.bg-gradient`\n// scss-docs-start variable-gradient\n$gradient: linear-gradient(180deg, rgba($white, .15), rgba($white, 0)) !default;\n// scss-docs-end variable-gradient\n\n// Spacing\n//\n// Control the default styling of most Bootstrap elements by modifying these\n// variables. Mostly focused on spacing.\n// You can add more entries to the $spacers map, should you need more variation.\n\n// scss-docs-start spacer-variables-maps\n$spacer: 1rem !default;\n$spacers: (\n 0: 0,\n 1: $spacer * .25,\n 2: $spacer * .5,\n 3: $spacer,\n 4: $spacer * 1.5,\n 5: $spacer * 3,\n) !default;\n// scss-docs-end spacer-variables-maps\n\n// Position\n//\n// Define the edge positioning anchors of the position utilities.\n\n// scss-docs-start position-map\n$position-values: (\n 0: 0,\n 50: 50%,\n 100: 100%\n) !default;\n// scss-docs-end position-map\n\n// Body\n//\n// Settings for the `` element.\n\n$body-text-align: null !default;\n$body-color: $gray-900 !default;\n$body-bg: $white !default;\n\n$body-emphasis-color: $black !default;\n\n$body-secondary-color: rgba($body-color, .75) !default;\n$body-secondary-bg: $gray-200 !default;\n\n$body-tertiary-color: rgba($body-color, .5) !default;\n$body-tertiary-bg: $gray-100 !default;\n\n$emphasis-color: $black !default;\n\n// Links\n//\n// Style anchor elements.\n\n$link-color: $primary !default;\n$link-decoration: underline !default;\n$link-shade-percentage: 20% !default;\n$link-hover-color: shift-color($link-color, $link-shade-percentage) !default;\n$link-hover-decoration: null !default;\n\n$stretched-link-pseudo-element: after !default;\n$stretched-link-z-index: 1 !default;\n\n// Paragraphs\n//\n// Style p element.\n\n$paragraph-margin-bottom: 1rem !default;\n\n\n// Grid breakpoints\n//\n// Define the minimum dimensions at which your layout will change,\n// adapting to different screen sizes, for use in media queries.\n\n// scss-docs-start grid-breakpoints\n$grid-breakpoints: (\n xs: 0,\n sm: 576px,\n md: 768px,\n lg: 992px,\n xl: 1200px,\n xxl: 1400px\n) !default;\n// scss-docs-end grid-breakpoints\n\n@include _assert-ascending($grid-breakpoints, \"$grid-breakpoints\");\n@include _assert-starts-at-zero($grid-breakpoints, \"$grid-breakpoints\");\n\n\n// Grid containers\n//\n// Define the maximum width of `.container` for different screen sizes.\n\n// scss-docs-start container-max-widths\n$container-max-widths: (\n sm: 540px,\n md: 720px,\n lg: 960px,\n xl: 1140px,\n xxl: 1320px\n) !default;\n// scss-docs-end container-max-widths\n\n@include _assert-ascending($container-max-widths, \"$container-max-widths\");\n\n\n// Grid columns\n//\n// Set the number of columns and specify the width of the gutters.\n\n$grid-columns: 12 !default;\n$grid-gutter-width: 1.5rem !default;\n$grid-row-columns: 6 !default;\n\n// Container padding\n\n$container-padding-x: $grid-gutter-width !default;\n\n\n// Components\n//\n// Define common padding and border radius sizes and more.\n\n// scss-docs-start border-variables\n$border-width: 1px !default;\n$border-widths: (\n 1: 1px,\n 2: 2px,\n 3: 3px,\n 4: 4px,\n 5: 5px\n) !default;\n$border-style: solid !default;\n$border-color: $gray-300 !default;\n$border-color-translucent: rgba($black, .175) !default;\n// scss-docs-end border-variables\n\n// scss-docs-start border-radius-variables\n$border-radius: .375rem !default;\n$border-radius-sm: .25rem !default;\n$border-radius-lg: .5rem !default;\n$border-radius-xl: 1rem !default;\n$border-radius-2xl: 2rem !default;\n$border-radius-pill: 50rem !default;\n// scss-docs-end border-radius-variables\n\n// scss-docs-start box-shadow-variables\n$box-shadow: 0 .5rem 1rem rgba(var(--#{$prefix}body-color-rgb), .15) !default;\n$box-shadow-sm: 0 .125rem .25rem rgba(var(--#{$prefix}body-color-rgb), .075) !default;\n$box-shadow-lg: 0 1rem 3rem rgba(var(--#{$prefix}body-color-rgb), .175) !default;\n$box-shadow-inset: inset 0 1px 2px rgba(var(--#{$prefix}body-color-rgb), .075) !default;\n// scss-docs-end box-shadow-variables\n\n$component-active-color: $white !default;\n$component-active-bg: $primary !default;\n\n// scss-docs-start caret-variables\n$caret-width: .3em !default;\n$caret-vertical-align: $caret-width * .85 !default;\n$caret-spacing: $caret-width * .85 !default;\n// scss-docs-end caret-variables\n\n$transition-base: all .2s ease-in-out !default;\n$transition-fade: opacity .15s linear !default;\n// scss-docs-start collapse-transition\n$transition-collapse: height .35s ease !default;\n$transition-collapse-width: width .35s ease !default;\n// scss-docs-end collapse-transition\n\n// stylelint-disable function-disallowed-list\n// scss-docs-start aspect-ratios\n$aspect-ratios: (\n \"1x1\": 100%,\n \"4x3\": calc(3 / 4 * 100%),\n \"16x9\": calc(9 / 16 * 100%),\n \"21x9\": calc(9 / 21 * 100%)\n) !default;\n// scss-docs-end aspect-ratios\n// stylelint-enable function-disallowed-list\n\n// Typography\n//\n// Font, line-height, and color for body text, headings, and more.\n\n// scss-docs-start font-variables\n// stylelint-disable value-keyword-case\n$font-family-sans-serif: system-ui, -apple-system, \"Segoe UI\", Roboto, \"Helvetica Neue\", \"Noto Sans\", \"Liberation Sans\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\" !default;\n$font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace !default;\n// stylelint-enable value-keyword-case\n$font-family-base: var(--#{$prefix}font-sans-serif) !default;\n$font-family-code: var(--#{$prefix}font-monospace) !default;\n\n// $font-size-root affects the value of `rem`, which is used for as well font sizes, paddings, and margins\n// $font-size-base affects the font size of the body text\n$font-size-root: null !default;\n$font-size-base: 1rem !default; // Assumes the browser default, typically `16px`\n$font-size-sm: $font-size-base * .875 !default;\n$font-size-lg: $font-size-base * 1.25 !default;\n\n$font-weight-lighter: lighter !default;\n$font-weight-light: 300 !default;\n$font-weight-normal: 400 !default;\n$font-weight-medium: 500 !default;\n$font-weight-semibold: 600 !default;\n$font-weight-bold: 700 !default;\n$font-weight-bolder: bolder !default;\n\n$font-weight-base: $font-weight-normal !default;\n\n$line-height-base: 1.5 !default;\n$line-height-sm: 1.25 !default;\n$line-height-lg: 2 !default;\n\n$h1-font-size: $font-size-base * 2.5 !default;\n$h2-font-size: $font-size-base * 2 !default;\n$h3-font-size: $font-size-base * 1.75 !default;\n$h4-font-size: $font-size-base * 1.5 !default;\n$h5-font-size: $font-size-base * 1.25 !default;\n$h6-font-size: $font-size-base !default;\n// scss-docs-end font-variables\n\n// scss-docs-start font-sizes\n$font-sizes: (\n 1: $h1-font-size,\n 2: $h2-font-size,\n 3: $h3-font-size,\n 4: $h4-font-size,\n 5: $h5-font-size,\n 6: $h6-font-size\n) !default;\n// scss-docs-end font-sizes\n\n// scss-docs-start headings-variables\n$headings-margin-bottom: $spacer * .5 !default;\n$headings-font-family: null !default;\n$headings-font-style: null !default;\n$headings-font-weight: 500 !default;\n$headings-line-height: 1.2 !default;\n$headings-color: null !default;\n// scss-docs-end headings-variables\n\n// scss-docs-start display-headings\n$display-font-sizes: (\n 1: 5rem,\n 2: 4.5rem,\n 3: 4rem,\n 4: 3.5rem,\n 5: 3rem,\n 6: 2.5rem\n) !default;\n\n$display-font-family: null !default;\n$display-font-style: null !default;\n$display-font-weight: 300 !default;\n$display-line-height: $headings-line-height !default;\n// scss-docs-end display-headings\n\n// scss-docs-start type-variables\n$lead-font-size: $font-size-base * 1.25 !default;\n$lead-font-weight: 300 !default;\n\n$small-font-size: .875em !default;\n\n$sub-sup-font-size: .75em !default;\n\n$text-muted: var(--#{$prefix}secondary-color) !default;\n\n$initialism-font-size: $small-font-size !default;\n\n$blockquote-margin-y: $spacer !default;\n$blockquote-font-size: $font-size-base * 1.25 !default;\n$blockquote-footer-color: $gray-600 !default;\n$blockquote-footer-font-size: $small-font-size !default;\n\n$hr-margin-y: $spacer !default;\n$hr-color: inherit !default;\n\n// fusv-disable\n$hr-bg-color: null !default; // Deprecated in v5.2.0\n$hr-height: null !default; // Deprecated in v5.2.0\n// fusv-enable\n\n$hr-border-color: null !default; // Allows for inherited colors\n$hr-border-width: var(--#{$prefix}border-width) !default;\n$hr-opacity: .25 !default;\n\n$legend-margin-bottom: .5rem !default;\n$legend-font-size: 1.5rem !default;\n$legend-font-weight: null !default;\n\n$dt-font-weight: $font-weight-bold !default;\n\n$list-inline-padding: .5rem !default;\n\n$mark-padding: .1875em !default;\n$mark-bg: $yellow-100 !default;\n// scss-docs-end type-variables\n\n\n// Tables\n//\n// Customizes the `.table` component with basic values, each used across all table variations.\n\n// scss-docs-start table-variables\n$table-cell-padding-y: .5rem !default;\n$table-cell-padding-x: .5rem !default;\n$table-cell-padding-y-sm: .25rem !default;\n$table-cell-padding-x-sm: .25rem !default;\n\n$table-cell-vertical-align: top !default;\n\n$table-color: var(--#{$prefix}body-color) !default;\n$table-bg: transparent !default;\n$table-accent-bg: transparent !default;\n\n$table-th-font-weight: null !default;\n\n$table-striped-color: $table-color !default;\n$table-striped-bg-factor: .05 !default;\n$table-striped-bg: rgba($black, $table-striped-bg-factor) !default;\n\n$table-active-color: $table-color !default;\n$table-active-bg-factor: .1 !default;\n$table-active-bg: rgba($black, $table-active-bg-factor) !default;\n\n$table-hover-color: $table-color !default;\n$table-hover-bg-factor: .075 !default;\n$table-hover-bg: rgba($black, $table-hover-bg-factor) !default;\n\n$table-border-factor: .1 !default;\n$table-border-width: var(--#{$prefix}border-width) !default;\n$table-border-color: var(--#{$prefix}border-color) !default;\n\n$table-striped-order: odd !default;\n$table-striped-columns-order: even !default;\n\n$table-group-separator-color: currentcolor !default;\n\n$table-caption-color: $text-muted !default;\n\n$table-bg-scale: -80% !default;\n// scss-docs-end table-variables\n\n// scss-docs-start table-loop\n$table-variants: (\n \"primary\": shift-color($primary, $table-bg-scale),\n \"secondary\": shift-color($secondary, $table-bg-scale),\n \"success\": shift-color($success, $table-bg-scale),\n \"info\": shift-color($info, $table-bg-scale),\n \"warning\": shift-color($warning, $table-bg-scale),\n \"danger\": shift-color($danger, $table-bg-scale),\n \"light\": $light,\n \"dark\": $dark,\n) !default;\n// scss-docs-end table-loop\n\n\n// Buttons + Forms\n//\n// Shared variables that are reassigned to `$input-` and `$btn-` specific variables.\n\n// scss-docs-start input-btn-variables\n$input-btn-padding-y: .375rem !default;\n$input-btn-padding-x: .75rem !default;\n$input-btn-font-family: null !default;\n$input-btn-font-size: $font-size-base !default;\n$input-btn-line-height: $line-height-base !default;\n\n$input-btn-focus-width: .25rem !default;\n$input-btn-focus-color-opacity: .25 !default;\n$input-btn-focus-color: rgba($component-active-bg, $input-btn-focus-color-opacity) !default;\n$input-btn-focus-blur: 0 !default;\n$input-btn-focus-box-shadow: 0 0 $input-btn-focus-blur $input-btn-focus-width $input-btn-focus-color !default;\n\n$input-btn-padding-y-sm: .25rem !default;\n$input-btn-padding-x-sm: .5rem !default;\n$input-btn-font-size-sm: $font-size-sm !default;\n\n$input-btn-padding-y-lg: .5rem !default;\n$input-btn-padding-x-lg: 1rem !default;\n$input-btn-font-size-lg: $font-size-lg !default;\n\n$input-btn-border-width: var(--#{$prefix}border-width) !default;\n// scss-docs-end input-btn-variables\n\n\n// Buttons\n//\n// For each of Bootstrap's buttons, define text, background, and border color.\n\n// scss-docs-start btn-variables\n$btn-padding-y: $input-btn-padding-y !default;\n$btn-padding-x: $input-btn-padding-x !default;\n$btn-font-family: $input-btn-font-family !default;\n$btn-font-size: $input-btn-font-size !default;\n$btn-line-height: $input-btn-line-height !default;\n$btn-white-space: null !default; // Set to `nowrap` to prevent text wrapping\n\n$btn-padding-y-sm: $input-btn-padding-y-sm !default;\n$btn-padding-x-sm: $input-btn-padding-x-sm !default;\n$btn-font-size-sm: $input-btn-font-size-sm !default;\n\n$btn-padding-y-lg: $input-btn-padding-y-lg !default;\n$btn-padding-x-lg: $input-btn-padding-x-lg !default;\n$btn-font-size-lg: $input-btn-font-size-lg !default;\n\n$btn-border-width: $input-btn-border-width !default;\n\n$btn-font-weight: $font-weight-normal !default;\n$btn-box-shadow: inset 0 1px 0 rgba($white, .15), 0 1px 1px rgba($black, .075) !default;\n$btn-focus-width: $input-btn-focus-width !default;\n$btn-focus-box-shadow: $input-btn-focus-box-shadow !default;\n$btn-disabled-opacity: .65 !default;\n$btn-active-box-shadow: inset 0 3px 5px rgba($black, .125) !default;\n\n$btn-link-color: var(--#{$prefix}link-color) !default;\n$btn-link-hover-color: var(--#{$prefix}link-hover-color) !default;\n$btn-link-disabled-color: $gray-600 !default;\n\n// Allows for customizing button radius independently from global border radius\n$btn-border-radius: $border-radius !default;\n$btn-border-radius-sm: $border-radius-sm !default;\n$btn-border-radius-lg: $border-radius-lg !default;\n\n$btn-transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n\n$btn-hover-bg-shade-amount: 15% !default;\n$btn-hover-bg-tint-amount: 15% !default;\n$btn-hover-border-shade-amount: 20% !default;\n$btn-hover-border-tint-amount: 10% !default;\n$btn-active-bg-shade-amount: 20% !default;\n$btn-active-bg-tint-amount: 20% !default;\n$btn-active-border-shade-amount: 25% !default;\n$btn-active-border-tint-amount: 10% !default;\n// scss-docs-end btn-variables\n\n\n// Forms\n\n// scss-docs-start form-text-variables\n$form-text-margin-top: .25rem !default;\n$form-text-font-size: $small-font-size !default;\n$form-text-font-style: null !default;\n$form-text-font-weight: null !default;\n$form-text-color: $text-muted !default;\n// scss-docs-end form-text-variables\n\n// scss-docs-start form-label-variables\n$form-label-margin-bottom: .5rem !default;\n$form-label-font-size: null !default;\n$form-label-font-style: null !default;\n$form-label-font-weight: null !default;\n$form-label-color: null !default;\n// scss-docs-end form-label-variables\n\n// scss-docs-start form-input-variables\n$input-padding-y: $input-btn-padding-y !default;\n$input-padding-x: $input-btn-padding-x !default;\n$input-font-family: $input-btn-font-family !default;\n$input-font-size: $input-btn-font-size !default;\n$input-font-weight: $font-weight-base !default;\n$input-line-height: $input-btn-line-height !default;\n\n$input-padding-y-sm: $input-btn-padding-y-sm !default;\n$input-padding-x-sm: $input-btn-padding-x-sm !default;\n$input-font-size-sm: $input-btn-font-size-sm !default;\n\n$input-padding-y-lg: $input-btn-padding-y-lg !default;\n$input-padding-x-lg: $input-btn-padding-x-lg !default;\n$input-font-size-lg: $input-btn-font-size-lg !default;\n\n$input-bg: var(--#{$prefix}form-control-bg) !default;\n$input-disabled-color: null !default;\n$input-disabled-bg: var(--#{$prefix}form-control-disabled-bg) !default;\n$input-disabled-border-color: null !default;\n\n$input-color: var(--#{$prefix}body-color) !default;\n$input-border-color: var(--#{$prefix}border-color) !default; //$gray-400\n$input-border-width: $input-btn-border-width !default;\n$input-box-shadow: $box-shadow-inset !default;\n\n$input-border-radius: $border-radius !default;\n$input-border-radius-sm: $border-radius-sm !default;\n$input-border-radius-lg: $border-radius-lg !default;\n\n$input-focus-bg: $input-bg !default;\n$input-focus-border-color: tint-color($component-active-bg, 50%) !default;\n$input-focus-color: $input-color !default;\n$input-focus-width: $input-btn-focus-width !default;\n$input-focus-box-shadow: $input-btn-focus-box-shadow !default;\n\n$input-placeholder-color: var(--#{$prefix}secondary-color) !default;\n$input-plaintext-color: var(--#{$prefix}body-color) !default;\n\n$input-height-border: calc($input-border-width * 2) !default; // stylelint-disable-line function-disallowed-list\n\n$input-height-inner: add($input-line-height * 1em, $input-padding-y * 2) !default;\n$input-height-inner-half: add($input-line-height * .5em, $input-padding-y) !default;\n$input-height-inner-quarter: add($input-line-height * .25em, $input-padding-y * .5) !default;\n\n$input-height: add($input-line-height * 1em, add($input-padding-y * 2, $input-height-border, false)) !default;\n$input-height-sm: add($input-line-height * 1em, add($input-padding-y-sm * 2, $input-height-border, false)) !default;\n$input-height-lg: add($input-line-height * 1em, add($input-padding-y-lg * 2, $input-height-border, false)) !default;\n\n$input-transition: border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n\n$form-color-width: 3rem !default;\n// scss-docs-end form-input-variables\n\n// scss-docs-start form-check-variables\n$form-check-input-width: 1em !default;\n$form-check-min-height: $font-size-base * $line-height-base !default;\n$form-check-padding-start: $form-check-input-width + .5em !default;\n$form-check-margin-bottom: .125rem !default;\n$form-check-label-color: null !default;\n$form-check-label-cursor: null !default;\n$form-check-transition: null !default;\n\n$form-check-input-active-filter: brightness(90%) !default;\n\n$form-check-input-bg: $input-bg !default;\n$form-check-input-border: var(--#{$prefix}border-width) solid var(--#{$prefix}border-color) !default;\n$form-check-input-border-radius: .25em !default;\n$form-check-radio-border-radius: 50% !default;\n$form-check-input-focus-border: $input-focus-border-color !default;\n$form-check-input-focus-box-shadow: $input-btn-focus-box-shadow !default;\n\n$form-check-input-checked-color: $component-active-color !default;\n$form-check-input-checked-bg-color: $component-active-bg !default;\n$form-check-input-checked-border-color: $form-check-input-checked-bg-color !default;\n$form-check-input-checked-bg-image: url(\"data:image/svg+xml,\") !default;\n$form-check-radio-checked-bg-image: url(\"data:image/svg+xml,\") !default;\n\n$form-check-input-indeterminate-color: $component-active-color !default;\n$form-check-input-indeterminate-bg-color: $component-active-bg !default;\n$form-check-input-indeterminate-border-color: $form-check-input-indeterminate-bg-color !default;\n$form-check-input-indeterminate-bg-image: url(\"data:image/svg+xml,\") !default;\n\n$form-check-input-disabled-opacity: .5 !default;\n$form-check-label-disabled-opacity: $form-check-input-disabled-opacity !default;\n$form-check-btn-check-disabled-opacity: $btn-disabled-opacity !default;\n\n$form-check-inline-margin-end: 1rem !default;\n// scss-docs-end form-check-variables\n\n// scss-docs-start form-switch-variables\n$form-switch-color: rgba($black, .25) !default;\n$form-switch-width: 2em !default;\n$form-switch-padding-start: $form-switch-width + .5em !default;\n$form-switch-bg-image: url(\"data:image/svg+xml,\") !default;\n$form-switch-border-radius: $form-switch-width !default;\n$form-switch-transition: background-position .15s ease-in-out !default;\n\n$form-switch-focus-color: $input-focus-border-color !default;\n$form-switch-focus-bg-image: url(\"data:image/svg+xml,\") !default;\n\n$form-switch-checked-color: $component-active-color !default;\n$form-switch-checked-bg-image: url(\"data:image/svg+xml,\") !default;\n$form-switch-checked-bg-position: right center !default;\n// scss-docs-end form-switch-variables\n\n// scss-docs-start input-group-variables\n$input-group-addon-padding-y: $input-padding-y !default;\n$input-group-addon-padding-x: $input-padding-x !default;\n$input-group-addon-font-weight: $input-font-weight !default;\n$input-group-addon-color: $input-color !default;\n$input-group-addon-bg: var(--#{$prefix}tertiary-bg) !default;\n$input-group-addon-border-color: $input-border-color !default;\n// scss-docs-end input-group-variables\n\n// scss-docs-start form-select-variables\n$form-select-padding-y: $input-padding-y !default;\n$form-select-padding-x: $input-padding-x !default;\n$form-select-font-family: $input-font-family !default;\n$form-select-font-size: $input-font-size !default;\n$form-select-indicator-padding: $form-select-padding-x * 3 !default; // Extra padding for background-image\n$form-select-font-weight: $input-font-weight !default;\n$form-select-line-height: $input-line-height !default;\n$form-select-color: $input-color !default;\n$form-select-bg: $input-bg !default;\n$form-select-disabled-color: null !default;\n$form-select-disabled-bg: $input-disabled-bg !default;\n$form-select-disabled-border-color: $input-disabled-border-color !default;\n$form-select-bg-position: right $form-select-padding-x center !default;\n$form-select-bg-size: 16px 12px !default; // In pixels because image dimensions\n$form-select-indicator-color: $gray-800 !default;\n$form-select-indicator: url(\"data:image/svg+xml,\") !default;\n\n$form-select-feedback-icon-padding-end: $form-select-padding-x * 2.5 + $form-select-indicator-padding !default;\n$form-select-feedback-icon-position: center right $form-select-indicator-padding !default;\n$form-select-feedback-icon-size: $input-height-inner-half $input-height-inner-half !default;\n\n$form-select-border-width: $input-border-width !default;\n$form-select-border-color: $input-border-color !default;\n$form-select-border-radius: $input-border-radius !default;\n$form-select-box-shadow: $box-shadow-inset !default;\n\n$form-select-focus-border-color: $input-focus-border-color !default;\n$form-select-focus-width: $input-focus-width !default;\n$form-select-focus-box-shadow: 0 0 0 $form-select-focus-width $input-btn-focus-color !default;\n\n$form-select-padding-y-sm: $input-padding-y-sm !default;\n$form-select-padding-x-sm: $input-padding-x-sm !default;\n$form-select-font-size-sm: $input-font-size-sm !default;\n$form-select-border-radius-sm: $input-border-radius-sm !default;\n\n$form-select-padding-y-lg: $input-padding-y-lg !default;\n$form-select-padding-x-lg: $input-padding-x-lg !default;\n$form-select-font-size-lg: $input-font-size-lg !default;\n$form-select-border-radius-lg: $input-border-radius-lg !default;\n\n$form-select-transition: $input-transition !default;\n// scss-docs-end form-select-variables\n\n// scss-docs-start form-range-variables\n$form-range-track-width: 100% !default;\n$form-range-track-height: .5rem !default;\n$form-range-track-cursor: pointer !default;\n$form-range-track-bg: var(--#{$prefix}tertiary-bg) !default;\n$form-range-track-border-radius: 1rem !default;\n$form-range-track-box-shadow: $box-shadow-inset !default;\n\n$form-range-thumb-width: 1rem !default;\n$form-range-thumb-height: $form-range-thumb-width !default;\n$form-range-thumb-bg: $component-active-bg !default;\n$form-range-thumb-border: 0 !default;\n$form-range-thumb-border-radius: 1rem !default;\n$form-range-thumb-box-shadow: 0 .1rem .25rem rgba($black, .1) !default;\n$form-range-thumb-focus-box-shadow: 0 0 0 1px $body-bg, $input-focus-box-shadow !default;\n$form-range-thumb-focus-box-shadow-width: $input-focus-width !default; // For focus box shadow issue in Edge\n$form-range-thumb-active-bg: tint-color($component-active-bg, 70%) !default;\n$form-range-thumb-disabled-bg: var(--#{$prefix}secondary-color) !default;\n$form-range-thumb-transition: background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n// scss-docs-end form-range-variables\n\n// scss-docs-start form-file-variables\n$form-file-button-color: $input-color !default;\n$form-file-button-bg: var(--#{$prefix}tertiary-bg) !default;\n$form-file-button-hover-bg: var(--#{$prefix}secondary-bg) !default;\n// scss-docs-end form-file-variables\n\n// scss-docs-start form-floating-variables\n$form-floating-height: add(3.5rem, $input-height-border) !default;\n$form-floating-line-height: 1.25 !default;\n$form-floating-padding-x: $input-padding-x !default;\n$form-floating-padding-y: 1rem !default;\n$form-floating-input-padding-t: 1.625rem !default;\n$form-floating-input-padding-b: .625rem !default;\n$form-floating-label-height: 1.875em !default;\n$form-floating-label-opacity: .65 !default;\n$form-floating-label-transform: scale(.85) translateY(-.5rem) translateX(.15rem) !default;\n$form-floating-label-disabled-color: $gray-600 !default;\n$form-floating-transition: opacity .1s ease-in-out, transform .1s ease-in-out !default;\n// scss-docs-end form-floating-variables\n\n// Form validation\n\n// scss-docs-start form-feedback-variables\n$form-feedback-margin-top: $form-text-margin-top !default;\n$form-feedback-font-size: $form-text-font-size !default;\n$form-feedback-font-style: $form-text-font-style !default;\n$form-feedback-valid-color: $success !default;\n$form-feedback-invalid-color: $danger !default;\n\n$form-feedback-icon-valid-color: $form-feedback-valid-color !default;\n$form-feedback-icon-valid: url(\"data:image/svg+xml,\") !default;\n$form-feedback-icon-invalid-color: $form-feedback-invalid-color !default;\n$form-feedback-icon-invalid: url(\"data:image/svg+xml,\") !default;\n// scss-docs-end form-feedback-variables\n\n// scss-docs-start form-validation-states\n$form-validation-states: (\n \"valid\": (\n \"color\": var(--#{$prefix}success-text),\n \"icon\": $form-feedback-icon-valid,\n \"tooltip-color\": #fff,\n \"tooltip-bg-color\": var(--#{$prefix}success),\n \"focus-box-shadow\": 0 0 $input-btn-focus-blur $input-focus-width rgba(var(--#{$prefix}success-rgb), $input-btn-focus-color-opacity),\n \"border-color\": var(--#{$prefix}success),\n ),\n \"invalid\": (\n \"color\": var(--#{$prefix}danger-text),\n \"icon\": $form-feedback-icon-invalid,\n \"tooltip-color\": #fff,\n \"tooltip-bg-color\": var(--#{$prefix}danger),\n \"focus-box-shadow\": 0 0 $input-btn-focus-blur $input-focus-width rgba(var(--#{$prefix}danger-rgb), $input-btn-focus-color-opacity),\n \"border-color\": var(--#{$prefix}danger),\n )\n) !default;\n// scss-docs-end form-validation-states\n\n// Z-index master list\n//\n// Warning: Avoid customizing these values. They're used for a bird's eye view\n// of components dependent on the z-axis and are designed to all work together.\n\n// scss-docs-start zindex-stack\n$zindex-dropdown: 1000 !default;\n$zindex-sticky: 1020 !default;\n$zindex-fixed: 1030 !default;\n$zindex-offcanvas-backdrop: 1040 !default;\n$zindex-offcanvas: 1045 !default;\n$zindex-modal-backdrop: 1050 !default;\n$zindex-modal: 1055 !default;\n$zindex-popover: 1070 !default;\n$zindex-tooltip: 1080 !default;\n$zindex-toast: 1090 !default;\n// scss-docs-end zindex-stack\n\n// scss-docs-start zindex-levels-map\n$zindex-levels: (\n n1: -1,\n 0: 0,\n 1: 1,\n 2: 2,\n 3: 3\n) !default;\n// scss-docs-end zindex-levels-map\n\n\n// Navs\n\n// scss-docs-start nav-variables\n$nav-link-padding-y: .5rem !default;\n$nav-link-padding-x: 1rem !default;\n$nav-link-font-size: null !default;\n$nav-link-font-weight: null !default;\n$nav-link-color: var(--#{$prefix}link-color) !default;\n$nav-link-hover-color: var(--#{$prefix}link-hover-color) !default;\n$nav-link-transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out !default;\n$nav-link-disabled-color: var(--#{$prefix}secondary-color) !default;\n\n$nav-tabs-border-color: var(--#{$prefix}border-color) !default;\n$nav-tabs-border-width: var(--#{$prefix}border-width) !default;\n$nav-tabs-border-radius: var(--#{$prefix}border-radius) !default;\n$nav-tabs-link-hover-border-color: var(--#{$prefix}secondary-bg) var(--#{$prefix}secondary-bg) $nav-tabs-border-color !default;\n$nav-tabs-link-active-color: var(--#{$prefix}emphasis-color) !default;\n$nav-tabs-link-active-bg: var(--#{$prefix}body-bg) !default;\n$nav-tabs-link-active-border-color: var(--#{$prefix}border-color) var(--#{$prefix}border-color) $nav-tabs-link-active-bg !default;\n\n$nav-pills-border-radius: $border-radius !default;\n$nav-pills-link-active-color: $component-active-color !default;\n$nav-pills-link-active-bg: $component-active-bg !default;\n// scss-docs-end nav-variables\n\n\n// Navbar\n\n// scss-docs-start navbar-variables\n$navbar-padding-y: $spacer * .5 !default;\n$navbar-padding-x: null !default;\n\n$navbar-nav-link-padding-x: .5rem !default;\n\n$navbar-brand-font-size: $font-size-lg !default;\n// Compute the navbar-brand padding-y so the navbar-brand will have the same height as navbar-text and nav-link\n$nav-link-height: $font-size-base * $line-height-base + $nav-link-padding-y * 2 !default;\n$navbar-brand-height: $navbar-brand-font-size * $line-height-base !default;\n$navbar-brand-padding-y: ($nav-link-height - $navbar-brand-height) * .5 !default;\n$navbar-brand-margin-end: 1rem !default;\n\n$navbar-toggler-padding-y: .25rem !default;\n$navbar-toggler-padding-x: .75rem !default;\n$navbar-toggler-font-size: $font-size-lg !default;\n$navbar-toggler-border-radius: $btn-border-radius !default;\n$navbar-toggler-focus-width: $btn-focus-width !default;\n$navbar-toggler-transition: box-shadow .15s ease-in-out !default;\n\n$navbar-light-color: rgba(var(--#{$prefix}emphasis-color-rgb), .65) !default;\n$navbar-light-hover-color: rgba(var(--#{$prefix}emphasis-color-rgb), .8) !default;\n$navbar-light-active-color: rgba(var(--#{$prefix}emphasis-color-rgb), 1) !default;\n$navbar-light-disabled-color: rgba(var(--#{$prefix}emphasis-color-rgb), .3) !default;\n$navbar-light-toggler-icon-bg: url(\"data:image/svg+xml,\") !default;\n$navbar-light-toggler-border-color: rgba(var(--#{$prefix}emphasis-color-rgb), .15) !default;\n$navbar-light-brand-color: $navbar-light-active-color !default;\n$navbar-light-brand-hover-color: $navbar-light-active-color !default;\n// scss-docs-end navbar-variables\n\n// scss-docs-start navbar-dark-variables\n$navbar-dark-color: rgba($white, .55) !default;\n$navbar-dark-hover-color: rgba($white, .75) !default;\n$navbar-dark-active-color: $white !default;\n$navbar-dark-disabled-color: rgba($white, .25) !default;\n$navbar-dark-toggler-icon-bg: url(\"data:image/svg+xml,\") !default;\n$navbar-dark-toggler-border-color: rgba($white, .1) !default;\n$navbar-dark-brand-color: $navbar-dark-active-color !default;\n$navbar-dark-brand-hover-color: $navbar-dark-active-color !default;\n// scss-docs-end navbar-dark-variables\n\n\n// Dropdowns\n//\n// Dropdown menu container and contents.\n\n// scss-docs-start dropdown-variables\n$dropdown-min-width: 10rem !default;\n$dropdown-padding-x: 0 !default;\n$dropdown-padding-y: .5rem !default;\n$dropdown-spacer: .125rem !default;\n$dropdown-font-size: $font-size-base !default;\n$dropdown-color: var(--#{$prefix}body-color) !default;\n$dropdown-bg: var(--#{$prefix}body-bg) !default;\n$dropdown-border-color: var(--#{$prefix}border-color-translucent) !default;\n$dropdown-border-radius: $border-radius !default;\n$dropdown-border-width: var(--#{$prefix}border-width) !default;\n$dropdown-inner-border-radius: calc($dropdown-border-radius - $dropdown-border-width) !default; // stylelint-disable-line function-disallowed-list\n$dropdown-divider-bg: $dropdown-border-color !default;\n$dropdown-divider-margin-y: $spacer * .5 !default;\n$dropdown-box-shadow: $box-shadow !default;\n\n$dropdown-link-color: var(--#{$prefix}body-color) !default;\n$dropdown-link-hover-color: $dropdown-link-color !default;\n$dropdown-link-hover-bg: var(--#{$prefix}tertiary-bg) !default;\n\n$dropdown-link-active-color: $component-active-color !default;\n$dropdown-link-active-bg: $component-active-bg !default;\n\n$dropdown-link-disabled-color: $gray-500 !default;\n\n$dropdown-item-padding-y: $spacer * .25 !default;\n$dropdown-item-padding-x: $spacer !default;\n\n$dropdown-header-color: $gray-600 !default;\n$dropdown-header-padding-x: $dropdown-item-padding-x !default;\n$dropdown-header-padding-y: $dropdown-padding-y !default;\n// fusv-disable\n$dropdown-header-padding: $dropdown-header-padding-y $dropdown-header-padding-x !default; // Deprecated in v5.2.0\n// fusv-enable\n// scss-docs-end dropdown-variables\n\n// scss-docs-start dropdown-dark-variables\n$dropdown-dark-color: $gray-300 !default;\n$dropdown-dark-bg: $gray-800 !default;\n$dropdown-dark-border-color: $dropdown-border-color !default;\n$dropdown-dark-divider-bg: $dropdown-divider-bg !default;\n$dropdown-dark-box-shadow: null !default;\n$dropdown-dark-link-color: $dropdown-dark-color !default;\n$dropdown-dark-link-hover-color: $white !default;\n$dropdown-dark-link-hover-bg: rgba($white, .15) !default;\n$dropdown-dark-link-active-color: $dropdown-link-active-color !default;\n$dropdown-dark-link-active-bg: $dropdown-link-active-bg !default;\n$dropdown-dark-link-disabled-color: $gray-500 !default;\n$dropdown-dark-header-color: $gray-500 !default;\n// scss-docs-end dropdown-dark-variables\n\n\n// Pagination\n\n// scss-docs-start pagination-variables\n$pagination-padding-y: .375rem !default;\n$pagination-padding-x: .75rem !default;\n$pagination-padding-y-sm: .25rem !default;\n$pagination-padding-x-sm: .5rem !default;\n$pagination-padding-y-lg: .75rem !default;\n$pagination-padding-x-lg: 1.5rem !default;\n\n$pagination-font-size: $font-size-base !default;\n\n$pagination-color: var(--#{$prefix}link-color) !default;\n$pagination-bg: var(--#{$prefix}body-bg) !default;\n$pagination-border-radius: var(--#{$prefix}border-radius) !default;\n$pagination-border-width: var(--#{$prefix}border-width) !default;\n$pagination-margin-start: calc($pagination-border-width * -1) !default; // stylelint-disable-line function-disallowed-list\n$pagination-border-color: var(--#{$prefix}border-color) !default;\n\n$pagination-focus-color: var(--#{$prefix}link-hover-color) !default;\n$pagination-focus-bg: var(--#{$prefix}secondary-bg) !default;\n$pagination-focus-box-shadow: $input-btn-focus-box-shadow !default;\n$pagination-focus-outline: 0 !default;\n\n$pagination-hover-color: var(--#{$prefix}link-hover-color) !default;\n$pagination-hover-bg: var(--#{$prefix}tertiary-bg) !default;\n$pagination-hover-border-color: var(--#{$prefix}border-color) !default; // Todo in v6: remove this?\n\n$pagination-active-color: $component-active-color !default;\n$pagination-active-bg: $component-active-bg !default;\n$pagination-active-border-color: $component-active-bg !default;\n\n$pagination-disabled-color: var(--#{$prefix}secondary-color) !default;\n$pagination-disabled-bg: var(--#{$prefix}secondary-bg) !default;\n$pagination-disabled-border-color: var(--#{$prefix}border-color) !default;\n\n$pagination-transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n\n$pagination-border-radius-sm: $border-radius-sm !default;\n$pagination-border-radius-lg: $border-radius-lg !default;\n// scss-docs-end pagination-variables\n\n\n// Placeholders\n\n// scss-docs-start placeholders\n$placeholder-opacity-max: .5 !default;\n$placeholder-opacity-min: .2 !default;\n// scss-docs-end placeholders\n\n// Cards\n\n// scss-docs-start card-variables\n$card-spacer-y: $spacer !default;\n$card-spacer-x: $spacer !default;\n$card-title-spacer-y: $spacer * .5 !default;\n$card-title-color: null !default;\n$card-subtitle-color: null !default;\n$card-border-width: var(--#{$prefix}border-width) !default;\n$card-border-color: var(--#{$prefix}border-color-translucent) !default;\n$card-border-radius: var(--#{$prefix}border-radius) !default;\n$card-box-shadow: null !default;\n$card-inner-border-radius: subtract($card-border-radius, $card-border-width) !default;\n$card-cap-padding-y: $card-spacer-y * .5 !default;\n$card-cap-padding-x: $card-spacer-x !default;\n$card-cap-bg: rgba(var(--#{$prefix}body-color-rgb), .03) !default;\n$card-cap-color: null !default;\n$card-height: null !default;\n$card-color: null !default;\n$card-bg: var(--#{$prefix}body-bg) !default;\n$card-img-overlay-padding: $spacer !default;\n$card-group-margin: $grid-gutter-width * .5 !default;\n// scss-docs-end card-variables\n\n// Accordion\n\n// scss-docs-start accordion-variables\n$accordion-padding-y: 1rem !default;\n$accordion-padding-x: 1.25rem !default;\n$accordion-color: var(--#{$prefix}body-color) !default; // Sass variable because of $accordion-button-icon\n$accordion-bg: var(--#{$prefix}body-bg) !default;\n$accordion-border-width: var(--#{$prefix}border-width) !default;\n$accordion-border-color: var(--#{$prefix}border-color) !default;\n$accordion-border-radius: var(--#{$prefix}border-radius) !default;\n$accordion-inner-border-radius: subtract($accordion-border-radius, $accordion-border-width) !default;\n\n$accordion-body-padding-y: $accordion-padding-y !default;\n$accordion-body-padding-x: $accordion-padding-x !default;\n\n$accordion-button-padding-y: $accordion-padding-y !default;\n$accordion-button-padding-x: $accordion-padding-x !default;\n$accordion-button-color: var(--#{$prefix}body-color) !default;\n$accordion-button-bg: var(--#{$prefix}accordion-bg) !default;\n$accordion-transition: $btn-transition, border-radius .15s ease !default;\n$accordion-button-active-bg: var(--#{$prefix}primary-bg-subtle) !default;\n$accordion-button-active-color: var(--#{$prefix}primary-text) !default;\n\n$accordion-button-focus-border-color: $input-focus-border-color !default;\n$accordion-button-focus-box-shadow: $btn-focus-box-shadow !default;\n\n$accordion-icon-width: 1.25rem !default;\n$accordion-icon-color: $body-color !default;\n$accordion-icon-active-color: $primary-text !default;\n$accordion-icon-transition: transform .2s ease-in-out !default;\n$accordion-icon-transform: rotate(-180deg) !default;\n\n$accordion-button-icon: url(\"data:image/svg+xml,\") !default;\n$accordion-button-active-icon: url(\"data:image/svg+xml,\") !default;\n// scss-docs-end accordion-variables\n\n// Tooltips\n\n// scss-docs-start tooltip-variables\n$tooltip-font-size: $font-size-sm !default;\n$tooltip-max-width: 200px !default;\n$tooltip-color: var(--#{$prefix}body-bg) !default;\n$tooltip-bg: var(--#{$prefix}emphasis-color) !default;\n$tooltip-border-radius: var(--#{$prefix}border-radius) !default;\n$tooltip-opacity: .9 !default;\n$tooltip-padding-y: $spacer * .25 !default;\n$tooltip-padding-x: $spacer * .5 !default;\n$tooltip-margin: null !default; // TODO: remove this in v6\n\n$tooltip-arrow-width: .8rem !default;\n$tooltip-arrow-height: .4rem !default;\n// fusv-disable\n$tooltip-arrow-color: null !default; // Deprecated in Bootstrap 5.2.0 for CSS variables\n// fusv-enable\n// scss-docs-end tooltip-variables\n\n// Form tooltips must come after regular tooltips\n// scss-docs-start tooltip-feedback-variables\n$form-feedback-tooltip-padding-y: $tooltip-padding-y !default;\n$form-feedback-tooltip-padding-x: $tooltip-padding-x !default;\n$form-feedback-tooltip-font-size: $tooltip-font-size !default;\n$form-feedback-tooltip-line-height: null !default;\n$form-feedback-tooltip-opacity: $tooltip-opacity !default;\n$form-feedback-tooltip-border-radius: $tooltip-border-radius !default;\n// scss-docs-end tooltip-feedback-variables\n\n\n// Popovers\n\n// scss-docs-start popover-variables\n$popover-font-size: $font-size-sm !default;\n$popover-bg: var(--#{$prefix}body-bg) !default;\n$popover-max-width: 276px !default;\n$popover-border-width: var(--#{$prefix}border-width) !default;\n$popover-border-color: var(--#{$prefix}border-color-translucent) !default;\n$popover-border-radius: var(--#{$prefix}border-radius-lg) !default;\n$popover-inner-border-radius: calc($popover-border-radius - $popover-border-width) !default; // stylelint-disable-line function-disallowed-list\n$popover-box-shadow: $box-shadow !default;\n\n$popover-header-font-size: $font-size-base !default;\n$popover-header-bg: var(--#{$prefix}secondary-bg) !default;\n$popover-header-color: $headings-color !default;\n$popover-header-padding-y: .5rem !default;\n$popover-header-padding-x: $spacer !default;\n\n$popover-body-color: var(--#{$prefix}body-color) !default;\n$popover-body-padding-y: $spacer !default;\n$popover-body-padding-x: $spacer !default;\n\n$popover-arrow-width: 1rem !default;\n$popover-arrow-height: .5rem !default;\n// scss-docs-end popover-variables\n\n// fusv-disable\n// Deprecated in Bootstrap 5.2.0 for CSS variables\n$popover-arrow-color: $popover-bg !default;\n$popover-arrow-outer-color: var(--#{$prefix}border-color-translucent) !default;\n// fusv-enable\n\n\n// Toasts\n\n// scss-docs-start toast-variables\n$toast-max-width: 350px !default;\n$toast-padding-x: .75rem !default;\n$toast-padding-y: .5rem !default;\n$toast-font-size: .875rem !default;\n$toast-color: null !default;\n$toast-background-color: rgba(var(--#{$prefix}body-bg-rgb), .85) !default;\n$toast-border-width: var(--#{$prefix}border-width) !default;\n$toast-border-color: var(--#{$prefix}border-color-translucent) !default;\n$toast-border-radius: var(--#{$prefix}border-radius) !default;\n$toast-box-shadow: var(--#{$prefix}box-shadow) !default;\n$toast-spacing: $container-padding-x !default;\n\n$toast-header-color: var(--#{$prefix}secondary-color) !default;\n$toast-header-background-color: rgba(var(--#{$prefix}body-bg-rgb), .85) !default;\n$toast-header-border-color: $toast-border-color !default;\n// scss-docs-end toast-variables\n\n\n// Badges\n\n// scss-docs-start badge-variables\n$badge-font-size: .75em !default;\n$badge-font-weight: $font-weight-bold !default;\n$badge-color: $white !default;\n$badge-padding-y: .35em !default;\n$badge-padding-x: .65em !default;\n$badge-border-radius: $border-radius !default;\n// scss-docs-end badge-variables\n\n\n// Modals\n\n// scss-docs-start modal-variables\n$modal-inner-padding: $spacer !default;\n\n$modal-footer-margin-between: .5rem !default;\n\n$modal-dialog-margin: .5rem !default;\n$modal-dialog-margin-y-sm-up: 1.75rem !default;\n\n$modal-title-line-height: $line-height-base !default;\n\n$modal-content-color: null !default;\n$modal-content-bg: var(--#{$prefix}body-bg) !default;\n$modal-content-border-color: var(--#{$prefix}border-color-translucent) !default;\n$modal-content-border-width: var(--#{$prefix}border-width) !default;\n$modal-content-border-radius: var(--#{$prefix}border-radius-lg) !default;\n$modal-content-inner-border-radius: subtract($modal-content-border-radius, $modal-content-border-width) !default;\n$modal-content-box-shadow-xs: $box-shadow-sm !default;\n$modal-content-box-shadow-sm-up: $box-shadow !default;\n\n$modal-backdrop-bg: $black !default;\n$modal-backdrop-opacity: .5 !default;\n\n$modal-header-border-color: var(--#{$prefix}border-color) !default;\n$modal-header-border-width: $modal-content-border-width !default;\n$modal-header-padding-y: $modal-inner-padding !default;\n$modal-header-padding-x: $modal-inner-padding !default;\n$modal-header-padding: $modal-header-padding-y $modal-header-padding-x !default; // Keep this for backwards compatibility\n\n$modal-footer-bg: null !default;\n$modal-footer-border-color: $modal-header-border-color !default;\n$modal-footer-border-width: $modal-header-border-width !default;\n\n$modal-sm: 300px !default;\n$modal-md: 500px !default;\n$modal-lg: 800px !default;\n$modal-xl: 1140px !default;\n\n$modal-fade-transform: translate(0, -50px) !default;\n$modal-show-transform: none !default;\n$modal-transition: transform .3s ease-out !default;\n$modal-scale-transform: scale(1.02) !default;\n// scss-docs-end modal-variables\n\n\n// Alerts\n//\n// Define alert colors, border radius, and padding.\n\n// scss-docs-start alert-variables\n$alert-padding-y: $spacer !default;\n$alert-padding-x: $spacer !default;\n$alert-margin-bottom: 1rem !default;\n$alert-border-radius: $border-radius !default;\n$alert-link-font-weight: $font-weight-bold !default;\n$alert-border-width: var(--#{$prefix}border-width) !default;\n$alert-bg-scale: -80% !default;\n$alert-border-scale: -70% !default;\n$alert-color-scale: 40% !default;\n$alert-dismissible-padding-r: $alert-padding-x * 3 !default; // 3x covers width of x plus default padding on either side\n// scss-docs-end alert-variables\n\n// fusv-disable\n$alert-bg-scale: -80% !default; // Deprecated in v5.2.0, to be removed in v6\n$alert-border-scale: -70% !default; // Deprecated in v5.2.0, to be removed in v6\n$alert-color-scale: 40% !default; // Deprecated in v5.2.0, to be removed in v6\n// fusv-enable\n\n// Progress bars\n\n// scss-docs-start progress-variables\n$progress-height: 1rem !default;\n$progress-font-size: $font-size-base * .75 !default;\n$progress-bg: var(--#{$prefix}secondary-bg) !default;\n$progress-border-radius: var(--#{$prefix}border-radius) !default;\n$progress-box-shadow: var(--#{$prefix}box-shadow-inset) !default;\n$progress-bar-color: $white !default;\n$progress-bar-bg: $primary !default;\n$progress-bar-animation-timing: 1s linear infinite !default;\n$progress-bar-transition: width .6s ease !default;\n// scss-docs-end progress-variables\n\n\n// List group\n\n// scss-docs-start list-group-variables\n$list-group-color: var(--#{$prefix}body-color) !default;\n$list-group-bg: var(--#{$prefix}body-bg) !default;\n$list-group-border-color: var(--#{$prefix}border-color) !default;\n$list-group-border-width: var(--#{$prefix}border-width) !default;\n$list-group-border-radius: var(--#{$prefix}border-radius) !default;\n\n$list-group-item-padding-y: $spacer * .5 !default;\n$list-group-item-padding-x: $spacer !default;\n// fusv-disable\n$list-group-item-bg-scale: -80% !default; // Deprecated in v5.3.0\n$list-group-item-color-scale: 40% !default; // Deprecated in v5.3.0\n// fusv-enable\n\n$list-group-hover-bg: var(--#{$prefix}tertiary-bg) !default;\n$list-group-active-color: $component-active-color !default;\n$list-group-active-bg: $component-active-bg !default;\n$list-group-active-border-color: $list-group-active-bg !default;\n\n$list-group-disabled-color: var(--#{$prefix}secondary-color) !default;\n$list-group-disabled-bg: $list-group-bg !default;\n\n$list-group-action-color: var(--#{$prefix}secondary-color) !default;\n$list-group-action-hover-color: var(--#{$prefix}emphasis-color) !default;\n\n$list-group-action-active-color: var(--#{$prefix}body-color) !default;\n$list-group-action-active-bg: var(--#{$prefix}secondary-bg) !default;\n// scss-docs-end list-group-variables\n\n\n// Image thumbnails\n\n// scss-docs-start thumbnail-variables\n$thumbnail-padding: .25rem !default;\n$thumbnail-bg: var(--#{$prefix}body-bg) !default;\n$thumbnail-border-width: var(--#{$prefix}border-width) !default;\n$thumbnail-border-color: var(--#{$prefix}border-color) !default;\n$thumbnail-border-radius: var(--#{$prefix}border-radius) !default;\n$thumbnail-box-shadow: var(--#{$prefix}box-shadow-sm) !default;\n// scss-docs-end thumbnail-variables\n\n\n// Figures\n\n// scss-docs-start figure-variables\n$figure-caption-font-size: $small-font-size !default;\n$figure-caption-color: var(--#{$prefix}secondary-color) !default;\n// scss-docs-end figure-variables\n\n\n// Breadcrumbs\n\n// scss-docs-start breadcrumb-variables\n$breadcrumb-font-size: null !default;\n$breadcrumb-padding-y: 0 !default;\n$breadcrumb-padding-x: 0 !default;\n$breadcrumb-item-padding-x: .5rem !default;\n$breadcrumb-margin-bottom: 1rem !default;\n$breadcrumb-bg: null !default;\n$breadcrumb-divider-color: var(--#{$prefix}secondary-color) !default;\n$breadcrumb-active-color: var(--#{$prefix}secondary-color) !default;\n$breadcrumb-divider: quote(\"/\") !default;\n$breadcrumb-divider-flipped: $breadcrumb-divider !default;\n$breadcrumb-border-radius: null !default;\n// scss-docs-end breadcrumb-variables\n\n// Carousel\n\n// scss-docs-start carousel-variables\n$carousel-control-color: $white !default;\n$carousel-control-width: 15% !default;\n$carousel-control-opacity: .5 !default;\n$carousel-control-hover-opacity: .9 !default;\n$carousel-control-transition: opacity .15s ease !default;\n\n$carousel-indicator-width: 30px !default;\n$carousel-indicator-height: 3px !default;\n$carousel-indicator-hit-area-height: 10px !default;\n$carousel-indicator-spacer: 3px !default;\n$carousel-indicator-opacity: .5 !default;\n$carousel-indicator-active-bg: $white !default;\n$carousel-indicator-active-opacity: 1 !default;\n$carousel-indicator-transition: opacity .6s ease !default;\n\n$carousel-caption-width: 70% !default;\n$carousel-caption-color: $white !default;\n$carousel-caption-padding-y: 1.25rem !default;\n$carousel-caption-spacer: 1.25rem !default;\n\n$carousel-control-icon-width: 2rem !default;\n\n$carousel-control-prev-icon-bg: url(\"data:image/svg+xml,\") !default;\n$carousel-control-next-icon-bg: url(\"data:image/svg+xml,\") !default;\n\n$carousel-transition-duration: .6s !default;\n$carousel-transition: transform $carousel-transition-duration ease-in-out !default; // Define transform transition first if using multiple transitions (e.g., `transform 2s ease, opacity .5s ease-out`)\n// scss-docs-end carousel-variables\n\n// scss-docs-start carousel-dark-variables\n$carousel-dark-indicator-active-bg: $black !default;\n$carousel-dark-caption-color: $black !default;\n$carousel-dark-control-icon-filter: invert(1) grayscale(100) !default;\n// scss-docs-end carousel-dark-variables\n\n\n// Spinners\n\n// scss-docs-start spinner-variables\n$spinner-width: 2rem !default;\n$spinner-height: $spinner-width !default;\n$spinner-vertical-align: -.125em !default;\n$spinner-border-width: .25em !default;\n$spinner-animation-speed: .75s !default;\n\n$spinner-width-sm: 1rem !default;\n$spinner-height-sm: $spinner-width-sm !default;\n$spinner-border-width-sm: .2em !default;\n// scss-docs-end spinner-variables\n\n\n// Close\n\n// scss-docs-start close-variables\n$btn-close-width: 1em !default;\n$btn-close-height: $btn-close-width !default;\n$btn-close-padding-x: .25em !default;\n$btn-close-padding-y: $btn-close-padding-x !default;\n$btn-close-color: $black !default;\n$btn-close-bg: url(\"data:image/svg+xml,\") !default;\n$btn-close-focus-shadow: $input-btn-focus-box-shadow !default;\n$btn-close-opacity: .5 !default;\n$btn-close-hover-opacity: .75 !default;\n$btn-close-focus-opacity: 1 !default;\n$btn-close-disabled-opacity: .25 !default;\n$btn-close-white-filter: invert(1) grayscale(100%) brightness(200%) !default;\n// scss-docs-end close-variables\n\n\n// Offcanvas\n\n// scss-docs-start offcanvas-variables\n$offcanvas-padding-y: $modal-inner-padding !default;\n$offcanvas-padding-x: $modal-inner-padding !default;\n$offcanvas-horizontal-width: 400px !default;\n$offcanvas-vertical-height: 30vh !default;\n$offcanvas-transition-duration: .3s !default;\n$offcanvas-border-color: $modal-content-border-color !default;\n$offcanvas-border-width: $modal-content-border-width !default;\n$offcanvas-title-line-height: $modal-title-line-height !default;\n$offcanvas-bg-color: var(--#{$prefix}body-bg) !default;\n$offcanvas-color: var(--#{$prefix}body-color) !default;\n$offcanvas-box-shadow: $modal-content-box-shadow-xs !default;\n$offcanvas-backdrop-bg: $modal-backdrop-bg !default;\n$offcanvas-backdrop-opacity: $modal-backdrop-opacity !default;\n// scss-docs-end offcanvas-variables\n\n// Code\n\n$code-font-size: $small-font-size !default;\n$code-color: $pink !default;\n\n$kbd-padding-y: .1875rem !default;\n$kbd-padding-x: .375rem !default;\n$kbd-font-size: $code-font-size !default;\n$kbd-color: var(--#{$prefix}body-bg) !default;\n$kbd-bg: var(--#{$prefix}body-color) !default;\n$nested-kbd-font-weight: null !default; // Deprecated in v5.2.0, removing in v6\n\n$pre-color: null !default;\n","// Row\n//\n// Rows contain your columns.\n\n@if $enable-grid-classes {\n .row {\n @include make-row();\n\n > * {\n @include make-col-ready();\n }\n }\n}\n\n@if $enable-cssgrid {\n .grid {\n display: grid;\n grid-template-rows: repeat(var(--#{$prefix}rows, 1), 1fr);\n grid-template-columns: repeat(var(--#{$prefix}columns, #{$grid-columns}), 1fr);\n gap: var(--#{$prefix}gap, #{$grid-gutter-width});\n\n @include make-cssgrid();\n }\n}\n\n\n// Columns\n//\n// Common styles for small and large grid columns\n\n@if $enable-grid-classes {\n @include make-grid-columns();\n}\n","// Grid system\n//\n// Generate semantic grid columns with these mixins.\n\n@mixin make-row($gutter: $grid-gutter-width) {\n --#{$prefix}gutter-x: #{$gutter};\n --#{$prefix}gutter-y: 0;\n display: flex;\n flex-wrap: wrap;\n // TODO: Revisit calc order after https://github.com/react-bootstrap/react-bootstrap/issues/6039 is fixed\n margin-top: calc(-1 * var(--#{$prefix}gutter-y)); // stylelint-disable-line function-disallowed-list\n margin-right: calc(-.5 * var(--#{$prefix}gutter-x)); // stylelint-disable-line function-disallowed-list\n margin-left: calc(-.5 * var(--#{$prefix}gutter-x)); // stylelint-disable-line function-disallowed-list\n}\n\n@mixin make-col-ready() {\n // Add box sizing if only the grid is loaded\n box-sizing: if(variable-exists(include-column-box-sizing) and $include-column-box-sizing, border-box, null);\n // Prevent columns from becoming too narrow when at smaller grid tiers by\n // always setting `width: 100%;`. This works because we set the width\n // later on to override this initial width.\n flex-shrink: 0;\n width: 100%;\n max-width: 100%; // Prevent `.col-auto`, `.col` (& responsive variants) from breaking out the grid\n padding-right: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n padding-left: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n margin-top: var(--#{$prefix}gutter-y);\n}\n\n@mixin make-col($size: false, $columns: $grid-columns) {\n @if $size {\n flex: 0 0 auto;\n width: percentage(divide($size, $columns));\n\n } @else {\n flex: 1 1 0;\n max-width: 100%;\n }\n}\n\n@mixin make-col-auto() {\n flex: 0 0 auto;\n width: auto;\n}\n\n@mixin make-col-offset($size, $columns: $grid-columns) {\n $num: divide($size, $columns);\n margin-left: if($num == 0, 0, percentage($num));\n}\n\n// Row columns\n//\n// Specify on a parent element(e.g., .row) to force immediate children into NN\n// number of columns. Supports wrapping to new lines, but does not do a Masonry\n// style grid.\n@mixin row-cols($count) {\n > * {\n flex: 0 0 auto;\n width: divide(100%, $count);\n }\n}\n\n// Framework grid generation\n//\n// Used only by Bootstrap to generate the correct number of grid classes given\n// any value of `$grid-columns`.\n\n@mixin make-grid-columns($columns: $grid-columns, $gutter: $grid-gutter-width, $breakpoints: $grid-breakpoints) {\n @each $breakpoint in map-keys($breakpoints) {\n $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n @include media-breakpoint-up($breakpoint, $breakpoints) {\n // Provide basic `.col-{bp}` classes for equal-width flexbox columns\n .col#{$infix} {\n flex: 1 0 0%; // Flexbugs #4: https://github.com/philipwalton/flexbugs#flexbug-4\n }\n\n .row-cols#{$infix}-auto > * {\n @include make-col-auto();\n }\n\n @if $grid-row-columns > 0 {\n @for $i from 1 through $grid-row-columns {\n .row-cols#{$infix}-#{$i} {\n @include row-cols($i);\n }\n }\n }\n\n .col#{$infix}-auto {\n @include make-col-auto();\n }\n\n @if $columns > 0 {\n @for $i from 1 through $columns {\n .col#{$infix}-#{$i} {\n @include make-col($i, $columns);\n }\n }\n\n // `$columns - 1` because offsetting by the width of an entire row isn't possible\n @for $i from 0 through ($columns - 1) {\n @if not ($infix == \"\" and $i == 0) { // Avoid emitting useless .offset-0\n .offset#{$infix}-#{$i} {\n @include make-col-offset($i, $columns);\n }\n }\n }\n }\n\n // Gutters\n //\n // Make use of `.g-*`, `.gx-*` or `.gy-*` utilities to change spacing between the columns.\n @each $key, $value in $gutters {\n .g#{$infix}-#{$key},\n .gx#{$infix}-#{$key} {\n --#{$prefix}gutter-x: #{$value};\n }\n\n .g#{$infix}-#{$key},\n .gy#{$infix}-#{$key} {\n --#{$prefix}gutter-y: #{$value};\n }\n }\n }\n }\n}\n\n@mixin make-cssgrid($columns: $grid-columns, $breakpoints: $grid-breakpoints) {\n @each $breakpoint in map-keys($breakpoints) {\n $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n @include media-breakpoint-up($breakpoint, $breakpoints) {\n @if $columns > 0 {\n @for $i from 1 through $columns {\n .g-col#{$infix}-#{$i} {\n grid-column: auto / span $i;\n }\n }\n\n // Start with `1` because `0` is and invalid value.\n // Ends with `$columns - 1` because offsetting by the width of an entire row isn't possible.\n @for $i from 1 through ($columns - 1) {\n .g-start#{$infix}-#{$i} {\n grid-column-start: $i;\n }\n }\n }\n }\n }\n}\n","// Utility generator\n// Used to generate utilities & print utilities\n@mixin generate-utility($utility, $infix, $is-rfs-media-query: false) {\n $values: map-get($utility, values);\n\n // If the values are a list or string, convert it into a map\n @if type-of($values) == \"string\" or type-of(nth($values, 1)) != \"list\" {\n $values: zip($values, $values);\n }\n\n @each $key, $value in $values {\n $properties: map-get($utility, property);\n\n // Multiple properties are possible, for example with vertical or horizontal margins or paddings\n @if type-of($properties) == \"string\" {\n $properties: append((), $properties);\n }\n\n // Use custom class if present\n $property-class: if(map-has-key($utility, class), map-get($utility, class), nth($properties, 1));\n $property-class: if($property-class == null, \"\", $property-class);\n\n // Use custom CSS variable name if present, otherwise default to `class`\n $css-variable-name: if(map-has-key($utility, css-variable-name), map-get($utility, css-variable-name), map-get($utility, class));\n\n // State params to generate pseudo-classes\n $state: if(map-has-key($utility, state), map-get($utility, state), ());\n\n $infix: if($property-class == \"\" and str-slice($infix, 1, 1) == \"-\", str-slice($infix, 2), $infix);\n\n // Don't prefix if value key is null (e.g. with shadow class)\n $property-class-modifier: if($key, if($property-class == \"\" and $infix == \"\", \"\", \"-\") + $key, \"\");\n\n @if map-get($utility, rfs) {\n // Inside the media query\n @if $is-rfs-media-query {\n $val: rfs-value($value);\n\n // Do not render anything if fluid and non fluid values are the same\n $value: if($val == rfs-fluid-value($value), null, $val);\n }\n @else {\n $value: rfs-fluid-value($value);\n }\n }\n\n $is-css-var: map-get($utility, css-var);\n $is-local-vars: map-get($utility, local-vars);\n $is-rtl: map-get($utility, rtl);\n\n @if $value != null {\n @if $is-rtl == false {\n /* rtl:begin:remove */\n }\n\n @if $is-css-var {\n .#{$property-class + $infix + $property-class-modifier} {\n --#{$prefix}#{$css-variable-name}: #{$value};\n }\n\n @each $pseudo in $state {\n .#{$property-class + $infix + $property-class-modifier}-#{$pseudo}:#{$pseudo} {\n --#{$prefix}#{$css-variable-name}: #{$value};\n }\n }\n } @else {\n .#{$property-class + $infix + $property-class-modifier} {\n @each $property in $properties {\n @if $is-local-vars {\n @each $local-var, $variable in $is-local-vars {\n --#{$prefix}#{$local-var}: #{$variable};\n }\n }\n #{$property}: $value if($enable-important-utilities, !important, null);\n }\n }\n\n @each $pseudo in $state {\n .#{$property-class + $infix + $property-class-modifier}-#{$pseudo}:#{$pseudo} {\n @each $property in $properties {\n @if $is-local-vars {\n @each $local-var, $variable in $is-local-vars {\n --#{$prefix}#{$local-var}: #{$variable};\n }\n }\n #{$property}: $value if($enable-important-utilities, !important, null);\n }\n }\n }\n }\n\n @if $is-rtl == false {\n /* rtl:end:remove */\n }\n }\n }\n}\n","// Loop over each breakpoint\n@each $breakpoint in map-keys($grid-breakpoints) {\n\n // Generate media query if needed\n @include media-breakpoint-up($breakpoint) {\n $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n // Loop over each utility property\n @each $key, $utility in $utilities {\n // The utility can be disabled with `false`, thus check if the utility is a map first\n // Only proceed if responsive media queries are enabled or if it's the base media query\n @if type-of($utility) == \"map\" and (map-get($utility, responsive) or $infix == \"\") {\n @include generate-utility($utility, $infix);\n }\n }\n }\n}\n\n// RFS rescaling\n@media (min-width: $rfs-mq-value) {\n @each $breakpoint in map-keys($grid-breakpoints) {\n $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n @if (map-get($grid-breakpoints, $breakpoint) < $rfs-breakpoint) {\n // Loop over each utility property\n @each $key, $utility in $utilities {\n // The utility can be disabled with `false`, thus check if the utility is a map first\n // Only proceed if responsive media queries are enabled or if it's the base media query\n @if type-of($utility) == \"map\" and map-get($utility, rfs) and (map-get($utility, responsive) or $infix == \"\") {\n @include generate-utility($utility, $infix, true);\n }\n }\n }\n }\n}\n\n\n// Print utilities\n@media print {\n @each $key, $utility in $utilities {\n // The utility can be disabled with `false`, thus check if the utility is a map first\n // Then check if the utility needs print styles\n @if type-of($utility) == \"map\" and map-get($utility, print) == true {\n @include generate-utility($utility, \"-print\");\n }\n }\n}\n"]} \ No newline at end of file diff --git a/site/templates/vendors/Bootstrap/css/bootstrap-grid.min.css b/site/templates/vendors/Bootstrap/css/bootstrap-grid.min.css deleted file mode 100644 index d6c50ce..0000000 --- a/site/templates/vendors/Bootstrap/css/bootstrap-grid.min.css +++ /dev/null @@ -1,6 +0,0 @@ -/*! - * Bootstrap Grid v5.3.0-alpha1 (https://getbootstrap.com/) - * Copyright 2011-2022 The Bootstrap Authors - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - */:root,[data-bs-theme=light]{--bs-blue:#0d6efd;--bs-indigo:#6610f2;--bs-purple:#6f42c1;--bs-pink:#d63384;--bs-red:#dc3545;--bs-orange:#fd7e14;--bs-yellow:#ffc107;--bs-green:#198754;--bs-teal:#20c997;--bs-cyan:#0dcaf0;--bs-black:#000;--bs-white:#fff;--bs-gray:#6c757d;--bs-gray-dark:#343a40;--bs-gray-100:#f8f9fa;--bs-gray-200:#e9ecef;--bs-gray-300:#dee2e6;--bs-gray-400:#ced4da;--bs-gray-500:#adb5bd;--bs-gray-600:#6c757d;--bs-gray-700:#495057;--bs-gray-800:#343a40;--bs-gray-900:#212529;--bs-primary:#0d6efd;--bs-secondary:#6c757d;--bs-success:#198754;--bs-info:#0dcaf0;--bs-warning:#ffc107;--bs-danger:#dc3545;--bs-light:#f8f9fa;--bs-dark:#212529;--bs-primary-rgb:13,110,253;--bs-secondary-rgb:108,117,125;--bs-success-rgb:25,135,84;--bs-info-rgb:13,202,240;--bs-warning-rgb:255,193,7;--bs-danger-rgb:220,53,69;--bs-light-rgb:248,249,250;--bs-dark-rgb:33,37,41;--bs-primary-text:#0a58ca;--bs-secondary-text:#6c757d;--bs-success-text:#146c43;--bs-info-text:#087990;--bs-warning-text:#997404;--bs-danger-text:#b02a37;--bs-light-text:#6c757d;--bs-dark-text:#495057;--bs-primary-bg-subtle:#cfe2ff;--bs-secondary-bg-subtle:#f8f9fa;--bs-success-bg-subtle:#d1e7dd;--bs-info-bg-subtle:#cff4fc;--bs-warning-bg-subtle:#fff3cd;--bs-danger-bg-subtle:#f8d7da;--bs-light-bg-subtle:#fcfcfd;--bs-dark-bg-subtle:#ced4da;--bs-primary-border-subtle:#9ec5fe;--bs-secondary-border-subtle:#e9ecef;--bs-success-border-subtle:#a3cfbb;--bs-info-border-subtle:#9eeaf9;--bs-warning-border-subtle:#ffe69c;--bs-danger-border-subtle:#f1aeb5;--bs-light-border-subtle:#e9ecef;--bs-dark-border-subtle:#adb5bd;--bs-white-rgb:255,255,255;--bs-black-rgb:0,0,0;--bs-body-color-rgb:33,37,41;--bs-body-bg-rgb:255,255,255;--bs-font-sans-serif:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue","Noto Sans","Liberation Sans",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--bs-font-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--bs-gradient:linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));--bs-body-font-family:var(--bs-font-sans-serif);--bs-body-font-size:1rem;--bs-body-font-weight:400;--bs-body-line-height:1.5;--bs-body-color:#212529;--bs-emphasis-color:#000;--bs-emphasis-color-rgb:0,0,0;--bs-secondary-color:rgba(33, 37, 41, 0.75);--bs-secondary-color-rgb:33,37,41;--bs-secondary-bg:#e9ecef;--bs-secondary-bg-rgb:233,236,239;--bs-tertiary-color:rgba(33, 37, 41, 0.5);--bs-tertiary-color-rgb:33,37,41;--bs-tertiary-bg:#f8f9fa;--bs-tertiary-bg-rgb:248,249,250;--bs-body-bg:#fff;--bs-body-bg-rgb:255,255,255;--bs-link-color:#0d6efd;--bs-link-color-rgb:13,110,253;--bs-link-decoration:underline;--bs-link-hover-color:#0a58ca;--bs-link-hover-color-rgb:10,88,202;--bs-code-color:#d63384;--bs-highlight-bg:#fff3cd;--bs-border-width:1px;--bs-border-style:solid;--bs-border-color:#dee2e6;--bs-border-color-translucent:rgba(0, 0, 0, 0.175);--bs-border-radius:0.375rem;--bs-border-radius-sm:0.25rem;--bs-border-radius-lg:0.5rem;--bs-border-radius-xl:1rem;--bs-border-radius-2xl:2rem;--bs-border-radius-pill:50rem;--bs-box-shadow:0 0.5rem 1rem rgba(var(--bs-body-color-rgb), 0.15);--bs-box-shadow-sm:0 0.125rem 0.25rem rgba(var(--bs-body-color-rgb), 0.075);--bs-box-shadow-lg:0 1rem 3rem rgba(var(--bs-body-color-rgb), 0.175);--bs-box-shadow-inset:inset 0 1px 2px rgba(var(--bs-body-color-rgb), 0.075);--bs-emphasis-color:#000;--bs-form-control-bg:var(--bs-body-bg);--bs-form-control-disabled-bg:var(--bs-secondary-bg);--bs-highlight-bg:#fff3cd;--bs-breakpoint-xs:0;--bs-breakpoint-sm:576px;--bs-breakpoint-md:768px;--bs-breakpoint-lg:992px;--bs-breakpoint-xl:1200px;--bs-breakpoint-xxl:1400px}[data-bs-theme=dark]{--bs-body-color:#adb5bd;--bs-body-color-rgb:173,181,189;--bs-body-bg:#212529;--bs-body-bg-rgb:33,37,41;--bs-emphasis-color:#f8f9fa;--bs-emphasis-color-rgb:248,249,250;--bs-secondary-color:rgba(173, 181, 189, 0.75);--bs-secondary-color-rgb:173,181,189;--bs-secondary-bg:#343a40;--bs-secondary-bg-rgb:52,58,64;--bs-tertiary-color:rgba(173, 181, 189, 0.5);--bs-tertiary-color-rgb:173,181,189;--bs-tertiary-bg:#2b3035;--bs-tertiary-bg-rgb:43,48,53;--bs-emphasis-color:#fff;--bs-primary-text:#6ea8fe;--bs-secondary-text:#dee2e6;--bs-success-text:#75b798;--bs-info-text:#6edff6;--bs-warning-text:#ffda6a;--bs-danger-text:#ea868f;--bs-light-text:#f8f9fa;--bs-dark-text:#dee2e6;--bs-primary-bg-subtle:#031633;--bs-secondary-bg-subtle:#212529;--bs-success-bg-subtle:#051b11;--bs-info-bg-subtle:#032830;--bs-warning-bg-subtle:#332701;--bs-danger-bg-subtle:#2c0b0e;--bs-light-bg-subtle:#343a40;--bs-dark-bg-subtle:#1a1d20;--bs-primary-border-subtle:#084298;--bs-secondary-border-subtle:#495057;--bs-success-border-subtle:#0f5132;--bs-info-border-subtle:#055160;--bs-warning-border-subtle:#664d03;--bs-danger-border-subtle:#842029;--bs-light-border-subtle:#495057;--bs-dark-border-subtle:#343a40;--bs-heading-color:#fff;--bs-link-color:#6ea8fe;--bs-link-hover-color:#9ec5fe;--bs-link-color-rgb:110,168,254;--bs-link-hover-color-rgb:158,197,254;--bs-code-color:#e685b5;--bs-border-color:#495057;--bs-border-color-translucent:rgba(255, 255, 255, 0.15)}.container,.container-fluid,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{--bs-gutter-x:1.5rem;--bs-gutter-y:0;width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-right:auto;margin-left:auto}@media (min-width:576px){.container,.container-sm{max-width:540px}}@media (min-width:768px){.container,.container-md,.container-sm{max-width:720px}}@media (min-width:992px){.container,.container-lg,.container-md,.container-sm{max-width:960px}}@media (min-width:1200px){.container,.container-lg,.container-md,.container-sm,.container-xl{max-width:1140px}}@media (min-width:1400px){.container,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{max-width:1320px}}.row{--bs-gutter-x:1.5rem;--bs-gutter-y:0;display:flex;flex-wrap:wrap;margin-top:calc(-1 * var(--bs-gutter-y));margin-right:calc(-.5 * var(--bs-gutter-x));margin-left:calc(-.5 * var(--bs-gutter-x))}.row>*{box-sizing:border-box;flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-top:var(--bs-gutter-y)}.col{flex:1 0 0%}.row-cols-auto>*{flex:0 0 auto;width:auto}.row-cols-1>*{flex:0 0 auto;width:100%}.row-cols-2>*{flex:0 0 auto;width:50%}.row-cols-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-4>*{flex:0 0 auto;width:25%}.row-cols-5>*{flex:0 0 auto;width:20%}.row-cols-6>*{flex:0 0 auto;width:16.6666666667%}.col-auto{flex:0 0 auto;width:auto}.col-1{flex:0 0 auto;width:8.33333333%}.col-2{flex:0 0 auto;width:16.66666667%}.col-3{flex:0 0 auto;width:25%}.col-4{flex:0 0 auto;width:33.33333333%}.col-5{flex:0 0 auto;width:41.66666667%}.col-6{flex:0 0 auto;width:50%}.col-7{flex:0 0 auto;width:58.33333333%}.col-8{flex:0 0 auto;width:66.66666667%}.col-9{flex:0 0 auto;width:75%}.col-10{flex:0 0 auto;width:83.33333333%}.col-11{flex:0 0 auto;width:91.66666667%}.col-12{flex:0 0 auto;width:100%}.offset-1{margin-left:8.33333333%}.offset-2{margin-left:16.66666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.33333333%}.offset-5{margin-left:41.66666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.33333333%}.offset-8{margin-left:66.66666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.33333333%}.offset-11{margin-left:91.66666667%}.g-0,.gx-0{--bs-gutter-x:0}.g-0,.gy-0{--bs-gutter-y:0}.g-1,.gx-1{--bs-gutter-x:0.25rem}.g-1,.gy-1{--bs-gutter-y:0.25rem}.g-2,.gx-2{--bs-gutter-x:0.5rem}.g-2,.gy-2{--bs-gutter-y:0.5rem}.g-3,.gx-3{--bs-gutter-x:1rem}.g-3,.gy-3{--bs-gutter-y:1rem}.g-4,.gx-4{--bs-gutter-x:1.5rem}.g-4,.gy-4{--bs-gutter-y:1.5rem}.g-5,.gx-5{--bs-gutter-x:3rem}.g-5,.gy-5{--bs-gutter-y:3rem}@media (min-width:576px){.col-sm{flex:1 0 0%}.row-cols-sm-auto>*{flex:0 0 auto;width:auto}.row-cols-sm-1>*{flex:0 0 auto;width:100%}.row-cols-sm-2>*{flex:0 0 auto;width:50%}.row-cols-sm-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-sm-4>*{flex:0 0 auto;width:25%}.row-cols-sm-5>*{flex:0 0 auto;width:20%}.row-cols-sm-6>*{flex:0 0 auto;width:16.6666666667%}.col-sm-auto{flex:0 0 auto;width:auto}.col-sm-1{flex:0 0 auto;width:8.33333333%}.col-sm-2{flex:0 0 auto;width:16.66666667%}.col-sm-3{flex:0 0 auto;width:25%}.col-sm-4{flex:0 0 auto;width:33.33333333%}.col-sm-5{flex:0 0 auto;width:41.66666667%}.col-sm-6{flex:0 0 auto;width:50%}.col-sm-7{flex:0 0 auto;width:58.33333333%}.col-sm-8{flex:0 0 auto;width:66.66666667%}.col-sm-9{flex:0 0 auto;width:75%}.col-sm-10{flex:0 0 auto;width:83.33333333%}.col-sm-11{flex:0 0 auto;width:91.66666667%}.col-sm-12{flex:0 0 auto;width:100%}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.33333333%}.offset-sm-2{margin-left:16.66666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.33333333%}.offset-sm-5{margin-left:41.66666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.33333333%}.offset-sm-8{margin-left:66.66666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.33333333%}.offset-sm-11{margin-left:91.66666667%}.g-sm-0,.gx-sm-0{--bs-gutter-x:0}.g-sm-0,.gy-sm-0{--bs-gutter-y:0}.g-sm-1,.gx-sm-1{--bs-gutter-x:0.25rem}.g-sm-1,.gy-sm-1{--bs-gutter-y:0.25rem}.g-sm-2,.gx-sm-2{--bs-gutter-x:0.5rem}.g-sm-2,.gy-sm-2{--bs-gutter-y:0.5rem}.g-sm-3,.gx-sm-3{--bs-gutter-x:1rem}.g-sm-3,.gy-sm-3{--bs-gutter-y:1rem}.g-sm-4,.gx-sm-4{--bs-gutter-x:1.5rem}.g-sm-4,.gy-sm-4{--bs-gutter-y:1.5rem}.g-sm-5,.gx-sm-5{--bs-gutter-x:3rem}.g-sm-5,.gy-sm-5{--bs-gutter-y:3rem}}@media (min-width:768px){.col-md{flex:1 0 0%}.row-cols-md-auto>*{flex:0 0 auto;width:auto}.row-cols-md-1>*{flex:0 0 auto;width:100%}.row-cols-md-2>*{flex:0 0 auto;width:50%}.row-cols-md-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-md-4>*{flex:0 0 auto;width:25%}.row-cols-md-5>*{flex:0 0 auto;width:20%}.row-cols-md-6>*{flex:0 0 auto;width:16.6666666667%}.col-md-auto{flex:0 0 auto;width:auto}.col-md-1{flex:0 0 auto;width:8.33333333%}.col-md-2{flex:0 0 auto;width:16.66666667%}.col-md-3{flex:0 0 auto;width:25%}.col-md-4{flex:0 0 auto;width:33.33333333%}.col-md-5{flex:0 0 auto;width:41.66666667%}.col-md-6{flex:0 0 auto;width:50%}.col-md-7{flex:0 0 auto;width:58.33333333%}.col-md-8{flex:0 0 auto;width:66.66666667%}.col-md-9{flex:0 0 auto;width:75%}.col-md-10{flex:0 0 auto;width:83.33333333%}.col-md-11{flex:0 0 auto;width:91.66666667%}.col-md-12{flex:0 0 auto;width:100%}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.33333333%}.offset-md-2{margin-left:16.66666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.33333333%}.offset-md-5{margin-left:41.66666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.33333333%}.offset-md-8{margin-left:66.66666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.33333333%}.offset-md-11{margin-left:91.66666667%}.g-md-0,.gx-md-0{--bs-gutter-x:0}.g-md-0,.gy-md-0{--bs-gutter-y:0}.g-md-1,.gx-md-1{--bs-gutter-x:0.25rem}.g-md-1,.gy-md-1{--bs-gutter-y:0.25rem}.g-md-2,.gx-md-2{--bs-gutter-x:0.5rem}.g-md-2,.gy-md-2{--bs-gutter-y:0.5rem}.g-md-3,.gx-md-3{--bs-gutter-x:1rem}.g-md-3,.gy-md-3{--bs-gutter-y:1rem}.g-md-4,.gx-md-4{--bs-gutter-x:1.5rem}.g-md-4,.gy-md-4{--bs-gutter-y:1.5rem}.g-md-5,.gx-md-5{--bs-gutter-x:3rem}.g-md-5,.gy-md-5{--bs-gutter-y:3rem}}@media (min-width:992px){.col-lg{flex:1 0 0%}.row-cols-lg-auto>*{flex:0 0 auto;width:auto}.row-cols-lg-1>*{flex:0 0 auto;width:100%}.row-cols-lg-2>*{flex:0 0 auto;width:50%}.row-cols-lg-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-lg-4>*{flex:0 0 auto;width:25%}.row-cols-lg-5>*{flex:0 0 auto;width:20%}.row-cols-lg-6>*{flex:0 0 auto;width:16.6666666667%}.col-lg-auto{flex:0 0 auto;width:auto}.col-lg-1{flex:0 0 auto;width:8.33333333%}.col-lg-2{flex:0 0 auto;width:16.66666667%}.col-lg-3{flex:0 0 auto;width:25%}.col-lg-4{flex:0 0 auto;width:33.33333333%}.col-lg-5{flex:0 0 auto;width:41.66666667%}.col-lg-6{flex:0 0 auto;width:50%}.col-lg-7{flex:0 0 auto;width:58.33333333%}.col-lg-8{flex:0 0 auto;width:66.66666667%}.col-lg-9{flex:0 0 auto;width:75%}.col-lg-10{flex:0 0 auto;width:83.33333333%}.col-lg-11{flex:0 0 auto;width:91.66666667%}.col-lg-12{flex:0 0 auto;width:100%}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.33333333%}.offset-lg-2{margin-left:16.66666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.33333333%}.offset-lg-5{margin-left:41.66666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.33333333%}.offset-lg-8{margin-left:66.66666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.33333333%}.offset-lg-11{margin-left:91.66666667%}.g-lg-0,.gx-lg-0{--bs-gutter-x:0}.g-lg-0,.gy-lg-0{--bs-gutter-y:0}.g-lg-1,.gx-lg-1{--bs-gutter-x:0.25rem}.g-lg-1,.gy-lg-1{--bs-gutter-y:0.25rem}.g-lg-2,.gx-lg-2{--bs-gutter-x:0.5rem}.g-lg-2,.gy-lg-2{--bs-gutter-y:0.5rem}.g-lg-3,.gx-lg-3{--bs-gutter-x:1rem}.g-lg-3,.gy-lg-3{--bs-gutter-y:1rem}.g-lg-4,.gx-lg-4{--bs-gutter-x:1.5rem}.g-lg-4,.gy-lg-4{--bs-gutter-y:1.5rem}.g-lg-5,.gx-lg-5{--bs-gutter-x:3rem}.g-lg-5,.gy-lg-5{--bs-gutter-y:3rem}}@media (min-width:1200px){.col-xl{flex:1 0 0%}.row-cols-xl-auto>*{flex:0 0 auto;width:auto}.row-cols-xl-1>*{flex:0 0 auto;width:100%}.row-cols-xl-2>*{flex:0 0 auto;width:50%}.row-cols-xl-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-xl-4>*{flex:0 0 auto;width:25%}.row-cols-xl-5>*{flex:0 0 auto;width:20%}.row-cols-xl-6>*{flex:0 0 auto;width:16.6666666667%}.col-xl-auto{flex:0 0 auto;width:auto}.col-xl-1{flex:0 0 auto;width:8.33333333%}.col-xl-2{flex:0 0 auto;width:16.66666667%}.col-xl-3{flex:0 0 auto;width:25%}.col-xl-4{flex:0 0 auto;width:33.33333333%}.col-xl-5{flex:0 0 auto;width:41.66666667%}.col-xl-6{flex:0 0 auto;width:50%}.col-xl-7{flex:0 0 auto;width:58.33333333%}.col-xl-8{flex:0 0 auto;width:66.66666667%}.col-xl-9{flex:0 0 auto;width:75%}.col-xl-10{flex:0 0 auto;width:83.33333333%}.col-xl-11{flex:0 0 auto;width:91.66666667%}.col-xl-12{flex:0 0 auto;width:100%}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.33333333%}.offset-xl-2{margin-left:16.66666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.33333333%}.offset-xl-5{margin-left:41.66666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.33333333%}.offset-xl-8{margin-left:66.66666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.33333333%}.offset-xl-11{margin-left:91.66666667%}.g-xl-0,.gx-xl-0{--bs-gutter-x:0}.g-xl-0,.gy-xl-0{--bs-gutter-y:0}.g-xl-1,.gx-xl-1{--bs-gutter-x:0.25rem}.g-xl-1,.gy-xl-1{--bs-gutter-y:0.25rem}.g-xl-2,.gx-xl-2{--bs-gutter-x:0.5rem}.g-xl-2,.gy-xl-2{--bs-gutter-y:0.5rem}.g-xl-3,.gx-xl-3{--bs-gutter-x:1rem}.g-xl-3,.gy-xl-3{--bs-gutter-y:1rem}.g-xl-4,.gx-xl-4{--bs-gutter-x:1.5rem}.g-xl-4,.gy-xl-4{--bs-gutter-y:1.5rem}.g-xl-5,.gx-xl-5{--bs-gutter-x:3rem}.g-xl-5,.gy-xl-5{--bs-gutter-y:3rem}}@media (min-width:1400px){.col-xxl{flex:1 0 0%}.row-cols-xxl-auto>*{flex:0 0 auto;width:auto}.row-cols-xxl-1>*{flex:0 0 auto;width:100%}.row-cols-xxl-2>*{flex:0 0 auto;width:50%}.row-cols-xxl-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-xxl-4>*{flex:0 0 auto;width:25%}.row-cols-xxl-5>*{flex:0 0 auto;width:20%}.row-cols-xxl-6>*{flex:0 0 auto;width:16.6666666667%}.col-xxl-auto{flex:0 0 auto;width:auto}.col-xxl-1{flex:0 0 auto;width:8.33333333%}.col-xxl-2{flex:0 0 auto;width:16.66666667%}.col-xxl-3{flex:0 0 auto;width:25%}.col-xxl-4{flex:0 0 auto;width:33.33333333%}.col-xxl-5{flex:0 0 auto;width:41.66666667%}.col-xxl-6{flex:0 0 auto;width:50%}.col-xxl-7{flex:0 0 auto;width:58.33333333%}.col-xxl-8{flex:0 0 auto;width:66.66666667%}.col-xxl-9{flex:0 0 auto;width:75%}.col-xxl-10{flex:0 0 auto;width:83.33333333%}.col-xxl-11{flex:0 0 auto;width:91.66666667%}.col-xxl-12{flex:0 0 auto;width:100%}.offset-xxl-0{margin-left:0}.offset-xxl-1{margin-left:8.33333333%}.offset-xxl-2{margin-left:16.66666667%}.offset-xxl-3{margin-left:25%}.offset-xxl-4{margin-left:33.33333333%}.offset-xxl-5{margin-left:41.66666667%}.offset-xxl-6{margin-left:50%}.offset-xxl-7{margin-left:58.33333333%}.offset-xxl-8{margin-left:66.66666667%}.offset-xxl-9{margin-left:75%}.offset-xxl-10{margin-left:83.33333333%}.offset-xxl-11{margin-left:91.66666667%}.g-xxl-0,.gx-xxl-0{--bs-gutter-x:0}.g-xxl-0,.gy-xxl-0{--bs-gutter-y:0}.g-xxl-1,.gx-xxl-1{--bs-gutter-x:0.25rem}.g-xxl-1,.gy-xxl-1{--bs-gutter-y:0.25rem}.g-xxl-2,.gx-xxl-2{--bs-gutter-x:0.5rem}.g-xxl-2,.gy-xxl-2{--bs-gutter-y:0.5rem}.g-xxl-3,.gx-xxl-3{--bs-gutter-x:1rem}.g-xxl-3,.gy-xxl-3{--bs-gutter-y:1rem}.g-xxl-4,.gx-xxl-4{--bs-gutter-x:1.5rem}.g-xxl-4,.gy-xxl-4{--bs-gutter-y:1.5rem}.g-xxl-5,.gx-xxl-5{--bs-gutter-x:3rem}.g-xxl-5,.gy-xxl-5{--bs-gutter-y:3rem}}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-grid{display:grid!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:flex!important}.d-inline-flex{display:inline-flex!important}.d-none{display:none!important}.flex-fill{flex:1 1 auto!important}.flex-row{flex-direction:row!important}.flex-column{flex-direction:column!important}.flex-row-reverse{flex-direction:row-reverse!important}.flex-column-reverse{flex-direction:column-reverse!important}.flex-grow-0{flex-grow:0!important}.flex-grow-1{flex-grow:1!important}.flex-shrink-0{flex-shrink:0!important}.flex-shrink-1{flex-shrink:1!important}.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.flex-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-start{justify-content:flex-start!important}.justify-content-end{justify-content:flex-end!important}.justify-content-center{justify-content:center!important}.justify-content-between{justify-content:space-between!important}.justify-content-around{justify-content:space-around!important}.justify-content-evenly{justify-content:space-evenly!important}.align-items-start{align-items:flex-start!important}.align-items-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.align-items-baseline{align-items:baseline!important}.align-items-stretch{align-items:stretch!important}.align-content-start{align-content:flex-start!important}.align-content-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-between{align-content:space-between!important}.align-content-around{align-content:space-around!important}.align-content-stretch{align-content:stretch!important}.align-self-auto{align-self:auto!important}.align-self-start{align-self:flex-start!important}.align-self-end{align-self:flex-end!important}.align-self-center{align-self:center!important}.align-self-baseline{align-self:baseline!important}.align-self-stretch{align-self:stretch!important}.order-first{order:-1!important}.order-0{order:0!important}.order-1{order:1!important}.order-2{order:2!important}.order-3{order:3!important}.order-4{order:4!important}.order-5{order:5!important}.order-last{order:6!important}.m-0{margin:0!important}.m-1{margin:.25rem!important}.m-2{margin:.5rem!important}.m-3{margin:1rem!important}.m-4{margin:1.5rem!important}.m-5{margin:3rem!important}.m-auto{margin:auto!important}.mx-0{margin-right:0!important;margin-left:0!important}.mx-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-3{margin-right:1rem!important;margin-left:1rem!important}.mx-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-5{margin-right:3rem!important;margin-left:3rem!important}.mx-auto{margin-right:auto!important;margin-left:auto!important}.my-0{margin-top:0!important;margin-bottom:0!important}.my-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-0{margin-top:0!important}.mt-1{margin-top:.25rem!important}.mt-2{margin-top:.5rem!important}.mt-3{margin-top:1rem!important}.mt-4{margin-top:1.5rem!important}.mt-5{margin-top:3rem!important}.mt-auto{margin-top:auto!important}.me-0{margin-right:0!important}.me-1{margin-right:.25rem!important}.me-2{margin-right:.5rem!important}.me-3{margin-right:1rem!important}.me-4{margin-right:1.5rem!important}.me-5{margin-right:3rem!important}.me-auto{margin-right:auto!important}.mb-0{margin-bottom:0!important}.mb-1{margin-bottom:.25rem!important}.mb-2{margin-bottom:.5rem!important}.mb-3{margin-bottom:1rem!important}.mb-4{margin-bottom:1.5rem!important}.mb-5{margin-bottom:3rem!important}.mb-auto{margin-bottom:auto!important}.ms-0{margin-left:0!important}.ms-1{margin-left:.25rem!important}.ms-2{margin-left:.5rem!important}.ms-3{margin-left:1rem!important}.ms-4{margin-left:1.5rem!important}.ms-5{margin-left:3rem!important}.ms-auto{margin-left:auto!important}.p-0{padding:0!important}.p-1{padding:.25rem!important}.p-2{padding:.5rem!important}.p-3{padding:1rem!important}.p-4{padding:1.5rem!important}.p-5{padding:3rem!important}.px-0{padding-right:0!important;padding-left:0!important}.px-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-3{padding-right:1rem!important;padding-left:1rem!important}.px-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-5{padding-right:3rem!important;padding-left:3rem!important}.py-0{padding-top:0!important;padding-bottom:0!important}.py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-0{padding-top:0!important}.pt-1{padding-top:.25rem!important}.pt-2{padding-top:.5rem!important}.pt-3{padding-top:1rem!important}.pt-4{padding-top:1.5rem!important}.pt-5{padding-top:3rem!important}.pe-0{padding-right:0!important}.pe-1{padding-right:.25rem!important}.pe-2{padding-right:.5rem!important}.pe-3{padding-right:1rem!important}.pe-4{padding-right:1.5rem!important}.pe-5{padding-right:3rem!important}.pb-0{padding-bottom:0!important}.pb-1{padding-bottom:.25rem!important}.pb-2{padding-bottom:.5rem!important}.pb-3{padding-bottom:1rem!important}.pb-4{padding-bottom:1.5rem!important}.pb-5{padding-bottom:3rem!important}.ps-0{padding-left:0!important}.ps-1{padding-left:.25rem!important}.ps-2{padding-left:.5rem!important}.ps-3{padding-left:1rem!important}.ps-4{padding-left:1.5rem!important}.ps-5{padding-left:3rem!important}@media (min-width:576px){.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-grid{display:grid!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:flex!important}.d-sm-inline-flex{display:inline-flex!important}.d-sm-none{display:none!important}.flex-sm-fill{flex:1 1 auto!important}.flex-sm-row{flex-direction:row!important}.flex-sm-column{flex-direction:column!important}.flex-sm-row-reverse{flex-direction:row-reverse!important}.flex-sm-column-reverse{flex-direction:column-reverse!important}.flex-sm-grow-0{flex-grow:0!important}.flex-sm-grow-1{flex-grow:1!important}.flex-sm-shrink-0{flex-shrink:0!important}.flex-sm-shrink-1{flex-shrink:1!important}.flex-sm-wrap{flex-wrap:wrap!important}.flex-sm-nowrap{flex-wrap:nowrap!important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-sm-start{justify-content:flex-start!important}.justify-content-sm-end{justify-content:flex-end!important}.justify-content-sm-center{justify-content:center!important}.justify-content-sm-between{justify-content:space-between!important}.justify-content-sm-around{justify-content:space-around!important}.justify-content-sm-evenly{justify-content:space-evenly!important}.align-items-sm-start{align-items:flex-start!important}.align-items-sm-end{align-items:flex-end!important}.align-items-sm-center{align-items:center!important}.align-items-sm-baseline{align-items:baseline!important}.align-items-sm-stretch{align-items:stretch!important}.align-content-sm-start{align-content:flex-start!important}.align-content-sm-end{align-content:flex-end!important}.align-content-sm-center{align-content:center!important}.align-content-sm-between{align-content:space-between!important}.align-content-sm-around{align-content:space-around!important}.align-content-sm-stretch{align-content:stretch!important}.align-self-sm-auto{align-self:auto!important}.align-self-sm-start{align-self:flex-start!important}.align-self-sm-end{align-self:flex-end!important}.align-self-sm-center{align-self:center!important}.align-self-sm-baseline{align-self:baseline!important}.align-self-sm-stretch{align-self:stretch!important}.order-sm-first{order:-1!important}.order-sm-0{order:0!important}.order-sm-1{order:1!important}.order-sm-2{order:2!important}.order-sm-3{order:3!important}.order-sm-4{order:4!important}.order-sm-5{order:5!important}.order-sm-last{order:6!important}.m-sm-0{margin:0!important}.m-sm-1{margin:.25rem!important}.m-sm-2{margin:.5rem!important}.m-sm-3{margin:1rem!important}.m-sm-4{margin:1.5rem!important}.m-sm-5{margin:3rem!important}.m-sm-auto{margin:auto!important}.mx-sm-0{margin-right:0!important;margin-left:0!important}.mx-sm-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-sm-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-sm-3{margin-right:1rem!important;margin-left:1rem!important}.mx-sm-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-sm-5{margin-right:3rem!important;margin-left:3rem!important}.mx-sm-auto{margin-right:auto!important;margin-left:auto!important}.my-sm-0{margin-top:0!important;margin-bottom:0!important}.my-sm-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-sm-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-sm-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-sm-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-sm-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-sm-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-sm-0{margin-top:0!important}.mt-sm-1{margin-top:.25rem!important}.mt-sm-2{margin-top:.5rem!important}.mt-sm-3{margin-top:1rem!important}.mt-sm-4{margin-top:1.5rem!important}.mt-sm-5{margin-top:3rem!important}.mt-sm-auto{margin-top:auto!important}.me-sm-0{margin-right:0!important}.me-sm-1{margin-right:.25rem!important}.me-sm-2{margin-right:.5rem!important}.me-sm-3{margin-right:1rem!important}.me-sm-4{margin-right:1.5rem!important}.me-sm-5{margin-right:3rem!important}.me-sm-auto{margin-right:auto!important}.mb-sm-0{margin-bottom:0!important}.mb-sm-1{margin-bottom:.25rem!important}.mb-sm-2{margin-bottom:.5rem!important}.mb-sm-3{margin-bottom:1rem!important}.mb-sm-4{margin-bottom:1.5rem!important}.mb-sm-5{margin-bottom:3rem!important}.mb-sm-auto{margin-bottom:auto!important}.ms-sm-0{margin-left:0!important}.ms-sm-1{margin-left:.25rem!important}.ms-sm-2{margin-left:.5rem!important}.ms-sm-3{margin-left:1rem!important}.ms-sm-4{margin-left:1.5rem!important}.ms-sm-5{margin-left:3rem!important}.ms-sm-auto{margin-left:auto!important}.p-sm-0{padding:0!important}.p-sm-1{padding:.25rem!important}.p-sm-2{padding:.5rem!important}.p-sm-3{padding:1rem!important}.p-sm-4{padding:1.5rem!important}.p-sm-5{padding:3rem!important}.px-sm-0{padding-right:0!important;padding-left:0!important}.px-sm-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-sm-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-sm-3{padding-right:1rem!important;padding-left:1rem!important}.px-sm-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-sm-5{padding-right:3rem!important;padding-left:3rem!important}.py-sm-0{padding-top:0!important;padding-bottom:0!important}.py-sm-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-sm-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-sm-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-sm-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-sm-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-sm-0{padding-top:0!important}.pt-sm-1{padding-top:.25rem!important}.pt-sm-2{padding-top:.5rem!important}.pt-sm-3{padding-top:1rem!important}.pt-sm-4{padding-top:1.5rem!important}.pt-sm-5{padding-top:3rem!important}.pe-sm-0{padding-right:0!important}.pe-sm-1{padding-right:.25rem!important}.pe-sm-2{padding-right:.5rem!important}.pe-sm-3{padding-right:1rem!important}.pe-sm-4{padding-right:1.5rem!important}.pe-sm-5{padding-right:3rem!important}.pb-sm-0{padding-bottom:0!important}.pb-sm-1{padding-bottom:.25rem!important}.pb-sm-2{padding-bottom:.5rem!important}.pb-sm-3{padding-bottom:1rem!important}.pb-sm-4{padding-bottom:1.5rem!important}.pb-sm-5{padding-bottom:3rem!important}.ps-sm-0{padding-left:0!important}.ps-sm-1{padding-left:.25rem!important}.ps-sm-2{padding-left:.5rem!important}.ps-sm-3{padding-left:1rem!important}.ps-sm-4{padding-left:1.5rem!important}.ps-sm-5{padding-left:3rem!important}}@media (min-width:768px){.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-grid{display:grid!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:flex!important}.d-md-inline-flex{display:inline-flex!important}.d-md-none{display:none!important}.flex-md-fill{flex:1 1 auto!important}.flex-md-row{flex-direction:row!important}.flex-md-column{flex-direction:column!important}.flex-md-row-reverse{flex-direction:row-reverse!important}.flex-md-column-reverse{flex-direction:column-reverse!important}.flex-md-grow-0{flex-grow:0!important}.flex-md-grow-1{flex-grow:1!important}.flex-md-shrink-0{flex-shrink:0!important}.flex-md-shrink-1{flex-shrink:1!important}.flex-md-wrap{flex-wrap:wrap!important}.flex-md-nowrap{flex-wrap:nowrap!important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-md-start{justify-content:flex-start!important}.justify-content-md-end{justify-content:flex-end!important}.justify-content-md-center{justify-content:center!important}.justify-content-md-between{justify-content:space-between!important}.justify-content-md-around{justify-content:space-around!important}.justify-content-md-evenly{justify-content:space-evenly!important}.align-items-md-start{align-items:flex-start!important}.align-items-md-end{align-items:flex-end!important}.align-items-md-center{align-items:center!important}.align-items-md-baseline{align-items:baseline!important}.align-items-md-stretch{align-items:stretch!important}.align-content-md-start{align-content:flex-start!important}.align-content-md-end{align-content:flex-end!important}.align-content-md-center{align-content:center!important}.align-content-md-between{align-content:space-between!important}.align-content-md-around{align-content:space-around!important}.align-content-md-stretch{align-content:stretch!important}.align-self-md-auto{align-self:auto!important}.align-self-md-start{align-self:flex-start!important}.align-self-md-end{align-self:flex-end!important}.align-self-md-center{align-self:center!important}.align-self-md-baseline{align-self:baseline!important}.align-self-md-stretch{align-self:stretch!important}.order-md-first{order:-1!important}.order-md-0{order:0!important}.order-md-1{order:1!important}.order-md-2{order:2!important}.order-md-3{order:3!important}.order-md-4{order:4!important}.order-md-5{order:5!important}.order-md-last{order:6!important}.m-md-0{margin:0!important}.m-md-1{margin:.25rem!important}.m-md-2{margin:.5rem!important}.m-md-3{margin:1rem!important}.m-md-4{margin:1.5rem!important}.m-md-5{margin:3rem!important}.m-md-auto{margin:auto!important}.mx-md-0{margin-right:0!important;margin-left:0!important}.mx-md-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-md-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-md-3{margin-right:1rem!important;margin-left:1rem!important}.mx-md-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-md-5{margin-right:3rem!important;margin-left:3rem!important}.mx-md-auto{margin-right:auto!important;margin-left:auto!important}.my-md-0{margin-top:0!important;margin-bottom:0!important}.my-md-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-md-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-md-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-md-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-md-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-md-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-md-0{margin-top:0!important}.mt-md-1{margin-top:.25rem!important}.mt-md-2{margin-top:.5rem!important}.mt-md-3{margin-top:1rem!important}.mt-md-4{margin-top:1.5rem!important}.mt-md-5{margin-top:3rem!important}.mt-md-auto{margin-top:auto!important}.me-md-0{margin-right:0!important}.me-md-1{margin-right:.25rem!important}.me-md-2{margin-right:.5rem!important}.me-md-3{margin-right:1rem!important}.me-md-4{margin-right:1.5rem!important}.me-md-5{margin-right:3rem!important}.me-md-auto{margin-right:auto!important}.mb-md-0{margin-bottom:0!important}.mb-md-1{margin-bottom:.25rem!important}.mb-md-2{margin-bottom:.5rem!important}.mb-md-3{margin-bottom:1rem!important}.mb-md-4{margin-bottom:1.5rem!important}.mb-md-5{margin-bottom:3rem!important}.mb-md-auto{margin-bottom:auto!important}.ms-md-0{margin-left:0!important}.ms-md-1{margin-left:.25rem!important}.ms-md-2{margin-left:.5rem!important}.ms-md-3{margin-left:1rem!important}.ms-md-4{margin-left:1.5rem!important}.ms-md-5{margin-left:3rem!important}.ms-md-auto{margin-left:auto!important}.p-md-0{padding:0!important}.p-md-1{padding:.25rem!important}.p-md-2{padding:.5rem!important}.p-md-3{padding:1rem!important}.p-md-4{padding:1.5rem!important}.p-md-5{padding:3rem!important}.px-md-0{padding-right:0!important;padding-left:0!important}.px-md-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-md-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-md-3{padding-right:1rem!important;padding-left:1rem!important}.px-md-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-md-5{padding-right:3rem!important;padding-left:3rem!important}.py-md-0{padding-top:0!important;padding-bottom:0!important}.py-md-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-md-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-md-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-md-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-md-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-md-0{padding-top:0!important}.pt-md-1{padding-top:.25rem!important}.pt-md-2{padding-top:.5rem!important}.pt-md-3{padding-top:1rem!important}.pt-md-4{padding-top:1.5rem!important}.pt-md-5{padding-top:3rem!important}.pe-md-0{padding-right:0!important}.pe-md-1{padding-right:.25rem!important}.pe-md-2{padding-right:.5rem!important}.pe-md-3{padding-right:1rem!important}.pe-md-4{padding-right:1.5rem!important}.pe-md-5{padding-right:3rem!important}.pb-md-0{padding-bottom:0!important}.pb-md-1{padding-bottom:.25rem!important}.pb-md-2{padding-bottom:.5rem!important}.pb-md-3{padding-bottom:1rem!important}.pb-md-4{padding-bottom:1.5rem!important}.pb-md-5{padding-bottom:3rem!important}.ps-md-0{padding-left:0!important}.ps-md-1{padding-left:.25rem!important}.ps-md-2{padding-left:.5rem!important}.ps-md-3{padding-left:1rem!important}.ps-md-4{padding-left:1.5rem!important}.ps-md-5{padding-left:3rem!important}}@media (min-width:992px){.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-grid{display:grid!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:flex!important}.d-lg-inline-flex{display:inline-flex!important}.d-lg-none{display:none!important}.flex-lg-fill{flex:1 1 auto!important}.flex-lg-row{flex-direction:row!important}.flex-lg-column{flex-direction:column!important}.flex-lg-row-reverse{flex-direction:row-reverse!important}.flex-lg-column-reverse{flex-direction:column-reverse!important}.flex-lg-grow-0{flex-grow:0!important}.flex-lg-grow-1{flex-grow:1!important}.flex-lg-shrink-0{flex-shrink:0!important}.flex-lg-shrink-1{flex-shrink:1!important}.flex-lg-wrap{flex-wrap:wrap!important}.flex-lg-nowrap{flex-wrap:nowrap!important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-lg-start{justify-content:flex-start!important}.justify-content-lg-end{justify-content:flex-end!important}.justify-content-lg-center{justify-content:center!important}.justify-content-lg-between{justify-content:space-between!important}.justify-content-lg-around{justify-content:space-around!important}.justify-content-lg-evenly{justify-content:space-evenly!important}.align-items-lg-start{align-items:flex-start!important}.align-items-lg-end{align-items:flex-end!important}.align-items-lg-center{align-items:center!important}.align-items-lg-baseline{align-items:baseline!important}.align-items-lg-stretch{align-items:stretch!important}.align-content-lg-start{align-content:flex-start!important}.align-content-lg-end{align-content:flex-end!important}.align-content-lg-center{align-content:center!important}.align-content-lg-between{align-content:space-between!important}.align-content-lg-around{align-content:space-around!important}.align-content-lg-stretch{align-content:stretch!important}.align-self-lg-auto{align-self:auto!important}.align-self-lg-start{align-self:flex-start!important}.align-self-lg-end{align-self:flex-end!important}.align-self-lg-center{align-self:center!important}.align-self-lg-baseline{align-self:baseline!important}.align-self-lg-stretch{align-self:stretch!important}.order-lg-first{order:-1!important}.order-lg-0{order:0!important}.order-lg-1{order:1!important}.order-lg-2{order:2!important}.order-lg-3{order:3!important}.order-lg-4{order:4!important}.order-lg-5{order:5!important}.order-lg-last{order:6!important}.m-lg-0{margin:0!important}.m-lg-1{margin:.25rem!important}.m-lg-2{margin:.5rem!important}.m-lg-3{margin:1rem!important}.m-lg-4{margin:1.5rem!important}.m-lg-5{margin:3rem!important}.m-lg-auto{margin:auto!important}.mx-lg-0{margin-right:0!important;margin-left:0!important}.mx-lg-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-lg-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-lg-3{margin-right:1rem!important;margin-left:1rem!important}.mx-lg-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-lg-5{margin-right:3rem!important;margin-left:3rem!important}.mx-lg-auto{margin-right:auto!important;margin-left:auto!important}.my-lg-0{margin-top:0!important;margin-bottom:0!important}.my-lg-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-lg-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-lg-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-lg-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-lg-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-lg-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-lg-0{margin-top:0!important}.mt-lg-1{margin-top:.25rem!important}.mt-lg-2{margin-top:.5rem!important}.mt-lg-3{margin-top:1rem!important}.mt-lg-4{margin-top:1.5rem!important}.mt-lg-5{margin-top:3rem!important}.mt-lg-auto{margin-top:auto!important}.me-lg-0{margin-right:0!important}.me-lg-1{margin-right:.25rem!important}.me-lg-2{margin-right:.5rem!important}.me-lg-3{margin-right:1rem!important}.me-lg-4{margin-right:1.5rem!important}.me-lg-5{margin-right:3rem!important}.me-lg-auto{margin-right:auto!important}.mb-lg-0{margin-bottom:0!important}.mb-lg-1{margin-bottom:.25rem!important}.mb-lg-2{margin-bottom:.5rem!important}.mb-lg-3{margin-bottom:1rem!important}.mb-lg-4{margin-bottom:1.5rem!important}.mb-lg-5{margin-bottom:3rem!important}.mb-lg-auto{margin-bottom:auto!important}.ms-lg-0{margin-left:0!important}.ms-lg-1{margin-left:.25rem!important}.ms-lg-2{margin-left:.5rem!important}.ms-lg-3{margin-left:1rem!important}.ms-lg-4{margin-left:1.5rem!important}.ms-lg-5{margin-left:3rem!important}.ms-lg-auto{margin-left:auto!important}.p-lg-0{padding:0!important}.p-lg-1{padding:.25rem!important}.p-lg-2{padding:.5rem!important}.p-lg-3{padding:1rem!important}.p-lg-4{padding:1.5rem!important}.p-lg-5{padding:3rem!important}.px-lg-0{padding-right:0!important;padding-left:0!important}.px-lg-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-lg-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-lg-3{padding-right:1rem!important;padding-left:1rem!important}.px-lg-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-lg-5{padding-right:3rem!important;padding-left:3rem!important}.py-lg-0{padding-top:0!important;padding-bottom:0!important}.py-lg-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-lg-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-lg-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-lg-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-lg-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-lg-0{padding-top:0!important}.pt-lg-1{padding-top:.25rem!important}.pt-lg-2{padding-top:.5rem!important}.pt-lg-3{padding-top:1rem!important}.pt-lg-4{padding-top:1.5rem!important}.pt-lg-5{padding-top:3rem!important}.pe-lg-0{padding-right:0!important}.pe-lg-1{padding-right:.25rem!important}.pe-lg-2{padding-right:.5rem!important}.pe-lg-3{padding-right:1rem!important}.pe-lg-4{padding-right:1.5rem!important}.pe-lg-5{padding-right:3rem!important}.pb-lg-0{padding-bottom:0!important}.pb-lg-1{padding-bottom:.25rem!important}.pb-lg-2{padding-bottom:.5rem!important}.pb-lg-3{padding-bottom:1rem!important}.pb-lg-4{padding-bottom:1.5rem!important}.pb-lg-5{padding-bottom:3rem!important}.ps-lg-0{padding-left:0!important}.ps-lg-1{padding-left:.25rem!important}.ps-lg-2{padding-left:.5rem!important}.ps-lg-3{padding-left:1rem!important}.ps-lg-4{padding-left:1.5rem!important}.ps-lg-5{padding-left:3rem!important}}@media (min-width:1200px){.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-grid{display:grid!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:flex!important}.d-xl-inline-flex{display:inline-flex!important}.d-xl-none{display:none!important}.flex-xl-fill{flex:1 1 auto!important}.flex-xl-row{flex-direction:row!important}.flex-xl-column{flex-direction:column!important}.flex-xl-row-reverse{flex-direction:row-reverse!important}.flex-xl-column-reverse{flex-direction:column-reverse!important}.flex-xl-grow-0{flex-grow:0!important}.flex-xl-grow-1{flex-grow:1!important}.flex-xl-shrink-0{flex-shrink:0!important}.flex-xl-shrink-1{flex-shrink:1!important}.flex-xl-wrap{flex-wrap:wrap!important}.flex-xl-nowrap{flex-wrap:nowrap!important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xl-start{justify-content:flex-start!important}.justify-content-xl-end{justify-content:flex-end!important}.justify-content-xl-center{justify-content:center!important}.justify-content-xl-between{justify-content:space-between!important}.justify-content-xl-around{justify-content:space-around!important}.justify-content-xl-evenly{justify-content:space-evenly!important}.align-items-xl-start{align-items:flex-start!important}.align-items-xl-end{align-items:flex-end!important}.align-items-xl-center{align-items:center!important}.align-items-xl-baseline{align-items:baseline!important}.align-items-xl-stretch{align-items:stretch!important}.align-content-xl-start{align-content:flex-start!important}.align-content-xl-end{align-content:flex-end!important}.align-content-xl-center{align-content:center!important}.align-content-xl-between{align-content:space-between!important}.align-content-xl-around{align-content:space-around!important}.align-content-xl-stretch{align-content:stretch!important}.align-self-xl-auto{align-self:auto!important}.align-self-xl-start{align-self:flex-start!important}.align-self-xl-end{align-self:flex-end!important}.align-self-xl-center{align-self:center!important}.align-self-xl-baseline{align-self:baseline!important}.align-self-xl-stretch{align-self:stretch!important}.order-xl-first{order:-1!important}.order-xl-0{order:0!important}.order-xl-1{order:1!important}.order-xl-2{order:2!important}.order-xl-3{order:3!important}.order-xl-4{order:4!important}.order-xl-5{order:5!important}.order-xl-last{order:6!important}.m-xl-0{margin:0!important}.m-xl-1{margin:.25rem!important}.m-xl-2{margin:.5rem!important}.m-xl-3{margin:1rem!important}.m-xl-4{margin:1.5rem!important}.m-xl-5{margin:3rem!important}.m-xl-auto{margin:auto!important}.mx-xl-0{margin-right:0!important;margin-left:0!important}.mx-xl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xl-auto{margin-right:auto!important;margin-left:auto!important}.my-xl-0{margin-top:0!important;margin-bottom:0!important}.my-xl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xl-0{margin-top:0!important}.mt-xl-1{margin-top:.25rem!important}.mt-xl-2{margin-top:.5rem!important}.mt-xl-3{margin-top:1rem!important}.mt-xl-4{margin-top:1.5rem!important}.mt-xl-5{margin-top:3rem!important}.mt-xl-auto{margin-top:auto!important}.me-xl-0{margin-right:0!important}.me-xl-1{margin-right:.25rem!important}.me-xl-2{margin-right:.5rem!important}.me-xl-3{margin-right:1rem!important}.me-xl-4{margin-right:1.5rem!important}.me-xl-5{margin-right:3rem!important}.me-xl-auto{margin-right:auto!important}.mb-xl-0{margin-bottom:0!important}.mb-xl-1{margin-bottom:.25rem!important}.mb-xl-2{margin-bottom:.5rem!important}.mb-xl-3{margin-bottom:1rem!important}.mb-xl-4{margin-bottom:1.5rem!important}.mb-xl-5{margin-bottom:3rem!important}.mb-xl-auto{margin-bottom:auto!important}.ms-xl-0{margin-left:0!important}.ms-xl-1{margin-left:.25rem!important}.ms-xl-2{margin-left:.5rem!important}.ms-xl-3{margin-left:1rem!important}.ms-xl-4{margin-left:1.5rem!important}.ms-xl-5{margin-left:3rem!important}.ms-xl-auto{margin-left:auto!important}.p-xl-0{padding:0!important}.p-xl-1{padding:.25rem!important}.p-xl-2{padding:.5rem!important}.p-xl-3{padding:1rem!important}.p-xl-4{padding:1.5rem!important}.p-xl-5{padding:3rem!important}.px-xl-0{padding-right:0!important;padding-left:0!important}.px-xl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xl-0{padding-top:0!important;padding-bottom:0!important}.py-xl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xl-0{padding-top:0!important}.pt-xl-1{padding-top:.25rem!important}.pt-xl-2{padding-top:.5rem!important}.pt-xl-3{padding-top:1rem!important}.pt-xl-4{padding-top:1.5rem!important}.pt-xl-5{padding-top:3rem!important}.pe-xl-0{padding-right:0!important}.pe-xl-1{padding-right:.25rem!important}.pe-xl-2{padding-right:.5rem!important}.pe-xl-3{padding-right:1rem!important}.pe-xl-4{padding-right:1.5rem!important}.pe-xl-5{padding-right:3rem!important}.pb-xl-0{padding-bottom:0!important}.pb-xl-1{padding-bottom:.25rem!important}.pb-xl-2{padding-bottom:.5rem!important}.pb-xl-3{padding-bottom:1rem!important}.pb-xl-4{padding-bottom:1.5rem!important}.pb-xl-5{padding-bottom:3rem!important}.ps-xl-0{padding-left:0!important}.ps-xl-1{padding-left:.25rem!important}.ps-xl-2{padding-left:.5rem!important}.ps-xl-3{padding-left:1rem!important}.ps-xl-4{padding-left:1.5rem!important}.ps-xl-5{padding-left:3rem!important}}@media (min-width:1400px){.d-xxl-inline{display:inline!important}.d-xxl-inline-block{display:inline-block!important}.d-xxl-block{display:block!important}.d-xxl-grid{display:grid!important}.d-xxl-table{display:table!important}.d-xxl-table-row{display:table-row!important}.d-xxl-table-cell{display:table-cell!important}.d-xxl-flex{display:flex!important}.d-xxl-inline-flex{display:inline-flex!important}.d-xxl-none{display:none!important}.flex-xxl-fill{flex:1 1 auto!important}.flex-xxl-row{flex-direction:row!important}.flex-xxl-column{flex-direction:column!important}.flex-xxl-row-reverse{flex-direction:row-reverse!important}.flex-xxl-column-reverse{flex-direction:column-reverse!important}.flex-xxl-grow-0{flex-grow:0!important}.flex-xxl-grow-1{flex-grow:1!important}.flex-xxl-shrink-0{flex-shrink:0!important}.flex-xxl-shrink-1{flex-shrink:1!important}.flex-xxl-wrap{flex-wrap:wrap!important}.flex-xxl-nowrap{flex-wrap:nowrap!important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xxl-start{justify-content:flex-start!important}.justify-content-xxl-end{justify-content:flex-end!important}.justify-content-xxl-center{justify-content:center!important}.justify-content-xxl-between{justify-content:space-between!important}.justify-content-xxl-around{justify-content:space-around!important}.justify-content-xxl-evenly{justify-content:space-evenly!important}.align-items-xxl-start{align-items:flex-start!important}.align-items-xxl-end{align-items:flex-end!important}.align-items-xxl-center{align-items:center!important}.align-items-xxl-baseline{align-items:baseline!important}.align-items-xxl-stretch{align-items:stretch!important}.align-content-xxl-start{align-content:flex-start!important}.align-content-xxl-end{align-content:flex-end!important}.align-content-xxl-center{align-content:center!important}.align-content-xxl-between{align-content:space-between!important}.align-content-xxl-around{align-content:space-around!important}.align-content-xxl-stretch{align-content:stretch!important}.align-self-xxl-auto{align-self:auto!important}.align-self-xxl-start{align-self:flex-start!important}.align-self-xxl-end{align-self:flex-end!important}.align-self-xxl-center{align-self:center!important}.align-self-xxl-baseline{align-self:baseline!important}.align-self-xxl-stretch{align-self:stretch!important}.order-xxl-first{order:-1!important}.order-xxl-0{order:0!important}.order-xxl-1{order:1!important}.order-xxl-2{order:2!important}.order-xxl-3{order:3!important}.order-xxl-4{order:4!important}.order-xxl-5{order:5!important}.order-xxl-last{order:6!important}.m-xxl-0{margin:0!important}.m-xxl-1{margin:.25rem!important}.m-xxl-2{margin:.5rem!important}.m-xxl-3{margin:1rem!important}.m-xxl-4{margin:1.5rem!important}.m-xxl-5{margin:3rem!important}.m-xxl-auto{margin:auto!important}.mx-xxl-0{margin-right:0!important;margin-left:0!important}.mx-xxl-1{margin-right:.25rem!important;margin-left:.25rem!important}.mx-xxl-2{margin-right:.5rem!important;margin-left:.5rem!important}.mx-xxl-3{margin-right:1rem!important;margin-left:1rem!important}.mx-xxl-4{margin-right:1.5rem!important;margin-left:1.5rem!important}.mx-xxl-5{margin-right:3rem!important;margin-left:3rem!important}.mx-xxl-auto{margin-right:auto!important;margin-left:auto!important}.my-xxl-0{margin-top:0!important;margin-bottom:0!important}.my-xxl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xxl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xxl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xxl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xxl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xxl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xxl-0{margin-top:0!important}.mt-xxl-1{margin-top:.25rem!important}.mt-xxl-2{margin-top:.5rem!important}.mt-xxl-3{margin-top:1rem!important}.mt-xxl-4{margin-top:1.5rem!important}.mt-xxl-5{margin-top:3rem!important}.mt-xxl-auto{margin-top:auto!important}.me-xxl-0{margin-right:0!important}.me-xxl-1{margin-right:.25rem!important}.me-xxl-2{margin-right:.5rem!important}.me-xxl-3{margin-right:1rem!important}.me-xxl-4{margin-right:1.5rem!important}.me-xxl-5{margin-right:3rem!important}.me-xxl-auto{margin-right:auto!important}.mb-xxl-0{margin-bottom:0!important}.mb-xxl-1{margin-bottom:.25rem!important}.mb-xxl-2{margin-bottom:.5rem!important}.mb-xxl-3{margin-bottom:1rem!important}.mb-xxl-4{margin-bottom:1.5rem!important}.mb-xxl-5{margin-bottom:3rem!important}.mb-xxl-auto{margin-bottom:auto!important}.ms-xxl-0{margin-left:0!important}.ms-xxl-1{margin-left:.25rem!important}.ms-xxl-2{margin-left:.5rem!important}.ms-xxl-3{margin-left:1rem!important}.ms-xxl-4{margin-left:1.5rem!important}.ms-xxl-5{margin-left:3rem!important}.ms-xxl-auto{margin-left:auto!important}.p-xxl-0{padding:0!important}.p-xxl-1{padding:.25rem!important}.p-xxl-2{padding:.5rem!important}.p-xxl-3{padding:1rem!important}.p-xxl-4{padding:1.5rem!important}.p-xxl-5{padding:3rem!important}.px-xxl-0{padding-right:0!important;padding-left:0!important}.px-xxl-1{padding-right:.25rem!important;padding-left:.25rem!important}.px-xxl-2{padding-right:.5rem!important;padding-left:.5rem!important}.px-xxl-3{padding-right:1rem!important;padding-left:1rem!important}.px-xxl-4{padding-right:1.5rem!important;padding-left:1.5rem!important}.px-xxl-5{padding-right:3rem!important;padding-left:3rem!important}.py-xxl-0{padding-top:0!important;padding-bottom:0!important}.py-xxl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xxl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xxl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xxl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xxl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xxl-0{padding-top:0!important}.pt-xxl-1{padding-top:.25rem!important}.pt-xxl-2{padding-top:.5rem!important}.pt-xxl-3{padding-top:1rem!important}.pt-xxl-4{padding-top:1.5rem!important}.pt-xxl-5{padding-top:3rem!important}.pe-xxl-0{padding-right:0!important}.pe-xxl-1{padding-right:.25rem!important}.pe-xxl-2{padding-right:.5rem!important}.pe-xxl-3{padding-right:1rem!important}.pe-xxl-4{padding-right:1.5rem!important}.pe-xxl-5{padding-right:3rem!important}.pb-xxl-0{padding-bottom:0!important}.pb-xxl-1{padding-bottom:.25rem!important}.pb-xxl-2{padding-bottom:.5rem!important}.pb-xxl-3{padding-bottom:1rem!important}.pb-xxl-4{padding-bottom:1.5rem!important}.pb-xxl-5{padding-bottom:3rem!important}.ps-xxl-0{padding-left:0!important}.ps-xxl-1{padding-left:.25rem!important}.ps-xxl-2{padding-left:.5rem!important}.ps-xxl-3{padding-left:1rem!important}.ps-xxl-4{padding-left:1.5rem!important}.ps-xxl-5{padding-left:3rem!important}}@media print{.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-grid{display:grid!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:flex!important}.d-print-inline-flex{display:inline-flex!important}.d-print-none{display:none!important}} -/*# sourceMappingURL=bootstrap-grid.min.css.map */ \ No newline at end of file diff --git a/site/templates/vendors/Bootstrap/css/bootstrap-grid.min.css.map b/site/templates/vendors/Bootstrap/css/bootstrap-grid.min.css.map deleted file mode 100644 index ff0a5e4..0000000 --- a/site/templates/vendors/Bootstrap/css/bootstrap-grid.min.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../../scss/mixins/_banner.scss","../../scss/_root.scss","dist/css/bootstrap-grid.css","../../scss/vendor/_rfs.scss","../../scss/mixins/_color-mode.scss","../../scss/_containers.scss","../../scss/mixins/_container.scss","../../scss/mixins/_breakpoints.scss","../../scss/_grid.scss","../../scss/mixins/_grid.scss","../../scss/mixins/_utilities.scss","../../scss/utilities/_api.scss"],"names":[],"mappings":"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","sourcesContent":["@mixin bsBanner($file) {\n /*!\n * Bootstrap #{$file} v5.3.0-alpha1 (https://getbootstrap.com/)\n * Copyright 2011-2022 The Bootstrap Authors\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n}\n",":root,\n[data-bs-theme=\"light\"] {\n // Note: Custom variable values only support SassScript inside `#{}`.\n\n // Colors\n //\n // Generate palettes for full colors, grays, and theme colors.\n\n @each $color, $value in $colors {\n --#{$prefix}#{$color}: #{$value};\n }\n\n @each $color, $value in $grays {\n --#{$prefix}gray-#{$color}: #{$value};\n }\n\n @each $color, $value in $theme-colors {\n --#{$prefix}#{$color}: #{$value};\n }\n\n @each $color, $value in $theme-colors-rgb {\n --#{$prefix}#{$color}-rgb: #{$value};\n }\n\n @each $color, $value in $theme-colors-text {\n --#{$prefix}#{$color}-text: #{$value};\n }\n\n @each $color, $value in $theme-colors-bg-subtle {\n --#{$prefix}#{$color}-bg-subtle: #{$value};\n }\n\n @each $color, $value in $theme-colors-border-subtle {\n --#{$prefix}#{$color}-border-subtle: #{$value};\n }\n\n --#{$prefix}white-rgb: #{to-rgb($white)};\n --#{$prefix}black-rgb: #{to-rgb($black)};\n --#{$prefix}body-color-rgb: #{to-rgb($body-color)};\n --#{$prefix}body-bg-rgb: #{to-rgb($body-bg)};\n\n // Fonts\n\n // Note: Use `inspect` for lists so that quoted items keep the quotes.\n // See https://github.com/sass/sass/issues/2383#issuecomment-336349172\n --#{$prefix}font-sans-serif: #{inspect($font-family-sans-serif)};\n --#{$prefix}font-monospace: #{inspect($font-family-monospace)};\n --#{$prefix}gradient: #{$gradient};\n\n // Root and body\n // scss-docs-start root-body-variables\n @if $font-size-root != null {\n --#{$prefix}root-font-size: #{$font-size-root};\n }\n --#{$prefix}body-font-family: #{inspect($font-family-base)};\n @include rfs($font-size-base, --#{$prefix}body-font-size);\n --#{$prefix}body-font-weight: #{$font-weight-base};\n --#{$prefix}body-line-height: #{$line-height-base};\n --#{$prefix}body-color: #{$body-color};\n\n --#{$prefix}emphasis-color: #{$body-emphasis-color};\n --#{$prefix}emphasis-color-rgb: #{to-rgb($body-emphasis-color)};\n\n --#{$prefix}secondary-color: #{$body-secondary-color};\n --#{$prefix}secondary-color-rgb: #{to-rgb($body-secondary-color)};\n --#{$prefix}secondary-bg: #{$body-secondary-bg};\n --#{$prefix}secondary-bg-rgb: #{to-rgb($body-secondary-bg)};\n\n --#{$prefix}tertiary-color: #{$body-tertiary-color};\n --#{$prefix}tertiary-color-rgb: #{to-rgb($body-tertiary-color)};\n --#{$prefix}tertiary-bg: #{$body-tertiary-bg};\n --#{$prefix}tertiary-bg-rgb: #{to-rgb($body-tertiary-bg)};\n\n @if $body-text-align != null {\n --#{$prefix}body-text-align: #{$body-text-align};\n }\n --#{$prefix}body-bg: #{$body-bg};\n --#{$prefix}body-bg-rgb: #{to-rgb($body-bg)};\n // scss-docs-end root-body-variables\n\n @if $headings-color != null {\n --#{$prefix}heading-color: #{$headings-color};\n }\n\n --#{$prefix}link-color: #{$link-color};\n --#{$prefix}link-color-rgb: #{to-rgb($link-color)};\n --#{$prefix}link-decoration: #{$link-decoration};\n\n --#{$prefix}link-hover-color: #{$link-hover-color};\n --#{$prefix}link-hover-color-rgb: #{to-rgb($link-hover-color)};\n\n @if $link-hover-decoration != null {\n --#{$prefix}link-hover-decoration: #{$link-hover-decoration};\n }\n\n --#{$prefix}code-color: #{$code-color};\n --#{$prefix}highlight-bg: #{$mark-bg};\n\n // scss-docs-start root-border-var\n --#{$prefix}border-width: #{$border-width};\n --#{$prefix}border-style: #{$border-style};\n --#{$prefix}border-color: #{$border-color};\n --#{$prefix}border-color-translucent: #{$border-color-translucent};\n\n --#{$prefix}border-radius: #{$border-radius};\n --#{$prefix}border-radius-sm: #{$border-radius-sm};\n --#{$prefix}border-radius-lg: #{$border-radius-lg};\n --#{$prefix}border-radius-xl: #{$border-radius-xl};\n --#{$prefix}border-radius-2xl: #{$border-radius-2xl};\n --#{$prefix}border-radius-pill: #{$border-radius-pill};\n // scss-docs-end root-border-var\n\n --#{$prefix}box-shadow: #{$box-shadow};\n --#{$prefix}box-shadow-sm: #{$box-shadow-sm};\n --#{$prefix}box-shadow-lg: #{$box-shadow-lg};\n --#{$prefix}box-shadow-inset: #{$box-shadow-inset};\n\n --#{$prefix}emphasis-color: #{$emphasis-color};\n\n // scss-docs-start form-control-vars\n --#{$prefix}form-control-bg: var(--#{$prefix}body-bg);\n --#{$prefix}form-control-disabled-bg: var(--#{$prefix}secondary-bg);\n // scss-docs-end form-control-vars\n\n --#{$prefix}highlight-bg: #{$mark-bg};\n\n @each $name, $value in $grid-breakpoints {\n --#{$prefix}breakpoint-#{$name}: #{$value};\n }\n}\n\n@if $enable-dark-mode {\n @include color-mode(dark, true) {\n // scss-docs-start root-dark-mode-vars\n --#{$prefix}body-color: #{$body-color-dark};\n --#{$prefix}body-color-rgb: #{to-rgb($body-color-dark)};\n --#{$prefix}body-bg: #{$body-bg-dark};\n --#{$prefix}body-bg-rgb: #{to-rgb($body-bg-dark)};\n\n --#{$prefix}emphasis-color: #{$body-emphasis-color-dark};\n --#{$prefix}emphasis-color-rgb: #{to-rgb($body-emphasis-color-dark)};\n\n --#{$prefix}secondary-color: #{$body-secondary-color-dark};\n --#{$prefix}secondary-color-rgb: #{to-rgb($body-secondary-color-dark)};\n --#{$prefix}secondary-bg: #{$body-secondary-bg-dark};\n --#{$prefix}secondary-bg-rgb: #{to-rgb($body-secondary-bg-dark)};\n\n --#{$prefix}tertiary-color: #{$body-tertiary-color-dark};\n --#{$prefix}tertiary-color-rgb: #{to-rgb($body-tertiary-color-dark)};\n --#{$prefix}tertiary-bg: #{$body-tertiary-bg-dark};\n --#{$prefix}tertiary-bg-rgb: #{to-rgb($body-tertiary-bg-dark)};\n\n --#{$prefix}emphasis-color: #{$emphasis-color-dark};\n\n --#{$prefix}primary-text: #{$primary-text-dark};\n --#{$prefix}secondary-text: #{$secondary-text-dark};\n --#{$prefix}success-text: #{$success-text-dark};\n --#{$prefix}info-text: #{$info-text-dark};\n --#{$prefix}warning-text: #{$warning-text-dark};\n --#{$prefix}danger-text: #{$danger-text-dark};\n --#{$prefix}light-text: #{$light-text-dark};\n --#{$prefix}dark-text: #{$dark-text-dark};\n\n --#{$prefix}primary-bg-subtle: #{$primary-bg-subtle-dark};\n --#{$prefix}secondary-bg-subtle: #{$secondary-bg-subtle-dark};\n --#{$prefix}success-bg-subtle: #{$success-bg-subtle-dark};\n --#{$prefix}info-bg-subtle: #{$info-bg-subtle-dark};\n --#{$prefix}warning-bg-subtle: #{$warning-bg-subtle-dark};\n --#{$prefix}danger-bg-subtle: #{$danger-bg-subtle-dark};\n --#{$prefix}light-bg-subtle: #{$light-bg-subtle-dark};\n --#{$prefix}dark-bg-subtle: #{$dark-bg-subtle-dark};\n\n --#{$prefix}primary-border-subtle: #{$primary-border-subtle-dark};\n --#{$prefix}secondary-border-subtle: #{$secondary-border-subtle-dark};\n --#{$prefix}success-border-subtle: #{$success-border-subtle-dark};\n --#{$prefix}info-border-subtle: #{$info-border-subtle-dark};\n --#{$prefix}warning-border-subtle: #{$warning-border-subtle-dark};\n --#{$prefix}danger-border-subtle: #{$danger-border-subtle-dark};\n --#{$prefix}light-border-subtle: #{$light-border-subtle-dark};\n --#{$prefix}dark-border-subtle: #{$dark-border-subtle-dark};\n\n --#{$prefix}heading-color: #{$headings-color-dark};\n\n --#{$prefix}link-color: #{$link-color-dark};\n --#{$prefix}link-hover-color: #{$link-hover-color-dark};\n --#{$prefix}link-color-rgb: #{to-rgb($link-color-dark)};\n --#{$prefix}link-hover-color-rgb: #{to-rgb($link-hover-color-dark)};\n\n --#{$prefix}code-color: #{$code-color-dark};\n\n --#{$prefix}border-color: #{$border-color-dark};\n --#{$prefix}border-color-translucent: #{$border-color-translucent-dark};\n // scss-docs-end root-dark-mode-vars\n }\n}\n","/*!\n * Bootstrap Grid v5.3.0-alpha1 (https://getbootstrap.com/)\n * Copyright 2011-2022 The Bootstrap Authors\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n:root,\n[data-bs-theme=light] {\n --bs-blue: #0d6efd;\n --bs-indigo: #6610f2;\n --bs-purple: #6f42c1;\n --bs-pink: #d63384;\n --bs-red: #dc3545;\n --bs-orange: #fd7e14;\n --bs-yellow: #ffc107;\n --bs-green: #198754;\n --bs-teal: #20c997;\n --bs-cyan: #0dcaf0;\n --bs-black: #000;\n --bs-white: #fff;\n --bs-gray: #6c757d;\n --bs-gray-dark: #343a40;\n --bs-gray-100: #f8f9fa;\n --bs-gray-200: #e9ecef;\n --bs-gray-300: #dee2e6;\n --bs-gray-400: #ced4da;\n --bs-gray-500: #adb5bd;\n --bs-gray-600: #6c757d;\n --bs-gray-700: #495057;\n --bs-gray-800: #343a40;\n --bs-gray-900: #212529;\n --bs-primary: #0d6efd;\n --bs-secondary: #6c757d;\n --bs-success: #198754;\n --bs-info: #0dcaf0;\n --bs-warning: #ffc107;\n --bs-danger: #dc3545;\n --bs-light: #f8f9fa;\n --bs-dark: #212529;\n --bs-primary-rgb: 13, 110, 253;\n --bs-secondary-rgb: 108, 117, 125;\n --bs-success-rgb: 25, 135, 84;\n --bs-info-rgb: 13, 202, 240;\n --bs-warning-rgb: 255, 193, 7;\n --bs-danger-rgb: 220, 53, 69;\n --bs-light-rgb: 248, 249, 250;\n --bs-dark-rgb: 33, 37, 41;\n --bs-primary-text: #0a58ca;\n --bs-secondary-text: #6c757d;\n --bs-success-text: #146c43;\n --bs-info-text: #087990;\n --bs-warning-text: #997404;\n --bs-danger-text: #b02a37;\n --bs-light-text: #6c757d;\n --bs-dark-text: #495057;\n --bs-primary-bg-subtle: #cfe2ff;\n --bs-secondary-bg-subtle: #f8f9fa;\n --bs-success-bg-subtle: #d1e7dd;\n --bs-info-bg-subtle: #cff4fc;\n --bs-warning-bg-subtle: #fff3cd;\n --bs-danger-bg-subtle: #f8d7da;\n --bs-light-bg-subtle: #fcfcfd;\n --bs-dark-bg-subtle: #ced4da;\n --bs-primary-border-subtle: #9ec5fe;\n --bs-secondary-border-subtle: #e9ecef;\n --bs-success-border-subtle: #a3cfbb;\n --bs-info-border-subtle: #9eeaf9;\n --bs-warning-border-subtle: #ffe69c;\n --bs-danger-border-subtle: #f1aeb5;\n --bs-light-border-subtle: #e9ecef;\n --bs-dark-border-subtle: #adb5bd;\n --bs-white-rgb: 255, 255, 255;\n --bs-black-rgb: 0, 0, 0;\n --bs-body-color-rgb: 33, 37, 41;\n --bs-body-bg-rgb: 255, 255, 255;\n --bs-font-sans-serif: system-ui, -apple-system, \"Segoe UI\", Roboto, \"Helvetica Neue\", \"Noto Sans\", \"Liberation Sans\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\n --bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;\n --bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));\n --bs-body-font-family: var(--bs-font-sans-serif);\n --bs-body-font-size: 1rem;\n --bs-body-font-weight: 400;\n --bs-body-line-height: 1.5;\n --bs-body-color: #212529;\n --bs-emphasis-color: #000;\n --bs-emphasis-color-rgb: 0, 0, 0;\n --bs-secondary-color: rgba(33, 37, 41, 0.75);\n --bs-secondary-color-rgb: 33, 37, 41;\n --bs-secondary-bg: #e9ecef;\n --bs-secondary-bg-rgb: 233, 236, 239;\n --bs-tertiary-color: rgba(33, 37, 41, 0.5);\n --bs-tertiary-color-rgb: 33, 37, 41;\n --bs-tertiary-bg: #f8f9fa;\n --bs-tertiary-bg-rgb: 248, 249, 250;\n --bs-body-bg: #fff;\n --bs-body-bg-rgb: 255, 255, 255;\n --bs-link-color: #0d6efd;\n --bs-link-color-rgb: 13, 110, 253;\n --bs-link-decoration: underline;\n --bs-link-hover-color: #0a58ca;\n --bs-link-hover-color-rgb: 10, 88, 202;\n --bs-code-color: #d63384;\n --bs-highlight-bg: #fff3cd;\n --bs-border-width: 1px;\n --bs-border-style: solid;\n --bs-border-color: #dee2e6;\n --bs-border-color-translucent: rgba(0, 0, 0, 0.175);\n --bs-border-radius: 0.375rem;\n --bs-border-radius-sm: 0.25rem;\n --bs-border-radius-lg: 0.5rem;\n --bs-border-radius-xl: 1rem;\n --bs-border-radius-2xl: 2rem;\n --bs-border-radius-pill: 50rem;\n --bs-box-shadow: 0 0.5rem 1rem rgba(var(--bs-body-color-rgb), 0.15);\n --bs-box-shadow-sm: 0 0.125rem 0.25rem rgba(var(--bs-body-color-rgb), 0.075);\n --bs-box-shadow-lg: 0 1rem 3rem rgba(var(--bs-body-color-rgb), 0.175);\n --bs-box-shadow-inset: inset 0 1px 2px rgba(var(--bs-body-color-rgb), 0.075);\n --bs-emphasis-color: #000;\n --bs-form-control-bg: var(--bs-body-bg);\n --bs-form-control-disabled-bg: var(--bs-secondary-bg);\n --bs-highlight-bg: #fff3cd;\n --bs-breakpoint-xs: 0;\n --bs-breakpoint-sm: 576px;\n --bs-breakpoint-md: 768px;\n --bs-breakpoint-lg: 992px;\n --bs-breakpoint-xl: 1200px;\n --bs-breakpoint-xxl: 1400px;\n}\n\n[data-bs-theme=dark] {\n --bs-body-color: #adb5bd;\n --bs-body-color-rgb: 173, 181, 189;\n --bs-body-bg: #212529;\n --bs-body-bg-rgb: 33, 37, 41;\n --bs-emphasis-color: #f8f9fa;\n --bs-emphasis-color-rgb: 248, 249, 250;\n --bs-secondary-color: rgba(173, 181, 189, 0.75);\n --bs-secondary-color-rgb: 173, 181, 189;\n --bs-secondary-bg: #343a40;\n --bs-secondary-bg-rgb: 52, 58, 64;\n --bs-tertiary-color: rgba(173, 181, 189, 0.5);\n --bs-tertiary-color-rgb: 173, 181, 189;\n --bs-tertiary-bg: #2b3035;\n --bs-tertiary-bg-rgb: 43, 48, 53;\n --bs-emphasis-color: #fff;\n --bs-primary-text: #6ea8fe;\n --bs-secondary-text: #dee2e6;\n --bs-success-text: #75b798;\n --bs-info-text: #6edff6;\n --bs-warning-text: #ffda6a;\n --bs-danger-text: #ea868f;\n --bs-light-text: #f8f9fa;\n --bs-dark-text: #dee2e6;\n --bs-primary-bg-subtle: #031633;\n --bs-secondary-bg-subtle: #212529;\n --bs-success-bg-subtle: #051b11;\n --bs-info-bg-subtle: #032830;\n --bs-warning-bg-subtle: #332701;\n --bs-danger-bg-subtle: #2c0b0e;\n --bs-light-bg-subtle: #343a40;\n --bs-dark-bg-subtle: #1a1d20;\n --bs-primary-border-subtle: #084298;\n --bs-secondary-border-subtle: #495057;\n --bs-success-border-subtle: #0f5132;\n --bs-info-border-subtle: #055160;\n --bs-warning-border-subtle: #664d03;\n --bs-danger-border-subtle: #842029;\n --bs-light-border-subtle: #495057;\n --bs-dark-border-subtle: #343a40;\n --bs-heading-color: #fff;\n --bs-link-color: #6ea8fe;\n --bs-link-hover-color: #9ec5fe;\n --bs-link-color-rgb: 110, 168, 254;\n --bs-link-hover-color-rgb: 158, 197, 254;\n --bs-code-color: #e685b5;\n --bs-border-color: #495057;\n --bs-border-color-translucent: rgba(255, 255, 255, 0.15);\n}\n\n.container,\n.container-fluid,\n.container-xxl,\n.container-xl,\n.container-lg,\n.container-md,\n.container-sm {\n --bs-gutter-x: 1.5rem;\n --bs-gutter-y: 0;\n width: 100%;\n padding-right: calc(var(--bs-gutter-x) * 0.5);\n padding-left: calc(var(--bs-gutter-x) * 0.5);\n margin-right: auto;\n margin-left: auto;\n}\n\n@media (min-width: 576px) {\n .container-sm, .container {\n max-width: 540px;\n }\n}\n@media (min-width: 768px) {\n .container-md, .container-sm, .container {\n max-width: 720px;\n }\n}\n@media (min-width: 992px) {\n .container-lg, .container-md, .container-sm, .container {\n max-width: 960px;\n }\n}\n@media (min-width: 1200px) {\n .container-xl, .container-lg, .container-md, .container-sm, .container {\n max-width: 1140px;\n }\n}\n@media (min-width: 1400px) {\n .container-xxl, .container-xl, .container-lg, .container-md, .container-sm, .container {\n max-width: 1320px;\n }\n}\n.row {\n --bs-gutter-x: 1.5rem;\n --bs-gutter-y: 0;\n display: flex;\n flex-wrap: wrap;\n margin-top: calc(-1 * var(--bs-gutter-y));\n margin-right: calc(-0.5 * var(--bs-gutter-x));\n margin-left: calc(-0.5 * var(--bs-gutter-x));\n}\n.row > * {\n box-sizing: border-box;\n flex-shrink: 0;\n width: 100%;\n max-width: 100%;\n padding-right: calc(var(--bs-gutter-x) * 0.5);\n padding-left: calc(var(--bs-gutter-x) * 0.5);\n margin-top: var(--bs-gutter-y);\n}\n\n.col {\n flex: 1 0 0%;\n}\n\n.row-cols-auto > * {\n flex: 0 0 auto;\n width: auto;\n}\n\n.row-cols-1 > * {\n flex: 0 0 auto;\n width: 100%;\n}\n\n.row-cols-2 > * {\n flex: 0 0 auto;\n width: 50%;\n}\n\n.row-cols-3 > * {\n flex: 0 0 auto;\n width: 33.3333333333%;\n}\n\n.row-cols-4 > * {\n flex: 0 0 auto;\n width: 25%;\n}\n\n.row-cols-5 > * {\n flex: 0 0 auto;\n width: 20%;\n}\n\n.row-cols-6 > * {\n flex: 0 0 auto;\n width: 16.6666666667%;\n}\n\n.col-auto {\n flex: 0 0 auto;\n width: auto;\n}\n\n.col-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n}\n\n.col-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n}\n\n.col-3 {\n flex: 0 0 auto;\n width: 25%;\n}\n\n.col-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n}\n\n.col-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n}\n\n.col-6 {\n flex: 0 0 auto;\n width: 50%;\n}\n\n.col-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n}\n\n.col-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n}\n\n.col-9 {\n flex: 0 0 auto;\n width: 75%;\n}\n\n.col-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n}\n\n.col-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n}\n\n.col-12 {\n flex: 0 0 auto;\n width: 100%;\n}\n\n.offset-1 {\n margin-left: 8.33333333%;\n}\n\n.offset-2 {\n margin-left: 16.66666667%;\n}\n\n.offset-3 {\n margin-left: 25%;\n}\n\n.offset-4 {\n margin-left: 33.33333333%;\n}\n\n.offset-5 {\n margin-left: 41.66666667%;\n}\n\n.offset-6 {\n margin-left: 50%;\n}\n\n.offset-7 {\n margin-left: 58.33333333%;\n}\n\n.offset-8 {\n margin-left: 66.66666667%;\n}\n\n.offset-9 {\n margin-left: 75%;\n}\n\n.offset-10 {\n margin-left: 83.33333333%;\n}\n\n.offset-11 {\n margin-left: 91.66666667%;\n}\n\n.g-0,\n.gx-0 {\n --bs-gutter-x: 0;\n}\n\n.g-0,\n.gy-0 {\n --bs-gutter-y: 0;\n}\n\n.g-1,\n.gx-1 {\n --bs-gutter-x: 0.25rem;\n}\n\n.g-1,\n.gy-1 {\n --bs-gutter-y: 0.25rem;\n}\n\n.g-2,\n.gx-2 {\n --bs-gutter-x: 0.5rem;\n}\n\n.g-2,\n.gy-2 {\n --bs-gutter-y: 0.5rem;\n}\n\n.g-3,\n.gx-3 {\n --bs-gutter-x: 1rem;\n}\n\n.g-3,\n.gy-3 {\n --bs-gutter-y: 1rem;\n}\n\n.g-4,\n.gx-4 {\n --bs-gutter-x: 1.5rem;\n}\n\n.g-4,\n.gy-4 {\n --bs-gutter-y: 1.5rem;\n}\n\n.g-5,\n.gx-5 {\n --bs-gutter-x: 3rem;\n}\n\n.g-5,\n.gy-5 {\n --bs-gutter-y: 3rem;\n}\n\n@media (min-width: 576px) {\n .col-sm {\n flex: 1 0 0%;\n }\n .row-cols-sm-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-sm-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-sm-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-sm-3 > * {\n flex: 0 0 auto;\n width: 33.3333333333%;\n }\n .row-cols-sm-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-sm-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-sm-6 > * {\n flex: 0 0 auto;\n width: 16.6666666667%;\n }\n .col-sm-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-sm-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-sm-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-sm-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-sm-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-sm-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-sm-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-sm-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-sm-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-sm-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-sm-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-sm-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-sm-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-sm-0 {\n margin-left: 0;\n }\n .offset-sm-1 {\n margin-left: 8.33333333%;\n }\n .offset-sm-2 {\n margin-left: 16.66666667%;\n }\n .offset-sm-3 {\n margin-left: 25%;\n }\n .offset-sm-4 {\n margin-left: 33.33333333%;\n }\n .offset-sm-5 {\n margin-left: 41.66666667%;\n }\n .offset-sm-6 {\n margin-left: 50%;\n }\n .offset-sm-7 {\n margin-left: 58.33333333%;\n }\n .offset-sm-8 {\n margin-left: 66.66666667%;\n }\n .offset-sm-9 {\n margin-left: 75%;\n }\n .offset-sm-10 {\n margin-left: 83.33333333%;\n }\n .offset-sm-11 {\n margin-left: 91.66666667%;\n }\n .g-sm-0,\n .gx-sm-0 {\n --bs-gutter-x: 0;\n }\n .g-sm-0,\n .gy-sm-0 {\n --bs-gutter-y: 0;\n }\n .g-sm-1,\n .gx-sm-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-sm-1,\n .gy-sm-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-sm-2,\n .gx-sm-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-sm-2,\n .gy-sm-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-sm-3,\n .gx-sm-3 {\n --bs-gutter-x: 1rem;\n }\n .g-sm-3,\n .gy-sm-3 {\n --bs-gutter-y: 1rem;\n }\n .g-sm-4,\n .gx-sm-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-sm-4,\n .gy-sm-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-sm-5,\n .gx-sm-5 {\n --bs-gutter-x: 3rem;\n }\n .g-sm-5,\n .gy-sm-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 768px) {\n .col-md {\n flex: 1 0 0%;\n }\n .row-cols-md-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-md-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-md-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-md-3 > * {\n flex: 0 0 auto;\n width: 33.3333333333%;\n }\n .row-cols-md-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-md-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-md-6 > * {\n flex: 0 0 auto;\n width: 16.6666666667%;\n }\n .col-md-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-md-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-md-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-md-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-md-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-md-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-md-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-md-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-md-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-md-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-md-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-md-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-md-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-md-0 {\n margin-left: 0;\n }\n .offset-md-1 {\n margin-left: 8.33333333%;\n }\n .offset-md-2 {\n margin-left: 16.66666667%;\n }\n .offset-md-3 {\n margin-left: 25%;\n }\n .offset-md-4 {\n margin-left: 33.33333333%;\n }\n .offset-md-5 {\n margin-left: 41.66666667%;\n }\n .offset-md-6 {\n margin-left: 50%;\n }\n .offset-md-7 {\n margin-left: 58.33333333%;\n }\n .offset-md-8 {\n margin-left: 66.66666667%;\n }\n .offset-md-9 {\n margin-left: 75%;\n }\n .offset-md-10 {\n margin-left: 83.33333333%;\n }\n .offset-md-11 {\n margin-left: 91.66666667%;\n }\n .g-md-0,\n .gx-md-0 {\n --bs-gutter-x: 0;\n }\n .g-md-0,\n .gy-md-0 {\n --bs-gutter-y: 0;\n }\n .g-md-1,\n .gx-md-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-md-1,\n .gy-md-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-md-2,\n .gx-md-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-md-2,\n .gy-md-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-md-3,\n .gx-md-3 {\n --bs-gutter-x: 1rem;\n }\n .g-md-3,\n .gy-md-3 {\n --bs-gutter-y: 1rem;\n }\n .g-md-4,\n .gx-md-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-md-4,\n .gy-md-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-md-5,\n .gx-md-5 {\n --bs-gutter-x: 3rem;\n }\n .g-md-5,\n .gy-md-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 992px) {\n .col-lg {\n flex: 1 0 0%;\n }\n .row-cols-lg-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-lg-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-lg-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-lg-3 > * {\n flex: 0 0 auto;\n width: 33.3333333333%;\n }\n .row-cols-lg-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-lg-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-lg-6 > * {\n flex: 0 0 auto;\n width: 16.6666666667%;\n }\n .col-lg-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-lg-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-lg-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-lg-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-lg-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-lg-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-lg-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-lg-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-lg-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-lg-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-lg-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-lg-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-lg-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-lg-0 {\n margin-left: 0;\n }\n .offset-lg-1 {\n margin-left: 8.33333333%;\n }\n .offset-lg-2 {\n margin-left: 16.66666667%;\n }\n .offset-lg-3 {\n margin-left: 25%;\n }\n .offset-lg-4 {\n margin-left: 33.33333333%;\n }\n .offset-lg-5 {\n margin-left: 41.66666667%;\n }\n .offset-lg-6 {\n margin-left: 50%;\n }\n .offset-lg-7 {\n margin-left: 58.33333333%;\n }\n .offset-lg-8 {\n margin-left: 66.66666667%;\n }\n .offset-lg-9 {\n margin-left: 75%;\n }\n .offset-lg-10 {\n margin-left: 83.33333333%;\n }\n .offset-lg-11 {\n margin-left: 91.66666667%;\n }\n .g-lg-0,\n .gx-lg-0 {\n --bs-gutter-x: 0;\n }\n .g-lg-0,\n .gy-lg-0 {\n --bs-gutter-y: 0;\n }\n .g-lg-1,\n .gx-lg-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-lg-1,\n .gy-lg-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-lg-2,\n .gx-lg-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-lg-2,\n .gy-lg-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-lg-3,\n .gx-lg-3 {\n --bs-gutter-x: 1rem;\n }\n .g-lg-3,\n .gy-lg-3 {\n --bs-gutter-y: 1rem;\n }\n .g-lg-4,\n .gx-lg-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-lg-4,\n .gy-lg-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-lg-5,\n .gx-lg-5 {\n --bs-gutter-x: 3rem;\n }\n .g-lg-5,\n .gy-lg-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 1200px) {\n .col-xl {\n flex: 1 0 0%;\n }\n .row-cols-xl-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-xl-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-xl-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-xl-3 > * {\n flex: 0 0 auto;\n width: 33.3333333333%;\n }\n .row-cols-xl-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-xl-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-xl-6 > * {\n flex: 0 0 auto;\n width: 16.6666666667%;\n }\n .col-xl-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-xl-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-xl-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-xl-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-xl-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-xl-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-xl-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-xl-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-xl-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-xl-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-xl-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-xl-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-xl-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-xl-0 {\n margin-left: 0;\n }\n .offset-xl-1 {\n margin-left: 8.33333333%;\n }\n .offset-xl-2 {\n margin-left: 16.66666667%;\n }\n .offset-xl-3 {\n margin-left: 25%;\n }\n .offset-xl-4 {\n margin-left: 33.33333333%;\n }\n .offset-xl-5 {\n margin-left: 41.66666667%;\n }\n .offset-xl-6 {\n margin-left: 50%;\n }\n .offset-xl-7 {\n margin-left: 58.33333333%;\n }\n .offset-xl-8 {\n margin-left: 66.66666667%;\n }\n .offset-xl-9 {\n margin-left: 75%;\n }\n .offset-xl-10 {\n margin-left: 83.33333333%;\n }\n .offset-xl-11 {\n margin-left: 91.66666667%;\n }\n .g-xl-0,\n .gx-xl-0 {\n --bs-gutter-x: 0;\n }\n .g-xl-0,\n .gy-xl-0 {\n --bs-gutter-y: 0;\n }\n .g-xl-1,\n .gx-xl-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-xl-1,\n .gy-xl-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-xl-2,\n .gx-xl-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-xl-2,\n .gy-xl-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-xl-3,\n .gx-xl-3 {\n --bs-gutter-x: 1rem;\n }\n .g-xl-3,\n .gy-xl-3 {\n --bs-gutter-y: 1rem;\n }\n .g-xl-4,\n .gx-xl-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-xl-4,\n .gy-xl-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-xl-5,\n .gx-xl-5 {\n --bs-gutter-x: 3rem;\n }\n .g-xl-5,\n .gy-xl-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 1400px) {\n .col-xxl {\n flex: 1 0 0%;\n }\n .row-cols-xxl-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-xxl-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-xxl-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-xxl-3 > * {\n flex: 0 0 auto;\n width: 33.3333333333%;\n }\n .row-cols-xxl-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-xxl-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-xxl-6 > * {\n flex: 0 0 auto;\n width: 16.6666666667%;\n }\n .col-xxl-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-xxl-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-xxl-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-xxl-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-xxl-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-xxl-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-xxl-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-xxl-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-xxl-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-xxl-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-xxl-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-xxl-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-xxl-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-xxl-0 {\n margin-left: 0;\n }\n .offset-xxl-1 {\n margin-left: 8.33333333%;\n }\n .offset-xxl-2 {\n margin-left: 16.66666667%;\n }\n .offset-xxl-3 {\n margin-left: 25%;\n }\n .offset-xxl-4 {\n margin-left: 33.33333333%;\n }\n .offset-xxl-5 {\n margin-left: 41.66666667%;\n }\n .offset-xxl-6 {\n margin-left: 50%;\n }\n .offset-xxl-7 {\n margin-left: 58.33333333%;\n }\n .offset-xxl-8 {\n margin-left: 66.66666667%;\n }\n .offset-xxl-9 {\n margin-left: 75%;\n }\n .offset-xxl-10 {\n margin-left: 83.33333333%;\n }\n .offset-xxl-11 {\n margin-left: 91.66666667%;\n }\n .g-xxl-0,\n .gx-xxl-0 {\n --bs-gutter-x: 0;\n }\n .g-xxl-0,\n .gy-xxl-0 {\n --bs-gutter-y: 0;\n }\n .g-xxl-1,\n .gx-xxl-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-xxl-1,\n .gy-xxl-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-xxl-2,\n .gx-xxl-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-xxl-2,\n .gy-xxl-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-xxl-3,\n .gx-xxl-3 {\n --bs-gutter-x: 1rem;\n }\n .g-xxl-3,\n .gy-xxl-3 {\n --bs-gutter-y: 1rem;\n }\n .g-xxl-4,\n .gx-xxl-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-xxl-4,\n .gy-xxl-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-xxl-5,\n .gx-xxl-5 {\n --bs-gutter-x: 3rem;\n }\n .g-xxl-5,\n .gy-xxl-5 {\n --bs-gutter-y: 3rem;\n }\n}\n.d-inline {\n display: inline !important;\n}\n\n.d-inline-block {\n display: inline-block !important;\n}\n\n.d-block {\n display: block !important;\n}\n\n.d-grid {\n display: grid !important;\n}\n\n.d-table {\n display: table !important;\n}\n\n.d-table-row {\n display: table-row !important;\n}\n\n.d-table-cell {\n display: table-cell !important;\n}\n\n.d-flex {\n display: flex !important;\n}\n\n.d-inline-flex {\n display: inline-flex !important;\n}\n\n.d-none {\n display: none !important;\n}\n\n.flex-fill {\n flex: 1 1 auto !important;\n}\n\n.flex-row {\n flex-direction: row !important;\n}\n\n.flex-column {\n flex-direction: column !important;\n}\n\n.flex-row-reverse {\n flex-direction: row-reverse !important;\n}\n\n.flex-column-reverse {\n flex-direction: column-reverse !important;\n}\n\n.flex-grow-0 {\n flex-grow: 0 !important;\n}\n\n.flex-grow-1 {\n flex-grow: 1 !important;\n}\n\n.flex-shrink-0 {\n flex-shrink: 0 !important;\n}\n\n.flex-shrink-1 {\n flex-shrink: 1 !important;\n}\n\n.flex-wrap {\n flex-wrap: wrap !important;\n}\n\n.flex-nowrap {\n flex-wrap: nowrap !important;\n}\n\n.flex-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n}\n\n.justify-content-start {\n justify-content: flex-start !important;\n}\n\n.justify-content-end {\n justify-content: flex-end !important;\n}\n\n.justify-content-center {\n justify-content: center !important;\n}\n\n.justify-content-between {\n justify-content: space-between !important;\n}\n\n.justify-content-around {\n justify-content: space-around !important;\n}\n\n.justify-content-evenly {\n justify-content: space-evenly !important;\n}\n\n.align-items-start {\n align-items: flex-start !important;\n}\n\n.align-items-end {\n align-items: flex-end !important;\n}\n\n.align-items-center {\n align-items: center !important;\n}\n\n.align-items-baseline {\n align-items: baseline !important;\n}\n\n.align-items-stretch {\n align-items: stretch !important;\n}\n\n.align-content-start {\n align-content: flex-start !important;\n}\n\n.align-content-end {\n align-content: flex-end !important;\n}\n\n.align-content-center {\n align-content: center !important;\n}\n\n.align-content-between {\n align-content: space-between !important;\n}\n\n.align-content-around {\n align-content: space-around !important;\n}\n\n.align-content-stretch {\n align-content: stretch !important;\n}\n\n.align-self-auto {\n align-self: auto !important;\n}\n\n.align-self-start {\n align-self: flex-start !important;\n}\n\n.align-self-end {\n align-self: flex-end !important;\n}\n\n.align-self-center {\n align-self: center !important;\n}\n\n.align-self-baseline {\n align-self: baseline !important;\n}\n\n.align-self-stretch {\n align-self: stretch !important;\n}\n\n.order-first {\n order: -1 !important;\n}\n\n.order-0 {\n order: 0 !important;\n}\n\n.order-1 {\n order: 1 !important;\n}\n\n.order-2 {\n order: 2 !important;\n}\n\n.order-3 {\n order: 3 !important;\n}\n\n.order-4 {\n order: 4 !important;\n}\n\n.order-5 {\n order: 5 !important;\n}\n\n.order-last {\n order: 6 !important;\n}\n\n.m-0 {\n margin: 0 !important;\n}\n\n.m-1 {\n margin: 0.25rem !important;\n}\n\n.m-2 {\n margin: 0.5rem !important;\n}\n\n.m-3 {\n margin: 1rem !important;\n}\n\n.m-4 {\n margin: 1.5rem !important;\n}\n\n.m-5 {\n margin: 3rem !important;\n}\n\n.m-auto {\n margin: auto !important;\n}\n\n.mx-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n}\n\n.mx-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n}\n\n.mx-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n}\n\n.mx-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n}\n\n.mx-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n}\n\n.mx-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n}\n\n.mx-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n}\n\n.my-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n}\n\n.my-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n}\n\n.my-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n}\n\n.my-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n}\n\n.my-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n}\n\n.my-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n}\n\n.my-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n}\n\n.mt-0 {\n margin-top: 0 !important;\n}\n\n.mt-1 {\n margin-top: 0.25rem !important;\n}\n\n.mt-2 {\n margin-top: 0.5rem !important;\n}\n\n.mt-3 {\n margin-top: 1rem !important;\n}\n\n.mt-4 {\n margin-top: 1.5rem !important;\n}\n\n.mt-5 {\n margin-top: 3rem !important;\n}\n\n.mt-auto {\n margin-top: auto !important;\n}\n\n.me-0 {\n margin-right: 0 !important;\n}\n\n.me-1 {\n margin-right: 0.25rem !important;\n}\n\n.me-2 {\n margin-right: 0.5rem !important;\n}\n\n.me-3 {\n margin-right: 1rem !important;\n}\n\n.me-4 {\n margin-right: 1.5rem !important;\n}\n\n.me-5 {\n margin-right: 3rem !important;\n}\n\n.me-auto {\n margin-right: auto !important;\n}\n\n.mb-0 {\n margin-bottom: 0 !important;\n}\n\n.mb-1 {\n margin-bottom: 0.25rem !important;\n}\n\n.mb-2 {\n margin-bottom: 0.5rem !important;\n}\n\n.mb-3 {\n margin-bottom: 1rem !important;\n}\n\n.mb-4 {\n margin-bottom: 1.5rem !important;\n}\n\n.mb-5 {\n margin-bottom: 3rem !important;\n}\n\n.mb-auto {\n margin-bottom: auto !important;\n}\n\n.ms-0 {\n margin-left: 0 !important;\n}\n\n.ms-1 {\n margin-left: 0.25rem !important;\n}\n\n.ms-2 {\n margin-left: 0.5rem !important;\n}\n\n.ms-3 {\n margin-left: 1rem !important;\n}\n\n.ms-4 {\n margin-left: 1.5rem !important;\n}\n\n.ms-5 {\n margin-left: 3rem !important;\n}\n\n.ms-auto {\n margin-left: auto !important;\n}\n\n.p-0 {\n padding: 0 !important;\n}\n\n.p-1 {\n padding: 0.25rem !important;\n}\n\n.p-2 {\n padding: 0.5rem !important;\n}\n\n.p-3 {\n padding: 1rem !important;\n}\n\n.p-4 {\n padding: 1.5rem !important;\n}\n\n.p-5 {\n padding: 3rem !important;\n}\n\n.px-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n}\n\n.px-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n}\n\n.px-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n}\n\n.px-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n}\n\n.px-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n}\n\n.px-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n}\n\n.py-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n}\n\n.py-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n}\n\n.py-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n}\n\n.py-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n}\n\n.py-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n}\n\n.py-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n}\n\n.pt-0 {\n padding-top: 0 !important;\n}\n\n.pt-1 {\n padding-top: 0.25rem !important;\n}\n\n.pt-2 {\n padding-top: 0.5rem !important;\n}\n\n.pt-3 {\n padding-top: 1rem !important;\n}\n\n.pt-4 {\n padding-top: 1.5rem !important;\n}\n\n.pt-5 {\n padding-top: 3rem !important;\n}\n\n.pe-0 {\n padding-right: 0 !important;\n}\n\n.pe-1 {\n padding-right: 0.25rem !important;\n}\n\n.pe-2 {\n padding-right: 0.5rem !important;\n}\n\n.pe-3 {\n padding-right: 1rem !important;\n}\n\n.pe-4 {\n padding-right: 1.5rem !important;\n}\n\n.pe-5 {\n padding-right: 3rem !important;\n}\n\n.pb-0 {\n padding-bottom: 0 !important;\n}\n\n.pb-1 {\n padding-bottom: 0.25rem !important;\n}\n\n.pb-2 {\n padding-bottom: 0.5rem !important;\n}\n\n.pb-3 {\n padding-bottom: 1rem !important;\n}\n\n.pb-4 {\n padding-bottom: 1.5rem !important;\n}\n\n.pb-5 {\n padding-bottom: 3rem !important;\n}\n\n.ps-0 {\n padding-left: 0 !important;\n}\n\n.ps-1 {\n padding-left: 0.25rem !important;\n}\n\n.ps-2 {\n padding-left: 0.5rem !important;\n}\n\n.ps-3 {\n padding-left: 1rem !important;\n}\n\n.ps-4 {\n padding-left: 1.5rem !important;\n}\n\n.ps-5 {\n padding-left: 3rem !important;\n}\n\n@media (min-width: 576px) {\n .d-sm-inline {\n display: inline !important;\n }\n .d-sm-inline-block {\n display: inline-block !important;\n }\n .d-sm-block {\n display: block !important;\n }\n .d-sm-grid {\n display: grid !important;\n }\n .d-sm-table {\n display: table !important;\n }\n .d-sm-table-row {\n display: table-row !important;\n }\n .d-sm-table-cell {\n display: table-cell !important;\n }\n .d-sm-flex {\n display: flex !important;\n }\n .d-sm-inline-flex {\n display: inline-flex !important;\n }\n .d-sm-none {\n display: none !important;\n }\n .flex-sm-fill {\n flex: 1 1 auto !important;\n }\n .flex-sm-row {\n flex-direction: row !important;\n }\n .flex-sm-column {\n flex-direction: column !important;\n }\n .flex-sm-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-sm-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-sm-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-sm-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-sm-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-sm-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-sm-wrap {\n flex-wrap: wrap !important;\n }\n .flex-sm-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-sm-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-sm-start {\n justify-content: flex-start !important;\n }\n .justify-content-sm-end {\n justify-content: flex-end !important;\n }\n .justify-content-sm-center {\n justify-content: center !important;\n }\n .justify-content-sm-between {\n justify-content: space-between !important;\n }\n .justify-content-sm-around {\n justify-content: space-around !important;\n }\n .justify-content-sm-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-sm-start {\n align-items: flex-start !important;\n }\n .align-items-sm-end {\n align-items: flex-end !important;\n }\n .align-items-sm-center {\n align-items: center !important;\n }\n .align-items-sm-baseline {\n align-items: baseline !important;\n }\n .align-items-sm-stretch {\n align-items: stretch !important;\n }\n .align-content-sm-start {\n align-content: flex-start !important;\n }\n .align-content-sm-end {\n align-content: flex-end !important;\n }\n .align-content-sm-center {\n align-content: center !important;\n }\n .align-content-sm-between {\n align-content: space-between !important;\n }\n .align-content-sm-around {\n align-content: space-around !important;\n }\n .align-content-sm-stretch {\n align-content: stretch !important;\n }\n .align-self-sm-auto {\n align-self: auto !important;\n }\n .align-self-sm-start {\n align-self: flex-start !important;\n }\n .align-self-sm-end {\n align-self: flex-end !important;\n }\n .align-self-sm-center {\n align-self: center !important;\n }\n .align-self-sm-baseline {\n align-self: baseline !important;\n }\n .align-self-sm-stretch {\n align-self: stretch !important;\n }\n .order-sm-first {\n order: -1 !important;\n }\n .order-sm-0 {\n order: 0 !important;\n }\n .order-sm-1 {\n order: 1 !important;\n }\n .order-sm-2 {\n order: 2 !important;\n }\n .order-sm-3 {\n order: 3 !important;\n }\n .order-sm-4 {\n order: 4 !important;\n }\n .order-sm-5 {\n order: 5 !important;\n }\n .order-sm-last {\n order: 6 !important;\n }\n .m-sm-0 {\n margin: 0 !important;\n }\n .m-sm-1 {\n margin: 0.25rem !important;\n }\n .m-sm-2 {\n margin: 0.5rem !important;\n }\n .m-sm-3 {\n margin: 1rem !important;\n }\n .m-sm-4 {\n margin: 1.5rem !important;\n }\n .m-sm-5 {\n margin: 3rem !important;\n }\n .m-sm-auto {\n margin: auto !important;\n }\n .mx-sm-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-sm-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-sm-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-sm-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-sm-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-sm-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-sm-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-sm-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-sm-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-sm-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-sm-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-sm-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-sm-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-sm-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-sm-0 {\n margin-top: 0 !important;\n }\n .mt-sm-1 {\n margin-top: 0.25rem !important;\n }\n .mt-sm-2 {\n margin-top: 0.5rem !important;\n }\n .mt-sm-3 {\n margin-top: 1rem !important;\n }\n .mt-sm-4 {\n margin-top: 1.5rem !important;\n }\n .mt-sm-5 {\n margin-top: 3rem !important;\n }\n .mt-sm-auto {\n margin-top: auto !important;\n }\n .me-sm-0 {\n margin-right: 0 !important;\n }\n .me-sm-1 {\n margin-right: 0.25rem !important;\n }\n .me-sm-2 {\n margin-right: 0.5rem !important;\n }\n .me-sm-3 {\n margin-right: 1rem !important;\n }\n .me-sm-4 {\n margin-right: 1.5rem !important;\n }\n .me-sm-5 {\n margin-right: 3rem !important;\n }\n .me-sm-auto {\n margin-right: auto !important;\n }\n .mb-sm-0 {\n margin-bottom: 0 !important;\n }\n .mb-sm-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-sm-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-sm-3 {\n margin-bottom: 1rem !important;\n }\n .mb-sm-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-sm-5 {\n margin-bottom: 3rem !important;\n }\n .mb-sm-auto {\n margin-bottom: auto !important;\n }\n .ms-sm-0 {\n margin-left: 0 !important;\n }\n .ms-sm-1 {\n margin-left: 0.25rem !important;\n }\n .ms-sm-2 {\n margin-left: 0.5rem !important;\n }\n .ms-sm-3 {\n margin-left: 1rem !important;\n }\n .ms-sm-4 {\n margin-left: 1.5rem !important;\n }\n .ms-sm-5 {\n margin-left: 3rem !important;\n }\n .ms-sm-auto {\n margin-left: auto !important;\n }\n .p-sm-0 {\n padding: 0 !important;\n }\n .p-sm-1 {\n padding: 0.25rem !important;\n }\n .p-sm-2 {\n padding: 0.5rem !important;\n }\n .p-sm-3 {\n padding: 1rem !important;\n }\n .p-sm-4 {\n padding: 1.5rem !important;\n }\n .p-sm-5 {\n padding: 3rem !important;\n }\n .px-sm-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-sm-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-sm-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-sm-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-sm-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-sm-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-sm-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-sm-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-sm-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-sm-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-sm-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-sm-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-sm-0 {\n padding-top: 0 !important;\n }\n .pt-sm-1 {\n padding-top: 0.25rem !important;\n }\n .pt-sm-2 {\n padding-top: 0.5rem !important;\n }\n .pt-sm-3 {\n padding-top: 1rem !important;\n }\n .pt-sm-4 {\n padding-top: 1.5rem !important;\n }\n .pt-sm-5 {\n padding-top: 3rem !important;\n }\n .pe-sm-0 {\n padding-right: 0 !important;\n }\n .pe-sm-1 {\n padding-right: 0.25rem !important;\n }\n .pe-sm-2 {\n padding-right: 0.5rem !important;\n }\n .pe-sm-3 {\n padding-right: 1rem !important;\n }\n .pe-sm-4 {\n padding-right: 1.5rem !important;\n }\n .pe-sm-5 {\n padding-right: 3rem !important;\n }\n .pb-sm-0 {\n padding-bottom: 0 !important;\n }\n .pb-sm-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-sm-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-sm-3 {\n padding-bottom: 1rem !important;\n }\n .pb-sm-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-sm-5 {\n padding-bottom: 3rem !important;\n }\n .ps-sm-0 {\n padding-left: 0 !important;\n }\n .ps-sm-1 {\n padding-left: 0.25rem !important;\n }\n .ps-sm-2 {\n padding-left: 0.5rem !important;\n }\n .ps-sm-3 {\n padding-left: 1rem !important;\n }\n .ps-sm-4 {\n padding-left: 1.5rem !important;\n }\n .ps-sm-5 {\n padding-left: 3rem !important;\n }\n}\n@media (min-width: 768px) {\n .d-md-inline {\n display: inline !important;\n }\n .d-md-inline-block {\n display: inline-block !important;\n }\n .d-md-block {\n display: block !important;\n }\n .d-md-grid {\n display: grid !important;\n }\n .d-md-table {\n display: table !important;\n }\n .d-md-table-row {\n display: table-row !important;\n }\n .d-md-table-cell {\n display: table-cell !important;\n }\n .d-md-flex {\n display: flex !important;\n }\n .d-md-inline-flex {\n display: inline-flex !important;\n }\n .d-md-none {\n display: none !important;\n }\n .flex-md-fill {\n flex: 1 1 auto !important;\n }\n .flex-md-row {\n flex-direction: row !important;\n }\n .flex-md-column {\n flex-direction: column !important;\n }\n .flex-md-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-md-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-md-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-md-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-md-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-md-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-md-wrap {\n flex-wrap: wrap !important;\n }\n .flex-md-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-md-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-md-start {\n justify-content: flex-start !important;\n }\n .justify-content-md-end {\n justify-content: flex-end !important;\n }\n .justify-content-md-center {\n justify-content: center !important;\n }\n .justify-content-md-between {\n justify-content: space-between !important;\n }\n .justify-content-md-around {\n justify-content: space-around !important;\n }\n .justify-content-md-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-md-start {\n align-items: flex-start !important;\n }\n .align-items-md-end {\n align-items: flex-end !important;\n }\n .align-items-md-center {\n align-items: center !important;\n }\n .align-items-md-baseline {\n align-items: baseline !important;\n }\n .align-items-md-stretch {\n align-items: stretch !important;\n }\n .align-content-md-start {\n align-content: flex-start !important;\n }\n .align-content-md-end {\n align-content: flex-end !important;\n }\n .align-content-md-center {\n align-content: center !important;\n }\n .align-content-md-between {\n align-content: space-between !important;\n }\n .align-content-md-around {\n align-content: space-around !important;\n }\n .align-content-md-stretch {\n align-content: stretch !important;\n }\n .align-self-md-auto {\n align-self: auto !important;\n }\n .align-self-md-start {\n align-self: flex-start !important;\n }\n .align-self-md-end {\n align-self: flex-end !important;\n }\n .align-self-md-center {\n align-self: center !important;\n }\n .align-self-md-baseline {\n align-self: baseline !important;\n }\n .align-self-md-stretch {\n align-self: stretch !important;\n }\n .order-md-first {\n order: -1 !important;\n }\n .order-md-0 {\n order: 0 !important;\n }\n .order-md-1 {\n order: 1 !important;\n }\n .order-md-2 {\n order: 2 !important;\n }\n .order-md-3 {\n order: 3 !important;\n }\n .order-md-4 {\n order: 4 !important;\n }\n .order-md-5 {\n order: 5 !important;\n }\n .order-md-last {\n order: 6 !important;\n }\n .m-md-0 {\n margin: 0 !important;\n }\n .m-md-1 {\n margin: 0.25rem !important;\n }\n .m-md-2 {\n margin: 0.5rem !important;\n }\n .m-md-3 {\n margin: 1rem !important;\n }\n .m-md-4 {\n margin: 1.5rem !important;\n }\n .m-md-5 {\n margin: 3rem !important;\n }\n .m-md-auto {\n margin: auto !important;\n }\n .mx-md-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-md-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-md-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-md-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-md-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-md-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-md-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-md-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-md-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-md-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-md-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-md-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-md-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-md-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-md-0 {\n margin-top: 0 !important;\n }\n .mt-md-1 {\n margin-top: 0.25rem !important;\n }\n .mt-md-2 {\n margin-top: 0.5rem !important;\n }\n .mt-md-3 {\n margin-top: 1rem !important;\n }\n .mt-md-4 {\n margin-top: 1.5rem !important;\n }\n .mt-md-5 {\n margin-top: 3rem !important;\n }\n .mt-md-auto {\n margin-top: auto !important;\n }\n .me-md-0 {\n margin-right: 0 !important;\n }\n .me-md-1 {\n margin-right: 0.25rem !important;\n }\n .me-md-2 {\n margin-right: 0.5rem !important;\n }\n .me-md-3 {\n margin-right: 1rem !important;\n }\n .me-md-4 {\n margin-right: 1.5rem !important;\n }\n .me-md-5 {\n margin-right: 3rem !important;\n }\n .me-md-auto {\n margin-right: auto !important;\n }\n .mb-md-0 {\n margin-bottom: 0 !important;\n }\n .mb-md-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-md-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-md-3 {\n margin-bottom: 1rem !important;\n }\n .mb-md-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-md-5 {\n margin-bottom: 3rem !important;\n }\n .mb-md-auto {\n margin-bottom: auto !important;\n }\n .ms-md-0 {\n margin-left: 0 !important;\n }\n .ms-md-1 {\n margin-left: 0.25rem !important;\n }\n .ms-md-2 {\n margin-left: 0.5rem !important;\n }\n .ms-md-3 {\n margin-left: 1rem !important;\n }\n .ms-md-4 {\n margin-left: 1.5rem !important;\n }\n .ms-md-5 {\n margin-left: 3rem !important;\n }\n .ms-md-auto {\n margin-left: auto !important;\n }\n .p-md-0 {\n padding: 0 !important;\n }\n .p-md-1 {\n padding: 0.25rem !important;\n }\n .p-md-2 {\n padding: 0.5rem !important;\n }\n .p-md-3 {\n padding: 1rem !important;\n }\n .p-md-4 {\n padding: 1.5rem !important;\n }\n .p-md-5 {\n padding: 3rem !important;\n }\n .px-md-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-md-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-md-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-md-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-md-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-md-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-md-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-md-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-md-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-md-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-md-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-md-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-md-0 {\n padding-top: 0 !important;\n }\n .pt-md-1 {\n padding-top: 0.25rem !important;\n }\n .pt-md-2 {\n padding-top: 0.5rem !important;\n }\n .pt-md-3 {\n padding-top: 1rem !important;\n }\n .pt-md-4 {\n padding-top: 1.5rem !important;\n }\n .pt-md-5 {\n padding-top: 3rem !important;\n }\n .pe-md-0 {\n padding-right: 0 !important;\n }\n .pe-md-1 {\n padding-right: 0.25rem !important;\n }\n .pe-md-2 {\n padding-right: 0.5rem !important;\n }\n .pe-md-3 {\n padding-right: 1rem !important;\n }\n .pe-md-4 {\n padding-right: 1.5rem !important;\n }\n .pe-md-5 {\n padding-right: 3rem !important;\n }\n .pb-md-0 {\n padding-bottom: 0 !important;\n }\n .pb-md-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-md-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-md-3 {\n padding-bottom: 1rem !important;\n }\n .pb-md-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-md-5 {\n padding-bottom: 3rem !important;\n }\n .ps-md-0 {\n padding-left: 0 !important;\n }\n .ps-md-1 {\n padding-left: 0.25rem !important;\n }\n .ps-md-2 {\n padding-left: 0.5rem !important;\n }\n .ps-md-3 {\n padding-left: 1rem !important;\n }\n .ps-md-4 {\n padding-left: 1.5rem !important;\n }\n .ps-md-5 {\n padding-left: 3rem !important;\n }\n}\n@media (min-width: 992px) {\n .d-lg-inline {\n display: inline !important;\n }\n .d-lg-inline-block {\n display: inline-block !important;\n }\n .d-lg-block {\n display: block !important;\n }\n .d-lg-grid {\n display: grid !important;\n }\n .d-lg-table {\n display: table !important;\n }\n .d-lg-table-row {\n display: table-row !important;\n }\n .d-lg-table-cell {\n display: table-cell !important;\n }\n .d-lg-flex {\n display: flex !important;\n }\n .d-lg-inline-flex {\n display: inline-flex !important;\n }\n .d-lg-none {\n display: none !important;\n }\n .flex-lg-fill {\n flex: 1 1 auto !important;\n }\n .flex-lg-row {\n flex-direction: row !important;\n }\n .flex-lg-column {\n flex-direction: column !important;\n }\n .flex-lg-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-lg-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-lg-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-lg-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-lg-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-lg-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-lg-wrap {\n flex-wrap: wrap !important;\n }\n .flex-lg-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-lg-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-lg-start {\n justify-content: flex-start !important;\n }\n .justify-content-lg-end {\n justify-content: flex-end !important;\n }\n .justify-content-lg-center {\n justify-content: center !important;\n }\n .justify-content-lg-between {\n justify-content: space-between !important;\n }\n .justify-content-lg-around {\n justify-content: space-around !important;\n }\n .justify-content-lg-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-lg-start {\n align-items: flex-start !important;\n }\n .align-items-lg-end {\n align-items: flex-end !important;\n }\n .align-items-lg-center {\n align-items: center !important;\n }\n .align-items-lg-baseline {\n align-items: baseline !important;\n }\n .align-items-lg-stretch {\n align-items: stretch !important;\n }\n .align-content-lg-start {\n align-content: flex-start !important;\n }\n .align-content-lg-end {\n align-content: flex-end !important;\n }\n .align-content-lg-center {\n align-content: center !important;\n }\n .align-content-lg-between {\n align-content: space-between !important;\n }\n .align-content-lg-around {\n align-content: space-around !important;\n }\n .align-content-lg-stretch {\n align-content: stretch !important;\n }\n .align-self-lg-auto {\n align-self: auto !important;\n }\n .align-self-lg-start {\n align-self: flex-start !important;\n }\n .align-self-lg-end {\n align-self: flex-end !important;\n }\n .align-self-lg-center {\n align-self: center !important;\n }\n .align-self-lg-baseline {\n align-self: baseline !important;\n }\n .align-self-lg-stretch {\n align-self: stretch !important;\n }\n .order-lg-first {\n order: -1 !important;\n }\n .order-lg-0 {\n order: 0 !important;\n }\n .order-lg-1 {\n order: 1 !important;\n }\n .order-lg-2 {\n order: 2 !important;\n }\n .order-lg-3 {\n order: 3 !important;\n }\n .order-lg-4 {\n order: 4 !important;\n }\n .order-lg-5 {\n order: 5 !important;\n }\n .order-lg-last {\n order: 6 !important;\n }\n .m-lg-0 {\n margin: 0 !important;\n }\n .m-lg-1 {\n margin: 0.25rem !important;\n }\n .m-lg-2 {\n margin: 0.5rem !important;\n }\n .m-lg-3 {\n margin: 1rem !important;\n }\n .m-lg-4 {\n margin: 1.5rem !important;\n }\n .m-lg-5 {\n margin: 3rem !important;\n }\n .m-lg-auto {\n margin: auto !important;\n }\n .mx-lg-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-lg-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-lg-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-lg-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-lg-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-lg-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-lg-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-lg-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-lg-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-lg-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-lg-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-lg-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-lg-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-lg-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-lg-0 {\n margin-top: 0 !important;\n }\n .mt-lg-1 {\n margin-top: 0.25rem !important;\n }\n .mt-lg-2 {\n margin-top: 0.5rem !important;\n }\n .mt-lg-3 {\n margin-top: 1rem !important;\n }\n .mt-lg-4 {\n margin-top: 1.5rem !important;\n }\n .mt-lg-5 {\n margin-top: 3rem !important;\n }\n .mt-lg-auto {\n margin-top: auto !important;\n }\n .me-lg-0 {\n margin-right: 0 !important;\n }\n .me-lg-1 {\n margin-right: 0.25rem !important;\n }\n .me-lg-2 {\n margin-right: 0.5rem !important;\n }\n .me-lg-3 {\n margin-right: 1rem !important;\n }\n .me-lg-4 {\n margin-right: 1.5rem !important;\n }\n .me-lg-5 {\n margin-right: 3rem !important;\n }\n .me-lg-auto {\n margin-right: auto !important;\n }\n .mb-lg-0 {\n margin-bottom: 0 !important;\n }\n .mb-lg-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-lg-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-lg-3 {\n margin-bottom: 1rem !important;\n }\n .mb-lg-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-lg-5 {\n margin-bottom: 3rem !important;\n }\n .mb-lg-auto {\n margin-bottom: auto !important;\n }\n .ms-lg-0 {\n margin-left: 0 !important;\n }\n .ms-lg-1 {\n margin-left: 0.25rem !important;\n }\n .ms-lg-2 {\n margin-left: 0.5rem !important;\n }\n .ms-lg-3 {\n margin-left: 1rem !important;\n }\n .ms-lg-4 {\n margin-left: 1.5rem !important;\n }\n .ms-lg-5 {\n margin-left: 3rem !important;\n }\n .ms-lg-auto {\n margin-left: auto !important;\n }\n .p-lg-0 {\n padding: 0 !important;\n }\n .p-lg-1 {\n padding: 0.25rem !important;\n }\n .p-lg-2 {\n padding: 0.5rem !important;\n }\n .p-lg-3 {\n padding: 1rem !important;\n }\n .p-lg-4 {\n padding: 1.5rem !important;\n }\n .p-lg-5 {\n padding: 3rem !important;\n }\n .px-lg-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-lg-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-lg-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-lg-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-lg-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-lg-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-lg-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-lg-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-lg-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-lg-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-lg-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-lg-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-lg-0 {\n padding-top: 0 !important;\n }\n .pt-lg-1 {\n padding-top: 0.25rem !important;\n }\n .pt-lg-2 {\n padding-top: 0.5rem !important;\n }\n .pt-lg-3 {\n padding-top: 1rem !important;\n }\n .pt-lg-4 {\n padding-top: 1.5rem !important;\n }\n .pt-lg-5 {\n padding-top: 3rem !important;\n }\n .pe-lg-0 {\n padding-right: 0 !important;\n }\n .pe-lg-1 {\n padding-right: 0.25rem !important;\n }\n .pe-lg-2 {\n padding-right: 0.5rem !important;\n }\n .pe-lg-3 {\n padding-right: 1rem !important;\n }\n .pe-lg-4 {\n padding-right: 1.5rem !important;\n }\n .pe-lg-5 {\n padding-right: 3rem !important;\n }\n .pb-lg-0 {\n padding-bottom: 0 !important;\n }\n .pb-lg-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-lg-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-lg-3 {\n padding-bottom: 1rem !important;\n }\n .pb-lg-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-lg-5 {\n padding-bottom: 3rem !important;\n }\n .ps-lg-0 {\n padding-left: 0 !important;\n }\n .ps-lg-1 {\n padding-left: 0.25rem !important;\n }\n .ps-lg-2 {\n padding-left: 0.5rem !important;\n }\n .ps-lg-3 {\n padding-left: 1rem !important;\n }\n .ps-lg-4 {\n padding-left: 1.5rem !important;\n }\n .ps-lg-5 {\n padding-left: 3rem !important;\n }\n}\n@media (min-width: 1200px) {\n .d-xl-inline {\n display: inline !important;\n }\n .d-xl-inline-block {\n display: inline-block !important;\n }\n .d-xl-block {\n display: block !important;\n }\n .d-xl-grid {\n display: grid !important;\n }\n .d-xl-table {\n display: table !important;\n }\n .d-xl-table-row {\n display: table-row !important;\n }\n .d-xl-table-cell {\n display: table-cell !important;\n }\n .d-xl-flex {\n display: flex !important;\n }\n .d-xl-inline-flex {\n display: inline-flex !important;\n }\n .d-xl-none {\n display: none !important;\n }\n .flex-xl-fill {\n flex: 1 1 auto !important;\n }\n .flex-xl-row {\n flex-direction: row !important;\n }\n .flex-xl-column {\n flex-direction: column !important;\n }\n .flex-xl-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-xl-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-xl-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-xl-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-xl-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-xl-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-xl-wrap {\n flex-wrap: wrap !important;\n }\n .flex-xl-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-xl-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-xl-start {\n justify-content: flex-start !important;\n }\n .justify-content-xl-end {\n justify-content: flex-end !important;\n }\n .justify-content-xl-center {\n justify-content: center !important;\n }\n .justify-content-xl-between {\n justify-content: space-between !important;\n }\n .justify-content-xl-around {\n justify-content: space-around !important;\n }\n .justify-content-xl-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-xl-start {\n align-items: flex-start !important;\n }\n .align-items-xl-end {\n align-items: flex-end !important;\n }\n .align-items-xl-center {\n align-items: center !important;\n }\n .align-items-xl-baseline {\n align-items: baseline !important;\n }\n .align-items-xl-stretch {\n align-items: stretch !important;\n }\n .align-content-xl-start {\n align-content: flex-start !important;\n }\n .align-content-xl-end {\n align-content: flex-end !important;\n }\n .align-content-xl-center {\n align-content: center !important;\n }\n .align-content-xl-between {\n align-content: space-between !important;\n }\n .align-content-xl-around {\n align-content: space-around !important;\n }\n .align-content-xl-stretch {\n align-content: stretch !important;\n }\n .align-self-xl-auto {\n align-self: auto !important;\n }\n .align-self-xl-start {\n align-self: flex-start !important;\n }\n .align-self-xl-end {\n align-self: flex-end !important;\n }\n .align-self-xl-center {\n align-self: center !important;\n }\n .align-self-xl-baseline {\n align-self: baseline !important;\n }\n .align-self-xl-stretch {\n align-self: stretch !important;\n }\n .order-xl-first {\n order: -1 !important;\n }\n .order-xl-0 {\n order: 0 !important;\n }\n .order-xl-1 {\n order: 1 !important;\n }\n .order-xl-2 {\n order: 2 !important;\n }\n .order-xl-3 {\n order: 3 !important;\n }\n .order-xl-4 {\n order: 4 !important;\n }\n .order-xl-5 {\n order: 5 !important;\n }\n .order-xl-last {\n order: 6 !important;\n }\n .m-xl-0 {\n margin: 0 !important;\n }\n .m-xl-1 {\n margin: 0.25rem !important;\n }\n .m-xl-2 {\n margin: 0.5rem !important;\n }\n .m-xl-3 {\n margin: 1rem !important;\n }\n .m-xl-4 {\n margin: 1.5rem !important;\n }\n .m-xl-5 {\n margin: 3rem !important;\n }\n .m-xl-auto {\n margin: auto !important;\n }\n .mx-xl-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-xl-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-xl-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-xl-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-xl-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-xl-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-xl-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-xl-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-xl-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-xl-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-xl-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-xl-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-xl-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-xl-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-xl-0 {\n margin-top: 0 !important;\n }\n .mt-xl-1 {\n margin-top: 0.25rem !important;\n }\n .mt-xl-2 {\n margin-top: 0.5rem !important;\n }\n .mt-xl-3 {\n margin-top: 1rem !important;\n }\n .mt-xl-4 {\n margin-top: 1.5rem !important;\n }\n .mt-xl-5 {\n margin-top: 3rem !important;\n }\n .mt-xl-auto {\n margin-top: auto !important;\n }\n .me-xl-0 {\n margin-right: 0 !important;\n }\n .me-xl-1 {\n margin-right: 0.25rem !important;\n }\n .me-xl-2 {\n margin-right: 0.5rem !important;\n }\n .me-xl-3 {\n margin-right: 1rem !important;\n }\n .me-xl-4 {\n margin-right: 1.5rem !important;\n }\n .me-xl-5 {\n margin-right: 3rem !important;\n }\n .me-xl-auto {\n margin-right: auto !important;\n }\n .mb-xl-0 {\n margin-bottom: 0 !important;\n }\n .mb-xl-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-xl-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-xl-3 {\n margin-bottom: 1rem !important;\n }\n .mb-xl-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-xl-5 {\n margin-bottom: 3rem !important;\n }\n .mb-xl-auto {\n margin-bottom: auto !important;\n }\n .ms-xl-0 {\n margin-left: 0 !important;\n }\n .ms-xl-1 {\n margin-left: 0.25rem !important;\n }\n .ms-xl-2 {\n margin-left: 0.5rem !important;\n }\n .ms-xl-3 {\n margin-left: 1rem !important;\n }\n .ms-xl-4 {\n margin-left: 1.5rem !important;\n }\n .ms-xl-5 {\n margin-left: 3rem !important;\n }\n .ms-xl-auto {\n margin-left: auto !important;\n }\n .p-xl-0 {\n padding: 0 !important;\n }\n .p-xl-1 {\n padding: 0.25rem !important;\n }\n .p-xl-2 {\n padding: 0.5rem !important;\n }\n .p-xl-3 {\n padding: 1rem !important;\n }\n .p-xl-4 {\n padding: 1.5rem !important;\n }\n .p-xl-5 {\n padding: 3rem !important;\n }\n .px-xl-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-xl-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-xl-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-xl-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-xl-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-xl-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-xl-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-xl-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-xl-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-xl-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-xl-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-xl-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-xl-0 {\n padding-top: 0 !important;\n }\n .pt-xl-1 {\n padding-top: 0.25rem !important;\n }\n .pt-xl-2 {\n padding-top: 0.5rem !important;\n }\n .pt-xl-3 {\n padding-top: 1rem !important;\n }\n .pt-xl-4 {\n padding-top: 1.5rem !important;\n }\n .pt-xl-5 {\n padding-top: 3rem !important;\n }\n .pe-xl-0 {\n padding-right: 0 !important;\n }\n .pe-xl-1 {\n padding-right: 0.25rem !important;\n }\n .pe-xl-2 {\n padding-right: 0.5rem !important;\n }\n .pe-xl-3 {\n padding-right: 1rem !important;\n }\n .pe-xl-4 {\n padding-right: 1.5rem !important;\n }\n .pe-xl-5 {\n padding-right: 3rem !important;\n }\n .pb-xl-0 {\n padding-bottom: 0 !important;\n }\n .pb-xl-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-xl-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-xl-3 {\n padding-bottom: 1rem !important;\n }\n .pb-xl-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-xl-5 {\n padding-bottom: 3rem !important;\n }\n .ps-xl-0 {\n padding-left: 0 !important;\n }\n .ps-xl-1 {\n padding-left: 0.25rem !important;\n }\n .ps-xl-2 {\n padding-left: 0.5rem !important;\n }\n .ps-xl-3 {\n padding-left: 1rem !important;\n }\n .ps-xl-4 {\n padding-left: 1.5rem !important;\n }\n .ps-xl-5 {\n padding-left: 3rem !important;\n }\n}\n@media (min-width: 1400px) {\n .d-xxl-inline {\n display: inline !important;\n }\n .d-xxl-inline-block {\n display: inline-block !important;\n }\n .d-xxl-block {\n display: block !important;\n }\n .d-xxl-grid {\n display: grid !important;\n }\n .d-xxl-table {\n display: table !important;\n }\n .d-xxl-table-row {\n display: table-row !important;\n }\n .d-xxl-table-cell {\n display: table-cell !important;\n }\n .d-xxl-flex {\n display: flex !important;\n }\n .d-xxl-inline-flex {\n display: inline-flex !important;\n }\n .d-xxl-none {\n display: none !important;\n }\n .flex-xxl-fill {\n flex: 1 1 auto !important;\n }\n .flex-xxl-row {\n flex-direction: row !important;\n }\n .flex-xxl-column {\n flex-direction: column !important;\n }\n .flex-xxl-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-xxl-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-xxl-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-xxl-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-xxl-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-xxl-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-xxl-wrap {\n flex-wrap: wrap !important;\n }\n .flex-xxl-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-xxl-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-xxl-start {\n justify-content: flex-start !important;\n }\n .justify-content-xxl-end {\n justify-content: flex-end !important;\n }\n .justify-content-xxl-center {\n justify-content: center !important;\n }\n .justify-content-xxl-between {\n justify-content: space-between !important;\n }\n .justify-content-xxl-around {\n justify-content: space-around !important;\n }\n .justify-content-xxl-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-xxl-start {\n align-items: flex-start !important;\n }\n .align-items-xxl-end {\n align-items: flex-end !important;\n }\n .align-items-xxl-center {\n align-items: center !important;\n }\n .align-items-xxl-baseline {\n align-items: baseline !important;\n }\n .align-items-xxl-stretch {\n align-items: stretch !important;\n }\n .align-content-xxl-start {\n align-content: flex-start !important;\n }\n .align-content-xxl-end {\n align-content: flex-end !important;\n }\n .align-content-xxl-center {\n align-content: center !important;\n }\n .align-content-xxl-between {\n align-content: space-between !important;\n }\n .align-content-xxl-around {\n align-content: space-around !important;\n }\n .align-content-xxl-stretch {\n align-content: stretch !important;\n }\n .align-self-xxl-auto {\n align-self: auto !important;\n }\n .align-self-xxl-start {\n align-self: flex-start !important;\n }\n .align-self-xxl-end {\n align-self: flex-end !important;\n }\n .align-self-xxl-center {\n align-self: center !important;\n }\n .align-self-xxl-baseline {\n align-self: baseline !important;\n }\n .align-self-xxl-stretch {\n align-self: stretch !important;\n }\n .order-xxl-first {\n order: -1 !important;\n }\n .order-xxl-0 {\n order: 0 !important;\n }\n .order-xxl-1 {\n order: 1 !important;\n }\n .order-xxl-2 {\n order: 2 !important;\n }\n .order-xxl-3 {\n order: 3 !important;\n }\n .order-xxl-4 {\n order: 4 !important;\n }\n .order-xxl-5 {\n order: 5 !important;\n }\n .order-xxl-last {\n order: 6 !important;\n }\n .m-xxl-0 {\n margin: 0 !important;\n }\n .m-xxl-1 {\n margin: 0.25rem !important;\n }\n .m-xxl-2 {\n margin: 0.5rem !important;\n }\n .m-xxl-3 {\n margin: 1rem !important;\n }\n .m-xxl-4 {\n margin: 1.5rem !important;\n }\n .m-xxl-5 {\n margin: 3rem !important;\n }\n .m-xxl-auto {\n margin: auto !important;\n }\n .mx-xxl-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-xxl-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-xxl-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-xxl-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-xxl-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-xxl-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-xxl-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-xxl-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-xxl-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-xxl-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-xxl-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-xxl-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-xxl-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-xxl-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-xxl-0 {\n margin-top: 0 !important;\n }\n .mt-xxl-1 {\n margin-top: 0.25rem !important;\n }\n .mt-xxl-2 {\n margin-top: 0.5rem !important;\n }\n .mt-xxl-3 {\n margin-top: 1rem !important;\n }\n .mt-xxl-4 {\n margin-top: 1.5rem !important;\n }\n .mt-xxl-5 {\n margin-top: 3rem !important;\n }\n .mt-xxl-auto {\n margin-top: auto !important;\n }\n .me-xxl-0 {\n margin-right: 0 !important;\n }\n .me-xxl-1 {\n margin-right: 0.25rem !important;\n }\n .me-xxl-2 {\n margin-right: 0.5rem !important;\n }\n .me-xxl-3 {\n margin-right: 1rem !important;\n }\n .me-xxl-4 {\n margin-right: 1.5rem !important;\n }\n .me-xxl-5 {\n margin-right: 3rem !important;\n }\n .me-xxl-auto {\n margin-right: auto !important;\n }\n .mb-xxl-0 {\n margin-bottom: 0 !important;\n }\n .mb-xxl-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-xxl-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-xxl-3 {\n margin-bottom: 1rem !important;\n }\n .mb-xxl-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-xxl-5 {\n margin-bottom: 3rem !important;\n }\n .mb-xxl-auto {\n margin-bottom: auto !important;\n }\n .ms-xxl-0 {\n margin-left: 0 !important;\n }\n .ms-xxl-1 {\n margin-left: 0.25rem !important;\n }\n .ms-xxl-2 {\n margin-left: 0.5rem !important;\n }\n .ms-xxl-3 {\n margin-left: 1rem !important;\n }\n .ms-xxl-4 {\n margin-left: 1.5rem !important;\n }\n .ms-xxl-5 {\n margin-left: 3rem !important;\n }\n .ms-xxl-auto {\n margin-left: auto !important;\n }\n .p-xxl-0 {\n padding: 0 !important;\n }\n .p-xxl-1 {\n padding: 0.25rem !important;\n }\n .p-xxl-2 {\n padding: 0.5rem !important;\n }\n .p-xxl-3 {\n padding: 1rem !important;\n }\n .p-xxl-4 {\n padding: 1.5rem !important;\n }\n .p-xxl-5 {\n padding: 3rem !important;\n }\n .px-xxl-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-xxl-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-xxl-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-xxl-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-xxl-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-xxl-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-xxl-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-xxl-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-xxl-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-xxl-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-xxl-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-xxl-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-xxl-0 {\n padding-top: 0 !important;\n }\n .pt-xxl-1 {\n padding-top: 0.25rem !important;\n }\n .pt-xxl-2 {\n padding-top: 0.5rem !important;\n }\n .pt-xxl-3 {\n padding-top: 1rem !important;\n }\n .pt-xxl-4 {\n padding-top: 1.5rem !important;\n }\n .pt-xxl-5 {\n padding-top: 3rem !important;\n }\n .pe-xxl-0 {\n padding-right: 0 !important;\n }\n .pe-xxl-1 {\n padding-right: 0.25rem !important;\n }\n .pe-xxl-2 {\n padding-right: 0.5rem !important;\n }\n .pe-xxl-3 {\n padding-right: 1rem !important;\n }\n .pe-xxl-4 {\n padding-right: 1.5rem !important;\n }\n .pe-xxl-5 {\n padding-right: 3rem !important;\n }\n .pb-xxl-0 {\n padding-bottom: 0 !important;\n }\n .pb-xxl-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-xxl-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-xxl-3 {\n padding-bottom: 1rem !important;\n }\n .pb-xxl-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-xxl-5 {\n padding-bottom: 3rem !important;\n }\n .ps-xxl-0 {\n padding-left: 0 !important;\n }\n .ps-xxl-1 {\n padding-left: 0.25rem !important;\n }\n .ps-xxl-2 {\n padding-left: 0.5rem !important;\n }\n .ps-xxl-3 {\n padding-left: 1rem !important;\n }\n .ps-xxl-4 {\n padding-left: 1.5rem !important;\n }\n .ps-xxl-5 {\n padding-left: 3rem !important;\n }\n}\n@media print {\n .d-print-inline {\n display: inline !important;\n }\n .d-print-inline-block {\n display: inline-block !important;\n }\n .d-print-block {\n display: block !important;\n }\n .d-print-grid {\n display: grid !important;\n }\n .d-print-table {\n display: table !important;\n }\n .d-print-table-row {\n display: table-row !important;\n }\n .d-print-table-cell {\n display: table-cell !important;\n }\n .d-print-flex {\n display: flex !important;\n }\n .d-print-inline-flex {\n display: inline-flex !important;\n }\n .d-print-none {\n display: none !important;\n }\n}\n\n/*# sourceMappingURL=bootstrap-grid.css.map */","// stylelint-disable property-blacklist, scss/dollar-variable-default\n\n// SCSS RFS mixin\n//\n// Automated responsive values for font sizes, paddings, margins and much more\n//\n// Licensed under MIT (https://github.com/twbs/rfs/blob/main/LICENSE)\n\n// Configuration\n\n// Base value\n$rfs-base-value: 1.25rem !default;\n$rfs-unit: rem !default;\n\n@if $rfs-unit != rem and $rfs-unit != px {\n @error \"`#{$rfs-unit}` is not a valid unit for $rfs-unit. Use `px` or `rem`.\";\n}\n\n// Breakpoint at where values start decreasing if screen width is smaller\n$rfs-breakpoint: 1200px !default;\n$rfs-breakpoint-unit: px !default;\n\n@if $rfs-breakpoint-unit != px and $rfs-breakpoint-unit != em and $rfs-breakpoint-unit != rem {\n @error \"`#{$rfs-breakpoint-unit}` is not a valid unit for $rfs-breakpoint-unit. Use `px`, `em` or `rem`.\";\n}\n\n// Resize values based on screen height and width\n$rfs-two-dimensional: false !default;\n\n// Factor of decrease\n$rfs-factor: 10 !default;\n\n@if type-of($rfs-factor) != number or $rfs-factor <= 1 {\n @error \"`#{$rfs-factor}` is not a valid $rfs-factor, it must be greater than 1.\";\n}\n\n// Mode. Possibilities: \"min-media-query\", \"max-media-query\"\n$rfs-mode: min-media-query !default;\n\n// Generate enable or disable classes. Possibilities: false, \"enable\" or \"disable\"\n$rfs-class: false !default;\n\n// 1 rem = $rfs-rem-value px\n$rfs-rem-value: 16 !default;\n\n// Safari iframe resize bug: https://github.com/twbs/rfs/issues/14\n$rfs-safari-iframe-resize-bug-fix: false !default;\n\n// Disable RFS by setting $enable-rfs to false\n$enable-rfs: true !default;\n\n// Cache $rfs-base-value unit\n$rfs-base-value-unit: unit($rfs-base-value);\n\n@function divide($dividend, $divisor, $precision: 10) {\n $sign: if($dividend > 0 and $divisor > 0 or $dividend < 0 and $divisor < 0, 1, -1);\n $dividend: abs($dividend);\n $divisor: abs($divisor);\n @if $dividend == 0 {\n @return 0;\n }\n @if $divisor == 0 {\n @error \"Cannot divide by 0\";\n }\n $remainder: $dividend;\n $result: 0;\n $factor: 10;\n @while ($remainder > 0 and $precision >= 0) {\n $quotient: 0;\n @while ($remainder >= $divisor) {\n $remainder: $remainder - $divisor;\n $quotient: $quotient + 1;\n }\n $result: $result * 10 + $quotient;\n $factor: $factor * .1;\n $remainder: $remainder * 10;\n $precision: $precision - 1;\n @if ($precision < 0 and $remainder >= $divisor * 5) {\n $result: $result + 1;\n }\n }\n $result: $result * $factor * $sign;\n $dividend-unit: unit($dividend);\n $divisor-unit: unit($divisor);\n $unit-map: (\n \"px\": 1px,\n \"rem\": 1rem,\n \"em\": 1em,\n \"%\": 1%\n );\n @if ($dividend-unit != $divisor-unit and map-has-key($unit-map, $dividend-unit)) {\n $result: $result * map-get($unit-map, $dividend-unit);\n }\n @return $result;\n}\n\n// Remove px-unit from $rfs-base-value for calculations\n@if $rfs-base-value-unit == px {\n $rfs-base-value: divide($rfs-base-value, $rfs-base-value * 0 + 1);\n}\n@else if $rfs-base-value-unit == rem {\n $rfs-base-value: divide($rfs-base-value, divide($rfs-base-value * 0 + 1, $rfs-rem-value));\n}\n\n// Cache $rfs-breakpoint unit to prevent multiple calls\n$rfs-breakpoint-unit-cache: unit($rfs-breakpoint);\n\n// Remove unit from $rfs-breakpoint for calculations\n@if $rfs-breakpoint-unit-cache == px {\n $rfs-breakpoint: divide($rfs-breakpoint, $rfs-breakpoint * 0 + 1);\n}\n@else if $rfs-breakpoint-unit-cache == rem or $rfs-breakpoint-unit-cache == \"em\" {\n $rfs-breakpoint: divide($rfs-breakpoint, divide($rfs-breakpoint * 0 + 1, $rfs-rem-value));\n}\n\n// Calculate the media query value\n$rfs-mq-value: if($rfs-breakpoint-unit == px, #{$rfs-breakpoint}px, #{divide($rfs-breakpoint, $rfs-rem-value)}#{$rfs-breakpoint-unit});\n$rfs-mq-property-width: if($rfs-mode == max-media-query, max-width, min-width);\n$rfs-mq-property-height: if($rfs-mode == max-media-query, max-height, min-height);\n\n// Internal mixin used to determine which media query needs to be used\n@mixin _rfs-media-query {\n @if $rfs-two-dimensional {\n @if $rfs-mode == max-media-query {\n @media (#{$rfs-mq-property-width}: #{$rfs-mq-value}), (#{$rfs-mq-property-height}: #{$rfs-mq-value}) {\n @content;\n }\n }\n @else {\n @media (#{$rfs-mq-property-width}: #{$rfs-mq-value}) and (#{$rfs-mq-property-height}: #{$rfs-mq-value}) {\n @content;\n }\n }\n }\n @else {\n @media (#{$rfs-mq-property-width}: #{$rfs-mq-value}) {\n @content;\n }\n }\n}\n\n// Internal mixin that adds disable classes to the selector if needed.\n@mixin _rfs-rule {\n @if $rfs-class == disable and $rfs-mode == max-media-query {\n // Adding an extra class increases specificity, which prevents the media query to override the property\n &,\n .disable-rfs &,\n &.disable-rfs {\n @content;\n }\n }\n @else if $rfs-class == enable and $rfs-mode == min-media-query {\n .enable-rfs &,\n &.enable-rfs {\n @content;\n }\n }\n @else {\n @content;\n }\n}\n\n// Internal mixin that adds enable classes to the selector if needed.\n@mixin _rfs-media-query-rule {\n\n @if $rfs-class == enable {\n @if $rfs-mode == min-media-query {\n @content;\n }\n\n @include _rfs-media-query {\n .enable-rfs &,\n &.enable-rfs {\n @content;\n }\n }\n }\n @else {\n @if $rfs-class == disable and $rfs-mode == min-media-query {\n .disable-rfs &,\n &.disable-rfs {\n @content;\n }\n }\n @include _rfs-media-query {\n @content;\n }\n }\n}\n\n// Helper function to get the formatted non-responsive value\n@function rfs-value($values) {\n // Convert to list\n $values: if(type-of($values) != list, ($values,), $values);\n\n $val: '';\n\n // Loop over each value and calculate value\n @each $value in $values {\n @if $value == 0 {\n $val: $val + ' 0';\n }\n @else {\n // Cache $value unit\n $unit: if(type-of($value) == \"number\", unit($value), false);\n\n @if $unit == px {\n // Convert to rem if needed\n $val: $val + ' ' + if($rfs-unit == rem, #{divide($value, $value * 0 + $rfs-rem-value)}rem, $value);\n }\n @else if $unit == rem {\n // Convert to px if needed\n $val: $val + ' ' + if($rfs-unit == px, #{divide($value, $value * 0 + 1) * $rfs-rem-value}px, $value);\n }\n @else {\n // If $value isn't a number (like inherit) or $value has a unit (not px or rem, like 1.5em) or $ is 0, just print the value\n $val: $val + ' ' + $value;\n }\n }\n }\n\n // Remove first space\n @return unquote(str-slice($val, 2));\n}\n\n// Helper function to get the responsive value calculated by RFS\n@function rfs-fluid-value($values) {\n // Convert to list\n $values: if(type-of($values) != list, ($values,), $values);\n\n $val: '';\n\n // Loop over each value and calculate value\n @each $value in $values {\n @if $value == 0 {\n $val: $val + ' 0';\n }\n\n @else {\n // Cache $value unit\n $unit: if(type-of($value) == \"number\", unit($value), false);\n\n // If $value isn't a number (like inherit) or $value has a unit (not px or rem, like 1.5em) or $ is 0, just print the value\n @if not $unit or $unit != px and $unit != rem {\n $val: $val + ' ' + $value;\n }\n\n @else {\n // Remove unit from $value for calculations\n $value: divide($value, $value * 0 + if($unit == px, 1, divide(1, $rfs-rem-value)));\n\n // Only add the media query if the value is greater than the minimum value\n @if abs($value) <= $rfs-base-value or not $enable-rfs {\n $val: $val + ' ' + if($rfs-unit == rem, #{divide($value, $rfs-rem-value)}rem, #{$value}px);\n }\n @else {\n // Calculate the minimum value\n $value-min: $rfs-base-value + divide(abs($value) - $rfs-base-value, $rfs-factor);\n\n // Calculate difference between $value and the minimum value\n $value-diff: abs($value) - $value-min;\n\n // Base value formatting\n $min-width: if($rfs-unit == rem, #{divide($value-min, $rfs-rem-value)}rem, #{$value-min}px);\n\n // Use negative value if needed\n $min-width: if($value < 0, -$min-width, $min-width);\n\n // Use `vmin` if two-dimensional is enabled\n $variable-unit: if($rfs-two-dimensional, vmin, vw);\n\n // Calculate the variable width between 0 and $rfs-breakpoint\n $variable-width: #{divide($value-diff * 100, $rfs-breakpoint)}#{$variable-unit};\n\n // Return the calculated value\n $val: $val + ' calc(' + $min-width + if($value < 0, ' - ', ' + ') + $variable-width + ')';\n }\n }\n }\n }\n\n // Remove first space\n @return unquote(str-slice($val, 2));\n}\n\n// RFS mixin\n@mixin rfs($values, $property: font-size) {\n @if $values != null {\n $val: rfs-value($values);\n $fluidVal: rfs-fluid-value($values);\n\n // Do not print the media query if responsive & non-responsive values are the same\n @if $val == $fluidVal {\n #{$property}: $val;\n }\n @else {\n @include _rfs-rule {\n #{$property}: if($rfs-mode == max-media-query, $val, $fluidVal);\n\n // Include safari iframe resize fix if needed\n min-width: if($rfs-safari-iframe-resize-bug-fix, (0 * 1vw), null);\n }\n\n @include _rfs-media-query-rule {\n #{$property}: if($rfs-mode == max-media-query, $fluidVal, $val);\n }\n }\n }\n}\n\n// Shorthand helper mixins\n@mixin font-size($value) {\n @include rfs($value);\n}\n\n@mixin padding($value) {\n @include rfs($value, padding);\n}\n\n@mixin padding-top($value) {\n @include rfs($value, padding-top);\n}\n\n@mixin padding-right($value) {\n @include rfs($value, padding-right);\n}\n\n@mixin padding-bottom($value) {\n @include rfs($value, padding-bottom);\n}\n\n@mixin padding-left($value) {\n @include rfs($value, padding-left);\n}\n\n@mixin margin($value) {\n @include rfs($value, margin);\n}\n\n@mixin margin-top($value) {\n @include rfs($value, margin-top);\n}\n\n@mixin margin-right($value) {\n @include rfs($value, margin-right);\n}\n\n@mixin margin-bottom($value) {\n @include rfs($value, margin-bottom);\n}\n\n@mixin margin-left($value) {\n @include rfs($value, margin-left);\n}\n","// scss-docs-start color-mode-mixin\n@mixin color-mode($mode: light, $root: false) {\n @if $color-mode-type == \"media-query\" {\n @if $root == true {\n @media (prefers-color-scheme: $mode) {\n :root {\n @content;\n }\n }\n } @else {\n @media (prefers-color-scheme: $mode) {\n @content;\n }\n }\n } @else {\n [data-bs-theme=\"#{$mode}\"] {\n @content;\n }\n }\n}\n// scss-docs-end color-mode-mixin\n","// Container widths\n//\n// Set the container width, and override it for fixed navbars in media queries.\n\n@if $enable-container-classes {\n // Single container class with breakpoint max-widths\n .container,\n // 100% wide container at all breakpoints\n .container-fluid {\n @include make-container();\n }\n\n // Responsive containers that are 100% wide until a breakpoint\n @each $breakpoint, $container-max-width in $container-max-widths {\n .container-#{$breakpoint} {\n @extend .container-fluid;\n }\n\n @include media-breakpoint-up($breakpoint, $grid-breakpoints) {\n %responsive-container-#{$breakpoint} {\n max-width: $container-max-width;\n }\n\n // Extend each breakpoint which is smaller or equal to the current breakpoint\n $extend-breakpoint: true;\n\n @each $name, $width in $grid-breakpoints {\n @if ($extend-breakpoint) {\n .container#{breakpoint-infix($name, $grid-breakpoints)} {\n @extend %responsive-container-#{$breakpoint};\n }\n\n // Once the current breakpoint is reached, stop extending\n @if ($breakpoint == $name) {\n $extend-breakpoint: false;\n }\n }\n }\n }\n }\n}\n","// Container mixins\n\n@mixin make-container($gutter: $container-padding-x) {\n --#{$prefix}gutter-x: #{$gutter};\n --#{$prefix}gutter-y: 0;\n width: 100%;\n padding-right: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n padding-left: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n margin-right: auto;\n margin-left: auto;\n}\n","// Breakpoint viewport sizes and media queries.\n//\n// Breakpoints are defined as a map of (name: minimum width), order from small to large:\n//\n// (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px)\n//\n// The map defined in the `$grid-breakpoints` global variable is used as the `$breakpoints` argument by default.\n\n// Name of the next breakpoint, or null for the last breakpoint.\n//\n// >> breakpoint-next(sm)\n// md\n// >> breakpoint-next(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// md\n// >> breakpoint-next(sm, $breakpoint-names: (xs sm md lg xl xxl))\n// md\n@function breakpoint-next($name, $breakpoints: $grid-breakpoints, $breakpoint-names: map-keys($breakpoints)) {\n $n: index($breakpoint-names, $name);\n @if not $n {\n @error \"breakpoint `#{$name}` not found in `#{$breakpoints}`\";\n }\n @return if($n < length($breakpoint-names), nth($breakpoint-names, $n + 1), null);\n}\n\n// Minimum breakpoint width. Null for the smallest (first) breakpoint.\n//\n// >> breakpoint-min(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// 576px\n@function breakpoint-min($name, $breakpoints: $grid-breakpoints) {\n $min: map-get($breakpoints, $name);\n @return if($min != 0, $min, null);\n}\n\n// Maximum breakpoint width.\n// The maximum value is reduced by 0.02px to work around the limitations of\n// `min-` and `max-` prefixes and viewports with fractional widths.\n// See https://www.w3.org/TR/mediaqueries-4/#mq-min-max\n// Uses 0.02px rather than 0.01px to work around a current rounding bug in Safari.\n// See https://bugs.webkit.org/show_bug.cgi?id=178261\n//\n// >> breakpoint-max(md, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// 767.98px\n@function breakpoint-max($name, $breakpoints: $grid-breakpoints) {\n $max: map-get($breakpoints, $name);\n @return if($max and $max > 0, $max - .02, null);\n}\n\n// Returns a blank string if smallest breakpoint, otherwise returns the name with a dash in front.\n// Useful for making responsive utilities.\n//\n// >> breakpoint-infix(xs, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// \"\" (Returns a blank string)\n// >> breakpoint-infix(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// \"-sm\"\n@function breakpoint-infix($name, $breakpoints: $grid-breakpoints) {\n @return if(breakpoint-min($name, $breakpoints) == null, \"\", \"-#{$name}\");\n}\n\n// Media of at least the minimum breakpoint width. No query for the smallest breakpoint.\n// Makes the @content apply to the given breakpoint and wider.\n@mixin media-breakpoint-up($name, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n @if $min {\n @media (min-width: $min) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Media of at most the maximum breakpoint width. No query for the largest breakpoint.\n// Makes the @content apply to the given breakpoint and narrower.\n@mixin media-breakpoint-down($name, $breakpoints: $grid-breakpoints) {\n $max: breakpoint-max($name, $breakpoints);\n @if $max {\n @media (max-width: $max) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Media that spans multiple breakpoint widths.\n// Makes the @content apply between the min and max breakpoints\n@mixin media-breakpoint-between($lower, $upper, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($lower, $breakpoints);\n $max: breakpoint-max($upper, $breakpoints);\n\n @if $min != null and $max != null {\n @media (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else if $max == null {\n @include media-breakpoint-up($lower, $breakpoints) {\n @content;\n }\n } @else if $min == null {\n @include media-breakpoint-down($upper, $breakpoints) {\n @content;\n }\n }\n}\n\n// Media between the breakpoint's minimum and maximum widths.\n// No minimum for the smallest breakpoint, and no maximum for the largest one.\n// Makes the @content apply only to the given breakpoint, not viewports any wider or narrower.\n@mixin media-breakpoint-only($name, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n $next: breakpoint-next($name, $breakpoints);\n $max: breakpoint-max($next, $breakpoints);\n\n @if $min != null and $max != null {\n @media (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else if $max == null {\n @include media-breakpoint-up($name, $breakpoints) {\n @content;\n }\n } @else if $min == null {\n @include media-breakpoint-down($next, $breakpoints) {\n @content;\n }\n }\n}\n","// Row\n//\n// Rows contain your columns.\n\n@if $enable-grid-classes {\n .row {\n @include make-row();\n\n > * {\n @include make-col-ready();\n }\n }\n}\n\n@if $enable-cssgrid {\n .grid {\n display: grid;\n grid-template-rows: repeat(var(--#{$prefix}rows, 1), 1fr);\n grid-template-columns: repeat(var(--#{$prefix}columns, #{$grid-columns}), 1fr);\n gap: var(--#{$prefix}gap, #{$grid-gutter-width});\n\n @include make-cssgrid();\n }\n}\n\n\n// Columns\n//\n// Common styles for small and large grid columns\n\n@if $enable-grid-classes {\n @include make-grid-columns();\n}\n","// Grid system\n//\n// Generate semantic grid columns with these mixins.\n\n@mixin make-row($gutter: $grid-gutter-width) {\n --#{$prefix}gutter-x: #{$gutter};\n --#{$prefix}gutter-y: 0;\n display: flex;\n flex-wrap: wrap;\n // TODO: Revisit calc order after https://github.com/react-bootstrap/react-bootstrap/issues/6039 is fixed\n margin-top: calc(-1 * var(--#{$prefix}gutter-y)); // stylelint-disable-line function-disallowed-list\n margin-right: calc(-.5 * var(--#{$prefix}gutter-x)); // stylelint-disable-line function-disallowed-list\n margin-left: calc(-.5 * var(--#{$prefix}gutter-x)); // stylelint-disable-line function-disallowed-list\n}\n\n@mixin make-col-ready() {\n // Add box sizing if only the grid is loaded\n box-sizing: if(variable-exists(include-column-box-sizing) and $include-column-box-sizing, border-box, null);\n // Prevent columns from becoming too narrow when at smaller grid tiers by\n // always setting `width: 100%;`. This works because we set the width\n // later on to override this initial width.\n flex-shrink: 0;\n width: 100%;\n max-width: 100%; // Prevent `.col-auto`, `.col` (& responsive variants) from breaking out the grid\n padding-right: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n padding-left: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n margin-top: var(--#{$prefix}gutter-y);\n}\n\n@mixin make-col($size: false, $columns: $grid-columns) {\n @if $size {\n flex: 0 0 auto;\n width: percentage(divide($size, $columns));\n\n } @else {\n flex: 1 1 0;\n max-width: 100%;\n }\n}\n\n@mixin make-col-auto() {\n flex: 0 0 auto;\n width: auto;\n}\n\n@mixin make-col-offset($size, $columns: $grid-columns) {\n $num: divide($size, $columns);\n margin-left: if($num == 0, 0, percentage($num));\n}\n\n// Row columns\n//\n// Specify on a parent element(e.g., .row) to force immediate children into NN\n// number of columns. Supports wrapping to new lines, but does not do a Masonry\n// style grid.\n@mixin row-cols($count) {\n > * {\n flex: 0 0 auto;\n width: divide(100%, $count);\n }\n}\n\n// Framework grid generation\n//\n// Used only by Bootstrap to generate the correct number of grid classes given\n// any value of `$grid-columns`.\n\n@mixin make-grid-columns($columns: $grid-columns, $gutter: $grid-gutter-width, $breakpoints: $grid-breakpoints) {\n @each $breakpoint in map-keys($breakpoints) {\n $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n @include media-breakpoint-up($breakpoint, $breakpoints) {\n // Provide basic `.col-{bp}` classes for equal-width flexbox columns\n .col#{$infix} {\n flex: 1 0 0%; // Flexbugs #4: https://github.com/philipwalton/flexbugs#flexbug-4\n }\n\n .row-cols#{$infix}-auto > * {\n @include make-col-auto();\n }\n\n @if $grid-row-columns > 0 {\n @for $i from 1 through $grid-row-columns {\n .row-cols#{$infix}-#{$i} {\n @include row-cols($i);\n }\n }\n }\n\n .col#{$infix}-auto {\n @include make-col-auto();\n }\n\n @if $columns > 0 {\n @for $i from 1 through $columns {\n .col#{$infix}-#{$i} {\n @include make-col($i, $columns);\n }\n }\n\n // `$columns - 1` because offsetting by the width of an entire row isn't possible\n @for $i from 0 through ($columns - 1) {\n @if not ($infix == \"\" and $i == 0) { // Avoid emitting useless .offset-0\n .offset#{$infix}-#{$i} {\n @include make-col-offset($i, $columns);\n }\n }\n }\n }\n\n // Gutters\n //\n // Make use of `.g-*`, `.gx-*` or `.gy-*` utilities to change spacing between the columns.\n @each $key, $value in $gutters {\n .g#{$infix}-#{$key},\n .gx#{$infix}-#{$key} {\n --#{$prefix}gutter-x: #{$value};\n }\n\n .g#{$infix}-#{$key},\n .gy#{$infix}-#{$key} {\n --#{$prefix}gutter-y: #{$value};\n }\n }\n }\n }\n}\n\n@mixin make-cssgrid($columns: $grid-columns, $breakpoints: $grid-breakpoints) {\n @each $breakpoint in map-keys($breakpoints) {\n $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n @include media-breakpoint-up($breakpoint, $breakpoints) {\n @if $columns > 0 {\n @for $i from 1 through $columns {\n .g-col#{$infix}-#{$i} {\n grid-column: auto / span $i;\n }\n }\n\n // Start with `1` because `0` is and invalid value.\n // Ends with `$columns - 1` because offsetting by the width of an entire row isn't possible.\n @for $i from 1 through ($columns - 1) {\n .g-start#{$infix}-#{$i} {\n grid-column-start: $i;\n }\n }\n }\n }\n }\n}\n","// Utility generator\n// Used to generate utilities & print utilities\n@mixin generate-utility($utility, $infix, $is-rfs-media-query: false) {\n $values: map-get($utility, values);\n\n // If the values are a list or string, convert it into a map\n @if type-of($values) == \"string\" or type-of(nth($values, 1)) != \"list\" {\n $values: zip($values, $values);\n }\n\n @each $key, $value in $values {\n $properties: map-get($utility, property);\n\n // Multiple properties are possible, for example with vertical or horizontal margins or paddings\n @if type-of($properties) == \"string\" {\n $properties: append((), $properties);\n }\n\n // Use custom class if present\n $property-class: if(map-has-key($utility, class), map-get($utility, class), nth($properties, 1));\n $property-class: if($property-class == null, \"\", $property-class);\n\n // Use custom CSS variable name if present, otherwise default to `class`\n $css-variable-name: if(map-has-key($utility, css-variable-name), map-get($utility, css-variable-name), map-get($utility, class));\n\n // State params to generate pseudo-classes\n $state: if(map-has-key($utility, state), map-get($utility, state), ());\n\n $infix: if($property-class == \"\" and str-slice($infix, 1, 1) == \"-\", str-slice($infix, 2), $infix);\n\n // Don't prefix if value key is null (e.g. with shadow class)\n $property-class-modifier: if($key, if($property-class == \"\" and $infix == \"\", \"\", \"-\") + $key, \"\");\n\n @if map-get($utility, rfs) {\n // Inside the media query\n @if $is-rfs-media-query {\n $val: rfs-value($value);\n\n // Do not render anything if fluid and non fluid values are the same\n $value: if($val == rfs-fluid-value($value), null, $val);\n }\n @else {\n $value: rfs-fluid-value($value);\n }\n }\n\n $is-css-var: map-get($utility, css-var);\n $is-local-vars: map-get($utility, local-vars);\n $is-rtl: map-get($utility, rtl);\n\n @if $value != null {\n @if $is-rtl == false {\n /* rtl:begin:remove */\n }\n\n @if $is-css-var {\n .#{$property-class + $infix + $property-class-modifier} {\n --#{$prefix}#{$css-variable-name}: #{$value};\n }\n\n @each $pseudo in $state {\n .#{$property-class + $infix + $property-class-modifier}-#{$pseudo}:#{$pseudo} {\n --#{$prefix}#{$css-variable-name}: #{$value};\n }\n }\n } @else {\n .#{$property-class + $infix + $property-class-modifier} {\n @each $property in $properties {\n @if $is-local-vars {\n @each $local-var, $variable in $is-local-vars {\n --#{$prefix}#{$local-var}: #{$variable};\n }\n }\n #{$property}: $value if($enable-important-utilities, !important, null);\n }\n }\n\n @each $pseudo in $state {\n .#{$property-class + $infix + $property-class-modifier}-#{$pseudo}:#{$pseudo} {\n @each $property in $properties {\n @if $is-local-vars {\n @each $local-var, $variable in $is-local-vars {\n --#{$prefix}#{$local-var}: #{$variable};\n }\n }\n #{$property}: $value if($enable-important-utilities, !important, null);\n }\n }\n }\n }\n\n @if $is-rtl == false {\n /* rtl:end:remove */\n }\n }\n }\n}\n","// Loop over each breakpoint\n@each $breakpoint in map-keys($grid-breakpoints) {\n\n // Generate media query if needed\n @include media-breakpoint-up($breakpoint) {\n $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n // Loop over each utility property\n @each $key, $utility in $utilities {\n // The utility can be disabled with `false`, thus check if the utility is a map first\n // Only proceed if responsive media queries are enabled or if it's the base media query\n @if type-of($utility) == \"map\" and (map-get($utility, responsive) or $infix == \"\") {\n @include generate-utility($utility, $infix);\n }\n }\n }\n}\n\n// RFS rescaling\n@media (min-width: $rfs-mq-value) {\n @each $breakpoint in map-keys($grid-breakpoints) {\n $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n @if (map-get($grid-breakpoints, $breakpoint) < $rfs-breakpoint) {\n // Loop over each utility property\n @each $key, $utility in $utilities {\n // The utility can be disabled with `false`, thus check if the utility is a map first\n // Only proceed if responsive media queries are enabled or if it's the base media query\n @if type-of($utility) == \"map\" and map-get($utility, rfs) and (map-get($utility, responsive) or $infix == \"\") {\n @include generate-utility($utility, $infix, true);\n }\n }\n }\n }\n}\n\n\n// Print utilities\n@media print {\n @each $key, $utility in $utilities {\n // The utility can be disabled with `false`, thus check if the utility is a map first\n // Then check if the utility needs print styles\n @if type-of($utility) == \"map\" and map-get($utility, print) == true {\n @include generate-utility($utility, \"-print\");\n }\n }\n}\n"]} \ No newline at end of file diff --git a/site/templates/vendors/Bootstrap/css/bootstrap-grid.rtl.css b/site/templates/vendors/Bootstrap/css/bootstrap-grid.rtl.css deleted file mode 100644 index a35343a..0000000 --- a/site/templates/vendors/Bootstrap/css/bootstrap-grid.rtl.css +++ /dev/null @@ -1,4225 +0,0 @@ -/*! - * Bootstrap Grid v5.3.0-alpha1 (https://getbootstrap.com/) - * Copyright 2011-2022 The Bootstrap Authors - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - */ -:root, -[data-bs-theme=light] { - --bs-blue: #0d6efd; - --bs-indigo: #6610f2; - --bs-purple: #6f42c1; - --bs-pink: #d63384; - --bs-red: #dc3545; - --bs-orange: #fd7e14; - --bs-yellow: #ffc107; - --bs-green: #198754; - --bs-teal: #20c997; - --bs-cyan: #0dcaf0; - --bs-black: #000; - --bs-white: #fff; - --bs-gray: #6c757d; - --bs-gray-dark: #343a40; - --bs-gray-100: #f8f9fa; - --bs-gray-200: #e9ecef; - --bs-gray-300: #dee2e6; - --bs-gray-400: #ced4da; - --bs-gray-500: #adb5bd; - --bs-gray-600: #6c757d; - --bs-gray-700: #495057; - --bs-gray-800: #343a40; - --bs-gray-900: #212529; - --bs-primary: #0d6efd; - --bs-secondary: #6c757d; - --bs-success: #198754; - --bs-info: #0dcaf0; - --bs-warning: #ffc107; - --bs-danger: #dc3545; - --bs-light: #f8f9fa; - --bs-dark: #212529; - --bs-primary-rgb: 13, 110, 253; - --bs-secondary-rgb: 108, 117, 125; - --bs-success-rgb: 25, 135, 84; - --bs-info-rgb: 13, 202, 240; - --bs-warning-rgb: 255, 193, 7; - --bs-danger-rgb: 220, 53, 69; - --bs-light-rgb: 248, 249, 250; - --bs-dark-rgb: 33, 37, 41; - --bs-primary-text: #0a58ca; - --bs-secondary-text: #6c757d; - --bs-success-text: #146c43; - --bs-info-text: #087990; - --bs-warning-text: #997404; - --bs-danger-text: #b02a37; - --bs-light-text: #6c757d; - --bs-dark-text: #495057; - --bs-primary-bg-subtle: #cfe2ff; - --bs-secondary-bg-subtle: #f8f9fa; - --bs-success-bg-subtle: #d1e7dd; - --bs-info-bg-subtle: #cff4fc; - --bs-warning-bg-subtle: #fff3cd; - --bs-danger-bg-subtle: #f8d7da; - --bs-light-bg-subtle: #fcfcfd; - --bs-dark-bg-subtle: #ced4da; - --bs-primary-border-subtle: #9ec5fe; - --bs-secondary-border-subtle: #e9ecef; - --bs-success-border-subtle: #a3cfbb; - --bs-info-border-subtle: #9eeaf9; - --bs-warning-border-subtle: #ffe69c; - --bs-danger-border-subtle: #f1aeb5; - --bs-light-border-subtle: #e9ecef; - --bs-dark-border-subtle: #adb5bd; - --bs-white-rgb: 255, 255, 255; - --bs-black-rgb: 0, 0, 0; - --bs-body-color-rgb: 33, 37, 41; - --bs-body-bg-rgb: 255, 255, 255; - --bs-font-sans-serif: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", "Liberation Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - --bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; - --bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0)); - --bs-body-font-family: var(--bs-font-sans-serif); - --bs-body-font-size: 1rem; - --bs-body-font-weight: 400; - --bs-body-line-height: 1.5; - --bs-body-color: #212529; - --bs-emphasis-color: #000; - --bs-emphasis-color-rgb: 0, 0, 0; - --bs-secondary-color: rgba(33, 37, 41, 0.75); - --bs-secondary-color-rgb: 33, 37, 41; - --bs-secondary-bg: #e9ecef; - --bs-secondary-bg-rgb: 233, 236, 239; - --bs-tertiary-color: rgba(33, 37, 41, 0.5); - --bs-tertiary-color-rgb: 33, 37, 41; - --bs-tertiary-bg: #f8f9fa; - --bs-tertiary-bg-rgb: 248, 249, 250; - --bs-body-bg: #fff; - --bs-body-bg-rgb: 255, 255, 255; - --bs-link-color: #0d6efd; - --bs-link-color-rgb: 13, 110, 253; - --bs-link-decoration: underline; - --bs-link-hover-color: #0a58ca; - --bs-link-hover-color-rgb: 10, 88, 202; - --bs-code-color: #d63384; - --bs-highlight-bg: #fff3cd; - --bs-border-width: 1px; - --bs-border-style: solid; - --bs-border-color: #dee2e6; - --bs-border-color-translucent: rgba(0, 0, 0, 0.175); - --bs-border-radius: 0.375rem; - --bs-border-radius-sm: 0.25rem; - --bs-border-radius-lg: 0.5rem; - --bs-border-radius-xl: 1rem; - --bs-border-radius-2xl: 2rem; - --bs-border-radius-pill: 50rem; - --bs-box-shadow: 0 0.5rem 1rem rgba(var(--bs-body-color-rgb), 0.15); - --bs-box-shadow-sm: 0 0.125rem 0.25rem rgba(var(--bs-body-color-rgb), 0.075); - --bs-box-shadow-lg: 0 1rem 3rem rgba(var(--bs-body-color-rgb), 0.175); - --bs-box-shadow-inset: inset 0 1px 2px rgba(var(--bs-body-color-rgb), 0.075); - --bs-emphasis-color: #000; - --bs-form-control-bg: var(--bs-body-bg); - --bs-form-control-disabled-bg: var(--bs-secondary-bg); - --bs-highlight-bg: #fff3cd; - --bs-breakpoint-xs: 0; - --bs-breakpoint-sm: 576px; - --bs-breakpoint-md: 768px; - --bs-breakpoint-lg: 992px; - --bs-breakpoint-xl: 1200px; - --bs-breakpoint-xxl: 1400px; -} - -[data-bs-theme=dark] { - --bs-body-color: #adb5bd; - --bs-body-color-rgb: 173, 181, 189; - --bs-body-bg: #212529; - --bs-body-bg-rgb: 33, 37, 41; - --bs-emphasis-color: #f8f9fa; - --bs-emphasis-color-rgb: 248, 249, 250; - --bs-secondary-color: rgba(173, 181, 189, 0.75); - --bs-secondary-color-rgb: 173, 181, 189; - --bs-secondary-bg: #343a40; - --bs-secondary-bg-rgb: 52, 58, 64; - --bs-tertiary-color: rgba(173, 181, 189, 0.5); - --bs-tertiary-color-rgb: 173, 181, 189; - --bs-tertiary-bg: #2b3035; - --bs-tertiary-bg-rgb: 43, 48, 53; - --bs-emphasis-color: #fff; - --bs-primary-text: #6ea8fe; - --bs-secondary-text: #dee2e6; - --bs-success-text: #75b798; - --bs-info-text: #6edff6; - --bs-warning-text: #ffda6a; - --bs-danger-text: #ea868f; - --bs-light-text: #f8f9fa; - --bs-dark-text: #dee2e6; - --bs-primary-bg-subtle: #031633; - --bs-secondary-bg-subtle: #212529; - --bs-success-bg-subtle: #051b11; - --bs-info-bg-subtle: #032830; - --bs-warning-bg-subtle: #332701; - --bs-danger-bg-subtle: #2c0b0e; - --bs-light-bg-subtle: #343a40; - --bs-dark-bg-subtle: #1a1d20; - --bs-primary-border-subtle: #084298; - --bs-secondary-border-subtle: #495057; - --bs-success-border-subtle: #0f5132; - --bs-info-border-subtle: #055160; - --bs-warning-border-subtle: #664d03; - --bs-danger-border-subtle: #842029; - --bs-light-border-subtle: #495057; - --bs-dark-border-subtle: #343a40; - --bs-heading-color: #fff; - --bs-link-color: #6ea8fe; - --bs-link-hover-color: #9ec5fe; - --bs-link-color-rgb: 110, 168, 254; - --bs-link-hover-color-rgb: 158, 197, 254; - --bs-code-color: #e685b5; - --bs-border-color: #495057; - --bs-border-color-translucent: rgba(255, 255, 255, 0.15); -} - -.container, -.container-fluid, -.container-xxl, -.container-xl, -.container-lg, -.container-md, -.container-sm { - --bs-gutter-x: 1.5rem; - --bs-gutter-y: 0; - width: 100%; - padding-left: calc(var(--bs-gutter-x) * 0.5); - padding-right: calc(var(--bs-gutter-x) * 0.5); - margin-left: auto; - margin-right: auto; -} - -@media (min-width: 576px) { - .container-sm, .container { - max-width: 540px; - } -} -@media (min-width: 768px) { - .container-md, .container-sm, .container { - max-width: 720px; - } -} -@media (min-width: 992px) { - .container-lg, .container-md, .container-sm, .container { - max-width: 960px; - } -} -@media (min-width: 1200px) { - .container-xl, .container-lg, .container-md, .container-sm, .container { - max-width: 1140px; - } -} -@media (min-width: 1400px) { - .container-xxl, .container-xl, .container-lg, .container-md, .container-sm, .container { - max-width: 1320px; - } -} -.row { - --bs-gutter-x: 1.5rem; - --bs-gutter-y: 0; - display: flex; - flex-wrap: wrap; - margin-top: calc(-1 * var(--bs-gutter-y)); - margin-left: calc(-0.5 * var(--bs-gutter-x)); - margin-right: calc(-0.5 * var(--bs-gutter-x)); -} -.row > * { - box-sizing: border-box; - flex-shrink: 0; - width: 100%; - max-width: 100%; - padding-left: calc(var(--bs-gutter-x) * 0.5); - padding-right: calc(var(--bs-gutter-x) * 0.5); - margin-top: var(--bs-gutter-y); -} - -.col { - flex: 1 0 0%; -} - -.row-cols-auto > * { - flex: 0 0 auto; - width: auto; -} - -.row-cols-1 > * { - flex: 0 0 auto; - width: 100%; -} - -.row-cols-2 > * { - flex: 0 0 auto; - width: 50%; -} - -.row-cols-3 > * { - flex: 0 0 auto; - width: 33.3333333333%; -} - -.row-cols-4 > * { - flex: 0 0 auto; - width: 25%; -} - -.row-cols-5 > * { - flex: 0 0 auto; - width: 20%; -} - -.row-cols-6 > * { - flex: 0 0 auto; - width: 16.6666666667%; -} - -.col-auto { - flex: 0 0 auto; - width: auto; -} - -.col-1 { - flex: 0 0 auto; - width: 8.33333333%; -} - -.col-2 { - flex: 0 0 auto; - width: 16.66666667%; -} - -.col-3 { - flex: 0 0 auto; - width: 25%; -} - -.col-4 { - flex: 0 0 auto; - width: 33.33333333%; -} - -.col-5 { - flex: 0 0 auto; - width: 41.66666667%; -} - -.col-6 { - flex: 0 0 auto; - width: 50%; -} - -.col-7 { - flex: 0 0 auto; - width: 58.33333333%; -} - -.col-8 { - flex: 0 0 auto; - width: 66.66666667%; -} - -.col-9 { - flex: 0 0 auto; - width: 75%; -} - -.col-10 { - flex: 0 0 auto; - width: 83.33333333%; -} - -.col-11 { - flex: 0 0 auto; - width: 91.66666667%; -} - -.col-12 { - flex: 0 0 auto; - width: 100%; -} - -.offset-1 { - margin-right: 8.33333333%; -} - -.offset-2 { - margin-right: 16.66666667%; -} - -.offset-3 { - margin-right: 25%; -} - -.offset-4 { - margin-right: 33.33333333%; -} - -.offset-5 { - margin-right: 41.66666667%; -} - -.offset-6 { - margin-right: 50%; -} - -.offset-7 { - margin-right: 58.33333333%; -} - -.offset-8 { - margin-right: 66.66666667%; -} - -.offset-9 { - margin-right: 75%; -} - -.offset-10 { - margin-right: 83.33333333%; -} - -.offset-11 { - margin-right: 91.66666667%; -} - -.g-0, -.gx-0 { - --bs-gutter-x: 0; -} - -.g-0, -.gy-0 { - --bs-gutter-y: 0; -} - -.g-1, -.gx-1 { - --bs-gutter-x: 0.25rem; -} - -.g-1, -.gy-1 { - --bs-gutter-y: 0.25rem; -} - -.g-2, -.gx-2 { - --bs-gutter-x: 0.5rem; -} - -.g-2, -.gy-2 { - --bs-gutter-y: 0.5rem; -} - -.g-3, -.gx-3 { - --bs-gutter-x: 1rem; -} - -.g-3, -.gy-3 { - --bs-gutter-y: 1rem; -} - -.g-4, -.gx-4 { - --bs-gutter-x: 1.5rem; -} - -.g-4, -.gy-4 { - --bs-gutter-y: 1.5rem; -} - -.g-5, -.gx-5 { - --bs-gutter-x: 3rem; -} - -.g-5, -.gy-5 { - --bs-gutter-y: 3rem; -} - -@media (min-width: 576px) { - .col-sm { - flex: 1 0 0%; - } - .row-cols-sm-auto > * { - flex: 0 0 auto; - width: auto; - } - .row-cols-sm-1 > * { - flex: 0 0 auto; - width: 100%; - } - .row-cols-sm-2 > * { - flex: 0 0 auto; - width: 50%; - } - .row-cols-sm-3 > * { - flex: 0 0 auto; - width: 33.3333333333%; - } - .row-cols-sm-4 > * { - flex: 0 0 auto; - width: 25%; - } - .row-cols-sm-5 > * { - flex: 0 0 auto; - width: 20%; - } - .row-cols-sm-6 > * { - flex: 0 0 auto; - width: 16.6666666667%; - } - .col-sm-auto { - flex: 0 0 auto; - width: auto; - } - .col-sm-1 { - flex: 0 0 auto; - width: 8.33333333%; - } - .col-sm-2 { - flex: 0 0 auto; - width: 16.66666667%; - } - .col-sm-3 { - flex: 0 0 auto; - width: 25%; - } - .col-sm-4 { - flex: 0 0 auto; - width: 33.33333333%; - } - .col-sm-5 { - flex: 0 0 auto; - width: 41.66666667%; - } - .col-sm-6 { - flex: 0 0 auto; - width: 50%; - } - .col-sm-7 { - flex: 0 0 auto; - width: 58.33333333%; - } - .col-sm-8 { - flex: 0 0 auto; - width: 66.66666667%; - } - .col-sm-9 { - flex: 0 0 auto; - width: 75%; - } - .col-sm-10 { - flex: 0 0 auto; - width: 83.33333333%; - } - .col-sm-11 { - flex: 0 0 auto; - width: 91.66666667%; - } - .col-sm-12 { - flex: 0 0 auto; - width: 100%; - } - .offset-sm-0 { - margin-right: 0; - } - .offset-sm-1 { - margin-right: 8.33333333%; - } - .offset-sm-2 { - margin-right: 16.66666667%; - } - .offset-sm-3 { - margin-right: 25%; - } - .offset-sm-4 { - margin-right: 33.33333333%; - } - .offset-sm-5 { - margin-right: 41.66666667%; - } - .offset-sm-6 { - margin-right: 50%; - } - .offset-sm-7 { - margin-right: 58.33333333%; - } - .offset-sm-8 { - margin-right: 66.66666667%; - } - .offset-sm-9 { - margin-right: 75%; - } - .offset-sm-10 { - margin-right: 83.33333333%; - } - .offset-sm-11 { - margin-right: 91.66666667%; - } - .g-sm-0, - .gx-sm-0 { - --bs-gutter-x: 0; - } - .g-sm-0, - .gy-sm-0 { - --bs-gutter-y: 0; - } - .g-sm-1, - .gx-sm-1 { - --bs-gutter-x: 0.25rem; - } - .g-sm-1, - .gy-sm-1 { - --bs-gutter-y: 0.25rem; - } - .g-sm-2, - .gx-sm-2 { - --bs-gutter-x: 0.5rem; - } - .g-sm-2, - .gy-sm-2 { - --bs-gutter-y: 0.5rem; - } - .g-sm-3, - .gx-sm-3 { - --bs-gutter-x: 1rem; - } - .g-sm-3, - .gy-sm-3 { - --bs-gutter-y: 1rem; - } - .g-sm-4, - .gx-sm-4 { - --bs-gutter-x: 1.5rem; - } - .g-sm-4, - .gy-sm-4 { - --bs-gutter-y: 1.5rem; - } - .g-sm-5, - .gx-sm-5 { - --bs-gutter-x: 3rem; - } - .g-sm-5, - .gy-sm-5 { - --bs-gutter-y: 3rem; - } -} -@media (min-width: 768px) { - .col-md { - flex: 1 0 0%; - } - .row-cols-md-auto > * { - flex: 0 0 auto; - width: auto; - } - .row-cols-md-1 > * { - flex: 0 0 auto; - width: 100%; - } - .row-cols-md-2 > * { - flex: 0 0 auto; - width: 50%; - } - .row-cols-md-3 > * { - flex: 0 0 auto; - width: 33.3333333333%; - } - .row-cols-md-4 > * { - flex: 0 0 auto; - width: 25%; - } - .row-cols-md-5 > * { - flex: 0 0 auto; - width: 20%; - } - .row-cols-md-6 > * { - flex: 0 0 auto; - width: 16.6666666667%; - } - .col-md-auto { - flex: 0 0 auto; - width: auto; - } - .col-md-1 { - flex: 0 0 auto; - width: 8.33333333%; - } - .col-md-2 { - flex: 0 0 auto; - width: 16.66666667%; - } - .col-md-3 { - flex: 0 0 auto; - width: 25%; - } - .col-md-4 { - flex: 0 0 auto; - width: 33.33333333%; - } - .col-md-5 { - flex: 0 0 auto; - width: 41.66666667%; - } - .col-md-6 { - flex: 0 0 auto; - width: 50%; - } - .col-md-7 { - flex: 0 0 auto; - width: 58.33333333%; - } - .col-md-8 { - flex: 0 0 auto; - width: 66.66666667%; - } - .col-md-9 { - flex: 0 0 auto; - width: 75%; - } - .col-md-10 { - flex: 0 0 auto; - width: 83.33333333%; - } - .col-md-11 { - flex: 0 0 auto; - width: 91.66666667%; - } - .col-md-12 { - flex: 0 0 auto; - width: 100%; - } - .offset-md-0 { - margin-right: 0; - } - .offset-md-1 { - margin-right: 8.33333333%; - } - .offset-md-2 { - margin-right: 16.66666667%; - } - .offset-md-3 { - margin-right: 25%; - } - .offset-md-4 { - margin-right: 33.33333333%; - } - .offset-md-5 { - margin-right: 41.66666667%; - } - .offset-md-6 { - margin-right: 50%; - } - .offset-md-7 { - margin-right: 58.33333333%; - } - .offset-md-8 { - margin-right: 66.66666667%; - } - .offset-md-9 { - margin-right: 75%; - } - .offset-md-10 { - margin-right: 83.33333333%; - } - .offset-md-11 { - margin-right: 91.66666667%; - } - .g-md-0, - .gx-md-0 { - --bs-gutter-x: 0; - } - .g-md-0, - .gy-md-0 { - --bs-gutter-y: 0; - } - .g-md-1, - .gx-md-1 { - --bs-gutter-x: 0.25rem; - } - .g-md-1, - .gy-md-1 { - --bs-gutter-y: 0.25rem; - } - .g-md-2, - .gx-md-2 { - --bs-gutter-x: 0.5rem; - } - .g-md-2, - .gy-md-2 { - --bs-gutter-y: 0.5rem; - } - .g-md-3, - .gx-md-3 { - --bs-gutter-x: 1rem; - } - .g-md-3, - .gy-md-3 { - --bs-gutter-y: 1rem; - } - .g-md-4, - .gx-md-4 { - --bs-gutter-x: 1.5rem; - } - .g-md-4, - .gy-md-4 { - --bs-gutter-y: 1.5rem; - } - .g-md-5, - .gx-md-5 { - --bs-gutter-x: 3rem; - } - .g-md-5, - .gy-md-5 { - --bs-gutter-y: 3rem; - } -} -@media (min-width: 992px) { - .col-lg { - flex: 1 0 0%; - } - .row-cols-lg-auto > * { - flex: 0 0 auto; - width: auto; - } - .row-cols-lg-1 > * { - flex: 0 0 auto; - width: 100%; - } - .row-cols-lg-2 > * { - flex: 0 0 auto; - width: 50%; - } - .row-cols-lg-3 > * { - flex: 0 0 auto; - width: 33.3333333333%; - } - .row-cols-lg-4 > * { - flex: 0 0 auto; - width: 25%; - } - .row-cols-lg-5 > * { - flex: 0 0 auto; - width: 20%; - } - .row-cols-lg-6 > * { - flex: 0 0 auto; - width: 16.6666666667%; - } - .col-lg-auto { - flex: 0 0 auto; - width: auto; - } - .col-lg-1 { - flex: 0 0 auto; - width: 8.33333333%; - } - .col-lg-2 { - flex: 0 0 auto; - width: 16.66666667%; - } - .col-lg-3 { - flex: 0 0 auto; - width: 25%; - } - .col-lg-4 { - flex: 0 0 auto; - width: 33.33333333%; - } - .col-lg-5 { - flex: 0 0 auto; - width: 41.66666667%; - } - .col-lg-6 { - flex: 0 0 auto; - width: 50%; - } - .col-lg-7 { - flex: 0 0 auto; - width: 58.33333333%; - } - .col-lg-8 { - flex: 0 0 auto; - width: 66.66666667%; - } - .col-lg-9 { - flex: 0 0 auto; - width: 75%; - } - .col-lg-10 { - flex: 0 0 auto; - width: 83.33333333%; - } - .col-lg-11 { - flex: 0 0 auto; - width: 91.66666667%; - } - .col-lg-12 { - flex: 0 0 auto; - width: 100%; - } - .offset-lg-0 { - margin-right: 0; - } - .offset-lg-1 { - margin-right: 8.33333333%; - } - .offset-lg-2 { - margin-right: 16.66666667%; - } - .offset-lg-3 { - margin-right: 25%; - } - .offset-lg-4 { - margin-right: 33.33333333%; - } - .offset-lg-5 { - margin-right: 41.66666667%; - } - .offset-lg-6 { - margin-right: 50%; - } - .offset-lg-7 { - margin-right: 58.33333333%; - } - .offset-lg-8 { - margin-right: 66.66666667%; - } - .offset-lg-9 { - margin-right: 75%; - } - .offset-lg-10 { - margin-right: 83.33333333%; - } - .offset-lg-11 { - margin-right: 91.66666667%; - } - .g-lg-0, - .gx-lg-0 { - --bs-gutter-x: 0; - } - .g-lg-0, - .gy-lg-0 { - --bs-gutter-y: 0; - } - .g-lg-1, - .gx-lg-1 { - --bs-gutter-x: 0.25rem; - } - .g-lg-1, - .gy-lg-1 { - --bs-gutter-y: 0.25rem; - } - .g-lg-2, - .gx-lg-2 { - --bs-gutter-x: 0.5rem; - } - .g-lg-2, - .gy-lg-2 { - --bs-gutter-y: 0.5rem; - } - .g-lg-3, - .gx-lg-3 { - --bs-gutter-x: 1rem; - } - .g-lg-3, - .gy-lg-3 { - --bs-gutter-y: 1rem; - } - .g-lg-4, - .gx-lg-4 { - --bs-gutter-x: 1.5rem; - } - .g-lg-4, - .gy-lg-4 { - --bs-gutter-y: 1.5rem; - } - .g-lg-5, - .gx-lg-5 { - --bs-gutter-x: 3rem; - } - .g-lg-5, - .gy-lg-5 { - --bs-gutter-y: 3rem; - } -} -@media (min-width: 1200px) { - .col-xl { - flex: 1 0 0%; - } - .row-cols-xl-auto > * { - flex: 0 0 auto; - width: auto; - } - .row-cols-xl-1 > * { - flex: 0 0 auto; - width: 100%; - } - .row-cols-xl-2 > * { - flex: 0 0 auto; - width: 50%; - } - .row-cols-xl-3 > * { - flex: 0 0 auto; - width: 33.3333333333%; - } - .row-cols-xl-4 > * { - flex: 0 0 auto; - width: 25%; - } - .row-cols-xl-5 > * { - flex: 0 0 auto; - width: 20%; - } - .row-cols-xl-6 > * { - flex: 0 0 auto; - width: 16.6666666667%; - } - .col-xl-auto { - flex: 0 0 auto; - width: auto; - } - .col-xl-1 { - flex: 0 0 auto; - width: 8.33333333%; - } - .col-xl-2 { - flex: 0 0 auto; - width: 16.66666667%; - } - .col-xl-3 { - flex: 0 0 auto; - width: 25%; - } - .col-xl-4 { - flex: 0 0 auto; - width: 33.33333333%; - } - .col-xl-5 { - flex: 0 0 auto; - width: 41.66666667%; - } - .col-xl-6 { - flex: 0 0 auto; - width: 50%; - } - .col-xl-7 { - flex: 0 0 auto; - width: 58.33333333%; - } - .col-xl-8 { - flex: 0 0 auto; - width: 66.66666667%; - } - .col-xl-9 { - flex: 0 0 auto; - width: 75%; - } - .col-xl-10 { - flex: 0 0 auto; - width: 83.33333333%; - } - .col-xl-11 { - flex: 0 0 auto; - width: 91.66666667%; - } - .col-xl-12 { - flex: 0 0 auto; - width: 100%; - } - .offset-xl-0 { - margin-right: 0; - } - .offset-xl-1 { - margin-right: 8.33333333%; - } - .offset-xl-2 { - margin-right: 16.66666667%; - } - .offset-xl-3 { - margin-right: 25%; - } - .offset-xl-4 { - margin-right: 33.33333333%; - } - .offset-xl-5 { - margin-right: 41.66666667%; - } - .offset-xl-6 { - margin-right: 50%; - } - .offset-xl-7 { - margin-right: 58.33333333%; - } - .offset-xl-8 { - margin-right: 66.66666667%; - } - .offset-xl-9 { - margin-right: 75%; - } - .offset-xl-10 { - margin-right: 83.33333333%; - } - .offset-xl-11 { - margin-right: 91.66666667%; - } - .g-xl-0, - .gx-xl-0 { - --bs-gutter-x: 0; - } - .g-xl-0, - .gy-xl-0 { - --bs-gutter-y: 0; - } - .g-xl-1, - .gx-xl-1 { - --bs-gutter-x: 0.25rem; - } - .g-xl-1, - .gy-xl-1 { - --bs-gutter-y: 0.25rem; - } - .g-xl-2, - .gx-xl-2 { - --bs-gutter-x: 0.5rem; - } - .g-xl-2, - .gy-xl-2 { - --bs-gutter-y: 0.5rem; - } - .g-xl-3, - .gx-xl-3 { - --bs-gutter-x: 1rem; - } - .g-xl-3, - .gy-xl-3 { - --bs-gutter-y: 1rem; - } - .g-xl-4, - .gx-xl-4 { - --bs-gutter-x: 1.5rem; - } - .g-xl-4, - .gy-xl-4 { - --bs-gutter-y: 1.5rem; - } - .g-xl-5, - .gx-xl-5 { - --bs-gutter-x: 3rem; - } - .g-xl-5, - .gy-xl-5 { - --bs-gutter-y: 3rem; - } -} -@media (min-width: 1400px) { - .col-xxl { - flex: 1 0 0%; - } - .row-cols-xxl-auto > * { - flex: 0 0 auto; - width: auto; - } - .row-cols-xxl-1 > * { - flex: 0 0 auto; - width: 100%; - } - .row-cols-xxl-2 > * { - flex: 0 0 auto; - width: 50%; - } - .row-cols-xxl-3 > * { - flex: 0 0 auto; - width: 33.3333333333%; - } - .row-cols-xxl-4 > * { - flex: 0 0 auto; - width: 25%; - } - .row-cols-xxl-5 > * { - flex: 0 0 auto; - width: 20%; - } - .row-cols-xxl-6 > * { - flex: 0 0 auto; - width: 16.6666666667%; - } - .col-xxl-auto { - flex: 0 0 auto; - width: auto; - } - .col-xxl-1 { - flex: 0 0 auto; - width: 8.33333333%; - } - .col-xxl-2 { - flex: 0 0 auto; - width: 16.66666667%; - } - .col-xxl-3 { - flex: 0 0 auto; - width: 25%; - } - .col-xxl-4 { - flex: 0 0 auto; - width: 33.33333333%; - } - .col-xxl-5 { - flex: 0 0 auto; - width: 41.66666667%; - } - .col-xxl-6 { - flex: 0 0 auto; - width: 50%; - } - .col-xxl-7 { - flex: 0 0 auto; - width: 58.33333333%; - } - .col-xxl-8 { - flex: 0 0 auto; - width: 66.66666667%; - } - .col-xxl-9 { - flex: 0 0 auto; - width: 75%; - } - .col-xxl-10 { - flex: 0 0 auto; - width: 83.33333333%; - } - .col-xxl-11 { - flex: 0 0 auto; - width: 91.66666667%; - } - .col-xxl-12 { - flex: 0 0 auto; - width: 100%; - } - .offset-xxl-0 { - margin-right: 0; - } - .offset-xxl-1 { - margin-right: 8.33333333%; - } - .offset-xxl-2 { - margin-right: 16.66666667%; - } - .offset-xxl-3 { - margin-right: 25%; - } - .offset-xxl-4 { - margin-right: 33.33333333%; - } - .offset-xxl-5 { - margin-right: 41.66666667%; - } - .offset-xxl-6 { - margin-right: 50%; - } - .offset-xxl-7 { - margin-right: 58.33333333%; - } - .offset-xxl-8 { - margin-right: 66.66666667%; - } - .offset-xxl-9 { - margin-right: 75%; - } - .offset-xxl-10 { - margin-right: 83.33333333%; - } - .offset-xxl-11 { - margin-right: 91.66666667%; - } - .g-xxl-0, - .gx-xxl-0 { - --bs-gutter-x: 0; - } - .g-xxl-0, - .gy-xxl-0 { - --bs-gutter-y: 0; - } - .g-xxl-1, - .gx-xxl-1 { - --bs-gutter-x: 0.25rem; - } - .g-xxl-1, - .gy-xxl-1 { - --bs-gutter-y: 0.25rem; - } - .g-xxl-2, - .gx-xxl-2 { - --bs-gutter-x: 0.5rem; - } - .g-xxl-2, - .gy-xxl-2 { - --bs-gutter-y: 0.5rem; - } - .g-xxl-3, - .gx-xxl-3 { - --bs-gutter-x: 1rem; - } - .g-xxl-3, - .gy-xxl-3 { - --bs-gutter-y: 1rem; - } - .g-xxl-4, - .gx-xxl-4 { - --bs-gutter-x: 1.5rem; - } - .g-xxl-4, - .gy-xxl-4 { - --bs-gutter-y: 1.5rem; - } - .g-xxl-5, - .gx-xxl-5 { - --bs-gutter-x: 3rem; - } - .g-xxl-5, - .gy-xxl-5 { - --bs-gutter-y: 3rem; - } -} -.d-inline { - display: inline !important; -} - -.d-inline-block { - display: inline-block !important; -} - -.d-block { - display: block !important; -} - -.d-grid { - display: grid !important; -} - -.d-table { - display: table !important; -} - -.d-table-row { - display: table-row !important; -} - -.d-table-cell { - display: table-cell !important; -} - -.d-flex { - display: flex !important; -} - -.d-inline-flex { - display: inline-flex !important; -} - -.d-none { - display: none !important; -} - -.flex-fill { - flex: 1 1 auto !important; -} - -.flex-row { - flex-direction: row !important; -} - -.flex-column { - flex-direction: column !important; -} - -.flex-row-reverse { - flex-direction: row-reverse !important; -} - -.flex-column-reverse { - flex-direction: column-reverse !important; -} - -.flex-grow-0 { - flex-grow: 0 !important; -} - -.flex-grow-1 { - flex-grow: 1 !important; -} - -.flex-shrink-0 { - flex-shrink: 0 !important; -} - -.flex-shrink-1 { - flex-shrink: 1 !important; -} - -.flex-wrap { - flex-wrap: wrap !important; -} - -.flex-nowrap { - flex-wrap: nowrap !important; -} - -.flex-wrap-reverse { - flex-wrap: wrap-reverse !important; -} - -.justify-content-start { - justify-content: flex-start !important; -} - -.justify-content-end { - justify-content: flex-end !important; -} - -.justify-content-center { - justify-content: center !important; -} - -.justify-content-between { - justify-content: space-between !important; -} - -.justify-content-around { - justify-content: space-around !important; -} - -.justify-content-evenly { - justify-content: space-evenly !important; -} - -.align-items-start { - align-items: flex-start !important; -} - -.align-items-end { - align-items: flex-end !important; -} - -.align-items-center { - align-items: center !important; -} - -.align-items-baseline { - align-items: baseline !important; -} - -.align-items-stretch { - align-items: stretch !important; -} - -.align-content-start { - align-content: flex-start !important; -} - -.align-content-end { - align-content: flex-end !important; -} - -.align-content-center { - align-content: center !important; -} - -.align-content-between { - align-content: space-between !important; -} - -.align-content-around { - align-content: space-around !important; -} - -.align-content-stretch { - align-content: stretch !important; -} - -.align-self-auto { - align-self: auto !important; -} - -.align-self-start { - align-self: flex-start !important; -} - -.align-self-end { - align-self: flex-end !important; -} - -.align-self-center { - align-self: center !important; -} - -.align-self-baseline { - align-self: baseline !important; -} - -.align-self-stretch { - align-self: stretch !important; -} - -.order-first { - order: -1 !important; -} - -.order-0 { - order: 0 !important; -} - -.order-1 { - order: 1 !important; -} - -.order-2 { - order: 2 !important; -} - -.order-3 { - order: 3 !important; -} - -.order-4 { - order: 4 !important; -} - -.order-5 { - order: 5 !important; -} - -.order-last { - order: 6 !important; -} - -.m-0 { - margin: 0 !important; -} - -.m-1 { - margin: 0.25rem !important; -} - -.m-2 { - margin: 0.5rem !important; -} - -.m-3 { - margin: 1rem !important; -} - -.m-4 { - margin: 1.5rem !important; -} - -.m-5 { - margin: 3rem !important; -} - -.m-auto { - margin: auto !important; -} - -.mx-0 { - margin-left: 0 !important; - margin-right: 0 !important; -} - -.mx-1 { - margin-left: 0.25rem !important; - margin-right: 0.25rem !important; -} - -.mx-2 { - margin-left: 0.5rem !important; - margin-right: 0.5rem !important; -} - -.mx-3 { - margin-left: 1rem !important; - margin-right: 1rem !important; -} - -.mx-4 { - margin-left: 1.5rem !important; - margin-right: 1.5rem !important; -} - -.mx-5 { - margin-left: 3rem !important; - margin-right: 3rem !important; -} - -.mx-auto { - margin-left: auto !important; - margin-right: auto !important; -} - -.my-0 { - margin-top: 0 !important; - margin-bottom: 0 !important; -} - -.my-1 { - margin-top: 0.25rem !important; - margin-bottom: 0.25rem !important; -} - -.my-2 { - margin-top: 0.5rem !important; - margin-bottom: 0.5rem !important; -} - -.my-3 { - margin-top: 1rem !important; - margin-bottom: 1rem !important; -} - -.my-4 { - margin-top: 1.5rem !important; - margin-bottom: 1.5rem !important; -} - -.my-5 { - margin-top: 3rem !important; - margin-bottom: 3rem !important; -} - -.my-auto { - margin-top: auto !important; - margin-bottom: auto !important; -} - -.mt-0 { - margin-top: 0 !important; -} - -.mt-1 { - margin-top: 0.25rem !important; -} - -.mt-2 { - margin-top: 0.5rem !important; -} - -.mt-3 { - margin-top: 1rem !important; -} - -.mt-4 { - margin-top: 1.5rem !important; -} - -.mt-5 { - margin-top: 3rem !important; -} - -.mt-auto { - margin-top: auto !important; -} - -.me-0 { - margin-left: 0 !important; -} - -.me-1 { - margin-left: 0.25rem !important; -} - -.me-2 { - margin-left: 0.5rem !important; -} - -.me-3 { - margin-left: 1rem !important; -} - -.me-4 { - margin-left: 1.5rem !important; -} - -.me-5 { - margin-left: 3rem !important; -} - -.me-auto { - margin-left: auto !important; -} - -.mb-0 { - margin-bottom: 0 !important; -} - -.mb-1 { - margin-bottom: 0.25rem !important; -} - -.mb-2 { - margin-bottom: 0.5rem !important; -} - -.mb-3 { - margin-bottom: 1rem !important; -} - -.mb-4 { - margin-bottom: 1.5rem !important; -} - -.mb-5 { - margin-bottom: 3rem !important; -} - -.mb-auto { - margin-bottom: auto !important; -} - -.ms-0 { - margin-right: 0 !important; -} - -.ms-1 { - margin-right: 0.25rem !important; -} - -.ms-2 { - margin-right: 0.5rem !important; -} - -.ms-3 { - margin-right: 1rem !important; -} - -.ms-4 { - margin-right: 1.5rem !important; -} - -.ms-5 { - margin-right: 3rem !important; -} - -.ms-auto { - margin-right: auto !important; -} - -.p-0 { - padding: 0 !important; -} - -.p-1 { - padding: 0.25rem !important; -} - -.p-2 { - padding: 0.5rem !important; -} - -.p-3 { - padding: 1rem !important; -} - -.p-4 { - padding: 1.5rem !important; -} - -.p-5 { - padding: 3rem !important; -} - -.px-0 { - padding-left: 0 !important; - padding-right: 0 !important; -} - -.px-1 { - padding-left: 0.25rem !important; - padding-right: 0.25rem !important; -} - -.px-2 { - padding-left: 0.5rem !important; - padding-right: 0.5rem !important; -} - -.px-3 { - padding-left: 1rem !important; - padding-right: 1rem !important; -} - -.px-4 { - padding-left: 1.5rem !important; - padding-right: 1.5rem !important; -} - -.px-5 { - padding-left: 3rem !important; - padding-right: 3rem !important; -} - -.py-0 { - padding-top: 0 !important; - padding-bottom: 0 !important; -} - -.py-1 { - padding-top: 0.25rem !important; - padding-bottom: 0.25rem !important; -} - -.py-2 { - padding-top: 0.5rem !important; - padding-bottom: 0.5rem !important; -} - -.py-3 { - padding-top: 1rem !important; - padding-bottom: 1rem !important; -} - -.py-4 { - padding-top: 1.5rem !important; - padding-bottom: 1.5rem !important; -} - -.py-5 { - padding-top: 3rem !important; - padding-bottom: 3rem !important; -} - -.pt-0 { - padding-top: 0 !important; -} - -.pt-1 { - padding-top: 0.25rem !important; -} - -.pt-2 { - padding-top: 0.5rem !important; -} - -.pt-3 { - padding-top: 1rem !important; -} - -.pt-4 { - padding-top: 1.5rem !important; -} - -.pt-5 { - padding-top: 3rem !important; -} - -.pe-0 { - padding-left: 0 !important; -} - -.pe-1 { - padding-left: 0.25rem !important; -} - -.pe-2 { - padding-left: 0.5rem !important; -} - -.pe-3 { - padding-left: 1rem !important; -} - -.pe-4 { - padding-left: 1.5rem !important; -} - -.pe-5 { - padding-left: 3rem !important; -} - -.pb-0 { - padding-bottom: 0 !important; -} - -.pb-1 { - padding-bottom: 0.25rem !important; -} - -.pb-2 { - padding-bottom: 0.5rem !important; -} - -.pb-3 { - padding-bottom: 1rem !important; -} - -.pb-4 { - padding-bottom: 1.5rem !important; -} - -.pb-5 { - padding-bottom: 3rem !important; -} - -.ps-0 { - padding-right: 0 !important; -} - -.ps-1 { - padding-right: 0.25rem !important; -} - -.ps-2 { - padding-right: 0.5rem !important; -} - -.ps-3 { - padding-right: 1rem !important; -} - -.ps-4 { - padding-right: 1.5rem !important; -} - -.ps-5 { - padding-right: 3rem !important; -} - -@media (min-width: 576px) { - .d-sm-inline { - display: inline !important; - } - .d-sm-inline-block { - display: inline-block !important; - } - .d-sm-block { - display: block !important; - } - .d-sm-grid { - display: grid !important; - } - .d-sm-table { - display: table !important; - } - .d-sm-table-row { - display: table-row !important; - } - .d-sm-table-cell { - display: table-cell !important; - } - .d-sm-flex { - display: flex !important; - } - .d-sm-inline-flex { - display: inline-flex !important; - } - .d-sm-none { - display: none !important; - } - .flex-sm-fill { - flex: 1 1 auto !important; - } - .flex-sm-row { - flex-direction: row !important; - } - .flex-sm-column { - flex-direction: column !important; - } - .flex-sm-row-reverse { - flex-direction: row-reverse !important; - } - .flex-sm-column-reverse { - flex-direction: column-reverse !important; - } - .flex-sm-grow-0 { - flex-grow: 0 !important; - } - .flex-sm-grow-1 { - flex-grow: 1 !important; - } - .flex-sm-shrink-0 { - flex-shrink: 0 !important; - } - .flex-sm-shrink-1 { - flex-shrink: 1 !important; - } - .flex-sm-wrap { - flex-wrap: wrap !important; - } - .flex-sm-nowrap { - flex-wrap: nowrap !important; - } - .flex-sm-wrap-reverse { - flex-wrap: wrap-reverse !important; - } - .justify-content-sm-start { - justify-content: flex-start !important; - } - .justify-content-sm-end { - justify-content: flex-end !important; - } - .justify-content-sm-center { - justify-content: center !important; - } - .justify-content-sm-between { - justify-content: space-between !important; - } - .justify-content-sm-around { - justify-content: space-around !important; - } - .justify-content-sm-evenly { - justify-content: space-evenly !important; - } - .align-items-sm-start { - align-items: flex-start !important; - } - .align-items-sm-end { - align-items: flex-end !important; - } - .align-items-sm-center { - align-items: center !important; - } - .align-items-sm-baseline { - align-items: baseline !important; - } - .align-items-sm-stretch { - align-items: stretch !important; - } - .align-content-sm-start { - align-content: flex-start !important; - } - .align-content-sm-end { - align-content: flex-end !important; - } - .align-content-sm-center { - align-content: center !important; - } - .align-content-sm-between { - align-content: space-between !important; - } - .align-content-sm-around { - align-content: space-around !important; - } - .align-content-sm-stretch { - align-content: stretch !important; - } - .align-self-sm-auto { - align-self: auto !important; - } - .align-self-sm-start { - align-self: flex-start !important; - } - .align-self-sm-end { - align-self: flex-end !important; - } - .align-self-sm-center { - align-self: center !important; - } - .align-self-sm-baseline { - align-self: baseline !important; - } - .align-self-sm-stretch { - align-self: stretch !important; - } - .order-sm-first { - order: -1 !important; - } - .order-sm-0 { - order: 0 !important; - } - .order-sm-1 { - order: 1 !important; - } - .order-sm-2 { - order: 2 !important; - } - .order-sm-3 { - order: 3 !important; - } - .order-sm-4 { - order: 4 !important; - } - .order-sm-5 { - order: 5 !important; - } - .order-sm-last { - order: 6 !important; - } - .m-sm-0 { - margin: 0 !important; - } - .m-sm-1 { - margin: 0.25rem !important; - } - .m-sm-2 { - margin: 0.5rem !important; - } - .m-sm-3 { - margin: 1rem !important; - } - .m-sm-4 { - margin: 1.5rem !important; - } - .m-sm-5 { - margin: 3rem !important; - } - .m-sm-auto { - margin: auto !important; - } - .mx-sm-0 { - margin-left: 0 !important; - margin-right: 0 !important; - } - .mx-sm-1 { - margin-left: 0.25rem !important; - margin-right: 0.25rem !important; - } - .mx-sm-2 { - margin-left: 0.5rem !important; - margin-right: 0.5rem !important; - } - .mx-sm-3 { - margin-left: 1rem !important; - margin-right: 1rem !important; - } - .mx-sm-4 { - margin-left: 1.5rem !important; - margin-right: 1.5rem !important; - } - .mx-sm-5 { - margin-left: 3rem !important; - margin-right: 3rem !important; - } - .mx-sm-auto { - margin-left: auto !important; - margin-right: auto !important; - } - .my-sm-0 { - margin-top: 0 !important; - margin-bottom: 0 !important; - } - .my-sm-1 { - margin-top: 0.25rem !important; - margin-bottom: 0.25rem !important; - } - .my-sm-2 { - margin-top: 0.5rem !important; - margin-bottom: 0.5rem !important; - } - .my-sm-3 { - margin-top: 1rem !important; - margin-bottom: 1rem !important; - } - .my-sm-4 { - margin-top: 1.5rem !important; - margin-bottom: 1.5rem !important; - } - .my-sm-5 { - margin-top: 3rem !important; - margin-bottom: 3rem !important; - } - .my-sm-auto { - margin-top: auto !important; - margin-bottom: auto !important; - } - .mt-sm-0 { - margin-top: 0 !important; - } - .mt-sm-1 { - margin-top: 0.25rem !important; - } - .mt-sm-2 { - margin-top: 0.5rem !important; - } - .mt-sm-3 { - margin-top: 1rem !important; - } - .mt-sm-4 { - margin-top: 1.5rem !important; - } - .mt-sm-5 { - margin-top: 3rem !important; - } - .mt-sm-auto { - margin-top: auto !important; - } - .me-sm-0 { - margin-left: 0 !important; - } - .me-sm-1 { - margin-left: 0.25rem !important; - } - .me-sm-2 { - margin-left: 0.5rem !important; - } - .me-sm-3 { - margin-left: 1rem !important; - } - .me-sm-4 { - margin-left: 1.5rem !important; - } - .me-sm-5 { - margin-left: 3rem !important; - } - .me-sm-auto { - margin-left: auto !important; - } - .mb-sm-0 { - margin-bottom: 0 !important; - } - .mb-sm-1 { - margin-bottom: 0.25rem !important; - } - .mb-sm-2 { - margin-bottom: 0.5rem !important; - } - .mb-sm-3 { - margin-bottom: 1rem !important; - } - .mb-sm-4 { - margin-bottom: 1.5rem !important; - } - .mb-sm-5 { - margin-bottom: 3rem !important; - } - .mb-sm-auto { - margin-bottom: auto !important; - } - .ms-sm-0 { - margin-right: 0 !important; - } - .ms-sm-1 { - margin-right: 0.25rem !important; - } - .ms-sm-2 { - margin-right: 0.5rem !important; - } - .ms-sm-3 { - margin-right: 1rem !important; - } - .ms-sm-4 { - margin-right: 1.5rem !important; - } - .ms-sm-5 { - margin-right: 3rem !important; - } - .ms-sm-auto { - margin-right: auto !important; - } - .p-sm-0 { - padding: 0 !important; - } - .p-sm-1 { - padding: 0.25rem !important; - } - .p-sm-2 { - padding: 0.5rem !important; - } - .p-sm-3 { - padding: 1rem !important; - } - .p-sm-4 { - padding: 1.5rem !important; - } - .p-sm-5 { - padding: 3rem !important; - } - .px-sm-0 { - padding-left: 0 !important; - padding-right: 0 !important; - } - .px-sm-1 { - padding-left: 0.25rem !important; - padding-right: 0.25rem !important; - } - .px-sm-2 { - padding-left: 0.5rem !important; - padding-right: 0.5rem !important; - } - .px-sm-3 { - padding-left: 1rem !important; - padding-right: 1rem !important; - } - .px-sm-4 { - padding-left: 1.5rem !important; - padding-right: 1.5rem !important; - } - .px-sm-5 { - padding-left: 3rem !important; - padding-right: 3rem !important; - } - .py-sm-0 { - padding-top: 0 !important; - padding-bottom: 0 !important; - } - .py-sm-1 { - padding-top: 0.25rem !important; - padding-bottom: 0.25rem !important; - } - .py-sm-2 { - padding-top: 0.5rem !important; - padding-bottom: 0.5rem !important; - } - .py-sm-3 { - padding-top: 1rem !important; - padding-bottom: 1rem !important; - } - .py-sm-4 { - padding-top: 1.5rem !important; - padding-bottom: 1.5rem !important; - } - .py-sm-5 { - padding-top: 3rem !important; - padding-bottom: 3rem !important; - } - .pt-sm-0 { - padding-top: 0 !important; - } - .pt-sm-1 { - padding-top: 0.25rem !important; - } - .pt-sm-2 { - padding-top: 0.5rem !important; - } - .pt-sm-3 { - padding-top: 1rem !important; - } - .pt-sm-4 { - padding-top: 1.5rem !important; - } - .pt-sm-5 { - padding-top: 3rem !important; - } - .pe-sm-0 { - padding-left: 0 !important; - } - .pe-sm-1 { - padding-left: 0.25rem !important; - } - .pe-sm-2 { - padding-left: 0.5rem !important; - } - .pe-sm-3 { - padding-left: 1rem !important; - } - .pe-sm-4 { - padding-left: 1.5rem !important; - } - .pe-sm-5 { - padding-left: 3rem !important; - } - .pb-sm-0 { - padding-bottom: 0 !important; - } - .pb-sm-1 { - padding-bottom: 0.25rem !important; - } - .pb-sm-2 { - padding-bottom: 0.5rem !important; - } - .pb-sm-3 { - padding-bottom: 1rem !important; - } - .pb-sm-4 { - padding-bottom: 1.5rem !important; - } - .pb-sm-5 { - padding-bottom: 3rem !important; - } - .ps-sm-0 { - padding-right: 0 !important; - } - .ps-sm-1 { - padding-right: 0.25rem !important; - } - .ps-sm-2 { - padding-right: 0.5rem !important; - } - .ps-sm-3 { - padding-right: 1rem !important; - } - .ps-sm-4 { - padding-right: 1.5rem !important; - } - .ps-sm-5 { - padding-right: 3rem !important; - } -} -@media (min-width: 768px) { - .d-md-inline { - display: inline !important; - } - .d-md-inline-block { - display: inline-block !important; - } - .d-md-block { - display: block !important; - } - .d-md-grid { - display: grid !important; - } - .d-md-table { - display: table !important; - } - .d-md-table-row { - display: table-row !important; - } - .d-md-table-cell { - display: table-cell !important; - } - .d-md-flex { - display: flex !important; - } - .d-md-inline-flex { - display: inline-flex !important; - } - .d-md-none { - display: none !important; - } - .flex-md-fill { - flex: 1 1 auto !important; - } - .flex-md-row { - flex-direction: row !important; - } - .flex-md-column { - flex-direction: column !important; - } - .flex-md-row-reverse { - flex-direction: row-reverse !important; - } - .flex-md-column-reverse { - flex-direction: column-reverse !important; - } - .flex-md-grow-0 { - flex-grow: 0 !important; - } - .flex-md-grow-1 { - flex-grow: 1 !important; - } - .flex-md-shrink-0 { - flex-shrink: 0 !important; - } - .flex-md-shrink-1 { - flex-shrink: 1 !important; - } - .flex-md-wrap { - flex-wrap: wrap !important; - } - .flex-md-nowrap { - flex-wrap: nowrap !important; - } - .flex-md-wrap-reverse { - flex-wrap: wrap-reverse !important; - } - .justify-content-md-start { - justify-content: flex-start !important; - } - .justify-content-md-end { - justify-content: flex-end !important; - } - .justify-content-md-center { - justify-content: center !important; - } - .justify-content-md-between { - justify-content: space-between !important; - } - .justify-content-md-around { - justify-content: space-around !important; - } - .justify-content-md-evenly { - justify-content: space-evenly !important; - } - .align-items-md-start { - align-items: flex-start !important; - } - .align-items-md-end { - align-items: flex-end !important; - } - .align-items-md-center { - align-items: center !important; - } - .align-items-md-baseline { - align-items: baseline !important; - } - .align-items-md-stretch { - align-items: stretch !important; - } - .align-content-md-start { - align-content: flex-start !important; - } - .align-content-md-end { - align-content: flex-end !important; - } - .align-content-md-center { - align-content: center !important; - } - .align-content-md-between { - align-content: space-between !important; - } - .align-content-md-around { - align-content: space-around !important; - } - .align-content-md-stretch { - align-content: stretch !important; - } - .align-self-md-auto { - align-self: auto !important; - } - .align-self-md-start { - align-self: flex-start !important; - } - .align-self-md-end { - align-self: flex-end !important; - } - .align-self-md-center { - align-self: center !important; - } - .align-self-md-baseline { - align-self: baseline !important; - } - .align-self-md-stretch { - align-self: stretch !important; - } - .order-md-first { - order: -1 !important; - } - .order-md-0 { - order: 0 !important; - } - .order-md-1 { - order: 1 !important; - } - .order-md-2 { - order: 2 !important; - } - .order-md-3 { - order: 3 !important; - } - .order-md-4 { - order: 4 !important; - } - .order-md-5 { - order: 5 !important; - } - .order-md-last { - order: 6 !important; - } - .m-md-0 { - margin: 0 !important; - } - .m-md-1 { - margin: 0.25rem !important; - } - .m-md-2 { - margin: 0.5rem !important; - } - .m-md-3 { - margin: 1rem !important; - } - .m-md-4 { - margin: 1.5rem !important; - } - .m-md-5 { - margin: 3rem !important; - } - .m-md-auto { - margin: auto !important; - } - .mx-md-0 { - margin-left: 0 !important; - margin-right: 0 !important; - } - .mx-md-1 { - margin-left: 0.25rem !important; - margin-right: 0.25rem !important; - } - .mx-md-2 { - margin-left: 0.5rem !important; - margin-right: 0.5rem !important; - } - .mx-md-3 { - margin-left: 1rem !important; - margin-right: 1rem !important; - } - .mx-md-4 { - margin-left: 1.5rem !important; - margin-right: 1.5rem !important; - } - .mx-md-5 { - margin-left: 3rem !important; - margin-right: 3rem !important; - } - .mx-md-auto { - margin-left: auto !important; - margin-right: auto !important; - } - .my-md-0 { - margin-top: 0 !important; - margin-bottom: 0 !important; - } - .my-md-1 { - margin-top: 0.25rem !important; - margin-bottom: 0.25rem !important; - } - .my-md-2 { - margin-top: 0.5rem !important; - margin-bottom: 0.5rem !important; - } - .my-md-3 { - margin-top: 1rem !important; - margin-bottom: 1rem !important; - } - .my-md-4 { - margin-top: 1.5rem !important; - margin-bottom: 1.5rem !important; - } - .my-md-5 { - margin-top: 3rem !important; - margin-bottom: 3rem !important; - } - .my-md-auto { - margin-top: auto !important; - margin-bottom: auto !important; - } - .mt-md-0 { - margin-top: 0 !important; - } - .mt-md-1 { - margin-top: 0.25rem !important; - } - .mt-md-2 { - margin-top: 0.5rem !important; - } - .mt-md-3 { - margin-top: 1rem !important; - } - .mt-md-4 { - margin-top: 1.5rem !important; - } - .mt-md-5 { - margin-top: 3rem !important; - } - .mt-md-auto { - margin-top: auto !important; - } - .me-md-0 { - margin-left: 0 !important; - } - .me-md-1 { - margin-left: 0.25rem !important; - } - .me-md-2 { - margin-left: 0.5rem !important; - } - .me-md-3 { - margin-left: 1rem !important; - } - .me-md-4 { - margin-left: 1.5rem !important; - } - .me-md-5 { - margin-left: 3rem !important; - } - .me-md-auto { - margin-left: auto !important; - } - .mb-md-0 { - margin-bottom: 0 !important; - } - .mb-md-1 { - margin-bottom: 0.25rem !important; - } - .mb-md-2 { - margin-bottom: 0.5rem !important; - } - .mb-md-3 { - margin-bottom: 1rem !important; - } - .mb-md-4 { - margin-bottom: 1.5rem !important; - } - .mb-md-5 { - margin-bottom: 3rem !important; - } - .mb-md-auto { - margin-bottom: auto !important; - } - .ms-md-0 { - margin-right: 0 !important; - } - .ms-md-1 { - margin-right: 0.25rem !important; - } - .ms-md-2 { - margin-right: 0.5rem !important; - } - .ms-md-3 { - margin-right: 1rem !important; - } - .ms-md-4 { - margin-right: 1.5rem !important; - } - .ms-md-5 { - margin-right: 3rem !important; - } - .ms-md-auto { - margin-right: auto !important; - } - .p-md-0 { - padding: 0 !important; - } - .p-md-1 { - padding: 0.25rem !important; - } - .p-md-2 { - padding: 0.5rem !important; - } - .p-md-3 { - padding: 1rem !important; - } - .p-md-4 { - padding: 1.5rem !important; - } - .p-md-5 { - padding: 3rem !important; - } - .px-md-0 { - padding-left: 0 !important; - padding-right: 0 !important; - } - .px-md-1 { - padding-left: 0.25rem !important; - padding-right: 0.25rem !important; - } - .px-md-2 { - padding-left: 0.5rem !important; - padding-right: 0.5rem !important; - } - .px-md-3 { - padding-left: 1rem !important; - padding-right: 1rem !important; - } - .px-md-4 { - padding-left: 1.5rem !important; - padding-right: 1.5rem !important; - } - .px-md-5 { - padding-left: 3rem !important; - padding-right: 3rem !important; - } - .py-md-0 { - padding-top: 0 !important; - padding-bottom: 0 !important; - } - .py-md-1 { - padding-top: 0.25rem !important; - padding-bottom: 0.25rem !important; - } - .py-md-2 { - padding-top: 0.5rem !important; - padding-bottom: 0.5rem !important; - } - .py-md-3 { - padding-top: 1rem !important; - padding-bottom: 1rem !important; - } - .py-md-4 { - padding-top: 1.5rem !important; - padding-bottom: 1.5rem !important; - } - .py-md-5 { - padding-top: 3rem !important; - padding-bottom: 3rem !important; - } - .pt-md-0 { - padding-top: 0 !important; - } - .pt-md-1 { - padding-top: 0.25rem !important; - } - .pt-md-2 { - padding-top: 0.5rem !important; - } - .pt-md-3 { - padding-top: 1rem !important; - } - .pt-md-4 { - padding-top: 1.5rem !important; - } - .pt-md-5 { - padding-top: 3rem !important; - } - .pe-md-0 { - padding-left: 0 !important; - } - .pe-md-1 { - padding-left: 0.25rem !important; - } - .pe-md-2 { - padding-left: 0.5rem !important; - } - .pe-md-3 { - padding-left: 1rem !important; - } - .pe-md-4 { - padding-left: 1.5rem !important; - } - .pe-md-5 { - padding-left: 3rem !important; - } - .pb-md-0 { - padding-bottom: 0 !important; - } - .pb-md-1 { - padding-bottom: 0.25rem !important; - } - .pb-md-2 { - padding-bottom: 0.5rem !important; - } - .pb-md-3 { - padding-bottom: 1rem !important; - } - .pb-md-4 { - padding-bottom: 1.5rem !important; - } - .pb-md-5 { - padding-bottom: 3rem !important; - } - .ps-md-0 { - padding-right: 0 !important; - } - .ps-md-1 { - padding-right: 0.25rem !important; - } - .ps-md-2 { - padding-right: 0.5rem !important; - } - .ps-md-3 { - padding-right: 1rem !important; - } - .ps-md-4 { - padding-right: 1.5rem !important; - } - .ps-md-5 { - padding-right: 3rem !important; - } -} -@media (min-width: 992px) { - .d-lg-inline { - display: inline !important; - } - .d-lg-inline-block { - display: inline-block !important; - } - .d-lg-block { - display: block !important; - } - .d-lg-grid { - display: grid !important; - } - .d-lg-table { - display: table !important; - } - .d-lg-table-row { - display: table-row !important; - } - .d-lg-table-cell { - display: table-cell !important; - } - .d-lg-flex { - display: flex !important; - } - .d-lg-inline-flex { - display: inline-flex !important; - } - .d-lg-none { - display: none !important; - } - .flex-lg-fill { - flex: 1 1 auto !important; - } - .flex-lg-row { - flex-direction: row !important; - } - .flex-lg-column { - flex-direction: column !important; - } - .flex-lg-row-reverse { - flex-direction: row-reverse !important; - } - .flex-lg-column-reverse { - flex-direction: column-reverse !important; - } - .flex-lg-grow-0 { - flex-grow: 0 !important; - } - .flex-lg-grow-1 { - flex-grow: 1 !important; - } - .flex-lg-shrink-0 { - flex-shrink: 0 !important; - } - .flex-lg-shrink-1 { - flex-shrink: 1 !important; - } - .flex-lg-wrap { - flex-wrap: wrap !important; - } - .flex-lg-nowrap { - flex-wrap: nowrap !important; - } - .flex-lg-wrap-reverse { - flex-wrap: wrap-reverse !important; - } - .justify-content-lg-start { - justify-content: flex-start !important; - } - .justify-content-lg-end { - justify-content: flex-end !important; - } - .justify-content-lg-center { - justify-content: center !important; - } - .justify-content-lg-between { - justify-content: space-between !important; - } - .justify-content-lg-around { - justify-content: space-around !important; - } - .justify-content-lg-evenly { - justify-content: space-evenly !important; - } - .align-items-lg-start { - align-items: flex-start !important; - } - .align-items-lg-end { - align-items: flex-end !important; - } - .align-items-lg-center { - align-items: center !important; - } - .align-items-lg-baseline { - align-items: baseline !important; - } - .align-items-lg-stretch { - align-items: stretch !important; - } - .align-content-lg-start { - align-content: flex-start !important; - } - .align-content-lg-end { - align-content: flex-end !important; - } - .align-content-lg-center { - align-content: center !important; - } - .align-content-lg-between { - align-content: space-between !important; - } - .align-content-lg-around { - align-content: space-around !important; - } - .align-content-lg-stretch { - align-content: stretch !important; - } - .align-self-lg-auto { - align-self: auto !important; - } - .align-self-lg-start { - align-self: flex-start !important; - } - .align-self-lg-end { - align-self: flex-end !important; - } - .align-self-lg-center { - align-self: center !important; - } - .align-self-lg-baseline { - align-self: baseline !important; - } - .align-self-lg-stretch { - align-self: stretch !important; - } - .order-lg-first { - order: -1 !important; - } - .order-lg-0 { - order: 0 !important; - } - .order-lg-1 { - order: 1 !important; - } - .order-lg-2 { - order: 2 !important; - } - .order-lg-3 { - order: 3 !important; - } - .order-lg-4 { - order: 4 !important; - } - .order-lg-5 { - order: 5 !important; - } - .order-lg-last { - order: 6 !important; - } - .m-lg-0 { - margin: 0 !important; - } - .m-lg-1 { - margin: 0.25rem !important; - } - .m-lg-2 { - margin: 0.5rem !important; - } - .m-lg-3 { - margin: 1rem !important; - } - .m-lg-4 { - margin: 1.5rem !important; - } - .m-lg-5 { - margin: 3rem !important; - } - .m-lg-auto { - margin: auto !important; - } - .mx-lg-0 { - margin-left: 0 !important; - margin-right: 0 !important; - } - .mx-lg-1 { - margin-left: 0.25rem !important; - margin-right: 0.25rem !important; - } - .mx-lg-2 { - margin-left: 0.5rem !important; - margin-right: 0.5rem !important; - } - .mx-lg-3 { - margin-left: 1rem !important; - margin-right: 1rem !important; - } - .mx-lg-4 { - margin-left: 1.5rem !important; - margin-right: 1.5rem !important; - } - .mx-lg-5 { - margin-left: 3rem !important; - margin-right: 3rem !important; - } - .mx-lg-auto { - margin-left: auto !important; - margin-right: auto !important; - } - .my-lg-0 { - margin-top: 0 !important; - margin-bottom: 0 !important; - } - .my-lg-1 { - margin-top: 0.25rem !important; - margin-bottom: 0.25rem !important; - } - .my-lg-2 { - margin-top: 0.5rem !important; - margin-bottom: 0.5rem !important; - } - .my-lg-3 { - margin-top: 1rem !important; - margin-bottom: 1rem !important; - } - .my-lg-4 { - margin-top: 1.5rem !important; - margin-bottom: 1.5rem !important; - } - .my-lg-5 { - margin-top: 3rem !important; - margin-bottom: 3rem !important; - } - .my-lg-auto { - margin-top: auto !important; - margin-bottom: auto !important; - } - .mt-lg-0 { - margin-top: 0 !important; - } - .mt-lg-1 { - margin-top: 0.25rem !important; - } - .mt-lg-2 { - margin-top: 0.5rem !important; - } - .mt-lg-3 { - margin-top: 1rem !important; - } - .mt-lg-4 { - margin-top: 1.5rem !important; - } - .mt-lg-5 { - margin-top: 3rem !important; - } - .mt-lg-auto { - margin-top: auto !important; - } - .me-lg-0 { - margin-left: 0 !important; - } - .me-lg-1 { - margin-left: 0.25rem !important; - } - .me-lg-2 { - margin-left: 0.5rem !important; - } - .me-lg-3 { - margin-left: 1rem !important; - } - .me-lg-4 { - margin-left: 1.5rem !important; - } - .me-lg-5 { - margin-left: 3rem !important; - } - .me-lg-auto { - margin-left: auto !important; - } - .mb-lg-0 { - margin-bottom: 0 !important; - } - .mb-lg-1 { - margin-bottom: 0.25rem !important; - } - .mb-lg-2 { - margin-bottom: 0.5rem !important; - } - .mb-lg-3 { - margin-bottom: 1rem !important; - } - .mb-lg-4 { - margin-bottom: 1.5rem !important; - } - .mb-lg-5 { - margin-bottom: 3rem !important; - } - .mb-lg-auto { - margin-bottom: auto !important; - } - .ms-lg-0 { - margin-right: 0 !important; - } - .ms-lg-1 { - margin-right: 0.25rem !important; - } - .ms-lg-2 { - margin-right: 0.5rem !important; - } - .ms-lg-3 { - margin-right: 1rem !important; - } - .ms-lg-4 { - margin-right: 1.5rem !important; - } - .ms-lg-5 { - margin-right: 3rem !important; - } - .ms-lg-auto { - margin-right: auto !important; - } - .p-lg-0 { - padding: 0 !important; - } - .p-lg-1 { - padding: 0.25rem !important; - } - .p-lg-2 { - padding: 0.5rem !important; - } - .p-lg-3 { - padding: 1rem !important; - } - .p-lg-4 { - padding: 1.5rem !important; - } - .p-lg-5 { - padding: 3rem !important; - } - .px-lg-0 { - padding-left: 0 !important; - padding-right: 0 !important; - } - .px-lg-1 { - padding-left: 0.25rem !important; - padding-right: 0.25rem !important; - } - .px-lg-2 { - padding-left: 0.5rem !important; - padding-right: 0.5rem !important; - } - .px-lg-3 { - padding-left: 1rem !important; - padding-right: 1rem !important; - } - .px-lg-4 { - padding-left: 1.5rem !important; - padding-right: 1.5rem !important; - } - .px-lg-5 { - padding-left: 3rem !important; - padding-right: 3rem !important; - } - .py-lg-0 { - padding-top: 0 !important; - padding-bottom: 0 !important; - } - .py-lg-1 { - padding-top: 0.25rem !important; - padding-bottom: 0.25rem !important; - } - .py-lg-2 { - padding-top: 0.5rem !important; - padding-bottom: 0.5rem !important; - } - .py-lg-3 { - padding-top: 1rem !important; - padding-bottom: 1rem !important; - } - .py-lg-4 { - padding-top: 1.5rem !important; - padding-bottom: 1.5rem !important; - } - .py-lg-5 { - padding-top: 3rem !important; - padding-bottom: 3rem !important; - } - .pt-lg-0 { - padding-top: 0 !important; - } - .pt-lg-1 { - padding-top: 0.25rem !important; - } - .pt-lg-2 { - padding-top: 0.5rem !important; - } - .pt-lg-3 { - padding-top: 1rem !important; - } - .pt-lg-4 { - padding-top: 1.5rem !important; - } - .pt-lg-5 { - padding-top: 3rem !important; - } - .pe-lg-0 { - padding-left: 0 !important; - } - .pe-lg-1 { - padding-left: 0.25rem !important; - } - .pe-lg-2 { - padding-left: 0.5rem !important; - } - .pe-lg-3 { - padding-left: 1rem !important; - } - .pe-lg-4 { - padding-left: 1.5rem !important; - } - .pe-lg-5 { - padding-left: 3rem !important; - } - .pb-lg-0 { - padding-bottom: 0 !important; - } - .pb-lg-1 { - padding-bottom: 0.25rem !important; - } - .pb-lg-2 { - padding-bottom: 0.5rem !important; - } - .pb-lg-3 { - padding-bottom: 1rem !important; - } - .pb-lg-4 { - padding-bottom: 1.5rem !important; - } - .pb-lg-5 { - padding-bottom: 3rem !important; - } - .ps-lg-0 { - padding-right: 0 !important; - } - .ps-lg-1 { - padding-right: 0.25rem !important; - } - .ps-lg-2 { - padding-right: 0.5rem !important; - } - .ps-lg-3 { - padding-right: 1rem !important; - } - .ps-lg-4 { - padding-right: 1.5rem !important; - } - .ps-lg-5 { - padding-right: 3rem !important; - } -} -@media (min-width: 1200px) { - .d-xl-inline { - display: inline !important; - } - .d-xl-inline-block { - display: inline-block !important; - } - .d-xl-block { - display: block !important; - } - .d-xl-grid { - display: grid !important; - } - .d-xl-table { - display: table !important; - } - .d-xl-table-row { - display: table-row !important; - } - .d-xl-table-cell { - display: table-cell !important; - } - .d-xl-flex { - display: flex !important; - } - .d-xl-inline-flex { - display: inline-flex !important; - } - .d-xl-none { - display: none !important; - } - .flex-xl-fill { - flex: 1 1 auto !important; - } - .flex-xl-row { - flex-direction: row !important; - } - .flex-xl-column { - flex-direction: column !important; - } - .flex-xl-row-reverse { - flex-direction: row-reverse !important; - } - .flex-xl-column-reverse { - flex-direction: column-reverse !important; - } - .flex-xl-grow-0 { - flex-grow: 0 !important; - } - .flex-xl-grow-1 { - flex-grow: 1 !important; - } - .flex-xl-shrink-0 { - flex-shrink: 0 !important; - } - .flex-xl-shrink-1 { - flex-shrink: 1 !important; - } - .flex-xl-wrap { - flex-wrap: wrap !important; - } - .flex-xl-nowrap { - flex-wrap: nowrap !important; - } - .flex-xl-wrap-reverse { - flex-wrap: wrap-reverse !important; - } - .justify-content-xl-start { - justify-content: flex-start !important; - } - .justify-content-xl-end { - justify-content: flex-end !important; - } - .justify-content-xl-center { - justify-content: center !important; - } - .justify-content-xl-between { - justify-content: space-between !important; - } - .justify-content-xl-around { - justify-content: space-around !important; - } - .justify-content-xl-evenly { - justify-content: space-evenly !important; - } - .align-items-xl-start { - align-items: flex-start !important; - } - .align-items-xl-end { - align-items: flex-end !important; - } - .align-items-xl-center { - align-items: center !important; - } - .align-items-xl-baseline { - align-items: baseline !important; - } - .align-items-xl-stretch { - align-items: stretch !important; - } - .align-content-xl-start { - align-content: flex-start !important; - } - .align-content-xl-end { - align-content: flex-end !important; - } - .align-content-xl-center { - align-content: center !important; - } - .align-content-xl-between { - align-content: space-between !important; - } - .align-content-xl-around { - align-content: space-around !important; - } - .align-content-xl-stretch { - align-content: stretch !important; - } - .align-self-xl-auto { - align-self: auto !important; - } - .align-self-xl-start { - align-self: flex-start !important; - } - .align-self-xl-end { - align-self: flex-end !important; - } - .align-self-xl-center { - align-self: center !important; - } - .align-self-xl-baseline { - align-self: baseline !important; - } - .align-self-xl-stretch { - align-self: stretch !important; - } - .order-xl-first { - order: -1 !important; - } - .order-xl-0 { - order: 0 !important; - } - .order-xl-1 { - order: 1 !important; - } - .order-xl-2 { - order: 2 !important; - } - .order-xl-3 { - order: 3 !important; - } - .order-xl-4 { - order: 4 !important; - } - .order-xl-5 { - order: 5 !important; - } - .order-xl-last { - order: 6 !important; - } - .m-xl-0 { - margin: 0 !important; - } - .m-xl-1 { - margin: 0.25rem !important; - } - .m-xl-2 { - margin: 0.5rem !important; - } - .m-xl-3 { - margin: 1rem !important; - } - .m-xl-4 { - margin: 1.5rem !important; - } - .m-xl-5 { - margin: 3rem !important; - } - .m-xl-auto { - margin: auto !important; - } - .mx-xl-0 { - margin-left: 0 !important; - margin-right: 0 !important; - } - .mx-xl-1 { - margin-left: 0.25rem !important; - margin-right: 0.25rem !important; - } - .mx-xl-2 { - margin-left: 0.5rem !important; - margin-right: 0.5rem !important; - } - .mx-xl-3 { - margin-left: 1rem !important; - margin-right: 1rem !important; - } - .mx-xl-4 { - margin-left: 1.5rem !important; - margin-right: 1.5rem !important; - } - .mx-xl-5 { - margin-left: 3rem !important; - margin-right: 3rem !important; - } - .mx-xl-auto { - margin-left: auto !important; - margin-right: auto !important; - } - .my-xl-0 { - margin-top: 0 !important; - margin-bottom: 0 !important; - } - .my-xl-1 { - margin-top: 0.25rem !important; - margin-bottom: 0.25rem !important; - } - .my-xl-2 { - margin-top: 0.5rem !important; - margin-bottom: 0.5rem !important; - } - .my-xl-3 { - margin-top: 1rem !important; - margin-bottom: 1rem !important; - } - .my-xl-4 { - margin-top: 1.5rem !important; - margin-bottom: 1.5rem !important; - } - .my-xl-5 { - margin-top: 3rem !important; - margin-bottom: 3rem !important; - } - .my-xl-auto { - margin-top: auto !important; - margin-bottom: auto !important; - } - .mt-xl-0 { - margin-top: 0 !important; - } - .mt-xl-1 { - margin-top: 0.25rem !important; - } - .mt-xl-2 { - margin-top: 0.5rem !important; - } - .mt-xl-3 { - margin-top: 1rem !important; - } - .mt-xl-4 { - margin-top: 1.5rem !important; - } - .mt-xl-5 { - margin-top: 3rem !important; - } - .mt-xl-auto { - margin-top: auto !important; - } - .me-xl-0 { - margin-left: 0 !important; - } - .me-xl-1 { - margin-left: 0.25rem !important; - } - .me-xl-2 { - margin-left: 0.5rem !important; - } - .me-xl-3 { - margin-left: 1rem !important; - } - .me-xl-4 { - margin-left: 1.5rem !important; - } - .me-xl-5 { - margin-left: 3rem !important; - } - .me-xl-auto { - margin-left: auto !important; - } - .mb-xl-0 { - margin-bottom: 0 !important; - } - .mb-xl-1 { - margin-bottom: 0.25rem !important; - } - .mb-xl-2 { - margin-bottom: 0.5rem !important; - } - .mb-xl-3 { - margin-bottom: 1rem !important; - } - .mb-xl-4 { - margin-bottom: 1.5rem !important; - } - .mb-xl-5 { - margin-bottom: 3rem !important; - } - .mb-xl-auto { - margin-bottom: auto !important; - } - .ms-xl-0 { - margin-right: 0 !important; - } - .ms-xl-1 { - margin-right: 0.25rem !important; - } - .ms-xl-2 { - margin-right: 0.5rem !important; - } - .ms-xl-3 { - margin-right: 1rem !important; - } - .ms-xl-4 { - margin-right: 1.5rem !important; - } - .ms-xl-5 { - margin-right: 3rem !important; - } - .ms-xl-auto { - margin-right: auto !important; - } - .p-xl-0 { - padding: 0 !important; - } - .p-xl-1 { - padding: 0.25rem !important; - } - .p-xl-2 { - padding: 0.5rem !important; - } - .p-xl-3 { - padding: 1rem !important; - } - .p-xl-4 { - padding: 1.5rem !important; - } - .p-xl-5 { - padding: 3rem !important; - } - .px-xl-0 { - padding-left: 0 !important; - padding-right: 0 !important; - } - .px-xl-1 { - padding-left: 0.25rem !important; - padding-right: 0.25rem !important; - } - .px-xl-2 { - padding-left: 0.5rem !important; - padding-right: 0.5rem !important; - } - .px-xl-3 { - padding-left: 1rem !important; - padding-right: 1rem !important; - } - .px-xl-4 { - padding-left: 1.5rem !important; - padding-right: 1.5rem !important; - } - .px-xl-5 { - padding-left: 3rem !important; - padding-right: 3rem !important; - } - .py-xl-0 { - padding-top: 0 !important; - padding-bottom: 0 !important; - } - .py-xl-1 { - padding-top: 0.25rem !important; - padding-bottom: 0.25rem !important; - } - .py-xl-2 { - padding-top: 0.5rem !important; - padding-bottom: 0.5rem !important; - } - .py-xl-3 { - padding-top: 1rem !important; - padding-bottom: 1rem !important; - } - .py-xl-4 { - padding-top: 1.5rem !important; - padding-bottom: 1.5rem !important; - } - .py-xl-5 { - padding-top: 3rem !important; - padding-bottom: 3rem !important; - } - .pt-xl-0 { - padding-top: 0 !important; - } - .pt-xl-1 { - padding-top: 0.25rem !important; - } - .pt-xl-2 { - padding-top: 0.5rem !important; - } - .pt-xl-3 { - padding-top: 1rem !important; - } - .pt-xl-4 { - padding-top: 1.5rem !important; - } - .pt-xl-5 { - padding-top: 3rem !important; - } - .pe-xl-0 { - padding-left: 0 !important; - } - .pe-xl-1 { - padding-left: 0.25rem !important; - } - .pe-xl-2 { - padding-left: 0.5rem !important; - } - .pe-xl-3 { - padding-left: 1rem !important; - } - .pe-xl-4 { - padding-left: 1.5rem !important; - } - .pe-xl-5 { - padding-left: 3rem !important; - } - .pb-xl-0 { - padding-bottom: 0 !important; - } - .pb-xl-1 { - padding-bottom: 0.25rem !important; - } - .pb-xl-2 { - padding-bottom: 0.5rem !important; - } - .pb-xl-3 { - padding-bottom: 1rem !important; - } - .pb-xl-4 { - padding-bottom: 1.5rem !important; - } - .pb-xl-5 { - padding-bottom: 3rem !important; - } - .ps-xl-0 { - padding-right: 0 !important; - } - .ps-xl-1 { - padding-right: 0.25rem !important; - } - .ps-xl-2 { - padding-right: 0.5rem !important; - } - .ps-xl-3 { - padding-right: 1rem !important; - } - .ps-xl-4 { - padding-right: 1.5rem !important; - } - .ps-xl-5 { - padding-right: 3rem !important; - } -} -@media (min-width: 1400px) { - .d-xxl-inline { - display: inline !important; - } - .d-xxl-inline-block { - display: inline-block !important; - } - .d-xxl-block { - display: block !important; - } - .d-xxl-grid { - display: grid !important; - } - .d-xxl-table { - display: table !important; - } - .d-xxl-table-row { - display: table-row !important; - } - .d-xxl-table-cell { - display: table-cell !important; - } - .d-xxl-flex { - display: flex !important; - } - .d-xxl-inline-flex { - display: inline-flex !important; - } - .d-xxl-none { - display: none !important; - } - .flex-xxl-fill { - flex: 1 1 auto !important; - } - .flex-xxl-row { - flex-direction: row !important; - } - .flex-xxl-column { - flex-direction: column !important; - } - .flex-xxl-row-reverse { - flex-direction: row-reverse !important; - } - .flex-xxl-column-reverse { - flex-direction: column-reverse !important; - } - .flex-xxl-grow-0 { - flex-grow: 0 !important; - } - .flex-xxl-grow-1 { - flex-grow: 1 !important; - } - .flex-xxl-shrink-0 { - flex-shrink: 0 !important; - } - .flex-xxl-shrink-1 { - flex-shrink: 1 !important; - } - .flex-xxl-wrap { - flex-wrap: wrap !important; - } - .flex-xxl-nowrap { - flex-wrap: nowrap !important; - } - .flex-xxl-wrap-reverse { - flex-wrap: wrap-reverse !important; - } - .justify-content-xxl-start { - justify-content: flex-start !important; - } - .justify-content-xxl-end { - justify-content: flex-end !important; - } - .justify-content-xxl-center { - justify-content: center !important; - } - .justify-content-xxl-between { - justify-content: space-between !important; - } - .justify-content-xxl-around { - justify-content: space-around !important; - } - .justify-content-xxl-evenly { - justify-content: space-evenly !important; - } - .align-items-xxl-start { - align-items: flex-start !important; - } - .align-items-xxl-end { - align-items: flex-end !important; - } - .align-items-xxl-center { - align-items: center !important; - } - .align-items-xxl-baseline { - align-items: baseline !important; - } - .align-items-xxl-stretch { - align-items: stretch !important; - } - .align-content-xxl-start { - align-content: flex-start !important; - } - .align-content-xxl-end { - align-content: flex-end !important; - } - .align-content-xxl-center { - align-content: center !important; - } - .align-content-xxl-between { - align-content: space-between !important; - } - .align-content-xxl-around { - align-content: space-around !important; - } - .align-content-xxl-stretch { - align-content: stretch !important; - } - .align-self-xxl-auto { - align-self: auto !important; - } - .align-self-xxl-start { - align-self: flex-start !important; - } - .align-self-xxl-end { - align-self: flex-end !important; - } - .align-self-xxl-center { - align-self: center !important; - } - .align-self-xxl-baseline { - align-self: baseline !important; - } - .align-self-xxl-stretch { - align-self: stretch !important; - } - .order-xxl-first { - order: -1 !important; - } - .order-xxl-0 { - order: 0 !important; - } - .order-xxl-1 { - order: 1 !important; - } - .order-xxl-2 { - order: 2 !important; - } - .order-xxl-3 { - order: 3 !important; - } - .order-xxl-4 { - order: 4 !important; - } - .order-xxl-5 { - order: 5 !important; - } - .order-xxl-last { - order: 6 !important; - } - .m-xxl-0 { - margin: 0 !important; - } - .m-xxl-1 { - margin: 0.25rem !important; - } - .m-xxl-2 { - margin: 0.5rem !important; - } - .m-xxl-3 { - margin: 1rem !important; - } - .m-xxl-4 { - margin: 1.5rem !important; - } - .m-xxl-5 { - margin: 3rem !important; - } - .m-xxl-auto { - margin: auto !important; - } - .mx-xxl-0 { - margin-left: 0 !important; - margin-right: 0 !important; - } - .mx-xxl-1 { - margin-left: 0.25rem !important; - margin-right: 0.25rem !important; - } - .mx-xxl-2 { - margin-left: 0.5rem !important; - margin-right: 0.5rem !important; - } - .mx-xxl-3 { - margin-left: 1rem !important; - margin-right: 1rem !important; - } - .mx-xxl-4 { - margin-left: 1.5rem !important; - margin-right: 1.5rem !important; - } - .mx-xxl-5 { - margin-left: 3rem !important; - margin-right: 3rem !important; - } - .mx-xxl-auto { - margin-left: auto !important; - margin-right: auto !important; - } - .my-xxl-0 { - margin-top: 0 !important; - margin-bottom: 0 !important; - } - .my-xxl-1 { - margin-top: 0.25rem !important; - margin-bottom: 0.25rem !important; - } - .my-xxl-2 { - margin-top: 0.5rem !important; - margin-bottom: 0.5rem !important; - } - .my-xxl-3 { - margin-top: 1rem !important; - margin-bottom: 1rem !important; - } - .my-xxl-4 { - margin-top: 1.5rem !important; - margin-bottom: 1.5rem !important; - } - .my-xxl-5 { - margin-top: 3rem !important; - margin-bottom: 3rem !important; - } - .my-xxl-auto { - margin-top: auto !important; - margin-bottom: auto !important; - } - .mt-xxl-0 { - margin-top: 0 !important; - } - .mt-xxl-1 { - margin-top: 0.25rem !important; - } - .mt-xxl-2 { - margin-top: 0.5rem !important; - } - .mt-xxl-3 { - margin-top: 1rem !important; - } - .mt-xxl-4 { - margin-top: 1.5rem !important; - } - .mt-xxl-5 { - margin-top: 3rem !important; - } - .mt-xxl-auto { - margin-top: auto !important; - } - .me-xxl-0 { - margin-left: 0 !important; - } - .me-xxl-1 { - margin-left: 0.25rem !important; - } - .me-xxl-2 { - margin-left: 0.5rem !important; - } - .me-xxl-3 { - margin-left: 1rem !important; - } - .me-xxl-4 { - margin-left: 1.5rem !important; - } - .me-xxl-5 { - margin-left: 3rem !important; - } - .me-xxl-auto { - margin-left: auto !important; - } - .mb-xxl-0 { - margin-bottom: 0 !important; - } - .mb-xxl-1 { - margin-bottom: 0.25rem !important; - } - .mb-xxl-2 { - margin-bottom: 0.5rem !important; - } - .mb-xxl-3 { - margin-bottom: 1rem !important; - } - .mb-xxl-4 { - margin-bottom: 1.5rem !important; - } - .mb-xxl-5 { - margin-bottom: 3rem !important; - } - .mb-xxl-auto { - margin-bottom: auto !important; - } - .ms-xxl-0 { - margin-right: 0 !important; - } - .ms-xxl-1 { - margin-right: 0.25rem !important; - } - .ms-xxl-2 { - margin-right: 0.5rem !important; - } - .ms-xxl-3 { - margin-right: 1rem !important; - } - .ms-xxl-4 { - margin-right: 1.5rem !important; - } - .ms-xxl-5 { - margin-right: 3rem !important; - } - .ms-xxl-auto { - margin-right: auto !important; - } - .p-xxl-0 { - padding: 0 !important; - } - .p-xxl-1 { - padding: 0.25rem !important; - } - .p-xxl-2 { - padding: 0.5rem !important; - } - .p-xxl-3 { - padding: 1rem !important; - } - .p-xxl-4 { - padding: 1.5rem !important; - } - .p-xxl-5 { - padding: 3rem !important; - } - .px-xxl-0 { - padding-left: 0 !important; - padding-right: 0 !important; - } - .px-xxl-1 { - padding-left: 0.25rem !important; - padding-right: 0.25rem !important; - } - .px-xxl-2 { - padding-left: 0.5rem !important; - padding-right: 0.5rem !important; - } - .px-xxl-3 { - padding-left: 1rem !important; - padding-right: 1rem !important; - } - .px-xxl-4 { - padding-left: 1.5rem !important; - padding-right: 1.5rem !important; - } - .px-xxl-5 { - padding-left: 3rem !important; - padding-right: 3rem !important; - } - .py-xxl-0 { - padding-top: 0 !important; - padding-bottom: 0 !important; - } - .py-xxl-1 { - padding-top: 0.25rem !important; - padding-bottom: 0.25rem !important; - } - .py-xxl-2 { - padding-top: 0.5rem !important; - padding-bottom: 0.5rem !important; - } - .py-xxl-3 { - padding-top: 1rem !important; - padding-bottom: 1rem !important; - } - .py-xxl-4 { - padding-top: 1.5rem !important; - padding-bottom: 1.5rem !important; - } - .py-xxl-5 { - padding-top: 3rem !important; - padding-bottom: 3rem !important; - } - .pt-xxl-0 { - padding-top: 0 !important; - } - .pt-xxl-1 { - padding-top: 0.25rem !important; - } - .pt-xxl-2 { - padding-top: 0.5rem !important; - } - .pt-xxl-3 { - padding-top: 1rem !important; - } - .pt-xxl-4 { - padding-top: 1.5rem !important; - } - .pt-xxl-5 { - padding-top: 3rem !important; - } - .pe-xxl-0 { - padding-left: 0 !important; - } - .pe-xxl-1 { - padding-left: 0.25rem !important; - } - .pe-xxl-2 { - padding-left: 0.5rem !important; - } - .pe-xxl-3 { - padding-left: 1rem !important; - } - .pe-xxl-4 { - padding-left: 1.5rem !important; - } - .pe-xxl-5 { - padding-left: 3rem !important; - } - .pb-xxl-0 { - padding-bottom: 0 !important; - } - .pb-xxl-1 { - padding-bottom: 0.25rem !important; - } - .pb-xxl-2 { - padding-bottom: 0.5rem !important; - } - .pb-xxl-3 { - padding-bottom: 1rem !important; - } - .pb-xxl-4 { - padding-bottom: 1.5rem !important; - } - .pb-xxl-5 { - padding-bottom: 3rem !important; - } - .ps-xxl-0 { - padding-right: 0 !important; - } - .ps-xxl-1 { - padding-right: 0.25rem !important; - } - .ps-xxl-2 { - padding-right: 0.5rem !important; - } - .ps-xxl-3 { - padding-right: 1rem !important; - } - .ps-xxl-4 { - padding-right: 1.5rem !important; - } - .ps-xxl-5 { - padding-right: 3rem !important; - } -} -@media print { - .d-print-inline { - display: inline !important; - } - .d-print-inline-block { - display: inline-block !important; - } - .d-print-block { - display: block !important; - } - .d-print-grid { - display: grid !important; - } - .d-print-table { - display: table !important; - } - .d-print-table-row { - display: table-row !important; - } - .d-print-table-cell { - display: table-cell !important; - } - .d-print-flex { - display: flex !important; - } - .d-print-inline-flex { - display: inline-flex !important; - } - .d-print-none { - display: none !important; - } -} -/*# sourceMappingURL=bootstrap-grid.rtl.css.map */ \ No newline at end of file diff --git a/site/templates/vendors/Bootstrap/css/bootstrap-grid.rtl.css.map b/site/templates/vendors/Bootstrap/css/bootstrap-grid.rtl.css.map deleted file mode 100644 index 66b2117..0000000 --- a/site/templates/vendors/Bootstrap/css/bootstrap-grid.rtl.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../../scss/mixins/_banner.scss","../../scss/_root.scss","../../scss/vendor/_rfs.scss","bootstrap-grid.css","../../scss/mixins/_color-mode.scss","../../scss/_containers.scss","../../scss/mixins/_container.scss","../../scss/mixins/_breakpoints.scss","../../scss/_variables.scss","../../scss/_grid.scss","../../scss/mixins/_grid.scss","../../scss/mixins/_utilities.scss","../../scss/utilities/_api.scss"],"names":[],"mappings":"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,yBAAA;ERoyDV;EQ3yDM;IAOI,wBAAA;ERuyDV;EQ9yDM;IAOI,yBAAA;ER0yDV;EQjzDM;IAOI,6BAAA;ER6yDV;EQpzDM;IAOI,8BAAA;ERgzDV;EQvzDM;IAOI,wBAAA;ERmzDV;EQ1zDM;IAOI,+BAAA;ERszDV;EQ7zDM;IAOI,wBAAA;ERyzDV;EQh0DM;IAOI,yBAAA;ER4zDV;EQn0DM;IAOI,8BAAA;ER+zDV;EQt0DM;IAOI,iCAAA;ERk0DV;EQz0DM;IAOI,sCAAA;ERq0DV;EQ50DM;IAOI,yCAAA;ERw0DV;EQ/0DM;IAOI,uBAAA;ER20DV;EQl1DM;IAOI,uBAAA;ER80DV;EQr1DM;IAOI,yBAAA;ERi1DV;EQx1DM;IAOI,yBAAA;ERo1DV;EQ31DM;IAOI,0BAAA;ERu1DV;EQ91DM;IAOI,4BAAA;ER01DV;EQj2DM;IAOI,kCAAA;ER61DV;EQp2DM;IAOI,sCAAA;ERg2DV;EQv2DM;IAOI,oCAAA;ERm2DV;EQ12DM;IAOI,kCAAA;ERs2DV;EQ72DM;IAOI,yCAAA;ERy2DV;EQh3DM;IAOI,wCAAA;ER42DV;EQn3DM;IAOI,wCAAA;ER+2DV;EQt3DM;IAOI,kCAAA;ERk3DV;EQz3DM;IAOI,gCAAA;ERq3DV;EQ53DM;IAOI,8BAAA;ERw3DV;EQ/3DM;IAOI,gCAAA;ER23DV;EQl4DM;IAOI,+BAAA;ER83DV;EQr4DM;IAOI,oCAAA;ERi4DV;EQx4DM;IAOI,kCAAA;ERo4DV;EQ34DM;IAOI,gCAAA;ERu4DV;EQ94DM;IAOI,uCAAA;ER04DV;EQj5DM;IAOI,sCAAA;ER64DV;EQp5DM;IAOI,iCAAA;ERg5DV;EQv5DM;IAOI,2BAAA;ERm5DV;EQ15DM;IAOI,iCAAA;ERs5DV;EQ75DM;IAOI,+BAAA;ERy5DV;EQh6DM;IAOI,6BAAA;ER45DV;EQn6DM;IAOI,+BAAA;ER+5DV;EQt6DM;IAOI,8BAAA;ERk6DV;EQz6DM;IAOI,oBAAA;ERq6DV;EQ56DM;IAOI,mBAAA;ERw6DV;EQ/6DM;IAOI,mBAAA;ER26DV;EQl7DM;IAOI,mBAAA;ER86DV;EQr7DM;IAOI,mBAAA;ERi7DV;EQx7DM;IAOI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EQjtEM;IAOI,+BAAA;ER6sEV;EQptEM;IAOI,iCAAA;ERgtEV;EQvtEM;IAOI,+BAAA;ERmtEV;EQ1tEM;IAOI,2BAAA;ERstEV;EQ7tEM;IAOI,iCAAA;ERytEV;EQhuEM;IAOI,gCAAA;ER4tEV;EQnuEM;IAOI,8BAAA;ER+tEV;EQtuEM;IAOI,gCAAA;ERkuEV;EQzuEM;IAOI,8BAAA;ERquEV;AACF;AIhvEI;EIGI;IAOI,0BAAA;ER0uEV;EQjvEM;IAOI,gCAAA;ER6uEV;EQpvEM;IAOI,yBAAA;ERgvEV;EQvvEM;IAOI,wBAAA;ERmvEV;EQ1vEM;IAOI,yBAAA;ERsvEV;EQ7vEM;IAOI,6BAAA;ERyvEV;EQhwEM;IAOI,8BAAA;ER4vEV;EQnwEM;IAOI,wBAAA;ER+vEV;EQtwEM;IAOI,+BAAA;ERkwEV;EQzwEM;IAOI,wBAAA;ERqwEV;EQ5wEM;IAOI,yBAAA;ERwwEV;EQ/wEM;IAOI,8BAAA;ER2wEV;EQlxEM;IAOI,iCAAA;ER8wEV;EQrxEM;IAOI,sCAAA;ERixEV;EQxxEM;IAOI,yCAAA;ERoxEV;EQ3xEM;IAOI,uBAAA;ERuxEV;EQ9xEM;IAOI,uBAAA;ER0xEV;EQjyEM;IAOI,yBAAA;ER6xEV;EQpyEM;IAOI,yBAAA;ERgyEV;EQvyEM;IAOI,0BAAA;ERmyEV;EQ1yEM;IAOI,4BAAA;ERsyEV;EQ7yEM;IAOI,kCAAA;ERyyEV;EQhzEM;IAOI,sCAAA;ER4yEV;EQnzEM;IAOI,oCAAA;ER+yEV;EQtzEM;IAOI,kCAAA;ERkzEV;EQzzEM;IAOI,yCAAA;ERqzEV;EQ5zEM;IAOI,wCAAA;ERwzEV;EQ/zEM;IAOI,wCAAA;ER2zEV;EQl0EM;IAOI,kCAAA;ER8zEV;EQr0EM;IAOI,gCAAA;ERi0EV;EQx0EM;IAOI,8BAAA;ERo0EV;EQ30EM;IAOI,gCAAA;ERu0EV;EQ90EM;IAOI,+BAAA;ER00EV;EQj1EM;IAOI,oCAAA;ER60EV;EQp1EM;IAOI,kCAAA;ERg1EV;EQv1EM;IAOI,gCAAA;ERm1EV;EQ11EM;IAOI,uCAAA;ERs1EV;EQ71EM;IAOI,sCAAA;ERy1EV;EQh2EM;IAOI,iCAAA;ER41EV;EQn2EM;IAOI,2BAAA;ER+1EV;EQt2EM;IAOI,iCAAA;ERk2EV;EQz2EM;IAOI,+BAAA;ERq2EV;EQ52EM;IAOI,6BAAA;ERw2EV;EQ/2EM;IAOI,+BAAA;ER22EV;EQl3EM;IAOI,8BAAA;ER82EV;EQr3EM;IAOI,oBAAA;ERi3EV;EQx3EM;IAOI,mBAAA;ERo3EV;EQ33EM;IAOI,mBAAA;ERu3EV;EQ93EM;IAOI,mBAAA;ER03EV;EQj4EM;IAOI,mBAAA;ER63EV;EQp4EM;IAOI,mBAAA;ERg4EV;EQv4EM;IAOI,mBAAA;ERm4EV;EQ14EM;IAOI,mBAAA;ERs4EV;EQ74EM;IAOI,oBAAA;ERy4EV;EQh5EM;IAOI,0BAAA;ER44EV;EQn5EM;IAOI,yBAAA;ER+4EV;EQt5EM;IAOI,uBAAA;ERk5EV;EQz5EM;IAOI,yBAAA;ERq5EV;EQ55EM;IAOI,uBAAA;ERw5EV;EQ/5EM;IAOI,uBAAA;ER25EV;EQl6EM;IAOI,yBAAA;IAAA,0BAAA;ER+5EV;EQt6EM;IAOI,+BAAA;IAAA,gCAAA;ERm6EV;EQ16EM;IAOI,8BAAA;IAAA,+BAAA;ERu6EV;EQ96EM;IAOI,4BAAA;IAAA,6BAAA;ER26EV;EQl7EM;IAOI,8BAAA;IAAA,+BAAA;ER+6EV;EQt7EM;IAOI,4BAAA;IAAA,6BAAA;ERm7EV;EQ17EM;IAOI,4BAAA;IAAA,6BAAA;ERu7EV;EQ97EM;IAOI,wBAAA;IAAA,2BAAA;ER27EV;EQl8EM;IAOI,8BAAA;IAAA,iCAAA;ER+7EV;EQt8EM;IAOI,6BAAA;IAAA,gCAAA;ERm8EV;EQ18EM;IAOI,2BAAA;IAAA,8BAAA;ERu8EV;EQ98EM;IAOI,6BAAA;IAAA,gCAAA;ER28EV;EQl9EM;IAOI,2BAAA;IAAA,8BAAA;ER+8EV;EQt9EM;IAOI,2BAAA;IAAA,8BAAA;ERm9EV;EQ19EM;IAOI,wBAAA;ERs9EV;EQ79EM;IAOI,8BAAA;ERy9EV;EQh+EM;IAOI,6BAAA;ER49EV;EQn+EM;IAOI,2BAAA;ER+9EV;EQt+EM;IAOI,6BAAA;ERk+EV;EQz+EM;IAOI,2BAAA;ERq+EV;EQ5+EM;IAOI,2BAAA;ERw+EV;EQ/+EM;IAOI,yBAAA;ER2+EV;EQl/EM;IAOI,+BAAA;ER8+EV;EQr/EM;IAOI,8BAAA;ERi/EV;EQx/EM;IAOI,4BAAA;ERo/EV;EQ3/EM;IAOI,8BAAA;ERu/EV;EQ9/EM;IAOI,4BAAA;ER0/EV;EQjgFM;IAOI,4BAAA;ER6/EV;EQpgFM;IAOI,2BAAA;ERggFV;EQvgFM;IAOI,iCAAA;ERmgFV;EQ1gFM;IAOI,gCAAA;ERsgFV;EQ7gFM;IAOI,8BAAA;ERygFV;EQhhFM;IAOI,gCAAA;ER4gFV;EQnhFM;IAOI,8BAAA;ER+gFV;EQthFM;IAOI,8BAAA;ERkhFV;EQzhFM;IAOI,0BAAA;ERqhFV;EQ5hFM;IAOI,gCAAA;ERwhFV;EQ/hFM;IAOI,+BAAA;ER2hFV;EQliFM;IAOI,6BAAA;ER8hFV;EQriFM;IAOI,+BAAA;ERiiFV;EQxiFM;IAOI,6BAAA;ERoiFV;EQ3iFM;IAOI,6BAAA;ERuiFV;EQ9iFM;IAOI,qBAAA;ER0iFV;EQjjFM;IAOI,2BAAA;ER6iFV;EQpjFM;IAOI,0BAAA;ERgjFV;EQvjFM;IAOI,wBAAA;ERmjFV;EQ1jFM;IAOI,0BAAA;ERsjFV;EQ7jFM;IAOI,wBAAA;ERyjFV;EQhkFM;IAOI,0BAAA;IAAA,2BAAA;ER6jFV;EQpkFM;IAOI,gCAAA;IAAA,iCAAA;ERikFV;EQxkFM;IAOI,+BAAA;IAAA,gCAAA;ERqkFV;EQ5kFM;IAOI,6BAAA;IAAA,8BAAA;ERykFV;EQhlFM;IAOI,+BAAA;IAAA,gCAAA;ER6kFV;EQplFM;IAOI,6BAAA;IAAA,8BAAA;ERilFV;EQxlFM;IAOI,yBAAA;IAAA,4BAAA;ERqlFV;EQ5lFM;IAOI,+BAAA;IAAA,kCAAA;ERylFV;EQhmFM;IAOI,8BAAA;IAAA,iCAAA;ER6lFV;EQpmFM;IAOI,4BAAA;IAAA,+BAAA;ERimFV;EQxmFM;IAOI,8BAAA;IAAA,iCAAA;ERqmFV;EQ5mFM;IAOI,4BAAA;IAAA,+BAAA;ERymFV;EQhnFM;IAOI,yBAAA;ER4mFV;EQnnFM;IAOI,+BAAA;ER+mFV;EQtnFM;IAOI,8BAAA;ERknFV;EQznFM;IAOI,4BAAA;ERqnFV;EQ5nFM;IAOI,8BAAA;ERwnFV;EQ/nFM;IAOI,4BAAA;ER2nFV;EQloFM;IAOI,0BAAA;ER8nFV;EQroFM;IAOI,gCAAA;ERioFV;EQxoFM;IAOI,+BAAA;ERooFV;EQ3oFM;IAOI,6BAAA;ERuoFV;EQ9oFM;IAOI,+BAAA;ER0oFV;EQjpFM;IAOI,6BAAA;ER6oFV;EQppFM;IAOI,4BAAA;ERgpFV;EQvpFM;IAOI,kCAAA;ERmpFV;EQ1pFM;IAOI,iCAAA;ERspFV;EQ7pFM;IAOI,+BAAA;ERypFV;EQhqFM;IAOI,iCAAA;ER4pFV;EQnqFM;IAOI,+BAAA;ER+pFV;EQtqFM;IAOI,2BAAA;ERkqFV;EQzqFM;IAOI,iCAAA;ERqqFV;EQ5qFM;IAOI,gCAAA;ERwqFV;EQ/qFM;IAOI,8BAAA;ER2qFV;EQlrFM;IAOI,gCAAA;ER8qFV;EQrrFM;IAOI,8BAAA;ERirFV;AACF;AI5rFI;EIGI;IAOI,0BAAA;ERsrFV;EQ7rFM;IAOI,gCAAA;ERyrFV;EQhsFM;IAOI,yBAAA;ER4rFV;EQnsFM;IAOI,wBAAA;ER+rFV;EQtsFM;IAOI,yBAAA;ERksFV;EQzsFM;IAOI,6BAAA;ERqsFV;EQ5sFM;IAOI,8BAAA;ERwsFV;EQ/sFM;IAOI,wBAAA;ER2sFV;EQltFM;IAOI,+BAAA;ER8sFV;EQrtFM;IAOI,wBAAA;ERitFV;EQxtFM;IAOI,yBAAA;ERotFV;EQ3tFM;IAOI,8BAAA;ERutFV;EQ9tFM;IAOI,iCAAA;ER0tFV;EQjuFM;IAOI,sCAAA;ER6tFV;EQpuFM;IAOI,yCAAA;ERguFV;EQvuFM;IAOI,uBAAA;ERmuFV;EQ1uFM;IAOI,uBAAA;ERsuFV;EQ7uFM;IAOI,yBAAA;ERyuFV;EQhvFM;IAOI,yBAAA;ER4uFV;EQnvFM;IAOI,0BAAA;ER+uFV;EQtvFM;IAOI,4BAAA;ERkvFV;EQzvFM;IAOI,kCAAA;ERqvFV;EQ5vFM;IAOI,sCAAA;ERwvFV;EQ/vFM;IAOI,oCAAA;ER2vFV;EQlwFM;IAOI,kCAAA;ER8vFV;EQrwFM;IAOI,yCAAA;ERiwFV;EQxwFM;IAOI,wCAAA;E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3lHM;IAOI,wBAAA;ERulHV;EQ9lHM;IAOI,yBAAA;ER0lHV;EQjmHM;IAOI,6BAAA;ER6lHV;EQpmHM;IAOI,8BAAA;ERgmHV;EQvmHM;IAOI,wBAAA;ERmmHV;EQ1mHM;IAOI,+BAAA;ERsmHV;EQ7mHM;IAOI,wBAAA;ERymHV;EQhnHM;IAOI,yBAAA;ER4mHV;EQnnHM;IAOI,8BAAA;ER+mHV;EQtnHM;IAOI,iCAAA;ERknHV;EQznHM;IAOI,sCAAA;ERqnHV;EQ5nHM;IAOI,yCAAA;ERwnHV;EQ/nHM;IAOI,uBAAA;ER2nHV;EQloHM;IAOI,uBAAA;ER8nHV;EQroHM;IAOI,yBAAA;ERioHV;EQxoHM;IAOI,yBAAA;ERooHV;EQ3oHM;IAOI,0BAAA;ERuoHV;EQ9oHM;IAOI,4BAAA;ER0oHV;EQjpHM;IAOI,kCAAA;ER6oHV;EQppHM;IAOI,sCAAA;ERgpHV;EQvpHM;IAOI,oCAAA;ERmpHV;EQ1pHM;IAOI,kCAAA;ERspHV;EQ7pHM;IAOI,yCAAA;ERypHV;EQhqHM;IAOI,wCAAA;ER4pHV;EQnqHM;IAOI,wCAAA;ER+pHV;EQtqHM;IAOI,kCAAA;ERkqHV;EQzqHM;IAOI,gCAAA;ERqqHV;EQ5qHM;IAOI,8BAAA;ERwqHV;EQ/qHM;IAOI,gCAAA;ER2qHV;EQlrHM;IAOI,+BAAA;ER8qHV;EQrrHM;IAOI,oCAAA;ERirHV;EQxrHM;IAOI,kCAAA;ERorHV;EQ3rHM;IAOI,gCAAA;ERurHV;EQ9rHM;IAOI,uCAAA;ER0rHV;EQjsHM;IAOI,sCAAA;ER6rHV;EQpsHM;IAOI,iCAAA;ERgsHV;EQvsHM;IAOI,2BAAA;ERmsHV;EQ1sHM;IAOI,iCAAA;ERssHV;EQ7sHM;IAOI,+BAAA;ERysHV;EQhtHM;IAOI,6BAAA;ER4sHV;EQntHM;IAOI,+BAAA;ER+sHV;EQttHM;IAOI,8BAAA;ERktHV;EQztHM;IAOI,oBAAA;ERqtHV;EQ5tHM;IAOI,mBAAA;ERwtHV;EQ/tHM;IAOI,mBAAA;ER2tHV;EQluHM;IAOI,mBAAA;ER8tHV;EQruHM;IAOI,mBAAA;ERiuHV;EQxuHM;IAOI,mBAAA;ERouHV;EQ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","file":"bootstrap-grid.rtl.css","sourcesContent":["@mixin bsBanner($file) {\n /*!\n * Bootstrap #{$file} v5.3.0-alpha1 (https://getbootstrap.com/)\n * Copyright 2011-2022 The Bootstrap Authors\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n}\n",":root,\n[data-bs-theme=\"light\"] {\n // Note: Custom variable values only support SassScript inside `#{}`.\n\n // Colors\n //\n // Generate palettes for full colors, grays, and theme colors.\n\n @each $color, $value in $colors {\n --#{$prefix}#{$color}: #{$value};\n }\n\n @each $color, $value in $grays {\n --#{$prefix}gray-#{$color}: #{$value};\n }\n\n @each $color, $value in $theme-colors {\n --#{$prefix}#{$color}: #{$value};\n }\n\n @each $color, $value in $theme-colors-rgb {\n --#{$prefix}#{$color}-rgb: #{$value};\n }\n\n @each $color, $value in $theme-colors-text {\n --#{$prefix}#{$color}-text: #{$value};\n }\n\n @each $color, $value in $theme-colors-bg-subtle {\n --#{$prefix}#{$color}-bg-subtle: #{$value};\n }\n\n @each $color, $value in $theme-colors-border-subtle {\n --#{$prefix}#{$color}-border-subtle: #{$value};\n }\n\n --#{$prefix}white-rgb: #{to-rgb($white)};\n --#{$prefix}black-rgb: #{to-rgb($black)};\n --#{$prefix}body-color-rgb: #{to-rgb($body-color)};\n --#{$prefix}body-bg-rgb: #{to-rgb($body-bg)};\n\n // Fonts\n\n // Note: Use `inspect` for lists so that quoted items keep the quotes.\n // See https://github.com/sass/sass/issues/2383#issuecomment-336349172\n --#{$prefix}font-sans-serif: #{inspect($font-family-sans-serif)};\n --#{$prefix}font-monospace: #{inspect($font-family-monospace)};\n --#{$prefix}gradient: #{$gradient};\n\n // Root and body\n // scss-docs-start root-body-variables\n @if $font-size-root != null {\n --#{$prefix}root-font-size: #{$font-size-root};\n }\n --#{$prefix}body-font-family: #{inspect($font-family-base)};\n @include rfs($font-size-base, --#{$prefix}body-font-size);\n --#{$prefix}body-font-weight: #{$font-weight-base};\n --#{$prefix}body-line-height: #{$line-height-base};\n --#{$prefix}body-color: #{$body-color};\n\n --#{$prefix}emphasis-color: #{$body-emphasis-color};\n --#{$prefix}emphasis-color-rgb: #{to-rgb($body-emphasis-color)};\n\n --#{$prefix}secondary-color: #{$body-secondary-color};\n --#{$prefix}secondary-color-rgb: #{to-rgb($body-secondary-color)};\n --#{$prefix}secondary-bg: #{$body-secondary-bg};\n --#{$prefix}secondary-bg-rgb: #{to-rgb($body-secondary-bg)};\n\n --#{$prefix}tertiary-color: #{$body-tertiary-color};\n --#{$prefix}tertiary-color-rgb: #{to-rgb($body-tertiary-color)};\n --#{$prefix}tertiary-bg: #{$body-tertiary-bg};\n --#{$prefix}tertiary-bg-rgb: #{to-rgb($body-tertiary-bg)};\n\n @if $body-text-align != null {\n --#{$prefix}body-text-align: #{$body-text-align};\n }\n --#{$prefix}body-bg: #{$body-bg};\n --#{$prefix}body-bg-rgb: #{to-rgb($body-bg)};\n // scss-docs-end root-body-variables\n\n @if $headings-color != null {\n --#{$prefix}heading-color: #{$headings-color};\n }\n\n --#{$prefix}link-color: #{$link-color};\n --#{$prefix}link-color-rgb: #{to-rgb($link-color)};\n --#{$prefix}link-decoration: #{$link-decoration};\n\n --#{$prefix}link-hover-color: #{$link-hover-color};\n --#{$prefix}link-hover-color-rgb: #{to-rgb($link-hover-color)};\n\n @if $link-hover-decoration != null {\n --#{$prefix}link-hover-decoration: #{$link-hover-decoration};\n }\n\n --#{$prefix}code-color: #{$code-color};\n --#{$prefix}highlight-bg: #{$mark-bg};\n\n // scss-docs-start root-border-var\n --#{$prefix}border-width: #{$border-width};\n --#{$prefix}border-style: #{$border-style};\n --#{$prefix}border-color: #{$border-color};\n --#{$prefix}border-color-translucent: #{$border-color-translucent};\n\n --#{$prefix}border-radius: #{$border-radius};\n --#{$prefix}border-radius-sm: #{$border-radius-sm};\n --#{$prefix}border-radius-lg: #{$border-radius-lg};\n --#{$prefix}border-radius-xl: #{$border-radius-xl};\n --#{$prefix}border-radius-2xl: #{$border-radius-2xl};\n --#{$prefix}border-radius-pill: #{$border-radius-pill};\n // scss-docs-end root-border-var\n\n --#{$prefix}box-shadow: #{$box-shadow};\n --#{$prefix}box-shadow-sm: #{$box-shadow-sm};\n --#{$prefix}box-shadow-lg: #{$box-shadow-lg};\n --#{$prefix}box-shadow-inset: #{$box-shadow-inset};\n\n --#{$prefix}emphasis-color: #{$emphasis-color};\n\n // scss-docs-start form-control-vars\n --#{$prefix}form-control-bg: var(--#{$prefix}body-bg);\n --#{$prefix}form-control-disabled-bg: var(--#{$prefix}secondary-bg);\n // scss-docs-end form-control-vars\n\n --#{$prefix}highlight-bg: #{$mark-bg};\n\n @each $name, $value in $grid-breakpoints {\n --#{$prefix}breakpoint-#{$name}: #{$value};\n }\n}\n\n@if $enable-dark-mode {\n @include color-mode(dark, true) {\n // scss-docs-start root-dark-mode-vars\n --#{$prefix}body-color: #{$body-color-dark};\n --#{$prefix}body-color-rgb: #{to-rgb($body-color-dark)};\n --#{$prefix}body-bg: #{$body-bg-dark};\n --#{$prefix}body-bg-rgb: #{to-rgb($body-bg-dark)};\n\n --#{$prefix}emphasis-color: #{$body-emphasis-color-dark};\n --#{$prefix}emphasis-color-rgb: #{to-rgb($body-emphasis-color-dark)};\n\n --#{$prefix}secondary-color: #{$body-secondary-color-dark};\n --#{$prefix}secondary-color-rgb: #{to-rgb($body-secondary-color-dark)};\n --#{$prefix}secondary-bg: #{$body-secondary-bg-dark};\n --#{$prefix}secondary-bg-rgb: #{to-rgb($body-secondary-bg-dark)};\n\n --#{$prefix}tertiary-color: #{$body-tertiary-color-dark};\n --#{$prefix}tertiary-color-rgb: #{to-rgb($body-tertiary-color-dark)};\n --#{$prefix}tertiary-bg: #{$body-tertiary-bg-dark};\n --#{$prefix}tertiary-bg-rgb: #{to-rgb($body-tertiary-bg-dark)};\n\n --#{$prefix}emphasis-color: #{$emphasis-color-dark};\n\n --#{$prefix}primary-text: #{$primary-text-dark};\n --#{$prefix}secondary-text: #{$secondary-text-dark};\n --#{$prefix}success-text: #{$success-text-dark};\n --#{$prefix}info-text: #{$info-text-dark};\n --#{$prefix}warning-text: #{$warning-text-dark};\n --#{$prefix}danger-text: #{$danger-text-dark};\n --#{$prefix}light-text: #{$light-text-dark};\n --#{$prefix}dark-text: #{$dark-text-dark};\n\n --#{$prefix}primary-bg-subtle: #{$primary-bg-subtle-dark};\n --#{$prefix}secondary-bg-subtle: #{$secondary-bg-subtle-dark};\n --#{$prefix}success-bg-subtle: #{$success-bg-subtle-dark};\n --#{$prefix}info-bg-subtle: #{$info-bg-subtle-dark};\n --#{$prefix}warning-bg-subtle: #{$warning-bg-subtle-dark};\n --#{$prefix}danger-bg-subtle: #{$danger-bg-subtle-dark};\n --#{$prefix}light-bg-subtle: #{$light-bg-subtle-dark};\n --#{$prefix}dark-bg-subtle: #{$dark-bg-subtle-dark};\n\n --#{$prefix}primary-border-subtle: #{$primary-border-subtle-dark};\n --#{$prefix}secondary-border-subtle: #{$secondary-border-subtle-dark};\n --#{$prefix}success-border-subtle: #{$success-border-subtle-dark};\n --#{$prefix}info-border-subtle: #{$info-border-subtle-dark};\n --#{$prefix}warning-border-subtle: #{$warning-border-subtle-dark};\n --#{$prefix}danger-border-subtle: #{$danger-border-subtle-dark};\n --#{$prefix}light-border-subtle: #{$light-border-subtle-dark};\n --#{$prefix}dark-border-subtle: #{$dark-border-subtle-dark};\n\n --#{$prefix}heading-color: #{$headings-color-dark};\n\n --#{$prefix}link-color: #{$link-color-dark};\n --#{$prefix}link-hover-color: #{$link-hover-color-dark};\n --#{$prefix}link-color-rgb: #{to-rgb($link-color-dark)};\n --#{$prefix}link-hover-color-rgb: #{to-rgb($link-hover-color-dark)};\n\n --#{$prefix}code-color: #{$code-color-dark};\n\n --#{$prefix}border-color: #{$border-color-dark};\n --#{$prefix}border-color-translucent: #{$border-color-translucent-dark};\n // scss-docs-end root-dark-mode-vars\n }\n}\n","// stylelint-disable property-blacklist, scss/dollar-variable-default\n\n// SCSS RFS mixin\n//\n// Automated responsive values for font sizes, paddings, margins and much more\n//\n// Licensed under MIT (https://github.com/twbs/rfs/blob/main/LICENSE)\n\n// Configuration\n\n// Base value\n$rfs-base-value: 1.25rem !default;\n$rfs-unit: rem !default;\n\n@if $rfs-unit != rem and $rfs-unit != px {\n @error \"`#{$rfs-unit}` is not a valid unit for $rfs-unit. Use `px` or `rem`.\";\n}\n\n// Breakpoint at where values start decreasing if screen width is smaller\n$rfs-breakpoint: 1200px !default;\n$rfs-breakpoint-unit: px !default;\n\n@if $rfs-breakpoint-unit != px and $rfs-breakpoint-unit != em and $rfs-breakpoint-unit != rem {\n @error \"`#{$rfs-breakpoint-unit}` is not a valid unit for $rfs-breakpoint-unit. Use `px`, `em` or `rem`.\";\n}\n\n// Resize values based on screen height and width\n$rfs-two-dimensional: false !default;\n\n// Factor of decrease\n$rfs-factor: 10 !default;\n\n@if type-of($rfs-factor) != number or $rfs-factor <= 1 {\n @error \"`#{$rfs-factor}` is not a valid $rfs-factor, it must be greater than 1.\";\n}\n\n// Mode. Possibilities: \"min-media-query\", \"max-media-query\"\n$rfs-mode: min-media-query !default;\n\n// Generate enable or disable classes. Possibilities: false, \"enable\" or \"disable\"\n$rfs-class: false !default;\n\n// 1 rem = $rfs-rem-value px\n$rfs-rem-value: 16 !default;\n\n// Safari iframe resize bug: https://github.com/twbs/rfs/issues/14\n$rfs-safari-iframe-resize-bug-fix: false !default;\n\n// Disable RFS by setting $enable-rfs to false\n$enable-rfs: true !default;\n\n// Cache $rfs-base-value unit\n$rfs-base-value-unit: unit($rfs-base-value);\n\n@function divide($dividend, $divisor, $precision: 10) {\n $sign: if($dividend > 0 and $divisor > 0 or $dividend < 0 and $divisor < 0, 1, -1);\n $dividend: abs($dividend);\n $divisor: abs($divisor);\n @if $dividend == 0 {\n @return 0;\n }\n @if $divisor == 0 {\n @error \"Cannot divide by 0\";\n }\n $remainder: $dividend;\n $result: 0;\n $factor: 10;\n @while ($remainder > 0 and $precision >= 0) {\n $quotient: 0;\n @while ($remainder >= $divisor) {\n $remainder: $remainder - $divisor;\n $quotient: $quotient + 1;\n }\n $result: $result * 10 + $quotient;\n $factor: $factor * .1;\n $remainder: $remainder * 10;\n $precision: $precision - 1;\n @if ($precision < 0 and $remainder >= $divisor * 5) {\n $result: $result + 1;\n }\n }\n $result: $result * $factor * $sign;\n $dividend-unit: unit($dividend);\n $divisor-unit: unit($divisor);\n $unit-map: (\n \"px\": 1px,\n \"rem\": 1rem,\n \"em\": 1em,\n \"%\": 1%\n );\n @if ($dividend-unit != $divisor-unit and map-has-key($unit-map, $dividend-unit)) {\n $result: $result * map-get($unit-map, $dividend-unit);\n }\n @return $result;\n}\n\n// Remove px-unit from $rfs-base-value for calculations\n@if $rfs-base-value-unit == px {\n $rfs-base-value: divide($rfs-base-value, $rfs-base-value * 0 + 1);\n}\n@else if $rfs-base-value-unit == rem {\n $rfs-base-value: divide($rfs-base-value, divide($rfs-base-value * 0 + 1, $rfs-rem-value));\n}\n\n// Cache $rfs-breakpoint unit to prevent multiple calls\n$rfs-breakpoint-unit-cache: unit($rfs-breakpoint);\n\n// Remove unit from $rfs-breakpoint for calculations\n@if $rfs-breakpoint-unit-cache == px {\n $rfs-breakpoint: divide($rfs-breakpoint, $rfs-breakpoint * 0 + 1);\n}\n@else if $rfs-breakpoint-unit-cache == rem or $rfs-breakpoint-unit-cache == \"em\" {\n $rfs-breakpoint: divide($rfs-breakpoint, divide($rfs-breakpoint * 0 + 1, $rfs-rem-value));\n}\n\n// Calculate the media query value\n$rfs-mq-value: if($rfs-breakpoint-unit == px, #{$rfs-breakpoint}px, #{divide($rfs-breakpoint, $rfs-rem-value)}#{$rfs-breakpoint-unit});\n$rfs-mq-property-width: if($rfs-mode == max-media-query, max-width, min-width);\n$rfs-mq-property-height: if($rfs-mode == max-media-query, max-height, min-height);\n\n// Internal mixin used to determine which media query needs to be used\n@mixin _rfs-media-query {\n @if $rfs-two-dimensional {\n @if $rfs-mode == max-media-query {\n @media (#{$rfs-mq-property-width}: #{$rfs-mq-value}), (#{$rfs-mq-property-height}: #{$rfs-mq-value}) {\n @content;\n }\n }\n @else {\n @media (#{$rfs-mq-property-width}: #{$rfs-mq-value}) and (#{$rfs-mq-property-height}: #{$rfs-mq-value}) {\n @content;\n }\n }\n }\n @else {\n @media (#{$rfs-mq-property-width}: #{$rfs-mq-value}) {\n @content;\n }\n }\n}\n\n// Internal mixin that adds disable classes to the selector if needed.\n@mixin _rfs-rule {\n @if $rfs-class == disable and $rfs-mode == max-media-query {\n // Adding an extra class increases specificity, which prevents the media query to override the property\n &,\n .disable-rfs &,\n &.disable-rfs {\n @content;\n }\n }\n @else if $rfs-class == enable and $rfs-mode == min-media-query {\n .enable-rfs &,\n &.enable-rfs {\n @content;\n }\n }\n @else {\n @content;\n }\n}\n\n// Internal mixin that adds enable classes to the selector if needed.\n@mixin _rfs-media-query-rule {\n\n @if $rfs-class == enable {\n @if $rfs-mode == min-media-query {\n @content;\n }\n\n @include _rfs-media-query {\n .enable-rfs &,\n &.enable-rfs {\n @content;\n }\n }\n }\n @else {\n @if $rfs-class == disable and $rfs-mode == min-media-query {\n .disable-rfs &,\n &.disable-rfs {\n @content;\n }\n }\n @include _rfs-media-query {\n @content;\n }\n }\n}\n\n// Helper function to get the formatted non-responsive value\n@function rfs-value($values) {\n // Convert to list\n $values: if(type-of($values) != list, ($values,), $values);\n\n $val: '';\n\n // Loop over each value and calculate value\n @each $value in $values {\n @if $value == 0 {\n $val: $val + ' 0';\n }\n @else {\n // Cache $value unit\n $unit: if(type-of($value) == \"number\", unit($value), false);\n\n @if $unit == px {\n // Convert to rem if needed\n $val: $val + ' ' + if($rfs-unit == rem, #{divide($value, $value * 0 + $rfs-rem-value)}rem, $value);\n }\n @else if $unit == rem {\n // Convert to px if needed\n $val: $val + ' ' + if($rfs-unit == px, #{divide($value, $value * 0 + 1) * $rfs-rem-value}px, $value);\n }\n @else {\n // If $value isn't a number (like inherit) or $value has a unit (not px or rem, like 1.5em) or $ is 0, just print the value\n $val: $val + ' ' + $value;\n }\n }\n }\n\n // Remove first space\n @return unquote(str-slice($val, 2));\n}\n\n// Helper function to get the responsive value calculated by RFS\n@function rfs-fluid-value($values) {\n // Convert to list\n $values: if(type-of($values) != list, ($values,), $values);\n\n $val: '';\n\n // Loop over each value and calculate value\n @each $value in $values {\n @if $value == 0 {\n $val: $val + ' 0';\n }\n\n @else {\n // Cache $value unit\n $unit: if(type-of($value) == \"number\", unit($value), false);\n\n // If $value isn't a number (like inherit) or $value has a unit (not px or rem, like 1.5em) or $ is 0, just print the value\n @if not $unit or $unit != px and $unit != rem {\n $val: $val + ' ' + $value;\n }\n\n @else {\n // Remove unit from $value for calculations\n $value: divide($value, $value * 0 + if($unit == px, 1, divide(1, $rfs-rem-value)));\n\n // Only add the media query if the value is greater than the minimum value\n @if abs($value) <= $rfs-base-value or not $enable-rfs {\n $val: $val + ' ' + if($rfs-unit == rem, #{divide($value, $rfs-rem-value)}rem, #{$value}px);\n }\n @else {\n // Calculate the minimum value\n $value-min: $rfs-base-value + divide(abs($value) - $rfs-base-value, $rfs-factor);\n\n // Calculate difference between $value and the minimum value\n $value-diff: abs($value) - $value-min;\n\n // Base value formatting\n $min-width: if($rfs-unit == rem, #{divide($value-min, $rfs-rem-value)}rem, #{$value-min}px);\n\n // Use negative value if needed\n $min-width: if($value < 0, -$min-width, $min-width);\n\n // Use `vmin` if two-dimensional is enabled\n $variable-unit: if($rfs-two-dimensional, vmin, vw);\n\n // Calculate the variable width between 0 and $rfs-breakpoint\n $variable-width: #{divide($value-diff * 100, $rfs-breakpoint)}#{$variable-unit};\n\n // Return the calculated value\n $val: $val + ' calc(' + $min-width + if($value < 0, ' - ', ' + ') + $variable-width + ')';\n }\n }\n }\n }\n\n // Remove first space\n @return unquote(str-slice($val, 2));\n}\n\n// RFS mixin\n@mixin rfs($values, $property: font-size) {\n @if $values != null {\n $val: rfs-value($values);\n $fluidVal: rfs-fluid-value($values);\n\n // Do not print the media query if responsive & non-responsive values are the same\n @if $val == $fluidVal {\n #{$property}: $val;\n }\n @else {\n @include _rfs-rule {\n #{$property}: if($rfs-mode == max-media-query, $val, $fluidVal);\n\n // Include safari iframe resize fix if needed\n min-width: if($rfs-safari-iframe-resize-bug-fix, (0 * 1vw), null);\n }\n\n @include _rfs-media-query-rule {\n #{$property}: if($rfs-mode == max-media-query, $fluidVal, $val);\n }\n }\n }\n}\n\n// Shorthand helper mixins\n@mixin font-size($value) {\n @include rfs($value);\n}\n\n@mixin padding($value) {\n @include rfs($value, padding);\n}\n\n@mixin padding-top($value) {\n @include rfs($value, padding-top);\n}\n\n@mixin padding-right($value) {\n @include rfs($value, padding-right);\n}\n\n@mixin padding-bottom($value) {\n @include rfs($value, padding-bottom);\n}\n\n@mixin padding-left($value) {\n @include rfs($value, padding-left);\n}\n\n@mixin margin($value) {\n @include rfs($value, margin);\n}\n\n@mixin margin-top($value) {\n @include rfs($value, margin-top);\n}\n\n@mixin margin-right($value) {\n @include rfs($value, margin-right);\n}\n\n@mixin margin-bottom($value) {\n @include rfs($value, margin-bottom);\n}\n\n@mixin margin-left($value) {\n @include rfs($value, margin-left);\n}\n","/*!\n * Bootstrap Grid v5.3.0-alpha1 (https://getbootstrap.com/)\n * Copyright 2011-2022 The Bootstrap Authors\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n:root,\n[data-bs-theme=light] {\n --bs-blue: #0d6efd;\n --bs-indigo: #6610f2;\n --bs-purple: #6f42c1;\n --bs-pink: #d63384;\n --bs-red: #dc3545;\n --bs-orange: #fd7e14;\n --bs-yellow: #ffc107;\n --bs-green: #198754;\n --bs-teal: #20c997;\n --bs-cyan: #0dcaf0;\n --bs-black: #000;\n --bs-white: #fff;\n --bs-gray: #6c757d;\n --bs-gray-dark: #343a40;\n --bs-gray-100: #f8f9fa;\n --bs-gray-200: #e9ecef;\n --bs-gray-300: #dee2e6;\n --bs-gray-400: #ced4da;\n --bs-gray-500: #adb5bd;\n --bs-gray-600: #6c757d;\n --bs-gray-700: #495057;\n --bs-gray-800: #343a40;\n --bs-gray-900: #212529;\n --bs-primary: #0d6efd;\n --bs-secondary: #6c757d;\n --bs-success: #198754;\n --bs-info: #0dcaf0;\n --bs-warning: #ffc107;\n --bs-danger: #dc3545;\n --bs-light: #f8f9fa;\n --bs-dark: #212529;\n --bs-primary-rgb: 13, 110, 253;\n --bs-secondary-rgb: 108, 117, 125;\n --bs-success-rgb: 25, 135, 84;\n --bs-info-rgb: 13, 202, 240;\n --bs-warning-rgb: 255, 193, 7;\n --bs-danger-rgb: 220, 53, 69;\n --bs-light-rgb: 248, 249, 250;\n --bs-dark-rgb: 33, 37, 41;\n --bs-primary-text: #0a58ca;\n --bs-secondary-text: #6c757d;\n --bs-success-text: #146c43;\n --bs-info-text: #087990;\n --bs-warning-text: #997404;\n --bs-danger-text: #b02a37;\n --bs-light-text: #6c757d;\n --bs-dark-text: #495057;\n --bs-primary-bg-subtle: #cfe2ff;\n --bs-secondary-bg-subtle: #f8f9fa;\n --bs-success-bg-subtle: #d1e7dd;\n --bs-info-bg-subtle: #cff4fc;\n --bs-warning-bg-subtle: #fff3cd;\n --bs-danger-bg-subtle: #f8d7da;\n --bs-light-bg-subtle: #fcfcfd;\n --bs-dark-bg-subtle: #ced4da;\n --bs-primary-border-subtle: #9ec5fe;\n --bs-secondary-border-subtle: #e9ecef;\n --bs-success-border-subtle: #a3cfbb;\n --bs-info-border-subtle: #9eeaf9;\n --bs-warning-border-subtle: #ffe69c;\n --bs-danger-border-subtle: #f1aeb5;\n --bs-light-border-subtle: #e9ecef;\n --bs-dark-border-subtle: #adb5bd;\n --bs-white-rgb: 255, 255, 255;\n --bs-black-rgb: 0, 0, 0;\n --bs-body-color-rgb: 33, 37, 41;\n --bs-body-bg-rgb: 255, 255, 255;\n --bs-font-sans-serif: system-ui, -apple-system, \"Segoe UI\", Roboto, \"Helvetica Neue\", \"Noto Sans\", \"Liberation Sans\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\n --bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;\n --bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));\n --bs-body-font-family: var(--bs-font-sans-serif);\n --bs-body-font-size: 1rem;\n --bs-body-font-weight: 400;\n --bs-body-line-height: 1.5;\n --bs-body-color: #212529;\n --bs-emphasis-color: #000;\n --bs-emphasis-color-rgb: 0, 0, 0;\n --bs-secondary-color: rgba(33, 37, 41, 0.75);\n --bs-secondary-color-rgb: 33, 37, 41;\n --bs-secondary-bg: #e9ecef;\n --bs-secondary-bg-rgb: 233, 236, 239;\n --bs-tertiary-color: rgba(33, 37, 41, 0.5);\n --bs-tertiary-color-rgb: 33, 37, 41;\n --bs-tertiary-bg: #f8f9fa;\n --bs-tertiary-bg-rgb: 248, 249, 250;\n --bs-body-bg: #fff;\n --bs-body-bg-rgb: 255, 255, 255;\n --bs-link-color: #0d6efd;\n --bs-link-color-rgb: 13, 110, 253;\n --bs-link-decoration: underline;\n --bs-link-hover-color: #0a58ca;\n --bs-link-hover-color-rgb: 10, 88, 202;\n --bs-code-color: #d63384;\n --bs-highlight-bg: #fff3cd;\n --bs-border-width: 1px;\n --bs-border-style: solid;\n --bs-border-color: #dee2e6;\n --bs-border-color-translucent: rgba(0, 0, 0, 0.175);\n --bs-border-radius: 0.375rem;\n --bs-border-radius-sm: 0.25rem;\n --bs-border-radius-lg: 0.5rem;\n --bs-border-radius-xl: 1rem;\n --bs-border-radius-2xl: 2rem;\n --bs-border-radius-pill: 50rem;\n --bs-box-shadow: 0 0.5rem 1rem rgba(var(--bs-body-color-rgb), 0.15);\n --bs-box-shadow-sm: 0 0.125rem 0.25rem rgba(var(--bs-body-color-rgb), 0.075);\n --bs-box-shadow-lg: 0 1rem 3rem rgba(var(--bs-body-color-rgb), 0.175);\n --bs-box-shadow-inset: inset 0 1px 2px rgba(var(--bs-body-color-rgb), 0.075);\n --bs-emphasis-color: #000;\n --bs-form-control-bg: var(--bs-body-bg);\n --bs-form-control-disabled-bg: var(--bs-secondary-bg);\n --bs-highlight-bg: #fff3cd;\n --bs-breakpoint-xs: 0;\n --bs-breakpoint-sm: 576px;\n --bs-breakpoint-md: 768px;\n --bs-breakpoint-lg: 992px;\n --bs-breakpoint-xl: 1200px;\n --bs-breakpoint-xxl: 1400px;\n}\n\n[data-bs-theme=dark] {\n --bs-body-color: #adb5bd;\n --bs-body-color-rgb: 173, 181, 189;\n --bs-body-bg: #212529;\n --bs-body-bg-rgb: 33, 37, 41;\n --bs-emphasis-color: #f8f9fa;\n --bs-emphasis-color-rgb: 248, 249, 250;\n --bs-secondary-color: rgba(173, 181, 189, 0.75);\n --bs-secondary-color-rgb: 173, 181, 189;\n --bs-secondary-bg: #343a40;\n --bs-secondary-bg-rgb: 52, 58, 64;\n --bs-tertiary-color: rgba(173, 181, 189, 0.5);\n --bs-tertiary-color-rgb: 173, 181, 189;\n --bs-tertiary-bg: #2b3035;\n --bs-tertiary-bg-rgb: 43, 48, 53;\n --bs-emphasis-color: #fff;\n --bs-primary-text: #6ea8fe;\n --bs-secondary-text: #dee2e6;\n --bs-success-text: #75b798;\n --bs-info-text: #6edff6;\n --bs-warning-text: #ffda6a;\n --bs-danger-text: #ea868f;\n --bs-light-text: #f8f9fa;\n --bs-dark-text: #dee2e6;\n --bs-primary-bg-subtle: #031633;\n --bs-secondary-bg-subtle: #212529;\n --bs-success-bg-subtle: #051b11;\n --bs-info-bg-subtle: #032830;\n --bs-warning-bg-subtle: #332701;\n --bs-danger-bg-subtle: #2c0b0e;\n --bs-light-bg-subtle: #343a40;\n --bs-dark-bg-subtle: #1a1d20;\n --bs-primary-border-subtle: #084298;\n --bs-secondary-border-subtle: #495057;\n --bs-success-border-subtle: #0f5132;\n --bs-info-border-subtle: #055160;\n --bs-warning-border-subtle: #664d03;\n --bs-danger-border-subtle: #842029;\n --bs-light-border-subtle: #495057;\n --bs-dark-border-subtle: #343a40;\n --bs-heading-color: #fff;\n --bs-link-color: #6ea8fe;\n --bs-link-hover-color: #9ec5fe;\n --bs-link-color-rgb: 110, 168, 254;\n --bs-link-hover-color-rgb: 158, 197, 254;\n --bs-code-color: #e685b5;\n --bs-border-color: #495057;\n --bs-border-color-translucent: rgba(255, 255, 255, 0.15);\n}\n\n.container,\n.container-fluid,\n.container-xxl,\n.container-xl,\n.container-lg,\n.container-md,\n.container-sm {\n --bs-gutter-x: 1.5rem;\n --bs-gutter-y: 0;\n width: 100%;\n padding-right: calc(var(--bs-gutter-x) * 0.5);\n padding-left: calc(var(--bs-gutter-x) * 0.5);\n margin-right: auto;\n margin-left: auto;\n}\n\n@media (min-width: 576px) {\n .container-sm, .container {\n max-width: 540px;\n }\n}\n@media (min-width: 768px) {\n .container-md, .container-sm, .container {\n max-width: 720px;\n }\n}\n@media (min-width: 992px) {\n .container-lg, .container-md, .container-sm, .container {\n max-width: 960px;\n }\n}\n@media (min-width: 1200px) {\n .container-xl, .container-lg, .container-md, .container-sm, .container {\n max-width: 1140px;\n }\n}\n@media (min-width: 1400px) {\n .container-xxl, .container-xl, .container-lg, .container-md, .container-sm, .container {\n max-width: 1320px;\n }\n}\n.row {\n --bs-gutter-x: 1.5rem;\n --bs-gutter-y: 0;\n display: flex;\n flex-wrap: wrap;\n margin-top: calc(-1 * var(--bs-gutter-y));\n margin-right: calc(-0.5 * var(--bs-gutter-x));\n margin-left: calc(-0.5 * var(--bs-gutter-x));\n}\n.row > * {\n box-sizing: border-box;\n flex-shrink: 0;\n width: 100%;\n max-width: 100%;\n padding-right: calc(var(--bs-gutter-x) * 0.5);\n padding-left: calc(var(--bs-gutter-x) * 0.5);\n margin-top: var(--bs-gutter-y);\n}\n\n.col {\n flex: 1 0 0%;\n}\n\n.row-cols-auto > * {\n flex: 0 0 auto;\n width: auto;\n}\n\n.row-cols-1 > * {\n flex: 0 0 auto;\n width: 100%;\n}\n\n.row-cols-2 > * {\n flex: 0 0 auto;\n width: 50%;\n}\n\n.row-cols-3 > * {\n flex: 0 0 auto;\n width: 33.3333333333%;\n}\n\n.row-cols-4 > * {\n flex: 0 0 auto;\n width: 25%;\n}\n\n.row-cols-5 > * {\n flex: 0 0 auto;\n width: 20%;\n}\n\n.row-cols-6 > * {\n flex: 0 0 auto;\n width: 16.6666666667%;\n}\n\n.col-auto {\n flex: 0 0 auto;\n width: auto;\n}\n\n.col-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n}\n\n.col-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n}\n\n.col-3 {\n flex: 0 0 auto;\n width: 25%;\n}\n\n.col-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n}\n\n.col-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n}\n\n.col-6 {\n flex: 0 0 auto;\n width: 50%;\n}\n\n.col-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n}\n\n.col-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n}\n\n.col-9 {\n flex: 0 0 auto;\n width: 75%;\n}\n\n.col-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n}\n\n.col-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n}\n\n.col-12 {\n flex: 0 0 auto;\n width: 100%;\n}\n\n.offset-1 {\n margin-left: 8.33333333%;\n}\n\n.offset-2 {\n margin-left: 16.66666667%;\n}\n\n.offset-3 {\n margin-left: 25%;\n}\n\n.offset-4 {\n margin-left: 33.33333333%;\n}\n\n.offset-5 {\n margin-left: 41.66666667%;\n}\n\n.offset-6 {\n margin-left: 50%;\n}\n\n.offset-7 {\n margin-left: 58.33333333%;\n}\n\n.offset-8 {\n margin-left: 66.66666667%;\n}\n\n.offset-9 {\n margin-left: 75%;\n}\n\n.offset-10 {\n margin-left: 83.33333333%;\n}\n\n.offset-11 {\n margin-left: 91.66666667%;\n}\n\n.g-0,\n.gx-0 {\n --bs-gutter-x: 0;\n}\n\n.g-0,\n.gy-0 {\n --bs-gutter-y: 0;\n}\n\n.g-1,\n.gx-1 {\n --bs-gutter-x: 0.25rem;\n}\n\n.g-1,\n.gy-1 {\n --bs-gutter-y: 0.25rem;\n}\n\n.g-2,\n.gx-2 {\n --bs-gutter-x: 0.5rem;\n}\n\n.g-2,\n.gy-2 {\n --bs-gutter-y: 0.5rem;\n}\n\n.g-3,\n.gx-3 {\n --bs-gutter-x: 1rem;\n}\n\n.g-3,\n.gy-3 {\n --bs-gutter-y: 1rem;\n}\n\n.g-4,\n.gx-4 {\n --bs-gutter-x: 1.5rem;\n}\n\n.g-4,\n.gy-4 {\n --bs-gutter-y: 1.5rem;\n}\n\n.g-5,\n.gx-5 {\n --bs-gutter-x: 3rem;\n}\n\n.g-5,\n.gy-5 {\n --bs-gutter-y: 3rem;\n}\n\n@media (min-width: 576px) {\n .col-sm {\n flex: 1 0 0%;\n }\n .row-cols-sm-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-sm-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-sm-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-sm-3 > * {\n flex: 0 0 auto;\n width: 33.3333333333%;\n }\n .row-cols-sm-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-sm-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-sm-6 > * {\n flex: 0 0 auto;\n width: 16.6666666667%;\n }\n .col-sm-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-sm-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-sm-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-sm-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-sm-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-sm-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-sm-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-sm-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-sm-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-sm-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-sm-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-sm-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-sm-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-sm-0 {\n margin-left: 0;\n }\n .offset-sm-1 {\n margin-left: 8.33333333%;\n }\n .offset-sm-2 {\n margin-left: 16.66666667%;\n }\n .offset-sm-3 {\n margin-left: 25%;\n }\n .offset-sm-4 {\n margin-left: 33.33333333%;\n }\n .offset-sm-5 {\n margin-left: 41.66666667%;\n }\n .offset-sm-6 {\n margin-left: 50%;\n }\n .offset-sm-7 {\n margin-left: 58.33333333%;\n }\n .offset-sm-8 {\n margin-left: 66.66666667%;\n }\n .offset-sm-9 {\n margin-left: 75%;\n }\n .offset-sm-10 {\n margin-left: 83.33333333%;\n }\n .offset-sm-11 {\n margin-left: 91.66666667%;\n }\n .g-sm-0,\n .gx-sm-0 {\n --bs-gutter-x: 0;\n }\n .g-sm-0,\n .gy-sm-0 {\n --bs-gutter-y: 0;\n }\n .g-sm-1,\n .gx-sm-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-sm-1,\n .gy-sm-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-sm-2,\n .gx-sm-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-sm-2,\n .gy-sm-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-sm-3,\n .gx-sm-3 {\n --bs-gutter-x: 1rem;\n }\n .g-sm-3,\n .gy-sm-3 {\n --bs-gutter-y: 1rem;\n }\n .g-sm-4,\n .gx-sm-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-sm-4,\n .gy-sm-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-sm-5,\n .gx-sm-5 {\n --bs-gutter-x: 3rem;\n }\n .g-sm-5,\n .gy-sm-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 768px) {\n .col-md {\n flex: 1 0 0%;\n }\n .row-cols-md-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-md-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-md-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-md-3 > * {\n flex: 0 0 auto;\n width: 33.3333333333%;\n }\n .row-cols-md-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-md-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-md-6 > * {\n flex: 0 0 auto;\n width: 16.6666666667%;\n }\n .col-md-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-md-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-md-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-md-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-md-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-md-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-md-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-md-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-md-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-md-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-md-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-md-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-md-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-md-0 {\n margin-left: 0;\n }\n .offset-md-1 {\n margin-left: 8.33333333%;\n }\n .offset-md-2 {\n margin-left: 16.66666667%;\n }\n .offset-md-3 {\n margin-left: 25%;\n }\n .offset-md-4 {\n margin-left: 33.33333333%;\n }\n .offset-md-5 {\n margin-left: 41.66666667%;\n }\n .offset-md-6 {\n margin-left: 50%;\n }\n .offset-md-7 {\n margin-left: 58.33333333%;\n }\n .offset-md-8 {\n margin-left: 66.66666667%;\n }\n .offset-md-9 {\n margin-left: 75%;\n }\n .offset-md-10 {\n margin-left: 83.33333333%;\n }\n .offset-md-11 {\n margin-left: 91.66666667%;\n }\n .g-md-0,\n .gx-md-0 {\n --bs-gutter-x: 0;\n }\n .g-md-0,\n .gy-md-0 {\n --bs-gutter-y: 0;\n }\n .g-md-1,\n .gx-md-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-md-1,\n .gy-md-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-md-2,\n .gx-md-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-md-2,\n .gy-md-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-md-3,\n .gx-md-3 {\n --bs-gutter-x: 1rem;\n }\n .g-md-3,\n .gy-md-3 {\n --bs-gutter-y: 1rem;\n }\n .g-md-4,\n .gx-md-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-md-4,\n .gy-md-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-md-5,\n .gx-md-5 {\n --bs-gutter-x: 3rem;\n }\n .g-md-5,\n .gy-md-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 992px) {\n .col-lg {\n flex: 1 0 0%;\n }\n .row-cols-lg-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-lg-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-lg-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-lg-3 > * {\n flex: 0 0 auto;\n width: 33.3333333333%;\n }\n .row-cols-lg-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-lg-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-lg-6 > * {\n flex: 0 0 auto;\n width: 16.6666666667%;\n }\n .col-lg-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-lg-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-lg-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-lg-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-lg-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-lg-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-lg-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-lg-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-lg-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-lg-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-lg-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-lg-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-lg-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-lg-0 {\n margin-left: 0;\n }\n .offset-lg-1 {\n margin-left: 8.33333333%;\n }\n .offset-lg-2 {\n margin-left: 16.66666667%;\n }\n .offset-lg-3 {\n margin-left: 25%;\n }\n .offset-lg-4 {\n margin-left: 33.33333333%;\n }\n .offset-lg-5 {\n margin-left: 41.66666667%;\n }\n .offset-lg-6 {\n margin-left: 50%;\n }\n .offset-lg-7 {\n margin-left: 58.33333333%;\n }\n .offset-lg-8 {\n margin-left: 66.66666667%;\n }\n .offset-lg-9 {\n margin-left: 75%;\n }\n .offset-lg-10 {\n margin-left: 83.33333333%;\n }\n .offset-lg-11 {\n margin-left: 91.66666667%;\n }\n .g-lg-0,\n .gx-lg-0 {\n --bs-gutter-x: 0;\n }\n .g-lg-0,\n .gy-lg-0 {\n --bs-gutter-y: 0;\n }\n .g-lg-1,\n .gx-lg-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-lg-1,\n .gy-lg-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-lg-2,\n .gx-lg-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-lg-2,\n .gy-lg-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-lg-3,\n .gx-lg-3 {\n --bs-gutter-x: 1rem;\n }\n .g-lg-3,\n .gy-lg-3 {\n --bs-gutter-y: 1rem;\n }\n .g-lg-4,\n .gx-lg-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-lg-4,\n .gy-lg-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-lg-5,\n .gx-lg-5 {\n --bs-gutter-x: 3rem;\n }\n .g-lg-5,\n .gy-lg-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 1200px) {\n .col-xl {\n flex: 1 0 0%;\n }\n .row-cols-xl-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-xl-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-xl-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-xl-3 > * {\n flex: 0 0 auto;\n width: 33.3333333333%;\n }\n .row-cols-xl-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-xl-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-xl-6 > * {\n flex: 0 0 auto;\n width: 16.6666666667%;\n }\n .col-xl-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-xl-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-xl-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-xl-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-xl-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-xl-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-xl-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-xl-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-xl-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-xl-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-xl-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-xl-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-xl-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-xl-0 {\n margin-left: 0;\n }\n .offset-xl-1 {\n margin-left: 8.33333333%;\n }\n .offset-xl-2 {\n margin-left: 16.66666667%;\n }\n .offset-xl-3 {\n margin-left: 25%;\n }\n .offset-xl-4 {\n margin-left: 33.33333333%;\n }\n .offset-xl-5 {\n margin-left: 41.66666667%;\n }\n .offset-xl-6 {\n margin-left: 50%;\n }\n .offset-xl-7 {\n margin-left: 58.33333333%;\n }\n .offset-xl-8 {\n margin-left: 66.66666667%;\n }\n .offset-xl-9 {\n margin-left: 75%;\n }\n .offset-xl-10 {\n margin-left: 83.33333333%;\n }\n .offset-xl-11 {\n margin-left: 91.66666667%;\n }\n .g-xl-0,\n .gx-xl-0 {\n --bs-gutter-x: 0;\n }\n .g-xl-0,\n .gy-xl-0 {\n --bs-gutter-y: 0;\n }\n .g-xl-1,\n .gx-xl-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-xl-1,\n .gy-xl-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-xl-2,\n .gx-xl-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-xl-2,\n .gy-xl-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-xl-3,\n .gx-xl-3 {\n --bs-gutter-x: 1rem;\n }\n .g-xl-3,\n .gy-xl-3 {\n --bs-gutter-y: 1rem;\n }\n .g-xl-4,\n .gx-xl-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-xl-4,\n .gy-xl-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-xl-5,\n .gx-xl-5 {\n --bs-gutter-x: 3rem;\n }\n .g-xl-5,\n .gy-xl-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 1400px) {\n .col-xxl {\n flex: 1 0 0%;\n }\n .row-cols-xxl-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-xxl-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-xxl-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-xxl-3 > * {\n flex: 0 0 auto;\n width: 33.3333333333%;\n }\n .row-cols-xxl-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-xxl-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-xxl-6 > * {\n flex: 0 0 auto;\n width: 16.6666666667%;\n }\n .col-xxl-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-xxl-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-xxl-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-xxl-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-xxl-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-xxl-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-xxl-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-xxl-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-xxl-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-xxl-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-xxl-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-xxl-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-xxl-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-xxl-0 {\n margin-left: 0;\n }\n .offset-xxl-1 {\n margin-left: 8.33333333%;\n }\n .offset-xxl-2 {\n margin-left: 16.66666667%;\n }\n .offset-xxl-3 {\n margin-left: 25%;\n }\n .offset-xxl-4 {\n margin-left: 33.33333333%;\n }\n .offset-xxl-5 {\n margin-left: 41.66666667%;\n }\n .offset-xxl-6 {\n margin-left: 50%;\n }\n .offset-xxl-7 {\n margin-left: 58.33333333%;\n }\n .offset-xxl-8 {\n margin-left: 66.66666667%;\n }\n .offset-xxl-9 {\n margin-left: 75%;\n }\n .offset-xxl-10 {\n margin-left: 83.33333333%;\n }\n .offset-xxl-11 {\n margin-left: 91.66666667%;\n }\n .g-xxl-0,\n .gx-xxl-0 {\n --bs-gutter-x: 0;\n }\n .g-xxl-0,\n .gy-xxl-0 {\n --bs-gutter-y: 0;\n }\n .g-xxl-1,\n .gx-xxl-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-xxl-1,\n .gy-xxl-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-xxl-2,\n .gx-xxl-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-xxl-2,\n .gy-xxl-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-xxl-3,\n .gx-xxl-3 {\n --bs-gutter-x: 1rem;\n }\n .g-xxl-3,\n .gy-xxl-3 {\n --bs-gutter-y: 1rem;\n }\n .g-xxl-4,\n .gx-xxl-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-xxl-4,\n .gy-xxl-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-xxl-5,\n .gx-xxl-5 {\n --bs-gutter-x: 3rem;\n }\n .g-xxl-5,\n .gy-xxl-5 {\n --bs-gutter-y: 3rem;\n }\n}\n.d-inline {\n display: inline !important;\n}\n\n.d-inline-block {\n display: inline-block !important;\n}\n\n.d-block {\n display: block !important;\n}\n\n.d-grid {\n display: grid !important;\n}\n\n.d-table {\n display: table !important;\n}\n\n.d-table-row {\n display: table-row !important;\n}\n\n.d-table-cell {\n display: table-cell !important;\n}\n\n.d-flex {\n display: flex !important;\n}\n\n.d-inline-flex {\n display: inline-flex !important;\n}\n\n.d-none {\n display: none !important;\n}\n\n.flex-fill {\n flex: 1 1 auto !important;\n}\n\n.flex-row {\n flex-direction: row !important;\n}\n\n.flex-column {\n flex-direction: column !important;\n}\n\n.flex-row-reverse {\n flex-direction: row-reverse !important;\n}\n\n.flex-column-reverse {\n flex-direction: column-reverse !important;\n}\n\n.flex-grow-0 {\n flex-grow: 0 !important;\n}\n\n.flex-grow-1 {\n flex-grow: 1 !important;\n}\n\n.flex-shrink-0 {\n flex-shrink: 0 !important;\n}\n\n.flex-shrink-1 {\n flex-shrink: 1 !important;\n}\n\n.flex-wrap {\n flex-wrap: wrap !important;\n}\n\n.flex-nowrap {\n flex-wrap: nowrap !important;\n}\n\n.flex-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n}\n\n.justify-content-start {\n justify-content: flex-start !important;\n}\n\n.justify-content-end {\n justify-content: flex-end !important;\n}\n\n.justify-content-center {\n justify-content: center !important;\n}\n\n.justify-content-between {\n justify-content: space-between !important;\n}\n\n.justify-content-around {\n justify-content: space-around !important;\n}\n\n.justify-content-evenly {\n justify-content: space-evenly !important;\n}\n\n.align-items-start {\n align-items: flex-start !important;\n}\n\n.align-items-end {\n align-items: flex-end !important;\n}\n\n.align-items-center {\n align-items: center !important;\n}\n\n.align-items-baseline {\n align-items: baseline !important;\n}\n\n.align-items-stretch {\n align-items: stretch !important;\n}\n\n.align-content-start {\n align-content: flex-start !important;\n}\n\n.align-content-end {\n align-content: flex-end !important;\n}\n\n.align-content-center {\n align-content: center !important;\n}\n\n.align-content-between {\n align-content: space-between !important;\n}\n\n.align-content-around {\n align-content: space-around !important;\n}\n\n.align-content-stretch {\n align-content: stretch !important;\n}\n\n.align-self-auto {\n align-self: auto !important;\n}\n\n.align-self-start {\n align-self: flex-start !important;\n}\n\n.align-self-end {\n align-self: flex-end !important;\n}\n\n.align-self-center {\n align-self: center !important;\n}\n\n.align-self-baseline {\n align-self: baseline !important;\n}\n\n.align-self-stretch {\n align-self: stretch !important;\n}\n\n.order-first {\n order: -1 !important;\n}\n\n.order-0 {\n order: 0 !important;\n}\n\n.order-1 {\n order: 1 !important;\n}\n\n.order-2 {\n order: 2 !important;\n}\n\n.order-3 {\n order: 3 !important;\n}\n\n.order-4 {\n order: 4 !important;\n}\n\n.order-5 {\n order: 5 !important;\n}\n\n.order-last {\n order: 6 !important;\n}\n\n.m-0 {\n margin: 0 !important;\n}\n\n.m-1 {\n margin: 0.25rem !important;\n}\n\n.m-2 {\n margin: 0.5rem !important;\n}\n\n.m-3 {\n margin: 1rem !important;\n}\n\n.m-4 {\n margin: 1.5rem !important;\n}\n\n.m-5 {\n margin: 3rem !important;\n}\n\n.m-auto {\n margin: auto !important;\n}\n\n.mx-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n}\n\n.mx-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n}\n\n.mx-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n}\n\n.mx-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n}\n\n.mx-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n}\n\n.mx-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n}\n\n.mx-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n}\n\n.my-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n}\n\n.my-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n}\n\n.my-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n}\n\n.my-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n}\n\n.my-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n}\n\n.my-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n}\n\n.my-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n}\n\n.mt-0 {\n margin-top: 0 !important;\n}\n\n.mt-1 {\n margin-top: 0.25rem !important;\n}\n\n.mt-2 {\n margin-top: 0.5rem !important;\n}\n\n.mt-3 {\n margin-top: 1rem !important;\n}\n\n.mt-4 {\n margin-top: 1.5rem !important;\n}\n\n.mt-5 {\n margin-top: 3rem !important;\n}\n\n.mt-auto {\n margin-top: auto !important;\n}\n\n.me-0 {\n margin-right: 0 !important;\n}\n\n.me-1 {\n margin-right: 0.25rem !important;\n}\n\n.me-2 {\n margin-right: 0.5rem !important;\n}\n\n.me-3 {\n margin-right: 1rem !important;\n}\n\n.me-4 {\n margin-right: 1.5rem !important;\n}\n\n.me-5 {\n margin-right: 3rem !important;\n}\n\n.me-auto {\n margin-right: auto !important;\n}\n\n.mb-0 {\n margin-bottom: 0 !important;\n}\n\n.mb-1 {\n margin-bottom: 0.25rem !important;\n}\n\n.mb-2 {\n margin-bottom: 0.5rem !important;\n}\n\n.mb-3 {\n margin-bottom: 1rem !important;\n}\n\n.mb-4 {\n margin-bottom: 1.5rem !important;\n}\n\n.mb-5 {\n margin-bottom: 3rem !important;\n}\n\n.mb-auto {\n margin-bottom: auto !important;\n}\n\n.ms-0 {\n margin-left: 0 !important;\n}\n\n.ms-1 {\n margin-left: 0.25rem !important;\n}\n\n.ms-2 {\n margin-left: 0.5rem !important;\n}\n\n.ms-3 {\n margin-left: 1rem !important;\n}\n\n.ms-4 {\n margin-left: 1.5rem !important;\n}\n\n.ms-5 {\n margin-left: 3rem !important;\n}\n\n.ms-auto {\n margin-left: auto !important;\n}\n\n.p-0 {\n padding: 0 !important;\n}\n\n.p-1 {\n padding: 0.25rem !important;\n}\n\n.p-2 {\n padding: 0.5rem !important;\n}\n\n.p-3 {\n padding: 1rem !important;\n}\n\n.p-4 {\n padding: 1.5rem !important;\n}\n\n.p-5 {\n padding: 3rem !important;\n}\n\n.px-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n}\n\n.px-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n}\n\n.px-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n}\n\n.px-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n}\n\n.px-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n}\n\n.px-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n}\n\n.py-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n}\n\n.py-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n}\n\n.py-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n}\n\n.py-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n}\n\n.py-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n}\n\n.py-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n}\n\n.pt-0 {\n padding-top: 0 !important;\n}\n\n.pt-1 {\n padding-top: 0.25rem !important;\n}\n\n.pt-2 {\n padding-top: 0.5rem !important;\n}\n\n.pt-3 {\n padding-top: 1rem !important;\n}\n\n.pt-4 {\n padding-top: 1.5rem !important;\n}\n\n.pt-5 {\n padding-top: 3rem !important;\n}\n\n.pe-0 {\n padding-right: 0 !important;\n}\n\n.pe-1 {\n padding-right: 0.25rem !important;\n}\n\n.pe-2 {\n padding-right: 0.5rem !important;\n}\n\n.pe-3 {\n padding-right: 1rem !important;\n}\n\n.pe-4 {\n padding-right: 1.5rem !important;\n}\n\n.pe-5 {\n padding-right: 3rem !important;\n}\n\n.pb-0 {\n padding-bottom: 0 !important;\n}\n\n.pb-1 {\n padding-bottom: 0.25rem !important;\n}\n\n.pb-2 {\n padding-bottom: 0.5rem !important;\n}\n\n.pb-3 {\n padding-bottom: 1rem !important;\n}\n\n.pb-4 {\n padding-bottom: 1.5rem !important;\n}\n\n.pb-5 {\n padding-bottom: 3rem !important;\n}\n\n.ps-0 {\n padding-left: 0 !important;\n}\n\n.ps-1 {\n padding-left: 0.25rem !important;\n}\n\n.ps-2 {\n padding-left: 0.5rem !important;\n}\n\n.ps-3 {\n padding-left: 1rem !important;\n}\n\n.ps-4 {\n padding-left: 1.5rem !important;\n}\n\n.ps-5 {\n padding-left: 3rem !important;\n}\n\n@media (min-width: 576px) {\n .d-sm-inline {\n display: inline !important;\n }\n .d-sm-inline-block {\n display: inline-block !important;\n }\n .d-sm-block {\n display: block !important;\n }\n .d-sm-grid {\n display: grid !important;\n }\n .d-sm-table {\n display: table !important;\n }\n .d-sm-table-row {\n display: table-row !important;\n }\n .d-sm-table-cell {\n display: table-cell !important;\n }\n .d-sm-flex {\n display: flex !important;\n }\n .d-sm-inline-flex {\n display: inline-flex !important;\n }\n .d-sm-none {\n display: none !important;\n }\n .flex-sm-fill {\n flex: 1 1 auto !important;\n }\n .flex-sm-row {\n flex-direction: row !important;\n }\n .flex-sm-column {\n flex-direction: column !important;\n }\n .flex-sm-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-sm-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-sm-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-sm-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-sm-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-sm-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-sm-wrap {\n flex-wrap: wrap !important;\n }\n .flex-sm-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-sm-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-sm-start {\n justify-content: flex-start !important;\n }\n .justify-content-sm-end {\n justify-content: flex-end !important;\n }\n .justify-content-sm-center {\n justify-content: center !important;\n }\n .justify-content-sm-between {\n justify-content: space-between !important;\n }\n .justify-content-sm-around {\n justify-content: space-around !important;\n }\n .justify-content-sm-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-sm-start {\n align-items: flex-start !important;\n }\n .align-items-sm-end {\n align-items: flex-end !important;\n }\n .align-items-sm-center {\n align-items: center !important;\n }\n .align-items-sm-baseline {\n align-items: baseline !important;\n }\n .align-items-sm-stretch {\n align-items: stretch !important;\n }\n .align-content-sm-start {\n align-content: flex-start !important;\n }\n .align-content-sm-end {\n align-content: flex-end !important;\n }\n .align-content-sm-center {\n align-content: center !important;\n }\n .align-content-sm-between {\n align-content: space-between !important;\n }\n .align-content-sm-around {\n align-content: space-around !important;\n }\n .align-content-sm-stretch {\n align-content: stretch !important;\n }\n .align-self-sm-auto {\n align-self: auto !important;\n }\n .align-self-sm-start {\n align-self: flex-start !important;\n }\n .align-self-sm-end {\n align-self: flex-end !important;\n }\n .align-self-sm-center {\n align-self: center !important;\n }\n .align-self-sm-baseline {\n align-self: baseline !important;\n }\n .align-self-sm-stretch {\n align-self: stretch !important;\n }\n .order-sm-first {\n order: -1 !important;\n }\n .order-sm-0 {\n order: 0 !important;\n }\n .order-sm-1 {\n order: 1 !important;\n }\n .order-sm-2 {\n order: 2 !important;\n }\n .order-sm-3 {\n order: 3 !important;\n }\n .order-sm-4 {\n order: 4 !important;\n }\n .order-sm-5 {\n order: 5 !important;\n }\n .order-sm-last {\n order: 6 !important;\n }\n .m-sm-0 {\n margin: 0 !important;\n }\n .m-sm-1 {\n margin: 0.25rem !important;\n }\n .m-sm-2 {\n margin: 0.5rem !important;\n }\n .m-sm-3 {\n margin: 1rem !important;\n }\n .m-sm-4 {\n margin: 1.5rem !important;\n }\n .m-sm-5 {\n margin: 3rem !important;\n }\n .m-sm-auto {\n margin: auto !important;\n }\n .mx-sm-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-sm-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-sm-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-sm-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-sm-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-sm-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-sm-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-sm-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-sm-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-sm-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-sm-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-sm-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-sm-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-sm-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-sm-0 {\n margin-top: 0 !important;\n }\n .mt-sm-1 {\n margin-top: 0.25rem !important;\n }\n .mt-sm-2 {\n margin-top: 0.5rem !important;\n }\n .mt-sm-3 {\n margin-top: 1rem !important;\n }\n .mt-sm-4 {\n margin-top: 1.5rem !important;\n }\n .mt-sm-5 {\n margin-top: 3rem !important;\n }\n .mt-sm-auto {\n margin-top: auto !important;\n }\n .me-sm-0 {\n margin-right: 0 !important;\n }\n .me-sm-1 {\n margin-right: 0.25rem !important;\n }\n .me-sm-2 {\n margin-right: 0.5rem !important;\n }\n .me-sm-3 {\n margin-right: 1rem !important;\n }\n .me-sm-4 {\n margin-right: 1.5rem !important;\n }\n .me-sm-5 {\n margin-right: 3rem !important;\n }\n .me-sm-auto {\n margin-right: auto !important;\n }\n .mb-sm-0 {\n margin-bottom: 0 !important;\n }\n .mb-sm-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-sm-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-sm-3 {\n margin-bottom: 1rem !important;\n }\n .mb-sm-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-sm-5 {\n margin-bottom: 3rem !important;\n }\n .mb-sm-auto {\n margin-bottom: auto !important;\n }\n .ms-sm-0 {\n margin-left: 0 !important;\n }\n .ms-sm-1 {\n margin-left: 0.25rem !important;\n }\n .ms-sm-2 {\n margin-left: 0.5rem !important;\n }\n .ms-sm-3 {\n margin-left: 1rem !important;\n }\n .ms-sm-4 {\n margin-left: 1.5rem !important;\n }\n .ms-sm-5 {\n margin-left: 3rem !important;\n }\n .ms-sm-auto {\n margin-left: auto !important;\n }\n .p-sm-0 {\n padding: 0 !important;\n }\n .p-sm-1 {\n padding: 0.25rem !important;\n }\n .p-sm-2 {\n padding: 0.5rem !important;\n }\n .p-sm-3 {\n padding: 1rem !important;\n }\n .p-sm-4 {\n padding: 1.5rem !important;\n }\n .p-sm-5 {\n padding: 3rem !important;\n }\n .px-sm-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-sm-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-sm-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-sm-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-sm-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-sm-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-sm-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-sm-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-sm-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-sm-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-sm-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-sm-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-sm-0 {\n padding-top: 0 !important;\n }\n .pt-sm-1 {\n padding-top: 0.25rem !important;\n }\n .pt-sm-2 {\n padding-top: 0.5rem !important;\n }\n .pt-sm-3 {\n padding-top: 1rem !important;\n }\n .pt-sm-4 {\n padding-top: 1.5rem !important;\n }\n .pt-sm-5 {\n padding-top: 3rem !important;\n }\n .pe-sm-0 {\n padding-right: 0 !important;\n }\n .pe-sm-1 {\n padding-right: 0.25rem !important;\n }\n .pe-sm-2 {\n padding-right: 0.5rem !important;\n }\n .pe-sm-3 {\n padding-right: 1rem !important;\n }\n .pe-sm-4 {\n padding-right: 1.5rem !important;\n }\n .pe-sm-5 {\n padding-right: 3rem !important;\n }\n .pb-sm-0 {\n padding-bottom: 0 !important;\n }\n .pb-sm-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-sm-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-sm-3 {\n padding-bottom: 1rem !important;\n }\n .pb-sm-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-sm-5 {\n padding-bottom: 3rem !important;\n }\n .ps-sm-0 {\n padding-left: 0 !important;\n }\n .ps-sm-1 {\n padding-left: 0.25rem !important;\n }\n .ps-sm-2 {\n padding-left: 0.5rem !important;\n }\n .ps-sm-3 {\n padding-left: 1rem !important;\n }\n .ps-sm-4 {\n padding-left: 1.5rem !important;\n }\n .ps-sm-5 {\n padding-left: 3rem !important;\n }\n}\n@media (min-width: 768px) {\n .d-md-inline {\n display: inline !important;\n }\n .d-md-inline-block {\n display: inline-block !important;\n }\n .d-md-block {\n display: block !important;\n }\n .d-md-grid {\n display: grid !important;\n }\n .d-md-table {\n display: table !important;\n }\n .d-md-table-row {\n display: table-row !important;\n }\n .d-md-table-cell {\n display: table-cell !important;\n }\n .d-md-flex {\n display: flex !important;\n }\n .d-md-inline-flex {\n display: inline-flex !important;\n }\n .d-md-none {\n display: none !important;\n }\n .flex-md-fill {\n flex: 1 1 auto !important;\n }\n .flex-md-row {\n flex-direction: row !important;\n }\n .flex-md-column {\n flex-direction: column !important;\n }\n .flex-md-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-md-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-md-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-md-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-md-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-md-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-md-wrap {\n flex-wrap: wrap !important;\n }\n .flex-md-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-md-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-md-start {\n justify-content: flex-start !important;\n }\n .justify-content-md-end {\n justify-content: flex-end !important;\n }\n .justify-content-md-center {\n justify-content: center !important;\n }\n .justify-content-md-between {\n justify-content: space-between !important;\n }\n .justify-content-md-around {\n justify-content: space-around !important;\n }\n .justify-content-md-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-md-start {\n align-items: flex-start !important;\n }\n .align-items-md-end {\n align-items: flex-end !important;\n }\n .align-items-md-center {\n align-items: center !important;\n }\n .align-items-md-baseline {\n align-items: baseline !important;\n }\n .align-items-md-stretch {\n align-items: stretch !important;\n }\n .align-content-md-start {\n align-content: flex-start !important;\n }\n .align-content-md-end {\n align-content: flex-end !important;\n }\n .align-content-md-center {\n align-content: center !important;\n }\n .align-content-md-between {\n align-content: space-between !important;\n }\n .align-content-md-around {\n align-content: space-around !important;\n }\n .align-content-md-stretch {\n align-content: stretch !important;\n }\n .align-self-md-auto {\n align-self: auto !important;\n }\n .align-self-md-start {\n align-self: flex-start !important;\n }\n .align-self-md-end {\n align-self: flex-end !important;\n }\n .align-self-md-center {\n align-self: center !important;\n }\n .align-self-md-baseline {\n align-self: baseline !important;\n }\n .align-self-md-stretch {\n align-self: stretch !important;\n }\n .order-md-first {\n order: -1 !important;\n }\n .order-md-0 {\n order: 0 !important;\n }\n .order-md-1 {\n order: 1 !important;\n }\n .order-md-2 {\n order: 2 !important;\n }\n .order-md-3 {\n order: 3 !important;\n }\n .order-md-4 {\n order: 4 !important;\n }\n .order-md-5 {\n order: 5 !important;\n }\n .order-md-last {\n order: 6 !important;\n }\n .m-md-0 {\n margin: 0 !important;\n }\n .m-md-1 {\n margin: 0.25rem !important;\n }\n .m-md-2 {\n margin: 0.5rem !important;\n }\n .m-md-3 {\n margin: 1rem !important;\n }\n .m-md-4 {\n margin: 1.5rem !important;\n }\n .m-md-5 {\n margin: 3rem !important;\n }\n .m-md-auto {\n margin: auto !important;\n }\n .mx-md-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-md-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-md-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-md-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-md-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-md-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-md-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-md-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-md-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-md-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-md-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-md-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-md-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-md-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-md-0 {\n margin-top: 0 !important;\n }\n .mt-md-1 {\n margin-top: 0.25rem !important;\n }\n .mt-md-2 {\n margin-top: 0.5rem !important;\n }\n .mt-md-3 {\n margin-top: 1rem !important;\n }\n .mt-md-4 {\n margin-top: 1.5rem !important;\n }\n .mt-md-5 {\n margin-top: 3rem !important;\n }\n .mt-md-auto {\n margin-top: auto !important;\n }\n .me-md-0 {\n margin-right: 0 !important;\n }\n .me-md-1 {\n margin-right: 0.25rem !important;\n }\n .me-md-2 {\n margin-right: 0.5rem !important;\n }\n .me-md-3 {\n margin-right: 1rem !important;\n }\n .me-md-4 {\n margin-right: 1.5rem !important;\n }\n .me-md-5 {\n margin-right: 3rem !important;\n }\n .me-md-auto {\n margin-right: auto !important;\n }\n .mb-md-0 {\n margin-bottom: 0 !important;\n }\n .mb-md-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-md-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-md-3 {\n margin-bottom: 1rem !important;\n }\n .mb-md-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-md-5 {\n margin-bottom: 3rem !important;\n }\n .mb-md-auto {\n margin-bottom: auto !important;\n }\n .ms-md-0 {\n margin-left: 0 !important;\n }\n .ms-md-1 {\n margin-left: 0.25rem !important;\n }\n .ms-md-2 {\n margin-left: 0.5rem !important;\n }\n .ms-md-3 {\n margin-left: 1rem !important;\n }\n .ms-md-4 {\n margin-left: 1.5rem !important;\n }\n .ms-md-5 {\n margin-left: 3rem !important;\n }\n .ms-md-auto {\n margin-left: auto !important;\n }\n .p-md-0 {\n padding: 0 !important;\n }\n .p-md-1 {\n padding: 0.25rem !important;\n }\n .p-md-2 {\n padding: 0.5rem !important;\n }\n .p-md-3 {\n padding: 1rem !important;\n }\n .p-md-4 {\n padding: 1.5rem !important;\n }\n .p-md-5 {\n padding: 3rem !important;\n }\n .px-md-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-md-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-md-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-md-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-md-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-md-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-md-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-md-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-md-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-md-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-md-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-md-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-md-0 {\n padding-top: 0 !important;\n }\n .pt-md-1 {\n padding-top: 0.25rem !important;\n }\n .pt-md-2 {\n padding-top: 0.5rem !important;\n }\n .pt-md-3 {\n padding-top: 1rem !important;\n }\n .pt-md-4 {\n padding-top: 1.5rem !important;\n }\n .pt-md-5 {\n padding-top: 3rem !important;\n }\n .pe-md-0 {\n padding-right: 0 !important;\n }\n .pe-md-1 {\n padding-right: 0.25rem !important;\n }\n .pe-md-2 {\n padding-right: 0.5rem !important;\n }\n .pe-md-3 {\n padding-right: 1rem !important;\n }\n .pe-md-4 {\n padding-right: 1.5rem !important;\n }\n .pe-md-5 {\n padding-right: 3rem !important;\n }\n .pb-md-0 {\n padding-bottom: 0 !important;\n }\n .pb-md-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-md-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-md-3 {\n padding-bottom: 1rem !important;\n }\n .pb-md-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-md-5 {\n padding-bottom: 3rem !important;\n }\n .ps-md-0 {\n padding-left: 0 !important;\n }\n .ps-md-1 {\n padding-left: 0.25rem !important;\n }\n .ps-md-2 {\n padding-left: 0.5rem !important;\n }\n .ps-md-3 {\n padding-left: 1rem !important;\n }\n .ps-md-4 {\n padding-left: 1.5rem !important;\n }\n .ps-md-5 {\n padding-left: 3rem !important;\n }\n}\n@media (min-width: 992px) {\n .d-lg-inline {\n display: inline !important;\n }\n .d-lg-inline-block {\n display: inline-block !important;\n }\n .d-lg-block {\n display: block !important;\n }\n .d-lg-grid {\n display: grid !important;\n }\n .d-lg-table {\n display: table !important;\n }\n .d-lg-table-row {\n display: table-row !important;\n }\n .d-lg-table-cell {\n display: table-cell !important;\n }\n .d-lg-flex {\n display: flex !important;\n }\n .d-lg-inline-flex {\n display: inline-flex !important;\n }\n .d-lg-none {\n display: none !important;\n }\n .flex-lg-fill {\n flex: 1 1 auto !important;\n }\n .flex-lg-row {\n flex-direction: row !important;\n }\n .flex-lg-column {\n flex-direction: column !important;\n }\n .flex-lg-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-lg-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-lg-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-lg-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-lg-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-lg-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-lg-wrap {\n flex-wrap: wrap !important;\n }\n .flex-lg-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-lg-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-lg-start {\n justify-content: flex-start !important;\n }\n .justify-content-lg-end {\n justify-content: flex-end !important;\n }\n .justify-content-lg-center {\n justify-content: center !important;\n }\n .justify-content-lg-between {\n justify-content: space-between !important;\n }\n .justify-content-lg-around {\n justify-content: space-around !important;\n }\n .justify-content-lg-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-lg-start {\n align-items: flex-start !important;\n }\n .align-items-lg-end {\n align-items: flex-end !important;\n }\n .align-items-lg-center {\n align-items: center !important;\n }\n .align-items-lg-baseline {\n align-items: baseline !important;\n }\n .align-items-lg-stretch {\n align-items: stretch !important;\n }\n .align-content-lg-start {\n align-content: flex-start !important;\n }\n .align-content-lg-end {\n align-content: flex-end !important;\n }\n .align-content-lg-center {\n align-content: center !important;\n }\n .align-content-lg-between {\n align-content: space-between !important;\n }\n .align-content-lg-around {\n align-content: space-around !important;\n }\n .align-content-lg-stretch {\n align-content: stretch !important;\n }\n .align-self-lg-auto {\n align-self: auto !important;\n }\n .align-self-lg-start {\n align-self: flex-start !important;\n }\n .align-self-lg-end {\n align-self: flex-end !important;\n }\n .align-self-lg-center {\n align-self: center !important;\n }\n .align-self-lg-baseline {\n align-self: baseline !important;\n }\n .align-self-lg-stretch {\n align-self: stretch !important;\n }\n .order-lg-first {\n order: -1 !important;\n }\n .order-lg-0 {\n order: 0 !important;\n }\n .order-lg-1 {\n order: 1 !important;\n }\n .order-lg-2 {\n order: 2 !important;\n }\n .order-lg-3 {\n order: 3 !important;\n }\n .order-lg-4 {\n order: 4 !important;\n }\n .order-lg-5 {\n order: 5 !important;\n }\n .order-lg-last {\n order: 6 !important;\n }\n .m-lg-0 {\n margin: 0 !important;\n }\n .m-lg-1 {\n margin: 0.25rem !important;\n }\n .m-lg-2 {\n margin: 0.5rem !important;\n }\n .m-lg-3 {\n margin: 1rem !important;\n }\n .m-lg-4 {\n margin: 1.5rem !important;\n }\n .m-lg-5 {\n margin: 3rem !important;\n }\n .m-lg-auto {\n margin: auto !important;\n }\n .mx-lg-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-lg-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-lg-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-lg-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-lg-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-lg-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-lg-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-lg-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-lg-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-lg-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-lg-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-lg-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-lg-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-lg-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-lg-0 {\n margin-top: 0 !important;\n }\n .mt-lg-1 {\n margin-top: 0.25rem !important;\n }\n .mt-lg-2 {\n margin-top: 0.5rem !important;\n }\n .mt-lg-3 {\n margin-top: 1rem !important;\n }\n .mt-lg-4 {\n margin-top: 1.5rem !important;\n }\n .mt-lg-5 {\n margin-top: 3rem !important;\n }\n .mt-lg-auto {\n margin-top: auto !important;\n }\n .me-lg-0 {\n margin-right: 0 !important;\n }\n .me-lg-1 {\n margin-right: 0.25rem !important;\n }\n .me-lg-2 {\n margin-right: 0.5rem !important;\n }\n .me-lg-3 {\n margin-right: 1rem !important;\n }\n .me-lg-4 {\n margin-right: 1.5rem !important;\n }\n .me-lg-5 {\n margin-right: 3rem !important;\n }\n .me-lg-auto {\n margin-right: auto !important;\n }\n .mb-lg-0 {\n margin-bottom: 0 !important;\n }\n .mb-lg-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-lg-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-lg-3 {\n margin-bottom: 1rem !important;\n }\n .mb-lg-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-lg-5 {\n margin-bottom: 3rem !important;\n }\n .mb-lg-auto {\n margin-bottom: auto !important;\n }\n .ms-lg-0 {\n margin-left: 0 !important;\n }\n .ms-lg-1 {\n margin-left: 0.25rem !important;\n }\n .ms-lg-2 {\n margin-left: 0.5rem !important;\n }\n .ms-lg-3 {\n margin-left: 1rem !important;\n }\n .ms-lg-4 {\n margin-left: 1.5rem !important;\n }\n .ms-lg-5 {\n margin-left: 3rem !important;\n }\n .ms-lg-auto {\n margin-left: auto !important;\n }\n .p-lg-0 {\n padding: 0 !important;\n }\n .p-lg-1 {\n padding: 0.25rem !important;\n }\n .p-lg-2 {\n padding: 0.5rem !important;\n }\n .p-lg-3 {\n padding: 1rem !important;\n }\n .p-lg-4 {\n padding: 1.5rem !important;\n }\n .p-lg-5 {\n padding: 3rem !important;\n }\n .px-lg-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-lg-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-lg-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-lg-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-lg-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-lg-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-lg-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-lg-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-lg-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-lg-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-lg-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-lg-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-lg-0 {\n padding-top: 0 !important;\n }\n .pt-lg-1 {\n padding-top: 0.25rem !important;\n }\n .pt-lg-2 {\n padding-top: 0.5rem !important;\n }\n .pt-lg-3 {\n padding-top: 1rem !important;\n }\n .pt-lg-4 {\n padding-top: 1.5rem !important;\n }\n .pt-lg-5 {\n padding-top: 3rem !important;\n }\n .pe-lg-0 {\n padding-right: 0 !important;\n }\n .pe-lg-1 {\n padding-right: 0.25rem !important;\n }\n .pe-lg-2 {\n padding-right: 0.5rem !important;\n }\n .pe-lg-3 {\n padding-right: 1rem !important;\n }\n .pe-lg-4 {\n padding-right: 1.5rem !important;\n }\n .pe-lg-5 {\n padding-right: 3rem !important;\n }\n .pb-lg-0 {\n padding-bottom: 0 !important;\n }\n .pb-lg-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-lg-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-lg-3 {\n padding-bottom: 1rem !important;\n }\n .pb-lg-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-lg-5 {\n padding-bottom: 3rem !important;\n }\n .ps-lg-0 {\n padding-left: 0 !important;\n }\n .ps-lg-1 {\n padding-left: 0.25rem !important;\n }\n .ps-lg-2 {\n padding-left: 0.5rem !important;\n }\n .ps-lg-3 {\n padding-left: 1rem !important;\n }\n .ps-lg-4 {\n padding-left: 1.5rem !important;\n }\n .ps-lg-5 {\n padding-left: 3rem !important;\n }\n}\n@media (min-width: 1200px) {\n .d-xl-inline {\n display: inline !important;\n }\n .d-xl-inline-block {\n display: inline-block !important;\n }\n .d-xl-block {\n display: block !important;\n }\n .d-xl-grid {\n display: grid !important;\n }\n .d-xl-table {\n display: table !important;\n }\n .d-xl-table-row {\n display: table-row !important;\n }\n .d-xl-table-cell {\n display: table-cell !important;\n }\n .d-xl-flex {\n display: flex !important;\n }\n .d-xl-inline-flex {\n display: inline-flex !important;\n }\n .d-xl-none {\n display: none !important;\n }\n .flex-xl-fill {\n flex: 1 1 auto !important;\n }\n .flex-xl-row {\n flex-direction: row !important;\n }\n .flex-xl-column {\n flex-direction: column !important;\n }\n .flex-xl-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-xl-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-xl-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-xl-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-xl-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-xl-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-xl-wrap {\n flex-wrap: wrap !important;\n }\n .flex-xl-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-xl-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-xl-start {\n justify-content: flex-start !important;\n }\n .justify-content-xl-end {\n justify-content: flex-end !important;\n }\n .justify-content-xl-center {\n justify-content: center !important;\n }\n .justify-content-xl-between {\n justify-content: space-between !important;\n }\n .justify-content-xl-around {\n justify-content: space-around !important;\n }\n .justify-content-xl-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-xl-start {\n align-items: flex-start !important;\n }\n .align-items-xl-end {\n align-items: flex-end !important;\n }\n .align-items-xl-center {\n align-items: center !important;\n }\n .align-items-xl-baseline {\n align-items: baseline !important;\n }\n .align-items-xl-stretch {\n align-items: stretch !important;\n }\n .align-content-xl-start {\n align-content: flex-start !important;\n }\n .align-content-xl-end {\n align-content: flex-end !important;\n }\n .align-content-xl-center {\n align-content: center !important;\n }\n .align-content-xl-between {\n align-content: space-between !important;\n }\n .align-content-xl-around {\n align-content: space-around !important;\n }\n .align-content-xl-stretch {\n align-content: stretch !important;\n }\n .align-self-xl-auto {\n align-self: auto !important;\n }\n .align-self-xl-start {\n align-self: flex-start !important;\n }\n .align-self-xl-end {\n align-self: flex-end !important;\n }\n .align-self-xl-center {\n align-self: center !important;\n }\n .align-self-xl-baseline {\n align-self: baseline !important;\n }\n .align-self-xl-stretch {\n align-self: stretch !important;\n }\n .order-xl-first {\n order: -1 !important;\n }\n .order-xl-0 {\n order: 0 !important;\n }\n .order-xl-1 {\n order: 1 !important;\n }\n .order-xl-2 {\n order: 2 !important;\n }\n .order-xl-3 {\n order: 3 !important;\n }\n .order-xl-4 {\n order: 4 !important;\n }\n .order-xl-5 {\n order: 5 !important;\n }\n .order-xl-last {\n order: 6 !important;\n }\n .m-xl-0 {\n margin: 0 !important;\n }\n .m-xl-1 {\n margin: 0.25rem !important;\n }\n .m-xl-2 {\n margin: 0.5rem !important;\n }\n .m-xl-3 {\n margin: 1rem !important;\n }\n .m-xl-4 {\n margin: 1.5rem !important;\n }\n .m-xl-5 {\n margin: 3rem !important;\n }\n .m-xl-auto {\n margin: auto !important;\n }\n .mx-xl-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-xl-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-xl-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-xl-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-xl-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-xl-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-xl-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-xl-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-xl-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-xl-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-xl-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-xl-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-xl-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-xl-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-xl-0 {\n margin-top: 0 !important;\n }\n .mt-xl-1 {\n margin-top: 0.25rem !important;\n }\n .mt-xl-2 {\n margin-top: 0.5rem !important;\n }\n .mt-xl-3 {\n margin-top: 1rem !important;\n }\n .mt-xl-4 {\n margin-top: 1.5rem !important;\n }\n .mt-xl-5 {\n margin-top: 3rem !important;\n }\n .mt-xl-auto {\n margin-top: auto !important;\n }\n .me-xl-0 {\n margin-right: 0 !important;\n }\n .me-xl-1 {\n margin-right: 0.25rem !important;\n }\n .me-xl-2 {\n margin-right: 0.5rem !important;\n }\n .me-xl-3 {\n margin-right: 1rem !important;\n }\n .me-xl-4 {\n margin-right: 1.5rem !important;\n }\n .me-xl-5 {\n margin-right: 3rem !important;\n }\n .me-xl-auto {\n margin-right: auto !important;\n }\n .mb-xl-0 {\n margin-bottom: 0 !important;\n }\n .mb-xl-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-xl-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-xl-3 {\n margin-bottom: 1rem !important;\n }\n .mb-xl-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-xl-5 {\n margin-bottom: 3rem !important;\n }\n .mb-xl-auto {\n margin-bottom: auto !important;\n }\n .ms-xl-0 {\n margin-left: 0 !important;\n }\n .ms-xl-1 {\n margin-left: 0.25rem !important;\n }\n .ms-xl-2 {\n margin-left: 0.5rem !important;\n }\n .ms-xl-3 {\n margin-left: 1rem !important;\n }\n .ms-xl-4 {\n margin-left: 1.5rem !important;\n }\n .ms-xl-5 {\n margin-left: 3rem !important;\n }\n .ms-xl-auto {\n margin-left: auto !important;\n }\n .p-xl-0 {\n padding: 0 !important;\n }\n .p-xl-1 {\n padding: 0.25rem !important;\n }\n .p-xl-2 {\n padding: 0.5rem !important;\n }\n .p-xl-3 {\n padding: 1rem !important;\n }\n .p-xl-4 {\n padding: 1.5rem !important;\n }\n .p-xl-5 {\n padding: 3rem !important;\n }\n .px-xl-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-xl-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-xl-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-xl-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-xl-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-xl-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-xl-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-xl-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-xl-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-xl-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-xl-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-xl-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-xl-0 {\n padding-top: 0 !important;\n }\n .pt-xl-1 {\n padding-top: 0.25rem !important;\n }\n .pt-xl-2 {\n padding-top: 0.5rem !important;\n }\n .pt-xl-3 {\n padding-top: 1rem !important;\n }\n .pt-xl-4 {\n padding-top: 1.5rem !important;\n }\n .pt-xl-5 {\n padding-top: 3rem !important;\n }\n .pe-xl-0 {\n padding-right: 0 !important;\n }\n .pe-xl-1 {\n padding-right: 0.25rem !important;\n }\n .pe-xl-2 {\n padding-right: 0.5rem !important;\n }\n .pe-xl-3 {\n padding-right: 1rem !important;\n }\n .pe-xl-4 {\n padding-right: 1.5rem !important;\n }\n .pe-xl-5 {\n padding-right: 3rem !important;\n }\n .pb-xl-0 {\n padding-bottom: 0 !important;\n }\n .pb-xl-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-xl-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-xl-3 {\n padding-bottom: 1rem !important;\n }\n .pb-xl-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-xl-5 {\n padding-bottom: 3rem !important;\n }\n .ps-xl-0 {\n padding-left: 0 !important;\n }\n .ps-xl-1 {\n padding-left: 0.25rem !important;\n }\n .ps-xl-2 {\n padding-left: 0.5rem !important;\n }\n .ps-xl-3 {\n padding-left: 1rem !important;\n }\n .ps-xl-4 {\n padding-left: 1.5rem !important;\n }\n .ps-xl-5 {\n padding-left: 3rem !important;\n }\n}\n@media (min-width: 1400px) {\n .d-xxl-inline {\n display: inline !important;\n }\n .d-xxl-inline-block {\n display: inline-block !important;\n }\n .d-xxl-block {\n display: block !important;\n }\n .d-xxl-grid {\n display: grid !important;\n }\n .d-xxl-table {\n display: table !important;\n }\n .d-xxl-table-row {\n display: table-row !important;\n }\n .d-xxl-table-cell {\n display: table-cell !important;\n }\n .d-xxl-flex {\n display: flex !important;\n }\n .d-xxl-inline-flex {\n display: inline-flex !important;\n }\n .d-xxl-none {\n display: none !important;\n }\n .flex-xxl-fill {\n flex: 1 1 auto !important;\n }\n .flex-xxl-row {\n flex-direction: row !important;\n }\n .flex-xxl-column {\n flex-direction: column !important;\n }\n .flex-xxl-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-xxl-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-xxl-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-xxl-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-xxl-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-xxl-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-xxl-wrap {\n flex-wrap: wrap !important;\n }\n .flex-xxl-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-xxl-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-xxl-start {\n justify-content: flex-start !important;\n }\n .justify-content-xxl-end {\n justify-content: flex-end !important;\n }\n .justify-content-xxl-center {\n justify-content: center !important;\n }\n .justify-content-xxl-between {\n justify-content: space-between !important;\n }\n .justify-content-xxl-around {\n justify-content: space-around !important;\n }\n .justify-content-xxl-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-xxl-start {\n align-items: flex-start !important;\n }\n .align-items-xxl-end {\n align-items: flex-end !important;\n }\n .align-items-xxl-center {\n align-items: center !important;\n }\n .align-items-xxl-baseline {\n align-items: baseline !important;\n }\n .align-items-xxl-stretch {\n align-items: stretch !important;\n }\n .align-content-xxl-start {\n align-content: flex-start !important;\n }\n .align-content-xxl-end {\n align-content: flex-end !important;\n }\n .align-content-xxl-center {\n align-content: center !important;\n }\n .align-content-xxl-between {\n align-content: space-between !important;\n }\n .align-content-xxl-around {\n align-content: space-around !important;\n }\n .align-content-xxl-stretch {\n align-content: stretch !important;\n }\n .align-self-xxl-auto {\n align-self: auto !important;\n }\n .align-self-xxl-start {\n align-self: flex-start !important;\n }\n .align-self-xxl-end {\n align-self: flex-end !important;\n }\n .align-self-xxl-center {\n align-self: center !important;\n }\n .align-self-xxl-baseline {\n align-self: baseline !important;\n }\n .align-self-xxl-stretch {\n align-self: stretch !important;\n }\n .order-xxl-first {\n order: -1 !important;\n }\n .order-xxl-0 {\n order: 0 !important;\n }\n .order-xxl-1 {\n order: 1 !important;\n }\n .order-xxl-2 {\n order: 2 !important;\n }\n .order-xxl-3 {\n order: 3 !important;\n }\n .order-xxl-4 {\n order: 4 !important;\n }\n .order-xxl-5 {\n order: 5 !important;\n }\n .order-xxl-last {\n order: 6 !important;\n }\n .m-xxl-0 {\n margin: 0 !important;\n }\n .m-xxl-1 {\n margin: 0.25rem !important;\n }\n .m-xxl-2 {\n margin: 0.5rem !important;\n }\n .m-xxl-3 {\n margin: 1rem !important;\n }\n .m-xxl-4 {\n margin: 1.5rem !important;\n }\n .m-xxl-5 {\n margin: 3rem !important;\n }\n .m-xxl-auto {\n margin: auto !important;\n }\n .mx-xxl-0 {\n margin-right: 0 !important;\n margin-left: 0 !important;\n }\n .mx-xxl-1 {\n margin-right: 0.25rem !important;\n margin-left: 0.25rem !important;\n }\n .mx-xxl-2 {\n margin-right: 0.5rem !important;\n margin-left: 0.5rem !important;\n }\n .mx-xxl-3 {\n margin-right: 1rem !important;\n margin-left: 1rem !important;\n }\n .mx-xxl-4 {\n margin-right: 1.5rem !important;\n margin-left: 1.5rem !important;\n }\n .mx-xxl-5 {\n margin-right: 3rem !important;\n margin-left: 3rem !important;\n }\n .mx-xxl-auto {\n margin-right: auto !important;\n margin-left: auto !important;\n }\n .my-xxl-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-xxl-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-xxl-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-xxl-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-xxl-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-xxl-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-xxl-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-xxl-0 {\n margin-top: 0 !important;\n }\n .mt-xxl-1 {\n margin-top: 0.25rem !important;\n }\n .mt-xxl-2 {\n margin-top: 0.5rem !important;\n }\n .mt-xxl-3 {\n margin-top: 1rem !important;\n }\n .mt-xxl-4 {\n margin-top: 1.5rem !important;\n }\n .mt-xxl-5 {\n margin-top: 3rem !important;\n }\n .mt-xxl-auto {\n margin-top: auto !important;\n }\n .me-xxl-0 {\n margin-right: 0 !important;\n }\n .me-xxl-1 {\n margin-right: 0.25rem !important;\n }\n .me-xxl-2 {\n margin-right: 0.5rem !important;\n }\n .me-xxl-3 {\n margin-right: 1rem !important;\n }\n .me-xxl-4 {\n margin-right: 1.5rem !important;\n }\n .me-xxl-5 {\n margin-right: 3rem !important;\n }\n .me-xxl-auto {\n margin-right: auto !important;\n }\n .mb-xxl-0 {\n margin-bottom: 0 !important;\n }\n .mb-xxl-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-xxl-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-xxl-3 {\n margin-bottom: 1rem !important;\n }\n .mb-xxl-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-xxl-5 {\n margin-bottom: 3rem !important;\n }\n .mb-xxl-auto {\n margin-bottom: auto !important;\n }\n .ms-xxl-0 {\n margin-left: 0 !important;\n }\n .ms-xxl-1 {\n margin-left: 0.25rem !important;\n }\n .ms-xxl-2 {\n margin-left: 0.5rem !important;\n }\n .ms-xxl-3 {\n margin-left: 1rem !important;\n }\n .ms-xxl-4 {\n margin-left: 1.5rem !important;\n }\n .ms-xxl-5 {\n margin-left: 3rem !important;\n }\n .ms-xxl-auto {\n margin-left: auto !important;\n }\n .p-xxl-0 {\n padding: 0 !important;\n }\n .p-xxl-1 {\n padding: 0.25rem !important;\n }\n .p-xxl-2 {\n padding: 0.5rem !important;\n }\n .p-xxl-3 {\n padding: 1rem !important;\n }\n .p-xxl-4 {\n padding: 1.5rem !important;\n }\n .p-xxl-5 {\n padding: 3rem !important;\n }\n .px-xxl-0 {\n padding-right: 0 !important;\n padding-left: 0 !important;\n }\n .px-xxl-1 {\n padding-right: 0.25rem !important;\n padding-left: 0.25rem !important;\n }\n .px-xxl-2 {\n padding-right: 0.5rem !important;\n padding-left: 0.5rem !important;\n }\n .px-xxl-3 {\n padding-right: 1rem !important;\n padding-left: 1rem !important;\n }\n .px-xxl-4 {\n padding-right: 1.5rem !important;\n padding-left: 1.5rem !important;\n }\n .px-xxl-5 {\n padding-right: 3rem !important;\n padding-left: 3rem !important;\n }\n .py-xxl-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-xxl-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-xxl-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-xxl-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-xxl-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-xxl-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-xxl-0 {\n padding-top: 0 !important;\n }\n .pt-xxl-1 {\n padding-top: 0.25rem !important;\n }\n .pt-xxl-2 {\n padding-top: 0.5rem !important;\n }\n .pt-xxl-3 {\n padding-top: 1rem !important;\n }\n .pt-xxl-4 {\n padding-top: 1.5rem !important;\n }\n .pt-xxl-5 {\n padding-top: 3rem !important;\n }\n .pe-xxl-0 {\n padding-right: 0 !important;\n }\n .pe-xxl-1 {\n padding-right: 0.25rem !important;\n }\n .pe-xxl-2 {\n padding-right: 0.5rem !important;\n }\n .pe-xxl-3 {\n padding-right: 1rem !important;\n }\n .pe-xxl-4 {\n padding-right: 1.5rem !important;\n }\n .pe-xxl-5 {\n padding-right: 3rem !important;\n }\n .pb-xxl-0 {\n padding-bottom: 0 !important;\n }\n .pb-xxl-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-xxl-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-xxl-3 {\n padding-bottom: 1rem !important;\n }\n .pb-xxl-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-xxl-5 {\n padding-bottom: 3rem !important;\n }\n .ps-xxl-0 {\n padding-left: 0 !important;\n }\n .ps-xxl-1 {\n padding-left: 0.25rem !important;\n }\n .ps-xxl-2 {\n padding-left: 0.5rem !important;\n }\n .ps-xxl-3 {\n padding-left: 1rem !important;\n }\n .ps-xxl-4 {\n padding-left: 1.5rem !important;\n }\n .ps-xxl-5 {\n padding-left: 3rem !important;\n }\n}\n@media print {\n .d-print-inline {\n display: inline !important;\n }\n .d-print-inline-block {\n display: inline-block !important;\n }\n .d-print-block {\n display: block !important;\n }\n .d-print-grid {\n display: grid !important;\n }\n .d-print-table {\n display: table !important;\n }\n .d-print-table-row {\n display: table-row !important;\n }\n .d-print-table-cell {\n display: table-cell !important;\n }\n .d-print-flex {\n display: flex !important;\n }\n .d-print-inline-flex {\n display: inline-flex !important;\n }\n .d-print-none {\n display: none !important;\n }\n}\n\n/*# sourceMappingURL=bootstrap-grid.css.map */\n","// scss-docs-start color-mode-mixin\n@mixin color-mode($mode: light, $root: false) {\n @if $color-mode-type == \"media-query\" {\n @if $root == true {\n @media (prefers-color-scheme: $mode) {\n :root {\n @content;\n }\n }\n } @else {\n @media (prefers-color-scheme: $mode) {\n @content;\n }\n }\n } @else {\n [data-bs-theme=\"#{$mode}\"] {\n @content;\n }\n }\n}\n// scss-docs-end color-mode-mixin\n","// Container widths\n//\n// Set the container width, and override it for fixed navbars in media queries.\n\n@if $enable-container-classes {\n // Single container class with breakpoint max-widths\n .container,\n // 100% wide container at all breakpoints\n .container-fluid {\n @include make-container();\n }\n\n // Responsive containers that are 100% wide until a breakpoint\n @each $breakpoint, $container-max-width in $container-max-widths {\n .container-#{$breakpoint} {\n @extend .container-fluid;\n }\n\n @include media-breakpoint-up($breakpoint, $grid-breakpoints) {\n %responsive-container-#{$breakpoint} {\n max-width: $container-max-width;\n }\n\n // Extend each breakpoint which is smaller or equal to the current breakpoint\n $extend-breakpoint: true;\n\n @each $name, $width in $grid-breakpoints {\n @if ($extend-breakpoint) {\n .container#{breakpoint-infix($name, $grid-breakpoints)} {\n @extend %responsive-container-#{$breakpoint};\n }\n\n // Once the current breakpoint is reached, stop extending\n @if ($breakpoint == $name) {\n $extend-breakpoint: false;\n }\n }\n }\n }\n }\n}\n","// Container mixins\n\n@mixin make-container($gutter: $container-padding-x) {\n --#{$prefix}gutter-x: #{$gutter};\n --#{$prefix}gutter-y: 0;\n width: 100%;\n padding-right: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n padding-left: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n margin-right: auto;\n margin-left: auto;\n}\n","// Breakpoint viewport sizes and media queries.\n//\n// Breakpoints are defined as a map of (name: minimum width), order from small to large:\n//\n// (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px)\n//\n// The map defined in the `$grid-breakpoints` global variable is used as the `$breakpoints` argument by default.\n\n// Name of the next breakpoint, or null for the last breakpoint.\n//\n// >> breakpoint-next(sm)\n// md\n// >> breakpoint-next(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// md\n// >> breakpoint-next(sm, $breakpoint-names: (xs sm md lg xl xxl))\n// md\n@function breakpoint-next($name, $breakpoints: $grid-breakpoints, $breakpoint-names: map-keys($breakpoints)) {\n $n: index($breakpoint-names, $name);\n @if not $n {\n @error \"breakpoint `#{$name}` not found in `#{$breakpoints}`\";\n }\n @return if($n < length($breakpoint-names), nth($breakpoint-names, $n + 1), null);\n}\n\n// Minimum breakpoint width. Null for the smallest (first) breakpoint.\n//\n// >> breakpoint-min(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// 576px\n@function breakpoint-min($name, $breakpoints: $grid-breakpoints) {\n $min: map-get($breakpoints, $name);\n @return if($min != 0, $min, null);\n}\n\n// Maximum breakpoint width.\n// The maximum value is reduced by 0.02px to work around the limitations of\n// `min-` and `max-` prefixes and viewports with fractional widths.\n// See https://www.w3.org/TR/mediaqueries-4/#mq-min-max\n// Uses 0.02px rather than 0.01px to work around a current rounding bug in Safari.\n// See https://bugs.webkit.org/show_bug.cgi?id=178261\n//\n// >> breakpoint-max(md, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// 767.98px\n@function breakpoint-max($name, $breakpoints: $grid-breakpoints) {\n $max: map-get($breakpoints, $name);\n @return if($max and $max > 0, $max - .02, null);\n}\n\n// Returns a blank string if smallest breakpoint, otherwise returns the name with a dash in front.\n// Useful for making responsive utilities.\n//\n// >> breakpoint-infix(xs, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// \"\" (Returns a blank string)\n// >> breakpoint-infix(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// \"-sm\"\n@function breakpoint-infix($name, $breakpoints: $grid-breakpoints) {\n @return if(breakpoint-min($name, $breakpoints) == null, \"\", \"-#{$name}\");\n}\n\n// Media of at least the minimum breakpoint width. No query for the smallest breakpoint.\n// Makes the @content apply to the given breakpoint and wider.\n@mixin media-breakpoint-up($name, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n @if $min {\n @media (min-width: $min) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Media of at most the maximum breakpoint width. No query for the largest breakpoint.\n// Makes the @content apply to the given breakpoint and narrower.\n@mixin media-breakpoint-down($name, $breakpoints: $grid-breakpoints) {\n $max: breakpoint-max($name, $breakpoints);\n @if $max {\n @media (max-width: $max) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Media that spans multiple breakpoint widths.\n// Makes the @content apply between the min and max breakpoints\n@mixin media-breakpoint-between($lower, $upper, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($lower, $breakpoints);\n $max: breakpoint-max($upper, $breakpoints);\n\n @if $min != null and $max != null {\n @media (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else if $max == null {\n @include media-breakpoint-up($lower, $breakpoints) {\n @content;\n }\n } @else if $min == null {\n @include media-breakpoint-down($upper, $breakpoints) {\n @content;\n }\n }\n}\n\n// Media between the breakpoint's minimum and maximum widths.\n// No minimum for the smallest breakpoint, and no maximum for the largest one.\n// Makes the @content apply only to the given breakpoint, not viewports any wider or narrower.\n@mixin media-breakpoint-only($name, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n $next: breakpoint-next($name, $breakpoints);\n $max: breakpoint-max($next, $breakpoints);\n\n @if $min != null and $max != null {\n @media (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else if $max == null {\n @include media-breakpoint-up($name, $breakpoints) {\n @content;\n }\n } @else if $min == null {\n @include media-breakpoint-down($next, $breakpoints) {\n @content;\n }\n }\n}\n","// Variables\n//\n// Variables should follow the `$component-state-property-size` formula for\n// consistent naming. Ex: $nav-link-disabled-color and $modal-content-box-shadow-xs.\n\n// Color system\n\n// scss-docs-start gray-color-variables\n$white: #fff !default;\n$gray-100: #f8f9fa !default;\n$gray-200: #e9ecef !default;\n$gray-300: #dee2e6 !default;\n$gray-400: #ced4da !default;\n$gray-500: #adb5bd !default;\n$gray-600: #6c757d !default;\n$gray-700: #495057 !default;\n$gray-800: #343a40 !default;\n$gray-900: #212529 !default;\n$black: #000 !default;\n// scss-docs-end gray-color-variables\n\n// fusv-disable\n// scss-docs-start gray-colors-map\n$grays: (\n \"100\": $gray-100,\n \"200\": $gray-200,\n \"300\": $gray-300,\n \"400\": $gray-400,\n \"500\": $gray-500,\n \"600\": $gray-600,\n \"700\": $gray-700,\n \"800\": $gray-800,\n \"900\": $gray-900\n) !default;\n// scss-docs-end gray-colors-map\n// fusv-enable\n\n// scss-docs-start color-variables\n$blue: #0d6efd !default;\n$indigo: #6610f2 !default;\n$purple: #6f42c1 !default;\n$pink: #d63384 !default;\n$red: #dc3545 !default;\n$orange: #fd7e14 !default;\n$yellow: #ffc107 !default;\n$green: #198754 !default;\n$teal: #20c997 !default;\n$cyan: #0dcaf0 !default;\n// scss-docs-end color-variables\n\n// scss-docs-start colors-map\n$colors: (\n \"blue\": $blue,\n \"indigo\": $indigo,\n \"purple\": $purple,\n \"pink\": $pink,\n \"red\": $red,\n \"orange\": $orange,\n \"yellow\": $yellow,\n \"green\": $green,\n \"teal\": $teal,\n \"cyan\": $cyan,\n \"black\": $black,\n \"white\": $white,\n \"gray\": $gray-600,\n \"gray-dark\": $gray-800\n) !default;\n// scss-docs-end colors-map\n\n// The contrast ratio to reach against white, to determine if color changes from \"light\" to \"dark\". Acceptable values for WCAG 2.0 are 3, 4.5 and 7.\n// See https://www.w3.org/TR/WCAG20/#visual-audio-contrast-contrast\n$min-contrast-ratio: 4.5 !default;\n\n// Customize the light and dark text colors for use in our color contrast function.\n$color-contrast-dark: $black !default;\n$color-contrast-light: $white !default;\n\n// fusv-disable\n$blue-100: tint-color($blue, 80%) !default;\n$blue-200: tint-color($blue, 60%) !default;\n$blue-300: tint-color($blue, 40%) !default;\n$blue-400: tint-color($blue, 20%) !default;\n$blue-500: $blue !default;\n$blue-600: shade-color($blue, 20%) !default;\n$blue-700: shade-color($blue, 40%) !default;\n$blue-800: shade-color($blue, 60%) !default;\n$blue-900: shade-color($blue, 80%) !default;\n\n$indigo-100: tint-color($indigo, 80%) !default;\n$indigo-200: tint-color($indigo, 60%) !default;\n$indigo-300: tint-color($indigo, 40%) !default;\n$indigo-400: tint-color($indigo, 20%) !default;\n$indigo-500: $indigo !default;\n$indigo-600: shade-color($indigo, 20%) !default;\n$indigo-700: shade-color($indigo, 40%) !default;\n$indigo-800: shade-color($indigo, 60%) !default;\n$indigo-900: shade-color($indigo, 80%) !default;\n\n$purple-100: tint-color($purple, 80%) !default;\n$purple-200: tint-color($purple, 60%) !default;\n$purple-300: tint-color($purple, 40%) !default;\n$purple-400: tint-color($purple, 20%) !default;\n$purple-500: $purple !default;\n$purple-600: shade-color($purple, 20%) !default;\n$purple-700: shade-color($purple, 40%) !default;\n$purple-800: shade-color($purple, 60%) !default;\n$purple-900: shade-color($purple, 80%) !default;\n\n$pink-100: tint-color($pink, 80%) !default;\n$pink-200: tint-color($pink, 60%) !default;\n$pink-300: tint-color($pink, 40%) !default;\n$pink-400: tint-color($pink, 20%) !default;\n$pink-500: $pink !default;\n$pink-600: shade-color($pink, 20%) !default;\n$pink-700: shade-color($pink, 40%) !default;\n$pink-800: shade-color($pink, 60%) !default;\n$pink-900: shade-color($pink, 80%) !default;\n\n$red-100: tint-color($red, 80%) !default;\n$red-200: tint-color($red, 60%) !default;\n$red-300: tint-color($red, 40%) !default;\n$red-400: tint-color($red, 20%) !default;\n$red-500: $red !default;\n$red-600: shade-color($red, 20%) !default;\n$red-700: shade-color($red, 40%) !default;\n$red-800: shade-color($red, 60%) !default;\n$red-900: shade-color($red, 80%) !default;\n\n$orange-100: tint-color($orange, 80%) !default;\n$orange-200: tint-color($orange, 60%) !default;\n$orange-300: tint-color($orange, 40%) !default;\n$orange-400: tint-color($orange, 20%) !default;\n$orange-500: $orange !default;\n$orange-600: shade-color($orange, 20%) !default;\n$orange-700: shade-color($orange, 40%) !default;\n$orange-800: shade-color($orange, 60%) !default;\n$orange-900: shade-color($orange, 80%) !default;\n\n$yellow-100: tint-color($yellow, 80%) !default;\n$yellow-200: tint-color($yellow, 60%) !default;\n$yellow-300: tint-color($yellow, 40%) !default;\n$yellow-400: tint-color($yellow, 20%) !default;\n$yellow-500: $yellow !default;\n$yellow-600: shade-color($yellow, 20%) !default;\n$yellow-700: shade-color($yellow, 40%) !default;\n$yellow-800: shade-color($yellow, 60%) !default;\n$yellow-900: shade-color($yellow, 80%) !default;\n\n$green-100: tint-color($green, 80%) !default;\n$green-200: tint-color($green, 60%) !default;\n$green-300: tint-color($green, 40%) !default;\n$green-400: tint-color($green, 20%) !default;\n$green-500: $green !default;\n$green-600: shade-color($green, 20%) !default;\n$green-700: shade-color($green, 40%) !default;\n$green-800: shade-color($green, 60%) !default;\n$green-900: shade-color($green, 80%) !default;\n\n$teal-100: tint-color($teal, 80%) !default;\n$teal-200: tint-color($teal, 60%) !default;\n$teal-300: tint-color($teal, 40%) !default;\n$teal-400: tint-color($teal, 20%) !default;\n$teal-500: $teal !default;\n$teal-600: shade-color($teal, 20%) !default;\n$teal-700: shade-color($teal, 40%) !default;\n$teal-800: shade-color($teal, 60%) !default;\n$teal-900: shade-color($teal, 80%) !default;\n\n$cyan-100: tint-color($cyan, 80%) !default;\n$cyan-200: tint-color($cyan, 60%) !default;\n$cyan-300: tint-color($cyan, 40%) !default;\n$cyan-400: tint-color($cyan, 20%) !default;\n$cyan-500: $cyan !default;\n$cyan-600: shade-color($cyan, 20%) !default;\n$cyan-700: shade-color($cyan, 40%) !default;\n$cyan-800: shade-color($cyan, 60%) !default;\n$cyan-900: shade-color($cyan, 80%) !default;\n\n$blues: (\n \"blue-100\": $blue-100,\n \"blue-200\": $blue-200,\n \"blue-300\": $blue-300,\n \"blue-400\": $blue-400,\n \"blue-500\": $blue-500,\n \"blue-600\": $blue-600,\n \"blue-700\": $blue-700,\n \"blue-800\": $blue-800,\n \"blue-900\": $blue-900\n) !default;\n\n$indigos: (\n \"indigo-100\": $indigo-100,\n \"indigo-200\": $indigo-200,\n \"indigo-300\": $indigo-300,\n \"indigo-400\": $indigo-400,\n \"indigo-500\": $indigo-500,\n \"indigo-600\": $indigo-600,\n \"indigo-700\": $indigo-700,\n \"indigo-800\": $indigo-800,\n \"indigo-900\": $indigo-900\n) !default;\n\n$purples: (\n \"purple-100\": $purple-100,\n \"purple-200\": $purple-200,\n \"purple-300\": $purple-300,\n \"purple-400\": $purple-400,\n \"purple-500\": $purple-500,\n \"purple-600\": $purple-600,\n \"purple-700\": $purple-700,\n \"purple-800\": $purple-800,\n \"purple-900\": $purple-900\n) !default;\n\n$pinks: (\n \"pink-100\": $pink-100,\n \"pink-200\": $pink-200,\n \"pink-300\": $pink-300,\n \"pink-400\": $pink-400,\n \"pink-500\": $pink-500,\n \"pink-600\": $pink-600,\n \"pink-700\": $pink-700,\n \"pink-800\": $pink-800,\n \"pink-900\": $pink-900\n) !default;\n\n$reds: (\n \"red-100\": $red-100,\n \"red-200\": $red-200,\n \"red-300\": $red-300,\n \"red-400\": $red-400,\n \"red-500\": $red-500,\n \"red-600\": $red-600,\n \"red-700\": $red-700,\n \"red-800\": $red-800,\n \"red-900\": $red-900\n) !default;\n\n$oranges: (\n \"orange-100\": $orange-100,\n \"orange-200\": $orange-200,\n \"orange-300\": $orange-300,\n \"orange-400\": $orange-400,\n \"orange-500\": $orange-500,\n \"orange-600\": $orange-600,\n \"orange-700\": $orange-700,\n \"orange-800\": $orange-800,\n \"orange-900\": $orange-900\n) !default;\n\n$yellows: (\n \"yellow-100\": $yellow-100,\n \"yellow-200\": $yellow-200,\n \"yellow-300\": $yellow-300,\n \"yellow-400\": $yellow-400,\n \"yellow-500\": $yellow-500,\n \"yellow-600\": $yellow-600,\n \"yellow-700\": $yellow-700,\n \"yellow-800\": $yellow-800,\n \"yellow-900\": $yellow-900\n) !default;\n\n$greens: (\n \"green-100\": $green-100,\n \"green-200\": $green-200,\n \"green-300\": $green-300,\n \"green-400\": $green-400,\n \"green-500\": $green-500,\n \"green-600\": $green-600,\n \"green-700\": $green-700,\n \"green-800\": $green-800,\n \"green-900\": $green-900\n) !default;\n\n$teals: (\n \"teal-100\": $teal-100,\n \"teal-200\": $teal-200,\n \"teal-300\": $teal-300,\n \"teal-400\": $teal-400,\n \"teal-500\": $teal-500,\n \"teal-600\": $teal-600,\n \"teal-700\": $teal-700,\n \"teal-800\": $teal-800,\n \"teal-900\": $teal-900\n) !default;\n\n$cyans: (\n \"cyan-100\": $cyan-100,\n \"cyan-200\": $cyan-200,\n \"cyan-300\": $cyan-300,\n \"cyan-400\": $cyan-400,\n \"cyan-500\": $cyan-500,\n \"cyan-600\": $cyan-600,\n \"cyan-700\": $cyan-700,\n \"cyan-800\": $cyan-800,\n \"cyan-900\": $cyan-900\n) !default;\n// fusv-enable\n\n// scss-docs-start theme-color-variables\n$primary: $blue !default;\n$secondary: $gray-600 !default;\n$success: $green !default;\n$info: $cyan !default;\n$warning: $yellow !default;\n$danger: $red !default;\n$light: $gray-100 !default;\n$dark: $gray-900 !default;\n// scss-docs-end theme-color-variables\n\n// scss-docs-start theme-colors-map\n$theme-colors: (\n \"primary\": $primary,\n \"secondary\": $secondary,\n \"success\": $success,\n \"info\": $info,\n \"warning\": $warning,\n \"danger\": $danger,\n \"light\": $light,\n \"dark\": $dark\n) !default;\n// scss-docs-end theme-colors-map\n\n$primary-text: $blue-600 !default;\n$secondary-text: $gray-600 !default;\n$success-text: $green-600 !default;\n$info-text: $cyan-700 !default;\n$warning-text: $yellow-700 !default;\n$danger-text: $red-600 !default;\n$light-text: $gray-600 !default;\n$dark-text: $gray-700 !default;\n\n$primary-bg-subtle: $blue-100 !default;\n$secondary-bg-subtle: $gray-100 !default;\n$success-bg-subtle: $green-100 !default;\n$info-bg-subtle: $cyan-100 !default;\n$warning-bg-subtle: $yellow-100 !default;\n$danger-bg-subtle: $red-100 !default;\n$light-bg-subtle: mix($gray-100, $white) !default;\n$dark-bg-subtle: $gray-400 !default;\n\n$primary-border-subtle: $blue-200 !default;\n$secondary-border-subtle: $gray-200 !default;\n$success-border-subtle: $green-200 !default;\n$info-border-subtle: $cyan-200 !default;\n$warning-border-subtle: $yellow-200 !default;\n$danger-border-subtle: $red-200 !default;\n$light-border-subtle: $gray-200 !default;\n$dark-border-subtle: $gray-500 !default;\n\n// Characters which are escaped by the escape-svg function\n$escaped-characters: (\n (\"<\", \"%3c\"),\n (\">\", \"%3e\"),\n (\"#\", \"%23\"),\n (\"(\", \"%28\"),\n (\")\", \"%29\"),\n) !default;\n\n// Options\n//\n// Quickly modify global styling by enabling or disabling optional features.\n\n$enable-caret: true !default;\n$enable-rounded: true !default;\n$enable-shadows: false !default;\n$enable-gradients: false !default;\n$enable-transitions: true !default;\n$enable-reduced-motion: true !default;\n$enable-smooth-scroll: true !default;\n$enable-grid-classes: true !default;\n$enable-container-classes: true !default;\n$enable-cssgrid: false !default;\n$enable-button-pointers: true !default;\n$enable-rfs: true !default;\n$enable-validation-icons: true !default;\n$enable-negative-margins: false !default;\n$enable-deprecation-messages: true !default;\n$enable-important-utilities: true !default;\n\n$enable-dark-mode: true !default;\n$color-mode-type: data !default; // `data` or `media-query`\n\n// Prefix for :root CSS variables\n\n$variable-prefix: bs- !default; // Deprecated in v5.2.0 for the shorter `$prefix`\n$prefix: $variable-prefix !default;\n\n// Gradient\n//\n// The gradient which is added to components if `$enable-gradients` is `true`\n// This gradient is also added to elements with `.bg-gradient`\n// scss-docs-start variable-gradient\n$gradient: linear-gradient(180deg, rgba($white, .15), rgba($white, 0)) !default;\n// scss-docs-end variable-gradient\n\n// Spacing\n//\n// Control the default styling of most Bootstrap elements by modifying these\n// variables. Mostly focused on spacing.\n// You can add more entries to the $spacers map, should you need more variation.\n\n// scss-docs-start spacer-variables-maps\n$spacer: 1rem !default;\n$spacers: (\n 0: 0,\n 1: $spacer * .25,\n 2: $spacer * .5,\n 3: $spacer,\n 4: $spacer * 1.5,\n 5: $spacer * 3,\n) !default;\n// scss-docs-end spacer-variables-maps\n\n// Position\n//\n// Define the edge positioning anchors of the position utilities.\n\n// scss-docs-start position-map\n$position-values: (\n 0: 0,\n 50: 50%,\n 100: 100%\n) !default;\n// scss-docs-end position-map\n\n// Body\n//\n// Settings for the `` element.\n\n$body-text-align: null !default;\n$body-color: $gray-900 !default;\n$body-bg: $white !default;\n\n$body-emphasis-color: $black !default;\n\n$body-secondary-color: rgba($body-color, .75) !default;\n$body-secondary-bg: $gray-200 !default;\n\n$body-tertiary-color: rgba($body-color, .5) !default;\n$body-tertiary-bg: $gray-100 !default;\n\n$emphasis-color: $black !default;\n\n// Links\n//\n// Style anchor elements.\n\n$link-color: $primary !default;\n$link-decoration: underline !default;\n$link-shade-percentage: 20% !default;\n$link-hover-color: shift-color($link-color, $link-shade-percentage) !default;\n$link-hover-decoration: null !default;\n\n$stretched-link-pseudo-element: after !default;\n$stretched-link-z-index: 1 !default;\n\n// Paragraphs\n//\n// Style p element.\n\n$paragraph-margin-bottom: 1rem !default;\n\n\n// Grid breakpoints\n//\n// Define the minimum dimensions at which your layout will change,\n// adapting to different screen sizes, for use in media queries.\n\n// scss-docs-start grid-breakpoints\n$grid-breakpoints: (\n xs: 0,\n sm: 576px,\n md: 768px,\n lg: 992px,\n xl: 1200px,\n xxl: 1400px\n) !default;\n// scss-docs-end grid-breakpoints\n\n@include _assert-ascending($grid-breakpoints, \"$grid-breakpoints\");\n@include _assert-starts-at-zero($grid-breakpoints, \"$grid-breakpoints\");\n\n\n// Grid containers\n//\n// Define the maximum width of `.container` for different screen sizes.\n\n// scss-docs-start container-max-widths\n$container-max-widths: (\n sm: 540px,\n md: 720px,\n lg: 960px,\n xl: 1140px,\n xxl: 1320px\n) !default;\n// scss-docs-end container-max-widths\n\n@include _assert-ascending($container-max-widths, \"$container-max-widths\");\n\n\n// Grid columns\n//\n// Set the number of columns and specify the width of the gutters.\n\n$grid-columns: 12 !default;\n$grid-gutter-width: 1.5rem !default;\n$grid-row-columns: 6 !default;\n\n// Container padding\n\n$container-padding-x: $grid-gutter-width !default;\n\n\n// Components\n//\n// Define common padding and border radius sizes and more.\n\n// scss-docs-start border-variables\n$border-width: 1px !default;\n$border-widths: (\n 1: 1px,\n 2: 2px,\n 3: 3px,\n 4: 4px,\n 5: 5px\n) !default;\n$border-style: solid !default;\n$border-color: $gray-300 !default;\n$border-color-translucent: rgba($black, .175) !default;\n// scss-docs-end border-variables\n\n// scss-docs-start border-radius-variables\n$border-radius: .375rem !default;\n$border-radius-sm: .25rem !default;\n$border-radius-lg: .5rem !default;\n$border-radius-xl: 1rem !default;\n$border-radius-2xl: 2rem !default;\n$border-radius-pill: 50rem !default;\n// scss-docs-end border-radius-variables\n\n// scss-docs-start box-shadow-variables\n$box-shadow: 0 .5rem 1rem rgba(var(--#{$prefix}body-color-rgb), .15) !default;\n$box-shadow-sm: 0 .125rem .25rem rgba(var(--#{$prefix}body-color-rgb), .075) !default;\n$box-shadow-lg: 0 1rem 3rem rgba(var(--#{$prefix}body-color-rgb), .175) !default;\n$box-shadow-inset: inset 0 1px 2px rgba(var(--#{$prefix}body-color-rgb), .075) !default;\n// scss-docs-end box-shadow-variables\n\n$component-active-color: $white !default;\n$component-active-bg: $primary !default;\n\n// scss-docs-start caret-variables\n$caret-width: .3em !default;\n$caret-vertical-align: $caret-width * .85 !default;\n$caret-spacing: $caret-width * .85 !default;\n// scss-docs-end caret-variables\n\n$transition-base: all .2s ease-in-out !default;\n$transition-fade: opacity .15s linear !default;\n// scss-docs-start collapse-transition\n$transition-collapse: height .35s ease !default;\n$transition-collapse-width: width .35s ease !default;\n// scss-docs-end collapse-transition\n\n// stylelint-disable function-disallowed-list\n// scss-docs-start aspect-ratios\n$aspect-ratios: (\n \"1x1\": 100%,\n \"4x3\": calc(3 / 4 * 100%),\n \"16x9\": calc(9 / 16 * 100%),\n \"21x9\": calc(9 / 21 * 100%)\n) !default;\n// scss-docs-end aspect-ratios\n// stylelint-enable function-disallowed-list\n\n// Typography\n//\n// Font, line-height, and color for body text, headings, and more.\n\n// scss-docs-start font-variables\n// stylelint-disable value-keyword-case\n$font-family-sans-serif: system-ui, -apple-system, \"Segoe UI\", Roboto, \"Helvetica Neue\", \"Noto Sans\", \"Liberation Sans\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\" !default;\n$font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace !default;\n// stylelint-enable value-keyword-case\n$font-family-base: var(--#{$prefix}font-sans-serif) !default;\n$font-family-code: var(--#{$prefix}font-monospace) !default;\n\n// $font-size-root affects the value of `rem`, which is used for as well font sizes, paddings, and margins\n// $font-size-base affects the font size of the body text\n$font-size-root: null !default;\n$font-size-base: 1rem !default; // Assumes the browser default, typically `16px`\n$font-size-sm: $font-size-base * .875 !default;\n$font-size-lg: $font-size-base * 1.25 !default;\n\n$font-weight-lighter: lighter !default;\n$font-weight-light: 300 !default;\n$font-weight-normal: 400 !default;\n$font-weight-medium: 500 !default;\n$font-weight-semibold: 600 !default;\n$font-weight-bold: 700 !default;\n$font-weight-bolder: bolder !default;\n\n$font-weight-base: $font-weight-normal !default;\n\n$line-height-base: 1.5 !default;\n$line-height-sm: 1.25 !default;\n$line-height-lg: 2 !default;\n\n$h1-font-size: $font-size-base * 2.5 !default;\n$h2-font-size: $font-size-base * 2 !default;\n$h3-font-size: $font-size-base * 1.75 !default;\n$h4-font-size: $font-size-base * 1.5 !default;\n$h5-font-size: $font-size-base * 1.25 !default;\n$h6-font-size: $font-size-base !default;\n// scss-docs-end font-variables\n\n// scss-docs-start font-sizes\n$font-sizes: (\n 1: $h1-font-size,\n 2: $h2-font-size,\n 3: $h3-font-size,\n 4: $h4-font-size,\n 5: $h5-font-size,\n 6: $h6-font-size\n) !default;\n// scss-docs-end font-sizes\n\n// scss-docs-start headings-variables\n$headings-margin-bottom: $spacer * .5 !default;\n$headings-font-family: null !default;\n$headings-font-style: null !default;\n$headings-font-weight: 500 !default;\n$headings-line-height: 1.2 !default;\n$headings-color: null !default;\n// scss-docs-end headings-variables\n\n// scss-docs-start display-headings\n$display-font-sizes: (\n 1: 5rem,\n 2: 4.5rem,\n 3: 4rem,\n 4: 3.5rem,\n 5: 3rem,\n 6: 2.5rem\n) !default;\n\n$display-font-family: null !default;\n$display-font-style: null !default;\n$display-font-weight: 300 !default;\n$display-line-height: $headings-line-height !default;\n// scss-docs-end display-headings\n\n// scss-docs-start type-variables\n$lead-font-size: $font-size-base * 1.25 !default;\n$lead-font-weight: 300 !default;\n\n$small-font-size: .875em !default;\n\n$sub-sup-font-size: .75em !default;\n\n$text-muted: var(--#{$prefix}secondary-color) !default;\n\n$initialism-font-size: $small-font-size !default;\n\n$blockquote-margin-y: $spacer !default;\n$blockquote-font-size: $font-size-base * 1.25 !default;\n$blockquote-footer-color: $gray-600 !default;\n$blockquote-footer-font-size: $small-font-size !default;\n\n$hr-margin-y: $spacer !default;\n$hr-color: inherit !default;\n\n// fusv-disable\n$hr-bg-color: null !default; // Deprecated in v5.2.0\n$hr-height: null !default; // Deprecated in v5.2.0\n// fusv-enable\n\n$hr-border-color: null !default; // Allows for inherited colors\n$hr-border-width: var(--#{$prefix}border-width) !default;\n$hr-opacity: .25 !default;\n\n$legend-margin-bottom: .5rem !default;\n$legend-font-size: 1.5rem !default;\n$legend-font-weight: null !default;\n\n$dt-font-weight: $font-weight-bold !default;\n\n$list-inline-padding: .5rem !default;\n\n$mark-padding: .1875em !default;\n$mark-bg: $yellow-100 !default;\n// scss-docs-end type-variables\n\n\n// Tables\n//\n// Customizes the `.table` component with basic values, each used across all table variations.\n\n// scss-docs-start table-variables\n$table-cell-padding-y: .5rem !default;\n$table-cell-padding-x: .5rem !default;\n$table-cell-padding-y-sm: .25rem !default;\n$table-cell-padding-x-sm: .25rem !default;\n\n$table-cell-vertical-align: top !default;\n\n$table-color: var(--#{$prefix}body-color) !default;\n$table-bg: transparent !default;\n$table-accent-bg: transparent !default;\n\n$table-th-font-weight: null !default;\n\n$table-striped-color: $table-color !default;\n$table-striped-bg-factor: .05 !default;\n$table-striped-bg: rgba($black, $table-striped-bg-factor) !default;\n\n$table-active-color: $table-color !default;\n$table-active-bg-factor: .1 !default;\n$table-active-bg: rgba($black, $table-active-bg-factor) !default;\n\n$table-hover-color: $table-color !default;\n$table-hover-bg-factor: .075 !default;\n$table-hover-bg: rgba($black, $table-hover-bg-factor) !default;\n\n$table-border-factor: .1 !default;\n$table-border-width: var(--#{$prefix}border-width) !default;\n$table-border-color: var(--#{$prefix}border-color) !default;\n\n$table-striped-order: odd !default;\n$table-striped-columns-order: even !default;\n\n$table-group-separator-color: currentcolor !default;\n\n$table-caption-color: $text-muted !default;\n\n$table-bg-scale: -80% !default;\n// scss-docs-end table-variables\n\n// scss-docs-start table-loop\n$table-variants: (\n \"primary\": shift-color($primary, $table-bg-scale),\n \"secondary\": shift-color($secondary, $table-bg-scale),\n \"success\": shift-color($success, $table-bg-scale),\n \"info\": shift-color($info, $table-bg-scale),\n \"warning\": shift-color($warning, $table-bg-scale),\n \"danger\": shift-color($danger, $table-bg-scale),\n \"light\": $light,\n \"dark\": $dark,\n) !default;\n// scss-docs-end table-loop\n\n\n// Buttons + Forms\n//\n// Shared variables that are reassigned to `$input-` and `$btn-` specific variables.\n\n// scss-docs-start input-btn-variables\n$input-btn-padding-y: .375rem !default;\n$input-btn-padding-x: .75rem !default;\n$input-btn-font-family: null !default;\n$input-btn-font-size: $font-size-base !default;\n$input-btn-line-height: $line-height-base !default;\n\n$input-btn-focus-width: .25rem !default;\n$input-btn-focus-color-opacity: .25 !default;\n$input-btn-focus-color: rgba($component-active-bg, $input-btn-focus-color-opacity) !default;\n$input-btn-focus-blur: 0 !default;\n$input-btn-focus-box-shadow: 0 0 $input-btn-focus-blur $input-btn-focus-width $input-btn-focus-color !default;\n\n$input-btn-padding-y-sm: .25rem !default;\n$input-btn-padding-x-sm: .5rem !default;\n$input-btn-font-size-sm: $font-size-sm !default;\n\n$input-btn-padding-y-lg: .5rem !default;\n$input-btn-padding-x-lg: 1rem !default;\n$input-btn-font-size-lg: $font-size-lg !default;\n\n$input-btn-border-width: var(--#{$prefix}border-width) !default;\n// scss-docs-end input-btn-variables\n\n\n// Buttons\n//\n// For each of Bootstrap's buttons, define text, background, and border color.\n\n// scss-docs-start btn-variables\n$btn-padding-y: $input-btn-padding-y !default;\n$btn-padding-x: $input-btn-padding-x !default;\n$btn-font-family: $input-btn-font-family !default;\n$btn-font-size: $input-btn-font-size !default;\n$btn-line-height: $input-btn-line-height !default;\n$btn-white-space: null !default; // Set to `nowrap` to prevent text wrapping\n\n$btn-padding-y-sm: $input-btn-padding-y-sm !default;\n$btn-padding-x-sm: $input-btn-padding-x-sm !default;\n$btn-font-size-sm: $input-btn-font-size-sm !default;\n\n$btn-padding-y-lg: $input-btn-padding-y-lg !default;\n$btn-padding-x-lg: $input-btn-padding-x-lg !default;\n$btn-font-size-lg: $input-btn-font-size-lg !default;\n\n$btn-border-width: $input-btn-border-width !default;\n\n$btn-font-weight: $font-weight-normal !default;\n$btn-box-shadow: inset 0 1px 0 rgba($white, .15), 0 1px 1px rgba($black, .075) !default;\n$btn-focus-width: $input-btn-focus-width !default;\n$btn-focus-box-shadow: $input-btn-focus-box-shadow !default;\n$btn-disabled-opacity: .65 !default;\n$btn-active-box-shadow: inset 0 3px 5px rgba($black, .125) !default;\n\n$btn-link-color: var(--#{$prefix}link-color) !default;\n$btn-link-hover-color: var(--#{$prefix}link-hover-color) !default;\n$btn-link-disabled-color: $gray-600 !default;\n\n// Allows for customizing button radius independently from global border radius\n$btn-border-radius: $border-radius !default;\n$btn-border-radius-sm: $border-radius-sm !default;\n$btn-border-radius-lg: $border-radius-lg !default;\n\n$btn-transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n\n$btn-hover-bg-shade-amount: 15% !default;\n$btn-hover-bg-tint-amount: 15% !default;\n$btn-hover-border-shade-amount: 20% !default;\n$btn-hover-border-tint-amount: 10% !default;\n$btn-active-bg-shade-amount: 20% !default;\n$btn-active-bg-tint-amount: 20% !default;\n$btn-active-border-shade-amount: 25% !default;\n$btn-active-border-tint-amount: 10% !default;\n// scss-docs-end btn-variables\n\n\n// Forms\n\n// scss-docs-start form-text-variables\n$form-text-margin-top: .25rem !default;\n$form-text-font-size: $small-font-size !default;\n$form-text-font-style: null !default;\n$form-text-font-weight: null !default;\n$form-text-color: $text-muted !default;\n// scss-docs-end form-text-variables\n\n// scss-docs-start form-label-variables\n$form-label-margin-bottom: .5rem !default;\n$form-label-font-size: null !default;\n$form-label-font-style: null !default;\n$form-label-font-weight: null !default;\n$form-label-color: null !default;\n// scss-docs-end form-label-variables\n\n// scss-docs-start form-input-variables\n$input-padding-y: $input-btn-padding-y !default;\n$input-padding-x: $input-btn-padding-x !default;\n$input-font-family: $input-btn-font-family !default;\n$input-font-size: $input-btn-font-size !default;\n$input-font-weight: $font-weight-base !default;\n$input-line-height: $input-btn-line-height !default;\n\n$input-padding-y-sm: $input-btn-padding-y-sm !default;\n$input-padding-x-sm: $input-btn-padding-x-sm !default;\n$input-font-size-sm: $input-btn-font-size-sm !default;\n\n$input-padding-y-lg: $input-btn-padding-y-lg !default;\n$input-padding-x-lg: $input-btn-padding-x-lg !default;\n$input-font-size-lg: $input-btn-font-size-lg !default;\n\n$input-bg: var(--#{$prefix}form-control-bg) !default;\n$input-disabled-color: null !default;\n$input-disabled-bg: var(--#{$prefix}form-control-disabled-bg) !default;\n$input-disabled-border-color: null !default;\n\n$input-color: var(--#{$prefix}body-color) !default;\n$input-border-color: var(--#{$prefix}border-color) !default; //$gray-400\n$input-border-width: $input-btn-border-width !default;\n$input-box-shadow: $box-shadow-inset !default;\n\n$input-border-radius: $border-radius !default;\n$input-border-radius-sm: $border-radius-sm !default;\n$input-border-radius-lg: $border-radius-lg !default;\n\n$input-focus-bg: $input-bg !default;\n$input-focus-border-color: tint-color($component-active-bg, 50%) !default;\n$input-focus-color: $input-color !default;\n$input-focus-width: $input-btn-focus-width !default;\n$input-focus-box-shadow: $input-btn-focus-box-shadow !default;\n\n$input-placeholder-color: var(--#{$prefix}secondary-color) !default;\n$input-plaintext-color: var(--#{$prefix}body-color) !default;\n\n$input-height-border: calc($input-border-width * 2) !default; // stylelint-disable-line function-disallowed-list\n\n$input-height-inner: add($input-line-height * 1em, $input-padding-y * 2) !default;\n$input-height-inner-half: add($input-line-height * .5em, $input-padding-y) !default;\n$input-height-inner-quarter: add($input-line-height * .25em, $input-padding-y * .5) !default;\n\n$input-height: add($input-line-height * 1em, add($input-padding-y * 2, $input-height-border, false)) !default;\n$input-height-sm: add($input-line-height * 1em, add($input-padding-y-sm * 2, $input-height-border, false)) !default;\n$input-height-lg: add($input-line-height * 1em, add($input-padding-y-lg * 2, $input-height-border, false)) !default;\n\n$input-transition: border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n\n$form-color-width: 3rem !default;\n// scss-docs-end form-input-variables\n\n// scss-docs-start form-check-variables\n$form-check-input-width: 1em !default;\n$form-check-min-height: $font-size-base * $line-height-base !default;\n$form-check-padding-start: $form-check-input-width + .5em !default;\n$form-check-margin-bottom: .125rem !default;\n$form-check-label-color: null !default;\n$form-check-label-cursor: null !default;\n$form-check-transition: null !default;\n\n$form-check-input-active-filter: brightness(90%) !default;\n\n$form-check-input-bg: $input-bg !default;\n$form-check-input-border: var(--#{$prefix}border-width) solid var(--#{$prefix}border-color) !default;\n$form-check-input-border-radius: .25em !default;\n$form-check-radio-border-radius: 50% !default;\n$form-check-input-focus-border: $input-focus-border-color !default;\n$form-check-input-focus-box-shadow: $input-btn-focus-box-shadow !default;\n\n$form-check-input-checked-color: $component-active-color !default;\n$form-check-input-checked-bg-color: $component-active-bg !default;\n$form-check-input-checked-border-color: $form-check-input-checked-bg-color !default;\n$form-check-input-checked-bg-image: url(\"data:image/svg+xml,\") !default;\n$form-check-radio-checked-bg-image: url(\"data:image/svg+xml,\") !default;\n\n$form-check-input-indeterminate-color: $component-active-color !default;\n$form-check-input-indeterminate-bg-color: $component-active-bg !default;\n$form-check-input-indeterminate-border-color: $form-check-input-indeterminate-bg-color !default;\n$form-check-input-indeterminate-bg-image: url(\"data:image/svg+xml,\") !default;\n\n$form-check-input-disabled-opacity: .5 !default;\n$form-check-label-disabled-opacity: $form-check-input-disabled-opacity !default;\n$form-check-btn-check-disabled-opacity: $btn-disabled-opacity !default;\n\n$form-check-inline-margin-end: 1rem !default;\n// scss-docs-end form-check-variables\n\n// scss-docs-start form-switch-variables\n$form-switch-color: rgba($black, .25) !default;\n$form-switch-width: 2em !default;\n$form-switch-padding-start: $form-switch-width + .5em !default;\n$form-switch-bg-image: url(\"data:image/svg+xml,\") !default;\n$form-switch-border-radius: $form-switch-width !default;\n$form-switch-transition: background-position .15s ease-in-out !default;\n\n$form-switch-focus-color: $input-focus-border-color !default;\n$form-switch-focus-bg-image: url(\"data:image/svg+xml,\") !default;\n\n$form-switch-checked-color: $component-active-color !default;\n$form-switch-checked-bg-image: url(\"data:image/svg+xml,\") !default;\n$form-switch-checked-bg-position: right center !default;\n// scss-docs-end form-switch-variables\n\n// scss-docs-start input-group-variables\n$input-group-addon-padding-y: $input-padding-y !default;\n$input-group-addon-padding-x: $input-padding-x !default;\n$input-group-addon-font-weight: $input-font-weight !default;\n$input-group-addon-color: $input-color !default;\n$input-group-addon-bg: var(--#{$prefix}tertiary-bg) !default;\n$input-group-addon-border-color: $input-border-color !default;\n// scss-docs-end input-group-variables\n\n// scss-docs-start form-select-variables\n$form-select-padding-y: $input-padding-y !default;\n$form-select-padding-x: $input-padding-x !default;\n$form-select-font-family: $input-font-family !default;\n$form-select-font-size: $input-font-size !default;\n$form-select-indicator-padding: $form-select-padding-x * 3 !default; // Extra padding for background-image\n$form-select-font-weight: $input-font-weight !default;\n$form-select-line-height: $input-line-height !default;\n$form-select-color: $input-color !default;\n$form-select-bg: $input-bg !default;\n$form-select-disabled-color: null !default;\n$form-select-disabled-bg: $input-disabled-bg !default;\n$form-select-disabled-border-color: $input-disabled-border-color !default;\n$form-select-bg-position: right $form-select-padding-x center !default;\n$form-select-bg-size: 16px 12px !default; // In pixels because image dimensions\n$form-select-indicator-color: $gray-800 !default;\n$form-select-indicator: url(\"data:image/svg+xml,\") !default;\n\n$form-select-feedback-icon-padding-end: $form-select-padding-x * 2.5 + $form-select-indicator-padding !default;\n$form-select-feedback-icon-position: center right $form-select-indicator-padding !default;\n$form-select-feedback-icon-size: $input-height-inner-half $input-height-inner-half !default;\n\n$form-select-border-width: $input-border-width !default;\n$form-select-border-color: $input-border-color !default;\n$form-select-border-radius: $input-border-radius !default;\n$form-select-box-shadow: $box-shadow-inset !default;\n\n$form-select-focus-border-color: $input-focus-border-color !default;\n$form-select-focus-width: $input-focus-width !default;\n$form-select-focus-box-shadow: 0 0 0 $form-select-focus-width $input-btn-focus-color !default;\n\n$form-select-padding-y-sm: $input-padding-y-sm !default;\n$form-select-padding-x-sm: $input-padding-x-sm !default;\n$form-select-font-size-sm: $input-font-size-sm !default;\n$form-select-border-radius-sm: $input-border-radius-sm !default;\n\n$form-select-padding-y-lg: $input-padding-y-lg !default;\n$form-select-padding-x-lg: $input-padding-x-lg !default;\n$form-select-font-size-lg: $input-font-size-lg !default;\n$form-select-border-radius-lg: $input-border-radius-lg !default;\n\n$form-select-transition: $input-transition !default;\n// scss-docs-end form-select-variables\n\n// scss-docs-start form-range-variables\n$form-range-track-width: 100% !default;\n$form-range-track-height: .5rem !default;\n$form-range-track-cursor: pointer !default;\n$form-range-track-bg: var(--#{$prefix}tertiary-bg) !default;\n$form-range-track-border-radius: 1rem !default;\n$form-range-track-box-shadow: $box-shadow-inset !default;\n\n$form-range-thumb-width: 1rem !default;\n$form-range-thumb-height: $form-range-thumb-width !default;\n$form-range-thumb-bg: $component-active-bg !default;\n$form-range-thumb-border: 0 !default;\n$form-range-thumb-border-radius: 1rem !default;\n$form-range-thumb-box-shadow: 0 .1rem .25rem rgba($black, .1) !default;\n$form-range-thumb-focus-box-shadow: 0 0 0 1px $body-bg, $input-focus-box-shadow !default;\n$form-range-thumb-focus-box-shadow-width: $input-focus-width !default; // For focus box shadow issue in Edge\n$form-range-thumb-active-bg: tint-color($component-active-bg, 70%) !default;\n$form-range-thumb-disabled-bg: var(--#{$prefix}secondary-color) !default;\n$form-range-thumb-transition: background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n// scss-docs-end form-range-variables\n\n// scss-docs-start form-file-variables\n$form-file-button-color: $input-color !default;\n$form-file-button-bg: var(--#{$prefix}tertiary-bg) !default;\n$form-file-button-hover-bg: var(--#{$prefix}secondary-bg) !default;\n// scss-docs-end form-file-variables\n\n// scss-docs-start form-floating-variables\n$form-floating-height: add(3.5rem, $input-height-border) !default;\n$form-floating-line-height: 1.25 !default;\n$form-floating-padding-x: $input-padding-x !default;\n$form-floating-padding-y: 1rem !default;\n$form-floating-input-padding-t: 1.625rem !default;\n$form-floating-input-padding-b: .625rem !default;\n$form-floating-label-height: 1.875em !default;\n$form-floating-label-opacity: .65 !default;\n$form-floating-label-transform: scale(.85) translateY(-.5rem) translateX(.15rem) !default;\n$form-floating-label-disabled-color: $gray-600 !default;\n$form-floating-transition: opacity .1s ease-in-out, transform .1s ease-in-out !default;\n// scss-docs-end form-floating-variables\n\n// Form validation\n\n// scss-docs-start form-feedback-variables\n$form-feedback-margin-top: $form-text-margin-top !default;\n$form-feedback-font-size: $form-text-font-size !default;\n$form-feedback-font-style: $form-text-font-style !default;\n$form-feedback-valid-color: $success !default;\n$form-feedback-invalid-color: $danger !default;\n\n$form-feedback-icon-valid-color: $form-feedback-valid-color !default;\n$form-feedback-icon-valid: url(\"data:image/svg+xml,\") !default;\n$form-feedback-icon-invalid-color: $form-feedback-invalid-color !default;\n$form-feedback-icon-invalid: url(\"data:image/svg+xml,\") !default;\n// scss-docs-end form-feedback-variables\n\n// scss-docs-start form-validation-states\n$form-validation-states: (\n \"valid\": (\n \"color\": var(--#{$prefix}success-text),\n \"icon\": $form-feedback-icon-valid,\n \"tooltip-color\": #fff,\n \"tooltip-bg-color\": var(--#{$prefix}success),\n \"focus-box-shadow\": 0 0 $input-btn-focus-blur $input-focus-width rgba(var(--#{$prefix}success-rgb), $input-btn-focus-color-opacity),\n \"border-color\": var(--#{$prefix}success),\n ),\n \"invalid\": (\n \"color\": var(--#{$prefix}danger-text),\n \"icon\": $form-feedback-icon-invalid,\n \"tooltip-color\": #fff,\n \"tooltip-bg-color\": var(--#{$prefix}danger),\n \"focus-box-shadow\": 0 0 $input-btn-focus-blur $input-focus-width rgba(var(--#{$prefix}danger-rgb), $input-btn-focus-color-opacity),\n \"border-color\": var(--#{$prefix}danger),\n )\n) !default;\n// scss-docs-end form-validation-states\n\n// Z-index master list\n//\n// Warning: Avoid customizing these values. They're used for a bird's eye view\n// of components dependent on the z-axis and are designed to all work together.\n\n// scss-docs-start zindex-stack\n$zindex-dropdown: 1000 !default;\n$zindex-sticky: 1020 !default;\n$zindex-fixed: 1030 !default;\n$zindex-offcanvas-backdrop: 1040 !default;\n$zindex-offcanvas: 1045 !default;\n$zindex-modal-backdrop: 1050 !default;\n$zindex-modal: 1055 !default;\n$zindex-popover: 1070 !default;\n$zindex-tooltip: 1080 !default;\n$zindex-toast: 1090 !default;\n// scss-docs-end zindex-stack\n\n// scss-docs-start zindex-levels-map\n$zindex-levels: (\n n1: -1,\n 0: 0,\n 1: 1,\n 2: 2,\n 3: 3\n) !default;\n// scss-docs-end zindex-levels-map\n\n\n// Navs\n\n// scss-docs-start nav-variables\n$nav-link-padding-y: .5rem !default;\n$nav-link-padding-x: 1rem !default;\n$nav-link-font-size: null !default;\n$nav-link-font-weight: null !default;\n$nav-link-color: var(--#{$prefix}link-color) !default;\n$nav-link-hover-color: var(--#{$prefix}link-hover-color) !default;\n$nav-link-transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out !default;\n$nav-link-disabled-color: var(--#{$prefix}secondary-color) !default;\n\n$nav-tabs-border-color: var(--#{$prefix}border-color) !default;\n$nav-tabs-border-width: var(--#{$prefix}border-width) !default;\n$nav-tabs-border-radius: var(--#{$prefix}border-radius) !default;\n$nav-tabs-link-hover-border-color: var(--#{$prefix}secondary-bg) var(--#{$prefix}secondary-bg) $nav-tabs-border-color !default;\n$nav-tabs-link-active-color: var(--#{$prefix}emphasis-color) !default;\n$nav-tabs-link-active-bg: var(--#{$prefix}body-bg) !default;\n$nav-tabs-link-active-border-color: var(--#{$prefix}border-color) var(--#{$prefix}border-color) $nav-tabs-link-active-bg !default;\n\n$nav-pills-border-radius: $border-radius !default;\n$nav-pills-link-active-color: $component-active-color !default;\n$nav-pills-link-active-bg: $component-active-bg !default;\n// scss-docs-end nav-variables\n\n\n// Navbar\n\n// scss-docs-start navbar-variables\n$navbar-padding-y: $spacer * .5 !default;\n$navbar-padding-x: null !default;\n\n$navbar-nav-link-padding-x: .5rem !default;\n\n$navbar-brand-font-size: $font-size-lg !default;\n// Compute the navbar-brand padding-y so the navbar-brand will have the same height as navbar-text and nav-link\n$nav-link-height: $font-size-base * $line-height-base + $nav-link-padding-y * 2 !default;\n$navbar-brand-height: $navbar-brand-font-size * $line-height-base !default;\n$navbar-brand-padding-y: ($nav-link-height - $navbar-brand-height) * .5 !default;\n$navbar-brand-margin-end: 1rem !default;\n\n$navbar-toggler-padding-y: .25rem !default;\n$navbar-toggler-padding-x: .75rem !default;\n$navbar-toggler-font-size: $font-size-lg !default;\n$navbar-toggler-border-radius: $btn-border-radius !default;\n$navbar-toggler-focus-width: $btn-focus-width !default;\n$navbar-toggler-transition: box-shadow .15s ease-in-out !default;\n\n$navbar-light-color: rgba(var(--#{$prefix}emphasis-color-rgb), .65) !default;\n$navbar-light-hover-color: rgba(var(--#{$prefix}emphasis-color-rgb), .8) !default;\n$navbar-light-active-color: rgba(var(--#{$prefix}emphasis-color-rgb), 1) !default;\n$navbar-light-disabled-color: rgba(var(--#{$prefix}emphasis-color-rgb), .3) !default;\n$navbar-light-toggler-icon-bg: url(\"data:image/svg+xml,\") !default;\n$navbar-light-toggler-border-color: rgba(var(--#{$prefix}emphasis-color-rgb), .15) !default;\n$navbar-light-brand-color: $navbar-light-active-color !default;\n$navbar-light-brand-hover-color: $navbar-light-active-color !default;\n// scss-docs-end navbar-variables\n\n// scss-docs-start navbar-dark-variables\n$navbar-dark-color: rgba($white, .55) !default;\n$navbar-dark-hover-color: rgba($white, .75) !default;\n$navbar-dark-active-color: $white !default;\n$navbar-dark-disabled-color: rgba($white, .25) !default;\n$navbar-dark-toggler-icon-bg: url(\"data:image/svg+xml,\") !default;\n$navbar-dark-toggler-border-color: rgba($white, .1) !default;\n$navbar-dark-brand-color: $navbar-dark-active-color !default;\n$navbar-dark-brand-hover-color: $navbar-dark-active-color !default;\n// scss-docs-end navbar-dark-variables\n\n\n// Dropdowns\n//\n// Dropdown menu container and contents.\n\n// scss-docs-start dropdown-variables\n$dropdown-min-width: 10rem !default;\n$dropdown-padding-x: 0 !default;\n$dropdown-padding-y: .5rem !default;\n$dropdown-spacer: .125rem !default;\n$dropdown-font-size: $font-size-base !default;\n$dropdown-color: var(--#{$prefix}body-color) !default;\n$dropdown-bg: var(--#{$prefix}body-bg) !default;\n$dropdown-border-color: var(--#{$prefix}border-color-translucent) !default;\n$dropdown-border-radius: $border-radius !default;\n$dropdown-border-width: var(--#{$prefix}border-width) !default;\n$dropdown-inner-border-radius: calc($dropdown-border-radius - $dropdown-border-width) !default; // stylelint-disable-line function-disallowed-list\n$dropdown-divider-bg: $dropdown-border-color !default;\n$dropdown-divider-margin-y: $spacer * .5 !default;\n$dropdown-box-shadow: $box-shadow !default;\n\n$dropdown-link-color: var(--#{$prefix}body-color) !default;\n$dropdown-link-hover-color: $dropdown-link-color !default;\n$dropdown-link-hover-bg: var(--#{$prefix}tertiary-bg) !default;\n\n$dropdown-link-active-color: $component-active-color !default;\n$dropdown-link-active-bg: $component-active-bg !default;\n\n$dropdown-link-disabled-color: $gray-500 !default;\n\n$dropdown-item-padding-y: $spacer * .25 !default;\n$dropdown-item-padding-x: $spacer !default;\n\n$dropdown-header-color: $gray-600 !default;\n$dropdown-header-padding-x: $dropdown-item-padding-x !default;\n$dropdown-header-padding-y: $dropdown-padding-y !default;\n// fusv-disable\n$dropdown-header-padding: $dropdown-header-padding-y $dropdown-header-padding-x !default; // Deprecated in v5.2.0\n// fusv-enable\n// scss-docs-end dropdown-variables\n\n// scss-docs-start dropdown-dark-variables\n$dropdown-dark-color: $gray-300 !default;\n$dropdown-dark-bg: $gray-800 !default;\n$dropdown-dark-border-color: $dropdown-border-color !default;\n$dropdown-dark-divider-bg: $dropdown-divider-bg !default;\n$dropdown-dark-box-shadow: null !default;\n$dropdown-dark-link-color: $dropdown-dark-color !default;\n$dropdown-dark-link-hover-color: $white !default;\n$dropdown-dark-link-hover-bg: rgba($white, .15) !default;\n$dropdown-dark-link-active-color: $dropdown-link-active-color !default;\n$dropdown-dark-link-active-bg: $dropdown-link-active-bg !default;\n$dropdown-dark-link-disabled-color: $gray-500 !default;\n$dropdown-dark-header-color: $gray-500 !default;\n// scss-docs-end dropdown-dark-variables\n\n\n// Pagination\n\n// scss-docs-start pagination-variables\n$pagination-padding-y: .375rem !default;\n$pagination-padding-x: .75rem !default;\n$pagination-padding-y-sm: .25rem !default;\n$pagination-padding-x-sm: .5rem !default;\n$pagination-padding-y-lg: .75rem !default;\n$pagination-padding-x-lg: 1.5rem !default;\n\n$pagination-font-size: $font-size-base !default;\n\n$pagination-color: var(--#{$prefix}link-color) !default;\n$pagination-bg: var(--#{$prefix}body-bg) !default;\n$pagination-border-radius: var(--#{$prefix}border-radius) !default;\n$pagination-border-width: var(--#{$prefix}border-width) !default;\n$pagination-margin-start: calc($pagination-border-width * -1) !default; // stylelint-disable-line function-disallowed-list\n$pagination-border-color: var(--#{$prefix}border-color) !default;\n\n$pagination-focus-color: var(--#{$prefix}link-hover-color) !default;\n$pagination-focus-bg: var(--#{$prefix}secondary-bg) !default;\n$pagination-focus-box-shadow: $input-btn-focus-box-shadow !default;\n$pagination-focus-outline: 0 !default;\n\n$pagination-hover-color: var(--#{$prefix}link-hover-color) !default;\n$pagination-hover-bg: var(--#{$prefix}tertiary-bg) !default;\n$pagination-hover-border-color: var(--#{$prefix}border-color) !default; // Todo in v6: remove this?\n\n$pagination-active-color: $component-active-color !default;\n$pagination-active-bg: $component-active-bg !default;\n$pagination-active-border-color: $component-active-bg !default;\n\n$pagination-disabled-color: var(--#{$prefix}secondary-color) !default;\n$pagination-disabled-bg: var(--#{$prefix}secondary-bg) !default;\n$pagination-disabled-border-color: var(--#{$prefix}border-color) !default;\n\n$pagination-transition: color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;\n\n$pagination-border-radius-sm: $border-radius-sm !default;\n$pagination-border-radius-lg: $border-radius-lg !default;\n// scss-docs-end pagination-variables\n\n\n// Placeholders\n\n// scss-docs-start placeholders\n$placeholder-opacity-max: .5 !default;\n$placeholder-opacity-min: .2 !default;\n// scss-docs-end placeholders\n\n// Cards\n\n// scss-docs-start card-variables\n$card-spacer-y: $spacer !default;\n$card-spacer-x: $spacer !default;\n$card-title-spacer-y: $spacer * .5 !default;\n$card-title-color: null !default;\n$card-subtitle-color: null !default;\n$card-border-width: var(--#{$prefix}border-width) !default;\n$card-border-color: var(--#{$prefix}border-color-translucent) !default;\n$card-border-radius: var(--#{$prefix}border-radius) !default;\n$card-box-shadow: null !default;\n$card-inner-border-radius: subtract($card-border-radius, $card-border-width) !default;\n$card-cap-padding-y: $card-spacer-y * .5 !default;\n$card-cap-padding-x: $card-spacer-x !default;\n$card-cap-bg: rgba(var(--#{$prefix}body-color-rgb), .03) !default;\n$card-cap-color: null !default;\n$card-height: null !default;\n$card-color: null !default;\n$card-bg: var(--#{$prefix}body-bg) !default;\n$card-img-overlay-padding: $spacer !default;\n$card-group-margin: $grid-gutter-width * .5 !default;\n// scss-docs-end card-variables\n\n// Accordion\n\n// scss-docs-start accordion-variables\n$accordion-padding-y: 1rem !default;\n$accordion-padding-x: 1.25rem !default;\n$accordion-color: var(--#{$prefix}body-color) !default; // Sass variable because of $accordion-button-icon\n$accordion-bg: var(--#{$prefix}body-bg) !default;\n$accordion-border-width: var(--#{$prefix}border-width) !default;\n$accordion-border-color: var(--#{$prefix}border-color) !default;\n$accordion-border-radius: var(--#{$prefix}border-radius) !default;\n$accordion-inner-border-radius: subtract($accordion-border-radius, $accordion-border-width) !default;\n\n$accordion-body-padding-y: $accordion-padding-y !default;\n$accordion-body-padding-x: $accordion-padding-x !default;\n\n$accordion-button-padding-y: $accordion-padding-y !default;\n$accordion-button-padding-x: $accordion-padding-x !default;\n$accordion-button-color: var(--#{$prefix}body-color) !default;\n$accordion-button-bg: var(--#{$prefix}accordion-bg) !default;\n$accordion-transition: $btn-transition, border-radius .15s ease !default;\n$accordion-button-active-bg: var(--#{$prefix}primary-bg-subtle) !default;\n$accordion-button-active-color: var(--#{$prefix}primary-text) !default;\n\n$accordion-button-focus-border-color: $input-focus-border-color !default;\n$accordion-button-focus-box-shadow: $btn-focus-box-shadow !default;\n\n$accordion-icon-width: 1.25rem !default;\n$accordion-icon-color: $body-color !default;\n$accordion-icon-active-color: $primary-text !default;\n$accordion-icon-transition: transform .2s ease-in-out !default;\n$accordion-icon-transform: rotate(-180deg) !default;\n\n$accordion-button-icon: url(\"data:image/svg+xml,\") !default;\n$accordion-button-active-icon: url(\"data:image/svg+xml,\") !default;\n// scss-docs-end accordion-variables\n\n// Tooltips\n\n// scss-docs-start tooltip-variables\n$tooltip-font-size: $font-size-sm !default;\n$tooltip-max-width: 200px !default;\n$tooltip-color: var(--#{$prefix}body-bg) !default;\n$tooltip-bg: var(--#{$prefix}emphasis-color) !default;\n$tooltip-border-radius: var(--#{$prefix}border-radius) !default;\n$tooltip-opacity: .9 !default;\n$tooltip-padding-y: $spacer * .25 !default;\n$tooltip-padding-x: $spacer * .5 !default;\n$tooltip-margin: null !default; // TODO: remove this in v6\n\n$tooltip-arrow-width: .8rem !default;\n$tooltip-arrow-height: .4rem !default;\n// fusv-disable\n$tooltip-arrow-color: null !default; // Deprecated in Bootstrap 5.2.0 for CSS variables\n// fusv-enable\n// scss-docs-end tooltip-variables\n\n// Form tooltips must come after regular tooltips\n// scss-docs-start tooltip-feedback-variables\n$form-feedback-tooltip-padding-y: $tooltip-padding-y !default;\n$form-feedback-tooltip-padding-x: $tooltip-padding-x !default;\n$form-feedback-tooltip-font-size: $tooltip-font-size !default;\n$form-feedback-tooltip-line-height: null !default;\n$form-feedback-tooltip-opacity: $tooltip-opacity !default;\n$form-feedback-tooltip-border-radius: $tooltip-border-radius !default;\n// scss-docs-end tooltip-feedback-variables\n\n\n// Popovers\n\n// scss-docs-start popover-variables\n$popover-font-size: $font-size-sm !default;\n$popover-bg: var(--#{$prefix}body-bg) !default;\n$popover-max-width: 276px !default;\n$popover-border-width: var(--#{$prefix}border-width) !default;\n$popover-border-color: var(--#{$prefix}border-color-translucent) !default;\n$popover-border-radius: var(--#{$prefix}border-radius-lg) !default;\n$popover-inner-border-radius: calc($popover-border-radius - $popover-border-width) !default; // stylelint-disable-line function-disallowed-list\n$popover-box-shadow: $box-shadow !default;\n\n$popover-header-font-size: $font-size-base !default;\n$popover-header-bg: var(--#{$prefix}secondary-bg) !default;\n$popover-header-color: $headings-color !default;\n$popover-header-padding-y: .5rem !default;\n$popover-header-padding-x: $spacer !default;\n\n$popover-body-color: var(--#{$prefix}body-color) !default;\n$popover-body-padding-y: $spacer !default;\n$popover-body-padding-x: $spacer !default;\n\n$popover-arrow-width: 1rem !default;\n$popover-arrow-height: .5rem !default;\n// scss-docs-end popover-variables\n\n// fusv-disable\n// Deprecated in Bootstrap 5.2.0 for CSS variables\n$popover-arrow-color: $popover-bg !default;\n$popover-arrow-outer-color: var(--#{$prefix}border-color-translucent) !default;\n// fusv-enable\n\n\n// Toasts\n\n// scss-docs-start toast-variables\n$toast-max-width: 350px !default;\n$toast-padding-x: .75rem !default;\n$toast-padding-y: .5rem !default;\n$toast-font-size: .875rem !default;\n$toast-color: null !default;\n$toast-background-color: rgba(var(--#{$prefix}body-bg-rgb), .85) !default;\n$toast-border-width: var(--#{$prefix}border-width) !default;\n$toast-border-color: var(--#{$prefix}border-color-translucent) !default;\n$toast-border-radius: var(--#{$prefix}border-radius) !default;\n$toast-box-shadow: var(--#{$prefix}box-shadow) !default;\n$toast-spacing: $container-padding-x !default;\n\n$toast-header-color: var(--#{$prefix}secondary-color) !default;\n$toast-header-background-color: rgba(var(--#{$prefix}body-bg-rgb), .85) !default;\n$toast-header-border-color: $toast-border-color !default;\n// scss-docs-end toast-variables\n\n\n// Badges\n\n// scss-docs-start badge-variables\n$badge-font-size: .75em !default;\n$badge-font-weight: $font-weight-bold !default;\n$badge-color: $white !default;\n$badge-padding-y: .35em !default;\n$badge-padding-x: .65em !default;\n$badge-border-radius: $border-radius !default;\n// scss-docs-end badge-variables\n\n\n// Modals\n\n// scss-docs-start modal-variables\n$modal-inner-padding: $spacer !default;\n\n$modal-footer-margin-between: .5rem !default;\n\n$modal-dialog-margin: .5rem !default;\n$modal-dialog-margin-y-sm-up: 1.75rem !default;\n\n$modal-title-line-height: $line-height-base !default;\n\n$modal-content-color: null !default;\n$modal-content-bg: var(--#{$prefix}body-bg) !default;\n$modal-content-border-color: var(--#{$prefix}border-color-translucent) !default;\n$modal-content-border-width: var(--#{$prefix}border-width) !default;\n$modal-content-border-radius: var(--#{$prefix}border-radius-lg) !default;\n$modal-content-inner-border-radius: subtract($modal-content-border-radius, $modal-content-border-width) !default;\n$modal-content-box-shadow-xs: $box-shadow-sm !default;\n$modal-content-box-shadow-sm-up: $box-shadow !default;\n\n$modal-backdrop-bg: $black !default;\n$modal-backdrop-opacity: .5 !default;\n\n$modal-header-border-color: var(--#{$prefix}border-color) !default;\n$modal-header-border-width: $modal-content-border-width !default;\n$modal-header-padding-y: $modal-inner-padding !default;\n$modal-header-padding-x: $modal-inner-padding !default;\n$modal-header-padding: $modal-header-padding-y $modal-header-padding-x !default; // Keep this for backwards compatibility\n\n$modal-footer-bg: null !default;\n$modal-footer-border-color: $modal-header-border-color !default;\n$modal-footer-border-width: $modal-header-border-width !default;\n\n$modal-sm: 300px !default;\n$modal-md: 500px !default;\n$modal-lg: 800px !default;\n$modal-xl: 1140px !default;\n\n$modal-fade-transform: translate(0, -50px) !default;\n$modal-show-transform: none !default;\n$modal-transition: transform .3s ease-out !default;\n$modal-scale-transform: scale(1.02) !default;\n// scss-docs-end modal-variables\n\n\n// Alerts\n//\n// Define alert colors, border radius, and padding.\n\n// scss-docs-start alert-variables\n$alert-padding-y: $spacer !default;\n$alert-padding-x: $spacer !default;\n$alert-margin-bottom: 1rem !default;\n$alert-border-radius: $border-radius !default;\n$alert-link-font-weight: $font-weight-bold !default;\n$alert-border-width: var(--#{$prefix}border-width) !default;\n$alert-bg-scale: -80% !default;\n$alert-border-scale: -70% !default;\n$alert-color-scale: 40% !default;\n$alert-dismissible-padding-r: $alert-padding-x * 3 !default; // 3x covers width of x plus default padding on either side\n// scss-docs-end alert-variables\n\n// fusv-disable\n$alert-bg-scale: -80% !default; // Deprecated in v5.2.0, to be removed in v6\n$alert-border-scale: -70% !default; // Deprecated in v5.2.0, to be removed in v6\n$alert-color-scale: 40% !default; // Deprecated in v5.2.0, to be removed in v6\n// fusv-enable\n\n// Progress bars\n\n// scss-docs-start progress-variables\n$progress-height: 1rem !default;\n$progress-font-size: $font-size-base * .75 !default;\n$progress-bg: var(--#{$prefix}secondary-bg) !default;\n$progress-border-radius: var(--#{$prefix}border-radius) !default;\n$progress-box-shadow: var(--#{$prefix}box-shadow-inset) !default;\n$progress-bar-color: $white !default;\n$progress-bar-bg: $primary !default;\n$progress-bar-animation-timing: 1s linear infinite !default;\n$progress-bar-transition: width .6s ease !default;\n// scss-docs-end progress-variables\n\n\n// List group\n\n// scss-docs-start list-group-variables\n$list-group-color: var(--#{$prefix}body-color) !default;\n$list-group-bg: var(--#{$prefix}body-bg) !default;\n$list-group-border-color: var(--#{$prefix}border-color) !default;\n$list-group-border-width: var(--#{$prefix}border-width) !default;\n$list-group-border-radius: var(--#{$prefix}border-radius) !default;\n\n$list-group-item-padding-y: $spacer * .5 !default;\n$list-group-item-padding-x: $spacer !default;\n// fusv-disable\n$list-group-item-bg-scale: -80% !default; // Deprecated in v5.3.0\n$list-group-item-color-scale: 40% !default; // Deprecated in v5.3.0\n// fusv-enable\n\n$list-group-hover-bg: var(--#{$prefix}tertiary-bg) !default;\n$list-group-active-color: $component-active-color !default;\n$list-group-active-bg: $component-active-bg !default;\n$list-group-active-border-color: $list-group-active-bg !default;\n\n$list-group-disabled-color: var(--#{$prefix}secondary-color) !default;\n$list-group-disabled-bg: $list-group-bg !default;\n\n$list-group-action-color: var(--#{$prefix}secondary-color) !default;\n$list-group-action-hover-color: var(--#{$prefix}emphasis-color) !default;\n\n$list-group-action-active-color: var(--#{$prefix}body-color) !default;\n$list-group-action-active-bg: var(--#{$prefix}secondary-bg) !default;\n// scss-docs-end list-group-variables\n\n\n// Image thumbnails\n\n// scss-docs-start thumbnail-variables\n$thumbnail-padding: .25rem !default;\n$thumbnail-bg: var(--#{$prefix}body-bg) !default;\n$thumbnail-border-width: var(--#{$prefix}border-width) !default;\n$thumbnail-border-color: var(--#{$prefix}border-color) !default;\n$thumbnail-border-radius: var(--#{$prefix}border-radius) !default;\n$thumbnail-box-shadow: var(--#{$prefix}box-shadow-sm) !default;\n// scss-docs-end thumbnail-variables\n\n\n// Figures\n\n// scss-docs-start figure-variables\n$figure-caption-font-size: $small-font-size !default;\n$figure-caption-color: var(--#{$prefix}secondary-color) !default;\n// scss-docs-end figure-variables\n\n\n// Breadcrumbs\n\n// scss-docs-start breadcrumb-variables\n$breadcrumb-font-size: null !default;\n$breadcrumb-padding-y: 0 !default;\n$breadcrumb-padding-x: 0 !default;\n$breadcrumb-item-padding-x: .5rem !default;\n$breadcrumb-margin-bottom: 1rem !default;\n$breadcrumb-bg: null !default;\n$breadcrumb-divider-color: var(--#{$prefix}secondary-color) !default;\n$breadcrumb-active-color: var(--#{$prefix}secondary-color) !default;\n$breadcrumb-divider: quote(\"/\") !default;\n$breadcrumb-divider-flipped: $breadcrumb-divider !default;\n$breadcrumb-border-radius: null !default;\n// scss-docs-end breadcrumb-variables\n\n// Carousel\n\n// scss-docs-start carousel-variables\n$carousel-control-color: $white !default;\n$carousel-control-width: 15% !default;\n$carousel-control-opacity: .5 !default;\n$carousel-control-hover-opacity: .9 !default;\n$carousel-control-transition: opacity .15s ease !default;\n\n$carousel-indicator-width: 30px !default;\n$carousel-indicator-height: 3px !default;\n$carousel-indicator-hit-area-height: 10px !default;\n$carousel-indicator-spacer: 3px !default;\n$carousel-indicator-opacity: .5 !default;\n$carousel-indicator-active-bg: $white !default;\n$carousel-indicator-active-opacity: 1 !default;\n$carousel-indicator-transition: opacity .6s ease !default;\n\n$carousel-caption-width: 70% !default;\n$carousel-caption-color: $white !default;\n$carousel-caption-padding-y: 1.25rem !default;\n$carousel-caption-spacer: 1.25rem !default;\n\n$carousel-control-icon-width: 2rem !default;\n\n$carousel-control-prev-icon-bg: url(\"data:image/svg+xml,\") !default;\n$carousel-control-next-icon-bg: url(\"data:image/svg+xml,\") !default;\n\n$carousel-transition-duration: .6s !default;\n$carousel-transition: transform $carousel-transition-duration ease-in-out !default; // Define transform transition first if using multiple transitions (e.g., `transform 2s ease, opacity .5s ease-out`)\n// scss-docs-end carousel-variables\n\n// scss-docs-start carousel-dark-variables\n$carousel-dark-indicator-active-bg: $black !default;\n$carousel-dark-caption-color: $black !default;\n$carousel-dark-control-icon-filter: invert(1) grayscale(100) !default;\n// scss-docs-end carousel-dark-variables\n\n\n// Spinners\n\n// scss-docs-start spinner-variables\n$spinner-width: 2rem !default;\n$spinner-height: $spinner-width !default;\n$spinner-vertical-align: -.125em !default;\n$spinner-border-width: .25em !default;\n$spinner-animation-speed: .75s !default;\n\n$spinner-width-sm: 1rem !default;\n$spinner-height-sm: $spinner-width-sm !default;\n$spinner-border-width-sm: .2em !default;\n// scss-docs-end spinner-variables\n\n\n// Close\n\n// scss-docs-start close-variables\n$btn-close-width: 1em !default;\n$btn-close-height: $btn-close-width !default;\n$btn-close-padding-x: .25em !default;\n$btn-close-padding-y: $btn-close-padding-x !default;\n$btn-close-color: $black !default;\n$btn-close-bg: url(\"data:image/svg+xml,\") !default;\n$btn-close-focus-shadow: $input-btn-focus-box-shadow !default;\n$btn-close-opacity: .5 !default;\n$btn-close-hover-opacity: .75 !default;\n$btn-close-focus-opacity: 1 !default;\n$btn-close-disabled-opacity: .25 !default;\n$btn-close-white-filter: invert(1) grayscale(100%) brightness(200%) !default;\n// scss-docs-end close-variables\n\n\n// Offcanvas\n\n// scss-docs-start offcanvas-variables\n$offcanvas-padding-y: $modal-inner-padding !default;\n$offcanvas-padding-x: $modal-inner-padding !default;\n$offcanvas-horizontal-width: 400px !default;\n$offcanvas-vertical-height: 30vh !default;\n$offcanvas-transition-duration: .3s !default;\n$offcanvas-border-color: $modal-content-border-color !default;\n$offcanvas-border-width: $modal-content-border-width !default;\n$offcanvas-title-line-height: $modal-title-line-height !default;\n$offcanvas-bg-color: var(--#{$prefix}body-bg) !default;\n$offcanvas-color: var(--#{$prefix}body-color) !default;\n$offcanvas-box-shadow: $modal-content-box-shadow-xs !default;\n$offcanvas-backdrop-bg: $modal-backdrop-bg !default;\n$offcanvas-backdrop-opacity: $modal-backdrop-opacity !default;\n// scss-docs-end offcanvas-variables\n\n// Code\n\n$code-font-size: $small-font-size !default;\n$code-color: $pink !default;\n\n$kbd-padding-y: .1875rem !default;\n$kbd-padding-x: .375rem !default;\n$kbd-font-size: $code-font-size !default;\n$kbd-color: var(--#{$prefix}body-bg) !default;\n$kbd-bg: var(--#{$prefix}body-color) !default;\n$nested-kbd-font-weight: null !default; // Deprecated in v5.2.0, removing in v6\n\n$pre-color: null !default;\n","// Row\n//\n// Rows contain your columns.\n\n@if $enable-grid-classes {\n .row {\n @include make-row();\n\n > * {\n @include make-col-ready();\n }\n }\n}\n\n@if $enable-cssgrid {\n .grid {\n display: grid;\n grid-template-rows: repeat(var(--#{$prefix}rows, 1), 1fr);\n grid-template-columns: repeat(var(--#{$prefix}columns, #{$grid-columns}), 1fr);\n gap: var(--#{$prefix}gap, #{$grid-gutter-width});\n\n @include make-cssgrid();\n }\n}\n\n\n// Columns\n//\n// Common styles for small and large grid columns\n\n@if $enable-grid-classes {\n @include make-grid-columns();\n}\n","// Grid system\n//\n// Generate semantic grid columns with these mixins.\n\n@mixin make-row($gutter: $grid-gutter-width) {\n --#{$prefix}gutter-x: #{$gutter};\n --#{$prefix}gutter-y: 0;\n display: flex;\n flex-wrap: wrap;\n // TODO: Revisit calc order after https://github.com/react-bootstrap/react-bootstrap/issues/6039 is fixed\n margin-top: calc(-1 * var(--#{$prefix}gutter-y)); // stylelint-disable-line function-disallowed-list\n margin-right: calc(-.5 * var(--#{$prefix}gutter-x)); // stylelint-disable-line function-disallowed-list\n margin-left: calc(-.5 * var(--#{$prefix}gutter-x)); // stylelint-disable-line function-disallowed-list\n}\n\n@mixin make-col-ready() {\n // Add box sizing if only the grid is loaded\n box-sizing: if(variable-exists(include-column-box-sizing) and $include-column-box-sizing, border-box, null);\n // Prevent columns from becoming too narrow when at smaller grid tiers by\n // always setting `width: 100%;`. This works because we set the width\n // later on to override this initial width.\n flex-shrink: 0;\n width: 100%;\n max-width: 100%; // Prevent `.col-auto`, `.col` (& responsive variants) from breaking out the grid\n padding-right: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n padding-left: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n margin-top: var(--#{$prefix}gutter-y);\n}\n\n@mixin make-col($size: false, $columns: $grid-columns) {\n @if $size {\n flex: 0 0 auto;\n width: percentage(divide($size, $columns));\n\n } @else {\n flex: 1 1 0;\n max-width: 100%;\n }\n}\n\n@mixin make-col-auto() {\n flex: 0 0 auto;\n width: auto;\n}\n\n@mixin make-col-offset($size, $columns: $grid-columns) {\n $num: divide($size, $columns);\n margin-left: if($num == 0, 0, percentage($num));\n}\n\n// Row columns\n//\n// Specify on a parent element(e.g., .row) to force immediate children into NN\n// number of columns. Supports wrapping to new lines, but does not do a Masonry\n// style grid.\n@mixin row-cols($count) {\n > * {\n flex: 0 0 auto;\n width: divide(100%, $count);\n }\n}\n\n// Framework grid generation\n//\n// Used only by Bootstrap to generate the correct number of grid classes given\n// any value of `$grid-columns`.\n\n@mixin make-grid-columns($columns: $grid-columns, $gutter: $grid-gutter-width, $breakpoints: $grid-breakpoints) {\n @each $breakpoint in map-keys($breakpoints) {\n $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n @include media-breakpoint-up($breakpoint, $breakpoints) {\n // Provide basic `.col-{bp}` classes for equal-width flexbox columns\n .col#{$infix} {\n flex: 1 0 0%; // Flexbugs #4: https://github.com/philipwalton/flexbugs#flexbug-4\n }\n\n .row-cols#{$infix}-auto > * {\n @include make-col-auto();\n }\n\n @if $grid-row-columns > 0 {\n @for $i from 1 through $grid-row-columns {\n .row-cols#{$infix}-#{$i} {\n @include row-cols($i);\n }\n }\n }\n\n .col#{$infix}-auto {\n @include make-col-auto();\n }\n\n @if $columns > 0 {\n @for $i from 1 through $columns {\n .col#{$infix}-#{$i} {\n @include make-col($i, $columns);\n }\n }\n\n // `$columns - 1` because offsetting by the width of an entire row isn't possible\n @for $i from 0 through ($columns - 1) {\n @if not ($infix == \"\" and $i == 0) { // Avoid emitting useless .offset-0\n .offset#{$infix}-#{$i} {\n @include make-col-offset($i, $columns);\n }\n }\n }\n }\n\n // Gutters\n //\n // Make use of `.g-*`, `.gx-*` or `.gy-*` utilities to change spacing between the columns.\n @each $key, $value in $gutters {\n .g#{$infix}-#{$key},\n .gx#{$infix}-#{$key} {\n --#{$prefix}gutter-x: #{$value};\n }\n\n .g#{$infix}-#{$key},\n .gy#{$infix}-#{$key} {\n --#{$prefix}gutter-y: #{$value};\n }\n }\n }\n }\n}\n\n@mixin make-cssgrid($columns: $grid-columns, $breakpoints: $grid-breakpoints) {\n @each $breakpoint in map-keys($breakpoints) {\n $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n @include media-breakpoint-up($breakpoint, $breakpoints) {\n @if $columns > 0 {\n @for $i from 1 through $columns {\n .g-col#{$infix}-#{$i} {\n grid-column: auto / span $i;\n }\n }\n\n // Start with `1` because `0` is and invalid value.\n // Ends with `$columns - 1` because offsetting by the width of an entire row isn't possible.\n @for $i from 1 through ($columns - 1) {\n .g-start#{$infix}-#{$i} {\n grid-column-start: $i;\n }\n }\n }\n }\n }\n}\n","// Utility generator\n// Used to generate utilities & print utilities\n@mixin generate-utility($utility, $infix, $is-rfs-media-query: false) {\n $values: map-get($utility, values);\n\n // If the values are a list or string, convert it into a map\n @if type-of($values) == \"string\" or type-of(nth($values, 1)) != \"list\" {\n $values: zip($values, $values);\n }\n\n @each $key, $value in $values {\n $properties: map-get($utility, property);\n\n // Multiple properties are possible, for example with vertical or horizontal margins or paddings\n @if type-of($properties) == \"string\" {\n $properties: append((), $properties);\n }\n\n // Use custom class if present\n $property-class: if(map-has-key($utility, class), map-get($utility, class), nth($properties, 1));\n $property-class: if($property-class == null, \"\", $property-class);\n\n // Use custom CSS variable name if present, otherwise default to `class`\n $css-variable-name: if(map-has-key($utility, css-variable-name), map-get($utility, css-variable-name), map-get($utility, class));\n\n // State params to generate pseudo-classes\n $state: if(map-has-key($utility, state), map-get($utility, state), ());\n\n $infix: if($property-class == \"\" and str-slice($infix, 1, 1) == \"-\", str-slice($infix, 2), $infix);\n\n // Don't prefix if value key is null (e.g. with shadow class)\n $property-class-modifier: if($key, if($property-class == \"\" and $infix == \"\", \"\", \"-\") + $key, \"\");\n\n @if map-get($utility, rfs) {\n // Inside the media query\n @if $is-rfs-media-query {\n $val: rfs-value($value);\n\n // Do not render anything if fluid and non fluid values are the same\n $value: if($val == rfs-fluid-value($value), null, $val);\n }\n @else {\n $value: rfs-fluid-value($value);\n }\n }\n\n $is-css-var: map-get($utility, css-var);\n $is-local-vars: map-get($utility, local-vars);\n $is-rtl: map-get($utility, rtl);\n\n @if $value != null {\n @if $is-rtl == false {\n /* rtl:begin:remove */\n }\n\n @if $is-css-var {\n .#{$property-class + $infix + $property-class-modifier} {\n --#{$prefix}#{$css-variable-name}: #{$value};\n }\n\n @each $pseudo in $state {\n .#{$property-class + $infix + $property-class-modifier}-#{$pseudo}:#{$pseudo} {\n --#{$prefix}#{$css-variable-name}: #{$value};\n }\n }\n } @else {\n .#{$property-class + $infix + $property-class-modifier} {\n @each $property in $properties {\n @if $is-local-vars {\n @each $local-var, $variable in $is-local-vars {\n --#{$prefix}#{$local-var}: #{$variable};\n }\n }\n #{$property}: $value if($enable-important-utilities, !important, null);\n }\n }\n\n @each $pseudo in $state {\n .#{$property-class + $infix + $property-class-modifier}-#{$pseudo}:#{$pseudo} {\n @each $property in $properties {\n @if $is-local-vars {\n @each $local-var, $variable in $is-local-vars {\n --#{$prefix}#{$local-var}: #{$variable};\n }\n }\n #{$property}: $value if($enable-important-utilities, !important, null);\n }\n }\n }\n }\n\n @if $is-rtl == false {\n /* rtl:end:remove */\n }\n }\n }\n}\n","// Loop over each breakpoint\n@each $breakpoint in map-keys($grid-breakpoints) {\n\n // Generate media query if needed\n @include media-breakpoint-up($breakpoint) {\n $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n // Loop over each utility property\n @each $key, $utility in $utilities {\n // The utility can be disabled with `false`, thus check if the utility is a map first\n // Only proceed if responsive media queries are enabled or if it's the base media query\n @if type-of($utility) == \"map\" and (map-get($utility, responsive) or $infix == \"\") {\n @include generate-utility($utility, $infix);\n }\n }\n }\n}\n\n// RFS rescaling\n@media (min-width: $rfs-mq-value) {\n @each $breakpoint in map-keys($grid-breakpoints) {\n $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n @if (map-get($grid-breakpoints, $breakpoint) < $rfs-breakpoint) {\n // Loop over each utility property\n @each $key, $utility in $utilities {\n // The utility can be disabled with `false`, thus check if the utility is a map first\n // Only proceed if responsive media queries are enabled or if it's the base media query\n @if type-of($utility) == \"map\" and map-get($utility, rfs) and (map-get($utility, responsive) or $infix == \"\") {\n @include generate-utility($utility, $infix, true);\n }\n }\n }\n }\n}\n\n\n// Print utilities\n@media print {\n @each $key, $utility in $utilities {\n // The utility can be disabled with `false`, thus check if the utility is a map first\n // Then check if the utility needs print styles\n @if type-of($utility) == \"map\" and map-get($utility, print) == true {\n @include generate-utility($utility, \"-print\");\n }\n }\n}\n"]} \ No newline at end of file diff --git a/site/templates/vendors/Bootstrap/css/bootstrap-grid.rtl.min.css b/site/templates/vendors/Bootstrap/css/bootstrap-grid.rtl.min.css deleted file mode 100644 index 25518fa..0000000 --- a/site/templates/vendors/Bootstrap/css/bootstrap-grid.rtl.min.css +++ /dev/null @@ -1,6 +0,0 @@ -/*! - * Bootstrap Grid v5.3.0-alpha1 (https://getbootstrap.com/) - * Copyright 2011-2022 The Bootstrap Authors - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - */:root,[data-bs-theme=light]{--bs-blue:#0d6efd;--bs-indigo:#6610f2;--bs-purple:#6f42c1;--bs-pink:#d63384;--bs-red:#dc3545;--bs-orange:#fd7e14;--bs-yellow:#ffc107;--bs-green:#198754;--bs-teal:#20c997;--bs-cyan:#0dcaf0;--bs-black:#000;--bs-white:#fff;--bs-gray:#6c757d;--bs-gray-dark:#343a40;--bs-gray-100:#f8f9fa;--bs-gray-200:#e9ecef;--bs-gray-300:#dee2e6;--bs-gray-400:#ced4da;--bs-gray-500:#adb5bd;--bs-gray-600:#6c757d;--bs-gray-700:#495057;--bs-gray-800:#343a40;--bs-gray-900:#212529;--bs-primary:#0d6efd;--bs-secondary:#6c757d;--bs-success:#198754;--bs-info:#0dcaf0;--bs-warning:#ffc107;--bs-danger:#dc3545;--bs-light:#f8f9fa;--bs-dark:#212529;--bs-primary-rgb:13,110,253;--bs-secondary-rgb:108,117,125;--bs-success-rgb:25,135,84;--bs-info-rgb:13,202,240;--bs-warning-rgb:255,193,7;--bs-danger-rgb:220,53,69;--bs-light-rgb:248,249,250;--bs-dark-rgb:33,37,41;--bs-primary-text:#0a58ca;--bs-secondary-text:#6c757d;--bs-success-text:#146c43;--bs-info-text:#087990;--bs-warning-text:#997404;--bs-danger-text:#b02a37;--bs-light-text:#6c757d;--bs-dark-text:#495057;--bs-primary-bg-subtle:#cfe2ff;--bs-secondary-bg-subtle:#f8f9fa;--bs-success-bg-subtle:#d1e7dd;--bs-info-bg-subtle:#cff4fc;--bs-warning-bg-subtle:#fff3cd;--bs-danger-bg-subtle:#f8d7da;--bs-light-bg-subtle:#fcfcfd;--bs-dark-bg-subtle:#ced4da;--bs-primary-border-subtle:#9ec5fe;--bs-secondary-border-subtle:#e9ecef;--bs-success-border-subtle:#a3cfbb;--bs-info-border-subtle:#9eeaf9;--bs-warning-border-subtle:#ffe69c;--bs-danger-border-subtle:#f1aeb5;--bs-light-border-subtle:#e9ecef;--bs-dark-border-subtle:#adb5bd;--bs-white-rgb:255,255,255;--bs-black-rgb:0,0,0;--bs-body-color-rgb:33,37,41;--bs-body-bg-rgb:255,255,255;--bs-font-sans-serif:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue","Noto Sans","Liberation Sans",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--bs-font-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--bs-gradient:linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));--bs-body-font-family:var(--bs-font-sans-serif);--bs-body-font-size:1rem;--bs-body-font-weight:400;--bs-body-line-height:1.5;--bs-body-color:#212529;--bs-emphasis-color:#000;--bs-emphasis-color-rgb:0,0,0;--bs-secondary-color:rgba(33, 37, 41, 0.75);--bs-secondary-color-rgb:33,37,41;--bs-secondary-bg:#e9ecef;--bs-secondary-bg-rgb:233,236,239;--bs-tertiary-color:rgba(33, 37, 41, 0.5);--bs-tertiary-color-rgb:33,37,41;--bs-tertiary-bg:#f8f9fa;--bs-tertiary-bg-rgb:248,249,250;--bs-body-bg:#fff;--bs-body-bg-rgb:255,255,255;--bs-link-color:#0d6efd;--bs-link-color-rgb:13,110,253;--bs-link-decoration:underline;--bs-link-hover-color:#0a58ca;--bs-link-hover-color-rgb:10,88,202;--bs-code-color:#d63384;--bs-highlight-bg:#fff3cd;--bs-border-width:1px;--bs-border-style:solid;--bs-border-color:#dee2e6;--bs-border-color-translucent:rgba(0, 0, 0, 0.175);--bs-border-radius:0.375rem;--bs-border-radius-sm:0.25rem;--bs-border-radius-lg:0.5rem;--bs-border-radius-xl:1rem;--bs-border-radius-2xl:2rem;--bs-border-radius-pill:50rem;--bs-box-shadow:0 0.5rem 1rem rgba(var(--bs-body-color-rgb), 0.15);--bs-box-shadow-sm:0 0.125rem 0.25rem rgba(var(--bs-body-color-rgb), 0.075);--bs-box-shadow-lg:0 1rem 3rem rgba(var(--bs-body-color-rgb), 0.175);--bs-box-shadow-inset:inset 0 1px 2px rgba(var(--bs-body-color-rgb), 0.075);--bs-emphasis-color:#000;--bs-form-control-bg:var(--bs-body-bg);--bs-form-control-disabled-bg:var(--bs-secondary-bg);--bs-highlight-bg:#fff3cd;--bs-breakpoint-xs:0;--bs-breakpoint-sm:576px;--bs-breakpoint-md:768px;--bs-breakpoint-lg:992px;--bs-breakpoint-xl:1200px;--bs-breakpoint-xxl:1400px}[data-bs-theme=dark]{--bs-body-color:#adb5bd;--bs-body-color-rgb:173,181,189;--bs-body-bg:#212529;--bs-body-bg-rgb:33,37,41;--bs-emphasis-color:#f8f9fa;--bs-emphasis-color-rgb:248,249,250;--bs-secondary-color:rgba(173, 181, 189, 0.75);--bs-secondary-color-rgb:173,181,189;--bs-secondary-bg:#343a40;--bs-secondary-bg-rgb:52,58,64;--bs-tertiary-color:rgba(173, 181, 189, 0.5);--bs-tertiary-color-rgb:173,181,189;--bs-tertiary-bg:#2b3035;--bs-tertiary-bg-rgb:43,48,53;--bs-emphasis-color:#fff;--bs-primary-text:#6ea8fe;--bs-secondary-text:#dee2e6;--bs-success-text:#75b798;--bs-info-text:#6edff6;--bs-warning-text:#ffda6a;--bs-danger-text:#ea868f;--bs-light-text:#f8f9fa;--bs-dark-text:#dee2e6;--bs-primary-bg-subtle:#031633;--bs-secondary-bg-subtle:#212529;--bs-success-bg-subtle:#051b11;--bs-info-bg-subtle:#032830;--bs-warning-bg-subtle:#332701;--bs-danger-bg-subtle:#2c0b0e;--bs-light-bg-subtle:#343a40;--bs-dark-bg-subtle:#1a1d20;--bs-primary-border-subtle:#084298;--bs-secondary-border-subtle:#495057;--bs-success-border-subtle:#0f5132;--bs-info-border-subtle:#055160;--bs-warning-border-subtle:#664d03;--bs-danger-border-subtle:#842029;--bs-light-border-subtle:#495057;--bs-dark-border-subtle:#343a40;--bs-heading-color:#fff;--bs-link-color:#6ea8fe;--bs-link-hover-color:#9ec5fe;--bs-link-color-rgb:110,168,254;--bs-link-hover-color-rgb:158,197,254;--bs-code-color:#e685b5;--bs-border-color:#495057;--bs-border-color-translucent:rgba(255, 255, 255, 0.15)}.container,.container-fluid,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{--bs-gutter-x:1.5rem;--bs-gutter-y:0;width:100%;padding-left:calc(var(--bs-gutter-x) * .5);padding-right:calc(var(--bs-gutter-x) * .5);margin-left:auto;margin-right:auto}@media (min-width:576px){.container,.container-sm{max-width:540px}}@media (min-width:768px){.container,.container-md,.container-sm{max-width:720px}}@media (min-width:992px){.container,.container-lg,.container-md,.container-sm{max-width:960px}}@media (min-width:1200px){.container,.container-lg,.container-md,.container-sm,.container-xl{max-width:1140px}}@media (min-width:1400px){.container,.container-lg,.container-md,.container-sm,.container-xl,.container-xxl{max-width:1320px}}.row{--bs-gutter-x:1.5rem;--bs-gutter-y:0;display:flex;flex-wrap:wrap;margin-top:calc(-1 * var(--bs-gutter-y));margin-left:calc(-.5 * var(--bs-gutter-x));margin-right:calc(-.5 * var(--bs-gutter-x))}.row>*{box-sizing:border-box;flex-shrink:0;width:100%;max-width:100%;padding-left:calc(var(--bs-gutter-x) * .5);padding-right:calc(var(--bs-gutter-x) * .5);margin-top:var(--bs-gutter-y)}.col{flex:1 0 0%}.row-cols-auto>*{flex:0 0 auto;width:auto}.row-cols-1>*{flex:0 0 auto;width:100%}.row-cols-2>*{flex:0 0 auto;width:50%}.row-cols-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-4>*{flex:0 0 auto;width:25%}.row-cols-5>*{flex:0 0 auto;width:20%}.row-cols-6>*{flex:0 0 auto;width:16.6666666667%}.col-auto{flex:0 0 auto;width:auto}.col-1{flex:0 0 auto;width:8.33333333%}.col-2{flex:0 0 auto;width:16.66666667%}.col-3{flex:0 0 auto;width:25%}.col-4{flex:0 0 auto;width:33.33333333%}.col-5{flex:0 0 auto;width:41.66666667%}.col-6{flex:0 0 auto;width:50%}.col-7{flex:0 0 auto;width:58.33333333%}.col-8{flex:0 0 auto;width:66.66666667%}.col-9{flex:0 0 auto;width:75%}.col-10{flex:0 0 auto;width:83.33333333%}.col-11{flex:0 0 auto;width:91.66666667%}.col-12{flex:0 0 auto;width:100%}.offset-1{margin-right:8.33333333%}.offset-2{margin-right:16.66666667%}.offset-3{margin-right:25%}.offset-4{margin-right:33.33333333%}.offset-5{margin-right:41.66666667%}.offset-6{margin-right:50%}.offset-7{margin-right:58.33333333%}.offset-8{margin-right:66.66666667%}.offset-9{margin-right:75%}.offset-10{margin-right:83.33333333%}.offset-11{margin-right:91.66666667%}.g-0,.gx-0{--bs-gutter-x:0}.g-0,.gy-0{--bs-gutter-y:0}.g-1,.gx-1{--bs-gutter-x:0.25rem}.g-1,.gy-1{--bs-gutter-y:0.25rem}.g-2,.gx-2{--bs-gutter-x:0.5rem}.g-2,.gy-2{--bs-gutter-y:0.5rem}.g-3,.gx-3{--bs-gutter-x:1rem}.g-3,.gy-3{--bs-gutter-y:1rem}.g-4,.gx-4{--bs-gutter-x:1.5rem}.g-4,.gy-4{--bs-gutter-y:1.5rem}.g-5,.gx-5{--bs-gutter-x:3rem}.g-5,.gy-5{--bs-gutter-y:3rem}@media (min-width:576px){.col-sm{flex:1 0 0%}.row-cols-sm-auto>*{flex:0 0 auto;width:auto}.row-cols-sm-1>*{flex:0 0 auto;width:100%}.row-cols-sm-2>*{flex:0 0 auto;width:50%}.row-cols-sm-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-sm-4>*{flex:0 0 auto;width:25%}.row-cols-sm-5>*{flex:0 0 auto;width:20%}.row-cols-sm-6>*{flex:0 0 auto;width:16.6666666667%}.col-sm-auto{flex:0 0 auto;width:auto}.col-sm-1{flex:0 0 auto;width:8.33333333%}.col-sm-2{flex:0 0 auto;width:16.66666667%}.col-sm-3{flex:0 0 auto;width:25%}.col-sm-4{flex:0 0 auto;width:33.33333333%}.col-sm-5{flex:0 0 auto;width:41.66666667%}.col-sm-6{flex:0 0 auto;width:50%}.col-sm-7{flex:0 0 auto;width:58.33333333%}.col-sm-8{flex:0 0 auto;width:66.66666667%}.col-sm-9{flex:0 0 auto;width:75%}.col-sm-10{flex:0 0 auto;width:83.33333333%}.col-sm-11{flex:0 0 auto;width:91.66666667%}.col-sm-12{flex:0 0 auto;width:100%}.offset-sm-0{margin-right:0}.offset-sm-1{margin-right:8.33333333%}.offset-sm-2{margin-right:16.66666667%}.offset-sm-3{margin-right:25%}.offset-sm-4{margin-right:33.33333333%}.offset-sm-5{margin-right:41.66666667%}.offset-sm-6{margin-right:50%}.offset-sm-7{margin-right:58.33333333%}.offset-sm-8{margin-right:66.66666667%}.offset-sm-9{margin-right:75%}.offset-sm-10{margin-right:83.33333333%}.offset-sm-11{margin-right:91.66666667%}.g-sm-0,.gx-sm-0{--bs-gutter-x:0}.g-sm-0,.gy-sm-0{--bs-gutter-y:0}.g-sm-1,.gx-sm-1{--bs-gutter-x:0.25rem}.g-sm-1,.gy-sm-1{--bs-gutter-y:0.25rem}.g-sm-2,.gx-sm-2{--bs-gutter-x:0.5rem}.g-sm-2,.gy-sm-2{--bs-gutter-y:0.5rem}.g-sm-3,.gx-sm-3{--bs-gutter-x:1rem}.g-sm-3,.gy-sm-3{--bs-gutter-y:1rem}.g-sm-4,.gx-sm-4{--bs-gutter-x:1.5rem}.g-sm-4,.gy-sm-4{--bs-gutter-y:1.5rem}.g-sm-5,.gx-sm-5{--bs-gutter-x:3rem}.g-sm-5,.gy-sm-5{--bs-gutter-y:3rem}}@media (min-width:768px){.col-md{flex:1 0 0%}.row-cols-md-auto>*{flex:0 0 auto;width:auto}.row-cols-md-1>*{flex:0 0 auto;width:100%}.row-cols-md-2>*{flex:0 0 auto;width:50%}.row-cols-md-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-md-4>*{flex:0 0 auto;width:25%}.row-cols-md-5>*{flex:0 0 auto;width:20%}.row-cols-md-6>*{flex:0 0 auto;width:16.6666666667%}.col-md-auto{flex:0 0 auto;width:auto}.col-md-1{flex:0 0 auto;width:8.33333333%}.col-md-2{flex:0 0 auto;width:16.66666667%}.col-md-3{flex:0 0 auto;width:25%}.col-md-4{flex:0 0 auto;width:33.33333333%}.col-md-5{flex:0 0 auto;width:41.66666667%}.col-md-6{flex:0 0 auto;width:50%}.col-md-7{flex:0 0 auto;width:58.33333333%}.col-md-8{flex:0 0 auto;width:66.66666667%}.col-md-9{flex:0 0 auto;width:75%}.col-md-10{flex:0 0 auto;width:83.33333333%}.col-md-11{flex:0 0 auto;width:91.66666667%}.col-md-12{flex:0 0 auto;width:100%}.offset-md-0{margin-right:0}.offset-md-1{margin-right:8.33333333%}.offset-md-2{margin-right:16.66666667%}.offset-md-3{margin-right:25%}.offset-md-4{margin-right:33.33333333%}.offset-md-5{margin-right:41.66666667%}.offset-md-6{margin-right:50%}.offset-md-7{margin-right:58.33333333%}.offset-md-8{margin-right:66.66666667%}.offset-md-9{margin-right:75%}.offset-md-10{margin-right:83.33333333%}.offset-md-11{margin-right:91.66666667%}.g-md-0,.gx-md-0{--bs-gutter-x:0}.g-md-0,.gy-md-0{--bs-gutter-y:0}.g-md-1,.gx-md-1{--bs-gutter-x:0.25rem}.g-md-1,.gy-md-1{--bs-gutter-y:0.25rem}.g-md-2,.gx-md-2{--bs-gutter-x:0.5rem}.g-md-2,.gy-md-2{--bs-gutter-y:0.5rem}.g-md-3,.gx-md-3{--bs-gutter-x:1rem}.g-md-3,.gy-md-3{--bs-gutter-y:1rem}.g-md-4,.gx-md-4{--bs-gutter-x:1.5rem}.g-md-4,.gy-md-4{--bs-gutter-y:1.5rem}.g-md-5,.gx-md-5{--bs-gutter-x:3rem}.g-md-5,.gy-md-5{--bs-gutter-y:3rem}}@media (min-width:992px){.col-lg{flex:1 0 0%}.row-cols-lg-auto>*{flex:0 0 auto;width:auto}.row-cols-lg-1>*{flex:0 0 auto;width:100%}.row-cols-lg-2>*{flex:0 0 auto;width:50%}.row-cols-lg-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-lg-4>*{flex:0 0 auto;width:25%}.row-cols-lg-5>*{flex:0 0 auto;width:20%}.row-cols-lg-6>*{flex:0 0 auto;width:16.6666666667%}.col-lg-auto{flex:0 0 auto;width:auto}.col-lg-1{flex:0 0 auto;width:8.33333333%}.col-lg-2{flex:0 0 auto;width:16.66666667%}.col-lg-3{flex:0 0 auto;width:25%}.col-lg-4{flex:0 0 auto;width:33.33333333%}.col-lg-5{flex:0 0 auto;width:41.66666667%}.col-lg-6{flex:0 0 auto;width:50%}.col-lg-7{flex:0 0 auto;width:58.33333333%}.col-lg-8{flex:0 0 auto;width:66.66666667%}.col-lg-9{flex:0 0 auto;width:75%}.col-lg-10{flex:0 0 auto;width:83.33333333%}.col-lg-11{flex:0 0 auto;width:91.66666667%}.col-lg-12{flex:0 0 auto;width:100%}.offset-lg-0{margin-right:0}.offset-lg-1{margin-right:8.33333333%}.offset-lg-2{margin-right:16.66666667%}.offset-lg-3{margin-right:25%}.offset-lg-4{margin-right:33.33333333%}.offset-lg-5{margin-right:41.66666667%}.offset-lg-6{margin-right:50%}.offset-lg-7{margin-right:58.33333333%}.offset-lg-8{margin-right:66.66666667%}.offset-lg-9{margin-right:75%}.offset-lg-10{margin-right:83.33333333%}.offset-lg-11{margin-right:91.66666667%}.g-lg-0,.gx-lg-0{--bs-gutter-x:0}.g-lg-0,.gy-lg-0{--bs-gutter-y:0}.g-lg-1,.gx-lg-1{--bs-gutter-x:0.25rem}.g-lg-1,.gy-lg-1{--bs-gutter-y:0.25rem}.g-lg-2,.gx-lg-2{--bs-gutter-x:0.5rem}.g-lg-2,.gy-lg-2{--bs-gutter-y:0.5rem}.g-lg-3,.gx-lg-3{--bs-gutter-x:1rem}.g-lg-3,.gy-lg-3{--bs-gutter-y:1rem}.g-lg-4,.gx-lg-4{--bs-gutter-x:1.5rem}.g-lg-4,.gy-lg-4{--bs-gutter-y:1.5rem}.g-lg-5,.gx-lg-5{--bs-gutter-x:3rem}.g-lg-5,.gy-lg-5{--bs-gutter-y:3rem}}@media (min-width:1200px){.col-xl{flex:1 0 0%}.row-cols-xl-auto>*{flex:0 0 auto;width:auto}.row-cols-xl-1>*{flex:0 0 auto;width:100%}.row-cols-xl-2>*{flex:0 0 auto;width:50%}.row-cols-xl-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-xl-4>*{flex:0 0 auto;width:25%}.row-cols-xl-5>*{flex:0 0 auto;width:20%}.row-cols-xl-6>*{flex:0 0 auto;width:16.6666666667%}.col-xl-auto{flex:0 0 auto;width:auto}.col-xl-1{flex:0 0 auto;width:8.33333333%}.col-xl-2{flex:0 0 auto;width:16.66666667%}.col-xl-3{flex:0 0 auto;width:25%}.col-xl-4{flex:0 0 auto;width:33.33333333%}.col-xl-5{flex:0 0 auto;width:41.66666667%}.col-xl-6{flex:0 0 auto;width:50%}.col-xl-7{flex:0 0 auto;width:58.33333333%}.col-xl-8{flex:0 0 auto;width:66.66666667%}.col-xl-9{flex:0 0 auto;width:75%}.col-xl-10{flex:0 0 auto;width:83.33333333%}.col-xl-11{flex:0 0 auto;width:91.66666667%}.col-xl-12{flex:0 0 auto;width:100%}.offset-xl-0{margin-right:0}.offset-xl-1{margin-right:8.33333333%}.offset-xl-2{margin-right:16.66666667%}.offset-xl-3{margin-right:25%}.offset-xl-4{margin-right:33.33333333%}.offset-xl-5{margin-right:41.66666667%}.offset-xl-6{margin-right:50%}.offset-xl-7{margin-right:58.33333333%}.offset-xl-8{margin-right:66.66666667%}.offset-xl-9{margin-right:75%}.offset-xl-10{margin-right:83.33333333%}.offset-xl-11{margin-right:91.66666667%}.g-xl-0,.gx-xl-0{--bs-gutter-x:0}.g-xl-0,.gy-xl-0{--bs-gutter-y:0}.g-xl-1,.gx-xl-1{--bs-gutter-x:0.25rem}.g-xl-1,.gy-xl-1{--bs-gutter-y:0.25rem}.g-xl-2,.gx-xl-2{--bs-gutter-x:0.5rem}.g-xl-2,.gy-xl-2{--bs-gutter-y:0.5rem}.g-xl-3,.gx-xl-3{--bs-gutter-x:1rem}.g-xl-3,.gy-xl-3{--bs-gutter-y:1rem}.g-xl-4,.gx-xl-4{--bs-gutter-x:1.5rem}.g-xl-4,.gy-xl-4{--bs-gutter-y:1.5rem}.g-xl-5,.gx-xl-5{--bs-gutter-x:3rem}.g-xl-5,.gy-xl-5{--bs-gutter-y:3rem}}@media (min-width:1400px){.col-xxl{flex:1 0 0%}.row-cols-xxl-auto>*{flex:0 0 auto;width:auto}.row-cols-xxl-1>*{flex:0 0 auto;width:100%}.row-cols-xxl-2>*{flex:0 0 auto;width:50%}.row-cols-xxl-3>*{flex:0 0 auto;width:33.3333333333%}.row-cols-xxl-4>*{flex:0 0 auto;width:25%}.row-cols-xxl-5>*{flex:0 0 auto;width:20%}.row-cols-xxl-6>*{flex:0 0 auto;width:16.6666666667%}.col-xxl-auto{flex:0 0 auto;width:auto}.col-xxl-1{flex:0 0 auto;width:8.33333333%}.col-xxl-2{flex:0 0 auto;width:16.66666667%}.col-xxl-3{flex:0 0 auto;width:25%}.col-xxl-4{flex:0 0 auto;width:33.33333333%}.col-xxl-5{flex:0 0 auto;width:41.66666667%}.col-xxl-6{flex:0 0 auto;width:50%}.col-xxl-7{flex:0 0 auto;width:58.33333333%}.col-xxl-8{flex:0 0 auto;width:66.66666667%}.col-xxl-9{flex:0 0 auto;width:75%}.col-xxl-10{flex:0 0 auto;width:83.33333333%}.col-xxl-11{flex:0 0 auto;width:91.66666667%}.col-xxl-12{flex:0 0 auto;width:100%}.offset-xxl-0{margin-right:0}.offset-xxl-1{margin-right:8.33333333%}.offset-xxl-2{margin-right:16.66666667%}.offset-xxl-3{margin-right:25%}.offset-xxl-4{margin-right:33.33333333%}.offset-xxl-5{margin-right:41.66666667%}.offset-xxl-6{margin-right:50%}.offset-xxl-7{margin-right:58.33333333%}.offset-xxl-8{margin-right:66.66666667%}.offset-xxl-9{margin-right:75%}.offset-xxl-10{margin-right:83.33333333%}.offset-xxl-11{margin-right:91.66666667%}.g-xxl-0,.gx-xxl-0{--bs-gutter-x:0}.g-xxl-0,.gy-xxl-0{--bs-gutter-y:0}.g-xxl-1,.gx-xxl-1{--bs-gutter-x:0.25rem}.g-xxl-1,.gy-xxl-1{--bs-gutter-y:0.25rem}.g-xxl-2,.gx-xxl-2{--bs-gutter-x:0.5rem}.g-xxl-2,.gy-xxl-2{--bs-gutter-y:0.5rem}.g-xxl-3,.gx-xxl-3{--bs-gutter-x:1rem}.g-xxl-3,.gy-xxl-3{--bs-gutter-y:1rem}.g-xxl-4,.gx-xxl-4{--bs-gutter-x:1.5rem}.g-xxl-4,.gy-xxl-4{--bs-gutter-y:1.5rem}.g-xxl-5,.gx-xxl-5{--bs-gutter-x:3rem}.g-xxl-5,.gy-xxl-5{--bs-gutter-y:3rem}}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-grid{display:grid!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:flex!important}.d-inline-flex{display:inline-flex!important}.d-none{display:none!important}.flex-fill{flex:1 1 auto!important}.flex-row{flex-direction:row!important}.flex-column{flex-direction:column!important}.flex-row-reverse{flex-direction:row-reverse!important}.flex-column-reverse{flex-direction:column-reverse!important}.flex-grow-0{flex-grow:0!important}.flex-grow-1{flex-grow:1!important}.flex-shrink-0{flex-shrink:0!important}.flex-shrink-1{flex-shrink:1!important}.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}.flex-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-start{justify-content:flex-start!important}.justify-content-end{justify-content:flex-end!important}.justify-content-center{justify-content:center!important}.justify-content-between{justify-content:space-between!important}.justify-content-around{justify-content:space-around!important}.justify-content-evenly{justify-content:space-evenly!important}.align-items-start{align-items:flex-start!important}.align-items-end{align-items:flex-end!important}.align-items-center{align-items:center!important}.align-items-baseline{align-items:baseline!important}.align-items-stretch{align-items:stretch!important}.align-content-start{align-content:flex-start!important}.align-content-end{align-content:flex-end!important}.align-content-center{align-content:center!important}.align-content-between{align-content:space-between!important}.align-content-around{align-content:space-around!important}.align-content-stretch{align-content:stretch!important}.align-self-auto{align-self:auto!important}.align-self-start{align-self:flex-start!important}.align-self-end{align-self:flex-end!important}.align-self-center{align-self:center!important}.align-self-baseline{align-self:baseline!important}.align-self-stretch{align-self:stretch!important}.order-first{order:-1!important}.order-0{order:0!important}.order-1{order:1!important}.order-2{order:2!important}.order-3{order:3!important}.order-4{order:4!important}.order-5{order:5!important}.order-last{order:6!important}.m-0{margin:0!important}.m-1{margin:.25rem!important}.m-2{margin:.5rem!important}.m-3{margin:1rem!important}.m-4{margin:1.5rem!important}.m-5{margin:3rem!important}.m-auto{margin:auto!important}.mx-0{margin-left:0!important;margin-right:0!important}.mx-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-3{margin-left:1rem!important;margin-right:1rem!important}.mx-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-5{margin-left:3rem!important;margin-right:3rem!important}.mx-auto{margin-left:auto!important;margin-right:auto!important}.my-0{margin-top:0!important;margin-bottom:0!important}.my-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-0{margin-top:0!important}.mt-1{margin-top:.25rem!important}.mt-2{margin-top:.5rem!important}.mt-3{margin-top:1rem!important}.mt-4{margin-top:1.5rem!important}.mt-5{margin-top:3rem!important}.mt-auto{margin-top:auto!important}.me-0{margin-left:0!important}.me-1{margin-left:.25rem!important}.me-2{margin-left:.5rem!important}.me-3{margin-left:1rem!important}.me-4{margin-left:1.5rem!important}.me-5{margin-left:3rem!important}.me-auto{margin-left:auto!important}.mb-0{margin-bottom:0!important}.mb-1{margin-bottom:.25rem!important}.mb-2{margin-bottom:.5rem!important}.mb-3{margin-bottom:1rem!important}.mb-4{margin-bottom:1.5rem!important}.mb-5{margin-bottom:3rem!important}.mb-auto{margin-bottom:auto!important}.ms-0{margin-right:0!important}.ms-1{margin-right:.25rem!important}.ms-2{margin-right:.5rem!important}.ms-3{margin-right:1rem!important}.ms-4{margin-right:1.5rem!important}.ms-5{margin-right:3rem!important}.ms-auto{margin-right:auto!important}.p-0{padding:0!important}.p-1{padding:.25rem!important}.p-2{padding:.5rem!important}.p-3{padding:1rem!important}.p-4{padding:1.5rem!important}.p-5{padding:3rem!important}.px-0{padding-left:0!important;padding-right:0!important}.px-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-3{padding-left:1rem!important;padding-right:1rem!important}.px-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-5{padding-left:3rem!important;padding-right:3rem!important}.py-0{padding-top:0!important;padding-bottom:0!important}.py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-0{padding-top:0!important}.pt-1{padding-top:.25rem!important}.pt-2{padding-top:.5rem!important}.pt-3{padding-top:1rem!important}.pt-4{padding-top:1.5rem!important}.pt-5{padding-top:3rem!important}.pe-0{padding-left:0!important}.pe-1{padding-left:.25rem!important}.pe-2{padding-left:.5rem!important}.pe-3{padding-left:1rem!important}.pe-4{padding-left:1.5rem!important}.pe-5{padding-left:3rem!important}.pb-0{padding-bottom:0!important}.pb-1{padding-bottom:.25rem!important}.pb-2{padding-bottom:.5rem!important}.pb-3{padding-bottom:1rem!important}.pb-4{padding-bottom:1.5rem!important}.pb-5{padding-bottom:3rem!important}.ps-0{padding-right:0!important}.ps-1{padding-right:.25rem!important}.ps-2{padding-right:.5rem!important}.ps-3{padding-right:1rem!important}.ps-4{padding-right:1.5rem!important}.ps-5{padding-right:3rem!important}@media (min-width:576px){.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-grid{display:grid!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:flex!important}.d-sm-inline-flex{display:inline-flex!important}.d-sm-none{display:none!important}.flex-sm-fill{flex:1 1 auto!important}.flex-sm-row{flex-direction:row!important}.flex-sm-column{flex-direction:column!important}.flex-sm-row-reverse{flex-direction:row-reverse!important}.flex-sm-column-reverse{flex-direction:column-reverse!important}.flex-sm-grow-0{flex-grow:0!important}.flex-sm-grow-1{flex-grow:1!important}.flex-sm-shrink-0{flex-shrink:0!important}.flex-sm-shrink-1{flex-shrink:1!important}.flex-sm-wrap{flex-wrap:wrap!important}.flex-sm-nowrap{flex-wrap:nowrap!important}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-sm-start{justify-content:flex-start!important}.justify-content-sm-end{justify-content:flex-end!important}.justify-content-sm-center{justify-content:center!important}.justify-content-sm-between{justify-content:space-between!important}.justify-content-sm-around{justify-content:space-around!important}.justify-content-sm-evenly{justify-content:space-evenly!important}.align-items-sm-start{align-items:flex-start!important}.align-items-sm-end{align-items:flex-end!important}.align-items-sm-center{align-items:center!important}.align-items-sm-baseline{align-items:baseline!important}.align-items-sm-stretch{align-items:stretch!important}.align-content-sm-start{align-content:flex-start!important}.align-content-sm-end{align-content:flex-end!important}.align-content-sm-center{align-content:center!important}.align-content-sm-between{align-content:space-between!important}.align-content-sm-around{align-content:space-around!important}.align-content-sm-stretch{align-content:stretch!important}.align-self-sm-auto{align-self:auto!important}.align-self-sm-start{align-self:flex-start!important}.align-self-sm-end{align-self:flex-end!important}.align-self-sm-center{align-self:center!important}.align-self-sm-baseline{align-self:baseline!important}.align-self-sm-stretch{align-self:stretch!important}.order-sm-first{order:-1!important}.order-sm-0{order:0!important}.order-sm-1{order:1!important}.order-sm-2{order:2!important}.order-sm-3{order:3!important}.order-sm-4{order:4!important}.order-sm-5{order:5!important}.order-sm-last{order:6!important}.m-sm-0{margin:0!important}.m-sm-1{margin:.25rem!important}.m-sm-2{margin:.5rem!important}.m-sm-3{margin:1rem!important}.m-sm-4{margin:1.5rem!important}.m-sm-5{margin:3rem!important}.m-sm-auto{margin:auto!important}.mx-sm-0{margin-left:0!important;margin-right:0!important}.mx-sm-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-sm-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-sm-3{margin-left:1rem!important;margin-right:1rem!important}.mx-sm-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-sm-5{margin-left:3rem!important;margin-right:3rem!important}.mx-sm-auto{margin-left:auto!important;margin-right:auto!important}.my-sm-0{margin-top:0!important;margin-bottom:0!important}.my-sm-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-sm-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-sm-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-sm-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-sm-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-sm-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-sm-0{margin-top:0!important}.mt-sm-1{margin-top:.25rem!important}.mt-sm-2{margin-top:.5rem!important}.mt-sm-3{margin-top:1rem!important}.mt-sm-4{margin-top:1.5rem!important}.mt-sm-5{margin-top:3rem!important}.mt-sm-auto{margin-top:auto!important}.me-sm-0{margin-left:0!important}.me-sm-1{margin-left:.25rem!important}.me-sm-2{margin-left:.5rem!important}.me-sm-3{margin-left:1rem!important}.me-sm-4{margin-left:1.5rem!important}.me-sm-5{margin-left:3rem!important}.me-sm-auto{margin-left:auto!important}.mb-sm-0{margin-bottom:0!important}.mb-sm-1{margin-bottom:.25rem!important}.mb-sm-2{margin-bottom:.5rem!important}.mb-sm-3{margin-bottom:1rem!important}.mb-sm-4{margin-bottom:1.5rem!important}.mb-sm-5{margin-bottom:3rem!important}.mb-sm-auto{margin-bottom:auto!important}.ms-sm-0{margin-right:0!important}.ms-sm-1{margin-right:.25rem!important}.ms-sm-2{margin-right:.5rem!important}.ms-sm-3{margin-right:1rem!important}.ms-sm-4{margin-right:1.5rem!important}.ms-sm-5{margin-right:3rem!important}.ms-sm-auto{margin-right:auto!important}.p-sm-0{padding:0!important}.p-sm-1{padding:.25rem!important}.p-sm-2{padding:.5rem!important}.p-sm-3{padding:1rem!important}.p-sm-4{padding:1.5rem!important}.p-sm-5{padding:3rem!important}.px-sm-0{padding-left:0!important;padding-right:0!important}.px-sm-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-sm-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-sm-3{padding-left:1rem!important;padding-right:1rem!important}.px-sm-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-sm-5{padding-left:3rem!important;padding-right:3rem!important}.py-sm-0{padding-top:0!important;padding-bottom:0!important}.py-sm-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-sm-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-sm-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-sm-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-sm-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-sm-0{padding-top:0!important}.pt-sm-1{padding-top:.25rem!important}.pt-sm-2{padding-top:.5rem!important}.pt-sm-3{padding-top:1rem!important}.pt-sm-4{padding-top:1.5rem!important}.pt-sm-5{padding-top:3rem!important}.pe-sm-0{padding-left:0!important}.pe-sm-1{padding-left:.25rem!important}.pe-sm-2{padding-left:.5rem!important}.pe-sm-3{padding-left:1rem!important}.pe-sm-4{padding-left:1.5rem!important}.pe-sm-5{padding-left:3rem!important}.pb-sm-0{padding-bottom:0!important}.pb-sm-1{padding-bottom:.25rem!important}.pb-sm-2{padding-bottom:.5rem!important}.pb-sm-3{padding-bottom:1rem!important}.pb-sm-4{padding-bottom:1.5rem!important}.pb-sm-5{padding-bottom:3rem!important}.ps-sm-0{padding-right:0!important}.ps-sm-1{padding-right:.25rem!important}.ps-sm-2{padding-right:.5rem!important}.ps-sm-3{padding-right:1rem!important}.ps-sm-4{padding-right:1.5rem!important}.ps-sm-5{padding-right:3rem!important}}@media (min-width:768px){.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-grid{display:grid!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:flex!important}.d-md-inline-flex{display:inline-flex!important}.d-md-none{display:none!important}.flex-md-fill{flex:1 1 auto!important}.flex-md-row{flex-direction:row!important}.flex-md-column{flex-direction:column!important}.flex-md-row-reverse{flex-direction:row-reverse!important}.flex-md-column-reverse{flex-direction:column-reverse!important}.flex-md-grow-0{flex-grow:0!important}.flex-md-grow-1{flex-grow:1!important}.flex-md-shrink-0{flex-shrink:0!important}.flex-md-shrink-1{flex-shrink:1!important}.flex-md-wrap{flex-wrap:wrap!important}.flex-md-nowrap{flex-wrap:nowrap!important}.flex-md-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-md-start{justify-content:flex-start!important}.justify-content-md-end{justify-content:flex-end!important}.justify-content-md-center{justify-content:center!important}.justify-content-md-between{justify-content:space-between!important}.justify-content-md-around{justify-content:space-around!important}.justify-content-md-evenly{justify-content:space-evenly!important}.align-items-md-start{align-items:flex-start!important}.align-items-md-end{align-items:flex-end!important}.align-items-md-center{align-items:center!important}.align-items-md-baseline{align-items:baseline!important}.align-items-md-stretch{align-items:stretch!important}.align-content-md-start{align-content:flex-start!important}.align-content-md-end{align-content:flex-end!important}.align-content-md-center{align-content:center!important}.align-content-md-between{align-content:space-between!important}.align-content-md-around{align-content:space-around!important}.align-content-md-stretch{align-content:stretch!important}.align-self-md-auto{align-self:auto!important}.align-self-md-start{align-self:flex-start!important}.align-self-md-end{align-self:flex-end!important}.align-self-md-center{align-self:center!important}.align-self-md-baseline{align-self:baseline!important}.align-self-md-stretch{align-self:stretch!important}.order-md-first{order:-1!important}.order-md-0{order:0!important}.order-md-1{order:1!important}.order-md-2{order:2!important}.order-md-3{order:3!important}.order-md-4{order:4!important}.order-md-5{order:5!important}.order-md-last{order:6!important}.m-md-0{margin:0!important}.m-md-1{margin:.25rem!important}.m-md-2{margin:.5rem!important}.m-md-3{margin:1rem!important}.m-md-4{margin:1.5rem!important}.m-md-5{margin:3rem!important}.m-md-auto{margin:auto!important}.mx-md-0{margin-left:0!important;margin-right:0!important}.mx-md-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-md-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-md-3{margin-left:1rem!important;margin-right:1rem!important}.mx-md-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-md-5{margin-left:3rem!important;margin-right:3rem!important}.mx-md-auto{margin-left:auto!important;margin-right:auto!important}.my-md-0{margin-top:0!important;margin-bottom:0!important}.my-md-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-md-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-md-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-md-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-md-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-md-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-md-0{margin-top:0!important}.mt-md-1{margin-top:.25rem!important}.mt-md-2{margin-top:.5rem!important}.mt-md-3{margin-top:1rem!important}.mt-md-4{margin-top:1.5rem!important}.mt-md-5{margin-top:3rem!important}.mt-md-auto{margin-top:auto!important}.me-md-0{margin-left:0!important}.me-md-1{margin-left:.25rem!important}.me-md-2{margin-left:.5rem!important}.me-md-3{margin-left:1rem!important}.me-md-4{margin-left:1.5rem!important}.me-md-5{margin-left:3rem!important}.me-md-auto{margin-left:auto!important}.mb-md-0{margin-bottom:0!important}.mb-md-1{margin-bottom:.25rem!important}.mb-md-2{margin-bottom:.5rem!important}.mb-md-3{margin-bottom:1rem!important}.mb-md-4{margin-bottom:1.5rem!important}.mb-md-5{margin-bottom:3rem!important}.mb-md-auto{margin-bottom:auto!important}.ms-md-0{margin-right:0!important}.ms-md-1{margin-right:.25rem!important}.ms-md-2{margin-right:.5rem!important}.ms-md-3{margin-right:1rem!important}.ms-md-4{margin-right:1.5rem!important}.ms-md-5{margin-right:3rem!important}.ms-md-auto{margin-right:auto!important}.p-md-0{padding:0!important}.p-md-1{padding:.25rem!important}.p-md-2{padding:.5rem!important}.p-md-3{padding:1rem!important}.p-md-4{padding:1.5rem!important}.p-md-5{padding:3rem!important}.px-md-0{padding-left:0!important;padding-right:0!important}.px-md-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-md-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-md-3{padding-left:1rem!important;padding-right:1rem!important}.px-md-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-md-5{padding-left:3rem!important;padding-right:3rem!important}.py-md-0{padding-top:0!important;padding-bottom:0!important}.py-md-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-md-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-md-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-md-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-md-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-md-0{padding-top:0!important}.pt-md-1{padding-top:.25rem!important}.pt-md-2{padding-top:.5rem!important}.pt-md-3{padding-top:1rem!important}.pt-md-4{padding-top:1.5rem!important}.pt-md-5{padding-top:3rem!important}.pe-md-0{padding-left:0!important}.pe-md-1{padding-left:.25rem!important}.pe-md-2{padding-left:.5rem!important}.pe-md-3{padding-left:1rem!important}.pe-md-4{padding-left:1.5rem!important}.pe-md-5{padding-left:3rem!important}.pb-md-0{padding-bottom:0!important}.pb-md-1{padding-bottom:.25rem!important}.pb-md-2{padding-bottom:.5rem!important}.pb-md-3{padding-bottom:1rem!important}.pb-md-4{padding-bottom:1.5rem!important}.pb-md-5{padding-bottom:3rem!important}.ps-md-0{padding-right:0!important}.ps-md-1{padding-right:.25rem!important}.ps-md-2{padding-right:.5rem!important}.ps-md-3{padding-right:1rem!important}.ps-md-4{padding-right:1.5rem!important}.ps-md-5{padding-right:3rem!important}}@media (min-width:992px){.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-grid{display:grid!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:flex!important}.d-lg-inline-flex{display:inline-flex!important}.d-lg-none{display:none!important}.flex-lg-fill{flex:1 1 auto!important}.flex-lg-row{flex-direction:row!important}.flex-lg-column{flex-direction:column!important}.flex-lg-row-reverse{flex-direction:row-reverse!important}.flex-lg-column-reverse{flex-direction:column-reverse!important}.flex-lg-grow-0{flex-grow:0!important}.flex-lg-grow-1{flex-grow:1!important}.flex-lg-shrink-0{flex-shrink:0!important}.flex-lg-shrink-1{flex-shrink:1!important}.flex-lg-wrap{flex-wrap:wrap!important}.flex-lg-nowrap{flex-wrap:nowrap!important}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-lg-start{justify-content:flex-start!important}.justify-content-lg-end{justify-content:flex-end!important}.justify-content-lg-center{justify-content:center!important}.justify-content-lg-between{justify-content:space-between!important}.justify-content-lg-around{justify-content:space-around!important}.justify-content-lg-evenly{justify-content:space-evenly!important}.align-items-lg-start{align-items:flex-start!important}.align-items-lg-end{align-items:flex-end!important}.align-items-lg-center{align-items:center!important}.align-items-lg-baseline{align-items:baseline!important}.align-items-lg-stretch{align-items:stretch!important}.align-content-lg-start{align-content:flex-start!important}.align-content-lg-end{align-content:flex-end!important}.align-content-lg-center{align-content:center!important}.align-content-lg-between{align-content:space-between!important}.align-content-lg-around{align-content:space-around!important}.align-content-lg-stretch{align-content:stretch!important}.align-self-lg-auto{align-self:auto!important}.align-self-lg-start{align-self:flex-start!important}.align-self-lg-end{align-self:flex-end!important}.align-self-lg-center{align-self:center!important}.align-self-lg-baseline{align-self:baseline!important}.align-self-lg-stretch{align-self:stretch!important}.order-lg-first{order:-1!important}.order-lg-0{order:0!important}.order-lg-1{order:1!important}.order-lg-2{order:2!important}.order-lg-3{order:3!important}.order-lg-4{order:4!important}.order-lg-5{order:5!important}.order-lg-last{order:6!important}.m-lg-0{margin:0!important}.m-lg-1{margin:.25rem!important}.m-lg-2{margin:.5rem!important}.m-lg-3{margin:1rem!important}.m-lg-4{margin:1.5rem!important}.m-lg-5{margin:3rem!important}.m-lg-auto{margin:auto!important}.mx-lg-0{margin-left:0!important;margin-right:0!important}.mx-lg-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-lg-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-lg-3{margin-left:1rem!important;margin-right:1rem!important}.mx-lg-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-lg-5{margin-left:3rem!important;margin-right:3rem!important}.mx-lg-auto{margin-left:auto!important;margin-right:auto!important}.my-lg-0{margin-top:0!important;margin-bottom:0!important}.my-lg-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-lg-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-lg-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-lg-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-lg-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-lg-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-lg-0{margin-top:0!important}.mt-lg-1{margin-top:.25rem!important}.mt-lg-2{margin-top:.5rem!important}.mt-lg-3{margin-top:1rem!important}.mt-lg-4{margin-top:1.5rem!important}.mt-lg-5{margin-top:3rem!important}.mt-lg-auto{margin-top:auto!important}.me-lg-0{margin-left:0!important}.me-lg-1{margin-left:.25rem!important}.me-lg-2{margin-left:.5rem!important}.me-lg-3{margin-left:1rem!important}.me-lg-4{margin-left:1.5rem!important}.me-lg-5{margin-left:3rem!important}.me-lg-auto{margin-left:auto!important}.mb-lg-0{margin-bottom:0!important}.mb-lg-1{margin-bottom:.25rem!important}.mb-lg-2{margin-bottom:.5rem!important}.mb-lg-3{margin-bottom:1rem!important}.mb-lg-4{margin-bottom:1.5rem!important}.mb-lg-5{margin-bottom:3rem!important}.mb-lg-auto{margin-bottom:auto!important}.ms-lg-0{margin-right:0!important}.ms-lg-1{margin-right:.25rem!important}.ms-lg-2{margin-right:.5rem!important}.ms-lg-3{margin-right:1rem!important}.ms-lg-4{margin-right:1.5rem!important}.ms-lg-5{margin-right:3rem!important}.ms-lg-auto{margin-right:auto!important}.p-lg-0{padding:0!important}.p-lg-1{padding:.25rem!important}.p-lg-2{padding:.5rem!important}.p-lg-3{padding:1rem!important}.p-lg-4{padding:1.5rem!important}.p-lg-5{padding:3rem!important}.px-lg-0{padding-left:0!important;padding-right:0!important}.px-lg-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-lg-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-lg-3{padding-left:1rem!important;padding-right:1rem!important}.px-lg-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-lg-5{padding-left:3rem!important;padding-right:3rem!important}.py-lg-0{padding-top:0!important;padding-bottom:0!important}.py-lg-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-lg-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-lg-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-lg-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-lg-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-lg-0{padding-top:0!important}.pt-lg-1{padding-top:.25rem!important}.pt-lg-2{padding-top:.5rem!important}.pt-lg-3{padding-top:1rem!important}.pt-lg-4{padding-top:1.5rem!important}.pt-lg-5{padding-top:3rem!important}.pe-lg-0{padding-left:0!important}.pe-lg-1{padding-left:.25rem!important}.pe-lg-2{padding-left:.5rem!important}.pe-lg-3{padding-left:1rem!important}.pe-lg-4{padding-left:1.5rem!important}.pe-lg-5{padding-left:3rem!important}.pb-lg-0{padding-bottom:0!important}.pb-lg-1{padding-bottom:.25rem!important}.pb-lg-2{padding-bottom:.5rem!important}.pb-lg-3{padding-bottom:1rem!important}.pb-lg-4{padding-bottom:1.5rem!important}.pb-lg-5{padding-bottom:3rem!important}.ps-lg-0{padding-right:0!important}.ps-lg-1{padding-right:.25rem!important}.ps-lg-2{padding-right:.5rem!important}.ps-lg-3{padding-right:1rem!important}.ps-lg-4{padding-right:1.5rem!important}.ps-lg-5{padding-right:3rem!important}}@media (min-width:1200px){.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-grid{display:grid!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:flex!important}.d-xl-inline-flex{display:inline-flex!important}.d-xl-none{display:none!important}.flex-xl-fill{flex:1 1 auto!important}.flex-xl-row{flex-direction:row!important}.flex-xl-column{flex-direction:column!important}.flex-xl-row-reverse{flex-direction:row-reverse!important}.flex-xl-column-reverse{flex-direction:column-reverse!important}.flex-xl-grow-0{flex-grow:0!important}.flex-xl-grow-1{flex-grow:1!important}.flex-xl-shrink-0{flex-shrink:0!important}.flex-xl-shrink-1{flex-shrink:1!important}.flex-xl-wrap{flex-wrap:wrap!important}.flex-xl-nowrap{flex-wrap:nowrap!important}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xl-start{justify-content:flex-start!important}.justify-content-xl-end{justify-content:flex-end!important}.justify-content-xl-center{justify-content:center!important}.justify-content-xl-between{justify-content:space-between!important}.justify-content-xl-around{justify-content:space-around!important}.justify-content-xl-evenly{justify-content:space-evenly!important}.align-items-xl-start{align-items:flex-start!important}.align-items-xl-end{align-items:flex-end!important}.align-items-xl-center{align-items:center!important}.align-items-xl-baseline{align-items:baseline!important}.align-items-xl-stretch{align-items:stretch!important}.align-content-xl-start{align-content:flex-start!important}.align-content-xl-end{align-content:flex-end!important}.align-content-xl-center{align-content:center!important}.align-content-xl-between{align-content:space-between!important}.align-content-xl-around{align-content:space-around!important}.align-content-xl-stretch{align-content:stretch!important}.align-self-xl-auto{align-self:auto!important}.align-self-xl-start{align-self:flex-start!important}.align-self-xl-end{align-self:flex-end!important}.align-self-xl-center{align-self:center!important}.align-self-xl-baseline{align-self:baseline!important}.align-self-xl-stretch{align-self:stretch!important}.order-xl-first{order:-1!important}.order-xl-0{order:0!important}.order-xl-1{order:1!important}.order-xl-2{order:2!important}.order-xl-3{order:3!important}.order-xl-4{order:4!important}.order-xl-5{order:5!important}.order-xl-last{order:6!important}.m-xl-0{margin:0!important}.m-xl-1{margin:.25rem!important}.m-xl-2{margin:.5rem!important}.m-xl-3{margin:1rem!important}.m-xl-4{margin:1.5rem!important}.m-xl-5{margin:3rem!important}.m-xl-auto{margin:auto!important}.mx-xl-0{margin-left:0!important;margin-right:0!important}.mx-xl-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-xl-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-xl-3{margin-left:1rem!important;margin-right:1rem!important}.mx-xl-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-xl-5{margin-left:3rem!important;margin-right:3rem!important}.mx-xl-auto{margin-left:auto!important;margin-right:auto!important}.my-xl-0{margin-top:0!important;margin-bottom:0!important}.my-xl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xl-0{margin-top:0!important}.mt-xl-1{margin-top:.25rem!important}.mt-xl-2{margin-top:.5rem!important}.mt-xl-3{margin-top:1rem!important}.mt-xl-4{margin-top:1.5rem!important}.mt-xl-5{margin-top:3rem!important}.mt-xl-auto{margin-top:auto!important}.me-xl-0{margin-left:0!important}.me-xl-1{margin-left:.25rem!important}.me-xl-2{margin-left:.5rem!important}.me-xl-3{margin-left:1rem!important}.me-xl-4{margin-left:1.5rem!important}.me-xl-5{margin-left:3rem!important}.me-xl-auto{margin-left:auto!important}.mb-xl-0{margin-bottom:0!important}.mb-xl-1{margin-bottom:.25rem!important}.mb-xl-2{margin-bottom:.5rem!important}.mb-xl-3{margin-bottom:1rem!important}.mb-xl-4{margin-bottom:1.5rem!important}.mb-xl-5{margin-bottom:3rem!important}.mb-xl-auto{margin-bottom:auto!important}.ms-xl-0{margin-right:0!important}.ms-xl-1{margin-right:.25rem!important}.ms-xl-2{margin-right:.5rem!important}.ms-xl-3{margin-right:1rem!important}.ms-xl-4{margin-right:1.5rem!important}.ms-xl-5{margin-right:3rem!important}.ms-xl-auto{margin-right:auto!important}.p-xl-0{padding:0!important}.p-xl-1{padding:.25rem!important}.p-xl-2{padding:.5rem!important}.p-xl-3{padding:1rem!important}.p-xl-4{padding:1.5rem!important}.p-xl-5{padding:3rem!important}.px-xl-0{padding-left:0!important;padding-right:0!important}.px-xl-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-xl-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-xl-3{padding-left:1rem!important;padding-right:1rem!important}.px-xl-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-xl-5{padding-left:3rem!important;padding-right:3rem!important}.py-xl-0{padding-top:0!important;padding-bottom:0!important}.py-xl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xl-0{padding-top:0!important}.pt-xl-1{padding-top:.25rem!important}.pt-xl-2{padding-top:.5rem!important}.pt-xl-3{padding-top:1rem!important}.pt-xl-4{padding-top:1.5rem!important}.pt-xl-5{padding-top:3rem!important}.pe-xl-0{padding-left:0!important}.pe-xl-1{padding-left:.25rem!important}.pe-xl-2{padding-left:.5rem!important}.pe-xl-3{padding-left:1rem!important}.pe-xl-4{padding-left:1.5rem!important}.pe-xl-5{padding-left:3rem!important}.pb-xl-0{padding-bottom:0!important}.pb-xl-1{padding-bottom:.25rem!important}.pb-xl-2{padding-bottom:.5rem!important}.pb-xl-3{padding-bottom:1rem!important}.pb-xl-4{padding-bottom:1.5rem!important}.pb-xl-5{padding-bottom:3rem!important}.ps-xl-0{padding-right:0!important}.ps-xl-1{padding-right:.25rem!important}.ps-xl-2{padding-right:.5rem!important}.ps-xl-3{padding-right:1rem!important}.ps-xl-4{padding-right:1.5rem!important}.ps-xl-5{padding-right:3rem!important}}@media (min-width:1400px){.d-xxl-inline{display:inline!important}.d-xxl-inline-block{display:inline-block!important}.d-xxl-block{display:block!important}.d-xxl-grid{display:grid!important}.d-xxl-table{display:table!important}.d-xxl-table-row{display:table-row!important}.d-xxl-table-cell{display:table-cell!important}.d-xxl-flex{display:flex!important}.d-xxl-inline-flex{display:inline-flex!important}.d-xxl-none{display:none!important}.flex-xxl-fill{flex:1 1 auto!important}.flex-xxl-row{flex-direction:row!important}.flex-xxl-column{flex-direction:column!important}.flex-xxl-row-reverse{flex-direction:row-reverse!important}.flex-xxl-column-reverse{flex-direction:column-reverse!important}.flex-xxl-grow-0{flex-grow:0!important}.flex-xxl-grow-1{flex-grow:1!important}.flex-xxl-shrink-0{flex-shrink:0!important}.flex-xxl-shrink-1{flex-shrink:1!important}.flex-xxl-wrap{flex-wrap:wrap!important}.flex-xxl-nowrap{flex-wrap:nowrap!important}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse!important}.justify-content-xxl-start{justify-content:flex-start!important}.justify-content-xxl-end{justify-content:flex-end!important}.justify-content-xxl-center{justify-content:center!important}.justify-content-xxl-between{justify-content:space-between!important}.justify-content-xxl-around{justify-content:space-around!important}.justify-content-xxl-evenly{justify-content:space-evenly!important}.align-items-xxl-start{align-items:flex-start!important}.align-items-xxl-end{align-items:flex-end!important}.align-items-xxl-center{align-items:center!important}.align-items-xxl-baseline{align-items:baseline!important}.align-items-xxl-stretch{align-items:stretch!important}.align-content-xxl-start{align-content:flex-start!important}.align-content-xxl-end{align-content:flex-end!important}.align-content-xxl-center{align-content:center!important}.align-content-xxl-between{align-content:space-between!important}.align-content-xxl-around{align-content:space-around!important}.align-content-xxl-stretch{align-content:stretch!important}.align-self-xxl-auto{align-self:auto!important}.align-self-xxl-start{align-self:flex-start!important}.align-self-xxl-end{align-self:flex-end!important}.align-self-xxl-center{align-self:center!important}.align-self-xxl-baseline{align-self:baseline!important}.align-self-xxl-stretch{align-self:stretch!important}.order-xxl-first{order:-1!important}.order-xxl-0{order:0!important}.order-xxl-1{order:1!important}.order-xxl-2{order:2!important}.order-xxl-3{order:3!important}.order-xxl-4{order:4!important}.order-xxl-5{order:5!important}.order-xxl-last{order:6!important}.m-xxl-0{margin:0!important}.m-xxl-1{margin:.25rem!important}.m-xxl-2{margin:.5rem!important}.m-xxl-3{margin:1rem!important}.m-xxl-4{margin:1.5rem!important}.m-xxl-5{margin:3rem!important}.m-xxl-auto{margin:auto!important}.mx-xxl-0{margin-left:0!important;margin-right:0!important}.mx-xxl-1{margin-left:.25rem!important;margin-right:.25rem!important}.mx-xxl-2{margin-left:.5rem!important;margin-right:.5rem!important}.mx-xxl-3{margin-left:1rem!important;margin-right:1rem!important}.mx-xxl-4{margin-left:1.5rem!important;margin-right:1.5rem!important}.mx-xxl-5{margin-left:3rem!important;margin-right:3rem!important}.mx-xxl-auto{margin-left:auto!important;margin-right:auto!important}.my-xxl-0{margin-top:0!important;margin-bottom:0!important}.my-xxl-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.my-xxl-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.my-xxl-3{margin-top:1rem!important;margin-bottom:1rem!important}.my-xxl-4{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.my-xxl-5{margin-top:3rem!important;margin-bottom:3rem!important}.my-xxl-auto{margin-top:auto!important;margin-bottom:auto!important}.mt-xxl-0{margin-top:0!important}.mt-xxl-1{margin-top:.25rem!important}.mt-xxl-2{margin-top:.5rem!important}.mt-xxl-3{margin-top:1rem!important}.mt-xxl-4{margin-top:1.5rem!important}.mt-xxl-5{margin-top:3rem!important}.mt-xxl-auto{margin-top:auto!important}.me-xxl-0{margin-left:0!important}.me-xxl-1{margin-left:.25rem!important}.me-xxl-2{margin-left:.5rem!important}.me-xxl-3{margin-left:1rem!important}.me-xxl-4{margin-left:1.5rem!important}.me-xxl-5{margin-left:3rem!important}.me-xxl-auto{margin-left:auto!important}.mb-xxl-0{margin-bottom:0!important}.mb-xxl-1{margin-bottom:.25rem!important}.mb-xxl-2{margin-bottom:.5rem!important}.mb-xxl-3{margin-bottom:1rem!important}.mb-xxl-4{margin-bottom:1.5rem!important}.mb-xxl-5{margin-bottom:3rem!important}.mb-xxl-auto{margin-bottom:auto!important}.ms-xxl-0{margin-right:0!important}.ms-xxl-1{margin-right:.25rem!important}.ms-xxl-2{margin-right:.5rem!important}.ms-xxl-3{margin-right:1rem!important}.ms-xxl-4{margin-right:1.5rem!important}.ms-xxl-5{margin-right:3rem!important}.ms-xxl-auto{margin-right:auto!important}.p-xxl-0{padding:0!important}.p-xxl-1{padding:.25rem!important}.p-xxl-2{padding:.5rem!important}.p-xxl-3{padding:1rem!important}.p-xxl-4{padding:1.5rem!important}.p-xxl-5{padding:3rem!important}.px-xxl-0{padding-left:0!important;padding-right:0!important}.px-xxl-1{padding-left:.25rem!important;padding-right:.25rem!important}.px-xxl-2{padding-left:.5rem!important;padding-right:.5rem!important}.px-xxl-3{padding-left:1rem!important;padding-right:1rem!important}.px-xxl-4{padding-left:1.5rem!important;padding-right:1.5rem!important}.px-xxl-5{padding-left:3rem!important;padding-right:3rem!important}.py-xxl-0{padding-top:0!important;padding-bottom:0!important}.py-xxl-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-xxl-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.py-xxl-3{padding-top:1rem!important;padding-bottom:1rem!important}.py-xxl-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.py-xxl-5{padding-top:3rem!important;padding-bottom:3rem!important}.pt-xxl-0{padding-top:0!important}.pt-xxl-1{padding-top:.25rem!important}.pt-xxl-2{padding-top:.5rem!important}.pt-xxl-3{padding-top:1rem!important}.pt-xxl-4{padding-top:1.5rem!important}.pt-xxl-5{padding-top:3rem!important}.pe-xxl-0{padding-left:0!important}.pe-xxl-1{padding-left:.25rem!important}.pe-xxl-2{padding-left:.5rem!important}.pe-xxl-3{padding-left:1rem!important}.pe-xxl-4{padding-left:1.5rem!important}.pe-xxl-5{padding-left:3rem!important}.pb-xxl-0{padding-bottom:0!important}.pb-xxl-1{padding-bottom:.25rem!important}.pb-xxl-2{padding-bottom:.5rem!important}.pb-xxl-3{padding-bottom:1rem!important}.pb-xxl-4{padding-bottom:1.5rem!important}.pb-xxl-5{padding-bottom:3rem!important}.ps-xxl-0{padding-right:0!important}.ps-xxl-1{padding-right:.25rem!important}.ps-xxl-2{padding-right:.5rem!important}.ps-xxl-3{padding-right:1rem!important}.ps-xxl-4{padding-right:1.5rem!important}.ps-xxl-5{padding-right:3rem!important}}@media print{.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-grid{display:grid!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:flex!important}.d-print-inline-flex{display:inline-flex!important}.d-print-none{display:none!important}} -/*# sourceMappingURL=bootstrap-grid.rtl.min.css.map */ \ No newline at end of file diff --git a/site/templates/vendors/Bootstrap/css/bootstrap-grid.rtl.min.css.map b/site/templates/vendors/Bootstrap/css/bootstrap-grid.rtl.min.css.map deleted file mode 100644 index 93574dc..0000000 --- a/site/templates/vendors/Bootstrap/css/bootstrap-grid.rtl.min.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../../scss/mixins/_banner.scss","../../scss/_root.scss","dist/css/bootstrap-grid.rtl.css","../../scss/vendor/_rfs.scss","../../scss/mixins/_color-mode.scss","../../scss/_containers.scss","../../scss/mixins/_container.scss","../../scss/mixins/_breakpoints.scss","../../scss/_grid.scss","../../scss/mixins/_grid.scss","../../scss/mixins/_utilities.scss","../../scss/utilities/_api.scss"],"names":[],"mappings":"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","sourcesContent":["@mixin bsBanner($file) {\n /*!\n * Bootstrap #{$file} v5.3.0-alpha1 (https://getbootstrap.com/)\n * Copyright 2011-2022 The Bootstrap Authors\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n}\n",":root,\n[data-bs-theme=\"light\"] {\n // Note: Custom variable values only support SassScript inside `#{}`.\n\n // Colors\n //\n // Generate palettes for full colors, grays, and theme colors.\n\n @each $color, $value in $colors {\n --#{$prefix}#{$color}: #{$value};\n }\n\n @each $color, $value in $grays {\n --#{$prefix}gray-#{$color}: #{$value};\n }\n\n @each $color, $value in $theme-colors {\n --#{$prefix}#{$color}: #{$value};\n }\n\n @each $color, $value in $theme-colors-rgb {\n --#{$prefix}#{$color}-rgb: #{$value};\n }\n\n @each $color, $value in $theme-colors-text {\n --#{$prefix}#{$color}-text: #{$value};\n }\n\n @each $color, $value in $theme-colors-bg-subtle {\n --#{$prefix}#{$color}-bg-subtle: #{$value};\n }\n\n @each $color, $value in $theme-colors-border-subtle {\n --#{$prefix}#{$color}-border-subtle: #{$value};\n }\n\n --#{$prefix}white-rgb: #{to-rgb($white)};\n --#{$prefix}black-rgb: #{to-rgb($black)};\n --#{$prefix}body-color-rgb: #{to-rgb($body-color)};\n --#{$prefix}body-bg-rgb: #{to-rgb($body-bg)};\n\n // Fonts\n\n // Note: Use `inspect` for lists so that quoted items keep the quotes.\n // See https://github.com/sass/sass/issues/2383#issuecomment-336349172\n --#{$prefix}font-sans-serif: #{inspect($font-family-sans-serif)};\n --#{$prefix}font-monospace: #{inspect($font-family-monospace)};\n --#{$prefix}gradient: #{$gradient};\n\n // Root and body\n // scss-docs-start root-body-variables\n @if $font-size-root != null {\n --#{$prefix}root-font-size: #{$font-size-root};\n }\n --#{$prefix}body-font-family: #{inspect($font-family-base)};\n @include rfs($font-size-base, --#{$prefix}body-font-size);\n --#{$prefix}body-font-weight: #{$font-weight-base};\n --#{$prefix}body-line-height: #{$line-height-base};\n --#{$prefix}body-color: #{$body-color};\n\n --#{$prefix}emphasis-color: #{$body-emphasis-color};\n --#{$prefix}emphasis-color-rgb: #{to-rgb($body-emphasis-color)};\n\n --#{$prefix}secondary-color: #{$body-secondary-color};\n --#{$prefix}secondary-color-rgb: #{to-rgb($body-secondary-color)};\n --#{$prefix}secondary-bg: #{$body-secondary-bg};\n --#{$prefix}secondary-bg-rgb: #{to-rgb($body-secondary-bg)};\n\n --#{$prefix}tertiary-color: #{$body-tertiary-color};\n --#{$prefix}tertiary-color-rgb: #{to-rgb($body-tertiary-color)};\n --#{$prefix}tertiary-bg: #{$body-tertiary-bg};\n --#{$prefix}tertiary-bg-rgb: #{to-rgb($body-tertiary-bg)};\n\n @if $body-text-align != null {\n --#{$prefix}body-text-align: #{$body-text-align};\n }\n --#{$prefix}body-bg: #{$body-bg};\n --#{$prefix}body-bg-rgb: #{to-rgb($body-bg)};\n // scss-docs-end root-body-variables\n\n @if $headings-color != null {\n --#{$prefix}heading-color: #{$headings-color};\n }\n\n --#{$prefix}link-color: #{$link-color};\n --#{$prefix}link-color-rgb: #{to-rgb($link-color)};\n --#{$prefix}link-decoration: #{$link-decoration};\n\n --#{$prefix}link-hover-color: #{$link-hover-color};\n --#{$prefix}link-hover-color-rgb: #{to-rgb($link-hover-color)};\n\n @if $link-hover-decoration != null {\n --#{$prefix}link-hover-decoration: #{$link-hover-decoration};\n }\n\n --#{$prefix}code-color: #{$code-color};\n --#{$prefix}highlight-bg: #{$mark-bg};\n\n // scss-docs-start root-border-var\n --#{$prefix}border-width: #{$border-width};\n --#{$prefix}border-style: #{$border-style};\n --#{$prefix}border-color: #{$border-color};\n --#{$prefix}border-color-translucent: #{$border-color-translucent};\n\n --#{$prefix}border-radius: #{$border-radius};\n --#{$prefix}border-radius-sm: #{$border-radius-sm};\n --#{$prefix}border-radius-lg: #{$border-radius-lg};\n --#{$prefix}border-radius-xl: #{$border-radius-xl};\n --#{$prefix}border-radius-2xl: #{$border-radius-2xl};\n --#{$prefix}border-radius-pill: #{$border-radius-pill};\n // scss-docs-end root-border-var\n\n --#{$prefix}box-shadow: #{$box-shadow};\n --#{$prefix}box-shadow-sm: #{$box-shadow-sm};\n --#{$prefix}box-shadow-lg: #{$box-shadow-lg};\n --#{$prefix}box-shadow-inset: #{$box-shadow-inset};\n\n --#{$prefix}emphasis-color: #{$emphasis-color};\n\n // scss-docs-start form-control-vars\n --#{$prefix}form-control-bg: var(--#{$prefix}body-bg);\n --#{$prefix}form-control-disabled-bg: var(--#{$prefix}secondary-bg);\n // scss-docs-end form-control-vars\n\n --#{$prefix}highlight-bg: #{$mark-bg};\n\n @each $name, $value in $grid-breakpoints {\n --#{$prefix}breakpoint-#{$name}: #{$value};\n }\n}\n\n@if $enable-dark-mode {\n @include color-mode(dark, true) {\n // scss-docs-start root-dark-mode-vars\n --#{$prefix}body-color: #{$body-color-dark};\n --#{$prefix}body-color-rgb: #{to-rgb($body-color-dark)};\n --#{$prefix}body-bg: #{$body-bg-dark};\n --#{$prefix}body-bg-rgb: #{to-rgb($body-bg-dark)};\n\n --#{$prefix}emphasis-color: #{$body-emphasis-color-dark};\n --#{$prefix}emphasis-color-rgb: #{to-rgb($body-emphasis-color-dark)};\n\n --#{$prefix}secondary-color: #{$body-secondary-color-dark};\n --#{$prefix}secondary-color-rgb: #{to-rgb($body-secondary-color-dark)};\n --#{$prefix}secondary-bg: #{$body-secondary-bg-dark};\n --#{$prefix}secondary-bg-rgb: #{to-rgb($body-secondary-bg-dark)};\n\n --#{$prefix}tertiary-color: #{$body-tertiary-color-dark};\n --#{$prefix}tertiary-color-rgb: #{to-rgb($body-tertiary-color-dark)};\n --#{$prefix}tertiary-bg: #{$body-tertiary-bg-dark};\n --#{$prefix}tertiary-bg-rgb: #{to-rgb($body-tertiary-bg-dark)};\n\n --#{$prefix}emphasis-color: #{$emphasis-color-dark};\n\n --#{$prefix}primary-text: #{$primary-text-dark};\n --#{$prefix}secondary-text: #{$secondary-text-dark};\n --#{$prefix}success-text: #{$success-text-dark};\n --#{$prefix}info-text: #{$info-text-dark};\n --#{$prefix}warning-text: #{$warning-text-dark};\n --#{$prefix}danger-text: #{$danger-text-dark};\n --#{$prefix}light-text: #{$light-text-dark};\n --#{$prefix}dark-text: #{$dark-text-dark};\n\n --#{$prefix}primary-bg-subtle: #{$primary-bg-subtle-dark};\n --#{$prefix}secondary-bg-subtle: #{$secondary-bg-subtle-dark};\n --#{$prefix}success-bg-subtle: #{$success-bg-subtle-dark};\n --#{$prefix}info-bg-subtle: #{$info-bg-subtle-dark};\n --#{$prefix}warning-bg-subtle: #{$warning-bg-subtle-dark};\n --#{$prefix}danger-bg-subtle: #{$danger-bg-subtle-dark};\n --#{$prefix}light-bg-subtle: #{$light-bg-subtle-dark};\n --#{$prefix}dark-bg-subtle: #{$dark-bg-subtle-dark};\n\n --#{$prefix}primary-border-subtle: #{$primary-border-subtle-dark};\n --#{$prefix}secondary-border-subtle: #{$secondary-border-subtle-dark};\n --#{$prefix}success-border-subtle: #{$success-border-subtle-dark};\n --#{$prefix}info-border-subtle: #{$info-border-subtle-dark};\n --#{$prefix}warning-border-subtle: #{$warning-border-subtle-dark};\n --#{$prefix}danger-border-subtle: #{$danger-border-subtle-dark};\n --#{$prefix}light-border-subtle: #{$light-border-subtle-dark};\n --#{$prefix}dark-border-subtle: #{$dark-border-subtle-dark};\n\n --#{$prefix}heading-color: #{$headings-color-dark};\n\n --#{$prefix}link-color: #{$link-color-dark};\n --#{$prefix}link-hover-color: #{$link-hover-color-dark};\n --#{$prefix}link-color-rgb: #{to-rgb($link-color-dark)};\n --#{$prefix}link-hover-color-rgb: #{to-rgb($link-hover-color-dark)};\n\n --#{$prefix}code-color: #{$code-color-dark};\n\n --#{$prefix}border-color: #{$border-color-dark};\n --#{$prefix}border-color-translucent: #{$border-color-translucent-dark};\n // scss-docs-end root-dark-mode-vars\n }\n}\n","/*!\n * Bootstrap Grid v5.3.0-alpha1 (https://getbootstrap.com/)\n * Copyright 2011-2022 The Bootstrap Authors\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n:root,\n[data-bs-theme=light] {\n --bs-blue: #0d6efd;\n --bs-indigo: #6610f2;\n --bs-purple: #6f42c1;\n --bs-pink: #d63384;\n --bs-red: #dc3545;\n --bs-orange: #fd7e14;\n --bs-yellow: #ffc107;\n --bs-green: #198754;\n --bs-teal: #20c997;\n --bs-cyan: #0dcaf0;\n --bs-black: #000;\n --bs-white: #fff;\n --bs-gray: #6c757d;\n --bs-gray-dark: #343a40;\n --bs-gray-100: #f8f9fa;\n --bs-gray-200: #e9ecef;\n --bs-gray-300: #dee2e6;\n --bs-gray-400: #ced4da;\n --bs-gray-500: #adb5bd;\n --bs-gray-600: #6c757d;\n --bs-gray-700: #495057;\n --bs-gray-800: #343a40;\n --bs-gray-900: #212529;\n --bs-primary: #0d6efd;\n --bs-secondary: #6c757d;\n --bs-success: #198754;\n --bs-info: #0dcaf0;\n --bs-warning: #ffc107;\n --bs-danger: #dc3545;\n --bs-light: #f8f9fa;\n --bs-dark: #212529;\n --bs-primary-rgb: 13, 110, 253;\n --bs-secondary-rgb: 108, 117, 125;\n --bs-success-rgb: 25, 135, 84;\n --bs-info-rgb: 13, 202, 240;\n --bs-warning-rgb: 255, 193, 7;\n --bs-danger-rgb: 220, 53, 69;\n --bs-light-rgb: 248, 249, 250;\n --bs-dark-rgb: 33, 37, 41;\n --bs-primary-text: #0a58ca;\n --bs-secondary-text: #6c757d;\n --bs-success-text: #146c43;\n --bs-info-text: #087990;\n --bs-warning-text: #997404;\n --bs-danger-text: #b02a37;\n --bs-light-text: #6c757d;\n --bs-dark-text: #495057;\n --bs-primary-bg-subtle: #cfe2ff;\n --bs-secondary-bg-subtle: #f8f9fa;\n --bs-success-bg-subtle: #d1e7dd;\n --bs-info-bg-subtle: #cff4fc;\n --bs-warning-bg-subtle: #fff3cd;\n --bs-danger-bg-subtle: #f8d7da;\n --bs-light-bg-subtle: #fcfcfd;\n --bs-dark-bg-subtle: #ced4da;\n --bs-primary-border-subtle: #9ec5fe;\n --bs-secondary-border-subtle: #e9ecef;\n --bs-success-border-subtle: #a3cfbb;\n --bs-info-border-subtle: #9eeaf9;\n --bs-warning-border-subtle: #ffe69c;\n --bs-danger-border-subtle: #f1aeb5;\n --bs-light-border-subtle: #e9ecef;\n --bs-dark-border-subtle: #adb5bd;\n --bs-white-rgb: 255, 255, 255;\n --bs-black-rgb: 0, 0, 0;\n --bs-body-color-rgb: 33, 37, 41;\n --bs-body-bg-rgb: 255, 255, 255;\n --bs-font-sans-serif: system-ui, -apple-system, \"Segoe UI\", Roboto, \"Helvetica Neue\", \"Noto Sans\", \"Liberation Sans\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\n --bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;\n --bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));\n --bs-body-font-family: var(--bs-font-sans-serif);\n --bs-body-font-size: 1rem;\n --bs-body-font-weight: 400;\n --bs-body-line-height: 1.5;\n --bs-body-color: #212529;\n --bs-emphasis-color: #000;\n --bs-emphasis-color-rgb: 0, 0, 0;\n --bs-secondary-color: rgba(33, 37, 41, 0.75);\n --bs-secondary-color-rgb: 33, 37, 41;\n --bs-secondary-bg: #e9ecef;\n --bs-secondary-bg-rgb: 233, 236, 239;\n --bs-tertiary-color: rgba(33, 37, 41, 0.5);\n --bs-tertiary-color-rgb: 33, 37, 41;\n --bs-tertiary-bg: #f8f9fa;\n --bs-tertiary-bg-rgb: 248, 249, 250;\n --bs-body-bg: #fff;\n --bs-body-bg-rgb: 255, 255, 255;\n --bs-link-color: #0d6efd;\n --bs-link-color-rgb: 13, 110, 253;\n --bs-link-decoration: underline;\n --bs-link-hover-color: #0a58ca;\n --bs-link-hover-color-rgb: 10, 88, 202;\n --bs-code-color: #d63384;\n --bs-highlight-bg: #fff3cd;\n --bs-border-width: 1px;\n --bs-border-style: solid;\n --bs-border-color: #dee2e6;\n --bs-border-color-translucent: rgba(0, 0, 0, 0.175);\n --bs-border-radius: 0.375rem;\n --bs-border-radius-sm: 0.25rem;\n --bs-border-radius-lg: 0.5rem;\n --bs-border-radius-xl: 1rem;\n --bs-border-radius-2xl: 2rem;\n --bs-border-radius-pill: 50rem;\n --bs-box-shadow: 0 0.5rem 1rem rgba(var(--bs-body-color-rgb), 0.15);\n --bs-box-shadow-sm: 0 0.125rem 0.25rem rgba(var(--bs-body-color-rgb), 0.075);\n --bs-box-shadow-lg: 0 1rem 3rem rgba(var(--bs-body-color-rgb), 0.175);\n --bs-box-shadow-inset: inset 0 1px 2px rgba(var(--bs-body-color-rgb), 0.075);\n --bs-emphasis-color: #000;\n --bs-form-control-bg: var(--bs-body-bg);\n --bs-form-control-disabled-bg: var(--bs-secondary-bg);\n --bs-highlight-bg: #fff3cd;\n --bs-breakpoint-xs: 0;\n --bs-breakpoint-sm: 576px;\n --bs-breakpoint-md: 768px;\n --bs-breakpoint-lg: 992px;\n --bs-breakpoint-xl: 1200px;\n --bs-breakpoint-xxl: 1400px;\n}\n\n[data-bs-theme=dark] {\n --bs-body-color: #adb5bd;\n --bs-body-color-rgb: 173, 181, 189;\n --bs-body-bg: #212529;\n --bs-body-bg-rgb: 33, 37, 41;\n --bs-emphasis-color: #f8f9fa;\n --bs-emphasis-color-rgb: 248, 249, 250;\n --bs-secondary-color: rgba(173, 181, 189, 0.75);\n --bs-secondary-color-rgb: 173, 181, 189;\n --bs-secondary-bg: #343a40;\n --bs-secondary-bg-rgb: 52, 58, 64;\n --bs-tertiary-color: rgba(173, 181, 189, 0.5);\n --bs-tertiary-color-rgb: 173, 181, 189;\n --bs-tertiary-bg: #2b3035;\n --bs-tertiary-bg-rgb: 43, 48, 53;\n --bs-emphasis-color: #fff;\n --bs-primary-text: #6ea8fe;\n --bs-secondary-text: #dee2e6;\n --bs-success-text: #75b798;\n --bs-info-text: #6edff6;\n --bs-warning-text: #ffda6a;\n --bs-danger-text: #ea868f;\n --bs-light-text: #f8f9fa;\n --bs-dark-text: #dee2e6;\n --bs-primary-bg-subtle: #031633;\n --bs-secondary-bg-subtle: #212529;\n --bs-success-bg-subtle: #051b11;\n --bs-info-bg-subtle: #032830;\n --bs-warning-bg-subtle: #332701;\n --bs-danger-bg-subtle: #2c0b0e;\n --bs-light-bg-subtle: #343a40;\n --bs-dark-bg-subtle: #1a1d20;\n --bs-primary-border-subtle: #084298;\n --bs-secondary-border-subtle: #495057;\n --bs-success-border-subtle: #0f5132;\n --bs-info-border-subtle: #055160;\n --bs-warning-border-subtle: #664d03;\n --bs-danger-border-subtle: #842029;\n --bs-light-border-subtle: #495057;\n --bs-dark-border-subtle: #343a40;\n --bs-heading-color: #fff;\n --bs-link-color: #6ea8fe;\n --bs-link-hover-color: #9ec5fe;\n --bs-link-color-rgb: 110, 168, 254;\n --bs-link-hover-color-rgb: 158, 197, 254;\n --bs-code-color: #e685b5;\n --bs-border-color: #495057;\n --bs-border-color-translucent: rgba(255, 255, 255, 0.15);\n}\n\n.container,\n.container-fluid,\n.container-xxl,\n.container-xl,\n.container-lg,\n.container-md,\n.container-sm {\n --bs-gutter-x: 1.5rem;\n --bs-gutter-y: 0;\n width: 100%;\n padding-left: calc(var(--bs-gutter-x) * 0.5);\n padding-right: calc(var(--bs-gutter-x) * 0.5);\n margin-left: auto;\n margin-right: auto;\n}\n\n@media (min-width: 576px) {\n .container-sm, .container {\n max-width: 540px;\n }\n}\n@media (min-width: 768px) {\n .container-md, .container-sm, .container {\n max-width: 720px;\n }\n}\n@media (min-width: 992px) {\n .container-lg, .container-md, .container-sm, .container {\n max-width: 960px;\n }\n}\n@media (min-width: 1200px) {\n .container-xl, .container-lg, .container-md, .container-sm, .container {\n max-width: 1140px;\n }\n}\n@media (min-width: 1400px) {\n .container-xxl, .container-xl, .container-lg, .container-md, .container-sm, .container {\n max-width: 1320px;\n }\n}\n.row {\n --bs-gutter-x: 1.5rem;\n --bs-gutter-y: 0;\n display: flex;\n flex-wrap: wrap;\n margin-top: calc(-1 * var(--bs-gutter-y));\n margin-left: calc(-0.5 * var(--bs-gutter-x));\n margin-right: calc(-0.5 * var(--bs-gutter-x));\n}\n.row > * {\n box-sizing: border-box;\n flex-shrink: 0;\n width: 100%;\n max-width: 100%;\n padding-left: calc(var(--bs-gutter-x) * 0.5);\n padding-right: calc(var(--bs-gutter-x) * 0.5);\n margin-top: var(--bs-gutter-y);\n}\n\n.col {\n flex: 1 0 0%;\n}\n\n.row-cols-auto > * {\n flex: 0 0 auto;\n width: auto;\n}\n\n.row-cols-1 > * {\n flex: 0 0 auto;\n width: 100%;\n}\n\n.row-cols-2 > * {\n flex: 0 0 auto;\n width: 50%;\n}\n\n.row-cols-3 > * {\n flex: 0 0 auto;\n width: 33.3333333333%;\n}\n\n.row-cols-4 > * {\n flex: 0 0 auto;\n width: 25%;\n}\n\n.row-cols-5 > * {\n flex: 0 0 auto;\n width: 20%;\n}\n\n.row-cols-6 > * {\n flex: 0 0 auto;\n width: 16.6666666667%;\n}\n\n.col-auto {\n flex: 0 0 auto;\n width: auto;\n}\n\n.col-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n}\n\n.col-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n}\n\n.col-3 {\n flex: 0 0 auto;\n width: 25%;\n}\n\n.col-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n}\n\n.col-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n}\n\n.col-6 {\n flex: 0 0 auto;\n width: 50%;\n}\n\n.col-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n}\n\n.col-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n}\n\n.col-9 {\n flex: 0 0 auto;\n width: 75%;\n}\n\n.col-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n}\n\n.col-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n}\n\n.col-12 {\n flex: 0 0 auto;\n width: 100%;\n}\n\n.offset-1 {\n margin-right: 8.33333333%;\n}\n\n.offset-2 {\n margin-right: 16.66666667%;\n}\n\n.offset-3 {\n margin-right: 25%;\n}\n\n.offset-4 {\n margin-right: 33.33333333%;\n}\n\n.offset-5 {\n margin-right: 41.66666667%;\n}\n\n.offset-6 {\n margin-right: 50%;\n}\n\n.offset-7 {\n margin-right: 58.33333333%;\n}\n\n.offset-8 {\n margin-right: 66.66666667%;\n}\n\n.offset-9 {\n margin-right: 75%;\n}\n\n.offset-10 {\n margin-right: 83.33333333%;\n}\n\n.offset-11 {\n margin-right: 91.66666667%;\n}\n\n.g-0,\n.gx-0 {\n --bs-gutter-x: 0;\n}\n\n.g-0,\n.gy-0 {\n --bs-gutter-y: 0;\n}\n\n.g-1,\n.gx-1 {\n --bs-gutter-x: 0.25rem;\n}\n\n.g-1,\n.gy-1 {\n --bs-gutter-y: 0.25rem;\n}\n\n.g-2,\n.gx-2 {\n --bs-gutter-x: 0.5rem;\n}\n\n.g-2,\n.gy-2 {\n --bs-gutter-y: 0.5rem;\n}\n\n.g-3,\n.gx-3 {\n --bs-gutter-x: 1rem;\n}\n\n.g-3,\n.gy-3 {\n --bs-gutter-y: 1rem;\n}\n\n.g-4,\n.gx-4 {\n --bs-gutter-x: 1.5rem;\n}\n\n.g-4,\n.gy-4 {\n --bs-gutter-y: 1.5rem;\n}\n\n.g-5,\n.gx-5 {\n --bs-gutter-x: 3rem;\n}\n\n.g-5,\n.gy-5 {\n --bs-gutter-y: 3rem;\n}\n\n@media (min-width: 576px) {\n .col-sm {\n flex: 1 0 0%;\n }\n .row-cols-sm-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-sm-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-sm-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-sm-3 > * {\n flex: 0 0 auto;\n width: 33.3333333333%;\n }\n .row-cols-sm-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-sm-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-sm-6 > * {\n flex: 0 0 auto;\n width: 16.6666666667%;\n }\n .col-sm-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-sm-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-sm-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-sm-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-sm-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-sm-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-sm-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-sm-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-sm-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-sm-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-sm-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-sm-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-sm-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-sm-0 {\n margin-right: 0;\n }\n .offset-sm-1 {\n margin-right: 8.33333333%;\n }\n .offset-sm-2 {\n margin-right: 16.66666667%;\n }\n .offset-sm-3 {\n margin-right: 25%;\n }\n .offset-sm-4 {\n margin-right: 33.33333333%;\n }\n .offset-sm-5 {\n margin-right: 41.66666667%;\n }\n .offset-sm-6 {\n margin-right: 50%;\n }\n .offset-sm-7 {\n margin-right: 58.33333333%;\n }\n .offset-sm-8 {\n margin-right: 66.66666667%;\n }\n .offset-sm-9 {\n margin-right: 75%;\n }\n .offset-sm-10 {\n margin-right: 83.33333333%;\n }\n .offset-sm-11 {\n margin-right: 91.66666667%;\n }\n .g-sm-0,\n .gx-sm-0 {\n --bs-gutter-x: 0;\n }\n .g-sm-0,\n .gy-sm-0 {\n --bs-gutter-y: 0;\n }\n .g-sm-1,\n .gx-sm-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-sm-1,\n .gy-sm-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-sm-2,\n .gx-sm-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-sm-2,\n .gy-sm-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-sm-3,\n .gx-sm-3 {\n --bs-gutter-x: 1rem;\n }\n .g-sm-3,\n .gy-sm-3 {\n --bs-gutter-y: 1rem;\n }\n .g-sm-4,\n .gx-sm-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-sm-4,\n .gy-sm-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-sm-5,\n .gx-sm-5 {\n --bs-gutter-x: 3rem;\n }\n .g-sm-5,\n .gy-sm-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 768px) {\n .col-md {\n flex: 1 0 0%;\n }\n .row-cols-md-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-md-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-md-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-md-3 > * {\n flex: 0 0 auto;\n width: 33.3333333333%;\n }\n .row-cols-md-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-md-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-md-6 > * {\n flex: 0 0 auto;\n width: 16.6666666667%;\n }\n .col-md-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-md-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-md-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-md-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-md-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-md-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-md-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-md-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-md-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-md-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-md-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-md-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-md-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-md-0 {\n margin-right: 0;\n }\n .offset-md-1 {\n margin-right: 8.33333333%;\n }\n .offset-md-2 {\n margin-right: 16.66666667%;\n }\n .offset-md-3 {\n margin-right: 25%;\n }\n .offset-md-4 {\n margin-right: 33.33333333%;\n }\n .offset-md-5 {\n margin-right: 41.66666667%;\n }\n .offset-md-6 {\n margin-right: 50%;\n }\n .offset-md-7 {\n margin-right: 58.33333333%;\n }\n .offset-md-8 {\n margin-right: 66.66666667%;\n }\n .offset-md-9 {\n margin-right: 75%;\n }\n .offset-md-10 {\n margin-right: 83.33333333%;\n }\n .offset-md-11 {\n margin-right: 91.66666667%;\n }\n .g-md-0,\n .gx-md-0 {\n --bs-gutter-x: 0;\n }\n .g-md-0,\n .gy-md-0 {\n --bs-gutter-y: 0;\n }\n .g-md-1,\n .gx-md-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-md-1,\n .gy-md-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-md-2,\n .gx-md-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-md-2,\n .gy-md-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-md-3,\n .gx-md-3 {\n --bs-gutter-x: 1rem;\n }\n .g-md-3,\n .gy-md-3 {\n --bs-gutter-y: 1rem;\n }\n .g-md-4,\n .gx-md-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-md-4,\n .gy-md-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-md-5,\n .gx-md-5 {\n --bs-gutter-x: 3rem;\n }\n .g-md-5,\n .gy-md-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 992px) {\n .col-lg {\n flex: 1 0 0%;\n }\n .row-cols-lg-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-lg-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-lg-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-lg-3 > * {\n flex: 0 0 auto;\n width: 33.3333333333%;\n }\n .row-cols-lg-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-lg-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-lg-6 > * {\n flex: 0 0 auto;\n width: 16.6666666667%;\n }\n .col-lg-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-lg-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-lg-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-lg-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-lg-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-lg-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-lg-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-lg-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-lg-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-lg-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-lg-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-lg-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-lg-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-lg-0 {\n margin-right: 0;\n }\n .offset-lg-1 {\n margin-right: 8.33333333%;\n }\n .offset-lg-2 {\n margin-right: 16.66666667%;\n }\n .offset-lg-3 {\n margin-right: 25%;\n }\n .offset-lg-4 {\n margin-right: 33.33333333%;\n }\n .offset-lg-5 {\n margin-right: 41.66666667%;\n }\n .offset-lg-6 {\n margin-right: 50%;\n }\n .offset-lg-7 {\n margin-right: 58.33333333%;\n }\n .offset-lg-8 {\n margin-right: 66.66666667%;\n }\n .offset-lg-9 {\n margin-right: 75%;\n }\n .offset-lg-10 {\n margin-right: 83.33333333%;\n }\n .offset-lg-11 {\n margin-right: 91.66666667%;\n }\n .g-lg-0,\n .gx-lg-0 {\n --bs-gutter-x: 0;\n }\n .g-lg-0,\n .gy-lg-0 {\n --bs-gutter-y: 0;\n }\n .g-lg-1,\n .gx-lg-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-lg-1,\n .gy-lg-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-lg-2,\n .gx-lg-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-lg-2,\n .gy-lg-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-lg-3,\n .gx-lg-3 {\n --bs-gutter-x: 1rem;\n }\n .g-lg-3,\n .gy-lg-3 {\n --bs-gutter-y: 1rem;\n }\n .g-lg-4,\n .gx-lg-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-lg-4,\n .gy-lg-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-lg-5,\n .gx-lg-5 {\n --bs-gutter-x: 3rem;\n }\n .g-lg-5,\n .gy-lg-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 1200px) {\n .col-xl {\n flex: 1 0 0%;\n }\n .row-cols-xl-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-xl-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-xl-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-xl-3 > * {\n flex: 0 0 auto;\n width: 33.3333333333%;\n }\n .row-cols-xl-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-xl-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-xl-6 > * {\n flex: 0 0 auto;\n width: 16.6666666667%;\n }\n .col-xl-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-xl-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-xl-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-xl-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-xl-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-xl-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-xl-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-xl-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-xl-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-xl-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-xl-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-xl-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-xl-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-xl-0 {\n margin-right: 0;\n }\n .offset-xl-1 {\n margin-right: 8.33333333%;\n }\n .offset-xl-2 {\n margin-right: 16.66666667%;\n }\n .offset-xl-3 {\n margin-right: 25%;\n }\n .offset-xl-4 {\n margin-right: 33.33333333%;\n }\n .offset-xl-5 {\n margin-right: 41.66666667%;\n }\n .offset-xl-6 {\n margin-right: 50%;\n }\n .offset-xl-7 {\n margin-right: 58.33333333%;\n }\n .offset-xl-8 {\n margin-right: 66.66666667%;\n }\n .offset-xl-9 {\n margin-right: 75%;\n }\n .offset-xl-10 {\n margin-right: 83.33333333%;\n }\n .offset-xl-11 {\n margin-right: 91.66666667%;\n }\n .g-xl-0,\n .gx-xl-0 {\n --bs-gutter-x: 0;\n }\n .g-xl-0,\n .gy-xl-0 {\n --bs-gutter-y: 0;\n }\n .g-xl-1,\n .gx-xl-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-xl-1,\n .gy-xl-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-xl-2,\n .gx-xl-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-xl-2,\n .gy-xl-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-xl-3,\n .gx-xl-3 {\n --bs-gutter-x: 1rem;\n }\n .g-xl-3,\n .gy-xl-3 {\n --bs-gutter-y: 1rem;\n }\n .g-xl-4,\n .gx-xl-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-xl-4,\n .gy-xl-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-xl-5,\n .gx-xl-5 {\n --bs-gutter-x: 3rem;\n }\n .g-xl-5,\n .gy-xl-5 {\n --bs-gutter-y: 3rem;\n }\n}\n@media (min-width: 1400px) {\n .col-xxl {\n flex: 1 0 0%;\n }\n .row-cols-xxl-auto > * {\n flex: 0 0 auto;\n width: auto;\n }\n .row-cols-xxl-1 > * {\n flex: 0 0 auto;\n width: 100%;\n }\n .row-cols-xxl-2 > * {\n flex: 0 0 auto;\n width: 50%;\n }\n .row-cols-xxl-3 > * {\n flex: 0 0 auto;\n width: 33.3333333333%;\n }\n .row-cols-xxl-4 > * {\n flex: 0 0 auto;\n width: 25%;\n }\n .row-cols-xxl-5 > * {\n flex: 0 0 auto;\n width: 20%;\n }\n .row-cols-xxl-6 > * {\n flex: 0 0 auto;\n width: 16.6666666667%;\n }\n .col-xxl-auto {\n flex: 0 0 auto;\n width: auto;\n }\n .col-xxl-1 {\n flex: 0 0 auto;\n width: 8.33333333%;\n }\n .col-xxl-2 {\n flex: 0 0 auto;\n width: 16.66666667%;\n }\n .col-xxl-3 {\n flex: 0 0 auto;\n width: 25%;\n }\n .col-xxl-4 {\n flex: 0 0 auto;\n width: 33.33333333%;\n }\n .col-xxl-5 {\n flex: 0 0 auto;\n width: 41.66666667%;\n }\n .col-xxl-6 {\n flex: 0 0 auto;\n width: 50%;\n }\n .col-xxl-7 {\n flex: 0 0 auto;\n width: 58.33333333%;\n }\n .col-xxl-8 {\n flex: 0 0 auto;\n width: 66.66666667%;\n }\n .col-xxl-9 {\n flex: 0 0 auto;\n width: 75%;\n }\n .col-xxl-10 {\n flex: 0 0 auto;\n width: 83.33333333%;\n }\n .col-xxl-11 {\n flex: 0 0 auto;\n width: 91.66666667%;\n }\n .col-xxl-12 {\n flex: 0 0 auto;\n width: 100%;\n }\n .offset-xxl-0 {\n margin-right: 0;\n }\n .offset-xxl-1 {\n margin-right: 8.33333333%;\n }\n .offset-xxl-2 {\n margin-right: 16.66666667%;\n }\n .offset-xxl-3 {\n margin-right: 25%;\n }\n .offset-xxl-4 {\n margin-right: 33.33333333%;\n }\n .offset-xxl-5 {\n margin-right: 41.66666667%;\n }\n .offset-xxl-6 {\n margin-right: 50%;\n }\n .offset-xxl-7 {\n margin-right: 58.33333333%;\n }\n .offset-xxl-8 {\n margin-right: 66.66666667%;\n }\n .offset-xxl-9 {\n margin-right: 75%;\n }\n .offset-xxl-10 {\n margin-right: 83.33333333%;\n }\n .offset-xxl-11 {\n margin-right: 91.66666667%;\n }\n .g-xxl-0,\n .gx-xxl-0 {\n --bs-gutter-x: 0;\n }\n .g-xxl-0,\n .gy-xxl-0 {\n --bs-gutter-y: 0;\n }\n .g-xxl-1,\n .gx-xxl-1 {\n --bs-gutter-x: 0.25rem;\n }\n .g-xxl-1,\n .gy-xxl-1 {\n --bs-gutter-y: 0.25rem;\n }\n .g-xxl-2,\n .gx-xxl-2 {\n --bs-gutter-x: 0.5rem;\n }\n .g-xxl-2,\n .gy-xxl-2 {\n --bs-gutter-y: 0.5rem;\n }\n .g-xxl-3,\n .gx-xxl-3 {\n --bs-gutter-x: 1rem;\n }\n .g-xxl-3,\n .gy-xxl-3 {\n --bs-gutter-y: 1rem;\n }\n .g-xxl-4,\n .gx-xxl-4 {\n --bs-gutter-x: 1.5rem;\n }\n .g-xxl-4,\n .gy-xxl-4 {\n --bs-gutter-y: 1.5rem;\n }\n .g-xxl-5,\n .gx-xxl-5 {\n --bs-gutter-x: 3rem;\n }\n .g-xxl-5,\n .gy-xxl-5 {\n --bs-gutter-y: 3rem;\n }\n}\n.d-inline {\n display: inline !important;\n}\n\n.d-inline-block {\n display: inline-block !important;\n}\n\n.d-block {\n display: block !important;\n}\n\n.d-grid {\n display: grid !important;\n}\n\n.d-table {\n display: table !important;\n}\n\n.d-table-row {\n display: table-row !important;\n}\n\n.d-table-cell {\n display: table-cell !important;\n}\n\n.d-flex {\n display: flex !important;\n}\n\n.d-inline-flex {\n display: inline-flex !important;\n}\n\n.d-none {\n display: none !important;\n}\n\n.flex-fill {\n flex: 1 1 auto !important;\n}\n\n.flex-row {\n flex-direction: row !important;\n}\n\n.flex-column {\n flex-direction: column !important;\n}\n\n.flex-row-reverse {\n flex-direction: row-reverse !important;\n}\n\n.flex-column-reverse {\n flex-direction: column-reverse !important;\n}\n\n.flex-grow-0 {\n flex-grow: 0 !important;\n}\n\n.flex-grow-1 {\n flex-grow: 1 !important;\n}\n\n.flex-shrink-0 {\n flex-shrink: 0 !important;\n}\n\n.flex-shrink-1 {\n flex-shrink: 1 !important;\n}\n\n.flex-wrap {\n flex-wrap: wrap !important;\n}\n\n.flex-nowrap {\n flex-wrap: nowrap !important;\n}\n\n.flex-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n}\n\n.justify-content-start {\n justify-content: flex-start !important;\n}\n\n.justify-content-end {\n justify-content: flex-end !important;\n}\n\n.justify-content-center {\n justify-content: center !important;\n}\n\n.justify-content-between {\n justify-content: space-between !important;\n}\n\n.justify-content-around {\n justify-content: space-around !important;\n}\n\n.justify-content-evenly {\n justify-content: space-evenly !important;\n}\n\n.align-items-start {\n align-items: flex-start !important;\n}\n\n.align-items-end {\n align-items: flex-end !important;\n}\n\n.align-items-center {\n align-items: center !important;\n}\n\n.align-items-baseline {\n align-items: baseline !important;\n}\n\n.align-items-stretch {\n align-items: stretch !important;\n}\n\n.align-content-start {\n align-content: flex-start !important;\n}\n\n.align-content-end {\n align-content: flex-end !important;\n}\n\n.align-content-center {\n align-content: center !important;\n}\n\n.align-content-between {\n align-content: space-between !important;\n}\n\n.align-content-around {\n align-content: space-around !important;\n}\n\n.align-content-stretch {\n align-content: stretch !important;\n}\n\n.align-self-auto {\n align-self: auto !important;\n}\n\n.align-self-start {\n align-self: flex-start !important;\n}\n\n.align-self-end {\n align-self: flex-end !important;\n}\n\n.align-self-center {\n align-self: center !important;\n}\n\n.align-self-baseline {\n align-self: baseline !important;\n}\n\n.align-self-stretch {\n align-self: stretch !important;\n}\n\n.order-first {\n order: -1 !important;\n}\n\n.order-0 {\n order: 0 !important;\n}\n\n.order-1 {\n order: 1 !important;\n}\n\n.order-2 {\n order: 2 !important;\n}\n\n.order-3 {\n order: 3 !important;\n}\n\n.order-4 {\n order: 4 !important;\n}\n\n.order-5 {\n order: 5 !important;\n}\n\n.order-last {\n order: 6 !important;\n}\n\n.m-0 {\n margin: 0 !important;\n}\n\n.m-1 {\n margin: 0.25rem !important;\n}\n\n.m-2 {\n margin: 0.5rem !important;\n}\n\n.m-3 {\n margin: 1rem !important;\n}\n\n.m-4 {\n margin: 1.5rem !important;\n}\n\n.m-5 {\n margin: 3rem !important;\n}\n\n.m-auto {\n margin: auto !important;\n}\n\n.mx-0 {\n margin-left: 0 !important;\n margin-right: 0 !important;\n}\n\n.mx-1 {\n margin-left: 0.25rem !important;\n margin-right: 0.25rem !important;\n}\n\n.mx-2 {\n margin-left: 0.5rem !important;\n margin-right: 0.5rem !important;\n}\n\n.mx-3 {\n margin-left: 1rem !important;\n margin-right: 1rem !important;\n}\n\n.mx-4 {\n margin-left: 1.5rem !important;\n margin-right: 1.5rem !important;\n}\n\n.mx-5 {\n margin-left: 3rem !important;\n margin-right: 3rem !important;\n}\n\n.mx-auto {\n margin-left: auto !important;\n margin-right: auto !important;\n}\n\n.my-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n}\n\n.my-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n}\n\n.my-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n}\n\n.my-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n}\n\n.my-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n}\n\n.my-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n}\n\n.my-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n}\n\n.mt-0 {\n margin-top: 0 !important;\n}\n\n.mt-1 {\n margin-top: 0.25rem !important;\n}\n\n.mt-2 {\n margin-top: 0.5rem !important;\n}\n\n.mt-3 {\n margin-top: 1rem !important;\n}\n\n.mt-4 {\n margin-top: 1.5rem !important;\n}\n\n.mt-5 {\n margin-top: 3rem !important;\n}\n\n.mt-auto {\n margin-top: auto !important;\n}\n\n.me-0 {\n margin-left: 0 !important;\n}\n\n.me-1 {\n margin-left: 0.25rem !important;\n}\n\n.me-2 {\n margin-left: 0.5rem !important;\n}\n\n.me-3 {\n margin-left: 1rem !important;\n}\n\n.me-4 {\n margin-left: 1.5rem !important;\n}\n\n.me-5 {\n margin-left: 3rem !important;\n}\n\n.me-auto {\n margin-left: auto !important;\n}\n\n.mb-0 {\n margin-bottom: 0 !important;\n}\n\n.mb-1 {\n margin-bottom: 0.25rem !important;\n}\n\n.mb-2 {\n margin-bottom: 0.5rem !important;\n}\n\n.mb-3 {\n margin-bottom: 1rem !important;\n}\n\n.mb-4 {\n margin-bottom: 1.5rem !important;\n}\n\n.mb-5 {\n margin-bottom: 3rem !important;\n}\n\n.mb-auto {\n margin-bottom: auto !important;\n}\n\n.ms-0 {\n margin-right: 0 !important;\n}\n\n.ms-1 {\n margin-right: 0.25rem !important;\n}\n\n.ms-2 {\n margin-right: 0.5rem !important;\n}\n\n.ms-3 {\n margin-right: 1rem !important;\n}\n\n.ms-4 {\n margin-right: 1.5rem !important;\n}\n\n.ms-5 {\n margin-right: 3rem !important;\n}\n\n.ms-auto {\n margin-right: auto !important;\n}\n\n.p-0 {\n padding: 0 !important;\n}\n\n.p-1 {\n padding: 0.25rem !important;\n}\n\n.p-2 {\n padding: 0.5rem !important;\n}\n\n.p-3 {\n padding: 1rem !important;\n}\n\n.p-4 {\n padding: 1.5rem !important;\n}\n\n.p-5 {\n padding: 3rem !important;\n}\n\n.px-0 {\n padding-left: 0 !important;\n padding-right: 0 !important;\n}\n\n.px-1 {\n padding-left: 0.25rem !important;\n padding-right: 0.25rem !important;\n}\n\n.px-2 {\n padding-left: 0.5rem !important;\n padding-right: 0.5rem !important;\n}\n\n.px-3 {\n padding-left: 1rem !important;\n padding-right: 1rem !important;\n}\n\n.px-4 {\n padding-left: 1.5rem !important;\n padding-right: 1.5rem !important;\n}\n\n.px-5 {\n padding-left: 3rem !important;\n padding-right: 3rem !important;\n}\n\n.py-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n}\n\n.py-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n}\n\n.py-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n}\n\n.py-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n}\n\n.py-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n}\n\n.py-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n}\n\n.pt-0 {\n padding-top: 0 !important;\n}\n\n.pt-1 {\n padding-top: 0.25rem !important;\n}\n\n.pt-2 {\n padding-top: 0.5rem !important;\n}\n\n.pt-3 {\n padding-top: 1rem !important;\n}\n\n.pt-4 {\n padding-top: 1.5rem !important;\n}\n\n.pt-5 {\n padding-top: 3rem !important;\n}\n\n.pe-0 {\n padding-left: 0 !important;\n}\n\n.pe-1 {\n padding-left: 0.25rem !important;\n}\n\n.pe-2 {\n padding-left: 0.5rem !important;\n}\n\n.pe-3 {\n padding-left: 1rem !important;\n}\n\n.pe-4 {\n padding-left: 1.5rem !important;\n}\n\n.pe-5 {\n padding-left: 3rem !important;\n}\n\n.pb-0 {\n padding-bottom: 0 !important;\n}\n\n.pb-1 {\n padding-bottom: 0.25rem !important;\n}\n\n.pb-2 {\n padding-bottom: 0.5rem !important;\n}\n\n.pb-3 {\n padding-bottom: 1rem !important;\n}\n\n.pb-4 {\n padding-bottom: 1.5rem !important;\n}\n\n.pb-5 {\n padding-bottom: 3rem !important;\n}\n\n.ps-0 {\n padding-right: 0 !important;\n}\n\n.ps-1 {\n padding-right: 0.25rem !important;\n}\n\n.ps-2 {\n padding-right: 0.5rem !important;\n}\n\n.ps-3 {\n padding-right: 1rem !important;\n}\n\n.ps-4 {\n padding-right: 1.5rem !important;\n}\n\n.ps-5 {\n padding-right: 3rem !important;\n}\n\n@media (min-width: 576px) {\n .d-sm-inline {\n display: inline !important;\n }\n .d-sm-inline-block {\n display: inline-block !important;\n }\n .d-sm-block {\n display: block !important;\n }\n .d-sm-grid {\n display: grid !important;\n }\n .d-sm-table {\n display: table !important;\n }\n .d-sm-table-row {\n display: table-row !important;\n }\n .d-sm-table-cell {\n display: table-cell !important;\n }\n .d-sm-flex {\n display: flex !important;\n }\n .d-sm-inline-flex {\n display: inline-flex !important;\n }\n .d-sm-none {\n display: none !important;\n }\n .flex-sm-fill {\n flex: 1 1 auto !important;\n }\n .flex-sm-row {\n flex-direction: row !important;\n }\n .flex-sm-column {\n flex-direction: column !important;\n }\n .flex-sm-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-sm-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-sm-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-sm-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-sm-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-sm-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-sm-wrap {\n flex-wrap: wrap !important;\n }\n .flex-sm-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-sm-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-sm-start {\n justify-content: flex-start !important;\n }\n .justify-content-sm-end {\n justify-content: flex-end !important;\n }\n .justify-content-sm-center {\n justify-content: center !important;\n }\n .justify-content-sm-between {\n justify-content: space-between !important;\n }\n .justify-content-sm-around {\n justify-content: space-around !important;\n }\n .justify-content-sm-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-sm-start {\n align-items: flex-start !important;\n }\n .align-items-sm-end {\n align-items: flex-end !important;\n }\n .align-items-sm-center {\n align-items: center !important;\n }\n .align-items-sm-baseline {\n align-items: baseline !important;\n }\n .align-items-sm-stretch {\n align-items: stretch !important;\n }\n .align-content-sm-start {\n align-content: flex-start !important;\n }\n .align-content-sm-end {\n align-content: flex-end !important;\n }\n .align-content-sm-center {\n align-content: center !important;\n }\n .align-content-sm-between {\n align-content: space-between !important;\n }\n .align-content-sm-around {\n align-content: space-around !important;\n }\n .align-content-sm-stretch {\n align-content: stretch !important;\n }\n .align-self-sm-auto {\n align-self: auto !important;\n }\n .align-self-sm-start {\n align-self: flex-start !important;\n }\n .align-self-sm-end {\n align-self: flex-end !important;\n }\n .align-self-sm-center {\n align-self: center !important;\n }\n .align-self-sm-baseline {\n align-self: baseline !important;\n }\n .align-self-sm-stretch {\n align-self: stretch !important;\n }\n .order-sm-first {\n order: -1 !important;\n }\n .order-sm-0 {\n order: 0 !important;\n }\n .order-sm-1 {\n order: 1 !important;\n }\n .order-sm-2 {\n order: 2 !important;\n }\n .order-sm-3 {\n order: 3 !important;\n }\n .order-sm-4 {\n order: 4 !important;\n }\n .order-sm-5 {\n order: 5 !important;\n }\n .order-sm-last {\n order: 6 !important;\n }\n .m-sm-0 {\n margin: 0 !important;\n }\n .m-sm-1 {\n margin: 0.25rem !important;\n }\n .m-sm-2 {\n margin: 0.5rem !important;\n }\n .m-sm-3 {\n margin: 1rem !important;\n }\n .m-sm-4 {\n margin: 1.5rem !important;\n }\n .m-sm-5 {\n margin: 3rem !important;\n }\n .m-sm-auto {\n margin: auto !important;\n }\n .mx-sm-0 {\n margin-left: 0 !important;\n margin-right: 0 !important;\n }\n .mx-sm-1 {\n margin-left: 0.25rem !important;\n margin-right: 0.25rem !important;\n }\n .mx-sm-2 {\n margin-left: 0.5rem !important;\n margin-right: 0.5rem !important;\n }\n .mx-sm-3 {\n margin-left: 1rem !important;\n margin-right: 1rem !important;\n }\n .mx-sm-4 {\n margin-left: 1.5rem !important;\n margin-right: 1.5rem !important;\n }\n .mx-sm-5 {\n margin-left: 3rem !important;\n margin-right: 3rem !important;\n }\n .mx-sm-auto {\n margin-left: auto !important;\n margin-right: auto !important;\n }\n .my-sm-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-sm-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-sm-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-sm-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-sm-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-sm-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-sm-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-sm-0 {\n margin-top: 0 !important;\n }\n .mt-sm-1 {\n margin-top: 0.25rem !important;\n }\n .mt-sm-2 {\n margin-top: 0.5rem !important;\n }\n .mt-sm-3 {\n margin-top: 1rem !important;\n }\n .mt-sm-4 {\n margin-top: 1.5rem !important;\n }\n .mt-sm-5 {\n margin-top: 3rem !important;\n }\n .mt-sm-auto {\n margin-top: auto !important;\n }\n .me-sm-0 {\n margin-left: 0 !important;\n }\n .me-sm-1 {\n margin-left: 0.25rem !important;\n }\n .me-sm-2 {\n margin-left: 0.5rem !important;\n }\n .me-sm-3 {\n margin-left: 1rem !important;\n }\n .me-sm-4 {\n margin-left: 1.5rem !important;\n }\n .me-sm-5 {\n margin-left: 3rem !important;\n }\n .me-sm-auto {\n margin-left: auto !important;\n }\n .mb-sm-0 {\n margin-bottom: 0 !important;\n }\n .mb-sm-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-sm-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-sm-3 {\n margin-bottom: 1rem !important;\n }\n .mb-sm-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-sm-5 {\n margin-bottom: 3rem !important;\n }\n .mb-sm-auto {\n margin-bottom: auto !important;\n }\n .ms-sm-0 {\n margin-right: 0 !important;\n }\n .ms-sm-1 {\n margin-right: 0.25rem !important;\n }\n .ms-sm-2 {\n margin-right: 0.5rem !important;\n }\n .ms-sm-3 {\n margin-right: 1rem !important;\n }\n .ms-sm-4 {\n margin-right: 1.5rem !important;\n }\n .ms-sm-5 {\n margin-right: 3rem !important;\n }\n .ms-sm-auto {\n margin-right: auto !important;\n }\n .p-sm-0 {\n padding: 0 !important;\n }\n .p-sm-1 {\n padding: 0.25rem !important;\n }\n .p-sm-2 {\n padding: 0.5rem !important;\n }\n .p-sm-3 {\n padding: 1rem !important;\n }\n .p-sm-4 {\n padding: 1.5rem !important;\n }\n .p-sm-5 {\n padding: 3rem !important;\n }\n .px-sm-0 {\n padding-left: 0 !important;\n padding-right: 0 !important;\n }\n .px-sm-1 {\n padding-left: 0.25rem !important;\n padding-right: 0.25rem !important;\n }\n .px-sm-2 {\n padding-left: 0.5rem !important;\n padding-right: 0.5rem !important;\n }\n .px-sm-3 {\n padding-left: 1rem !important;\n padding-right: 1rem !important;\n }\n .px-sm-4 {\n padding-left: 1.5rem !important;\n padding-right: 1.5rem !important;\n }\n .px-sm-5 {\n padding-left: 3rem !important;\n padding-right: 3rem !important;\n }\n .py-sm-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-sm-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-sm-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-sm-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-sm-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-sm-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-sm-0 {\n padding-top: 0 !important;\n }\n .pt-sm-1 {\n padding-top: 0.25rem !important;\n }\n .pt-sm-2 {\n padding-top: 0.5rem !important;\n }\n .pt-sm-3 {\n padding-top: 1rem !important;\n }\n .pt-sm-4 {\n padding-top: 1.5rem !important;\n }\n .pt-sm-5 {\n padding-top: 3rem !important;\n }\n .pe-sm-0 {\n padding-left: 0 !important;\n }\n .pe-sm-1 {\n padding-left: 0.25rem !important;\n }\n .pe-sm-2 {\n padding-left: 0.5rem !important;\n }\n .pe-sm-3 {\n padding-left: 1rem !important;\n }\n .pe-sm-4 {\n padding-left: 1.5rem !important;\n }\n .pe-sm-5 {\n padding-left: 3rem !important;\n }\n .pb-sm-0 {\n padding-bottom: 0 !important;\n }\n .pb-sm-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-sm-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-sm-3 {\n padding-bottom: 1rem !important;\n }\n .pb-sm-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-sm-5 {\n padding-bottom: 3rem !important;\n }\n .ps-sm-0 {\n padding-right: 0 !important;\n }\n .ps-sm-1 {\n padding-right: 0.25rem !important;\n }\n .ps-sm-2 {\n padding-right: 0.5rem !important;\n }\n .ps-sm-3 {\n padding-right: 1rem !important;\n }\n .ps-sm-4 {\n padding-right: 1.5rem !important;\n }\n .ps-sm-5 {\n padding-right: 3rem !important;\n }\n}\n@media (min-width: 768px) {\n .d-md-inline {\n display: inline !important;\n }\n .d-md-inline-block {\n display: inline-block !important;\n }\n .d-md-block {\n display: block !important;\n }\n .d-md-grid {\n display: grid !important;\n }\n .d-md-table {\n display: table !important;\n }\n .d-md-table-row {\n display: table-row !important;\n }\n .d-md-table-cell {\n display: table-cell !important;\n }\n .d-md-flex {\n display: flex !important;\n }\n .d-md-inline-flex {\n display: inline-flex !important;\n }\n .d-md-none {\n display: none !important;\n }\n .flex-md-fill {\n flex: 1 1 auto !important;\n }\n .flex-md-row {\n flex-direction: row !important;\n }\n .flex-md-column {\n flex-direction: column !important;\n }\n .flex-md-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-md-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-md-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-md-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-md-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-md-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-md-wrap {\n flex-wrap: wrap !important;\n }\n .flex-md-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-md-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-md-start {\n justify-content: flex-start !important;\n }\n .justify-content-md-end {\n justify-content: flex-end !important;\n }\n .justify-content-md-center {\n justify-content: center !important;\n }\n .justify-content-md-between {\n justify-content: space-between !important;\n }\n .justify-content-md-around {\n justify-content: space-around !important;\n }\n .justify-content-md-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-md-start {\n align-items: flex-start !important;\n }\n .align-items-md-end {\n align-items: flex-end !important;\n }\n .align-items-md-center {\n align-items: center !important;\n }\n .align-items-md-baseline {\n align-items: baseline !important;\n }\n .align-items-md-stretch {\n align-items: stretch !important;\n }\n .align-content-md-start {\n align-content: flex-start !important;\n }\n .align-content-md-end {\n align-content: flex-end !important;\n }\n .align-content-md-center {\n align-content: center !important;\n }\n .align-content-md-between {\n align-content: space-between !important;\n }\n .align-content-md-around {\n align-content: space-around !important;\n }\n .align-content-md-stretch {\n align-content: stretch !important;\n }\n .align-self-md-auto {\n align-self: auto !important;\n }\n .align-self-md-start {\n align-self: flex-start !important;\n }\n .align-self-md-end {\n align-self: flex-end !important;\n }\n .align-self-md-center {\n align-self: center !important;\n }\n .align-self-md-baseline {\n align-self: baseline !important;\n }\n .align-self-md-stretch {\n align-self: stretch !important;\n }\n .order-md-first {\n order: -1 !important;\n }\n .order-md-0 {\n order: 0 !important;\n }\n .order-md-1 {\n order: 1 !important;\n }\n .order-md-2 {\n order: 2 !important;\n }\n .order-md-3 {\n order: 3 !important;\n }\n .order-md-4 {\n order: 4 !important;\n }\n .order-md-5 {\n order: 5 !important;\n }\n .order-md-last {\n order: 6 !important;\n }\n .m-md-0 {\n margin: 0 !important;\n }\n .m-md-1 {\n margin: 0.25rem !important;\n }\n .m-md-2 {\n margin: 0.5rem !important;\n }\n .m-md-3 {\n margin: 1rem !important;\n }\n .m-md-4 {\n margin: 1.5rem !important;\n }\n .m-md-5 {\n margin: 3rem !important;\n }\n .m-md-auto {\n margin: auto !important;\n }\n .mx-md-0 {\n margin-left: 0 !important;\n margin-right: 0 !important;\n }\n .mx-md-1 {\n margin-left: 0.25rem !important;\n margin-right: 0.25rem !important;\n }\n .mx-md-2 {\n margin-left: 0.5rem !important;\n margin-right: 0.5rem !important;\n }\n .mx-md-3 {\n margin-left: 1rem !important;\n margin-right: 1rem !important;\n }\n .mx-md-4 {\n margin-left: 1.5rem !important;\n margin-right: 1.5rem !important;\n }\n .mx-md-5 {\n margin-left: 3rem !important;\n margin-right: 3rem !important;\n }\n .mx-md-auto {\n margin-left: auto !important;\n margin-right: auto !important;\n }\n .my-md-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-md-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-md-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-md-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-md-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-md-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-md-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-md-0 {\n margin-top: 0 !important;\n }\n .mt-md-1 {\n margin-top: 0.25rem !important;\n }\n .mt-md-2 {\n margin-top: 0.5rem !important;\n }\n .mt-md-3 {\n margin-top: 1rem !important;\n }\n .mt-md-4 {\n margin-top: 1.5rem !important;\n }\n .mt-md-5 {\n margin-top: 3rem !important;\n }\n .mt-md-auto {\n margin-top: auto !important;\n }\n .me-md-0 {\n margin-left: 0 !important;\n }\n .me-md-1 {\n margin-left: 0.25rem !important;\n }\n .me-md-2 {\n margin-left: 0.5rem !important;\n }\n .me-md-3 {\n margin-left: 1rem !important;\n }\n .me-md-4 {\n margin-left: 1.5rem !important;\n }\n .me-md-5 {\n margin-left: 3rem !important;\n }\n .me-md-auto {\n margin-left: auto !important;\n }\n .mb-md-0 {\n margin-bottom: 0 !important;\n }\n .mb-md-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-md-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-md-3 {\n margin-bottom: 1rem !important;\n }\n .mb-md-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-md-5 {\n margin-bottom: 3rem !important;\n }\n .mb-md-auto {\n margin-bottom: auto !important;\n }\n .ms-md-0 {\n margin-right: 0 !important;\n }\n .ms-md-1 {\n margin-right: 0.25rem !important;\n }\n .ms-md-2 {\n margin-right: 0.5rem !important;\n }\n .ms-md-3 {\n margin-right: 1rem !important;\n }\n .ms-md-4 {\n margin-right: 1.5rem !important;\n }\n .ms-md-5 {\n margin-right: 3rem !important;\n }\n .ms-md-auto {\n margin-right: auto !important;\n }\n .p-md-0 {\n padding: 0 !important;\n }\n .p-md-1 {\n padding: 0.25rem !important;\n }\n .p-md-2 {\n padding: 0.5rem !important;\n }\n .p-md-3 {\n padding: 1rem !important;\n }\n .p-md-4 {\n padding: 1.5rem !important;\n }\n .p-md-5 {\n padding: 3rem !important;\n }\n .px-md-0 {\n padding-left: 0 !important;\n padding-right: 0 !important;\n }\n .px-md-1 {\n padding-left: 0.25rem !important;\n padding-right: 0.25rem !important;\n }\n .px-md-2 {\n padding-left: 0.5rem !important;\n padding-right: 0.5rem !important;\n }\n .px-md-3 {\n padding-left: 1rem !important;\n padding-right: 1rem !important;\n }\n .px-md-4 {\n padding-left: 1.5rem !important;\n padding-right: 1.5rem !important;\n }\n .px-md-5 {\n padding-left: 3rem !important;\n padding-right: 3rem !important;\n }\n .py-md-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-md-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-md-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-md-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-md-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-md-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-md-0 {\n padding-top: 0 !important;\n }\n .pt-md-1 {\n padding-top: 0.25rem !important;\n }\n .pt-md-2 {\n padding-top: 0.5rem !important;\n }\n .pt-md-3 {\n padding-top: 1rem !important;\n }\n .pt-md-4 {\n padding-top: 1.5rem !important;\n }\n .pt-md-5 {\n padding-top: 3rem !important;\n }\n .pe-md-0 {\n padding-left: 0 !important;\n }\n .pe-md-1 {\n padding-left: 0.25rem !important;\n }\n .pe-md-2 {\n padding-left: 0.5rem !important;\n }\n .pe-md-3 {\n padding-left: 1rem !important;\n }\n .pe-md-4 {\n padding-left: 1.5rem !important;\n }\n .pe-md-5 {\n padding-left: 3rem !important;\n }\n .pb-md-0 {\n padding-bottom: 0 !important;\n }\n .pb-md-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-md-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-md-3 {\n padding-bottom: 1rem !important;\n }\n .pb-md-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-md-5 {\n padding-bottom: 3rem !important;\n }\n .ps-md-0 {\n padding-right: 0 !important;\n }\n .ps-md-1 {\n padding-right: 0.25rem !important;\n }\n .ps-md-2 {\n padding-right: 0.5rem !important;\n }\n .ps-md-3 {\n padding-right: 1rem !important;\n }\n .ps-md-4 {\n padding-right: 1.5rem !important;\n }\n .ps-md-5 {\n padding-right: 3rem !important;\n }\n}\n@media (min-width: 992px) {\n .d-lg-inline {\n display: inline !important;\n }\n .d-lg-inline-block {\n display: inline-block !important;\n }\n .d-lg-block {\n display: block !important;\n }\n .d-lg-grid {\n display: grid !important;\n }\n .d-lg-table {\n display: table !important;\n }\n .d-lg-table-row {\n display: table-row !important;\n }\n .d-lg-table-cell {\n display: table-cell !important;\n }\n .d-lg-flex {\n display: flex !important;\n }\n .d-lg-inline-flex {\n display: inline-flex !important;\n }\n .d-lg-none {\n display: none !important;\n }\n .flex-lg-fill {\n flex: 1 1 auto !important;\n }\n .flex-lg-row {\n flex-direction: row !important;\n }\n .flex-lg-column {\n flex-direction: column !important;\n }\n .flex-lg-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-lg-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-lg-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-lg-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-lg-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-lg-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-lg-wrap {\n flex-wrap: wrap !important;\n }\n .flex-lg-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-lg-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-lg-start {\n justify-content: flex-start !important;\n }\n .justify-content-lg-end {\n justify-content: flex-end !important;\n }\n .justify-content-lg-center {\n justify-content: center !important;\n }\n .justify-content-lg-between {\n justify-content: space-between !important;\n }\n .justify-content-lg-around {\n justify-content: space-around !important;\n }\n .justify-content-lg-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-lg-start {\n align-items: flex-start !important;\n }\n .align-items-lg-end {\n align-items: flex-end !important;\n }\n .align-items-lg-center {\n align-items: center !important;\n }\n .align-items-lg-baseline {\n align-items: baseline !important;\n }\n .align-items-lg-stretch {\n align-items: stretch !important;\n }\n .align-content-lg-start {\n align-content: flex-start !important;\n }\n .align-content-lg-end {\n align-content: flex-end !important;\n }\n .align-content-lg-center {\n align-content: center !important;\n }\n .align-content-lg-between {\n align-content: space-between !important;\n }\n .align-content-lg-around {\n align-content: space-around !important;\n }\n .align-content-lg-stretch {\n align-content: stretch !important;\n }\n .align-self-lg-auto {\n align-self: auto !important;\n }\n .align-self-lg-start {\n align-self: flex-start !important;\n }\n .align-self-lg-end {\n align-self: flex-end !important;\n }\n .align-self-lg-center {\n align-self: center !important;\n }\n .align-self-lg-baseline {\n align-self: baseline !important;\n }\n .align-self-lg-stretch {\n align-self: stretch !important;\n }\n .order-lg-first {\n order: -1 !important;\n }\n .order-lg-0 {\n order: 0 !important;\n }\n .order-lg-1 {\n order: 1 !important;\n }\n .order-lg-2 {\n order: 2 !important;\n }\n .order-lg-3 {\n order: 3 !important;\n }\n .order-lg-4 {\n order: 4 !important;\n }\n .order-lg-5 {\n order: 5 !important;\n }\n .order-lg-last {\n order: 6 !important;\n }\n .m-lg-0 {\n margin: 0 !important;\n }\n .m-lg-1 {\n margin: 0.25rem !important;\n }\n .m-lg-2 {\n margin: 0.5rem !important;\n }\n .m-lg-3 {\n margin: 1rem !important;\n }\n .m-lg-4 {\n margin: 1.5rem !important;\n }\n .m-lg-5 {\n margin: 3rem !important;\n }\n .m-lg-auto {\n margin: auto !important;\n }\n .mx-lg-0 {\n margin-left: 0 !important;\n margin-right: 0 !important;\n }\n .mx-lg-1 {\n margin-left: 0.25rem !important;\n margin-right: 0.25rem !important;\n }\n .mx-lg-2 {\n margin-left: 0.5rem !important;\n margin-right: 0.5rem !important;\n }\n .mx-lg-3 {\n margin-left: 1rem !important;\n margin-right: 1rem !important;\n }\n .mx-lg-4 {\n margin-left: 1.5rem !important;\n margin-right: 1.5rem !important;\n }\n .mx-lg-5 {\n margin-left: 3rem !important;\n margin-right: 3rem !important;\n }\n .mx-lg-auto {\n margin-left: auto !important;\n margin-right: auto !important;\n }\n .my-lg-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-lg-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-lg-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-lg-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-lg-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-lg-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-lg-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-lg-0 {\n margin-top: 0 !important;\n }\n .mt-lg-1 {\n margin-top: 0.25rem !important;\n }\n .mt-lg-2 {\n margin-top: 0.5rem !important;\n }\n .mt-lg-3 {\n margin-top: 1rem !important;\n }\n .mt-lg-4 {\n margin-top: 1.5rem !important;\n }\n .mt-lg-5 {\n margin-top: 3rem !important;\n }\n .mt-lg-auto {\n margin-top: auto !important;\n }\n .me-lg-0 {\n margin-left: 0 !important;\n }\n .me-lg-1 {\n margin-left: 0.25rem !important;\n }\n .me-lg-2 {\n margin-left: 0.5rem !important;\n }\n .me-lg-3 {\n margin-left: 1rem !important;\n }\n .me-lg-4 {\n margin-left: 1.5rem !important;\n }\n .me-lg-5 {\n margin-left: 3rem !important;\n }\n .me-lg-auto {\n margin-left: auto !important;\n }\n .mb-lg-0 {\n margin-bottom: 0 !important;\n }\n .mb-lg-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-lg-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-lg-3 {\n margin-bottom: 1rem !important;\n }\n .mb-lg-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-lg-5 {\n margin-bottom: 3rem !important;\n }\n .mb-lg-auto {\n margin-bottom: auto !important;\n }\n .ms-lg-0 {\n margin-right: 0 !important;\n }\n .ms-lg-1 {\n margin-right: 0.25rem !important;\n }\n .ms-lg-2 {\n margin-right: 0.5rem !important;\n }\n .ms-lg-3 {\n margin-right: 1rem !important;\n }\n .ms-lg-4 {\n margin-right: 1.5rem !important;\n }\n .ms-lg-5 {\n margin-right: 3rem !important;\n }\n .ms-lg-auto {\n margin-right: auto !important;\n }\n .p-lg-0 {\n padding: 0 !important;\n }\n .p-lg-1 {\n padding: 0.25rem !important;\n }\n .p-lg-2 {\n padding: 0.5rem !important;\n }\n .p-lg-3 {\n padding: 1rem !important;\n }\n .p-lg-4 {\n padding: 1.5rem !important;\n }\n .p-lg-5 {\n padding: 3rem !important;\n }\n .px-lg-0 {\n padding-left: 0 !important;\n padding-right: 0 !important;\n }\n .px-lg-1 {\n padding-left: 0.25rem !important;\n padding-right: 0.25rem !important;\n }\n .px-lg-2 {\n padding-left: 0.5rem !important;\n padding-right: 0.5rem !important;\n }\n .px-lg-3 {\n padding-left: 1rem !important;\n padding-right: 1rem !important;\n }\n .px-lg-4 {\n padding-left: 1.5rem !important;\n padding-right: 1.5rem !important;\n }\n .px-lg-5 {\n padding-left: 3rem !important;\n padding-right: 3rem !important;\n }\n .py-lg-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-lg-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-lg-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-lg-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-lg-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-lg-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-lg-0 {\n padding-top: 0 !important;\n }\n .pt-lg-1 {\n padding-top: 0.25rem !important;\n }\n .pt-lg-2 {\n padding-top: 0.5rem !important;\n }\n .pt-lg-3 {\n padding-top: 1rem !important;\n }\n .pt-lg-4 {\n padding-top: 1.5rem !important;\n }\n .pt-lg-5 {\n padding-top: 3rem !important;\n }\n .pe-lg-0 {\n padding-left: 0 !important;\n }\n .pe-lg-1 {\n padding-left: 0.25rem !important;\n }\n .pe-lg-2 {\n padding-left: 0.5rem !important;\n }\n .pe-lg-3 {\n padding-left: 1rem !important;\n }\n .pe-lg-4 {\n padding-left: 1.5rem !important;\n }\n .pe-lg-5 {\n padding-left: 3rem !important;\n }\n .pb-lg-0 {\n padding-bottom: 0 !important;\n }\n .pb-lg-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-lg-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-lg-3 {\n padding-bottom: 1rem !important;\n }\n .pb-lg-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-lg-5 {\n padding-bottom: 3rem !important;\n }\n .ps-lg-0 {\n padding-right: 0 !important;\n }\n .ps-lg-1 {\n padding-right: 0.25rem !important;\n }\n .ps-lg-2 {\n padding-right: 0.5rem !important;\n }\n .ps-lg-3 {\n padding-right: 1rem !important;\n }\n .ps-lg-4 {\n padding-right: 1.5rem !important;\n }\n .ps-lg-5 {\n padding-right: 3rem !important;\n }\n}\n@media (min-width: 1200px) {\n .d-xl-inline {\n display: inline !important;\n }\n .d-xl-inline-block {\n display: inline-block !important;\n }\n .d-xl-block {\n display: block !important;\n }\n .d-xl-grid {\n display: grid !important;\n }\n .d-xl-table {\n display: table !important;\n }\n .d-xl-table-row {\n display: table-row !important;\n }\n .d-xl-table-cell {\n display: table-cell !important;\n }\n .d-xl-flex {\n display: flex !important;\n }\n .d-xl-inline-flex {\n display: inline-flex !important;\n }\n .d-xl-none {\n display: none !important;\n }\n .flex-xl-fill {\n flex: 1 1 auto !important;\n }\n .flex-xl-row {\n flex-direction: row !important;\n }\n .flex-xl-column {\n flex-direction: column !important;\n }\n .flex-xl-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-xl-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-xl-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-xl-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-xl-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-xl-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-xl-wrap {\n flex-wrap: wrap !important;\n }\n .flex-xl-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-xl-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-xl-start {\n justify-content: flex-start !important;\n }\n .justify-content-xl-end {\n justify-content: flex-end !important;\n }\n .justify-content-xl-center {\n justify-content: center !important;\n }\n .justify-content-xl-between {\n justify-content: space-between !important;\n }\n .justify-content-xl-around {\n justify-content: space-around !important;\n }\n .justify-content-xl-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-xl-start {\n align-items: flex-start !important;\n }\n .align-items-xl-end {\n align-items: flex-end !important;\n }\n .align-items-xl-center {\n align-items: center !important;\n }\n .align-items-xl-baseline {\n align-items: baseline !important;\n }\n .align-items-xl-stretch {\n align-items: stretch !important;\n }\n .align-content-xl-start {\n align-content: flex-start !important;\n }\n .align-content-xl-end {\n align-content: flex-end !important;\n }\n .align-content-xl-center {\n align-content: center !important;\n }\n .align-content-xl-between {\n align-content: space-between !important;\n }\n .align-content-xl-around {\n align-content: space-around !important;\n }\n .align-content-xl-stretch {\n align-content: stretch !important;\n }\n .align-self-xl-auto {\n align-self: auto !important;\n }\n .align-self-xl-start {\n align-self: flex-start !important;\n }\n .align-self-xl-end {\n align-self: flex-end !important;\n }\n .align-self-xl-center {\n align-self: center !important;\n }\n .align-self-xl-baseline {\n align-self: baseline !important;\n }\n .align-self-xl-stretch {\n align-self: stretch !important;\n }\n .order-xl-first {\n order: -1 !important;\n }\n .order-xl-0 {\n order: 0 !important;\n }\n .order-xl-1 {\n order: 1 !important;\n }\n .order-xl-2 {\n order: 2 !important;\n }\n .order-xl-3 {\n order: 3 !important;\n }\n .order-xl-4 {\n order: 4 !important;\n }\n .order-xl-5 {\n order: 5 !important;\n }\n .order-xl-last {\n order: 6 !important;\n }\n .m-xl-0 {\n margin: 0 !important;\n }\n .m-xl-1 {\n margin: 0.25rem !important;\n }\n .m-xl-2 {\n margin: 0.5rem !important;\n }\n .m-xl-3 {\n margin: 1rem !important;\n }\n .m-xl-4 {\n margin: 1.5rem !important;\n }\n .m-xl-5 {\n margin: 3rem !important;\n }\n .m-xl-auto {\n margin: auto !important;\n }\n .mx-xl-0 {\n margin-left: 0 !important;\n margin-right: 0 !important;\n }\n .mx-xl-1 {\n margin-left: 0.25rem !important;\n margin-right: 0.25rem !important;\n }\n .mx-xl-2 {\n margin-left: 0.5rem !important;\n margin-right: 0.5rem !important;\n }\n .mx-xl-3 {\n margin-left: 1rem !important;\n margin-right: 1rem !important;\n }\n .mx-xl-4 {\n margin-left: 1.5rem !important;\n margin-right: 1.5rem !important;\n }\n .mx-xl-5 {\n margin-left: 3rem !important;\n margin-right: 3rem !important;\n }\n .mx-xl-auto {\n margin-left: auto !important;\n margin-right: auto !important;\n }\n .my-xl-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-xl-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-xl-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-xl-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-xl-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-xl-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-xl-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-xl-0 {\n margin-top: 0 !important;\n }\n .mt-xl-1 {\n margin-top: 0.25rem !important;\n }\n .mt-xl-2 {\n margin-top: 0.5rem !important;\n }\n .mt-xl-3 {\n margin-top: 1rem !important;\n }\n .mt-xl-4 {\n margin-top: 1.5rem !important;\n }\n .mt-xl-5 {\n margin-top: 3rem !important;\n }\n .mt-xl-auto {\n margin-top: auto !important;\n }\n .me-xl-0 {\n margin-left: 0 !important;\n }\n .me-xl-1 {\n margin-left: 0.25rem !important;\n }\n .me-xl-2 {\n margin-left: 0.5rem !important;\n }\n .me-xl-3 {\n margin-left: 1rem !important;\n }\n .me-xl-4 {\n margin-left: 1.5rem !important;\n }\n .me-xl-5 {\n margin-left: 3rem !important;\n }\n .me-xl-auto {\n margin-left: auto !important;\n }\n .mb-xl-0 {\n margin-bottom: 0 !important;\n }\n .mb-xl-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-xl-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-xl-3 {\n margin-bottom: 1rem !important;\n }\n .mb-xl-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-xl-5 {\n margin-bottom: 3rem !important;\n }\n .mb-xl-auto {\n margin-bottom: auto !important;\n }\n .ms-xl-0 {\n margin-right: 0 !important;\n }\n .ms-xl-1 {\n margin-right: 0.25rem !important;\n }\n .ms-xl-2 {\n margin-right: 0.5rem !important;\n }\n .ms-xl-3 {\n margin-right: 1rem !important;\n }\n .ms-xl-4 {\n margin-right: 1.5rem !important;\n }\n .ms-xl-5 {\n margin-right: 3rem !important;\n }\n .ms-xl-auto {\n margin-right: auto !important;\n }\n .p-xl-0 {\n padding: 0 !important;\n }\n .p-xl-1 {\n padding: 0.25rem !important;\n }\n .p-xl-2 {\n padding: 0.5rem !important;\n }\n .p-xl-3 {\n padding: 1rem !important;\n }\n .p-xl-4 {\n padding: 1.5rem !important;\n }\n .p-xl-5 {\n padding: 3rem !important;\n }\n .px-xl-0 {\n padding-left: 0 !important;\n padding-right: 0 !important;\n }\n .px-xl-1 {\n padding-left: 0.25rem !important;\n padding-right: 0.25rem !important;\n }\n .px-xl-2 {\n padding-left: 0.5rem !important;\n padding-right: 0.5rem !important;\n }\n .px-xl-3 {\n padding-left: 1rem !important;\n padding-right: 1rem !important;\n }\n .px-xl-4 {\n padding-left: 1.5rem !important;\n padding-right: 1.5rem !important;\n }\n .px-xl-5 {\n padding-left: 3rem !important;\n padding-right: 3rem !important;\n }\n .py-xl-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-xl-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-xl-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-xl-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-xl-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-xl-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-xl-0 {\n padding-top: 0 !important;\n }\n .pt-xl-1 {\n padding-top: 0.25rem !important;\n }\n .pt-xl-2 {\n padding-top: 0.5rem !important;\n }\n .pt-xl-3 {\n padding-top: 1rem !important;\n }\n .pt-xl-4 {\n padding-top: 1.5rem !important;\n }\n .pt-xl-5 {\n padding-top: 3rem !important;\n }\n .pe-xl-0 {\n padding-left: 0 !important;\n }\n .pe-xl-1 {\n padding-left: 0.25rem !important;\n }\n .pe-xl-2 {\n padding-left: 0.5rem !important;\n }\n .pe-xl-3 {\n padding-left: 1rem !important;\n }\n .pe-xl-4 {\n padding-left: 1.5rem !important;\n }\n .pe-xl-5 {\n padding-left: 3rem !important;\n }\n .pb-xl-0 {\n padding-bottom: 0 !important;\n }\n .pb-xl-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-xl-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-xl-3 {\n padding-bottom: 1rem !important;\n }\n .pb-xl-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-xl-5 {\n padding-bottom: 3rem !important;\n }\n .ps-xl-0 {\n padding-right: 0 !important;\n }\n .ps-xl-1 {\n padding-right: 0.25rem !important;\n }\n .ps-xl-2 {\n padding-right: 0.5rem !important;\n }\n .ps-xl-3 {\n padding-right: 1rem !important;\n }\n .ps-xl-4 {\n padding-right: 1.5rem !important;\n }\n .ps-xl-5 {\n padding-right: 3rem !important;\n }\n}\n@media (min-width: 1400px) {\n .d-xxl-inline {\n display: inline !important;\n }\n .d-xxl-inline-block {\n display: inline-block !important;\n }\n .d-xxl-block {\n display: block !important;\n }\n .d-xxl-grid {\n display: grid !important;\n }\n .d-xxl-table {\n display: table !important;\n }\n .d-xxl-table-row {\n display: table-row !important;\n }\n .d-xxl-table-cell {\n display: table-cell !important;\n }\n .d-xxl-flex {\n display: flex !important;\n }\n .d-xxl-inline-flex {\n display: inline-flex !important;\n }\n .d-xxl-none {\n display: none !important;\n }\n .flex-xxl-fill {\n flex: 1 1 auto !important;\n }\n .flex-xxl-row {\n flex-direction: row !important;\n }\n .flex-xxl-column {\n flex-direction: column !important;\n }\n .flex-xxl-row-reverse {\n flex-direction: row-reverse !important;\n }\n .flex-xxl-column-reverse {\n flex-direction: column-reverse !important;\n }\n .flex-xxl-grow-0 {\n flex-grow: 0 !important;\n }\n .flex-xxl-grow-1 {\n flex-grow: 1 !important;\n }\n .flex-xxl-shrink-0 {\n flex-shrink: 0 !important;\n }\n .flex-xxl-shrink-1 {\n flex-shrink: 1 !important;\n }\n .flex-xxl-wrap {\n flex-wrap: wrap !important;\n }\n .flex-xxl-nowrap {\n flex-wrap: nowrap !important;\n }\n .flex-xxl-wrap-reverse {\n flex-wrap: wrap-reverse !important;\n }\n .justify-content-xxl-start {\n justify-content: flex-start !important;\n }\n .justify-content-xxl-end {\n justify-content: flex-end !important;\n }\n .justify-content-xxl-center {\n justify-content: center !important;\n }\n .justify-content-xxl-between {\n justify-content: space-between !important;\n }\n .justify-content-xxl-around {\n justify-content: space-around !important;\n }\n .justify-content-xxl-evenly {\n justify-content: space-evenly !important;\n }\n .align-items-xxl-start {\n align-items: flex-start !important;\n }\n .align-items-xxl-end {\n align-items: flex-end !important;\n }\n .align-items-xxl-center {\n align-items: center !important;\n }\n .align-items-xxl-baseline {\n align-items: baseline !important;\n }\n .align-items-xxl-stretch {\n align-items: stretch !important;\n }\n .align-content-xxl-start {\n align-content: flex-start !important;\n }\n .align-content-xxl-end {\n align-content: flex-end !important;\n }\n .align-content-xxl-center {\n align-content: center !important;\n }\n .align-content-xxl-between {\n align-content: space-between !important;\n }\n .align-content-xxl-around {\n align-content: space-around !important;\n }\n .align-content-xxl-stretch {\n align-content: stretch !important;\n }\n .align-self-xxl-auto {\n align-self: auto !important;\n }\n .align-self-xxl-start {\n align-self: flex-start !important;\n }\n .align-self-xxl-end {\n align-self: flex-end !important;\n }\n .align-self-xxl-center {\n align-self: center !important;\n }\n .align-self-xxl-baseline {\n align-self: baseline !important;\n }\n .align-self-xxl-stretch {\n align-self: stretch !important;\n }\n .order-xxl-first {\n order: -1 !important;\n }\n .order-xxl-0 {\n order: 0 !important;\n }\n .order-xxl-1 {\n order: 1 !important;\n }\n .order-xxl-2 {\n order: 2 !important;\n }\n .order-xxl-3 {\n order: 3 !important;\n }\n .order-xxl-4 {\n order: 4 !important;\n }\n .order-xxl-5 {\n order: 5 !important;\n }\n .order-xxl-last {\n order: 6 !important;\n }\n .m-xxl-0 {\n margin: 0 !important;\n }\n .m-xxl-1 {\n margin: 0.25rem !important;\n }\n .m-xxl-2 {\n margin: 0.5rem !important;\n }\n .m-xxl-3 {\n margin: 1rem !important;\n }\n .m-xxl-4 {\n margin: 1.5rem !important;\n }\n .m-xxl-5 {\n margin: 3rem !important;\n }\n .m-xxl-auto {\n margin: auto !important;\n }\n .mx-xxl-0 {\n margin-left: 0 !important;\n margin-right: 0 !important;\n }\n .mx-xxl-1 {\n margin-left: 0.25rem !important;\n margin-right: 0.25rem !important;\n }\n .mx-xxl-2 {\n margin-left: 0.5rem !important;\n margin-right: 0.5rem !important;\n }\n .mx-xxl-3 {\n margin-left: 1rem !important;\n margin-right: 1rem !important;\n }\n .mx-xxl-4 {\n margin-left: 1.5rem !important;\n margin-right: 1.5rem !important;\n }\n .mx-xxl-5 {\n margin-left: 3rem !important;\n margin-right: 3rem !important;\n }\n .mx-xxl-auto {\n margin-left: auto !important;\n margin-right: auto !important;\n }\n .my-xxl-0 {\n margin-top: 0 !important;\n margin-bottom: 0 !important;\n }\n .my-xxl-1 {\n margin-top: 0.25rem !important;\n margin-bottom: 0.25rem !important;\n }\n .my-xxl-2 {\n margin-top: 0.5rem !important;\n margin-bottom: 0.5rem !important;\n }\n .my-xxl-3 {\n margin-top: 1rem !important;\n margin-bottom: 1rem !important;\n }\n .my-xxl-4 {\n margin-top: 1.5rem !important;\n margin-bottom: 1.5rem !important;\n }\n .my-xxl-5 {\n margin-top: 3rem !important;\n margin-bottom: 3rem !important;\n }\n .my-xxl-auto {\n margin-top: auto !important;\n margin-bottom: auto !important;\n }\n .mt-xxl-0 {\n margin-top: 0 !important;\n }\n .mt-xxl-1 {\n margin-top: 0.25rem !important;\n }\n .mt-xxl-2 {\n margin-top: 0.5rem !important;\n }\n .mt-xxl-3 {\n margin-top: 1rem !important;\n }\n .mt-xxl-4 {\n margin-top: 1.5rem !important;\n }\n .mt-xxl-5 {\n margin-top: 3rem !important;\n }\n .mt-xxl-auto {\n margin-top: auto !important;\n }\n .me-xxl-0 {\n margin-left: 0 !important;\n }\n .me-xxl-1 {\n margin-left: 0.25rem !important;\n }\n .me-xxl-2 {\n margin-left: 0.5rem !important;\n }\n .me-xxl-3 {\n margin-left: 1rem !important;\n }\n .me-xxl-4 {\n margin-left: 1.5rem !important;\n }\n .me-xxl-5 {\n margin-left: 3rem !important;\n }\n .me-xxl-auto {\n margin-left: auto !important;\n }\n .mb-xxl-0 {\n margin-bottom: 0 !important;\n }\n .mb-xxl-1 {\n margin-bottom: 0.25rem !important;\n }\n .mb-xxl-2 {\n margin-bottom: 0.5rem !important;\n }\n .mb-xxl-3 {\n margin-bottom: 1rem !important;\n }\n .mb-xxl-4 {\n margin-bottom: 1.5rem !important;\n }\n .mb-xxl-5 {\n margin-bottom: 3rem !important;\n }\n .mb-xxl-auto {\n margin-bottom: auto !important;\n }\n .ms-xxl-0 {\n margin-right: 0 !important;\n }\n .ms-xxl-1 {\n margin-right: 0.25rem !important;\n }\n .ms-xxl-2 {\n margin-right: 0.5rem !important;\n }\n .ms-xxl-3 {\n margin-right: 1rem !important;\n }\n .ms-xxl-4 {\n margin-right: 1.5rem !important;\n }\n .ms-xxl-5 {\n margin-right: 3rem !important;\n }\n .ms-xxl-auto {\n margin-right: auto !important;\n }\n .p-xxl-0 {\n padding: 0 !important;\n }\n .p-xxl-1 {\n padding: 0.25rem !important;\n }\n .p-xxl-2 {\n padding: 0.5rem !important;\n }\n .p-xxl-3 {\n padding: 1rem !important;\n }\n .p-xxl-4 {\n padding: 1.5rem !important;\n }\n .p-xxl-5 {\n padding: 3rem !important;\n }\n .px-xxl-0 {\n padding-left: 0 !important;\n padding-right: 0 !important;\n }\n .px-xxl-1 {\n padding-left: 0.25rem !important;\n padding-right: 0.25rem !important;\n }\n .px-xxl-2 {\n padding-left: 0.5rem !important;\n padding-right: 0.5rem !important;\n }\n .px-xxl-3 {\n padding-left: 1rem !important;\n padding-right: 1rem !important;\n }\n .px-xxl-4 {\n padding-left: 1.5rem !important;\n padding-right: 1.5rem !important;\n }\n .px-xxl-5 {\n padding-left: 3rem !important;\n padding-right: 3rem !important;\n }\n .py-xxl-0 {\n padding-top: 0 !important;\n padding-bottom: 0 !important;\n }\n .py-xxl-1 {\n padding-top: 0.25rem !important;\n padding-bottom: 0.25rem !important;\n }\n .py-xxl-2 {\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n }\n .py-xxl-3 {\n padding-top: 1rem !important;\n padding-bottom: 1rem !important;\n }\n .py-xxl-4 {\n padding-top: 1.5rem !important;\n padding-bottom: 1.5rem !important;\n }\n .py-xxl-5 {\n padding-top: 3rem !important;\n padding-bottom: 3rem !important;\n }\n .pt-xxl-0 {\n padding-top: 0 !important;\n }\n .pt-xxl-1 {\n padding-top: 0.25rem !important;\n }\n .pt-xxl-2 {\n padding-top: 0.5rem !important;\n }\n .pt-xxl-3 {\n padding-top: 1rem !important;\n }\n .pt-xxl-4 {\n padding-top: 1.5rem !important;\n }\n .pt-xxl-5 {\n padding-top: 3rem !important;\n }\n .pe-xxl-0 {\n padding-left: 0 !important;\n }\n .pe-xxl-1 {\n padding-left: 0.25rem !important;\n }\n .pe-xxl-2 {\n padding-left: 0.5rem !important;\n }\n .pe-xxl-3 {\n padding-left: 1rem !important;\n }\n .pe-xxl-4 {\n padding-left: 1.5rem !important;\n }\n .pe-xxl-5 {\n padding-left: 3rem !important;\n }\n .pb-xxl-0 {\n padding-bottom: 0 !important;\n }\n .pb-xxl-1 {\n padding-bottom: 0.25rem !important;\n }\n .pb-xxl-2 {\n padding-bottom: 0.5rem !important;\n }\n .pb-xxl-3 {\n padding-bottom: 1rem !important;\n }\n .pb-xxl-4 {\n padding-bottom: 1.5rem !important;\n }\n .pb-xxl-5 {\n padding-bottom: 3rem !important;\n }\n .ps-xxl-0 {\n padding-right: 0 !important;\n }\n .ps-xxl-1 {\n padding-right: 0.25rem !important;\n }\n .ps-xxl-2 {\n padding-right: 0.5rem !important;\n }\n .ps-xxl-3 {\n padding-right: 1rem !important;\n }\n .ps-xxl-4 {\n padding-right: 1.5rem !important;\n }\n .ps-xxl-5 {\n padding-right: 3rem !important;\n }\n}\n@media print {\n .d-print-inline {\n display: inline !important;\n }\n .d-print-inline-block {\n display: inline-block !important;\n }\n .d-print-block {\n display: block !important;\n }\n .d-print-grid {\n display: grid !important;\n }\n .d-print-table {\n display: table !important;\n }\n .d-print-table-row {\n display: table-row !important;\n }\n .d-print-table-cell {\n display: table-cell !important;\n }\n .d-print-flex {\n display: flex !important;\n }\n .d-print-inline-flex {\n display: inline-flex !important;\n }\n .d-print-none {\n display: none !important;\n }\n}\n/*# sourceMappingURL=bootstrap-grid.rtl.css.map */","// stylelint-disable property-blacklist, scss/dollar-variable-default\n\n// SCSS RFS mixin\n//\n// Automated responsive values for font sizes, paddings, margins and much more\n//\n// Licensed under MIT (https://github.com/twbs/rfs/blob/main/LICENSE)\n\n// Configuration\n\n// Base value\n$rfs-base-value: 1.25rem !default;\n$rfs-unit: rem !default;\n\n@if $rfs-unit != rem and $rfs-unit != px {\n @error \"`#{$rfs-unit}` is not a valid unit for $rfs-unit. Use `px` or `rem`.\";\n}\n\n// Breakpoint at where values start decreasing if screen width is smaller\n$rfs-breakpoint: 1200px !default;\n$rfs-breakpoint-unit: px !default;\n\n@if $rfs-breakpoint-unit != px and $rfs-breakpoint-unit != em and $rfs-breakpoint-unit != rem {\n @error \"`#{$rfs-breakpoint-unit}` is not a valid unit for $rfs-breakpoint-unit. Use `px`, `em` or `rem`.\";\n}\n\n// Resize values based on screen height and width\n$rfs-two-dimensional: false !default;\n\n// Factor of decrease\n$rfs-factor: 10 !default;\n\n@if type-of($rfs-factor) != number or $rfs-factor <= 1 {\n @error \"`#{$rfs-factor}` is not a valid $rfs-factor, it must be greater than 1.\";\n}\n\n// Mode. Possibilities: \"min-media-query\", \"max-media-query\"\n$rfs-mode: min-media-query !default;\n\n// Generate enable or disable classes. Possibilities: false, \"enable\" or \"disable\"\n$rfs-class: false !default;\n\n// 1 rem = $rfs-rem-value px\n$rfs-rem-value: 16 !default;\n\n// Safari iframe resize bug: https://github.com/twbs/rfs/issues/14\n$rfs-safari-iframe-resize-bug-fix: false !default;\n\n// Disable RFS by setting $enable-rfs to false\n$enable-rfs: true !default;\n\n// Cache $rfs-base-value unit\n$rfs-base-value-unit: unit($rfs-base-value);\n\n@function divide($dividend, $divisor, $precision: 10) {\n $sign: if($dividend > 0 and $divisor > 0 or $dividend < 0 and $divisor < 0, 1, -1);\n $dividend: abs($dividend);\n $divisor: abs($divisor);\n @if $dividend == 0 {\n @return 0;\n }\n @if $divisor == 0 {\n @error \"Cannot divide by 0\";\n }\n $remainder: $dividend;\n $result: 0;\n $factor: 10;\n @while ($remainder > 0 and $precision >= 0) {\n $quotient: 0;\n @while ($remainder >= $divisor) {\n $remainder: $remainder - $divisor;\n $quotient: $quotient + 1;\n }\n $result: $result * 10 + $quotient;\n $factor: $factor * .1;\n $remainder: $remainder * 10;\n $precision: $precision - 1;\n @if ($precision < 0 and $remainder >= $divisor * 5) {\n $result: $result + 1;\n }\n }\n $result: $result * $factor * $sign;\n $dividend-unit: unit($dividend);\n $divisor-unit: unit($divisor);\n $unit-map: (\n \"px\": 1px,\n \"rem\": 1rem,\n \"em\": 1em,\n \"%\": 1%\n );\n @if ($dividend-unit != $divisor-unit and map-has-key($unit-map, $dividend-unit)) {\n $result: $result * map-get($unit-map, $dividend-unit);\n }\n @return $result;\n}\n\n// Remove px-unit from $rfs-base-value for calculations\n@if $rfs-base-value-unit == px {\n $rfs-base-value: divide($rfs-base-value, $rfs-base-value * 0 + 1);\n}\n@else if $rfs-base-value-unit == rem {\n $rfs-base-value: divide($rfs-base-value, divide($rfs-base-value * 0 + 1, $rfs-rem-value));\n}\n\n// Cache $rfs-breakpoint unit to prevent multiple calls\n$rfs-breakpoint-unit-cache: unit($rfs-breakpoint);\n\n// Remove unit from $rfs-breakpoint for calculations\n@if $rfs-breakpoint-unit-cache == px {\n $rfs-breakpoint: divide($rfs-breakpoint, $rfs-breakpoint * 0 + 1);\n}\n@else if $rfs-breakpoint-unit-cache == rem or $rfs-breakpoint-unit-cache == \"em\" {\n $rfs-breakpoint: divide($rfs-breakpoint, divide($rfs-breakpoint * 0 + 1, $rfs-rem-value));\n}\n\n// Calculate the media query value\n$rfs-mq-value: if($rfs-breakpoint-unit == px, #{$rfs-breakpoint}px, #{divide($rfs-breakpoint, $rfs-rem-value)}#{$rfs-breakpoint-unit});\n$rfs-mq-property-width: if($rfs-mode == max-media-query, max-width, min-width);\n$rfs-mq-property-height: if($rfs-mode == max-media-query, max-height, min-height);\n\n// Internal mixin used to determine which media query needs to be used\n@mixin _rfs-media-query {\n @if $rfs-two-dimensional {\n @if $rfs-mode == max-media-query {\n @media (#{$rfs-mq-property-width}: #{$rfs-mq-value}), (#{$rfs-mq-property-height}: #{$rfs-mq-value}) {\n @content;\n }\n }\n @else {\n @media (#{$rfs-mq-property-width}: #{$rfs-mq-value}) and (#{$rfs-mq-property-height}: #{$rfs-mq-value}) {\n @content;\n }\n }\n }\n @else {\n @media (#{$rfs-mq-property-width}: #{$rfs-mq-value}) {\n @content;\n }\n }\n}\n\n// Internal mixin that adds disable classes to the selector if needed.\n@mixin _rfs-rule {\n @if $rfs-class == disable and $rfs-mode == max-media-query {\n // Adding an extra class increases specificity, which prevents the media query to override the property\n &,\n .disable-rfs &,\n &.disable-rfs {\n @content;\n }\n }\n @else if $rfs-class == enable and $rfs-mode == min-media-query {\n .enable-rfs &,\n &.enable-rfs {\n @content;\n }\n }\n @else {\n @content;\n }\n}\n\n// Internal mixin that adds enable classes to the selector if needed.\n@mixin _rfs-media-query-rule {\n\n @if $rfs-class == enable {\n @if $rfs-mode == min-media-query {\n @content;\n }\n\n @include _rfs-media-query {\n .enable-rfs &,\n &.enable-rfs {\n @content;\n }\n }\n }\n @else {\n @if $rfs-class == disable and $rfs-mode == min-media-query {\n .disable-rfs &,\n &.disable-rfs {\n @content;\n }\n }\n @include _rfs-media-query {\n @content;\n }\n }\n}\n\n// Helper function to get the formatted non-responsive value\n@function rfs-value($values) {\n // Convert to list\n $values: if(type-of($values) != list, ($values,), $values);\n\n $val: '';\n\n // Loop over each value and calculate value\n @each $value in $values {\n @if $value == 0 {\n $val: $val + ' 0';\n }\n @else {\n // Cache $value unit\n $unit: if(type-of($value) == \"number\", unit($value), false);\n\n @if $unit == px {\n // Convert to rem if needed\n $val: $val + ' ' + if($rfs-unit == rem, #{divide($value, $value * 0 + $rfs-rem-value)}rem, $value);\n }\n @else if $unit == rem {\n // Convert to px if needed\n $val: $val + ' ' + if($rfs-unit == px, #{divide($value, $value * 0 + 1) * $rfs-rem-value}px, $value);\n }\n @else {\n // If $value isn't a number (like inherit) or $value has a unit (not px or rem, like 1.5em) or $ is 0, just print the value\n $val: $val + ' ' + $value;\n }\n }\n }\n\n // Remove first space\n @return unquote(str-slice($val, 2));\n}\n\n// Helper function to get the responsive value calculated by RFS\n@function rfs-fluid-value($values) {\n // Convert to list\n $values: if(type-of($values) != list, ($values,), $values);\n\n $val: '';\n\n // Loop over each value and calculate value\n @each $value in $values {\n @if $value == 0 {\n $val: $val + ' 0';\n }\n\n @else {\n // Cache $value unit\n $unit: if(type-of($value) == \"number\", unit($value), false);\n\n // If $value isn't a number (like inherit) or $value has a unit (not px or rem, like 1.5em) or $ is 0, just print the value\n @if not $unit or $unit != px and $unit != rem {\n $val: $val + ' ' + $value;\n }\n\n @else {\n // Remove unit from $value for calculations\n $value: divide($value, $value * 0 + if($unit == px, 1, divide(1, $rfs-rem-value)));\n\n // Only add the media query if the value is greater than the minimum value\n @if abs($value) <= $rfs-base-value or not $enable-rfs {\n $val: $val + ' ' + if($rfs-unit == rem, #{divide($value, $rfs-rem-value)}rem, #{$value}px);\n }\n @else {\n // Calculate the minimum value\n $value-min: $rfs-base-value + divide(abs($value) - $rfs-base-value, $rfs-factor);\n\n // Calculate difference between $value and the minimum value\n $value-diff: abs($value) - $value-min;\n\n // Base value formatting\n $min-width: if($rfs-unit == rem, #{divide($value-min, $rfs-rem-value)}rem, #{$value-min}px);\n\n // Use negative value if needed\n $min-width: if($value < 0, -$min-width, $min-width);\n\n // Use `vmin` if two-dimensional is enabled\n $variable-unit: if($rfs-two-dimensional, vmin, vw);\n\n // Calculate the variable width between 0 and $rfs-breakpoint\n $variable-width: #{divide($value-diff * 100, $rfs-breakpoint)}#{$variable-unit};\n\n // Return the calculated value\n $val: $val + ' calc(' + $min-width + if($value < 0, ' - ', ' + ') + $variable-width + ')';\n }\n }\n }\n }\n\n // Remove first space\n @return unquote(str-slice($val, 2));\n}\n\n// RFS mixin\n@mixin rfs($values, $property: font-size) {\n @if $values != null {\n $val: rfs-value($values);\n $fluidVal: rfs-fluid-value($values);\n\n // Do not print the media query if responsive & non-responsive values are the same\n @if $val == $fluidVal {\n #{$property}: $val;\n }\n @else {\n @include _rfs-rule {\n #{$property}: if($rfs-mode == max-media-query, $val, $fluidVal);\n\n // Include safari iframe resize fix if needed\n min-width: if($rfs-safari-iframe-resize-bug-fix, (0 * 1vw), null);\n }\n\n @include _rfs-media-query-rule {\n #{$property}: if($rfs-mode == max-media-query, $fluidVal, $val);\n }\n }\n }\n}\n\n// Shorthand helper mixins\n@mixin font-size($value) {\n @include rfs($value);\n}\n\n@mixin padding($value) {\n @include rfs($value, padding);\n}\n\n@mixin padding-top($value) {\n @include rfs($value, padding-top);\n}\n\n@mixin padding-right($value) {\n @include rfs($value, padding-right);\n}\n\n@mixin padding-bottom($value) {\n @include rfs($value, padding-bottom);\n}\n\n@mixin padding-left($value) {\n @include rfs($value, padding-left);\n}\n\n@mixin margin($value) {\n @include rfs($value, margin);\n}\n\n@mixin margin-top($value) {\n @include rfs($value, margin-top);\n}\n\n@mixin margin-right($value) {\n @include rfs($value, margin-right);\n}\n\n@mixin margin-bottom($value) {\n @include rfs($value, margin-bottom);\n}\n\n@mixin margin-left($value) {\n @include rfs($value, margin-left);\n}\n","// scss-docs-start color-mode-mixin\n@mixin color-mode($mode: light, $root: false) {\n @if $color-mode-type == \"media-query\" {\n @if $root == true {\n @media (prefers-color-scheme: $mode) {\n :root {\n @content;\n }\n }\n } @else {\n @media (prefers-color-scheme: $mode) {\n @content;\n }\n }\n } @else {\n [data-bs-theme=\"#{$mode}\"] {\n @content;\n }\n }\n}\n// scss-docs-end color-mode-mixin\n","// Container widths\n//\n// Set the container width, and override it for fixed navbars in media queries.\n\n@if $enable-container-classes {\n // Single container class with breakpoint max-widths\n .container,\n // 100% wide container at all breakpoints\n .container-fluid {\n @include make-container();\n }\n\n // Responsive containers that are 100% wide until a breakpoint\n @each $breakpoint, $container-max-width in $container-max-widths {\n .container-#{$breakpoint} {\n @extend .container-fluid;\n }\n\n @include media-breakpoint-up($breakpoint, $grid-breakpoints) {\n %responsive-container-#{$breakpoint} {\n max-width: $container-max-width;\n }\n\n // Extend each breakpoint which is smaller or equal to the current breakpoint\n $extend-breakpoint: true;\n\n @each $name, $width in $grid-breakpoints {\n @if ($extend-breakpoint) {\n .container#{breakpoint-infix($name, $grid-breakpoints)} {\n @extend %responsive-container-#{$breakpoint};\n }\n\n // Once the current breakpoint is reached, stop extending\n @if ($breakpoint == $name) {\n $extend-breakpoint: false;\n }\n }\n }\n }\n }\n}\n","// Container mixins\n\n@mixin make-container($gutter: $container-padding-x) {\n --#{$prefix}gutter-x: #{$gutter};\n --#{$prefix}gutter-y: 0;\n width: 100%;\n padding-right: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n padding-left: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n margin-right: auto;\n margin-left: auto;\n}\n","// Breakpoint viewport sizes and media queries.\n//\n// Breakpoints are defined as a map of (name: minimum width), order from small to large:\n//\n// (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px)\n//\n// The map defined in the `$grid-breakpoints` global variable is used as the `$breakpoints` argument by default.\n\n// Name of the next breakpoint, or null for the last breakpoint.\n//\n// >> breakpoint-next(sm)\n// md\n// >> breakpoint-next(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// md\n// >> breakpoint-next(sm, $breakpoint-names: (xs sm md lg xl xxl))\n// md\n@function breakpoint-next($name, $breakpoints: $grid-breakpoints, $breakpoint-names: map-keys($breakpoints)) {\n $n: index($breakpoint-names, $name);\n @if not $n {\n @error \"breakpoint `#{$name}` not found in `#{$breakpoints}`\";\n }\n @return if($n < length($breakpoint-names), nth($breakpoint-names, $n + 1), null);\n}\n\n// Minimum breakpoint width. Null for the smallest (first) breakpoint.\n//\n// >> breakpoint-min(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// 576px\n@function breakpoint-min($name, $breakpoints: $grid-breakpoints) {\n $min: map-get($breakpoints, $name);\n @return if($min != 0, $min, null);\n}\n\n// Maximum breakpoint width.\n// The maximum value is reduced by 0.02px to work around the limitations of\n// `min-` and `max-` prefixes and viewports with fractional widths.\n// See https://www.w3.org/TR/mediaqueries-4/#mq-min-max\n// Uses 0.02px rather than 0.01px to work around a current rounding bug in Safari.\n// See https://bugs.webkit.org/show_bug.cgi?id=178261\n//\n// >> breakpoint-max(md, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// 767.98px\n@function breakpoint-max($name, $breakpoints: $grid-breakpoints) {\n $max: map-get($breakpoints, $name);\n @return if($max and $max > 0, $max - .02, null);\n}\n\n// Returns a blank string if smallest breakpoint, otherwise returns the name with a dash in front.\n// Useful for making responsive utilities.\n//\n// >> breakpoint-infix(xs, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// \"\" (Returns a blank string)\n// >> breakpoint-infix(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px, xxl: 1400px))\n// \"-sm\"\n@function breakpoint-infix($name, $breakpoints: $grid-breakpoints) {\n @return if(breakpoint-min($name, $breakpoints) == null, \"\", \"-#{$name}\");\n}\n\n// Media of at least the minimum breakpoint width. No query for the smallest breakpoint.\n// Makes the @content apply to the given breakpoint and wider.\n@mixin media-breakpoint-up($name, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n @if $min {\n @media (min-width: $min) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Media of at most the maximum breakpoint width. No query for the largest breakpoint.\n// Makes the @content apply to the given breakpoint and narrower.\n@mixin media-breakpoint-down($name, $breakpoints: $grid-breakpoints) {\n $max: breakpoint-max($name, $breakpoints);\n @if $max {\n @media (max-width: $max) {\n @content;\n }\n } @else {\n @content;\n }\n}\n\n// Media that spans multiple breakpoint widths.\n// Makes the @content apply between the min and max breakpoints\n@mixin media-breakpoint-between($lower, $upper, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($lower, $breakpoints);\n $max: breakpoint-max($upper, $breakpoints);\n\n @if $min != null and $max != null {\n @media (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else if $max == null {\n @include media-breakpoint-up($lower, $breakpoints) {\n @content;\n }\n } @else if $min == null {\n @include media-breakpoint-down($upper, $breakpoints) {\n @content;\n }\n }\n}\n\n// Media between the breakpoint's minimum and maximum widths.\n// No minimum for the smallest breakpoint, and no maximum for the largest one.\n// Makes the @content apply only to the given breakpoint, not viewports any wider or narrower.\n@mixin media-breakpoint-only($name, $breakpoints: $grid-breakpoints) {\n $min: breakpoint-min($name, $breakpoints);\n $next: breakpoint-next($name, $breakpoints);\n $max: breakpoint-max($next, $breakpoints);\n\n @if $min != null and $max != null {\n @media (min-width: $min) and (max-width: $max) {\n @content;\n }\n } @else if $max == null {\n @include media-breakpoint-up($name, $breakpoints) {\n @content;\n }\n } @else if $min == null {\n @include media-breakpoint-down($next, $breakpoints) {\n @content;\n }\n }\n}\n","// Row\n//\n// Rows contain your columns.\n\n@if $enable-grid-classes {\n .row {\n @include make-row();\n\n > * {\n @include make-col-ready();\n }\n }\n}\n\n@if $enable-cssgrid {\n .grid {\n display: grid;\n grid-template-rows: repeat(var(--#{$prefix}rows, 1), 1fr);\n grid-template-columns: repeat(var(--#{$prefix}columns, #{$grid-columns}), 1fr);\n gap: var(--#{$prefix}gap, #{$grid-gutter-width});\n\n @include make-cssgrid();\n }\n}\n\n\n// Columns\n//\n// Common styles for small and large grid columns\n\n@if $enable-grid-classes {\n @include make-grid-columns();\n}\n","// Grid system\n//\n// Generate semantic grid columns with these mixins.\n\n@mixin make-row($gutter: $grid-gutter-width) {\n --#{$prefix}gutter-x: #{$gutter};\n --#{$prefix}gutter-y: 0;\n display: flex;\n flex-wrap: wrap;\n // TODO: Revisit calc order after https://github.com/react-bootstrap/react-bootstrap/issues/6039 is fixed\n margin-top: calc(-1 * var(--#{$prefix}gutter-y)); // stylelint-disable-line function-disallowed-list\n margin-right: calc(-.5 * var(--#{$prefix}gutter-x)); // stylelint-disable-line function-disallowed-list\n margin-left: calc(-.5 * var(--#{$prefix}gutter-x)); // stylelint-disable-line function-disallowed-list\n}\n\n@mixin make-col-ready() {\n // Add box sizing if only the grid is loaded\n box-sizing: if(variable-exists(include-column-box-sizing) and $include-column-box-sizing, border-box, null);\n // Prevent columns from becoming too narrow when at smaller grid tiers by\n // always setting `width: 100%;`. This works because we set the width\n // later on to override this initial width.\n flex-shrink: 0;\n width: 100%;\n max-width: 100%; // Prevent `.col-auto`, `.col` (& responsive variants) from breaking out the grid\n padding-right: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n padding-left: calc(var(--#{$prefix}gutter-x) * .5); // stylelint-disable-line function-disallowed-list\n margin-top: var(--#{$prefix}gutter-y);\n}\n\n@mixin make-col($size: false, $columns: $grid-columns) {\n @if $size {\n flex: 0 0 auto;\n width: percentage(divide($size, $columns));\n\n } @else {\n flex: 1 1 0;\n max-width: 100%;\n }\n}\n\n@mixin make-col-auto() {\n flex: 0 0 auto;\n width: auto;\n}\n\n@mixin make-col-offset($size, $columns: $grid-columns) {\n $num: divide($size, $columns);\n margin-left: if($num == 0, 0, percentage($num));\n}\n\n// Row columns\n//\n// Specify on a parent element(e.g., .row) to force immediate children into NN\n// number of columns. Supports wrapping to new lines, but does not do a Masonry\n// style grid.\n@mixin row-cols($count) {\n > * {\n flex: 0 0 auto;\n width: divide(100%, $count);\n }\n}\n\n// Framework grid generation\n//\n// Used only by Bootstrap to generate the correct number of grid classes given\n// any value of `$grid-columns`.\n\n@mixin make-grid-columns($columns: $grid-columns, $gutter: $grid-gutter-width, $breakpoints: $grid-breakpoints) {\n @each $breakpoint in map-keys($breakpoints) {\n $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n @include media-breakpoint-up($breakpoint, $breakpoints) {\n // Provide basic `.col-{bp}` classes for equal-width flexbox columns\n .col#{$infix} {\n flex: 1 0 0%; // Flexbugs #4: https://github.com/philipwalton/flexbugs#flexbug-4\n }\n\n .row-cols#{$infix}-auto > * {\n @include make-col-auto();\n }\n\n @if $grid-row-columns > 0 {\n @for $i from 1 through $grid-row-columns {\n .row-cols#{$infix}-#{$i} {\n @include row-cols($i);\n }\n }\n }\n\n .col#{$infix}-auto {\n @include make-col-auto();\n }\n\n @if $columns > 0 {\n @for $i from 1 through $columns {\n .col#{$infix}-#{$i} {\n @include make-col($i, $columns);\n }\n }\n\n // `$columns - 1` because offsetting by the width of an entire row isn't possible\n @for $i from 0 through ($columns - 1) {\n @if not ($infix == \"\" and $i == 0) { // Avoid emitting useless .offset-0\n .offset#{$infix}-#{$i} {\n @include make-col-offset($i, $columns);\n }\n }\n }\n }\n\n // Gutters\n //\n // Make use of `.g-*`, `.gx-*` or `.gy-*` utilities to change spacing between the columns.\n @each $key, $value in $gutters {\n .g#{$infix}-#{$key},\n .gx#{$infix}-#{$key} {\n --#{$prefix}gutter-x: #{$value};\n }\n\n .g#{$infix}-#{$key},\n .gy#{$infix}-#{$key} {\n --#{$prefix}gutter-y: #{$value};\n }\n }\n }\n }\n}\n\n@mixin make-cssgrid($columns: $grid-columns, $breakpoints: $grid-breakpoints) {\n @each $breakpoint in map-keys($breakpoints) {\n $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n @include media-breakpoint-up($breakpoint, $breakpoints) {\n @if $columns > 0 {\n @for $i from 1 through $columns {\n .g-col#{$infix}-#{$i} {\n grid-column: auto / span $i;\n }\n }\n\n // Start with `1` because `0` is and invalid value.\n // Ends with `$columns - 1` because offsetting by the width of an entire row isn't possible.\n @for $i from 1 through ($columns - 1) {\n .g-start#{$infix}-#{$i} {\n grid-column-start: $i;\n }\n }\n }\n }\n }\n}\n","// Utility generator\n// Used to generate utilities & print utilities\n@mixin generate-utility($utility, $infix, $is-rfs-media-query: false) {\n $values: map-get($utility, values);\n\n // If the values are a list or string, convert it into a map\n @if type-of($values) == \"string\" or type-of(nth($values, 1)) != \"list\" {\n $values: zip($values, $values);\n }\n\n @each $key, $value in $values {\n $properties: map-get($utility, property);\n\n // Multiple properties are possible, for example with vertical or horizontal margins or paddings\n @if type-of($properties) == \"string\" {\n $properties: append((), $properties);\n }\n\n // Use custom class if present\n $property-class: if(map-has-key($utility, class), map-get($utility, class), nth($properties, 1));\n $property-class: if($property-class == null, \"\", $property-class);\n\n // Use custom CSS variable name if present, otherwise default to `class`\n $css-variable-name: if(map-has-key($utility, css-variable-name), map-get($utility, css-variable-name), map-get($utility, class));\n\n // State params to generate pseudo-classes\n $state: if(map-has-key($utility, state), map-get($utility, state), ());\n\n $infix: if($property-class == \"\" and str-slice($infix, 1, 1) == \"-\", str-slice($infix, 2), $infix);\n\n // Don't prefix if value key is null (e.g. with shadow class)\n $property-class-modifier: if($key, if($property-class == \"\" and $infix == \"\", \"\", \"-\") + $key, \"\");\n\n @if map-get($utility, rfs) {\n // Inside the media query\n @if $is-rfs-media-query {\n $val: rfs-value($value);\n\n // Do not render anything if fluid and non fluid values are the same\n $value: if($val == rfs-fluid-value($value), null, $val);\n }\n @else {\n $value: rfs-fluid-value($value);\n }\n }\n\n $is-css-var: map-get($utility, css-var);\n $is-local-vars: map-get($utility, local-vars);\n $is-rtl: map-get($utility, rtl);\n\n @if $value != null {\n @if $is-rtl == false {\n /* rtl:begin:remove */\n }\n\n @if $is-css-var {\n .#{$property-class + $infix + $property-class-modifier} {\n --#{$prefix}#{$css-variable-name}: #{$value};\n }\n\n @each $pseudo in $state {\n .#{$property-class + $infix + $property-class-modifier}-#{$pseudo}:#{$pseudo} {\n --#{$prefix}#{$css-variable-name}: #{$value};\n }\n }\n } @else {\n .#{$property-class + $infix + $property-class-modifier} {\n @each $property in $properties {\n @if $is-local-vars {\n @each $local-var, $variable in $is-local-vars {\n --#{$prefix}#{$local-var}: #{$variable};\n }\n }\n #{$property}: $value if($enable-important-utilities, !important, null);\n }\n }\n\n @each $pseudo in $state {\n .#{$property-class + $infix + $property-class-modifier}-#{$pseudo}:#{$pseudo} {\n @each $property in $properties {\n @if $is-local-vars {\n @each $local-var, $variable in $is-local-vars {\n --#{$prefix}#{$local-var}: #{$variable};\n }\n }\n #{$property}: $value if($enable-important-utilities, !important, null);\n }\n }\n }\n }\n\n @if $is-rtl == false {\n /* rtl:end:remove */\n }\n }\n }\n}\n","// Loop over each breakpoint\n@each $breakpoint in map-keys($grid-breakpoints) {\n\n // Generate media query if needed\n @include media-breakpoint-up($breakpoint) {\n $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n // Loop over each utility property\n @each $key, $utility in $utilities {\n // The utility can be disabled with `false`, thus check if the utility is a map first\n // Only proceed if responsive media queries are enabled or if it's the base media query\n @if type-of($utility) == \"map\" and (map-get($utility, responsive) or $infix == \"\") {\n @include generate-utility($utility, $infix);\n }\n }\n }\n}\n\n// RFS rescaling\n@media (min-width: $rfs-mq-value) {\n @each $breakpoint in map-keys($grid-breakpoints) {\n $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n @if (map-get($grid-breakpoints, $breakpoint) < $rfs-breakpoint) {\n // Loop over each utility property\n @each $key, $utility in $utilities {\n // The utility can be disabled with `false`, thus check if the utility is a map first\n // Only proceed if responsive media queries are enabled or if it's the base media query\n @if type-of($utility) == \"map\" and map-get($utility, rfs) and (map-get($utility, responsive) or $infix == \"\") {\n @include generate-utility($utility, $infix, true);\n }\n }\n }\n }\n}\n\n\n// Print utilities\n@media print {\n @each $key, $utility in $utilities {\n // The utility can be disabled with `false`, thus check if the utility is a map first\n // Then check if the utility needs print styles\n @if type-of($utility) == \"map\" and map-get($utility, print) == true {\n @include generate-utility($utility, \"-print\");\n }\n }\n}\n"]} \ No newline at end of file diff --git a/site/templates/vendors/Bootstrap/css/bootstrap-reboot.css b/site/templates/vendors/Bootstrap/css/bootstrap-reboot.css deleted file mode 100644 index 34713f9..0000000 --- a/site/templates/vendors/Bootstrap/css/bootstrap-reboot.css +++ /dev/null @@ -1,591 +0,0 @@ -/*! - * Bootstrap Reboot v5.3.0-alpha1 (https://getbootstrap.com/) - * Copyright 2011-2022 The Bootstrap Authors - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) - */ -:root, -[data-bs-theme=light] { - --bs-blue: #0d6efd; - --bs-indigo: #6610f2; - --bs-purple: #6f42c1; - --bs-pink: #d63384; - --bs-red: #dc3545; - --bs-orange: #fd7e14; - --bs-yellow: #ffc107; - --bs-green: #198754; - --bs-teal: #20c997; - --bs-cyan: #0dcaf0; - --bs-black: #000; - --bs-white: #fff; - --bs-gray: #6c757d; - --bs-gray-dark: #343a40; - --bs-gray-100: #f8f9fa; - --bs-gray-200: #e9ecef; - --bs-gray-300: #dee2e6; - --bs-gray-400: #ced4da; - --bs-gray-500: #adb5bd; - --bs-gray-600: #6c757d; - --bs-gray-700: #495057; - --bs-gray-800: #343a40; - --bs-gray-900: #212529; - --bs-primary: #0d6efd; - --bs-secondary: #6c757d; - --bs-success: #198754; - --bs-info: #0dcaf0; - --bs-warning: #ffc107; - --bs-danger: #dc3545; - --bs-light: #f8f9fa; - --bs-dark: #212529; - --bs-primary-rgb: 13, 110, 253; - --bs-secondary-rgb: 108, 117, 125; - --bs-success-rgb: 25, 135, 84; - --bs-info-rgb: 13, 202, 240; - --bs-warning-rgb: 255, 193, 7; - --bs-danger-rgb: 220, 53, 69; - --bs-light-rgb: 248, 249, 250; - --bs-dark-rgb: 33, 37, 41; - --bs-primary-text: #0a58ca; - --bs-secondary-text: #6c757d; - --bs-success-text: #146c43; - --bs-info-text: #087990; - --bs-warning-text: #997404; - --bs-danger-text: #b02a37; - --bs-light-text: #6c757d; - --bs-dark-text: #495057; - --bs-primary-bg-subtle: #cfe2ff; - --bs-secondary-bg-subtle: #f8f9fa; - --bs-success-bg-subtle: #d1e7dd; - --bs-info-bg-subtle: #cff4fc; - --bs-warning-bg-subtle: #fff3cd; - --bs-danger-bg-subtle: #f8d7da; - --bs-light-bg-subtle: #fcfcfd; - --bs-dark-bg-subtle: #ced4da; - --bs-primary-border-subtle: #9ec5fe; - --bs-secondary-border-subtle: #e9ecef; - --bs-success-border-subtle: #a3cfbb; - --bs-info-border-subtle: #9eeaf9; - --bs-warning-border-subtle: #ffe69c; - --bs-danger-border-subtle: #f1aeb5; - --bs-light-border-subtle: #e9ecef; - --bs-dark-border-subtle: #adb5bd; - --bs-white-rgb: 255, 255, 255; - --bs-black-rgb: 0, 0, 0; - --bs-body-color-rgb: 33, 37, 41; - --bs-body-bg-rgb: 255, 255, 255; - --bs-font-sans-serif: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", "Liberation Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - --bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; - --bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0)); - --bs-body-font-family: var(--bs-font-sans-serif); - --bs-body-font-size: 1rem; - --bs-body-font-weight: 400; - --bs-body-line-height: 1.5; - --bs-body-color: #212529; - --bs-emphasis-color: #000; - --bs-emphasis-color-rgb: 0, 0, 0; - --bs-secondary-color: rgba(33, 37, 41, 0.75); - --bs-secondary-color-rgb: 33, 37, 41; - --bs-secondary-bg: #e9ecef; - --bs-secondary-bg-rgb: 233, 236, 239; - --bs-tertiary-color: rgba(33, 37, 41, 0.5); - --bs-tertiary-color-rgb: 33, 37, 41; - --bs-tertiary-bg: #f8f9fa; - --bs-tertiary-bg-rgb: 248, 249, 250; - --bs-body-bg: #fff; - --bs-body-bg-rgb: 255, 255, 255; - --bs-link-color: #0d6efd; - --bs-link-color-rgb: 13, 110, 253; - --bs-link-decoration: underline; - --bs-link-hover-color: #0a58ca; - --bs-link-hover-color-rgb: 10, 88, 202; - --bs-code-color: #d63384; - --bs-highlight-bg: #fff3cd; - --bs-border-width: 1px; - --bs-border-style: solid; - --bs-border-color: #dee2e6; - --bs-border-color-translucent: rgba(0, 0, 0, 0.175); - --bs-border-radius: 0.375rem; - --bs-border-radius-sm: 0.25rem; - --bs-border-radius-lg: 0.5rem; - --bs-border-radius-xl: 1rem; - --bs-border-radius-2xl: 2rem; - --bs-border-radius-pill: 50rem; - --bs-box-shadow: 0 0.5rem 1rem rgba(var(--bs-body-color-rgb), 0.15); - --bs-box-shadow-sm: 0 0.125rem 0.25rem rgba(var(--bs-body-color-rgb), 0.075); - --bs-box-shadow-lg: 0 1rem 3rem rgba(var(--bs-body-color-rgb), 0.175); - --bs-box-shadow-inset: inset 0 1px 2px rgba(var(--bs-body-color-rgb), 0.075); - --bs-emphasis-color: #000; - --bs-form-control-bg: var(--bs-body-bg); - --bs-form-control-disabled-bg: var(--bs-secondary-bg); - --bs-highlight-bg: #fff3cd; - --bs-breakpoint-xs: 0; - --bs-breakpoint-sm: 576px; - --bs-breakpoint-md: 768px; - --bs-breakpoint-lg: 992px; - --bs-breakpoint-xl: 1200px; - --bs-breakpoint-xxl: 1400px; -} - -[data-bs-theme=dark] { - --bs-body-color: #adb5bd; - --bs-body-color-rgb: 173, 181, 189; - --bs-body-bg: #212529; - --bs-body-bg-rgb: 33, 37, 41; - --bs-emphasis-color: #f8f9fa; - --bs-emphasis-color-rgb: 248, 249, 250; - --bs-secondary-color: rgba(173, 181, 189, 0.75); - --bs-secondary-color-rgb: 173, 181, 189; - --bs-secondary-bg: #343a40; - --bs-secondary-bg-rgb: 52, 58, 64; - --bs-tertiary-color: rgba(173, 181, 189, 0.5); - --bs-tertiary-color-rgb: 173, 181, 189; - --bs-tertiary-bg: #2b3035; - --bs-tertiary-bg-rgb: 43, 48, 53; - --bs-emphasis-color: #fff; - --bs-primary-text: #6ea8fe; - --bs-secondary-text: #dee2e6; - --bs-success-text: #75b798; - --bs-info-text: #6edff6; - --bs-warning-text: #ffda6a; - --bs-danger-text: #ea868f; - --bs-light-text: #f8f9fa; - --bs-dark-text: #dee2e6; - --bs-primary-bg-subtle: #031633; - --bs-secondary-bg-subtle: #212529; - --bs-success-bg-subtle: #051b11; - --bs-info-bg-subtle: #032830; - --bs-warning-bg-subtle: #332701; - --bs-danger-bg-subtle: #2c0b0e; - --bs-light-bg-subtle: #343a40; - --bs-dark-bg-subtle: #1a1d20; - --bs-primary-border-subtle: #084298; - --bs-secondary-border-subtle: #495057; - --bs-success-border-subtle: #0f5132; - --bs-info-border-subtle: #055160; - --bs-warning-border-subtle: #664d03; - --bs-danger-border-subtle: #842029; - --bs-light-border-subtle: #495057; - --bs-dark-border-subtle: #343a40; - --bs-heading-color: #fff; - --bs-link-color: #6ea8fe; - --bs-link-hover-color: #9ec5fe; - --bs-link-color-rgb: 110, 168, 254; - --bs-link-hover-color-rgb: 158, 197, 254; - --bs-code-color: #e685b5; - --bs-border-color: #495057; - --bs-border-color-translucent: rgba(255, 255, 255, 0.15); -} - -*, -*::before, -*::after { - box-sizing: border-box; -} - -@media (prefers-reduced-motion: no-preference) { - :root { - scroll-behavior: smooth; - } -} - -body { - margin: 0; - font-family: var(--bs-body-font-family); - font-size: var(--bs-body-font-size); - font-weight: var(--bs-body-font-weight); - line-height: var(--bs-body-line-height); - color: var(--bs-body-color); - text-align: var(--bs-body-text-align); - background-color: var(--bs-body-bg); - -webkit-text-size-adjust: 100%; - -webkit-tap-highlight-color: rgba(0, 0, 0, 0); -} - -hr { - margin: 1rem 0; - color: inherit; - border: 0; - border-top: var(--bs-border-width) solid; - opacity: 0.25; -} - -h6, h5, h4, h3, h2, h1 { - margin-top: 0; - margin-bottom: 0.5rem; - font-weight: 500; - line-height: 1.2; - color: var(--bs-heading-color, inherit); -} - -h1 { - font-size: calc(1.375rem + 1.5vw); -} -@media (min-width: 1200px) { - h1 { - font-size: 2.5rem; - } -} - -h2 { - font-size: calc(1.325rem + 0.9vw); -} -@media (min-width: 1200px) { - h2 { - font-size: 2rem; - } -} - -h3 { - font-size: calc(1.3rem + 0.6vw); -} -@media (min-width: 1200px) { - h3 { - font-size: 1.75rem; - } -} - -h4 { - font-size: calc(1.275rem + 0.3vw); -} -@media (min-width: 1200px) { - h4 { - font-size: 1.5rem; - } -} - -h5 { - font-size: 1.25rem; -} - -h6 { - font-size: 1rem; -} - -p { - margin-top: 0; - margin-bottom: 1rem; -} - -abbr[title] { - -webkit-text-decoration: underline dotted; - text-decoration: underline dotted; - cursor: help; - -webkit-text-decoration-skip-ink: none; - text-decoration-skip-ink: none; -} - -address { - margin-bottom: 1rem; - font-style: normal; - line-height: inherit; -} - -ol, -ul { - padding-left: 2rem; -} - -ol, -ul, -dl { - margin-top: 0; - margin-bottom: 1rem; -} - -ol ol, -ul ul, -ol ul, -ul ol { - margin-bottom: 0; -} - -dt { - font-weight: 700; -} - -dd { - margin-bottom: 0.5rem; - margin-left: 0; -} - -blockquote { - margin: 0 0 1rem; -} - -b, -strong { - font-weight: bolder; -} - -small { - font-size: 0.875em; -} - -mark { - padding: 0.1875em; - background-color: var(--bs-highlight-bg); -} - -sub, -sup { - position: relative; - font-size: 0.75em; - line-height: 0; - vertical-align: baseline; -} - -sub { - bottom: -0.25em; -} - -sup { - top: -0.5em; -} - -a { - color: rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, 1)); - text-decoration: underline; -} -a:hover { - --bs-link-color-rgb: var(--bs-link-hover-color-rgb); -} - -a:not([href]):not([class]), a:not([href]):not([class]):hover { - color: inherit; - text-decoration: none; -} - -pre, -code, -kbd, -samp { - font-family: var(--bs-font-monospace); - font-size: 1em; -} - -pre { - display: block; - margin-top: 0; - margin-bottom: 1rem; - overflow: auto; - font-size: 0.875em; -} -pre code { - font-size: inherit; - color: inherit; - word-break: normal; -} - -code { - font-size: 0.875em; - color: var(--bs-code-color); - word-wrap: break-word; -} -a > code { - color: inherit; -} - -kbd { - padding: 0.1875rem 0.375rem; - font-size: 0.875em; - color: var(--bs-body-bg); - background-color: var(--bs-body-color); - border-radius: 0.25rem; -} -kbd kbd { - padding: 0; - font-size: 1em; -} - -figure { - margin: 0 0 1rem; -} - -img, -svg { - vertical-align: middle; -} - -table { - caption-side: bottom; - border-collapse: collapse; -} - -caption { - padding-top: 0.5rem; - padding-bottom: 0.5rem; - color: var(--bs-secondary-color); - text-align: left; -} - -th { - text-align: inherit; - text-align: -webkit-match-parent; -} - -thead, -tbody, -tfoot, -tr, -td, -th { - border-color: inherit; - border-style: solid; - border-width: 0; -} - -label { - display: inline-block; -} - -button { - border-radius: 0; -} - -button:focus:not(:focus-visible) { - outline: 0; -} - -input, -button, -select, -optgroup, -textarea { - margin: 0; - font-family: inherit; - font-size: inherit; - line-height: inherit; -} - -button, -select { - text-transform: none; -} - -[role=button] { - cursor: pointer; -} - -select { - word-wrap: normal; -} -select:disabled { - opacity: 1; -} - -[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator { - display: none !important; -} - -button, -[type=button], -[type=reset], -[type=submit] { - -webkit-appearance: button; -} -button:not(:disabled), -[type=button]:not(:disabled), -[type=reset]:not(:disabled), -[type=submit]:not(:disabled) { - cursor: pointer; -} - -::-moz-focus-inner { - padding: 0; - border-style: none; -} - -textarea { - resize: vertical; -} - -fieldset { - min-width: 0; - padding: 0; - margin: 0; - border: 0; -} - -legend { - float: left; - width: 100%; - padding: 0; - margin-bottom: 0.5rem; - font-size: calc(1.275rem + 0.3vw); - line-height: inherit; -} -@media (min-width: 1200px) { - legend { - font-size: 1.5rem; - } -} -legend + * { - clear: left; -} - -::-webkit-datetime-edit-fields-wrapper, -::-webkit-datetime-edit-text, -::-webkit-datetime-edit-minute, -::-webkit-datetime-edit-hour-field, -::-webkit-datetime-edit-day-field, -::-webkit-datetime-edit-month-field, -::-webkit-datetime-edit-year-field { - padding: 0; -} - -::-webkit-inner-spin-button { - height: auto; -} - -[type=search] { - outline-offset: -2px; - -webkit-appearance: textfield; -} - -/* rtl:raw: -[type="tel"], -[type="url"], -[type="email"], -[type="number"] { - direction: ltr; -} -*/ -::-webkit-search-decoration { - -webkit-appearance: none; -} - -::-webkit-color-swatch-wrapper { - padding: 0; -} - -::-webkit-file-upload-button { - font: inherit; - -webkit-appearance: button; -} - -::file-selector-button { - font: inherit; - -webkit-appearance: button; -} - -output { - display: inline-block; -} - -iframe { - border: 0; -} - -summary { - display: list-item; - cursor: pointer; -} - -progress { - vertical-align: baseline; -} - -[hidden] { - display: none !important; -} - -/*# sourceMappingURL=bootstrap-reboot.css.map */ \ No newline at end of file diff --git a/site/templates/vendors/Bootstrap/css/bootstrap-reboot.css.map b/site/templates/vendors/Bootstrap/css/bootstrap-reboot.css.map deleted file mode 100644 index b9c2637..0000000 --- a/site/templates/vendors/Bootstrap/css/bootstrap-reboot.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["../../scss/mixins/_banner.scss","../../scss/_root.scss","../../scss/vendor/_rfs.scss","bootstrap-reboot.css","../../scss/mixins/_color-mode.scss","../../scss/_reboot.scss","../../scss/_variables.scss","../../scss/mixins/_border-radius.scss"],"names":[],"mappings":"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R;ADhHI;EG5BJ;IHqMQ,iBAAA;ECrDN;AACF;;AE5IA;EHqLM,kBALI;AChCV;;AE3IA;EHgLM,eALI;AC5BV;;AEpIA;EACE,aAAA;EACA,mBC2U0B;AHpM5B;;AE7HA;EACE,yCAAA;EAAA,iCAAA;EACA,YAAA;EACA,sCAAA;EAAA,8BAAA;AFgIF;;AE1HA;EACE,mBAAA;EACA,kBAAA;EACA,oBAAA;AF6HF;;AEvHA;;EAEE,kBAAA;AF0HF;;AEvHA;;;EAGE,aAAA;EACA,mBAAA;AF0HF;;AEvHA;;;;EAIE,gBAAA;AF0HF;;AEvHA;EACE,gBCqa4B;AH3S9B;;AErHA;EACE,qBAAA;EACA,cAAA;AFwHF;;AElHA;EACE,gBAAA;AFqHF;;AE7GA;;EAEE,mBC8Y4B;AH9R9B;;AExGA;EHmFM,kBALI;AC8BV;;AErGA;EACE,iBCud4B;EDtd5B,wCAAA;AFwGF;;AE/FA;;EAEE,kBAAA;EH+DI,iBALI;EGxDR,cAAA;EACA,wBAAA;AFkGF;;AE/FA;EAAM,eAAA;AFmGN;;AElGA;EAAM,WAAA;AFsGN;;AEjGA;EACE,gEAAA;EACA,0BC6MwC;AHzG1C;AElGE;EACE,mDAAA;AFoGJ;;AEzFE;EAEE,cAAA;EACA,qBAAA;AF2FJ;;AEpFA;;;;EAIE,qCCyT4B;EJpSxB,cALI;ACwEV;;AEhFA;EACE,cAAA;EACA,aAAA;EACA,mBAAA;EACA,cAAA;EHSI,kBALI;ACgFV;AE/EE;EHII,kBALI;EGGN,cAAA;EACA,kBAAA;AFiFJ;;AE7EA;EHHM,kBALI;EGUR,2BAAA;EACA,qBAAA;AFgFF;AE7EE;EACE,cAAA;AF+EJ;;AE3EA;EACE,2BAAA;EHfI,kBALI;EGsBR,wBC42CkC;ED32ClC,sCC42CkC;EChpDhC,sBAAA;AJmXJ;AE5EE;EACE,UAAA;EHtBE,cALI;AC0GV;;AEpEA;EACE,gBAAA;AFuEF;;AEjEA;;EAEE,sBAAA;AFoEF;;AE5DA;EACE,oBAAA;EACA,yBAAA;AF+DF;;AE5DA;EACE,mBC8V4B;ED7V5B,sBC6V4B;ED5V5B,gCCqT4B;EDpT5B,gBAAA;AF+DF;;AExDA;EAEE,mBAAA;EACA,gCAAA;AF0DF;;AEvDA;;;;;;EAME,qBAAA;EACA,mBAAA;EACA,eAAA;AF0DF;;AElDA;EACE,qBAAA;AFqDF;;AE/CA;EAEE,gBAAA;AFiDF;;AEzCA;EACE,UAAA;AF4CF;;AEvCA;;;;;EAKE,SAAA;EACA,oBAAA;EHrHI,kBALI;EG4HR,oBAAA;AF0CF;;AEtCA;;EAEE,oBAAA;AFyCF;;AEpCA;EACE,eAAA;AFuCF;;AEpCA;EAGE,iBAAA;AFqCF;AElCE;EACE,UAAA;AFoCJ;;AE7BA;EACE,wBAAA;AFgCF;;AExBA;;;;EAIE,0BAAA;AF2BF;AExBI;;;;EACE,eAAA;AF6BN;;AEtBA;EACE,UAAA;EACA,kBAAA;AFyBF;;AEpBA;EACE,gBAAA;AFuBF;;AEbA;EACE,YAAA;EACA,UAAA;EACA,SAAA;EACA,SAAA;AFgBF;;AERA;EACE,WAAA;EACA,WAAA;EACA,UAAA;EACA,qBCsL4B;EJhYtB,iCAAA;EG6MN,oBAAA;AFUF;ADzXI;EGwWJ;IH/LQ,iBAAA;ECoNN;AACF;AEbE;EACE,WAAA;AFeJ;;AERA;;;;;;;EAOE,UAAA;AFWF;;AERA;EACE,YAAA;AFWF;;AEFA;EACE,oBAAA;EACA,6BAAA;AFKF;;AEGA;;;;;;;CAAA;AAWA;EACE,wBAAA;AFHF;;AEQA;EACE,UAAA;AFLF;;AEYA;EACE,aAAA;EACA,0BAAA;AFTF;;AEOA;EACE,aAAA;EACA,0BAAA;AFTF;;AEcA;EACE,qBAAA;AFXF;;AEgBA;EACE,SAAA;AFbF;;AEoBA;EACE,kBAAA;EACA,eAAA;AFjBF;;AEyBA;EACE,wBAAA;AFtBF;;AE8BA;EACE,wBAAA;AF3BF","file":"bootstrap-reboot.css","sourcesContent":["@mixin bsBanner($file) {\n /*!\n * Bootstrap #{$file} v5.3.0-alpha1 (https://getbootstrap.com/)\n * Copyright 2011-2022 The Bootstrap Authors\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n}\n",":root,\n[data-bs-theme=\"light\"] {\n // Note: Custom variable values only support SassScript inside `#{}`.\n\n // Colors\n //\n // Generate palettes for full colors, grays, and theme colors.\n\n @each $color, $value in $colors {\n --#{$prefix}#{$color}: #{$value};\n }\n\n @each $color, $value in $grays {\n --#{$prefix}gray-#{$color}: #{$value};\n }\n\n @each $color, $value in $theme-colors {\n --#{$prefix}#{$color}: #{$value};\n }\n\n @each $color, $value in $theme-colors-rgb {\n --#{$prefix}#{$color}-rgb: #{$value};\n }\n\n @each $color, $value in $theme-colors-text {\n --#{$prefix}#{$color}-text: #{$value};\n }\n\n @each $color, $value in $theme-colors-bg-subtle {\n --#{$prefix}#{$color}-bg-subtle: #{$value};\n }\n\n @each $color, $value in $theme-colors-border-subtle {\n --#{$prefix}#{$color}-border-subtle: #{$value};\n }\n\n --#{$prefix}white-rgb: #{to-rgb($white)};\n --#{$prefix}black-rgb: #{to-rgb($black)};\n --#{$prefix}body-color-rgb: #{to-rgb($body-color)};\n --#{$prefix}body-bg-rgb: #{to-rgb($body-bg)};\n\n // Fonts\n\n // Note: Use `inspect` for lists so that quoted items keep the quotes.\n // See https://github.com/sass/sass/issues/2383#issuecomment-336349172\n --#{$prefix}font-sans-serif: #{inspect($font-family-sans-serif)};\n --#{$prefix}font-monospace: #{inspect($font-family-monospace)};\n --#{$prefix}gradient: #{$gradient};\n\n // Root and body\n // scss-docs-start root-body-variables\n @if $font-size-root != null {\n --#{$prefix}root-font-size: #{$font-size-root};\n }\n --#{$prefix}body-font-family: #{inspect($font-family-base)};\n @include rfs($font-size-base, --#{$prefix}body-font-size);\n --#{$prefix}body-font-weight: #{$font-weight-base};\n --#{$prefix}body-line-height: #{$line-height-base};\n --#{$prefix}body-color: #{$body-color};\n\n --#{$prefix}emphasis-color: #{$body-emphasis-color};\n --#{$prefix}emphasis-color-rgb: #{to-rgb($body-emphasis-color)};\n\n --#{$prefix}secondary-color: #{$body-secondary-color};\n --#{$prefix}secondary-color-rgb: #{to-rgb($body-secondary-color)};\n --#{$prefix}secondary-bg: #{$body-secondary-bg};\n --#{$prefix}secondary-bg-rgb: #{to-rgb($body-secondary-bg)};\n\n --#{$prefix}tertiary-color: #{$body-tertiary-color};\n --#{$prefix}tertiary-color-rgb: #{to-rgb($body-tertiary-color)};\n --#{$prefix}tertiary-bg: #{$body-tertiary-bg};\n --#{$prefix}tertiary-bg-rgb: #{to-rgb($body-tertiary-bg)};\n\n @if $body-text-align != null {\n --#{$prefix}body-text-align: #{$body-text-align};\n }\n --#{$prefix}body-bg: #{$body-bg};\n --#{$prefix}body-bg-rgb: #{to-rgb($body-bg)};\n // scss-docs-end root-body-variables\n\n @if $headings-color != null {\n --#{$prefix}heading-color: #{$headings-color};\n }\n\n --#{$prefix}link-color: #{$link-color};\n --#{$prefix}link-color-rgb: #{to-rgb($link-color)};\n --#{$prefix}link-decoration: #{$link-decoration};\n\n --#{$prefix}link-hover-color: #{$link-hover-color};\n --#{$prefix}link-hover-color-rgb: #{to-rgb($link-hover-color)};\n\n @if $link-hover-decoration != null {\n --#{$prefix}link-hover-decoration: #{$link-hover-decoration};\n }\n\n --#{$prefix}code-color: #{$code-color};\n --#{$prefix}highlight-bg: #{$mark-bg};\n\n // scss-docs-start root-border-var\n --#{$prefix}border-width: #{$border-width};\n --#{$prefix}border-style: #{$border-style};\n --#{$prefix}border-color: #{$border-color};\n --#{$prefix}border-color-translucent: #{$border-color-translucent};\n\n --#{$prefix}border-radius: #{$border-radius};\n --#{$prefix}border-radius-sm: #{$border-radius-sm};\n --#{$prefix}border-radius-lg: #{$border-radius-lg};\n --#{$prefix}border-radius-xl: #{$border-radius-xl};\n --#{$prefix}border-radius-2xl: #{$border-radius-2xl};\n --#{$prefix}border-radius-pill: #{$border-radius-pill};\n // scss-docs-end root-border-var\n\n --#{$prefix}box-shadow: #{$box-shadow};\n --#{$prefix}box-shadow-sm: #{$box-shadow-sm};\n --#{$prefix}box-shadow-lg: #{$box-shadow-lg};\n --#{$prefix}box-shadow-inset: #{$box-shadow-inset};\n\n --#{$prefix}emphasis-color: #{$emphasis-color};\n\n // scss-docs-start form-control-vars\n --#{$prefix}form-control-bg: var(--#{$prefix}body-bg);\n --#{$prefix}form-control-disabled-bg: var(--#{$prefix}secondary-bg);\n // scss-docs-end form-control-vars\n\n --#{$prefix}highlight-bg: #{$mark-bg};\n\n @each $name, $value in $grid-breakpoints {\n --#{$prefix}breakpoint-#{$name}: #{$value};\n }\n}\n\n@if $enable-dark-mode {\n @include color-mode(dark, true) {\n // scss-docs-start root-dark-mode-vars\n --#{$prefix}body-color: #{$body-color-dark};\n --#{$prefix}body-color-rgb: #{to-rgb($body-color-dark)};\n --#{$prefix}body-bg: #{$body-bg-dark};\n --#{$prefix}body-bg-rgb: #{to-rgb($body-bg-dark)};\n\n --#{$prefix}emphasis-color: #{$body-emphasis-color-dark};\n --#{$prefix}emphasis-color-rgb: #{to-rgb($body-emphasis-color-dark)};\n\n --#{$prefix}secondary-color: #{$body-secondary-color-dark};\n --#{$prefix}secondary-color-rgb: #{to-rgb($body-secondary-color-dark)};\n --#{$prefix}secondary-bg: #{$body-secondary-bg-dark};\n --#{$prefix}secondary-bg-rgb: #{to-rgb($body-secondary-bg-dark)};\n\n --#{$prefix}tertiary-color: #{$body-tertiary-color-dark};\n --#{$prefix}tertiary-color-rgb: #{to-rgb($body-tertiary-color-dark)};\n --#{$prefix}tertiary-bg: #{$body-tertiary-bg-dark};\n --#{$prefix}tertiary-bg-rgb: #{to-rgb($body-tertiary-bg-dark)};\n\n --#{$prefix}emphasis-color: #{$emphasis-color-dark};\n\n --#{$prefix}primary-text: #{$primary-text-dark};\n --#{$prefix}secondary-text: #{$secondary-text-dark};\n --#{$prefix}success-text: #{$success-text-dark};\n --#{$prefix}info-text: #{$info-text-dark};\n --#{$prefix}warning-text: #{$warning-text-dark};\n --#{$prefix}danger-text: #{$danger-text-dark};\n --#{$prefix}light-text: #{$light-text-dark};\n --#{$prefix}dark-text: #{$dark-text-dark};\n\n --#{$prefix}primary-bg-subtle: #{$primary-bg-subtle-dark};\n --#{$prefix}secondary-bg-subtle: #{$secondary-bg-subtle-dark};\n --#{$prefix}success-bg-subtle: #{$success-bg-subtle-dark};\n --#{$prefix}info-bg-subtle: #{$info-bg-subtle-dark};\n --#{$prefix}warning-bg-subtle: #{$warning-bg-subtle-dark};\n --#{$prefix}danger-bg-subtle: #{$danger-bg-subtle-dark};\n --#{$prefix}light-bg-subtle: #{$light-bg-subtle-dark};\n --#{$prefix}dark-bg-subtle: #{$dark-bg-subtle-dark};\n\n --#{$prefix}primary-border-subtle: #{$primary-border-subtle-dark};\n --#{$prefix}secondary-border-subtle: #{$secondary-border-subtle-dark};\n --#{$prefix}success-border-subtle: #{$success-border-subtle-dark};\n --#{$prefix}info-border-subtle: #{$info-border-subtle-dark};\n --#{$prefix}warning-border-subtle: #{$warning-border-subtle-dark};\n --#{$prefix}danger-border-subtle: #{$danger-border-subtle-dark};\n --#{$prefix}light-border-subtle: #{$light-border-subtle-dark};\n --#{$prefix}dark-border-subtle: #{$dark-border-subtle-dark};\n\n --#{$prefix}heading-color: #{$headings-color-dark};\n\n --#{$prefix}link-color: #{$link-color-dark};\n --#{$prefix}link-hover-color: #{$link-hover-color-dark};\n --#{$prefix}link-color-rgb: #{to-rgb($link-color-dark)};\n --#{$prefix}link-hover-color-rgb: #{to-rgb($link-hover-color-dark)};\n\n --#{$prefix}code-color: #{$code-color-dark};\n\n --#{$prefix}border-color: #{$border-color-dark};\n --#{$prefix}border-color-translucent: #{$border-color-translucent-dark};\n // scss-docs-end root-dark-mode-vars\n }\n}\n","// stylelint-disable property-blacklist, scss/dollar-variable-default\n\n// SCSS RFS mixin\n//\n// Automated responsive values for font sizes, paddings, margins and much more\n//\n// Licensed under MIT (https://github.com/twbs/rfs/blob/main/LICENSE)\n\n// Configuration\n\n// Base value\n$rfs-base-value: 1.25rem !default;\n$rfs-unit: rem !default;\n\n@if $rfs-unit != rem and $rfs-unit != px {\n @error \"`#{$rfs-unit}` is not a valid unit for $rfs-unit. Use `px` or `rem`.\";\n}\n\n// Breakpoint at where values start decreasing if screen width is smaller\n$rfs-breakpoint: 1200px !default;\n$rfs-breakpoint-unit: px !default;\n\n@if $rfs-breakpoint-unit != px and $rfs-breakpoint-unit != em and $rfs-breakpoint-unit != rem {\n @error \"`#{$rfs-breakpoint-unit}` is not a valid unit for $rfs-breakpoint-unit. Use `px`, `em` or `rem`.\";\n}\n\n// Resize values based on screen height and width\n$rfs-two-dimensional: false !default;\n\n// Factor of decrease\n$rfs-factor: 10 !default;\n\n@if type-of($rfs-factor) != number or $rfs-factor <= 1 {\n @error \"`#{$rfs-factor}` is not a valid $rfs-factor, it must be greater than 1.\";\n}\n\n// Mode. Possibilities: \"min-media-query\", \"max-media-query\"\n$rfs-mode: min-media-query !default;\n\n// Generate enable or disable classes. Possibilities: false, \"enable\" or \"disable\"\n$rfs-class: false !default;\n\n// 1 rem = $rfs-rem-value px\n$rfs-rem-value: 16 !default;\n\n// Safari iframe resize bug: https://github.com/twbs/rfs/issues/14\n$rfs-safari-iframe-resize-bug-fix: false !default;\n\n// Disable RFS by setting $enable-rfs to false\n$enable-rfs: true !default;\n\n// Cache $rfs-base-value unit\n$rfs-base-value-unit: unit($rfs-base-value);\n\n@function divide($dividend, $divisor, $precision: 10) {\n $sign: if($dividend > 0 and $divisor > 0 or $dividend < 0 and $divisor < 0, 1, -1);\n $dividend: abs($dividend);\n $divisor: abs($divisor);\n @if $dividend == 0 {\n @return 0;\n }\n @if $divisor == 0 {\n @error \"Cannot divide by 0\";\n }\n $remainder: $dividend;\n $result: 0;\n $factor: 10;\n @while ($remainder > 0 and $precision >= 0) {\n $quotient: 0;\n @while ($remainder >= $divisor) {\n $remainder: $remainder - $divisor;\n $quotient: $quotient + 1;\n }\n $result: $result * 10 + $quotient;\n $factor: $factor * .1;\n $remainder: $remainder * 10;\n $precision: $precision - 1;\n @if ($precision < 0 and $remainder >= $divisor * 5) {\n $result: $result + 1;\n }\n }\n $result: $result * $factor * $sign;\n $dividend-unit: unit($dividend);\n $divisor-unit: unit($divisor);\n $unit-map: (\n \"px\": 1px,\n \"rem\": 1rem,\n \"em\": 1em,\n \"%\": 1%\n );\n @if ($dividend-unit != $divisor-unit and map-has-key($unit-map, $dividend-unit)) {\n $result: $result * map-get($unit-map, $dividend-unit);\n }\n @return $result;\n}\n\n// Remove px-unit from $rfs-base-value for calculations\n@if $rfs-base-value-unit == px {\n $rfs-base-value: divide($rfs-base-value, $rfs-base-value * 0 + 1);\n}\n@else if $rfs-base-value-unit == rem {\n $rfs-base-value: divide($rfs-base-value, divide($rfs-base-value * 0 + 1, $rfs-rem-value));\n}\n\n// Cache $rfs-breakpoint unit to prevent multiple calls\n$rfs-breakpoint-unit-cache: unit($rfs-breakpoint);\n\n// Remove unit from $rfs-breakpoint for calculations\n@if $rfs-breakpoint-unit-cache == px {\n $rfs-breakpoint: divide($rfs-breakpoint, $rfs-breakpoint * 0 + 1);\n}\n@else if $rfs-breakpoint-unit-cache == rem or $rfs-breakpoint-unit-cache == \"em\" {\n $rfs-breakpoint: divide($rfs-breakpoint, divide($rfs-breakpoint * 0 + 1, $rfs-rem-value));\n}\n\n// Calculate the media query value\n$rfs-mq-value: if($rfs-breakpoint-unit == px, #{$rfs-breakpoint}px, #{divide($rfs-breakpoint, $rfs-rem-value)}#{$rfs-breakpoint-unit});\n$rfs-mq-property-width: if($rfs-mode == max-media-query, max-width, min-width);\n$rfs-mq-property-height: if($rfs-mode == max-media-query, max-height, min-height);\n\n// Internal mixin used to determine which media query needs to be used\n@mixin _rfs-media-query {\n @if $rfs-two-dimensional {\n @if $rfs-mode == max-media-query {\n @media (#{$rfs-mq-property-width}: #{$rfs-mq-value}), (#{$rfs-mq-property-height}: #{$rfs-mq-value}) {\n @content;\n }\n }\n @else {\n @media (#{$rfs-mq-property-width}: #{$rfs-mq-value}) and (#{$rfs-mq-property-height}: #{$rfs-mq-value}) {\n @content;\n }\n }\n }\n @else {\n @media (#{$rfs-mq-property-width}: #{$rfs-mq-value}) {\n @content;\n }\n }\n}\n\n// Internal mixin that adds disable classes to the selector if needed.\n@mixin _rfs-rule {\n @if $rfs-class == disable and $rfs-mode == max-media-query {\n // Adding an extra class increases specificity, which prevents the media query to override the property\n &,\n .disable-rfs &,\n &.disable-rfs {\n @content;\n }\n }\n @else if $rfs-class == enable and $rfs-mode == min-media-query {\n .enable-rfs &,\n &.enable-rfs {\n @content;\n }\n }\n @else {\n @content;\n }\n}\n\n// Internal mixin that adds enable classes to the selector if needed.\n@mixin _rfs-media-query-rule {\n\n @if $rfs-class == enable {\n @if $rfs-mode == min-media-query {\n @content;\n }\n\n @include _rfs-media-query {\n .enable-rfs &,\n &.enable-rfs {\n @content;\n }\n }\n }\n @else {\n @if $rfs-class == disable and $rfs-mode == min-media-query {\n .disable-rfs &,\n &.disable-rfs {\n @content;\n }\n }\n @include _rfs-media-query {\n @content;\n }\n }\n}\n\n// Helper function to get the formatted non-responsive value\n@function rfs-value($values) {\n // Convert to list\n $values: if(type-of($values) != list, ($values,), $values);\n\n $val: '';\n\n // Loop over each value and calculate value\n @each $value in $values {\n @if $value == 0 {\n $val: $val + ' 0';\n }\n @else {\n // Cache $value unit\n $unit: if(type-of($value) == \"number\", unit($value), false);\n\n @if $unit == px {\n // Convert to rem if needed\n $val: $val + ' ' + if($rfs-unit == rem, #{divide($value, $value * 0 + $rfs-rem-value)}rem, $value);\n }\n @else if $unit == rem {\n // Convert to px if needed\n $val: $val + ' ' + if($rfs-unit == px, #{divide($value, $value * 0 + 1) * $rfs-rem-value}px, $value);\n }\n @else {\n // If $value isn't a number (like inherit) or $value has a unit (not px or rem, like 1.5em) or $ is 0, just print the value\n $val: $val + ' ' + $value;\n }\n }\n }\n\n // Remove first space\n @return unquote(str-slice($val, 2));\n}\n\n// Helper function to get the responsive value calculated by RFS\n@function rfs-fluid-value($values) {\n // Convert to list\n $values: if(type-of($values) != list, ($values,), $values);\n\n $val: '';\n\n // Loop over each value and calculate value\n @each $value in $values {\n @if $value == 0 {\n $val: $val + ' 0';\n }\n\n @else {\n // Cache $value unit\n $unit: if(type-of($value) == \"number\", unit($value), false);\n\n // If $value isn't a number (like inherit) or $value has a unit (not px or rem, like 1.5em) or $ is 0, just print the value\n @if not $unit or $unit != px and $unit != rem {\n $val: $val + ' ' + $value;\n }\n\n @else {\n // Remove unit from $value for calculations\n $value: divide($value, $value * 0 + if($unit == px, 1, divide(1, $rfs-rem-value)));\n\n // Only add the media query if the value is greater than the minimum value\n @if abs($value) <= $rfs-base-value or not $enable-rfs {\n $val: $val + ' ' + if($rfs-unit == rem, #{divide($value, $rfs-rem-value)}rem, #{$value}px);\n }\n @else {\n // Calculate the minimum value\n $value-min: $rfs-base-value + divide(abs($value) - $rfs-base-value, $rfs-factor);\n\n // Calculate difference between $value and the minimum value\n $value-diff: abs($value) - $value-min;\n\n // Base value formatting\n $min-width: if($rfs-unit == rem, #{divide($value-min, $rfs-rem-value)}rem, #{$value-min}px);\n\n // Use negative value if needed\n $min-width: if($value < 0, -$min-width, $min-width);\n\n // Use `vmin` if two-dimensional is enabled\n $variable-unit: if($rfs-two-dimensional, vmin, vw);\n\n // Calculate the variable width between 0 and $rfs-breakpoint\n $variable-width: #{divide($value-diff * 100, $rfs-breakpoint)}#{$variable-unit};\n\n // Return the calculated value\n $val: $val + ' calc(' + $min-width + if($value < 0, ' - ', ' + ') + $variable-width + ')';\n }\n }\n }\n }\n\n // Remove first space\n @return unquote(str-slice($val, 2));\n}\n\n// RFS mixin\n@mixin rfs($values, $property: font-size) {\n @if $values != null {\n $val: rfs-value($values);\n $fluidVal: rfs-fluid-value($values);\n\n // Do not print the media query if responsive & non-responsive values are the same\n @if $val == $fluidVal {\n #{$property}: $val;\n }\n @else {\n @include _rfs-rule {\n #{$property}: if($rfs-mode == max-media-query, $val, $fluidVal);\n\n // Include safari iframe resize fix if needed\n min-width: if($rfs-safari-iframe-resize-bug-fix, (0 * 1vw), null);\n }\n\n @include _rfs-media-query-rule {\n #{$property}: if($rfs-mode == max-media-query, $fluidVal, $val);\n }\n }\n }\n}\n\n// Shorthand helper mixins\n@mixin font-size($value) {\n @include rfs($value);\n}\n\n@mixin padding($value) {\n @include rfs($value, padding);\n}\n\n@mixin padding-top($value) {\n @include rfs($value, padding-top);\n}\n\n@mixin padding-right($value) {\n @include rfs($value, padding-right);\n}\n\n@mixin padding-bottom($value) {\n @include rfs($value, padding-bottom);\n}\n\n@mixin padding-left($value) {\n @include rfs($value, padding-left);\n}\n\n@mixin margin($value) {\n @include rfs($value, margin);\n}\n\n@mixin margin-top($value) {\n @include rfs($value, margin-top);\n}\n\n@mixin margin-right($value) {\n @include rfs($value, margin-right);\n}\n\n@mixin margin-bottom($value) {\n @include rfs($value, margin-bottom);\n}\n\n@mixin margin-left($value) {\n @include rfs($value, margin-left);\n}\n","/*!\n * Bootstrap Reboot v5.3.0-alpha1 (https://getbootstrap.com/)\n * Copyright 2011-2022 The Bootstrap Authors\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n:root,\n[data-bs-theme=light] {\n --bs-blue: #0d6efd;\n --bs-indigo: #6610f2;\n --bs-purple: #6f42c1;\n --bs-pink: #d63384;\n --bs-red: #dc3545;\n --bs-orange: #fd7e14;\n --bs-yellow: #ffc107;\n --bs-green: #198754;\n --bs-teal: #20c997;\n --bs-cyan: #0dcaf0;\n --bs-black: #000;\n --bs-white: #fff;\n --bs-gray: #6c757d;\n --bs-gray-dark: #343a40;\n --bs-gray-100: #f8f9fa;\n --bs-gray-200: #e9ecef;\n --bs-gray-300: #dee2e6;\n --bs-gray-400: #ced4da;\n --bs-gray-500: #adb5bd;\n --bs-gray-600: #6c757d;\n --bs-gray-700: #495057;\n --bs-gray-800: #343a40;\n --bs-gray-900: #212529;\n --bs-primary: #0d6efd;\n --bs-secondary: #6c757d;\n --bs-success: #198754;\n --bs-info: #0dcaf0;\n --bs-warning: #ffc107;\n --bs-danger: #dc3545;\n --bs-light: #f8f9fa;\n --bs-dark: #212529;\n --bs-primary-rgb: 13, 110, 253;\n --bs-secondary-rgb: 108, 117, 125;\n --bs-success-rgb: 25, 135, 84;\n --bs-info-rgb: 13, 202, 240;\n --bs-warning-rgb: 255, 193, 7;\n --bs-danger-rgb: 220, 53, 69;\n --bs-light-rgb: 248, 249, 250;\n --bs-dark-rgb: 33, 37, 41;\n --bs-primary-text: #0a58ca;\n --bs-secondary-text: #6c757d;\n --bs-success-text: #146c43;\n --bs-info-text: #087990;\n --bs-warning-text: #997404;\n --bs-danger-text: #b02a37;\n --bs-light-text: #6c757d;\n --bs-dark-text: #495057;\n --bs-primary-bg-subtle: #cfe2ff;\n --bs-secondary-bg-subtle: #f8f9fa;\n --bs-success-bg-subtle: #d1e7dd;\n --bs-info-bg-subtle: #cff4fc;\n --bs-warning-bg-subtle: #fff3cd;\n --bs-danger-bg-subtle: #f8d7da;\n --bs-light-bg-subtle: #fcfcfd;\n --bs-dark-bg-subtle: #ced4da;\n --bs-primary-border-subtle: #9ec5fe;\n --bs-secondary-border-subtle: #e9ecef;\n --bs-success-border-subtle: #a3cfbb;\n --bs-info-border-subtle: #9eeaf9;\n --bs-warning-border-subtle: #ffe69c;\n --bs-danger-border-subtle: #f1aeb5;\n --bs-light-border-subtle: #e9ecef;\n --bs-dark-border-subtle: #adb5bd;\n --bs-white-rgb: 255, 255, 255;\n --bs-black-rgb: 0, 0, 0;\n --bs-body-color-rgb: 33, 37, 41;\n --bs-body-bg-rgb: 255, 255, 255;\n --bs-font-sans-serif: system-ui, -apple-system, \"Segoe UI\", Roboto, \"Helvetica Neue\", \"Noto Sans\", \"Liberation Sans\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\";\n --bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;\n --bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));\n --bs-body-font-family: var(--bs-font-sans-serif);\n --bs-body-font-size: 1rem;\n --bs-body-font-weight: 400;\n --bs-body-line-height: 1.5;\n --bs-body-color: #212529;\n --bs-emphasis-color: #000;\n --bs-emphasis-color-rgb: 0, 0, 0;\n --bs-secondary-color: rgba(33, 37, 41, 0.75);\n --bs-secondary-color-rgb: 33, 37, 41;\n --bs-secondary-bg: #e9ecef;\n --bs-secondary-bg-rgb: 233, 236, 239;\n --bs-tertiary-color: rgba(33, 37, 41, 0.5);\n --bs-tertiary-color-rgb: 33, 37, 41;\n --bs-tertiary-bg: #f8f9fa;\n --bs-tertiary-bg-rgb: 248, 249, 250;\n --bs-body-bg: #fff;\n --bs-body-bg-rgb: 255, 255, 255;\n --bs-link-color: #0d6efd;\n --bs-link-color-rgb: 13, 110, 253;\n --bs-link-decoration: underline;\n --bs-link-hover-color: #0a58ca;\n --bs-link-hover-color-rgb: 10, 88, 202;\n --bs-code-color: #d63384;\n --bs-highlight-bg: #fff3cd;\n --bs-border-width: 1px;\n --bs-border-style: solid;\n --bs-border-color: #dee2e6;\n --bs-border-color-translucent: rgba(0, 0, 0, 0.175);\n --bs-border-radius: 0.375rem;\n --bs-border-radius-sm: 0.25rem;\n --bs-border-radius-lg: 0.5rem;\n --bs-border-radius-xl: 1rem;\n --bs-border-radius-2xl: 2rem;\n --bs-border-radius-pill: 50rem;\n --bs-box-shadow: 0 0.5rem 1rem rgba(var(--bs-body-color-rgb), 0.15);\n --bs-box-shadow-sm: 0 0.125rem 0.25rem rgba(var(--bs-body-color-rgb), 0.075);\n --bs-box-shadow-lg: 0 1rem 3rem rgba(var(--bs-body-color-rgb), 0.175);\n --bs-box-shadow-inset: inset 0 1px 2px rgba(var(--bs-body-color-rgb), 0.075);\n --bs-emphasis-color: #000;\n --bs-form-control-bg: var(--bs-body-bg);\n --bs-form-control-disabled-bg: var(--bs-secondary-bg);\n --bs-highlight-bg: #fff3cd;\n --bs-breakpoint-xs: 0;\n --bs-breakpoint-sm: 576px;\n --bs-breakpoint-md: 768px;\n --bs-breakpoint-lg: 992px;\n --bs-breakpoint-xl: 1200px;\n --bs-breakpoint-xxl: 1400px;\n}\n\n[data-bs-theme=dark] {\n --bs-body-color: #adb5bd;\n --bs-body-color-rgb: 173, 181, 189;\n --bs-body-bg: #212529;\n --bs-body-bg-rgb: 33, 37, 41;\n --bs-emphasis-color: #f8f9fa;\n --bs-emphasis-color-rgb: 248, 249, 250;\n --bs-secondary-color: rgba(173, 181, 189, 0.75);\n --bs-secondary-color-rgb: 173, 181, 189;\n --bs-secondary-bg: #343a40;\n --bs-secondary-bg-rgb: 52, 58, 64;\n --bs-tertiary-color: rgba(173, 181, 189, 0.5);\n --bs-tertiary-color-rgb: 173, 181, 189;\n --bs-tertiary-bg: #2b3035;\n --bs-tertiary-bg-rgb: 43, 48, 53;\n --bs-emphasis-color: #fff;\n --bs-primary-text: #6ea8fe;\n --bs-secondary-text: #dee2e6;\n --bs-success-text: #75b798;\n --bs-info-text: #6edff6;\n --bs-warning-text: #ffda6a;\n --bs-danger-text: #ea868f;\n --bs-light-text: #f8f9fa;\n --bs-dark-text: #dee2e6;\n --bs-primary-bg-subtle: #031633;\n --bs-secondary-bg-subtle: #212529;\n --bs-success-bg-subtle: #051b11;\n --bs-info-bg-subtle: #032830;\n --bs-warning-bg-subtle: #332701;\n --bs-danger-bg-subtle: #2c0b0e;\n --bs-light-bg-subtle: #343a40;\n --bs-dark-bg-subtle: #1a1d20;\n --bs-primary-border-subtle: #084298;\n --bs-secondary-border-subtle: #495057;\n --bs-success-border-subtle: #0f5132;\n --bs-info-border-subtle: #055160;\n --bs-warning-border-subtle: #664d03;\n --bs-danger-border-subtle: #842029;\n --bs-light-border-subtle: #495057;\n --bs-dark-border-subtle: #343a40;\n --bs-heading-color: #fff;\n --bs-link-color: #6ea8fe;\n --bs-link-hover-color: #9ec5fe;\n --bs-link-color-rgb: 110, 168, 254;\n --bs-link-hover-color-rgb: 158, 197, 254;\n --bs-code-color: #e685b5;\n --bs-border-color: #495057;\n --bs-border-color-translucent: rgba(255, 255, 255, 0.15);\n}\n\n*,\n*::before,\n*::after {\n box-sizing: border-box;\n}\n\n@media (prefers-reduced-motion: no-preference) {\n :root {\n scroll-behavior: smooth;\n }\n}\n\nbody {\n margin: 0;\n font-family: var(--bs-body-font-family);\n font-size: var(--bs-body-font-size);\n font-weight: var(--bs-body-font-weight);\n line-height: var(--bs-body-line-height);\n color: var(--bs-body-color);\n text-align: var(--bs-body-text-align);\n background-color: var(--bs-body-bg);\n -webkit-text-size-adjust: 100%;\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\n\nhr {\n margin: 1rem 0;\n color: inherit;\n border: 0;\n border-top: var(--bs-border-width) solid;\n opacity: 0.25;\n}\n\nh6, h5, h4, h3, h2, h1 {\n margin-top: 0;\n margin-bottom: 0.5rem;\n font-weight: 500;\n line-height: 1.2;\n color: var(--bs-heading-color, inherit);\n}\n\nh1 {\n font-size: calc(1.375rem + 1.5vw);\n}\n@media (min-width: 1200px) {\n h1 {\n font-size: 2.5rem;\n }\n}\n\nh2 {\n font-size: calc(1.325rem + 0.9vw);\n}\n@media (min-width: 1200px) {\n h2 {\n font-size: 2rem;\n }\n}\n\nh3 {\n font-size: calc(1.3rem + 0.6vw);\n}\n@media (min-width: 1200px) {\n h3 {\n font-size: 1.75rem;\n }\n}\n\nh4 {\n font-size: calc(1.275rem + 0.3vw);\n}\n@media (min-width: 1200px) {\n h4 {\n font-size: 1.5rem;\n }\n}\n\nh5 {\n font-size: 1.25rem;\n}\n\nh6 {\n font-size: 1rem;\n}\n\np {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nabbr[title] {\n text-decoration: underline dotted;\n cursor: help;\n text-decoration-skip-ink: none;\n}\n\naddress {\n margin-bottom: 1rem;\n font-style: normal;\n line-height: inherit;\n}\n\nol,\nul {\n padding-left: 2rem;\n}\n\nol,\nul,\ndl {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n margin-bottom: 0;\n}\n\ndt {\n font-weight: 700;\n}\n\ndd {\n margin-bottom: 0.5rem;\n margin-left: 0;\n}\n\nblockquote {\n margin: 0 0 1rem;\n}\n\nb,\nstrong {\n font-weight: bolder;\n}\n\nsmall {\n font-size: 0.875em;\n}\n\nmark {\n padding: 0.1875em;\n background-color: var(--bs-highlight-bg);\n}\n\nsub,\nsup {\n position: relative;\n font-size: 0.75em;\n line-height: 0;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -0.25em;\n}\n\nsup {\n top: -0.5em;\n}\n\na {\n color: rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, 1));\n text-decoration: underline;\n}\na:hover {\n --bs-link-color-rgb: var(--bs-link-hover-color-rgb);\n}\n\na:not([href]):not([class]), a:not([href]):not([class]):hover {\n color: inherit;\n text-decoration: none;\n}\n\npre,\ncode,\nkbd,\nsamp {\n font-family: var(--bs-font-monospace);\n font-size: 1em;\n}\n\npre {\n display: block;\n margin-top: 0;\n margin-bottom: 1rem;\n overflow: auto;\n font-size: 0.875em;\n}\npre code {\n font-size: inherit;\n color: inherit;\n word-break: normal;\n}\n\ncode {\n font-size: 0.875em;\n color: var(--bs-code-color);\n word-wrap: break-word;\n}\na > code {\n color: inherit;\n}\n\nkbd {\n padding: 0.1875rem 0.375rem;\n font-size: 0.875em;\n color: var(--bs-body-bg);\n background-color: var(--bs-body-color);\n border-radius: 0.25rem;\n}\nkbd kbd {\n padding: 0;\n font-size: 1em;\n}\n\nfigure {\n margin: 0 0 1rem;\n}\n\nimg,\nsvg {\n vertical-align: middle;\n}\n\ntable {\n caption-side: bottom;\n border-collapse: collapse;\n}\n\ncaption {\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n color: var(--bs-secondary-color);\n text-align: left;\n}\n\nth {\n text-align: inherit;\n text-align: -webkit-match-parent;\n}\n\nthead,\ntbody,\ntfoot,\ntr,\ntd,\nth {\n border-color: inherit;\n border-style: solid;\n border-width: 0;\n}\n\nlabel {\n display: inline-block;\n}\n\nbutton {\n border-radius: 0;\n}\n\nbutton:focus:not(:focus-visible) {\n outline: 0;\n}\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n margin: 0;\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n}\n\nbutton,\nselect {\n text-transform: none;\n}\n\n[role=button] {\n cursor: pointer;\n}\n\nselect {\n word-wrap: normal;\n}\nselect:disabled {\n opacity: 1;\n}\n\n[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator {\n display: none !important;\n}\n\nbutton,\n[type=button],\n[type=reset],\n[type=submit] {\n -webkit-appearance: button;\n}\nbutton:not(:disabled),\n[type=button]:not(:disabled),\n[type=reset]:not(:disabled),\n[type=submit]:not(:disabled) {\n cursor: pointer;\n}\n\n::-moz-focus-inner {\n padding: 0;\n border-style: none;\n}\n\ntextarea {\n resize: vertical;\n}\n\nfieldset {\n min-width: 0;\n padding: 0;\n margin: 0;\n border: 0;\n}\n\nlegend {\n float: left;\n width: 100%;\n padding: 0;\n margin-bottom: 0.5rem;\n font-size: calc(1.275rem + 0.3vw);\n line-height: inherit;\n}\n@media (min-width: 1200px) {\n legend {\n font-size: 1.5rem;\n }\n}\nlegend + * {\n clear: left;\n}\n\n::-webkit-datetime-edit-fields-wrapper,\n::-webkit-datetime-edit-text,\n::-webkit-datetime-edit-minute,\n::-webkit-datetime-edit-hour-field,\n::-webkit-datetime-edit-day-field,\n::-webkit-datetime-edit-month-field,\n::-webkit-datetime-edit-year-field {\n padding: 0;\n}\n\n::-webkit-inner-spin-button {\n height: auto;\n}\n\n[type=search] {\n outline-offset: -2px;\n -webkit-appearance: textfield;\n}\n\n/* rtl:raw:\n[type=\"tel\"],\n[type=\"url\"],\n[type=\"email\"],\n[type=\"number\"] {\n direction: ltr;\n}\n*/\n::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n::-webkit-color-swatch-wrapper {\n padding: 0;\n}\n\n::file-selector-button {\n font: inherit;\n -webkit-appearance: button;\n}\n\noutput {\n display: inline-block;\n}\n\niframe {\n border: 0;\n}\n\nsummary {\n display: list-item;\n cursor: pointer;\n}\n\nprogress {\n vertical-align: baseline;\n}\n\n[hidden] {\n display: none !important;\n}\n\n/*# sourceMappingURL=bootstrap-reboot.css.map */\n","// scss-docs-start color-mode-mixin\n@mixin color-mode($mode: light, $root: false) {\n @if $color-mode-type == \"media-query\" {\n @if $root == true {\n @media (prefers-color-scheme: $mode) {\n :root {\n @content;\n }\n }\n } @else {\n @media (prefers-color-scheme: $mode) {\n @content;\n }\n }\n } @else {\n [data-bs-theme=\"#{$mode}\"] {\n @content;\n }\n }\n}\n// scss-docs-end color-mode-mixin\n","// stylelint-disable declaration-no-important, selector-no-qualifying-type, property-no-vendor-prefix\n\n\n// Reboot\n//\n// Normalization of HTML elements, manually forked from Normalize.css to remove\n// styles targeting irrelevant browsers while applying new styles.\n//\n// Normalize is licensed MIT. https://github.com/necolas/normalize.css\n\n\n// Document\n//\n// Change from `box-sizing: content-box` so that `width` is not affected by `padding` or `border`.\n\n*,\n*::before,\n*::after {\n box-sizing: border-box;\n}\n\n\n// Root\n//\n// Ability to the value of the root font sizes, affecting the value of `rem`.\n// null by default, thus nothing is generated.\n\n:root {\n @if $font-size-root != null {\n @include font-size(var(--#{$prefix}root-font-size));\n }\n\n @if $enable-smooth-scroll {\n @media (prefers-reduced-motion: no-preference) {\n scroll-behavior: smooth;\n }\n }\n}\n\n\n// Body\n//\n// 1. Remove the margin in all browsers.\n// 2. As a best practice, apply a default `background-color`.\n// 3. Prevent adjustments of font size after orientation changes in iOS.\n// 4. Change the default tap highlight to be completely transparent in iOS.\n\n// scss-docs-start reboot-body-rules\nbody {\n margin: 0; // 1\n font-family: var(--#{$prefix}body-font-family);\n @include font-size(var(--#{$prefix}body-font-size));\n font-weight: var(--#{$prefix}body-font-weight);\n line-height: var(--#{$prefix}body-line-height);\n color: var(--#{$prefix}body-color);\n text-align: var(--#{$prefix}body-text-align);\n background-color: var(--#{$prefix}body-bg); // 2\n -webkit-text-size-adjust: 100%; // 3\n -webkit-tap-highlight-color: rgba($black, 0); // 4\n}\n// scss-docs-end reboot-body-rules\n\n\n// Content grouping\n//\n// 1. Reset Firefox's gray color\n\nhr {\n margin: $hr-margin-y 0;\n color: $hr-color; // 1\n border: 0;\n border-top: $hr-border-width solid $hr-border-color;\n opacity: $hr-opacity;\n}\n\n\n// Typography\n//\n// 1. Remove top margins from headings\n// By default, `

    `-`

    ` all receive top and bottom margins. We nuke the top\n// margin for easier control within type scales as it avoids margin collapsing.\n\n%heading {\n margin-top: 0; // 1\n margin-bottom: $headings-margin-bottom;\n font-family: $headings-font-family;\n font-style: $headings-font-style;\n font-weight: $headings-font-weight;\n line-height: $headings-line-height;\n color: var(--#{$prefix}heading-color, inherit);\n}\n\nh1 {\n @extend %heading;\n @include font-size($h1-font-size);\n}\n\nh2 {\n @extend %heading;\n @include font-size($h2-font-size);\n}\n\nh3 {\n @extend %heading;\n @include font-size($h3-font-size);\n}\n\nh4 {\n @extend %heading;\n @include font-size($h4-font-size);\n}\n\nh5 {\n @extend %heading;\n @include font-size($h5-font-size);\n}\n\nh6 {\n @extend %heading;\n @include font-size($h6-font-size);\n}\n\n\n// Reset margins on paragraphs\n//\n// Similarly, the top margin on `

    `s get reset. However, we also reset the\n// bottom margin to use `rem` units instead of `em`.\n\np {\n margin-top: 0;\n margin-bottom: $paragraph-margin-bottom;\n}\n\n\n// Abbreviations\n//\n// 1. Add the correct text decoration in Chrome, Edge, Opera, and Safari.\n// 2. Add explicit cursor to indicate changed behavior.\n// 3. Prevent the text-decoration to be skipped.\n\nabbr[title] {\n text-decoration: underline dotted; // 1\n cursor: help; // 2\n text-decoration-skip-ink: none; // 3\n}\n\n\n// Address\n\naddress {\n margin-bottom: 1rem;\n font-style: normal;\n line-height: inherit;\n}\n\n\n// Lists\n\nol,\nul {\n padding-left: 2rem;\n}\n\nol,\nul,\ndl {\n margin-top: 0;\n margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n margin-bottom: 0;\n}\n\ndt {\n font-weight: $dt-font-weight;\n}\n\n// 1. Undo browser default\n\ndd {\n margin-bottom: .5rem;\n margin-left: 0; // 1\n}\n\n\n// Blockquote\n\nblockquote {\n margin: 0 0 1rem;\n}\n\n\n// Strong\n//\n// Add the correct font weight in Chrome, Edge, and Safari\n\nb,\nstrong {\n font-weight: $font-weight-bolder;\n}\n\n\n// Small\n//\n// Add the correct font size in all browsers\n\nsmall {\n @include font-size($small-font-size);\n}\n\n\n// Mark\n\nmark {\n padding: $mark-padding;\n background-color: var(--#{$prefix}highlight-bg);\n}\n\n\n// Sub and Sup\n//\n// Prevent `sub` and `sup` elements from affecting the line height in\n// all browsers.\n\nsub,\nsup {\n position: relative;\n @include font-size($sub-sup-font-size);\n line-height: 0;\n vertical-align: baseline;\n}\n\nsub { bottom: -.25em; }\nsup { top: -.5em; }\n\n\n// Links\n\na {\n color: rgba(var(--#{$prefix}link-color-rgb), var(--#{$prefix}link-opacity, 1));\n text-decoration: $link-decoration;\n\n &:hover {\n --#{$prefix}link-color-rgb: var(--#{$prefix}link-hover-color-rgb);\n text-decoration: $link-hover-decoration;\n }\n}\n\n// And undo these styles for placeholder links/named anchors (without href).\n// It would be more straightforward to just use a[href] in previous block, but that\n// causes specificity issues in many other styles that are too complex to fix.\n// See https://github.com/twbs/bootstrap/issues/19402\n\na:not([href]):not([class]) {\n &,\n &:hover {\n color: inherit;\n text-decoration: none;\n }\n}\n\n\n// Code\n\npre,\ncode,\nkbd,\nsamp {\n font-family: $font-family-code;\n @include font-size(1em); // Correct the odd `em` font sizing in all browsers.\n}\n\n// 1. Remove browser default top margin\n// 2. Reset browser default of `1em` to use `rem`s\n// 3. Don't allow content to break outside\n\npre {\n display: block;\n margin-top: 0; // 1\n margin-bottom: 1rem; // 2\n overflow: auto; // 3\n @include font-size($code-font-size);\n color: $pre-color;\n\n // Account for some code outputs that place code tags in pre tags\n code {\n @include font-size(inherit);\n color: inherit;\n word-break: normal;\n }\n}\n\ncode {\n @include font-size($code-font-size);\n color: var(--#{$prefix}code-color);\n word-wrap: break-word;\n\n // Streamline the style when inside anchors to avoid broken underline and more\n a > & {\n color: inherit;\n }\n}\n\nkbd {\n padding: $kbd-padding-y $kbd-padding-x;\n @include font-size($kbd-font-size);\n color: $kbd-color;\n background-color: $kbd-bg;\n @include border-radius($border-radius-sm);\n\n kbd {\n padding: 0;\n @include font-size(1em);\n font-weight: $nested-kbd-font-weight;\n }\n}\n\n\n// Figures\n//\n// Apply a consistent margin strategy (matches our type styles).\n\nfigure {\n margin: 0 0 1rem;\n}\n\n\n// Images and content\n\nimg,\nsvg {\n vertical-align: middle;\n}\n\n\n// Tables\n//\n// Prevent double borders\n\ntable {\n caption-side: bottom;\n border-collapse: collapse;\n}\n\ncaption {\n padding-top: $table-cell-padding-y;\n padding-bottom: $table-cell-padding-y;\n color: $table-caption-color;\n text-align: left;\n}\n\n// 1. Removes font-weight bold by inheriting\n// 2. Matches default `` alignment by inheriting `text-align`.\n// 3. Fix alignment for Safari\n\nth {\n font-weight: $table-th-font-weight; // 1\n text-align: inherit; // 2\n text-align: -webkit-match-parent; // 3\n}\n\nthead,\ntbody,\ntfoot,\ntr,\ntd,\nth {\n border-color: inherit;\n border-style: solid;\n border-width: 0;\n}\n\n\n// Forms\n//\n// 1. Allow labels to use `margin` for spacing.\n\nlabel {\n display: inline-block; // 1\n}\n\n// Remove the default `border-radius` that macOS Chrome adds.\n// See https://github.com/twbs/bootstrap/issues/24093\n\nbutton {\n // stylelint-disable-next-line property-disallowed-list\n border-radius: 0;\n}\n\n// Explicitly remove focus outline in Chromium when it shouldn't be\n// visible (e.g. as result of mouse click or touch tap). It already\n// should be doing this automatically, but seems to currently be\n// confused and applies its very visible two-tone outline anyway.\n\nbutton:focus:not(:focus-visible) {\n outline: 0;\n}\n\n// 1. Remove the margin in Firefox and Safari\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n margin: 0; // 1\n font-family: inherit;\n @include font-size(inherit);\n line-height: inherit;\n}\n\n// Remove the inheritance of text transform in Firefox\nbutton,\nselect {\n text-transform: none;\n}\n// Set the cursor for non-`