diff --git a/searx/static/themes/magi/.eslintrc.json b/searx/static/themes/magi/.eslintrc.json new file mode 100644 index 000000000..57d227f3d --- /dev/null +++ b/searx/static/themes/magi/.eslintrc.json @@ -0,0 +1,29 @@ +{ + "env": { + "browser": true, + "es2021": true, + "node": true + }, + "extends": "eslint:recommended", + "parserOptions": { + "ecmaVersion": 12 + }, + "rules": { + "indent": ["error", 2], + "keyword-spacing": ["error", { "before": true, "after": true }], + "no-trailing-spaces": 2, + "space-before-function-paren": ["error", "always"], + "space-infix-ops": "error", + "comma-spacing": ["error", { "before": false, "after": true }], + "brace-style": ["error", "1tbs", { "allowSingleLine": true }], + "curly": ["error", "multi-line"], + "block-spacing": ["error", "always"], + "comma-spacing": ["error", { "before": false, "after": true }], + "dot-location": ["error", "property"], + "key-spacing": ["error", { "beforeColon": false, "afterColon": true }], + "spaced-comment": ["error", "always", { + "line": { "markers": ["*package", "!", "/", ",", "="] }, + "block": { "balanced": true, "markers": ["*package", "!", ",", ":", "::", "flow-include"], "exceptions": ["*"] } + }] + } +} diff --git a/searx/static/themes/magi/.gitattributes b/searx/static/themes/magi/.gitattributes new file mode 100644 index 000000000..dc8d7a30e --- /dev/null +++ b/searx/static/themes/magi/.gitattributes @@ -0,0 +1,2 @@ +leaflet.css -diff +leaflet.js -diff diff --git a/searx/static/themes/magi/.gitignore b/searx/static/themes/magi/.gitignore new file mode 100644 index 000000000..5e5272738 --- /dev/null +++ b/searx/static/themes/magi/.gitignore @@ -0,0 +1,2 @@ +/node_modules +package-lock.json diff --git a/searx/static/themes/magi/.jshintrc b/searx/static/themes/magi/.jshintrc new file mode 100644 index 000000000..ba7bc2965 --- /dev/null +++ b/searx/static/themes/magi/.jshintrc @@ -0,0 +1,8 @@ +{ + "proto": true, + "globals": { + "browser": true, + "jQuery": false, + "devel": true + } +} diff --git a/searx/static/themes/magi/.stylelintrc.json b/searx/static/themes/magi/.stylelintrc.json new file mode 100644 index 000000000..be082eeb4 --- /dev/null +++ b/searx/static/themes/magi/.stylelintrc.json @@ -0,0 +1,7 @@ +{ + "extends": "stylelint-config-standard", + "rules": { + "declaration-empty-line-before": null, + "no-invalid-position-at-import-rule": null + } +} diff --git a/searx/static/themes/magi/css/images/layers-2x.png b/searx/static/themes/magi/css/images/layers-2x.png new file mode 100644 index 000000000..200c333dc Binary files /dev/null and b/searx/static/themes/magi/css/images/layers-2x.png differ diff --git a/searx/static/themes/magi/css/images/layers.png b/searx/static/themes/magi/css/images/layers.png new file mode 100644 index 000000000..1a72e5784 Binary files /dev/null and b/searx/static/themes/magi/css/images/layers.png differ diff --git a/searx/static/themes/magi/css/images/marker-icon-2x.png b/searx/static/themes/magi/css/images/marker-icon-2x.png new file mode 100644 index 000000000..88f9e5018 Binary files /dev/null and b/searx/static/themes/magi/css/images/marker-icon-2x.png differ diff --git a/searx/static/themes/magi/css/images/marker-icon.png b/searx/static/themes/magi/css/images/marker-icon.png new file mode 100644 index 000000000..950edf246 Binary files /dev/null and b/searx/static/themes/magi/css/images/marker-icon.png differ diff --git a/searx/static/themes/magi/css/images/marker-shadow.png b/searx/static/themes/magi/css/images/marker-shadow.png new file mode 100644 index 000000000..9fd297953 Binary files /dev/null and b/searx/static/themes/magi/css/images/marker-shadow.png differ diff --git a/searx/static/themes/magi/css/leaflet.css b/searx/static/themes/magi/css/leaflet.css new file mode 100644 index 000000000..1981009fa --- /dev/null +++ b/searx/static/themes/magi/css/leaflet.css @@ -0,0 +1,656 @@ +/* required styles */ + +.leaflet-pane, +.leaflet-tile, +.leaflet-marker-icon, +.leaflet-marker-shadow, +.leaflet-tile-container, +.leaflet-pane > svg, +.leaflet-pane > canvas, +.leaflet-zoom-box, +.leaflet-image-layer, +.leaflet-layer { + position: absolute; + left: 0; + top: 0; + } +.leaflet-container { + overflow: hidden; + } +.leaflet-tile, +.leaflet-marker-icon, +.leaflet-marker-shadow { + -webkit-user-select: none; + -moz-user-select: none; + user-select: none; + -webkit-user-drag: none; + } +/* Prevents IE11 from highlighting tiles in blue */ +.leaflet-tile::selection { + background: transparent; +} +/* Safari renders non-retina tile on retina better with this, but Chrome is worse */ +.leaflet-safari .leaflet-tile { + image-rendering: -webkit-optimize-contrast; + } +/* hack that prevents hw layers "stretching" when loading new tiles */ +.leaflet-safari .leaflet-tile-container { + width: 1600px; + height: 1600px; + -webkit-transform-origin: 0 0; + } +.leaflet-marker-icon, +.leaflet-marker-shadow { + display: block; + } +/* .leaflet-container svg: reset svg max-width decleration shipped in Joomla! (joomla.org) 3.x */ +/* .leaflet-container img: map is broken in FF if you have max-width: 100% on tiles */ +.leaflet-container .leaflet-overlay-pane svg { + max-width: none !important; + max-height: none !important; + } +.leaflet-container .leaflet-marker-pane img, +.leaflet-container .leaflet-shadow-pane img, +.leaflet-container .leaflet-tile-pane img, +.leaflet-container img.leaflet-image-layer, +.leaflet-container .leaflet-tile { + max-width: none !important; + max-height: none !important; + width: auto; + padding: 0; + } + +.leaflet-container.leaflet-touch-zoom { + -ms-touch-action: pan-x pan-y; + touch-action: pan-x pan-y; + } +.leaflet-container.leaflet-touch-drag { + -ms-touch-action: pinch-zoom; + /* Fallback for FF which doesn't support pinch-zoom */ + touch-action: none; + touch-action: pinch-zoom; +} +.leaflet-container.leaflet-touch-drag.leaflet-touch-zoom { + -ms-touch-action: none; + touch-action: none; +} +.leaflet-container { + -webkit-tap-highlight-color: transparent; +} +.leaflet-container a { + -webkit-tap-highlight-color: rgba(51, 181, 229, 0.4); +} +.leaflet-tile { + filter: inherit; + visibility: hidden; + } +.leaflet-tile-loaded { + visibility: inherit; + } +.leaflet-zoom-box { + width: 0; + height: 0; + -moz-box-sizing: border-box; + box-sizing: border-box; + z-index: 800; + } +/* workaround for https://bugzilla.mozilla.org/show_bug.cgi?id=888319 */ +.leaflet-overlay-pane svg { + -moz-user-select: none; + } + +.leaflet-pane { z-index: 400; } + +.leaflet-tile-pane { z-index: 200; } +.leaflet-overlay-pane { z-index: 400; } +.leaflet-shadow-pane { z-index: 500; } +.leaflet-marker-pane { z-index: 600; } +.leaflet-tooltip-pane { z-index: 650; } +.leaflet-popup-pane { z-index: 700; } + +.leaflet-map-pane canvas { z-index: 100; } +.leaflet-map-pane svg { z-index: 200; } + +.leaflet-vml-shape { + width: 1px; + height: 1px; + } +.lvml { + behavior: url(#default#VML); + display: inline-block; + position: absolute; + } + + +/* control positioning */ + +.leaflet-control { + position: relative; + z-index: 800; + pointer-events: visiblePainted; /* IE 9-10 doesn't have auto */ + pointer-events: auto; + } +.leaflet-top, +.leaflet-bottom { + position: absolute; + z-index: 1000; + pointer-events: none; + } +.leaflet-top { + top: 0; + } +.leaflet-right { + right: 0; + } +.leaflet-bottom { + bottom: 0; + } +.leaflet-left { + left: 0; + } +.leaflet-control { + float: left; + clear: both; + } +.leaflet-right .leaflet-control { + float: right; + } +.leaflet-top .leaflet-control { + margin-top: 10px; + } +.leaflet-bottom .leaflet-control { + margin-bottom: 10px; + } +.leaflet-left .leaflet-control { + margin-left: 10px; + } +.leaflet-right .leaflet-control { + margin-right: 10px; + } + + +/* zoom and fade animations */ + +.leaflet-fade-anim .leaflet-popup { + opacity: 0; + -webkit-transition: opacity 0.2s linear; + -moz-transition: opacity 0.2s linear; + transition: opacity 0.2s linear; + } +.leaflet-fade-anim .leaflet-map-pane .leaflet-popup { + opacity: 1; + } +.leaflet-zoom-animated { + -webkit-transform-origin: 0 0; + -ms-transform-origin: 0 0; + transform-origin: 0 0; + } +svg.leaflet-zoom-animated { + will-change: transform; +} + +.leaflet-zoom-anim .leaflet-zoom-animated { + -webkit-transition: -webkit-transform 0.25s cubic-bezier(0,0,0.25,1); + -moz-transition: -moz-transform 0.25s cubic-bezier(0,0,0.25,1); + transition: transform 0.25s cubic-bezier(0,0,0.25,1); + } +.leaflet-zoom-anim .leaflet-tile, +.leaflet-pan-anim .leaflet-tile { + -webkit-transition: none; + -moz-transition: none; + transition: none; + } + +.leaflet-zoom-anim .leaflet-zoom-hide { + visibility: hidden; + } + + +/* cursors */ + +.leaflet-interactive { + cursor: pointer; + } +.leaflet-grab { + cursor: -webkit-grab; + cursor: -moz-grab; + cursor: grab; + } +.leaflet-crosshair, +.leaflet-crosshair .leaflet-interactive { + cursor: crosshair; + } +.leaflet-popup-pane, +.leaflet-control { + cursor: auto; + } +.leaflet-dragging .leaflet-grab, +.leaflet-dragging .leaflet-grab .leaflet-interactive, +.leaflet-dragging .leaflet-marker-draggable { + cursor: move; + cursor: -webkit-grabbing; + cursor: -moz-grabbing; + cursor: grabbing; + } + +/* marker & overlays interactivity */ +.leaflet-marker-icon, +.leaflet-marker-shadow, +.leaflet-image-layer, +.leaflet-pane > svg path, +.leaflet-tile-container { + pointer-events: none; + } + +.leaflet-marker-icon.leaflet-interactive, +.leaflet-image-layer.leaflet-interactive, +.leaflet-pane > svg path.leaflet-interactive, +svg.leaflet-image-layer.leaflet-interactive path { + pointer-events: visiblePainted; /* IE 9-10 doesn't have auto */ + pointer-events: auto; + } + +/* visual tweaks */ + +.leaflet-container { + background: #ddd; + outline-offset: 1px; + } +.leaflet-container a { + color: #0078A8; + } +.leaflet-zoom-box { + border: 2px dotted #38f; + background: rgba(255,255,255,0.5); + } + + +/* general typography */ +.leaflet-container { + font-family: "Helvetica Neue", Arial, Helvetica, sans-serif; + font-size: 12px; + font-size: 0.75rem; + line-height: 1.5; + } + + +/* general toolbar styles */ + +.leaflet-bar { + box-shadow: 0 1px 5px rgba(0,0,0,0.65); + border-radius: 4px; + } +.leaflet-bar a { + background-color: #fff; + border-bottom: 1px solid #ccc; + width: 26px; + height: 26px; + line-height: 26px; + display: block; + text-align: center; + text-decoration: none; + color: black; + } +.leaflet-bar a, +.leaflet-control-layers-toggle { + background-position: 50% 50%; + background-repeat: no-repeat; + display: block; + } +.leaflet-bar a:hover, +.leaflet-bar a:focus { + background-color: #f4f4f4; + } +.leaflet-bar a:first-child { + border-top-left-radius: 4px; + border-top-right-radius: 4px; + } +.leaflet-bar a:last-child { + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + border-bottom: none; + } +.leaflet-bar a.leaflet-disabled { + cursor: default; + background-color: #f4f4f4; + color: #bbb; + } + +.leaflet-touch .leaflet-bar a { + width: 30px; + height: 30px; + line-height: 30px; + } +.leaflet-touch .leaflet-bar a:first-child { + border-top-left-radius: 2px; + border-top-right-radius: 2px; + } +.leaflet-touch .leaflet-bar a:last-child { + border-bottom-left-radius: 2px; + border-bottom-right-radius: 2px; + } + +/* zoom control */ + +.leaflet-control-zoom-in, +.leaflet-control-zoom-out { + font: bold 18px 'Lucida Console', Monaco, monospace; + text-indent: 1px; + } + +.leaflet-touch .leaflet-control-zoom-in, .leaflet-touch .leaflet-control-zoom-out { + font-size: 22px; + } + + +/* layers control */ + +.leaflet-control-layers { + box-shadow: 0 1px 5px rgba(0,0,0,0.4); + background: #fff; + border-radius: 5px; + } +.leaflet-control-layers-toggle { + background-image: url(images/layers.png); + width: 36px; + height: 36px; + } +.leaflet-retina .leaflet-control-layers-toggle { + background-image: url(images/layers-2x.png); + background-size: 26px 26px; + } +.leaflet-touch .leaflet-control-layers-toggle { + width: 44px; + height: 44px; + } +.leaflet-control-layers .leaflet-control-layers-list, +.leaflet-control-layers-expanded .leaflet-control-layers-toggle { + display: none; + } +.leaflet-control-layers-expanded .leaflet-control-layers-list { + display: block; + position: relative; + } +.leaflet-control-layers-expanded { + padding: 6px 10px 6px 6px; + color: #333; + background: #fff; + } +.leaflet-control-layers-scrollbar { + overflow-y: scroll; + overflow-x: hidden; + padding-right: 5px; + } +.leaflet-control-layers-selector { + margin-top: 2px; + position: relative; + top: 1px; + } +.leaflet-control-layers label { + display: block; + font-size: 13px; + font-size: 1.08333em; + } +.leaflet-control-layers-separator { + height: 0; + border-top: 1px solid #ddd; + margin: 5px -10px 5px -6px; + } + +/* Default icon URLs */ +.leaflet-default-icon-path { /* used only in path-guessing heuristic, see L.Icon.Default */ + background-image: url(images/marker-icon.png); + } + + +/* attribution and scale controls */ + +.leaflet-container .leaflet-control-attribution { + background: #fff; + background: rgba(255, 255, 255, 0.8); + margin: 0; + } +.leaflet-control-attribution, +.leaflet-control-scale-line { + padding: 0 5px; + color: #333; + line-height: 1.4; + } +.leaflet-control-attribution a { + text-decoration: none; + } +.leaflet-control-attribution a:hover, +.leaflet-control-attribution a:focus { + text-decoration: underline; + } +.leaflet-attribution-flag { + display: inline !important; + vertical-align: baseline !important; + width: 1em; + height: 0.6669em; + } +.leaflet-left .leaflet-control-scale { + margin-left: 5px; + } +.leaflet-bottom .leaflet-control-scale { + margin-bottom: 5px; + } +.leaflet-control-scale-line { + border: 2px solid #777; + border-top: none; + line-height: 1.1; + padding: 2px 5px 1px; + white-space: nowrap; + -moz-box-sizing: border-box; + box-sizing: border-box; + background: rgba(255, 255, 255, 0.8); + text-shadow: 1px 1px #fff; + } +.leaflet-control-scale-line:not(:first-child) { + border-top: 2px solid #777; + border-bottom: none; + margin-top: -2px; + } +.leaflet-control-scale-line:not(:first-child):not(:last-child) { + border-bottom: 2px solid #777; + } + +.leaflet-touch .leaflet-control-attribution, +.leaflet-touch .leaflet-control-layers, +.leaflet-touch .leaflet-bar { + box-shadow: none; + } +.leaflet-touch .leaflet-control-layers, +.leaflet-touch .leaflet-bar { + border: 2px solid rgba(0,0,0,0.2); + background-clip: padding-box; + } + + +/* popup */ + +.leaflet-popup { + position: absolute; + text-align: center; + margin-bottom: 20px; + } +.leaflet-popup-content-wrapper { + padding: 1px; + text-align: left; + border-radius: 12px; + } +.leaflet-popup-content { + margin: 13px 24px 13px 20px; + line-height: 1.3; + font-size: 13px; + font-size: 1.08333em; + min-height: 1px; + } +.leaflet-popup-content p { + margin: 17px 0; + margin: 1.3em 0; + } +.leaflet-popup-tip-container { + width: 40px; + height: 20px; + position: absolute; + left: 50%; + margin-top: -1px; + margin-left: -20px; + overflow: hidden; + pointer-events: none; + } +.leaflet-popup-tip { + width: 17px; + height: 17px; + padding: 1px; + + margin: -10px auto 0; + pointer-events: auto; + + -webkit-transform: rotate(45deg); + -moz-transform: rotate(45deg); + -ms-transform: rotate(45deg); + transform: rotate(45deg); + } +.leaflet-popup-content-wrapper, +.leaflet-popup-tip { + background: white; + color: #333; + box-shadow: 0 3px 14px rgba(0,0,0,0.4); + } +.leaflet-container a.leaflet-popup-close-button { + position: absolute; + top: 0; + right: 0; + border: none; + text-align: center; + width: 24px; + height: 24px; + font: 16px/24px Tahoma, Verdana, sans-serif; + color: #757575; + text-decoration: none; + background: transparent; + } +.leaflet-container a.leaflet-popup-close-button:hover, +.leaflet-container a.leaflet-popup-close-button:focus { + color: #585858; + } +.leaflet-popup-scrolled { + overflow: auto; + } + +.leaflet-oldie .leaflet-popup-content-wrapper { + -ms-zoom: 1; + } +.leaflet-oldie .leaflet-popup-tip { + width: 24px; + margin: 0 auto; + + -ms-filter: "progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678)"; + filter: progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678); + } + +.leaflet-oldie .leaflet-control-zoom, +.leaflet-oldie .leaflet-control-layers, +.leaflet-oldie .leaflet-popup-content-wrapper, +.leaflet-oldie .leaflet-popup-tip { + border: 1px solid #999; + } + + +/* div icon */ + +.leaflet-div-icon { + background: #fff; + border: 1px solid #666; + } + + +/* Tooltip */ +/* Base styles for the element that has a tooltip */ +.leaflet-tooltip { + position: absolute; + padding: 6px; + background-color: #fff; + border: 1px solid #fff; + border-radius: 3px; + color: #222; + white-space: nowrap; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + pointer-events: none; + box-shadow: 0 1px 3px rgba(0,0,0,0.4); + } +.leaflet-tooltip.leaflet-interactive { + cursor: pointer; + pointer-events: auto; + } +.leaflet-tooltip-top:before, +.leaflet-tooltip-bottom:before, +.leaflet-tooltip-left:before, +.leaflet-tooltip-right:before { + position: absolute; + pointer-events: none; + border: 6px solid transparent; + background: transparent; + content: ""; + } + +/* Directions */ + +.leaflet-tooltip-bottom { + margin-top: 6px; +} +.leaflet-tooltip-top { + margin-top: -6px; +} +.leaflet-tooltip-bottom:before, +.leaflet-tooltip-top:before { + left: 50%; + margin-left: -6px; + } +.leaflet-tooltip-top:before { + bottom: 0; + margin-bottom: -12px; + border-top-color: #fff; + } +.leaflet-tooltip-bottom:before { + top: 0; + margin-top: -12px; + margin-left: -6px; + border-bottom-color: #fff; + } +.leaflet-tooltip-left { + margin-left: -6px; +} +.leaflet-tooltip-right { + margin-left: 6px; +} +.leaflet-tooltip-left:before, +.leaflet-tooltip-right:before { + top: 50%; + margin-top: -6px; + } +.leaflet-tooltip-left:before { + right: 0; + margin-right: -12px; + border-left-color: #fff; + } +.leaflet-tooltip-right:before { + left: 0; + margin-left: -12px; + border-right-color: #fff; + } + +/* Printing */ + +@media print { + /* Prevent printers from removing background-images of controls. */ + .leaflet-control { + -webkit-print-color-adjust: exact; + print-color-adjust: exact; + } + } diff --git a/searx/static/themes/magi/css/searxng-rtl.min.css b/searx/static/themes/magi/css/searxng-rtl.min.css new file mode 100644 index 000000000..b46107a7c --- /dev/null +++ b/searx/static/themes/magi/css/searxng-rtl.min.css @@ -0,0 +1 @@ +/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none}:root{--color-base-font:#444;--color-base-font-rgb:68,68,68;--color-base-background:#fff;--color-base-background-mobile:#f2f5f8;--color-url-font:#334999;--color-url-visited-font:#9822c3;--color-header-background:#fdfbff;--color-header-border:#ddd;--color-footer-background:#fdfbff;--color-footer-border:#ddd;--color-sidebar-border:#ddd;--color-sidebar-font:#000;--color-sidebar-background:#fff;--color-backtotop-font:#444;--color-backtotop-border:#ddd;--color-backtotop-background:#fff;--color-btn-background:#3050ff;--color-btn-font:#fff;--color-show-btn-background:#bbb;--color-show-btn-font:#000;--color-search-border:#bbb;--color-search-shadow:0 2px 8px rgba(34, 38, 46, 0.25);--color-search-background:#fff;--color-search-font:#222;--color-search-background-hover:#3050ff;--color-error:#db3434;--color-error-background:#fae1e1;--color-warning:#dbba34;--color-warning-background:#faf5e1;--color-success:#42db34;--color-success-background:#e3fae1;--color-categories-item-selected-font:#3050ff;--color-categories-item-border-selected:#3050ff;--color-autocomplete-font:#000;--color-autocomplete-border:#bbb;--color-autocomplete-shadow:0 2px 8px rgba(34, 38, 46, 0.25);--color-autocomplete-background:#fff;--color-autocomplete-background-hover:#e3e3e3;--color-answer-font:#444;--color-answer-background:#fff;--color-result-background:#fff;--color-result-border:#ddd;--color-result-url-font:#000;--color-result-vim-selected:#f7f7f7;--color-result-vim-arrow:#000bbb;--color-result-description-highlight-font:#000;--color-result-link-font:#000bbb;--color-result-link-font-highlight:#000bbb;--color-result-link-visited-font:#9822c3;--color-result-publishdate-font:#777;--color-result-engines-font:#545454;--color-result-search-url-border:#ddd;--color-result-search-url-font:#000;--color-result-image-span-font:#444;--color-result-image-span-font-selected:#fff;--color-result-image-background:#fff;--color-settings-tr-hover:#ebebeb;--color-settings-engine-description-font:#545454;--color-settings-engine-group-background:#0001;--color-result-detail-font:#fff;--color-result-detail-label-font:lightgray;--color-result-detail-background:#242424;--color-result-detail-hr:#555;--color-result-detail-link:#8af;--color-result-detail-loader-border:rgba(255, 255, 255, 0.2);--color-result-detail-loader-borderleft:rgba(0, 0, 0, 0);--color-toolkit-badge-font:#fff;--color-toolkit-badge-background:#545454;--color-toolkit-kbd-font:#fff;--color-toolkit-kbd-background:#000;--color-toolkit-dialog-border:#ddd;--color-toolkit-dialog-background:#fff;--color-toolkit-tabs-label-border:#fff;--color-toolkit-tabs-section-border:#ddd;--color-toolkit-select-background:#e1e1e1;--color-toolkit-select-border:#ddd;--color-toolkit-select-background-hover:#bbb;--color-toolkit-input-text-font:#222;--color-toolkit-checkbox-onoff-off-background:#ddd;--color-toolkit-checkbox-onoff-on-background:#ddd;--color-toolkit-checkbox-onoff-on-mark-background:#3050ff;--color-toolkit-checkbox-onoff-on-mark-color:#fff;--color-toolkit-checkbox-onoff-off-mark-background:#aaa;--color-toolkit-checkbox-onoff-off-mark-color:#fff;--color-toolkit-checkbox-label-background:#ddd;--color-toolkit-checkbox-label-border:#ddd;--color-toolkit-checkbox-input-border:#3050ff;--color-toolkit-engine-tooltip-border:#ddd;--color-toolkit-engine-tooltip-background:#fff;--color-toolkit-loader-border:rgba(0, 0, 0, 0.2);--color-toolkit-loader-borderleft:rgba(255, 255, 255, 0);--color-doc-code:#300;--color-doc-code-background:#fdd;--invert-logo:invert(0%)}@media (prefers-color-scheme:dark){:root.theme-auto{--color-base-font:#bbb;--color-base-font-rgb:187,187,187;--color-base-background:#222428;--color-base-background-mobile:#222428;--color-url-font:#8af;--color-url-visited-font:#c09cd9;--color-header-background:#1e1e22;--color-header-border:#333;--color-footer-background:#1e1e22;--color-footer-border:#333;--color-sidebar-border:#555;--color-sidebar-font:#fff;--color-sidebar-background:#292c34;--color-backtotop-font:#bbb;--color-backtotop-border:#333;--color-backtotop-background:#2b2e36;--color-btn-background:linear-gradient(81.62deg, #2870ea 8.72%, #1b4aef 85.01%);--color-btn-font:#fff;--color-show-btn-background:#555;--color-show-btn-font:#fff;--color-search-border:#555;--color-search-shadow:0 2px 8px rgba(34, 38, 46, 0.25);--color-search-background:#2b2e36;--color-search-font:#fff;--color-search-background-hover:linear-gradient(81.62deg, #2870ea 8.72%, #1b4aef 85.01%);--color-error:#f55b5b;--color-error-background:#390a0a;--color-warning:#f1d561;--color-warning-background:#39300a;--color-success:#79f56e;--color-success-background:#0e390a;--color-categories-item-selected-font:#58f;--color-categories-item-border-selected:#58f;--color-autocomplete-font:#fff;--color-autocomplete-border:#555;--color-autocomplete-shadow:0 2px 8px rgba(34, 38, 46, 0.25);--color-autocomplete-background:#2b2e36;--color-autocomplete-background-hover:#1e1e22;--color-answer-font:#bbb;--color-answer-background:#26292f;--color-result-background:#26292f;--color-result-border:#333;--color-result-url-font:#fff;--color-result-vim-selected:#1f1f23cc;--color-result-vim-arrow:#8af;--color-result-description-highlight-font:#fff;--color-result-link-font:#8af;--color-result-link-font-highlight:#8af;--color-result-link-visited-font:#c09cd9;--color-result-publishdate-font:#888;--color-result-engines-font:#a4a4a4;--color-result-search-url-border:#555;--color-result-search-url-font:#fff;--color-result-detail-font:#fff;--color-result-detail-label-font:lightgray;--color-result-detail-background:#1a1a1c;--color-result-detail-hr:#555;--color-result-detail-link:#8af;--color-result-detail-loader-border:rgba(255, 255, 255, 0.2);--color-result-detail-loader-borderleft:rgba(0, 0, 0, 0);--color-result-image-span-font:#bbb;--color-result-image-span-font-selected:#222;--color-result-image-background:#222;--color-settings-tr-hover:#2c2c32;--color-settings-engine-description-font:#909090;--color-settings-engine-group-background:#1b1b21;--color-toolkit-badge-font:#fff;--color-toolkit-badge-background:#555;--color-toolkit-kbd-font:#000;--color-toolkit-kbd-background:#fff;--color-toolkit-dialog-border:#555;--color-toolkit-dialog-background:#1e1e22;--color-toolkit-tabs-label-border:#222;--color-toolkit-tabs-section-border:#555;--color-toolkit-select-background:#313338;--color-toolkit-select-border:#555;--color-toolkit-select-background-hover:#373b49;--color-toolkit-input-text-font:#fff;--color-toolkit-checkbox-onoff-off-background:#313338;--color-toolkit-checkbox-onoff-on-background:#313338;--color-toolkit-checkbox-onoff-on-mark-background:#58f;--color-toolkit-checkbox-onoff-on-mark-color:#222;--color-toolkit-checkbox-onoff-off-mark-background:#ddd;--color-toolkit-checkbox-onoff-off-mark-color:#222;--color-toolkit-checkbox-label-background:#222;--color-toolkit-checkbox-label-border:#333;--color-toolkit-checkbox-input-border:#58f;--color-toolkit-engine-tooltip-border:#333;--color-toolkit-engine-tooltip-background:#222;--color-toolkit-loader-border:rgba(255, 255, 255, 0.2);--color-toolkit-loader-borderleft:rgba(0, 0, 0, 0);--color-doc-code:#fdd;--color-doc-code-background:#300;--invert-logo:invert(100%)}}:root.theme-dark{--color-base-font:#bbb;--color-base-font-rgb:187,187,187;--color-base-background:#222428;--color-base-background-mobile:#222428;--color-url-font:#8af;--color-url-visited-font:#c09cd9;--color-header-background:#1e1e22;--color-header-border:#333;--color-footer-background:#1e1e22;--color-footer-border:#333;--color-sidebar-border:#555;--color-sidebar-font:#fff;--color-sidebar-background:#292c34;--color-backtotop-font:#bbb;--color-backtotop-border:#333;--color-backtotop-background:#2b2e36;--color-btn-background:linear-gradient(81.62deg, #2870ea 8.72%, #1b4aef 85.01%);--color-btn-font:#fff;--color-show-btn-background:#555;--color-show-btn-font:#fff;--color-search-border:#555;--color-search-shadow:0 2px 8px rgba(34, 38, 46, 0.25);--color-search-background:#2b2e36;--color-search-font:#fff;--color-search-background-hover:linear-gradient(81.62deg, #2870ea 8.72%, #1b4aef 85.01%);--color-error:#f55b5b;--color-error-background:#390a0a;--color-warning:#f1d561;--color-warning-background:#39300a;--color-success:#79f56e;--color-success-background:#0e390a;--color-categories-item-selected-font:#58f;--color-categories-item-border-selected:#58f;--color-autocomplete-font:#fff;--color-autocomplete-border:#555;--color-autocomplete-shadow:0 2px 8px rgba(34, 38, 46, 0.25);--color-autocomplete-background:#2b2e36;--color-autocomplete-background-hover:#1e1e22;--color-answer-font:#bbb;--color-answer-background:#26292f;--color-result-background:#26292f;--color-result-border:#333;--color-result-url-font:#fff;--color-result-vim-selected:#1f1f23cc;--color-result-vim-arrow:#8af;--color-result-description-highlight-font:#fff;--color-result-link-font:#8af;--color-result-link-font-highlight:#8af;--color-result-link-visited-font:#c09cd9;--color-result-publishdate-font:#888;--color-result-engines-font:#a4a4a4;--color-result-search-url-border:#555;--color-result-search-url-font:#fff;--color-result-detail-font:#fff;--color-result-detail-label-font:lightgray;--color-result-detail-background:#1a1a1c;--color-result-detail-hr:#555;--color-result-detail-link:#8af;--color-result-detail-loader-border:rgba(255, 255, 255, 0.2);--color-result-detail-loader-borderleft:rgba(0, 0, 0, 0);--color-result-image-span-font:#bbb;--color-result-image-span-font-selected:#222;--color-result-image-background:#222;--color-settings-tr-hover:#2c2c32;--color-settings-engine-description-font:#909090;--color-settings-engine-group-background:#1b1b21;--color-toolkit-badge-font:#fff;--color-toolkit-badge-background:#555;--color-toolkit-kbd-font:#000;--color-toolkit-kbd-background:#fff;--color-toolkit-dialog-border:#555;--color-toolkit-dialog-background:#1e1e22;--color-toolkit-tabs-label-border:#222;--color-toolkit-tabs-section-border:#555;--color-toolkit-select-background:#313338;--color-toolkit-select-border:#555;--color-toolkit-select-background-hover:#373b49;--color-toolkit-input-text-font:#fff;--color-toolkit-checkbox-onoff-off-background:#313338;--color-toolkit-checkbox-onoff-on-background:#313338;--color-toolkit-checkbox-onoff-on-mark-background:#58f;--color-toolkit-checkbox-onoff-on-mark-color:#222;--color-toolkit-checkbox-onoff-off-mark-background:#ddd;--color-toolkit-checkbox-onoff-off-mark-color:#222;--color-toolkit-checkbox-label-background:#222;--color-toolkit-checkbox-label-border:#333;--color-toolkit-checkbox-input-border:#58f;--color-toolkit-engine-tooltip-border:#333;--color-toolkit-engine-tooltip-background:#222;--color-toolkit-loader-border:rgba(255, 255, 255, 0.2);--color-toolkit-loader-borderleft:rgba(0, 0, 0, 0);--color-doc-code:#fdd;--color-doc-code-background:#300;--invert-logo:invert(100%)}.code-highlight pre{overflow:auto;background-color:inherit;color:inherit;border:inherit}.code-highlight .linenos{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:default;margin-right:8px;text-align:right}.code-highlight .linenos::selection{background:0 0}.code-highlight .linenos::-moz-selection{background:0 0}.code-highlight pre{line-height:125%}.code-highlight td.linenos .normal{color:inherit;background-color:transparent;padding-left:5px;padding-right:5px}.code-highlight span.linenos{color:inherit;background-color:transparent;padding-left:5px;padding-right:5px}.code-highlight td.linenos .special{color:#000;background-color:#ffffc0;padding-left:5px;padding-right:5px}.code-highlight span.linenos.special{color:#000;background-color:#ffffc0;padding-left:5px;padding-right:5px}.code-highlight .hll{background-color:#ffc}.code-highlight{background:#f8f8f8}.code-highlight .c{color:#3D7B7B;font-style:italic}.code-highlight .err{border:1px solid red}.code-highlight .k{color:green;font-weight:700}.code-highlight .o{color:#666}.code-highlight .ch{color:#3D7B7B;font-style:italic}.code-highlight .cm{color:#3D7B7B;font-style:italic}.code-highlight .cp{color:#9C6500}.code-highlight .cpf{color:#3D7B7B;font-style:italic}.code-highlight .c1{color:#3D7B7B;font-style:italic}.code-highlight .cs{color:#3D7B7B;font-style:italic}.code-highlight .gd{color:#A00000}.code-highlight .ge{font-style:italic}.code-highlight .gr{color:#E40000}.code-highlight .gh{color:navy;font-weight:700}.code-highlight .gi{color:#008400}.code-highlight .go{color:#717171}.code-highlight .gp{color:navy;font-weight:700}.code-highlight .gs{font-weight:700}.code-highlight .gu{color:purple;font-weight:700}.code-highlight .gt{color:#04D}.code-highlight .kc{color:green;font-weight:700}.code-highlight .kd{color:green;font-weight:700}.code-highlight .kn{color:green;font-weight:700}.code-highlight .kp{color:green}.code-highlight .kr{color:green;font-weight:700}.code-highlight .kt{color:#B00040}.code-highlight .m{color:#666}.code-highlight .s{color:#BA2121}.code-highlight .na{color:#687822}.code-highlight .nb{color:green}.code-highlight .nc{color:#00F;font-weight:700}.code-highlight .no{color:#800}.code-highlight .nd{color:#A2F}.code-highlight .ni{color:#717171;font-weight:700}.code-highlight .ne{color:#CB3F38;font-weight:700}.code-highlight .nf{color:#00F}.code-highlight .nl{color:#767600}.code-highlight .nn{color:#00F;font-weight:700}.code-highlight .nt{color:green;font-weight:700}.code-highlight .nv{color:#19177C}.code-highlight .ow{color:#A2F;font-weight:700}.code-highlight .w{color:#bbb}.code-highlight .mb{color:#666}.code-highlight .mf{color:#666}.code-highlight .mh{color:#666}.code-highlight .mi{color:#666}.code-highlight .mo{color:#666}.code-highlight .sa{color:#BA2121}.code-highlight .sb{color:#BA2121}.code-highlight .sc{color:#BA2121}.code-highlight .dl{color:#BA2121}.code-highlight .sd{color:#BA2121;font-style:italic}.code-highlight .s2{color:#BA2121}.code-highlight .se{color:#AA5D1F;font-weight:700}.code-highlight .sh{color:#BA2121}.code-highlight .si{color:#A45A77;font-weight:700}.code-highlight .sx{color:green}.code-highlight .sr{color:#A45A77}.code-highlight .s1{color:#BA2121}.code-highlight .ss{color:#19177C}.code-highlight .bp{color:green}.code-highlight .fm{color:#00F}.code-highlight .vc{color:#19177C}.code-highlight .vg{color:#19177C}.code-highlight .vi{color:#19177C}.code-highlight .vm{color:#19177C}.code-highlight .il{color:#666}html.no-js .hide_if_nojs{display:none}html.js .show_if_nojs{display:none}.center{text-align:center}.right{float:right}.left{float:left}.invisible{display:none!important}.list-unstyled{list-style-type:none}.list-unstyled li{margin-top:4px;margin-bottom:4px}.danger{background-color:var(--color-error-background)}.warning{background:var(--color-warning-background)}.success{background:var(--color-success-background)}.badge{display:inline-block;color:var(--color-toolkit-badge-font);background-color:var(--color-toolkit-badge-background);text-align:center;white-space:nowrap;vertical-align:baseline;min-width:10px;padding:1px 5px;border-radius:5px}kbd{padding:2px 4px;margin:1px;font-size:90%;color:var(--color-toolkit-kbd-font);background:var(--color-toolkit-kbd-background)}table{width:100%}table.striped tr{border-bottom:1px solid var(--color-settings-tr-hover)}th{padding:.4em}td{padding:0 4px}tr:hover{background:var(--color-settings-tr-hover)!important}div.selectable_url{display:block;border:1px solid var(--color-result-search-url-border);padding:4px;color:var(--color-result-search-url-font);margin:.1em;overflow:hidden;height:1.2em;line-height:1.2em;border-radius:5px}div.selectable_url pre{display:block;font-size:.8em;word-break:break-all;margin:.1em;user-select:all}.dialog-error{position:relative;display:flex;padding:1rem;margin:0 0 1em 0;border:1px solid var(--color-toolkit-dialog-border);text-align:right;border-radius:10px;color:var(--color-error);background:var(--color-error-background);border-color:var(--color-error)}.dialog-error .close{float:left;position:relative;top:-3px;color:inherit;font-size:1.5em}.dialog-error ol,.dialog-error p,.dialog-error ul{margin:1px 0 0 0}.dialog-error table{width:auto}.dialog-error tr{vertical-align:text-top}.dialog-error tr:hover{background:0 0!important}.dialog-error td{padding:0 1em 0 0;padding-top:0;padding-left:1rem;padding-bottom:0;padding-right:0}.dialog-error h4{margin-top:.3em;margin-bottom:.3em}.dialog-warning{position:relative;display:flex;padding:1rem;margin:0 0 1em 0;border:1px solid var(--color-toolkit-dialog-border);text-align:right;border-radius:10px;color:var(--color-warning);background:var(--color-warning-background);border-color:var(--color-warning)}.dialog-warning .close{float:left;position:relative;top:-3px;color:inherit;font-size:1.5em}.dialog-warning ol,.dialog-warning p,.dialog-warning ul{margin:1px 0 0 0}.dialog-warning table{width:auto}.dialog-warning tr{vertical-align:text-top}.dialog-warning tr:hover{background:0 0!important}.dialog-warning td{padding:0 1em 0 0;padding-top:0;padding-left:1rem;padding-bottom:0;padding-right:0}.dialog-warning h4{margin-top:.3em;margin-bottom:.3em}.dialog-modal{position:relative;display:flex;padding:1rem;margin:0 0 1em 0;border:1px solid var(--color-toolkit-dialog-border);text-align:right;border-radius:10px;display:block;background:var(--color-toolkit-dialog-background);position:fixed;top:50%;left:50%;margin:0 auto;transform:translate(-50%,-50%);z-index:10000000}.dialog-modal .close{float:left;position:relative;top:-3px;color:inherit;font-size:1.5em}.dialog-modal ol,.dialog-modal p,.dialog-modal ul{margin:1px 0 0 0}.dialog-modal table{width:auto}.dialog-modal tr{vertical-align:text-top}.dialog-modal tr:hover{background:0 0!important}.dialog-modal td{padding:0 1em 0 0;padding-top:0;padding-left:1rem;padding-bottom:0;padding-right:0}.dialog-modal h4{margin-top:.3em;margin-bottom:.3em}.dialog-modal h3{margin-top:0}.btn-collapse{cursor:pointer}.scrollx{overflow-x:auto;overflow-y:hidden;display:block;padding:0;margin:0;border:none}.tabs .tabs>label{font-size:90%}ul.tabs{border-bottom:1px solid var(--color-toolkit-tabs-section-border);list-style:none;padding-left:0}ul.tabs li{display:flex}.tabs{display:flex;flex-wrap:wrap;width:100%;min-width:100%}.tabs>*{order:2}.tabs>input[type=radio]{display:none}.tabs>label,.tabs>li>a{order:1;padding:.7em;margin:0 .7em;letter-spacing:.5px;text-transform:uppercase;border:solid var(--color-toolkit-tabs-label-border);border-width:0 0 2px 0;color:unset;-webkit-touch-callout:none;user-select:none;cursor:pointer}.tabs>label.active,.tabs>li>a.active{border-bottom:2px solid var(--color-categories-item-border-selected);background:var(--color-categories-item-selected);color:var(--color-categories-item-selected-font)}.tabs>label:hover,.tabs>li>a:hover{border-bottom:2px solid var(--color-categories-item-border-selected)}.tabs>section{min-width:100%;padding:.7rem 0;box-sizing:border-box;border-top:1px solid var(--color-toolkit-tabs-section-border);display:none}.tabs>label:last-of-type{border-bottom:2px solid var(--color-categories-item-border-selected);background:var(--color-categories-item-selected);color:var(--color-categories-item-selected-font);letter-spacing:-.1px}.tabs>section:last-of-type{display:block}html body .tabs>input:checked~section{display:none}html body .tabs>input:checked~label{position:inherited;background:inherit;border-bottom:2px solid transparent;font-weight:400;color:inherit}html body .tabs>input:checked~label:hover{border-bottom:2px solid var(--color-categories-item-border-selected)}html body .tabs>input:checked+label{border-bottom:2px solid var(--color-categories-item-border-selected);background:var(--color-categories-item-selected);color:var(--color-categories-item-selected-font)}html body .tabs>input:checked+label+section{display:block}select{height:2.4rem;margin-top:0;margin-left:1rem;margin-bottom:0;margin-right:0;padding:.2rem!important;color:var(--color-search-font);font-size:.9rem;z-index:2}select:focus,select:hover{cursor:pointer}@supports ((background-position-x:100%) and ((appearance:none) or (-webkit-appearance:none) or (-moz-appearance:none))){select{appearance:none;-webkit-appearance:none;-moz-appearance:none;border-width:0 2rem 0 0;border-color:transparent;background:url("data:image/svg+xml;charset=UTF-8,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22utf-8%22%3F%3E%0D%0A%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%0D%0A%3Cg%3E%3Cpolygon%20points%3D%22128%2C192%20256%2C320%20384%2C192%22%2F%3E%3C%2Fg%3E%0D%0A%3C%2Fsvg%3E") no-repeat;background-position-x:calc(100% + 2rem);background-size:2rem;background-origin:content-box;background-color:var(--color-toolkit-select-background);outline:medium none;text-overflow:ellipsis;border-radius:5px}select:focus,select:hover{background-color:var(--color-toolkit-select-background-hover)}select option{background-color:var(--color-base-background)}@media (prefers-color-scheme:dark){html.theme-auto select,html.theme-dark select{background-image:url("data:image/svg+xml;charset=UTF-8,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22utf-8%22%3F%3E%0D%0A%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%0D%0A%3Cg%3E%3Cpolygon%20fill%3D%22%23ddd%22%20points%3D%22128%2C192%20256%2C320%20384%2C192%22%2F%3E%3C%2Fg%3E%0D%0A%3C%2Fsvg%3E")}}html.theme-dark select{background-image:url("data:image/svg+xml;charset=UTF-8,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22utf-8%22%3F%3E%0D%0A%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%0D%0A%3Cg%3E%3Cpolygon%20fill%3D%22%23ddd%22%20points%3D%22128%2C192%20256%2C320%20384%2C192%22%2F%3E%3C%2Fg%3E%0D%0A%3C%2Fsvg%3E")}}input.checkbox-onoff[type=checkbox]{-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer;display:inline-block;width:2.5em;height:.7em;box-shadow:none!important;margin:0 16px;border-radius:10px;position:relative}input.checkbox-onoff[type=checkbox]:focus,input.checkbox-onoff[type=checkbox]:hover{outline:0}input.checkbox-onoff[type=checkbox]:focus::after{content:"";position:absolute;width:3.5em;height:1.65em;border:1px solid var(--color-btn-background);border-radius:12px;box-shadow:var(--color-btn-background) 0 0 3px;z-index:10000;top:-.55em;left:-.6em}input.checkbox-onoff[type=checkbox]::before{position:absolute;top:-.5em;display:flex;justify-content:center;align-items:center;font-size:.75em;width:1.875em;height:1.875em;border-radius:50%}.reversed-checkbox input.checkbox-onoff[type=checkbox]:checked,input.checkbox-onoff[type=checkbox]{background:var(--color-toolkit-checkbox-onoff-off-background)}.reversed-checkbox input.checkbox-onoff[type=checkbox]:checked::before,input.checkbox-onoff[type=checkbox]::before{left:-.5em;content:"\2715";color:var(--color-toolkit-checkbox-onoff-off-mark-color);background:var(--color-toolkit-checkbox-onoff-off-mark-background)}.reversed-checkbox input.checkbox-onoff[type=checkbox],input.checkbox-onoff[type=checkbox]:checked{background:var(--color-toolkit-checkbox-onoff-on-background)}.reversed-checkbox input.checkbox-onoff[type=checkbox]::before,input.checkbox-onoff[type=checkbox]:checked::before{left:calc(100% - 1.5em);content:"\2713";color:var(--color-toolkit-checkbox-onoff-on-mark-color);background:var(--color-toolkit-checkbox-onoff-on-mark-background)}@supports (transform:rotate(-45deg)){input[type=checkbox]:not(.checkbox-onoff){-webkit-appearance:none;-moz-appearance:none;appearance:none;width:20px;height:20px;cursor:pointer;position:relative;top:0;left:0;border:2px solid var(--color-toolkit-checkbox-input-border);border-radius:.3em}input[type=checkbox]:not(.checkbox-onoff)::after{content:'';width:9px;height:5px;position:absolute;top:3px;left:2px;border:3px solid var(--color-toolkit-checkbox-label-border);border-top:none;border-right:none;background:0 0;opacity:0;transform:rotate(-45deg)}input[type=checkbox]:not(.checkbox-onoff):checked::after{border-color:var(--color-toolkit-checkbox-input-border);opacity:1}input[type=checkbox][disabled]:not(.checkbox-onoff){border:inherit;background-color:transparent!important;cursor:inherit}input.checkbox[type=checkbox]:not(:checked):not([disabled]):not(.checkbox-onoff):hover::after{opacity:.5}}@media screen and (max-width:50em){.tabs>label{width:100%}}.loader,.loader::after{border-radius:50%;width:2em;height:2em}.loader{margin:1em auto;font-size:10px;position:relative;text-indent:-9999em;border-top:.5em solid var(--color-toolkit-loader-border);border-right:.5em solid var(--color-toolkit-loader-border);border-bottom:.5em solid var(--color-toolkit-loader-border);border-left:.5em solid var(--color-toolkit-loader-borderleft);-webkit-transform:translateZ(0);-ms-transform:translateZ(0);transform:translateZ(0);-webkit-animation:load8 1.2s infinite linear;animation:load8 1.2s infinite linear}@-webkit-keyframes load8{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes load8{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.engine-tooltip{display:none;position:absolute;padding:.5rem 1rem;margin:0 0 0 2rem;border:1px solid var(--color-toolkit-engine-tooltip-border);background:var(--color-toolkit-engine-tooltip-background);font-size:14px;font-weight:400;z-index:1000000;text-align:left;border-radius:10px}.engine-tooltip:hover,td:hover .engine-tooltip,th:hover .engine-tooltip{display:inline-block}.stacked-bar-chart{margin:0;padding:0 .125rem 0 4rem;width:100%;width:-moz-available;width:-webkit-fill-available;width:fill;flex-direction:row;flex-wrap:nowrap;align-items:center;display:inline-flex}.stacked-bar-chart-value{width:3rem;display:inline-block;position:absolute;padding:0 .5rem;text-align:right}.stacked-bar-chart-base{display:flex;flex-shrink:0;flex-grow:0;flex-basis:unset}.stacked-bar-chart-median{display:flex;flex-shrink:0;flex-grow:0;flex-basis:unset;background:var(--color-base-font);border:1px solid rgba(var(--color-base-font-rgb),.9);padding:.3rem 0}.stacked-bar-chart-rate80{display:flex;flex-shrink:0;flex-grow:0;flex-basis:unset;background:0 0;border:1px solid rgba(var(--color-base-font-rgb),.3);padding:.3rem 0}.stacked-bar-chart-rate95{display:flex;flex-shrink:0;flex-grow:0;flex-basis:unset;background:0 0;border-bottom:1px dotted rgba(var(--color-base-font-rgb),.5);padding:0}.stacked-bar-chart-rate100{display:flex;flex-shrink:0;flex-grow:0;flex-basis:unset;background:0 0;border-left:1px solid rgba(var(--color-base-font-rgb),.9);padding:.4rem 0;width:1px}/*! Autocomplete.js v2.6.3 | license MIT | (c) 2017, Baptiste Donaux | http://autocomplete-js.com */.autocomplete{position:absolute;width:44rem;max-height:0;overflow-y:hidden;text-align:right;border-radius:10px}.autocomplete:active,.autocomplete:focus,.autocomplete:hover{background-color:var(--color-autocomplete-background)}.autocomplete:empty{display:none}.autocomplete>ul{list-style-type:none;margin:0;padding:0}.autocomplete>ul>li{cursor:pointer;padding:.5rem 1rem}.autocomplete>ul>li.active,.autocomplete>ul>li:active,.autocomplete>ul>li:focus,.autocomplete>ul>li:hover{background-color:var(--color-autocomplete-background-hover)}.autocomplete>ul>li.active a:active,.autocomplete>ul>li.active a:focus,.autocomplete>ul>li.active a:hover,.autocomplete>ul>li:active a:active,.autocomplete>ul>li:active a:focus,.autocomplete>ul>li:active a:hover,.autocomplete>ul>li:focus a:active,.autocomplete>ul>li:focus a:focus,.autocomplete>ul>li:focus a:hover,.autocomplete>ul>li:hover a:active,.autocomplete>ul>li:hover a:focus,.autocomplete>ul>li:hover a:hover{text-decoration:none}.autocomplete>ul>li.locked{cursor:inherit}.autocomplete.open{display:block;background-color:var(--color-autocomplete-background);color:var(--color-autocomplete-font);max-height:32rem;overflow-y:auto;z-index:100;margin-top:3.5rem;border-radius:.8rem;box-shadow:0 2px 8px rgba(34,38,46,.25)}.autocomplete.open:empty{display:none}@media screen and (max-width:50em){.autocomplete{width:100%}.autocomplete>ul>li{padding:1rem}}#main_results #results.image-detail-open.only_template_images{width:min(98%,59.25rem)!important}#main_results #results.only_template_images.image-detail-open #backToTop{right:56.75rem!important;left:inherit}article.result-images .detail{display:none}#results.image-detail-open article.result-images[data-vim-selected] .detail{display:flex;flex-direction:column;position:fixed;right:60rem;left:0;top:7.6rem;transition:top 64ms ease-in 0s;bottom:0;background:var(--color-result-detail-background);border:1px solid var(--color-result-detail-background);z-index:10000;padding:4rem 3rem 3rem 3rem}#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-images-source{display:block;flex:1;text-align:left;width:100%;border:none;text-decoration:none}#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-images-source img{padding:0;margin:0;border:none;object-fit:contain;width:inherit;height:inherit;max-width:100%;min-height:inherit;max-height:calc(100vh - 25rem - 7rem);background:inherit}#results.image-detail-open article.result-images[data-vim-selected] .detail .result-images-labels{color:var(--color-result-detail-font);max-height:16rem;min-height:16rem}#results.image-detail-open article.result-images[data-vim-selected] .detail .result-images-labels hr{border-top:1px solid var(--color-result-detail-hr);border-bottom:none}#results.image-detail-open article.result-images[data-vim-selected] .detail .result-images-labels h4{height:2rem;overflow:hidden;text-overflow:ellipsis;font-size:.9rem}#results.image-detail-open article.result-images[data-vim-selected] .detail .result-images-labels p{color:var(--color-result-detail-label-font);font-size:.9rem}#results.image-detail-open article.result-images[data-vim-selected] .detail .result-images-labels p span{display:inline-block;width:12rem}#results.image-detail-open article.result-images[data-vim-selected] .detail .result-images-labels a,#results.image-detail-open article.result-images[data-vim-selected] .detail .result-images-labels h4,#results.image-detail-open article.result-images[data-vim-selected] .detail .result-images-labels p{text-align:right}#results.image-detail-open article.result-images[data-vim-selected] .detail .result-images-labels p.result-content{height:2rem;overflow:hidden;text-overflow:ellipsis}#results.image-detail-open article.result-images[data-vim-selected] .detail .result-images-labels p.result-url{white-space:nowrap;overflow-x:hidden;text-overflow:ellipsis}#results.image-detail-open article.result-images[data-vim-selected] .detail .result-images-labels p.result-content:hover,#results.image-detail-open article.result-images[data-vim-selected] .detail .result-images-labels p.result-url:hover{position:relative;overflow:inherit!important;background:var(--color-result-detail-background);text-overflow:inherit!important}#results.image-detail-open article.result-images[data-vim-selected] .detail .result-images-labels a,#results.image-detail-open article.result-images[data-vim-selected] .detail .result-images-labels a:active,#results.image-detail-open article.result-images[data-vim-selected] .detail .result-images-labels a:hover,#results.image-detail-open article.result-images[data-vim-selected] .detail .result-images-labels a:visited{color:var(--color-result-detail-link)}#results.image-detail-open article.result-images[data-vim-selected] .detail .result-images-labels a:hover{text-decoration:underline}#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-detail-close{top:1rem;right:1rem;padding:.4rem}#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-detail-previous{top:1rem;left:6rem;padding-top:.4rem;padding-left:.5rem;padding-bottom:.4rem;padding-right:.3rem}#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-detail-next{top:1rem;left:2rem;padding:.4rem}#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-detail-close,#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-detail-next,#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-detail-previous{border-radius:50%;display:block;width:1.5rem;height:1.5rem;position:absolute;filter:opacity(40%);z-index:2000002}#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-detail-close span,#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-detail-next span,#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-detail-previous span{display:block;width:1.5rem;height:1.5rem;text-align:center}#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-detail-next span::before,#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-detail-previous span::before{vertical-align:sub}#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-detail-close,#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-detail-close:active,#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-detail-close:hover,#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-detail-close:visited,#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-detail-next,#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-detail-next:active,#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-detail-next:hover,#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-detail-next:visited,#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-detail-previous,#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-detail-previous:active,#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-detail-previous:hover,#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-detail-previous:visited{color:var(--color-result-detail-font);background:var(--color-result-detail-background);border:1px solid var(--color-result-detail-font)}#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-detail-close:focus,#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-detail-close:hover,#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-detail-next:focus,#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-detail-next:hover,#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-detail-previous:focus,#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-detail-previous:hover{filter:opacity(80%)}#results.image-detail-open article.result-images[data-vim-selected] .detail .loader{position:absolute;top:1rem;left:50%;border-top:.5em solid var(--color-result-detail-loader-border);border-right:.5em solid var(--color-result-detail-loader-border);border-bottom:.5em solid var(--color-result-detail-loader-border);border-left:.5em solid var(--color-result-detail-loader-borderleft)}#results.image-detail-open.scrolling article.result-images[data-vim-selected] .detail{top:0}#results.image-detail-open.scrolling article.result-images[data-vim-selected] .detail a.result-images-source img{max-height:calc(100vh - 25rem)}@media screen and (max-width:79.75em){#results.image-detail-open article.result-images[data-vim-selected] .detail{top:0;right:0}#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-images-source{display:flex;flex-direction:column;justify-content:center}#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-images-source img{width:100%;max-height:calc(100vh - 24rem)}#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-detail-next{left:1rem}}@media screen and (max-width:50em){#results.image-detail-open article.result-images[data-vim-selected] .detail{top:0;right:0;padding:1rem}#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-images-source img{width:100%;max-height:calc(100vh - 20rem);margin:0}#results.image-detail-open article.result-images[data-vim-selected] .detail .result-images-labels p span{width:inherit;margin-left:1rem}}.dialog-modal{animation-name:dialogmodal;animation-duration:.13s}@keyframes dialogmodal{0%{opacity:0}50%{opacity:.5;transform:translate(-50%,-50%) scale(1.05)}}input.checkbox-onoff[type=checkbox]::before{transition:left .25s}iframe[src^="https://w.soundcloud.com"]{height:120px}iframe[src^="https://www.deezer.com"]{height:94px}iframe[src^="https://www.mixcloud.com"]{height:250px}iframe[src^="https://bandcamp.com/EmbeddedPlayer"]{height:350px}iframe[src^="https://bandcamp.com/EmbeddedPlayer/track"]{height:120px}iframe[src^="https://genius.com/songs"]{height:65px}.info-page code{font-family:monospace;color:var(--color-doc-code);background-color:var(--color-doc-code-background);padding:2px 5px;border-radius:5px}.stats_endpoint .github-issue-button{display:block;padding:8px 16px;font-family:sans-serif;font-size:16px;color:#fff;background-color:#238636;border:#2ea043;border-radius:10px!important;box-shadow:transparent 0 0 0 0}.stats_endpoint .github-issue-button:hover{background-color:#2ea043}.stats_endpoint .issue-hide{display:none}.stats_endpoint input[type=checked]{position:absolute}.stats_endpoint label{margin:1rem 1rem 1rem 0}.stats_endpoint .step_content{margin:1rem 1rem 1rem 2rem}.stats_endpoint .step1,.stats_endpoint .step2{visibility:hidden}.stats_endpoint .step1_delay{transition:visibility 0s linear 4s}.stats_endpoint #step1:checked~.step1,.stats_endpoint #step2:checked~.step2{visibility:visible}.engine-stats{border-spacing:0;border-collapse:collapse}.engine-stats tr td,.engine-stats tr th{border-bottom:1px solid var(--color-result-border);padding:.25rem}.engine-stats table.engine-tooltip{border-spacing:0;border-collapse:collapse}.engine-stats table.engine-tooltip td,.engine-stats table.engine-tooltip th{border:none}.engine-stats .engine-name{width:20rem}.engine-stats .engine-score{width:7rem;text-align:right}.engine-stats .engine-reliability{text-align:right}failed-test,table.engine-error td.engine-error-type,table.engine-error th.engine-error-type{width:10rem}.engine-errors{margin-top:3rem}.engine-errors table.engine-error{max-width:1280px;margin:1rem 0 3rem 0;border:1px solid var(--color-result-border);text-align:right}.engine-errors table.engine-error tr td,.engine-errors table.engine-error tr th{padding:.5rem}.engine-errors table.engine-error span.log_parameters{border-right:1px solid solid var(--color-result-border);padding:0 1rem 0 0;margin:0 0 0 .5rem}.bar-chart-value{width:3em;display:inline-block;text-align:right;padding-right:.5rem}.bar-chart-graph{width:calc(100% - 5rem);display:inline-block}.bar-chart-bar{border:3px solid #5bc0de;margin:1px 0}.bar-chart-serie1{border:3px solid #5bc0de;margin:1px 0;float:left}.bar-chart-serie2{border:3px solid #deb15b;margin:1px 0;float:left}.bar0{width:0;border:0}.bar1{width:1%}.bar2{width:2%}.bar3{width:3%}.bar4{width:4%}.bar5{width:5%}.bar6{width:6%}.bar7{width:7%}.bar8{width:8%}.bar9{width:9%}.bar10{width:10%}.bar11{width:11%}.bar12{width:12%}.bar13{width:13%}.bar14{width:14%}.bar15{width:15%}.bar16{width:16%}.bar17{width:17%}.bar18{width:18%}.bar19{width:19%}.bar20{width:20%}.bar21{width:21%}.bar22{width:22%}.bar23{width:23%}.bar24{width:24%}.bar25{width:25%}.bar26{width:26%}.bar27{width:27%}.bar28{width:28%}.bar29{width:29%}.bar30{width:30%}.bar31{width:31%}.bar32{width:32%}.bar33{width:33%}.bar34{width:34%}.bar35{width:35%}.bar36{width:36%}.bar37{width:37%}.bar38{width:38%}.bar39{width:39%}.bar40{width:40%}.bar41{width:41%}.bar42{width:42%}.bar43{width:43%}.bar44{width:44%}.bar45{width:45%}.bar46{width:46%}.bar47{width:47%}.bar48{width:48%}.bar49{width:49%}.bar50{width:50%}.bar51{width:51%}.bar52{width:52%}.bar53{width:53%}.bar54{width:54%}.bar55{width:55%}.bar56{width:56%}.bar57{width:57%}.bar58{width:58%}.bar59{width:59%}.bar60{width:60%}.bar61{width:61%}.bar62{width:62%}.bar63{width:63%}.bar64{width:64%}.bar65{width:65%}.bar66{width:66%}.bar67{width:67%}.bar68{width:68%}.bar69{width:69%}.bar70{width:70%}.bar71{width:71%}.bar72{width:72%}.bar73{width:73%}.bar74{width:74%}.bar75{width:75%}.bar76{width:76%}.bar77{width:77%}.bar78{width:78%}.bar79{width:79%}.bar80{width:80%}.bar81{width:81%}.bar82{width:82%}.bar83{width:83%}.bar84{width:84%}.bar85{width:85%}.bar86{width:86%}.bar87{width:87%}.bar88{width:88%}.bar89{width:89%}.bar90{width:90%}.bar91{width:91%}.bar92{width:92%}.bar93{width:93%}.bar94{width:94%}.bar95{width:95%}.bar96{width:96%}.bar97{width:97%}.bar98{width:98%}.bar99{width:99%}.bar100{width:100%}.osm-map-box{height:300px;width:100%;margin:10px 0}#main_index{margin-top:26vh}.index{text-align:center}.index .title{background:url(../img/logo.png) no-repeat;filter:var(--invert-logo);min-height:4rem;margin:4rem auto;background-position:center;background-size:contain}.index h1{font-size:4em;visibility:hidden}.index #search,.index #search_header{margin:0 auto;background:inherit;border:inherit;padding:0;display:block}.index .search_filters{display:block;margin:1em 0}.index .category label{padding:6px 10px;border-bottom:initial!important}@media screen and (max-width:79.75em){div.title h1{font-size:1em}#main_index{margin-top:6em}}#tab-content-query table td,#tab-content-query table th{text-align:left!important;height:3rem}#main_preferences form{width:100%}#main_preferences fieldset{margin:8px;border:none}#main_preferences legend{margin:0;padding:5px 0 0 0;display:block;float:right;width:300px}#main_preferences .value{margin:0;padding:0;float:right;width:15em}#main_preferences .value input[type=text],#main_preferences .value select{font-size:inherit!important;margin-top:0;margin-left:1rem;margin-bottom:0;margin-right:0}#main_preferences .value select{width:14rem}#main_preferences .value input[type=text]{width:13.25rem;color:var(--color-toolkit-input-text-font);border:none;background:none repeat scroll 0 0 var(--color-toolkit-select-background);padding:.2rem .4rem;height:2rem;border-radius:5px}#main_preferences .value input[type=text]:focus,#main_preferences .value input[type=text]:hover{background-color:var(--color-toolkit-select-background-hover)}#main_preferences .value input:focus,#main_preferences .value select:focus{outline:0;box-shadow:0 0 1px 1px var(--color-btn-background)}#main_preferences .description{margin:0;padding:5px 0 0 0;float:left;width:50%;color:var(--color-settings-engine-description-font);font-size:90%}#main_preferences table{border-collapse:collapse}#main_preferences table td{text-align:center}#main_preferences .category{margin-left:.5rem}#main_preferences .category label{border:2px solid transparent;padding:.2rem .4rem;border-radius:5px}#main_preferences .category input[type=checkbox]:checked+label{border:2px solid var(--color-categories-item-border-selected)}#main_preferences table.table_engines td{height:3.75rem}#main_preferences table.table_engines th.name label{cursor:pointer}#main_preferences table.table_engines th.name .engine-tooltip{margin-top:1.8rem;right:calc((100% - 85em)/ 2 + 10em);max-width:40rem}#main_preferences table.table_engines th.name .engine-tooltip .engine-description{margin-top:.5rem}#main_preferences table.table_engines .engine-group{text-align:right;font-weight:400;background:var(--color-settings-engine-group-background)}#main_preferences table.table_engines .name,#main_preferences table.table_engines .shortcut{text-align:right}#main_preferences table.cookies{width:100%;direction:ltr}#main_preferences table.cookies td,#main_preferences table.cookies th{text-align:left;font-family:monospace;font-size:1rem;padding:.5em;vertical-align:top}#main_preferences table.cookies td:first-child{word-break:keep-all;width:14rem;padding-right:1rem}#main_preferences table.cookies td:last-child{word-break:break-all}#main_preferences table.cookies>tbody>tr:nth-child(even)>td,#main_preferences table.cookies>tbody>tr:nth-child(even)>th{background-color:var(--color-settings-tr-hover)}#main_preferences .preferences_back{background:none repeat scroll 0 0 var(--color-btn-background);color:var(--color-btn-font);border:0 none;border-radius:10px;cursor:pointer;display:inline-block;margin:2px 4px;padding:.7em}#main_preferences .preferences_back a{color:var(--color-settings-return-font)}#main_preferences .preferences_back a::first-letter{text-transform:uppercase}#main_preferences div.selectable_url pre{width:100%}@media screen and (max-width:79.75em){.preferences_back{clear:both}.engine-tooltip{right:10em!important}}#search{padding:0;margin:0}#search_header{padding-top:1.5em;padding-left:2em;padding-right:7rem;margin:0;background:var(--color-header-background);border-bottom:1px solid var(--color-header-border);display:grid;column-gap:1.2rem;row-gap:1rem;grid-template-columns:3rem 1fr;grid-template-areas:"logo search" "spacer categories"}.category{display:inline-block;position:relative;margin-left:1rem;padding:0}.category input{display:none}.category label{cursor:pointer;padding:.2rem 0;display:inline-flex;text-transform:capitalize;font-size:.9em;border-bottom:2px solid transparent;-webkit-touch-callout:none;user-select:none}.category label svg{padding-right:.2rem}.category label div.category_name{margin:auto 0}.category input[type=checkbox]:checked+label{color:var(--color-categories-item-selected-font);border-bottom:2px solid var(--color-categories-item-border-selected)}#search_logo{filter:var(--invert-logo);grid-area:logo;display:flex;align-items:center;justify-content:center}#search_logo svg{flex:1;width:30px;height:30px;margin:.5rem 0 auto 0}.search_categories{grid-area:categories}.search_categories .help{display:none}.search_categories:hover .help{display:block;position:absolute;background:var(--color-base-background);padding:1rem .6rem .6rem 0;z-index:1000;width:100%;left:-.1rem}#search_view{grid-area:search}.search_box{border-radius:.8rem;width:44rem;display:inline-flex;flex-direction:row;white-space:nowrap;box-shadow:var(--color-search-shadow)}#clear_search{display:block;border-collapse:separate;box-sizing:border-box;width:1.8rem;margin:0;padding:.8rem .2rem;background:none repeat scroll 0 0 var(--color-search-background);border:none;outline:0;color:var(--color-search-font);font-size:1.1rem;z-index:10000}#clear_search:hover{color:var(--color-search-background-hover)}#clear_search.empty *{display:none}html.no-js #clear_search.hide_if_nojs{display:none}#q,#send_search{display:block;margin:0;padding:.8rem;background:none repeat scroll 0 0 var(--color-search-background);border:none;outline:0;color:var(--color-search-font);font-size:1.1rem;z-index:2}#q{width:100%;padding-right:1rem;padding-left:0!important;border-radius:0 .8rem .8rem 0}#q::-ms-clear,#q::-webkit-search-cancel-button{display:none}#send_search{border-radius:.8rem 0 0 .8rem}#send_search:hover{cursor:pointer;background-color:var(--color-search-background-hover);color:var(--color-search-background)}.no-js #clear_search,.no-js #send_search{width:auto!important;border-right:1px solid var(--color-search-border)}.search_filters{margin-top:.6rem;margin-left:0;margin-bottom:0;margin-right:10.6rem;display:flex;overflow-x:auto;overscroll-behavior-inline:contain}.search_filters select{background-color:inherit}.search_filters select:focus,.search_filters select:hover{color:var(--color-base-font)}@media screen and (max-width:79.75em){#search_header{padding:1.5em .5rem 0 .5rem;column-gap:.5rem}.search_filters{margin-top:.6rem;margin-left:0;margin-bottom:0;margin-right:3.5rem}#categories{font-size:90%;clear:both}#categories .checkbox_container{margin:auto;margin-top:2px}}@media screen and (max-width:79.75em) and (hover:none){#main_index #categories_container,#main_results #categories_container{width:max-content}#main_index #categories_container .category,#main_results #categories_container .category{display:inline-block;width:auto}#main_index #categories,#main_results #categories{width:100%;text-align:right;overflow-x:scroll;overflow-y:hidden;-webkit-overflow-scrolling:touch}}@media screen and (max-width:50em){#search_header{width:100%;margin:0;padding:.1rem 0 0 0;column-gap:0;row-gap:0;grid-template-areas:"logo search" "categories categories"}.search_logo{padding:0}.search_box{width:98%;display:flex;margin:0 auto}#q{width:100%;flex:1}.search_filters{margin:0}.category{display:inline-block;width:auto;margin:0}.category label{padding:1rem!important;margin:0!important}.category label svg{display:none}#search_view:focus-within{display:block;background-color:var(--color-search-background);position:absolute;top:0;height:100%;width:100%;z-index:10000}#search_view:focus-within .search_box{border-bottom:1px solid var(--color-search-border);width:100%;border-radius:0;box-shadow:none}#search_view:focus-within .search_box #send_search{margin-left:0!important}#search_view:focus-within .search_box *{border:none;border-radius:0;box-shadow:none}#main_results #q:placeholder-shown~#send_search{margin-left:2.6rem;transition:margin .1s}}@media screen and (max-width:20rem){#search_header{grid-template-areas:"search search" "categories categories"}#search_logo{display:none}}#categories{-webkit-touch-callout:none;user-select:none}#categories::-webkit-scrollbar{width:0;height:0}#categories_container{position:relative}@media screen and (min-width:50em){.center-aligment-yes #main_results{--center-page-width:48rem}}@media screen and (min-width:62rem){.center-aligment-yes #main_results{--center-page-width:60rem}}@media screen and (min-width:79.75em){.center-aligment-yes #main_results{--center-page-width:73rem}}@media screen and (min-width:50em) and (max-width:79.75em){.center-aligment-yes #main_results #results{grid-template-columns:60% calc(40% - 5rem);margin-left:0;margin-right:0}.center-aligment-yes #main_results #urls{margin-right:3rem}.center-aligment-yes #main_results #sidebar{margin-left:1rem}.center-aligment-yes #main_results #backToTop{right:calc(60% + 1rem)}}@media screen and (min-width:79.75em){.center-aligment-yes #main_results{display:flex;flex-direction:column;align-items:center}.center-aligment-yes #main_results #search{width:100%;display:flex;flex-direction:column;align-items:center}.center-aligment-yes #main_results #search_header{grid-template-columns:calc(50% - 4.5rem - var(--center-page-width)/ 2) 3rem var(--center-page-width);grid-template-areas:"na logo search" "na spacer categories";column-gap:1.2rem;width:100%;padding-left:0;padding-right:0}.center-aligment-yes #main_results .search_filters{margin-right:.5rem;width:var(--center-page-width)}.center-aligment-yes #main_results #results{margin-left:2rem;margin-right:10rem}.center-aligment-yes #main_results #results.image-detail-open,.center-aligment-yes #main_results #results.only_template_images{align-self:flex-start}.center-aligment-yes #main_results #results:not(.only_template_images):not(.image-detail-open){margin-right:1.5rem;grid-template-columns:calc(var(--center-page-width) - 5rem - 25rem) 25rem}.center-aligment-yes #main_results #results:not(.only_template_images):not(.image-detail-open) #backToTop{right:calc(50% - 25rem - 5rem + 1rem + var(--center-page-width)/ 2)}.center-aligment-yes #main_results #results .result .content{max-width:inherit}.center-aligment-yes #main_results #urls{margin-right:0}.center-aligment-yes #main_results #sidebar{margin-left:0}}.ion-icon{display:inline-block;vertical-align:bottom;line-height:1;text-decoration:inherit;transform:scale(-1,1)}.ion-icon-small{width:1rem;height:1rem;display:inline-block;vertical-align:bottom;line-height:1;text-decoration:inherit;transform:scale(-1,1)}.ion-icon-big{width:1.5rem;height:1.5rem;display:inline-block;vertical-align:bottom;line-height:1;text-decoration:inherit;transform:scale(-1,1)}html{font-family:sans-serif;font-size:.9em;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%;color:var(--color-base-font);background-color:var(--color-base-background);padding:0;margin:0}body,main{padding:0;margin:0}body{display:flex;flex-direction:column;height:100vh;margin:0}main{width:100%;margin-bottom:2rem;flex:1}.page_with_header{margin:2em auto;width:85em}footer{clear:both;min-height:4rem;padding:1rem 0;width:100%;text-align:center;background-color:var(--color-footer-background);border-top:1px solid var(--color-footer-border);overflow:hidden}footer p{font-size:.9em}.page_with_header .logo{height:40px;filter:var(--invert-logo)}#results button[type=submit],input[type=submit]{padding:.7rem;display:inline-block;background:var(--color-btn-background);color:var(--color-btn-font);border-radius:10px;border:0;cursor:pointer}a{text-decoration:none;color:var(--color-url-font)}a:visited{color:var(--color-url-visited-font)}a:visited .highlight{color:var(--color-url-visited-font)}article[data-vim-selected]{background:var(--color-result-vim-selected);border-right:.2rem solid var(--color-result-vim-arrow);border-radius:10px 0 0 10px}article.result-images[data-vim-selected]{background:var(--color-result-vim-arrow);border:none;border-radius:10px}article.result-images[data-vim-selected] .image_thumbnail{filter:opacity(60%)}article.result-images[data-vim-selected] span.source,article.result-images[data-vim-selected] span.title{color:var(--color-result-image-span-font-selected)}article[data-vim-selected].category-files,article[data-vim-selected].category-map,article[data-vim-selected].category-music,article[data-vim-selected].category-news,article[data-vim-selected].category-social,article[data-vim-selected].category-videos{border:1px solid var(--color-result-vim-arrow);border-radius:10px}.result{margin:.125rem 0;padding:1rem;border-right:.2rem solid transparent}.result h3{font-size:1.2rem;word-wrap:break-word;margin:.4rem 0 .4rem 0;padding:0}.result h3 a{color:var(--color-result-link-font);font-weight:400;font-size:1.1em}.result h3 a:visited{color:var(--color-result-link-visited-font)}.result h3 a:focus,.result h3 a:hover{text-decoration:underline;border:none;outline:0}.result .cache_link,.result .proxyfied_link{font-size:.9em!important}.result .content,.result .stat{font-size:.9em;margin:0;padding:0;max-width:54em;word-wrap:break-word;line-height:1.24}.result .content .highlight,.result .stat .highlight{color:var(--color-result-description-highlight-font);background:inherit;font-weight:700}.result .altlink a{font-size:.9em;margin:0 10px 0 0;padding:5px 10px;border-radius:5px;background:var(--color-show-btn-background);color:var(--color-show-btn-font);cursor:pointer}.result .altlink a:hover{background:var(--color-btn-background);color:var(--color-btn-font)}.result .codelines .highlight{color:inherit;background:inherit;font-weight:400}.result .url_wrapper{display:flex;font-size:1rem;color:var(--color-result-url-font);flex-wrap:nowrap;overflow:hidden;flex-direction:row;margin:0;padding:0}.result .url_wrapper .url_o1{white-space:nowrap;flex-shrink:1}.result .url_wrapper .url_o1::after{content:" ";width:1ch;display:inline-block}.result .url_wrapper .url_o2{overflow:hidden;white-space:nowrap;flex-basis:content;flex-grow:0;flex-shrink:1;text-align:right}.result .url_wrapper .url_o2 .url_i2{float:right}.result .published_date,.result .result_author,.result .result_length,.result .result_shipping,.result .result_source_country{font-size:.8em;color:var(--color-result-publishdate-font)}.result .result_price{font-size:1.2em;color:var(--color-result-description-highlight-font)}.result img.thumbnail{float:right;padding-top:.6rem;padding-left:1rem;width:20rem;height:unset}.result img.image{float:right;padding-top:.6rem;padding-left:1rem;width:7rem;max-height:7rem;object-fit:scale-down;object-position:right top}.result .break{clear:both}.result-paper .attributes{display:table;border-spacing:.125rem}.result-paper .attributes div{display:table-row}.result-paper .attributes div span{font-size:.9rem;margin-top:.25rem;display:table-cell}.result-paper .attributes div span time{font-size:.9rem}.result-paper .attributes div span:first-child{color:var(--color-base-font);min-width:10rem}.result-paper .attributes div span:nth-child(2){color:var(--color-result-publishdate-font)}.result-paper .content{margin-top:.25rem}.result-paper .comments{font-size:.9rem;margin:.25rem 0 0 0;padding:0;word-wrap:break-word;line-height:1.24;font-style:italic}.template_group_images{display:flex;flex-wrap:wrap}.template_group_images::after{flex-grow:10;content:""}.category-files,.category-map,.category-music,.category-news,.category-social,.category-videos{border:1px solid var(--color-result-border);margin:0 .5rem 1rem .5rem!important;border-radius:10px}.category-social .image{width:auto!important;min-width:48px;min-height:48px;padding:0 5px 25px 0!important}.audio-control audio{width:100%;padding:10px 0 0 0}.embedded-content iframe{width:100%;padding:10px 0 0 0}.result-videos .content{overflow:hidden}.result-videos .embedded-video iframe{width:100%;aspect-ratio:16/9;padding:10px 0 0 0}@supports not (aspect-ratio:1 / 1){.result-videos .embedded-video iframe{height:calc(45rem * 9 / 16)}}.engines{float:left;display:flex;flex-wrap:wrap;justify-content:flex-end;color:var(--color-result-engines-font)}.engines span{font-size:smaller;margin-top:0;margin-bottom:0;margin-left:.5rem;margin-right:0}.small_font{font-size:.8em}.highlight{color:var(--color-result-link-font-highlight);background:inherit}.empty_element{font-style:italic}.result-images{flex-grow:1;padding:.5rem .5rem 3rem .5rem;margin:.25rem;border:none!important;height:12rem}.result-images>a{position:relative}.result-images img{margin:0;padding:0;border:none;height:100%;width:100%;object-fit:cover;vertical-align:bottom;background:var(--color-result-image-background)}.result-images span.source,.result-images span.title{display:block;position:absolute;width:100%;font-size:.9rem;color:var(--color-result-image-span-font);padding:.5rem 0 0 0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.result-images span.source{padding:1.8rem 0 0 0;font-size:.7rem}.result-map img.image{float:left!important;height:100px!important;width:auto!important}.result-map table{font-size:.9em;width:auto;border-collapse:separate;border-spacing:0 .35rem}.result-map table th{font-weight:inherit;width:17rem;vertical-align:top;text-align:right}.result-map table td{vertical-align:top;text-align:right}.hidden{display:none!important}#results{margin-top:1rem;margin-left:2rem;margin-bottom:0;margin-right:10rem;display:grid;grid-template-columns:45rem 25rem;grid-template-rows:min-content min-content 1fr min-content;gap:0 5rem;grid-template-areas:"corrections sidebar" "answers sidebar" "urls sidebar" "pagination sidebar"}#results #sidebar :first-child,#results #urls :first-child{margin-top:0}#urls{padding:0;grid-area:urls}#suggestions .wrapper{display:flex;flex-flow:column;justify-content:flex-end;flex-wrap:wrap;flex-direction:row}#suggestions .wrapper form{display:inline-block;flex:1 1 50%}#infoboxes input,#suggestions input{padding:0;margin:3px;font-size:.9em;display:inline-block;background:0 0;color:var(--color-result-search-url-font);cursor:pointer;width:calc(100%);text-overflow:ellipsis;overflow:hidden;text-align:left}#infoboxes .infobox .url a,#infoboxes input[type=submit],#suggestions .infobox .url a,#suggestions input[type=submit]{color:var(--color-result-link-font);text-decoration:none;font-size:.9rem}#infoboxes .infobox .url a:hover,#infoboxes input[type=submit]:hover,#suggestions .infobox .url a:hover,#suggestions input[type=submit]:hover{text-decoration:underline}#corrections{grid-area:corrections;display:flex;flex-flow:row wrap;margin:0 0 1em 0}#corrections h4,#corrections input[type=submit]{display:inline-block;padding:.5rem;margin:.5rem}#corrections input[type=submit]{font-size:.8rem;border-radius:5px}#apis .title,#search_url .title,#suggestions .title{margin:2em 0 .5em 0;color:var(--color-base-font)}#answers{grid-area:answers;background:var(--color-answer-background);padding:1rem;margin:1rem 0;margin-top:0;color:var(--color-answer-font);border-radius:10px}#answers h4{display:none}#answers span{overflow-wrap:anywhere}#infoboxes form{min-width:210px}#sidebar{grid-area:sidebar;word-wrap:break-word;color:var(--color-sidebar-font)}#sidebar .infobox{margin:10px 0 10px;border:1px solid var(--color-sidebar-border);padding:1rem;font-size:.9em;border-radius:10px}#sidebar .infobox h2{margin:0 0 .5em 0}#sidebar .infobox img{max-width:100%;max-height:12em;display:block;margin:0 auto;padding:0}#sidebar .infobox dt{font-weight:700}#sidebar .infobox .attributes dl{margin:.5em 0}#sidebar .infobox .attributes dt{display:inline;margin-top:.5em;margin-left:.25em;margin-bottom:.5em;margin-right:0;padding:0}#sidebar .infobox .attributes dd{display:inline;margin:.5em 0;padding:0}#sidebar .infobox input{font-size:1em}#sidebar .infobox br{clear:both}#sidebar .infobox .attributes,#sidebar .infobox .urls{clear:both}#search_url{margin-top:8px}#search_url div.selectable_url pre{width:200em}#links_on_top{position:absolute;left:1.8rem;text-align:left;top:2.2rem;padding:0;border:0;display:flex;align-items:center;font-size:1em;color:var(--color-search-font)}#links_on_top a{display:flex;align-items:center;margin-left:1em}#links_on_top a svg{font-size:1.2em;margin-left:.125em}#links_on_top a,#links_on_top a:active *,#links_on_top a:hover *,#links_on_top a:link *,#links_on_top a:visited *{color:var(--color-search-font)}#pagination{grid-area:pagination}#pagination br{clear:both}.numbered_pagination{display:flex;flex-direction:row;justify-content:center;align-items:center;overflow:hidden}.page_number{background:0 0!important;color:var(--color-result-link-font)!important;text-decoration:underline}.page_number_current{background:0 0;color:var(--color-result-link-visited-font);border:none}#apis{margin-top:8px;clear:both}#backToTop{border:1px solid var(--color-backtotop-border);margin:0;padding:0;font-size:1em;background:var(--color-backtotop-background);position:fixed;bottom:8rem;right:56.3rem;transition:opacity .5s;opacity:0;border-radius:10px}#backToTop a{display:block;margin:0;padding:.7em}#backToTop a,#backToTop a:active,#backToTop a:hover,#backToTop a:visited{color:var(--color-backtotop-font)}#results.scrolling #backToTop{opacity:1}@media screen and (max-width:calc(79.75em - 0.5px)){#links_on_top span{display:none}}@media screen and (max-width:52rem){body.results_endpoint #links_on_top .link_on_top_about,body.results_endpoint #links_on_top .link_on_top_donate{display:none}}@media screen and (min-width:50em) and (max-width:79.75em){.center-aligment-no #links_on_top span{display:none}.center-aligment-no .page_with_header{margin:2rem .5rem;width:auto}.center-aligment-no #infoboxes{position:inherit;max-width:inherit}.center-aligment-no #infoboxes .infobox{clear:both}.center-aligment-no #infoboxes .infobox img{float:right;max-width:10em;margin-top:.5em;margin-left:.5em;margin-bottom:.5em;margin-right:0}.center-aligment-no #sidebar{margin:0 .5rem .125rem .5rem;padding:0;float:none;border:none;width:auto}.center-aligment-no #sidebar input{border:0}.center-aligment-no #apis{display:none}.center-aligment-no #search_url{display:none}.center-aligment-no .result .thumbnail{max-width:98%}.center-aligment-no .result .url span.url{display:block;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;width:100%}.center-aligment-no .result .engines{float:left;display:flex;flex-wrap:wrap;justify-content:flex-end;padding:0 0 3px 0}.center-aligment-no .result-images{border-bottom:none!important}.center-aligment-no .image_result{max-width:98%}.center-aligment-no .image_result img{max-width:98%}.center-aligment-no #backToTop{display:none}.center-aligment-no #pagination{margin:2rem 0 0 0!important}.center-aligment-no #main_results div#results{margin:1rem auto 0 auto;justify-content:center;display:grid;grid-template-columns:45rem;grid-template-rows:min-content min-content min-content 1fr min-content min-content;gap:0;grid-template-areas:"corrections" "answers" "sidebar" "urls" "pagination"}}#main_results div#results.only_template_images{margin:1rem .5rem 0 .5rem;display:grid;grid-template-columns:100%;grid-template-rows:min-content min-content min-content 1fr min-content;gap:0;grid-template-areas:"corrections" "answers" "sidebar" "urls" "pagination"}#main_results div#results.only_template_images #sidebar{display:none}#main_results div#results.only_template_images #urls{margin:0;display:flex;flex-wrap:wrap}#main_results div#results.only_template_images #urls::after{flex-grow:10;content:""}#main_results div#results.only_template_images #backToTop{right:auto;left:1rem}#main_results div#results.only_template_images #pagination{margin-left:4rem}@media screen and (max-width:50em){#links_on_top span{display:none}.page_with_header{margin:2rem .5rem;width:auto}#infoboxes{position:inherit;max-width:inherit}#infoboxes .infobox{clear:both}#infoboxes .infobox img{float:right;max-width:10em;margin-top:.5em;margin-left:.5em;margin-bottom:.5em;margin-right:0}#sidebar{margin:0 .5rem .125rem .5rem;padding:0;float:none;border:none;width:auto}#sidebar input{border:0}#apis{display:none}#search_url{display:none}.result .thumbnail{max-width:98%}.result .url span.url{display:block;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;width:100%}.result .engines{float:left;display:flex;flex-wrap:wrap;justify-content:flex-end;padding:0 0 3px 0}.result-images{border-bottom:none!important}.image_result{max-width:98%}.image_result img{max-width:98%}#backToTop{display:none}#pagination{margin:2rem 0 0 0!important}#main_results div#results{margin:1rem auto 0 auto;justify-content:center;display:grid;grid-template-columns:45rem;grid-template-rows:min-content min-content min-content 1fr min-content min-content;gap:0;grid-template-areas:"corrections" "answers" "sidebar" "urls" "pagination"}html{background-color:var(--color-base-background-mobile)}#main_results div#results{grid-template-columns:100%;margin:1rem 0 0 0}#links_on_top{top:.8rem;left:.7rem}#main_index #links_on_top{top:.5rem;left:.5rem}#results{margin:0;padding:0}#pagination{margin:2rem 1rem 0 1rem!important}article[data-vim-selected]{border:1px solid var(--color-result-vim-arrow);border-radius:10px}.result{background:var(--color-result-background);margin:1rem 0}.result-images{margin:0;height:6rem;background:var(--color-base-background-mobile)}.infobox{border:none!important;background-color:var(--color-sidebar-background)}.numbered_pagination{display:none}.result-paper .attributes{display:block}.result-paper .attributes div{display:block}.result-paper .attributes div span{display:inline}.result-paper .attributes div span:first-child{font-weight:700}.result-paper .attributes div span:nth-child(2){margin-right:.5rem}}@media screen and (max-width:35em){.result-videos img.thumbnail{float:none!important}.result-videos .content{overflow:inherit}}pre code{white-space:pre-wrap}#q,#sidebar .infobox dt bdi{direction:rtl}#urls{direction:initial;text-align:right}#urls .result .url_wrapper{justify-content:end}#main_results div#results.only_template_images #urls{direction:rtl}#results.image-detail-open article.result-images[data-vim-selected] .detail .result-images-labels p{direction:rtl}#results.image-detail-open article.result-images[data-vim-selected] .detail .result-images-labels p.result-url{direction:ltr}#results.image-detail-open article.result-images[data-vim-selected] .detail .result-images-labels p.result-url span{direction:rtl;float:right}@supports ((background-position-x:100%) and ((appearance:none) or (-webkit-appearance:none) or (-moz-appearance:none))){select{border-width:0 0 0 2rem;background-position-x:-2rem}}#vim-hotkeys-help table{direction:ltr;text-align:left}#main_preferences h1,#main_stats h1{background-position-x:100%}.bar-chart-serie1,.bar-chart-serie2{float:right}.engine-stats .engine-name,.engine-stats .engine-reliability,.engine-stats .engine-score,.engine-stats .response-time,.engine-stats .result-count{text-align:right}/*# sourceMappingURL=searxng-rtl.min.css.map */ \ No newline at end of file diff --git a/searx/static/themes/magi/css/searxng-rtl.min.css.map b/searx/static/themes/magi/css/searxng-rtl.min.css.map new file mode 100644 index 000000000..6977bd006 --- /dev/null +++ b/searx/static/themes/magi/css/searxng-rtl.min.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["node_modules/normalize.css/normalize.css","$stdin","src/less/definitions.less","src/less/code.less","src/generated/pygments.less","src/less/toolkit.less","src/less/mixins.less","src/less/style-rtl.less","src/less/autocomplete.less","src/less/detail.less","src/less/animations.less","src/less/embedded.less","src/less/info.less","src/less/new_issue.less","src/less/stats.less","src/less/result_templates.less","src/less/index.less","src/less/preferences.less","src/less/search.less","src/less/style-center.less","src/less/style.less"],"names":[],"mappings":"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AO,GZk6DT,MYl6DE,MAAO,GZq6DT,MYr6DE,MAAO,GZw6DT,MYx6DE,MAAO,GAmCL,MZy4DF,MAAO,GYr4DL,MZw4DF,MAAO,GY/6DT,MA4CI,MAAA,GC3CJ,MACE,MAAA,Gbq7DF,Oat7DE,MAAO,IAML,OACA,MAAA,IAPJ,OAWI,MAAA,Ibo7DJ,Oa/7DE,MAAO,IAgBH,Obm7DJ,MAAO,Ia96DL,Obi7DF,MAAO,Ia76DL,OACA,MAAA,IA1BJ,OA8BI,MAAA,IAIC,OACA,MAAA,IAEH,Ob66DA,MAAO,Iaz6DP,Ob46DA,MAAO,Iaz6DL,OACA,MAAA,IPsBF,ONw5DA,MAAO,Ian7DT,OAWM,MAAA,IAGF,OACE,MAAA,IAEA,Ob26DJ,MAAO,Iar6DP,OACA,MAAA,IAEA,Obw6DA,MAAO,Iap6DP,OACA,MAAA,IAGF,OACE,MAAA,Ibu6DF,Oan6DE,MAAO,IAEP,OACA,MAAA,IAGF,OACE,MAAA,IAEA,Obo6DA,MAAO,Iah6DP,OACA,MAAA,IV/FD,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,QUsGG,MAAA,KVtGH,aUsGG,OAAA,MbqmEF,MAAO,KG3sER,OAAA,KAAA,EH8sED,YG9sEC,WAAA,KHitED,OGjtEC,WAAA,OHotED,cGptEC,WAAA,qBAAA,UUsGG,OAAA,mBbinEF,WAAY,KGvtEb,OAAA,KAAA,KUsGG,oBAAA,ObonEF,gBAAiB,QapnEf,UbunEF,UAAW,IG7tEZ,WAAA,OHguED,eGhuEC,sBUsGG,OAAA,EAAA,Kb6nEF,WAAY,QGnuEb,OAAA,QUsGG,QAAA,EbgoEF,QAAS,MahoEP,uBbmoEF,QAAS,MGzuEV,OAAA,IAAA,EH4uED,uBG5uEC,QAAA,IAAA,KUsGG,cAAA,kBVtGH,sCUsGG,ab4oEA,UAAW,Ia5oEX,Yb+oEA,WAAY,KAGhB,4BGxvEC,4BUsGG,WAAA,ebqpEF,OAAQ,KarpEN,uBbwpEF,MAAO,KaxpEL,2Bb2pEF,OAAQ,IGjwET,OAAA,KHowED,yBGpwEC,OAAA,EUsGG,QAAA,IAAA,EAAA,EAAA,EbiqEF,QAAS,MGvwEV,MAAA,MUsGG,MAAA,MVtGH,yBUsGG,OAAA,EbuqEF,QAAS,EG7wEV,MAAA,MUsGG,MAAA,KAAA,0CVtGH,gCHmxEC,UAAW,kBGnxEZ,WAAA,EUsGG,YAAA,KbgrEF,cAAe,EGtxEhB,aAAA,EHyxED,gCGzxEC,MAAA,MH4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","sourcesContent":["/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */\n\n/* Document\n ========================================================================== */\n\n/**\n * 1. Correct the line height in all browsers.\n * 2. Prevent adjustments of font size after orientation changes in iOS.\n */\n\nhtml {\n line-height: 1.15; /* 1 */\n -webkit-text-size-adjust: 100%; /* 2 */\n}\n\n/* Sections\n ========================================================================== */\n\n/**\n * Remove the margin in all browsers.\n */\n\nbody {\n margin: 0;\n}\n\n/**\n * Render the `main` element consistently in IE.\n */\n\nmain {\n display: block;\n}\n\n/**\n * Correct the font size and margin on `h1` elements within `section` and\n * `article` contexts in Chrome, Firefox, and Safari.\n */\n\nh1 {\n font-size: 2em;\n margin: 0.67em 0;\n}\n\n/* Grouping content\n ========================================================================== */\n\n/**\n * 1. Add the correct box sizing in Firefox.\n * 2. Show the overflow in Edge and IE.\n */\n\nhr {\n box-sizing: content-box; /* 1 */\n height: 0; /* 1 */\n overflow: visible; /* 2 */\n}\n\n/**\n * 1. Correct the inheritance and scaling of font size in all browsers.\n * 2. Correct the odd `em` font sizing in all browsers.\n */\n\npre {\n font-family: monospace, monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/* Text-level semantics\n ========================================================================== */\n\n/**\n * Remove the gray background on active links in IE 10.\n */\n\na {\n background-color: transparent;\n}\n\n/**\n * 1. Remove the bottom border in Chrome 57-\n * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.\n */\n\nabbr[title] {\n border-bottom: none; /* 1 */\n text-decoration: underline; /* 2 */\n text-decoration: underline dotted; /* 2 */\n}\n\n/**\n * Add the correct font weight in Chrome, Edge, and Safari.\n */\n\nb,\nstrong {\n font-weight: bolder;\n}\n\n/**\n * 1. Correct the inheritance and scaling of font size in all browsers.\n * 2. Correct the odd `em` font sizing in all browsers.\n */\n\ncode,\nkbd,\nsamp {\n font-family: monospace, monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/**\n * Add the correct font size in all browsers.\n */\n\nsmall {\n font-size: 80%;\n}\n\n/**\n * Prevent `sub` and `sup` elements from affecting the line height in\n * all browsers.\n */\n\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -0.25em;\n}\n\nsup {\n top: -0.5em;\n}\n\n/* Embedded content\n ========================================================================== */\n\n/**\n * Remove the border on images inside links in IE 10.\n */\n\nimg {\n border-style: none;\n}\n\n/* Forms\n ========================================================================== */\n\n/**\n * 1. Change the font styles in all browsers.\n * 2. Remove the margin in Firefox and Safari.\n */\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n font-family: inherit; /* 1 */\n font-size: 100%; /* 1 */\n line-height: 1.15; /* 1 */\n margin: 0; /* 2 */\n}\n\n/**\n * Show the overflow in IE.\n * 1. Show the overflow in Edge.\n */\n\nbutton,\ninput { /* 1 */\n overflow: visible;\n}\n\n/**\n * Remove the inheritance of text transform in Edge, Firefox, and IE.\n * 1. Remove the inheritance of text transform in Firefox.\n */\n\nbutton,\nselect { /* 1 */\n text-transform: none;\n}\n\n/**\n * Correct the inability to style clickable types in iOS and Safari.\n */\n\nbutton,\n[type=\"button\"],\n[type=\"reset\"],\n[type=\"submit\"] {\n -webkit-appearance: button;\n}\n\n/**\n * Remove the inner border and padding in Firefox.\n */\n\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n border-style: none;\n padding: 0;\n}\n\n/**\n * Restore the focus styles unset by the previous rule.\n */\n\nbutton:-moz-focusring,\n[type=\"button\"]:-moz-focusring,\n[type=\"reset\"]:-moz-focusring,\n[type=\"submit\"]:-moz-focusring {\n outline: 1px dotted ButtonText;\n}\n\n/**\n * Correct the padding in Firefox.\n */\n\nfieldset {\n padding: 0.35em 0.75em 0.625em;\n}\n\n/**\n * 1. Correct the text wrapping in Edge and IE.\n * 2. Correct the color inheritance from `fieldset` elements in IE.\n * 3. Remove the padding so developers are not caught out when they zero out\n * `fieldset` elements in all browsers.\n */\n\nlegend {\n box-sizing: border-box; /* 1 */\n color: inherit; /* 2 */\n display: table; /* 1 */\n max-width: 100%; /* 1 */\n padding: 0; /* 3 */\n white-space: normal; /* 1 */\n}\n\n/**\n * Add the correct vertical alignment in Chrome, Firefox, and Opera.\n */\n\nprogress {\n vertical-align: baseline;\n}\n\n/**\n * Remove the default vertical scrollbar in IE 10+.\n */\n\ntextarea {\n overflow: auto;\n}\n\n/**\n * 1. Add the correct box sizing in IE 10.\n * 2. Remove the padding in IE 10.\n */\n\n[type=\"checkbox\"],\n[type=\"radio\"] {\n box-sizing: border-box; /* 1 */\n padding: 0; /* 2 */\n}\n\n/**\n * Correct the cursor style of increment and decrement buttons in Chrome.\n */\n\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n/**\n * 1. Correct the odd appearance in Chrome and Safari.\n * 2. Correct the outline style in Safari.\n */\n\n[type=\"search\"] {\n -webkit-appearance: textfield; /* 1 */\n outline-offset: -2px; /* 2 */\n}\n\n/**\n * Remove the inner padding in Chrome and Safari on macOS.\n */\n\n[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n/**\n * 1. Correct the inability to style clickable types in iOS and Safari.\n * 2. Change font properties to `inherit` in Safari.\n */\n\n::-webkit-file-upload-button {\n -webkit-appearance: button; /* 1 */\n font: inherit; /* 2 */\n}\n\n/* Interactive\n ========================================================================== */\n\n/*\n * Add the correct display in Edge, IE 10+, and Firefox.\n */\n\ndetails {\n display: block;\n}\n\n/*\n * Add the correct display in all browsers.\n */\n\nsummary {\n display: list-item;\n}\n\n/* Misc\n ========================================================================== */\n\n/**\n * Add the correct display in IE 10+.\n */\n\ntemplate {\n display: none;\n}\n\n/**\n * Add the correct display in IE 10.\n */\n\n[hidden] {\n display: none;\n}\n",null,"/*\n * SearXNG, A privacy-respecting, hackable metasearch engine\n *\n * To change the colors of the site, simple edit this variables\n */\n\n/// Light Theme\n:root {\n /// Base Colors\n --color-base-font: #444;\n --color-base-font-rgb: 68, 68, 68;\n --color-base-background: #fff;\n --color-base-background-mobile: #f2f5f8;\n --color-url-font: #334999;\n --color-url-visited-font: #9822c3;\n /// Header Colors\n --color-header-background: #fdfbff;\n --color-header-border: #ddd;\n /// Footer Colors\n --color-footer-background: #fdfbff;\n --color-footer-border: #ddd;\n /// Sidebar Colors\n --color-sidebar-border: #ddd;\n --color-sidebar-font: #000;\n --color-sidebar-background: #fff;\n /// BackToTop Colors\n --color-backtotop-font: #444;\n --color-backtotop-border: #ddd;\n --color-backtotop-background: #fff;\n /// Button Colors\n --color-btn-background: #3050ff;\n --color-btn-font: #fff;\n --color-show-btn-background: #bbb;\n --color-show-btn-font: #000;\n /// Search Input Colors\n --color-search-border: #bbb;\n --color-search-shadow: 0 2px 8px rgb(34 38 46 / 25%);\n --color-search-background: #fff;\n --color-search-font: #222;\n --color-search-background-hover: #3050ff;\n /// Modal Colors\n --color-error: #db3434;\n --color-error-background: lighten(#db3434, 40%);\n --color-warning: #dbba34;\n --color-warning-background: lighten(#dbba34, 40%);\n --color-success: #42db34;\n --color-success-background: lighten(#42db34, 40%);\n /// Categories Colors\n --color-categories-item-selected-font: #3050ff;\n --color-categories-item-border-selected: #3050ff;\n /// Autocomplete Colors\n --color-autocomplete-font: #000;\n --color-autocomplete-border: #bbb;\n --color-autocomplete-shadow: 0 2px 8px rgb(34 38 46 / 25%);\n --color-autocomplete-background: #fff;\n --color-autocomplete-background-hover: #e3e3e3;\n /// Answer Colors\n --color-answer-font: #444; // same as --color-base-font\n --color-answer-background: #fff;\n /// Results Colors\n --color-result-background: #fff;\n --color-result-border: #ddd;\n --color-result-url-font: #000;\n --color-result-vim-selected: #f7f7f7;\n --color-result-vim-arrow: #000bbb;\n --color-result-description-highlight-font: #000;\n --color-result-link-font: #000bbb;\n --color-result-link-font-highlight: #000bbb;\n --color-result-link-visited-font: #9822c3;\n --color-result-publishdate-font: #777;\n --color-result-engines-font: #545454;\n --color-result-search-url-border: #ddd;\n --color-result-search-url-font: #000;\n // Images Colors\n --color-result-image-span-font: #444;\n --color-result-image-span-font-selected: #fff;\n --color-result-image-background: #fff;\n /// Settings Colors\n --color-settings-tr-hover: #ebebeb;\n --color-settings-engine-description-font: #545454;\n --color-settings-engine-group-background: #0001;\n /// Detail modal\n --color-result-detail-font: #fff;\n --color-result-detail-label-font: lightgray;\n --color-result-detail-background: #242424;\n --color-result-detail-hr: #555;\n --color-result-detail-link: #8af;\n --color-result-detail-loader-border: rgba(255, 255, 255, 0.2);\n --color-result-detail-loader-borderleft: rgba(0, 0, 0, 0);\n /// Toolkit Colors\n --color-toolkit-badge-font: #fff;\n --color-toolkit-badge-background: #545454;\n --color-toolkit-kbd-font: #fff;\n --color-toolkit-kbd-background: #000;\n --color-toolkit-dialog-border: #ddd;\n --color-toolkit-dialog-background: #fff;\n --color-toolkit-tabs-label-border: #fff;\n --color-toolkit-tabs-section-border: #ddd;\n --color-toolkit-select-background: #e1e1e1;\n --color-toolkit-select-border: #ddd;\n --color-toolkit-select-background-hover: #bbb;\n --color-toolkit-input-text-font: #222;\n --color-toolkit-checkbox-onoff-off-background: #ddd;\n --color-toolkit-checkbox-onoff-on-background: #ddd;\n --color-toolkit-checkbox-onoff-on-mark-background: #3050ff;\n --color-toolkit-checkbox-onoff-on-mark-color: #fff;\n --color-toolkit-checkbox-onoff-off-mark-background: #aaa;\n --color-toolkit-checkbox-onoff-off-mark-color: #fff;\n --color-toolkit-checkbox-label-background: #ddd;\n --color-toolkit-checkbox-label-border: #ddd;\n --color-toolkit-checkbox-input-border: #3050ff;\n --color-toolkit-engine-tooltip-border: #ddd;\n --color-toolkit-engine-tooltip-background: #fff;\n --color-toolkit-loader-border: rgba(0, 0, 0, 0.2);\n --color-toolkit-loader-borderleft: rgba(255, 255, 255, 0);\n --color-doc-code: #300;\n --color-doc-code-background: #fdd;\n --invert-logo: invert(0%);\n}\n\n.dark-themes() {\n /// Base Colors\n --color-base-font: #bbb;\n --color-base-font-rgb: 187, 187, 187;\n --color-base-background: #222428;\n --color-base-background-mobile: #222428;\n --color-url-font: #8af;\n --color-url-visited-font: #c09cd9;\n /// Header Colors\n --color-header-background: #1e1e22;\n --color-header-border: #333;\n /// Footer Colors\n --color-footer-background: #1e1e22;\n --color-footer-border: #333;\n /// Sidebar Colors\n --color-sidebar-border: #555;\n --color-sidebar-font: #fff;\n --color-sidebar-background: #292c34;\n /// BackToTop Colors\n --color-backtotop-font: #bbb;\n --color-backtotop-border: #333;\n --color-backtotop-background: #2b2e36;\n /// Button Colors\n --color-btn-background: linear-gradient(81.62deg, #2870ea 8.72%, #1b4aef 85.01%);\n --color-btn-font: #fff;\n --color-show-btn-background: #555;\n --color-show-btn-font: #fff;\n /// Search Input Colors\n --color-search-border: #555;\n --color-search-shadow: 0 2px 8px rgb(34 38 46 / 25%);\n --color-search-background: #2b2e36;\n --color-search-font: #fff;\n --color-search-background-hover: linear-gradient(81.62deg, #2870ea 8.72%, #1b4aef 85.01%);\n /// Modal Colors\n --color-error: #f55b5b;\n --color-error-background: darken(#db3434, 40%);\n --color-warning: #f1d561;\n --color-warning-background: darken(#dbba34, 40%);\n --color-success: #79f56e;\n --color-success-background: darken(#42db34, 40%);\n /// Categories Colors\n --color-categories-item-selected-font: #58f;\n --color-categories-item-border-selected: #58f;\n /// Autocomplete Colors\n --color-autocomplete-font: #fff;\n --color-autocomplete-border: #555;\n --color-autocomplete-shadow: 0 2px 8px rgb(34 38 46 / 25%);\n --color-autocomplete-background: #2b2e36;\n --color-autocomplete-background-hover: #1e1e22;\n /// Answer Colors\n --color-answer-font: #bbb; // same as --color-base-font\n --color-answer-background: #26292f;\n /// Results Colors\n --color-result-background: #26292f;\n --color-result-border: #333;\n --color-result-url-font: #fff;\n --color-result-vim-selected: #1f1f23cc;\n --color-result-vim-arrow: #8af;\n --color-result-description-highlight-font: #fff;\n --color-result-link-font: #8af;\n --color-result-link-font-highlight: #8af;\n --color-result-link-visited-font: #c09cd9;\n --color-result-publishdate-font: #888;\n --color-result-engines-font: #a4a4a4;\n --color-result-search-url-border: #555;\n --color-result-search-url-font: #fff;\n /// Detail modal : same as the light version\n --color-result-detail-font: #fff;\n --color-result-detail-label-font: lightgray;\n --color-result-detail-background: #1a1a1c;\n --color-result-detail-hr: #555;\n --color-result-detail-link: #8af;\n --color-result-detail-loader-border: rgba(255, 255, 255, 0.2);\n --color-result-detail-loader-borderleft: rgba(0, 0, 0, 0);\n // Images Colors\n --color-result-image-span-font: #bbb;\n --color-result-image-span-font-selected: #222;\n --color-result-image-background: #222;\n /// Settings Colors\n --color-settings-tr-hover: #2c2c32;\n --color-settings-engine-description-font: darken(#dcdcdc, 30%);\n --color-settings-engine-group-background: #1b1b21;\n /// Toolkit Colors\n --color-toolkit-badge-font: #fff;\n --color-toolkit-badge-background: #555;\n --color-toolkit-kbd-font: #000;\n --color-toolkit-kbd-background: #fff;\n --color-toolkit-dialog-border: #555;\n --color-toolkit-dialog-background: #1e1e22;\n --color-toolkit-tabs-label-border: #222;\n --color-toolkit-tabs-section-border: #555;\n --color-toolkit-select-background: #313338;\n --color-toolkit-select-border: #555;\n --color-toolkit-select-background-hover: #373b49;\n --color-toolkit-input-text-font: #fff;\n --color-toolkit-checkbox-onoff-off-background: #313338;\n --color-toolkit-checkbox-onoff-on-background: #313338;\n --color-toolkit-checkbox-onoff-on-mark-background: #58f;\n --color-toolkit-checkbox-onoff-on-mark-color: #222;\n --color-toolkit-checkbox-onoff-off-mark-background: #ddd;\n --color-toolkit-checkbox-onoff-off-mark-color: #222;\n --color-toolkit-checkbox-label-background: #222;\n --color-toolkit-checkbox-label-border: #333;\n --color-toolkit-checkbox-input-border: #58f;\n --color-toolkit-engine-tooltip-border: #333;\n --color-toolkit-engine-tooltip-background: #222;\n --color-toolkit-loader-border: rgba(255, 255, 255, 0.2);\n --color-toolkit-loader-borderleft: rgba(0, 0, 0, 0);\n --color-doc-code: #fdd;\n --color-doc-code-background: #300;\n --invert-logo: invert(100%);\n}\n\n/// Dark Theme (autoswitch based on device pref)\n@media (prefers-color-scheme: dark) {\n :root.theme-auto {\n .dark-themes();\n }\n}\n\n// Dark Theme by preferences\n:root.theme-dark {\n .dark-themes();\n}\n\n/// General Size\n@results-width: 45rem;\n@results-sidebar-width: 25rem;\n@results-offset: 10rem;\n@results-tablet-offset: 0.5rem;\n@results-gap: 5rem;\n@results-margin: 0.125rem;\n@result-padding: 1rem;\n@results-image-row-height: 12rem;\n@results-image-row-height-phone: 6rem;\n@search-width: 44rem;\n// heigh of #search, see detail.less\n@search-height: 7.6rem;\n\n/// Device Size\n/// @desktop > @tablet\n@tablet: 79.75em; // see https://github.com/searxng/searxng/issues/874\n@phone: 50em;\n@small-phone: 35em;\n@ultra-small-phone: 20rem;\n\n/// From style.less\n@stacked-bar-chart: rgb(0, 0, 0);\n\n/// Load fonts from this directory.\n@icon-font-path: \"../../../fonts/\";\n//** File name for all font files.\n@icon-font-name: \"glyphicons-halflings-regular\";\n//** Element ID within SVG icon file.\n@icon-font-svg-id: \"glyphicons_halflingsregular\";\n\n// decoration of the select HTML elements\n@select-light-svg-path: \"../svg/select-light.svg\";\n@select-dark-svg-path: \"../svg/select-dark.svg\";\n",".code-highlight pre {\n overflow: auto;\n background-color: inherit;\n color: inherit;\n border: inherit;\n}\n\n// stylelint-disable no-invalid-position-at-import-rule\n@import \"../generated/pygments.less\";\n","/*\n this file is generated automatically by searxng_extra/update/update_pygments.py\n using pygments version 2.14.0\n*/\n\n.code-highlight .linenos {\n -webkit-touch-callout: none;\n -webkit-user-select: none;\n -khtml-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n cursor: default;\n\n &::selection {\n background: transparent; /* WebKit/Blink Browsers */\n }\n &::-moz-selection {\n background: transparent; /* Gecko Browsers */\n }\n\n margin-right: 8px;\n text-align: right;\n}\n\n.code-highlight pre { line-height: 125%; }\n.code-highlight td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }\n.code-highlight span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }\n.code-highlight td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }\n.code-highlight span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }\n.code-highlight .hll { background-color: #ffffcc }\n.code-highlight { background: #f8f8f8; }\n.code-highlight .c { color: #3D7B7B; font-style: italic } /* Comment */\n.code-highlight .err { border: 1px solid #FF0000 } /* Error */\n.code-highlight .k { color: #008000; font-weight: bold } /* Keyword */\n.code-highlight .o { color: #666666 } /* Operator */\n.code-highlight .ch { color: #3D7B7B; font-style: italic } /* Comment.Hashbang */\n.code-highlight .cm { color: #3D7B7B; font-style: italic } /* Comment.Multiline */\n.code-highlight .cp { color: #9C6500 } /* Comment.Preproc */\n.code-highlight .cpf { color: #3D7B7B; font-style: italic } /* Comment.PreprocFile */\n.code-highlight .c1 { color: #3D7B7B; font-style: italic } /* Comment.Single */\n.code-highlight .cs { color: #3D7B7B; font-style: italic } /* Comment.Special */\n.code-highlight .gd { color: #A00000 } /* Generic.Deleted */\n.code-highlight .ge { font-style: italic } /* Generic.Emph */\n.code-highlight .gr { color: #E40000 } /* Generic.Error */\n.code-highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */\n.code-highlight .gi { color: #008400 } /* Generic.Inserted */\n.code-highlight .go { color: #717171 } /* Generic.Output */\n.code-highlight .gp { color: #000080; font-weight: bold } /* Generic.Prompt */\n.code-highlight .gs { font-weight: bold } /* Generic.Strong */\n.code-highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */\n.code-highlight .gt { color: #0044DD } /* Generic.Traceback */\n.code-highlight .kc { color: #008000; font-weight: bold } /* Keyword.Constant */\n.code-highlight .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */\n.code-highlight .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */\n.code-highlight .kp { color: #008000 } /* Keyword.Pseudo */\n.code-highlight .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */\n.code-highlight .kt { color: #B00040 } /* Keyword.Type */\n.code-highlight .m { color: #666666 } /* Literal.Number */\n.code-highlight .s { color: #BA2121 } /* Literal.String */\n.code-highlight .na { color: #687822 } /* Name.Attribute */\n.code-highlight .nb { color: #008000 } /* Name.Builtin */\n.code-highlight .nc { color: #0000FF; font-weight: bold } /* Name.Class */\n.code-highlight .no { color: #880000 } /* Name.Constant */\n.code-highlight .nd { color: #AA22FF } /* Name.Decorator */\n.code-highlight .ni { color: #717171; font-weight: bold } /* Name.Entity */\n.code-highlight .ne { color: #CB3F38; font-weight: bold } /* Name.Exception */\n.code-highlight .nf { color: #0000FF } /* Name.Function */\n.code-highlight .nl { color: #767600 } /* Name.Label */\n.code-highlight .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */\n.code-highlight .nt { color: #008000; font-weight: bold } /* Name.Tag */\n.code-highlight .nv { color: #19177C } /* Name.Variable */\n.code-highlight .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */\n.code-highlight .w { color: #bbbbbb } /* Text.Whitespace */\n.code-highlight .mb { color: #666666 } /* Literal.Number.Bin */\n.code-highlight .mf { color: #666666 } /* Literal.Number.Float */\n.code-highlight .mh { color: #666666 } /* Literal.Number.Hex */\n.code-highlight .mi { color: #666666 } /* Literal.Number.Integer */\n.code-highlight .mo { color: #666666 } /* Literal.Number.Oct */\n.code-highlight .sa { color: #BA2121 } /* Literal.String.Affix */\n.code-highlight .sb { color: #BA2121 } /* Literal.String.Backtick */\n.code-highlight .sc { color: #BA2121 } /* Literal.String.Char */\n.code-highlight .dl { color: #BA2121 } /* Literal.String.Delimiter */\n.code-highlight .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */\n.code-highlight .s2 { color: #BA2121 } /* Literal.String.Double */\n.code-highlight .se { color: #AA5D1F; font-weight: bold } /* Literal.String.Escape */\n.code-highlight .sh { color: #BA2121 } /* Literal.String.Heredoc */\n.code-highlight .si { color: #A45A77; font-weight: bold } /* Literal.String.Interpol */\n.code-highlight .sx { color: #008000 } /* Literal.String.Other */\n.code-highlight .sr { color: #A45A77 } /* Literal.String.Regex */\n.code-highlight .s1 { color: #BA2121 } /* Literal.String.Single */\n.code-highlight .ss { color: #19177C } /* Literal.String.Symbol */\n.code-highlight .bp { color: #008000 } /* Name.Builtin.Pseudo */\n.code-highlight .fm { color: #0000FF } /* Name.Function.Magic */\n.code-highlight .vc { color: #19177C } /* Name.Variable.Class */\n.code-highlight .vg { color: #19177C } /* Name.Variable.Global */\n.code-highlight .vi { color: #19177C } /* Name.Variable.Instance */\n.code-highlight .vm { color: #19177C } /* Name.Variable.Magic */\n.code-highlight .il { color: #666666 } /* Literal.Number.Integer.Long */\n","// other solution : http://stackoverflow.com/questions/1577598/how-to-hide-parts-of-html-when-javascript-is-disabled/13857783#13857783\n\n// stylelint-disable no-descending-specificity\n\nhtml.no-js .hide_if_nojs {\n display: none;\n}\n\nhtml.js .show_if_nojs {\n display: none;\n}\n\n.center {\n text-align: center;\n}\n\n.right {\n float: right;\n}\n\n.left {\n float: left;\n}\n\n.invisible {\n display: none !important;\n}\n\n.list-unstyled {\n list-style-type: none;\n\n li {\n margin-top: 4px;\n margin-bottom: 4px;\n }\n}\n\n.danger {\n background-color: var(--color-error-background);\n}\n\n.warning {\n background: var(--color-warning-background);\n}\n\n.success {\n background: var(--color-success-background);\n}\n\n.badge {\n display: inline-block;\n color: var(--color-toolkit-badge-font);\n background-color: var(--color-toolkit-badge-background);\n text-align: center;\n white-space: nowrap;\n vertical-align: baseline;\n min-width: 10px;\n padding: 1px 5px;\n border-radius: 5px;\n}\n\n// kbd\nkbd {\n padding: 2px 4px;\n margin: 1px;\n font-size: 90%;\n color: var(--color-toolkit-kbd-font);\n background: var(--color-toolkit-kbd-background);\n}\n\n// table\ntable {\n width: 100%;\n\n &.striped {\n tr {\n border-bottom: 1px solid var(--color-settings-tr-hover);\n }\n }\n}\n\nth {\n padding: 0.4em;\n}\n\ntd {\n padding: 0 4px;\n}\n\ntr {\n &:hover {\n background: var(--color-settings-tr-hover) !important;\n }\n}\n\n// pre\n.pre() {\n display: block;\n font-size: 0.8em;\n word-break: break-all;\n margin: 0.1em;\n user-select: all;\n}\n\ndiv.selectable_url {\n display: block;\n border: 1px solid var(--color-result-search-url-border);\n padding: 4px;\n color: var(--color-result-search-url-font);\n margin: 0.1em;\n overflow: hidden;\n height: 1.2em;\n line-height: 1.2em;\n .rounded-corners-tiny;\n\n pre {\n .pre();\n }\n}\n\n// dialog\n.dialog() {\n position: relative;\n display: flex;\n padding: 1rem;\n margin: 0 0 1em 0;\n border: 1px solid var(--color-toolkit-dialog-border);\n .ltr-text-align-left();\n .rounded-corners;\n\n .close {\n .ltr-float-right();\n position: relative;\n top: -3px;\n color: inherit;\n font-size: 1.5em;\n }\n\n ul,\n ol,\n p {\n margin: 1px 0 0 0;\n }\n\n table {\n width: auto;\n }\n\n tr {\n vertical-align: text-top;\n\n &:hover {\n background: transparent !important;\n }\n }\n\n td {\n padding: 0 1em 0 0;\n padding-top: 0;\n .ltr-padding-right(1rem);\n padding-bottom: 0;\n .ltr-padding-left(0);\n }\n\n h4 {\n margin-top: 0.3em;\n margin-bottom: 0.3em;\n }\n}\n\n.dialog-error {\n .dialog();\n\n color: var(--color-error);\n background: var(--color-error-background);\n border-color: var(--color-error);\n}\n\n.dialog-warning {\n .dialog();\n\n color: var(--color-warning);\n background: var(--color-warning-background);\n border-color: var(--color-warning);\n}\n\n.dialog-modal {\n .dialog();\n\n display: block;\n background: var(--color-toolkit-dialog-background);\n position: fixed;\n top: 50%;\n left: 50%;\n margin: 0 auto;\n transform: translate(-50%, -50%);\n z-index: 10000000;\n\n h3 {\n margin-top: 0;\n }\n}\n\n// btn-collapse\n.btn-collapse {\n cursor: pointer;\n}\n\n//\n.scrollx {\n overflow-x: auto;\n overflow-y: hidden;\n display: block;\n padding: 0;\n margin: 0;\n border: none;\n}\n\n/* -- tabs -- */\n.tabs .tabs > label {\n font-size: 90%;\n}\n\nul.tabs {\n border-bottom: 1px solid var(--color-toolkit-tabs-section-border);\n list-style: none;\n padding-left: 0;\n\n li {\n display: flex;\n }\n}\n\n.tabs {\n display: flex;\n flex-wrap: wrap;\n width: 100%;\n min-width: 100%;\n\n & > * {\n order: 2;\n }\n\n & > input[type=radio] {\n display: none;\n }\n\n & > label,\n & > li > a {\n order: 1;\n padding: 0.7em;\n margin: 0 0.7em;\n letter-spacing: 0.5px;\n text-transform: uppercase;\n border: solid var(--color-toolkit-tabs-label-border);\n border-width: 0 0 2px 0;\n color: unset;\n\n .disable-user-select();\n\n cursor: pointer;\n\n &.active {\n border-bottom: 2px solid var(--color-categories-item-border-selected);\n background: var(--color-categories-item-selected);\n color: var(--color-categories-item-selected-font);\n }\n }\n\n & > label:hover,\n & > li > a:hover {\n border-bottom: 2px solid var(--color-categories-item-border-selected);\n }\n\n & > section {\n min-width: 100%;\n padding: 0.7rem 0;\n box-sizing: border-box;\n border-top: 1px solid var(--color-toolkit-tabs-section-border);\n display: none;\n }\n\n // default selection\n & > label:last-of-type {\n border-bottom: 2px solid var(--color-categories-item-border-selected);\n background: var(--color-categories-item-selected);\n color: var(--color-categories-item-selected-font);\n letter-spacing: -0.1px;\n }\n\n & > section:last-of-type {\n display: block;\n }\n}\n\nhtml body .tabs > input:checked {\n ~ section {\n display: none;\n }\n\n ~ label {\n position: inherited;\n background: inherit;\n border-bottom: 2px solid transparent;\n font-weight: normal;\n color: inherit;\n\n &:hover {\n border-bottom: 2px solid var(--color-categories-item-border-selected);\n }\n }\n\n + label {\n border-bottom: 2px solid var(--color-categories-item-border-selected);\n background: var(--color-categories-item-selected);\n color: var(--color-categories-item-selected-font);\n }\n\n + label + section {\n display: block;\n }\n}\n\n/* -- select -- */\nselect {\n height: 2.4rem;\n margin-top: 0;\n .ltr-margin-right(1rem);\n margin-bottom: 0;\n .ltr-margin-left(0);\n padding: 0.2rem !important;\n color: var(--color-search-font);\n font-size: 0.9rem;\n z-index: 2;\n\n &:hover,\n &:focus {\n cursor: pointer;\n }\n}\n\n@supports ((background-position-x: 100%) and ((appearance: none) or (-webkit-appearance: none) or (-moz-appearance: none))) {\n select {\n appearance: none;\n -webkit-appearance: none;\n -moz-appearance: none;\n border-width: 0 2rem 0 0;\n border-color: transparent;\n background: data-uri('image/svg+xml;charset=UTF-8', @select-light-svg-path) no-repeat;\n background-position-x: calc(100% + 2rem);\n background-size: 2rem;\n background-origin: content-box;\n background-color: var(--color-toolkit-select-background);\n outline: medium none;\n text-overflow: ellipsis;\n .rounded-corners-tiny;\n\n &:hover,\n &:focus {\n background-color: var(--color-toolkit-select-background-hover);\n }\n\n option {\n background-color: var(--color-base-background);\n }\n }\n\n @media (prefers-color-scheme: dark) {\n html.theme-auto select,\n html.theme-dark select {\n background-image: data-uri('image/svg+xml;charset=UTF-8', @select-dark-svg-path);\n }\n }\n\n html.theme-dark select {\n background-image: data-uri('image/svg+xml;charset=UTF-8', @select-dark-svg-path);\n }\n}\n\n/* -- checkbox-onoff -- */\ninput.checkbox-onoff[type=\"checkbox\"] {\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n cursor: pointer;\n display: inline-block;\n width: 2.5em;\n height: 0.7em;\n box-shadow: none !important;\n margin: 0 16px;\n border-radius: 10px;\n position: relative;\n\n /* focus & hover */\n &:focus,\n &:hover {\n outline: none;\n }\n\n &:focus::after {\n content: \"\";\n position: absolute;\n width: 3.5em;\n height: 1.65em;\n border: 1px solid var(--color-btn-background);\n border-radius: 12px;\n box-shadow: var(--color-btn-background) 0 0 3px;\n z-index: 10000;\n top: -0.55em;\n left: -0.6em;\n }\n\n &::before {\n position: absolute;\n top: -0.5em;\n display: flex;\n justify-content: center;\n align-items: center;\n font-size: 0.75em;\n width: 1.875em;\n height: 1.875em;\n border-radius: 50%;\n }\n}\n\n/* check mark\nreversed-checkbox displays unchecked checkedboxes as checked, and vice versa.\nsee https://github.com/searxng/searxng/blob/3408d061aab9abc6168fec9bbc6deab71b236dac/searx/templates/simple/preferences.html#L313\n*/\ninput.checkbox-onoff[type=\"checkbox\"],\n.reversed-checkbox input.checkbox-onoff[type=\"checkbox\"]:checked {\n background: var(--color-toolkit-checkbox-onoff-off-background);\n\n &::before {\n left: -0.5em;\n content: \"\\2715\";\n color: var(--color-toolkit-checkbox-onoff-off-mark-color);\n background: var(--color-toolkit-checkbox-onoff-off-mark-background);\n }\n}\n\ninput.checkbox-onoff[type=\"checkbox\"]:checked,\n.reversed-checkbox input.checkbox-onoff[type=\"checkbox\"] {\n background: var(--color-toolkit-checkbox-onoff-on-background);\n\n &::before {\n left: calc(100% - 1.5em);\n content: \"\\2713\";\n color: var(--color-toolkit-checkbox-onoff-on-mark-color);\n background: var(--color-toolkit-checkbox-onoff-on-mark-background);\n }\n}\n\n/* -- checkbox -- */\n@supports (transform: rotate(-45deg)) {\n input[type=checkbox]:not(.checkbox-onoff) {\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n\n width: 20px;\n height: 20px;\n cursor: pointer;\n position: relative;\n top: 0;\n left: 0;\n border: 2px solid var(--color-toolkit-checkbox-input-border);\n .rounded-corners(0.3em);\n\n &::after {\n content: '';\n width: 9px;\n height: 5px;\n position: absolute;\n top: 3px;\n left: 2px;\n border: 3px solid var(--color-toolkit-checkbox-label-border);\n border-top: none;\n border-right: none;\n background: transparent;\n opacity: 0;\n transform: rotate(-45deg);\n }\n\n &:checked::after {\n border-color: var(--color-toolkit-checkbox-input-border);\n opacity: 1;\n }\n }\n\n // disabled : can't be focused, show only the check mark\n input[type=checkbox][disabled]:not(.checkbox-onoff) {\n border: inherit;\n background-color: transparent !important;\n cursor: inherit;\n }\n\n // if not checked and possible to checked then display a \"light\" check mark on hover\n input.checkbox[type=checkbox]:not(:checked):not([disabled]):not(.checkbox-onoff):hover::after {\n opacity: 0.5;\n }\n}\n\n@media screen and (max-width: @phone) {\n .tabs > label {\n width: 100%;\n }\n}\n\n/* -- loader -- */\n.loader,\n.loader::after {\n border-radius: 50%;\n width: 2em;\n height: 2em;\n}\n\n.loader {\n margin: 1em auto;\n font-size: 10px;\n position: relative;\n text-indent: -9999em;\n border-top: 0.5em solid var(--color-toolkit-loader-border);\n border-right: 0.5em solid var(--color-toolkit-loader-border);\n border-bottom: 0.5em solid var(--color-toolkit-loader-border);\n border-left: 0.5em solid var(--color-toolkit-loader-borderleft);\n -webkit-transform: translateZ(0);\n -ms-transform: translateZ(0);\n transform: translateZ(0);\n -webkit-animation: load8 1.2s infinite linear;\n animation: load8 1.2s infinite linear;\n}\n\n@-webkit-keyframes load8 {\n 0% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n\n 100% {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n\n@keyframes load8 {\n 0% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n\n 100% {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n\n/* -- engine-tooltip -- */\n.engine-tooltip {\n display: none;\n position: absolute;\n padding: 0.5rem 1rem;\n margin: 0 0 0 2rem;\n border: 1px solid var(--color-toolkit-engine-tooltip-border);\n background: var(--color-toolkit-engine-tooltip-background);\n font-size: 14px;\n font-weight: normal;\n z-index: 1000000;\n text-align: left;\n .rounded-corners;\n}\n\nth:hover .engine-tooltip,\ntd:hover .engine-tooltip,\n.engine-tooltip:hover {\n display: inline-block;\n}\n\n/* -- stacked bar chart -- */\n.stacked-bar-chart {\n margin: 0;\n padding: 0 0.125rem 0 4rem;\n width: 100%;\n width: -moz-available;\n width: -webkit-fill-available;\n width: fill;\n flex-direction: row;\n flex-wrap: nowrap;\n align-items: center;\n display: inline-flex;\n}\n\n.stacked-bar-chart-value {\n width: 3rem;\n display: inline-block;\n position: absolute;\n padding: 0 0.5rem;\n text-align: right;\n}\n\n.stacked-bar-chart-base {\n display: flex;\n flex-shrink: 0;\n flex-grow: 0;\n flex-basis: unset;\n}\n\n.stacked-bar-chart-median {\n .stacked-bar-chart-base();\n\n background: var(--color-base-font);\n border: 1px solid rgba(var(--color-base-font-rgb), 0.9);\n padding: 0.3rem 0;\n}\n\n.stacked-bar-chart-rate80 {\n .stacked-bar-chart-base();\n\n background: transparent;\n border: 1px solid rgba(var(--color-base-font-rgb), 0.3);\n padding: 0.3rem 0;\n}\n\n.stacked-bar-chart-rate95 {\n .stacked-bar-chart-base();\n\n background: transparent;\n border-bottom: 1px dotted rgba(var(--color-base-font-rgb), 0.5);\n padding: 0;\n}\n\n.stacked-bar-chart-rate100 {\n .stacked-bar-chart-base();\n\n background: transparent;\n border-left: 1px solid rgba(var(--color-base-font-rgb), 0.9);\n padding: 0.4rem 0;\n width: 1px;\n}\n","// SPDX-License-Identifier: AGPL-3.0-or-later\n\n// Mixins\n.text-size-adjust (@property: 100%) {\n -webkit-text-size-adjust: @property;\n -ms-text-size-adjust: @property;\n -moz-text-size-adjust: @property;\n text-size-adjust: @property;\n}\n\n.rounded-corners (@radius: 10px) {\n border-radius: @radius;\n}\n\n.rounded-right-corners (@radius: 0 10px 10px 0) {\n border-radius: @radius;\n}\n\n.rounded-corners-tiny (@radius: 5px) {\n border-radius: @radius;\n}\n\n// disable user selection\n.disable-user-select () {\n -webkit-touch-callout: none;\n user-select: none;\n}\n\n.show-content-button() {\n padding: 5px 10px;\n .rounded-corners-tiny;\n background: var(--color-show-btn-background);\n color: var(--color-show-btn-font);\n cursor: pointer;\n\n &:hover {\n background: var(--color-btn-background);\n color: var(--color-btn-font);\n }\n}\n",".ltr-left(@offset) {\n right: @offset;\n}\n\n.ltr-right(@offset) {\n left: @offset;\n}\n\n.ltr-margin-right(@offset) {\n margin-left: @offset;\n}\n\n.ltr-margin-left(@offset) {\n margin-right: @offset;\n}\n\n.ltr-border-right(@offset) {\n border-left: @offset;\n}\n\n.ltr-border-left(@offset) {\n border-right: @offset;\n}\n\n.ltr-padding-right(@offset) {\n padding-left: @offset;\n}\n\n.ltr-padding-left(@offset) {\n padding-right: @offset;\n}\n\n.ltr-float-left() {\n float: right;\n}\n\n.ltr-float-right() {\n float: left;\n}\n\n.ltr-text-align-right() {\n text-align: left;\n}\n\n.ltr-rounded-left-corners(@radius) {\n border-radius: 0 @radius @radius 0;\n}\n\n.ltr-rounded-top-left-corners(@radius) {\n border-radius: 0 @radius 0 0;\n}\n\n.ltr-rounded-bottom-left-corners(@radius) {\n border-radius: 0 0 @radius 0;\n}\n\n.ltr-rounded-right-corners(@radius) {\n border-radius: @radius 0 0 @radius;\n}\n\n.ltr-rounded-top-right-corners(@radius) {\n border-radius: @radius 0 0 0;\n}\n\n.ltr-rounded-bottom-right-corners(@radius) {\n border-radius: 0 0 0 @radius;\n}\n\n.ltr-text-align-left() {\n text-align: right;\n}\n\n.ltr-border-left-width(@offset) {\n border-right-width: @offset;\n}\n\n.ltr-border-right-width(@offset) {\n border-left-width: @offset;\n}\n\n.ltr-transform() {\n transform: scale(-1, 1);\n}\n\n@import \"style.less\";\n\n#q,\n#sidebar .infobox dt bdi {\n direction: rtl;\n}\n\n// URL are displayed LTR but align on the right\n#urls {\n direction: initial;\n text-align: right;\n\n .result .url_wrapper {\n justify-content: end;\n }\n}\n\n// Image flexbox\n#main_results div#results.only_template_images #urls {\n direction: rtl;\n}\n\n// Image detail\n#results.image-detail-open article.result-images[data-vim-selected] .detail .result-images-labels p {\n direction: rtl;\n\n &.result-url {\n // Display URL using the LTR direction\n direction: ltr;\n\n span {\n // And put the label on the right\n direction: rtl;\n float: right;\n }\n }\n}\n\n// select HTML element\n@supports ((background-position-x: 100%) and ((appearance: none) or (-webkit-appearance: none) or (-moz-appearance: none))) {\n select {\n border-width: 0 0 0 2rem;\n background-position-x: -2rem;\n }\n}\n\n// vim hotkey helps is not translated\n#vim-hotkeys-help table {\n direction: ltr;\n text-align: left;\n}\n\n// Logo on the right\n#main_preferences h1,\n#main_stats h1 {\n background-position-x: 100%;\n}\n\n// patch of stats.less\n.bar-chart-serie1,\n.bar-chart-serie2 {\n float: right;\n}\n\n.engine-stats .engine-name,\n.engine-stats .engine-score,\n.engine-stats .result-count,\n.engine-stats .response-time,\n.engine-stats .engine-reliability {\n text-align: right;\n}\n","/*! Autocomplete.js v2.6.3 | license MIT | (c) 2017, Baptiste Donaux | http://autocomplete-js.com */\n\n.autocomplete {\n position: absolute;\n width: @search-width;\n max-height: 0;\n overflow-y: hidden;\n .ltr-text-align-left();\n\n .rounded-corners;\n\n &:active,\n &:focus,\n &:hover {\n background-color: var(--color-autocomplete-background);\n }\n\n &:empty {\n display: none;\n }\n\n > ul {\n list-style-type: none;\n margin: 0;\n padding: 0;\n\n > li {\n cursor: pointer;\n padding: 0.5rem 1rem;\n\n &.active,\n &:active,\n &:focus,\n &:hover {\n background-color: var(--color-autocomplete-background-hover);\n\n a:active,\n a:focus,\n a:hover {\n text-decoration: none;\n }\n }\n\n &.locked {\n cursor: inherit;\n }\n }\n }\n\n &.open {\n display: block;\n background-color: var(--color-autocomplete-background);\n color: var(--color-autocomplete-font);\n max-height: 32rem;\n overflow-y: auto;\n z-index: 100;\n margin-top: 3.5rem;\n border-radius: 0.8rem;\n box-shadow: 0 2px 8px rgb(34 38 46 / 25%);\n\n &:empty {\n display: none;\n }\n }\n}\n\n@media screen and (max-width: @phone) {\n .autocomplete {\n width: 100%;\n\n > ul > li {\n padding: 1rem;\n }\n }\n}\n","#main_results #results.image-detail-open.only_template_images {\n width: min(98%, 59.25rem) !important;\n}\n\n#main_results #results.only_template_images.image-detail-open #backToTop {\n .ltr-left(56.75rem) !important;\n .ltr-right(inherit);\n}\n\narticle.result-images .detail {\n display: none;\n}\n\n#results.image-detail-open article.result-images[data-vim-selected] .detail {\n display: flex;\n flex-direction: column;\n position: fixed;\n .ltr-left(60rem);\n .ltr-right(0);\n top: @search-height;\n transition: top 0.064s ease-in 0s;\n bottom: 0;\n background: var(--color-result-detail-background);\n border: 1px solid var(--color-result-detail-background);\n z-index: 10000;\n padding: 4rem 3rem 3rem 3rem;\n\n a.result-images-source {\n display: block;\n flex: 1;\n text-align: left;\n width: 100%;\n border: none;\n text-decoration: none;\n\n img {\n padding: 0;\n margin: 0;\n border: none;\n object-fit: contain;\n width: inherit;\n height: inherit;\n max-width: 100%;\n min-height: inherit;\n max-height: calc(100vh - 25rem - 7rem);\n background: inherit;\n }\n }\n\n .result-images-labels {\n color: var(--color-result-detail-font);\n max-height: 16rem;\n min-height: 16rem;\n\n hr {\n border-top: 1px solid var(--color-result-detail-hr);\n border-bottom: none;\n }\n\n h4 {\n height: 2rem;\n overflow: hidden;\n text-overflow: ellipsis;\n font-size: 0.9rem;\n }\n\n p {\n color: var(--color-result-detail-label-font);\n font-size: 0.9rem;\n\n span {\n display: inline-block;\n width: 12rem;\n }\n }\n\n h4,\n p,\n a {\n .ltr-text-align-left();\n }\n\n p.result-content {\n height: 2rem;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n p.result-url {\n white-space: nowrap;\n overflow-x: hidden;\n text-overflow: ellipsis;\n }\n\n p.result-content:hover,\n p.result-url:hover {\n position: relative;\n overflow: inherit !important;\n background: var(--color-result-detail-background);\n text-overflow: inherit !important;\n }\n\n a,\n a:visited,\n a:hover,\n a:active {\n color: var(--color-result-detail-link);\n }\n\n a:hover {\n text-decoration: underline;\n }\n }\n\n a.result-detail-close {\n top: 1rem;\n .ltr-left(1rem);\n padding: 0.4rem;\n }\n\n a.result-detail-previous {\n top: 1rem;\n .ltr-right(6rem);\n // center the icon by moving it slightly on the left\n padding-top: 0.4rem;\n .ltr-padding-right(0.5rem);\n padding-bottom: 0.4rem;\n .ltr-padding-left(0.3rem);\n }\n\n a.result-detail-next {\n top: 1rem;\n .ltr-right(2rem);\n padding: 0.4rem;\n }\n\n a.result-detail-close,\n a.result-detail-next,\n a.result-detail-previous {\n border-radius: 50%;\n display: block;\n width: 1.5rem;\n height: 1.5rem;\n position: absolute;\n filter: opacity(40%);\n z-index: 2000002;\n\n span {\n display: block;\n width: 1.5rem;\n height: 1.5rem;\n text-align: center;\n }\n }\n\n a.result-detail-next,\n a.result-detail-previous {\n span::before {\n // vertical center small icons\n vertical-align: sub;\n }\n }\n\n a.result-detail-close,\n a.result-detail-close:visited,\n a.result-detail-close:hover,\n a.result-detail-close:active,\n a.result-detail-previous,\n a.result-detail-previous:visited,\n a.result-detail-previous:hover,\n a.result-detail-previous:active,\n a.result-detail-next,\n a.result-detail-next:visited,\n a.result-detail-next:hover,\n a.result-detail-next:active {\n color: var(--color-result-detail-font);\n background: var(--color-result-detail-background);\n border: 1px solid var(--color-result-detail-font);\n }\n\n a.result-detail-close:focus,\n a.result-detail-close:hover,\n a.result-detail-previous:focus,\n a.result-detail-previous:hover,\n a.result-detail-next:focus,\n a.result-detail-next:hover {\n filter: opacity(80%);\n }\n\n .loader {\n position: absolute;\n top: 1rem;\n .ltr-right(50%);\n border-top: 0.5em solid var(--color-result-detail-loader-border);\n border-right: 0.5em solid var(--color-result-detail-loader-border);\n border-bottom: 0.5em solid var(--color-result-detail-loader-border);\n border-left: 0.5em solid var(--color-result-detail-loader-borderleft);\n }\n}\n\n#results.image-detail-open.scrolling article.result-images[data-vim-selected] .detail {\n top: 0;\n\n a.result-images-source img {\n max-height: calc(100vh - 25rem);\n }\n}\n\n@media screen and (max-width: @tablet) {\n #results.image-detail-open article.result-images[data-vim-selected] .detail {\n top: 0;\n .ltr-left(0);\n\n a.result-images-source {\n display: flex;\n flex-direction: column;\n justify-content: center;\n\n img {\n width: 100%;\n max-height: calc(100vh - 24rem);\n }\n }\n\n a.result-detail-next {\n .ltr-right(1rem);\n }\n }\n}\n\n@media screen and (max-width: @phone) {\n #results.image-detail-open article.result-images[data-vim-selected] .detail {\n top: 0;\n .ltr-left(0);\n padding: 1rem;\n\n a.result-images-source img {\n width: 100%;\n max-height: calc(100vh - 20rem);\n margin: 0;\n }\n\n .result-images-labels p span {\n width: inherit;\n .ltr-margin-right(1rem);\n }\n }\n}\n",".dialog-modal {\n animation-name: dialogmodal;\n animation-duration: 0.13s;\n\n @keyframes dialogmodal {\n 0% {\n opacity: 0;\n }\n\n 50% {\n opacity: 0.5;\n transform: translate(-50%, -50%) scale(1.05);\n }\n }\n}\n\ninput.checkbox-onoff[type=\"checkbox\"]::before {\n transition: left 0.25s;\n}\n","iframe[src^=\"https://w.soundcloud.com\"] {\n height: 120px;\n}\n\niframe[src^=\"https://www.deezer.com\"] {\n // The real size is 92px, but 94px are needed to avoid an inner scrollbar of\n // the embedded HTML.\n height: 94px;\n}\n\niframe[src^=\"https://www.mixcloud.com\"] {\n // the embedded player from mixcloud has some quirks: initial there is an\n // issue with an image URL that is blocked since it is an a Cross-Origin\n // request. The alternative text (Mixcloud Logo then cause an\n // scrollbar in the inner of the iframe we can't avoid. Another quirk comes\n // when pressing the play button, somtimes the shown player has an height of\n // 200px, somtimes 250px.\n height: 250px;\n}\n\niframe[src^=\"https://bandcamp.com/EmbeddedPlayer\"] {\n // show playlist\n height: 350px;\n}\n\niframe[src^=\"https://bandcamp.com/EmbeddedPlayer/track\"] {\n // hide playlist\n height: 120px;\n}\n\niframe[src^=\"https://genius.com/songs\"] {\n height: 65px;\n}\n",".info-page {\n code {\n font-family: monospace;\n color: var(--color-doc-code);\n background-color: var(--color-doc-code-background);\n padding: 2px 5px;\n .rounded-corners(5px);\n }\n}\n","// SPDX-License-Identifier: AGPL-3.0-or-later\n.stats_endpoint {\n .github-issue-button {\n display: block;\n padding: 8px 16px;\n font-family: sans-serif;\n font-size: 16px;\n color: white;\n background-color: #238636;\n border: #2ea043;\n border-radius: 10px !important;\n box-shadow: rgba(0, 0, 0, 0) 0 0 0 0;\n }\n\n .github-issue-button:hover {\n background-color: #2ea043;\n }\n\n .issue-hide {\n display: none;\n }\n\n input[type=checked] {\n position: absolute;\n }\n\n label {\n margin: 1rem 1rem 1rem 0;\n }\n\n .step_content {\n margin: 1rem 1rem 1rem 2rem;\n }\n\n .step1,\n .step2 {\n visibility: hidden;\n }\n\n .step1_delay {\n transition: visibility 0s linear 4s;\n }\n\n #step1:checked ~ .step1,\n #step2:checked ~ .step2 {\n visibility: visible;\n }\n}\n","// SPDX-License-Identifier: AGPL-3.0-or-later\n\n.engine-stats {\n border-spacing: 0;\n border-collapse: collapse;\n\n tr td,\n tr th {\n border-bottom: 1px solid var(--color-result-border);\n padding: 0.25rem;\n }\n\n table.engine-tooltip {\n border-spacing: 0;\n border-collapse: collapse;\n\n td,\n th {\n border: none;\n }\n }\n\n .engine-name {\n width: 20rem;\n }\n\n .engine-score {\n width: 7rem;\n text-align: right;\n }\n\n .engine-reliability {\n text-align: right;\n }\n}\n\ntable.engine-error th.engine-error-type,\ntable.engine-error td.engine-error-type,\nfailed-test {\n width: 10rem;\n}\n\n.engine-errors {\n margin-top: 3rem;\n\n table.engine-error {\n max-width: 1280px;\n margin: 1rem 0 3rem 0;\n border: 1px solid var(--color-result-border);\n .ltr-text-align-left();\n\n tr th,\n tr td {\n padding: 0.5rem;\n }\n\n & span.log_parameters {\n border-right: 1px solid solid var(--color-result-border);\n padding: 0 1rem 0 0;\n margin: 0 0 0 0.5rem;\n }\n }\n}\n\n.bar-chart-value {\n width: 3em;\n display: inline-block;\n text-align: right;\n padding-right: 0.5rem;\n}\n\n.bar-chart-graph {\n width: calc(100% - 5rem);\n display: inline-block;\n}\n\n.bar-chart-bar {\n border: 3px solid #5bc0de;\n margin: 1px 0;\n}\n\n.bar-chart-serie1 {\n border: 3px solid #5bc0de;\n margin: 1px 0;\n float: left;\n}\n\n.bar-chart-serie2 {\n border: 3px solid #deb15b;\n margin: 1px 0;\n float: left;\n}\n\n.bar0 {\n width: 0;\n border: 0;\n}\n\n.generate-bar(100);\n\n.generate-bar(@n, @i: 1) when (@i =< @n) {\n .bar@{i} {\n width: (@i * 100% / @n);\n }\n .generate-bar(@n, (@i + 1));\n}\n","// SPDX-License-Identifier: AGPL-3.0-or-later\n\n.osm-map-box {\n height: 300px;\n width: 100%;\n margin: 10px 0;\n}\n","#main_index {\n margin-top: 26vh;\n}\n\n.index {\n text-align: center;\n\n .title {\n background: url('../img/logo.png') no-repeat;\n filter: var(--invert-logo);\n min-height: 4rem;\n margin: 4rem auto;\n background-position: center;\n background-size: contain;\n }\n\n h1 {\n font-size: 4em;\n visibility: hidden;\n }\n\n #search,\n #search_header {\n margin: 0 auto;\n background: inherit;\n border: inherit;\n padding: 0;\n display: block;\n }\n\n .search_filters {\n display: block;\n margin: 1em 0;\n }\n\n .category label {\n padding: 6px 10px;\n border-bottom: initial !important;\n }\n}\n\n@media screen and (max-width: @tablet) {\n div.title {\n h1 {\n font-size: 1em;\n }\n }\n\n #main_index {\n margin-top: 6em;\n }\n}\n","#tab-content-query table td,\n#tab-content-query table th {\n .ltr-text-align-right() !important;\n height: 3rem;\n}\n\n#main_preferences {\n form {\n width: 100%;\n }\n\n fieldset {\n margin: 8px;\n border: none;\n }\n\n legend {\n margin: 0;\n padding: 5px 0 0 0;\n display: block;\n .ltr-float-left();\n width: 300px;\n }\n\n .value {\n margin: 0;\n padding: 0;\n .ltr-float-left();\n width: 15em;\n\n select,\n input[type=\"text\"] {\n font-size: inherit !important;\n margin-top: 0;\n .ltr-margin-right(1rem);\n margin-bottom: 0;\n .ltr-margin-left(0);\n }\n\n select {\n width: 14rem;\n }\n\n input[type=\"text\"] {\n width: 13.25rem;\n color: var(--color-toolkit-input-text-font);\n border: none;\n background: none repeat scroll 0 0 var(--color-toolkit-select-background);\n padding: 0.2rem 0.4rem;\n height: 2rem;\n .rounded-corners-tiny;\n\n &:hover,\n &:focus {\n background-color: var(--color-toolkit-select-background-hover);\n }\n }\n\n select:focus,\n input:focus {\n outline: none;\n box-shadow: 0 0 1px 1px var(--color-btn-background);\n }\n }\n\n .description {\n margin: 0;\n padding: 5px 0 0 0;\n .ltr-float-right();\n width: 50%;\n color: var(--color-settings-engine-description-font);\n font-size: 90%;\n }\n\n table {\n border-collapse: collapse;\n }\n\n table td {\n text-align: center;\n }\n\n .category {\n .ltr-margin-right(0.5rem);\n\n label {\n border: 2px solid transparent;\n padding: 0.2rem 0.4rem;\n .rounded-corners-tiny;\n }\n }\n\n .category input[type=\"checkbox\"]:checked + label {\n border: 2px solid var(--color-categories-item-border-selected);\n }\n\n table.table_engines {\n td {\n height: 3.75rem;\n }\n\n th.name {\n /* stylelint-disable */\n label {\n cursor: pointer;\n }\n /* stylelint-enable */\n\n .engine-tooltip {\n margin-top: 1.8rem;\n .ltr-left(calc((100% - 85em) / 2 + 10em));\n max-width: 40rem;\n\n .engine-description {\n margin-top: 0.5rem;\n }\n }\n }\n\n .engine-group {\n .ltr-text-align-left();\n font-weight: normal;\n background: var(--color-settings-engine-group-background);\n }\n\n .name,\n .shortcut {\n .ltr-text-align-left();\n }\n }\n\n table.cookies {\n width: 100%;\n direction: ltr;\n\n th,\n td {\n text-align: left;\n font-family: monospace;\n font-size: 1rem;\n padding: 0.5em;\n vertical-align: top;\n }\n\n td:first-child {\n word-break: keep-all;\n width: 14rem;\n padding-right: 1rem;\n }\n\n td:last-child {\n word-break: break-all;\n }\n\n & > tbody > tr:nth-child(even) > th,\n & > tbody > tr:nth-child(even) > td {\n background-color: var(--color-settings-tr-hover);\n }\n }\n\n .preferences_back {\n background: none repeat scroll 0 0 var(--color-btn-background);\n color: var(--color-btn-font);\n border: 0 none;\n .rounded-corners;\n\n cursor: pointer;\n display: inline-block;\n margin: 2px 4px;\n padding: 0.7em;\n\n a {\n color: var(--color-settings-return-font);\n }\n\n a::first-letter {\n text-transform: uppercase;\n }\n }\n\n div.selectable_url {\n pre {\n width: 100%;\n }\n }\n}\n\n@media screen and (max-width: @tablet) {\n .preferences_back {\n clear: both;\n }\n\n .engine-tooltip {\n .ltr-left(10em) !important;\n }\n}\n","/*\n* SearXNG, A privacy-respecting, hackable metasearch engine\n*/\n\n#search {\n padding: 0;\n margin: 0;\n}\n\n#search_header {\n padding-top: 1.5em;\n .ltr-padding-right(2em);\n .ltr-padding-left(@results-offset - 3rem);\n margin: 0;\n background: var(--color-header-background);\n border-bottom: 1px solid var(--color-header-border);\n display: grid;\n column-gap: 1.2rem;\n row-gap: 1rem;\n grid-template-columns: 3rem 1fr;\n grid-template-areas:\n \"logo search\"\n \"spacer categories\";\n}\n\n.category {\n display: inline-block;\n position: relative;\n .ltr-margin-right(1rem);\n padding: 0;\n\n input {\n display: none;\n }\n\n label {\n svg {\n padding-right: 0.2rem;\n }\n\n cursor: pointer;\n padding: 0.2rem 0;\n display: inline-flex;\n text-transform: capitalize;\n font-size: 0.9em;\n border-bottom: 2px solid transparent;\n .disable-user-select;\n\n div.category_name {\n margin: auto 0;\n }\n }\n\n input[type=\"checkbox\"]:checked + label {\n color: var(--color-categories-item-selected-font);\n border-bottom: 2px solid var(--color-categories-item-border-selected);\n }\n}\n\n#search_logo {\n filter: var(--invert-logo);\n grid-area: logo;\n display: flex;\n align-items: center;\n justify-content: center;\n\n svg {\n flex: 1;\n width: 30px;\n height: 30px;\n margin: 0.5rem 0 auto 0;\n }\n}\n\n.search_categories {\n grid-area: categories;\n\n .help {\n display: none;\n }\n\n &:hover .help {\n display: block;\n position: absolute;\n background: var(--color-base-background);\n padding: 1rem 0.6rem 0.6rem 0;\n z-index: 1000;\n width: 100%;\n left: -0.1rem;\n }\n}\n\n#search_view {\n grid-area: search;\n}\n\n.search_box {\n border-radius: 0.8rem;\n width: @search-width;\n display: inline-flex;\n flex-direction: row;\n white-space: nowrap;\n box-shadow: var(--color-search-shadow);\n}\n\n#clear_search {\n display: block;\n border-collapse: separate;\n box-sizing: border-box;\n width: 1.8rem;\n margin: 0;\n padding: 0.8rem 0.2rem;\n background: none repeat scroll 0 0 var(--color-search-background);\n border: none;\n outline: none;\n color: var(--color-search-font);\n font-size: 1.1rem;\n z-index: 10000;\n\n &:hover {\n color: var(--color-search-background-hover);\n }\n\n &.empty * {\n display: none;\n }\n}\n\nhtml.no-js #clear_search.hide_if_nojs {\n display: none;\n}\n\n#q,\n#send_search {\n display: block;\n margin: 0;\n padding: 0.8rem;\n background: none repeat scroll 0 0 var(--color-search-background);\n border: none;\n outline: none;\n color: var(--color-search-font);\n font-size: 1.1rem;\n z-index: 2;\n}\n\n#q {\n width: 100%;\n .ltr-padding-left(1rem);\n .ltr-padding-right(0) !important;\n .ltr-rounded-left-corners(0.8rem);\n}\n\n#q::-ms-clear,\n#q::-webkit-search-cancel-button {\n display: none;\n}\n\n#send_search {\n .ltr-rounded-right-corners(0.8rem);\n\n &:hover {\n cursor: pointer;\n background var(--color-search-background-hover);\n color: var(--color-search-background);\n }\n}\n\n.no-js #clear_search,\n.no-js #send_search {\n width: auto !important;\n .ltr-border-left(1px solid var(--color-search-border));\n}\n\n.search_filters {\n margin-top: 0.6rem;\n .ltr-margin-right(0);\n margin-bottom: 0;\n .ltr-margin-left(@results-offset + 0.6rem);\n display: flex;\n overflow-x: auto;\n overscroll-behavior-inline: contain;\n\n select {\n background-color: inherit;\n\n &:hover,\n &:focus {\n color: var(--color-base-font);\n }\n }\n}\n\n@media screen and (max-width: @tablet) {\n #search_header {\n padding: 1.5em @results-tablet-offset 0 @results-tablet-offset;\n column-gap: @results-tablet-offset;\n }\n\n .search_filters {\n margin-top: 0.6rem;\n .ltr-margin-right(0);\n margin-bottom: 0;\n .ltr-margin-left(@results-tablet-offset + 3rem);\n }\n\n #categories {\n font-size: 90%;\n clear: both;\n\n .checkbox_container {\n margin: auto;\n margin-top: 2px;\n }\n }\n}\n\n@media screen and (max-width: @tablet) and (hover: none) {\n #main_index,\n #main_results {\n #categories_container {\n width: max-content;\n\n .category {\n display: inline-block;\n width: auto;\n }\n }\n\n #categories {\n width: 100%;\n .ltr-text-align-left();\n overflow-x: scroll;\n overflow-y: hidden;\n -webkit-overflow-scrolling: touch;\n }\n }\n}\n\n@media screen and (max-width: @phone) {\n #search_header {\n width: 100%;\n margin: 0;\n padding: 0.1rem 0 0 0;\n column-gap: 0;\n row-gap: 0;\n grid-template-areas:\n \"logo search\"\n \"categories categories\";\n }\n\n .search_logo {\n padding: 0;\n }\n\n .search_box {\n width: 98%;\n display: flex;\n margin: 0 auto;\n }\n\n #q {\n width: 100%;\n flex: 1;\n }\n\n .search_filters {\n margin: 0;\n }\n\n .category {\n display: inline-block;\n width: auto;\n margin: 0;\n\n label {\n padding: 1rem !important;\n margin: 0 !important;\n\n svg {\n display: none;\n }\n }\n }\n\n #search_view:focus-within {\n display: block;\n background-color: var(--color-search-background);\n position: absolute;\n top: 0;\n height: 100%;\n width: 100%;\n z-index: 10000;\n\n .search_box {\n border-bottom: 1px solid var(--color-search-border);\n width: 100%;\n border-radius: 0;\n box-shadow: none;\n\n #send_search {\n .ltr-margin-right(0) !important; // Delete when send_search button is disabled on mobile.\n }\n\n * {\n border: none;\n border-radius: 0;\n box-shadow: none;\n }\n }\n }\n\n #main_results #q:placeholder-shown ~ #send_search {\n .ltr-margin-right(2.6rem);\n transition: margin 0.1s;\n }\n}\n\n@media screen and (max-width: @ultra-small-phone) {\n #search_header {\n grid-template-areas:\n \"search search\"\n \"categories categories\";\n }\n\n #search_logo {\n display: none;\n }\n}\n\n#categories {\n .disable-user-select;\n\n &::-webkit-scrollbar {\n width: 0;\n height: 0;\n }\n}\n\n#categories_container {\n position: relative;\n}\n","/*\n--center-page-width overrides the less variable @results-width when the results are centered\nsee the CSS rules for #results in style.less ( grid-template-columns and gap).\n\nIn this file, the --center-page-width values comes from the Oscar theme (Bootstrap 3).\n\nAll rules starts with \".center-aligment-yes #main_results\" to be enabled only\non the /search URL and when the \"center alignment\" preference is enabled.\n*/\n\n@media screen and (min-width: @phone) {\n .center-aligment-yes #main_results {\n --center-page-width: 48rem;\n }\n}\n\n@media screen and (min-width: 62rem) {\n .center-aligment-yes #main_results {\n --center-page-width: 60rem;\n }\n}\n\n@media screen and (min-width: @tablet) {\n .center-aligment-yes #main_results {\n --center-page-width: 73rem;\n }\n}\n\n@media screen and (min-width: @phone) and (max-width: @tablet) {\n // any change must be reset in @media screen and (min-width: @tablet) { ... }\n .center-aligment-yes #main_results {\n #results {\n grid-template-columns: 60% calc(40% - @results-gap);\n margin-left: 0;\n margin-right: 0;\n }\n\n #urls {\n .ltr-margin-left(3rem);\n }\n\n #sidebar {\n .ltr-margin-right(1rem);\n }\n\n #backToTop {\n .ltr-left(calc(60% + 1rem));\n }\n }\n}\n\n@media screen and (min-width: @tablet) {\n .center-aligment-yes #main_results {\n display: flex;\n flex-direction: column;\n align-items: center;\n\n #search {\n width: 100%;\n display: flex;\n flex-direction: column;\n align-items: center;\n }\n\n #search_header {\n grid-template-columns: calc(50% - 4.5rem - var(--center-page-width) / 2) 3rem var(--center-page-width);\n grid-template-areas: \"na logo search\" \"na spacer categories\";\n column-gap: 1.2rem; // from search.less\n width: 100%;\n padding-left: 0;\n padding-right: 0;\n }\n\n .search_filters {\n .ltr-margin-left(0.5rem);\n width: var(--center-page-width);\n }\n\n #results {\n // from style.less (when screen width = @tablet, reset layout from tablet)\n .ltr-margin-right(2rem);\n .ltr-margin-left(@results-offset);\n //\n\n &.only_template_images,\n &.image-detail-open {\n // * grid-template-columns and .ltr-margin-left are set in style.less\n // * With .image-detail-open.only_template_images, the width is set in detail.less\n // * #results is going to be centered because of the #main_results rules,\n // align-self aligns the results on the left or right according to the language.\n align-self: flex-start;\n }\n\n &:not(.only_template_images):not(.image-detail-open) {\n // the gap is set in style.less\n .ltr-margin-left(1.5rem);\n grid-template-columns: calc(var(--center-page-width) - @results-gap - @results-sidebar-width) @results-sidebar-width;\n\n #backToTop {\n .ltr-left(calc(50% - @results-sidebar-width - @results-gap + 1rem + var(--center-page-width) / 2));\n }\n }\n\n .result .content {\n max-width: inherit;\n }\n }\n\n // from style.less (when screen width = @tablet, reset layout from tablet)\n #urls {\n .ltr-margin-left(0);\n }\n\n #sidebar {\n .ltr-margin-right(0);\n }\n }\n}\n","/*\n* SearXNG, A privacy-respecting, hackable metasearch engine\n*\n* To convert \"style.less\" to \"style.css\" run: $make styles\n*/\n\n// stylelint-disable no-descending-specificity\n\n@import (inline) \"../../node_modules/normalize.css/normalize.css\";\n@import \"definitions.less\";\n@import \"mixins.less\";\n@import \"code.less\";\n@import \"toolkit.less\";\n@import \"autocomplete.less\";\n@import \"detail.less\";\n@import \"animations.less\";\n@import \"embedded.less\";\n@import \"info.less\";\n@import \"new_issue.less\";\n@import \"stats.less\";\n@import \"result_templates.less\";\n\n// for index.html template\n@import \"index.less\";\n\n// for preferences.html template\n@import \"preferences.less\";\n\n// Search-Field\n@import \"search.less\";\n\n// to center the results\n@import \"style-center.less\";\n\n// ion-icon\n.ion-icon {\n display: inline-block;\n vertical-align: bottom;\n line-height: 1;\n text-decoration: inherit;\n .ltr-transform();\n}\n\n.ion-icon-small {\n width: 1rem;\n height: 1rem;\n .ion-icon;\n}\n\n.ion-icon-big {\n width: 1.5rem;\n height: 1.5rem;\n .ion-icon;\n}\n\n// Main LESS-Code\nhtml {\n font-family: sans-serif;\n font-size: 0.9em;\n .text-size-adjust;\n\n color: var(--color-base-font);\n background-color: var(--color-base-background);\n padding: 0;\n margin: 0;\n}\n\nbody,\nmain {\n padding: 0;\n margin: 0;\n}\n\nbody {\n display: flex;\n flex-direction: column;\n height: 100vh;\n margin: 0;\n}\n\nmain {\n width: 100%;\n margin-bottom: 2rem;\n flex: 1;\n}\n\n.page_with_header {\n margin: 2em auto;\n width: 85em;\n}\n\nfooter {\n clear: both;\n min-height: 4rem;\n padding: 1rem 0;\n width: 100%;\n text-align: center;\n background-color: var(--color-footer-background);\n border-top: 1px solid var(--color-footer-border);\n overflow: hidden;\n\n p {\n font-size: 0.9em;\n }\n}\n\n.page_with_header .logo {\n height: 40px;\n filter: var(--invert-logo);\n}\n\ninput[type=\"submit\"],\n#results button[type=\"submit\"] {\n padding: 0.7rem;\n display: inline-block;\n background: var(--color-btn-background);\n color: var(--color-btn-font);\n .rounded-corners;\n\n border: 0;\n cursor: pointer;\n}\n\na {\n text-decoration: none;\n color: var(--color-url-font);\n\n &:visited {\n color: var(--color-url-visited-font);\n\n .highlight {\n color: var(--color-url-visited-font);\n }\n }\n}\n\narticle[data-vim-selected] {\n background: var(--color-result-vim-selected);\n .ltr-border-left(0.2rem solid var(--color-result-vim-arrow));\n .ltr-rounded-right-corners(10px);\n}\n\narticle.result-images[data-vim-selected] {\n background: var(--color-result-vim-arrow);\n border: none;\n .rounded-corners;\n\n .image_thumbnail {\n filter: opacity(60%);\n }\n\n span.title,\n span.source {\n color: var(--color-result-image-span-font-selected);\n }\n}\n\narticle[data-vim-selected].category-videos,\narticle[data-vim-selected].category-news,\narticle[data-vim-selected].category-map,\narticle[data-vim-selected].category-music,\narticle[data-vim-selected].category-files,\narticle[data-vim-selected].category-social {\n border: 1px solid var(--color-result-vim-arrow);\n .rounded-corners;\n}\n\n.result {\n margin: @results-margin 0;\n padding: @result-padding;\n .ltr-border-left(0.2rem solid transparent);\n\n h3 {\n font-size: 1.2rem;\n word-wrap: break-word;\n margin: 0.4rem 0 0.4rem 0;\n padding: 0;\n\n a {\n color: var(--color-result-link-font);\n font-weight: normal;\n font-size: 1.1em;\n\n &:visited {\n color: var(--color-result-link-visited-font);\n }\n\n &:focus,\n &:hover {\n text-decoration: underline;\n border: none;\n outline: none;\n }\n }\n }\n\n .cache_link,\n .proxyfied_link {\n font-size: 0.9em !important;\n }\n\n .content,\n .stat {\n font-size: 0.9em;\n margin: 0;\n padding: 0;\n max-width: 54em;\n word-wrap: break-word;\n line-height: 1.24;\n\n .highlight {\n color: var(--color-result-description-highlight-font);\n background: inherit;\n font-weight: bold;\n }\n }\n\n .altlink a {\n font-size: 0.9em;\n margin: 0 10px 0 0;\n .show-content-button;\n }\n\n .codelines {\n .highlight {\n color: inherit;\n background: inherit;\n font-weight: normal;\n }\n }\n\n .url_wrapper {\n display: flex;\n font-size: 1rem;\n color: var(--color-result-url-font);\n flex-wrap: nowrap;\n overflow: hidden;\n flex-direction: row;\n margin: 0;\n padding: 0;\n\n .url_o1 {\n white-space: nowrap;\n flex-shrink: 1;\n }\n\n .url_o1::after {\n content: \" \";\n width: 1ch;\n display: inline-block;\n }\n\n .url_o2 {\n overflow: hidden;\n white-space: nowrap;\n flex-basis: content;\n flex-grow: 0;\n flex-shrink: 1;\n text-align: right;\n\n .url_i2 {\n float: right;\n }\n }\n }\n\n .published_date,\n .result_length,\n .result_author,\n .result_shipping,\n .result_source_country {\n font-size: 0.8em;\n color: var(--color-result-publishdate-font);\n }\n\n .result_price {\n font-size: 1.2em;\n color: var(--color-result-description-highlight-font);\n }\n\n img {\n &.thumbnail {\n .ltr-float-left();\n padding-top: 0.6rem;\n .ltr-padding-right(1rem);\n width: 20rem;\n height: unset; // remove heigth value that was needed for lazy loading\n }\n\n &.image {\n .ltr-float-left();\n padding-top: 0.6rem;\n .ltr-padding-right(1rem);\n width: 7rem;\n max-height: 7rem;\n object-fit: scale-down;\n object-position: right top;\n }\n }\n\n .break {\n clear: both;\n }\n}\n\n.result-paper {\n .attributes {\n display: table;\n border-spacing: 0.125rem;\n\n div {\n display: table-row;\n\n span {\n font-size: 0.9rem;\n margin-top: 0.25rem;\n display: table-cell;\n\n time {\n font-size: 0.9rem;\n }\n }\n\n span:first-child {\n color: var(--color-base-font);\n min-width: 10rem;\n }\n\n span:nth-child(2) {\n color: var(--color-result-publishdate-font);\n }\n }\n }\n\n .content {\n margin-top: 0.25rem;\n }\n\n .comments {\n font-size: 0.9rem;\n margin: 0.25rem 0 0 0;\n padding: 0;\n word-wrap: break-word;\n line-height: 1.24;\n font-style: italic;\n }\n}\n\n.template_group_images {\n display: flex;\n flex-wrap: wrap;\n}\n\n.template_group_images::after {\n flex-grow: 10;\n content: \"\";\n}\n\n.category-videos,\n.category-news,\n.category-map,\n.category-music,\n.category-files,\n.category-social {\n border: 1px solid var(--color-result-border);\n margin: 0 @results-tablet-offset 1rem @results-tablet-offset !important;\n .rounded-corners;\n}\n\n.category-social .image {\n width: auto !important;\n min-width: 48px;\n min-height: 48px;\n padding: 0 5px 25px 0 !important;\n}\n\n.audio-control audio {\n width: 100%;\n padding: 10px 0 0 0;\n}\n\n.embedded-content iframe {\n width: 100%;\n padding: 10px 0 0 0;\n}\n\n.result-videos .content {\n overflow: hidden;\n}\n\n.result-videos .embedded-video iframe {\n width: 100%;\n aspect-ratio: 16 / 9;\n padding: 10px 0 0 0;\n}\n\n@supports not (aspect-ratio: 1 / 1) {\n // support older browsers which do not have aspect-ratio\n // https://caniuse.com/?search=aspect-ratio\n .result-videos .embedded-video iframe {\n height: calc(@results-width * 9 / 16);\n }\n}\n\n.engines {\n .ltr-float-right();\n display: flex;\n flex-wrap: wrap;\n justify-content: flex-end;\n color: var(--color-result-engines-font);\n\n span {\n font-size: smaller;\n margin-top: 0;\n margin-bottom: 0;\n .ltr-margin-right(0.5rem);\n .ltr-margin-left(0);\n }\n}\n\n.small_font {\n font-size: 0.8em;\n}\n\n.highlight {\n color: var(--color-result-link-font-highlight);\n background: inherit;\n}\n\n.empty_element {\n font-style: italic;\n}\n\n.result-images {\n flex-grow: 1;\n padding: 0.5rem 0.5rem 3rem 0.5rem;\n margin: 0.25rem;\n border: none !important;\n height: @results-image-row-height;\n\n & > a {\n position: relative;\n }\n\n img {\n margin: 0;\n padding: 0;\n border: none;\n height: 100%;\n width: 100%;\n object-fit: cover;\n vertical-align: bottom;\n background: var(--color-result-image-background);\n }\n\n span.title,\n span.source {\n display: block;\n position: absolute;\n\n width: 100%;\n font-size: 0.9rem;\n color: var(--color-result-image-span-font);\n padding: 0.5rem 0 0 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n span.source {\n padding: 1.8rem 0 0 0;\n font-size: 0.7rem;\n }\n}\n\n.result-map {\n img.image {\n .ltr-float-right() !important;\n height: 100px !important;\n width: auto !important;\n }\n\n table {\n font-size: 0.9em;\n width: auto;\n border-collapse: separate;\n border-spacing: 0 0.35rem;\n\n th {\n font-weight: inherit;\n width: 17rem;\n vertical-align: top;\n .ltr-text-align-left();\n }\n\n td {\n vertical-align: top;\n .ltr-text-align-left();\n }\n }\n}\n\n.hidden {\n display: none !important;\n}\n\n#results {\n margin-top: 1rem;\n .ltr-margin-right(2rem);\n margin-bottom: 0;\n .ltr-margin-left(@results-offset);\n display: grid;\n grid-template-columns: @results-width @results-sidebar-width;\n grid-template-rows: min-content min-content 1fr min-content;\n gap: 0 @results-gap;\n grid-template-areas:\n \"corrections sidebar\"\n \"answers sidebar\"\n \"urls sidebar\"\n \"pagination sidebar\";\n}\n\n#results #sidebar *:first-child,\n#results #urls *:first-child {\n margin-top: 0;\n}\n\n#urls {\n padding: 0;\n grid-area: urls;\n}\n\n#suggestions {\n .wrapper {\n display: flex;\n flex-flow: column;\n justify-content: flex-end;\n flex-wrap: wrap;\n flex-direction: row;\n\n form {\n display: inline-block;\n flex: 1 1 50%;\n }\n }\n}\n\n#suggestions,\n#infoboxes {\n input {\n padding: 0;\n margin: 3px;\n font-size: 0.9em;\n display: inline-block;\n background: transparent;\n color: var(--color-result-search-url-font);\n cursor: pointer;\n width: calc(100%);\n text-overflow: ellipsis;\n overflow: hidden;\n text-align: left;\n }\n\n input[type=\"submit\"],\n .infobox .url a {\n color: var(--color-result-link-font);\n text-decoration: none;\n font-size: 0.9rem;\n\n &:hover {\n text-decoration: underline;\n }\n }\n}\n\n#corrections {\n grid-area: corrections;\n display: flex;\n flex-flow: row wrap;\n margin: 0 0 1em 0;\n\n h4,\n input[type=\"submit\"] {\n display: inline-block;\n padding: 0.5rem;\n margin: 0.5rem;\n }\n\n input[type=\"submit\"] {\n font-size: 0.8rem;\n .rounded-corners-tiny;\n }\n}\n\n#suggestions .title,\n#search_url .title,\n#apis .title {\n margin: 2em 0 0.5em 0;\n color: var(--color-base-font);\n}\n\n#answers {\n grid-area: answers;\n background: var(--color-answer-background);\n padding: @result-padding;\n margin: 1rem 0;\n margin-top: 0;\n color: var(--color-answer-font);\n .rounded-corners;\n\n h4 {\n display: none;\n }\n\n span {\n overflow-wrap: anywhere;\n }\n}\n\n#infoboxes {\n form {\n min-width: 210px;\n }\n}\n\n#sidebar {\n grid-area: sidebar;\n word-wrap: break-word;\n color: var(--color-sidebar-font);\n\n .infobox {\n margin: 10px 0 10px;\n border: 1px solid var(--color-sidebar-border);\n padding: 1rem;\n font-size: 0.9em;\n .rounded-corners;\n\n h2 {\n margin: 0 0 0.5em 0;\n }\n\n img {\n max-width: 100%;\n max-height: 12em;\n display: block;\n margin: 0 auto;\n padding: 0;\n }\n\n dt {\n font-weight: bold;\n }\n\n .attributes {\n dl {\n margin: 0.5em 0;\n }\n\n dt {\n display: inline;\n margin-top: 0.5em;\n .ltr-margin-right(0.25em);\n margin-bottom: 0.5em;\n .ltr-margin-left(0);\n padding: 0;\n }\n\n dd {\n display: inline;\n margin: 0.5em 0;\n padding: 0;\n }\n }\n\n input {\n font-size: 1em;\n }\n\n br {\n clear: both;\n }\n\n .attributes,\n .urls {\n clear: both;\n }\n }\n}\n\n#search_url {\n margin-top: 8px;\n\n div.selectable_url {\n pre {\n width: 200em;\n }\n }\n}\n\n#links_on_top {\n position: absolute;\n .ltr-right(1.8rem);\n .ltr-text-align-right();\n top: 2.2rem;\n padding: 0;\n border: 0;\n display: flex;\n align-items: center;\n font-size: 1em;\n color: var(--color-search-font);\n\n a {\n display: flex;\n align-items: center;\n margin-left: 1em;\n\n svg {\n font-size: 1.2em;\n .ltr-margin-right(0.125em);\n }\n }\n\n a,\n a:link *,\n a:hover *,\n a:visited *,\n a:active * {\n color: var(--color-search-font);\n }\n}\n\n#pagination {\n grid-area: pagination;\n\n br {\n clear: both;\n }\n}\n\n.numbered_pagination {\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n overflow: hidden;\n}\n\n.page_number {\n background: transparent !important;\n color: var(--color-result-link-font) !important;\n text-decoration: underline;\n}\n\n.page_number_current {\n background: transparent;\n color: var(--color-result-link-visited-font);\n border: none;\n}\n\n#apis {\n margin-top: 8px;\n clear: both;\n}\n\n#backToTop {\n border: 1px solid var(--color-backtotop-border);\n margin: 0;\n padding: 0;\n font-size: 1em;\n background: var(--color-backtotop-background);\n position: fixed;\n bottom: 8rem;\n .ltr-left(@results-width + @results-offset + (0.5 * @results-gap - 1.2em));\n transition: opacity 0.5s;\n opacity: 0;\n .rounded-corners;\n\n a {\n display: block;\n margin: 0;\n padding: 0.7em;\n }\n\n a,\n a:visited,\n a:hover,\n a:active {\n color: var(--color-backtotop-font);\n }\n}\n\n#results.scrolling #backToTop {\n opacity: 1;\n}\n\n/*\n tablet layout\n*/\n\n.results-tablet() {\n #links_on_top {\n span {\n display: none;\n }\n }\n\n .page_with_header {\n margin: 2rem 0.5rem;\n width: auto;\n }\n\n #infoboxes {\n position: inherit;\n max-width: inherit;\n\n .infobox {\n clear: both;\n\n img {\n .ltr-float-left();\n max-width: 10em;\n margin-top: 0.5em;\n .ltr-margin-right(0.5em);\n margin-bottom: 0.5em;\n .ltr-margin-left(0);\n }\n }\n }\n\n #sidebar {\n margin: 0 @results-tablet-offset @results-margin @results-tablet-offset;\n padding: 0;\n float: none;\n border: none;\n width: auto;\n\n input {\n border: 0;\n }\n }\n\n #apis {\n display: none;\n }\n\n #search_url {\n display: none;\n }\n\n .result {\n .thumbnail {\n max-width: 98%;\n }\n\n .url {\n span.url {\n display: block;\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n width: 100%;\n }\n }\n\n .engines {\n .ltr-float-right();\n display: flex;\n flex-wrap: wrap;\n justify-content: flex-end;\n padding: 0 0 3px 0;\n }\n }\n\n .result-images {\n border-bottom: none !important;\n }\n\n .image_result {\n max-width: 98%;\n\n img {\n max-width: 98%;\n }\n }\n\n #backToTop {\n display: none;\n }\n\n #pagination {\n margin: 2rem 0 0 0 !important;\n }\n\n #main_results div#results {\n margin: 1rem auto 0 auto;\n justify-content: center;\n display: grid;\n grid-template-columns: @results-width;\n grid-template-rows: min-content min-content min-content 1fr min-content min-content;\n gap: 0;\n grid-template-areas:\n \"corrections\"\n \"answers\"\n \"sidebar\"\n \"urls\"\n \"pagination\";\n }\n}\n\n@media screen and (max-width: calc(@tablet - 0.5px)) {\n #links_on_top {\n span {\n display: none;\n }\n }\n}\n\n@media screen and (max-width: 52rem) {\n body.results_endpoint {\n #links_on_top {\n .link_on_top_about,\n .link_on_top_donate {\n display: none;\n }\n }\n }\n}\n\n@media screen and (min-width: @phone) and (max-width: @tablet) {\n // when .center-aligment-yes, see style-center.less\n // the media query includes \"min-width: @phone\"\n // because the phone layout includes the tablet layout unconditionally.\n .center-aligment-no {\n .results-tablet();\n }\n}\n\n/* Misc */\n\n#main_results div#results.only_template_images {\n margin: 1rem @results-tablet-offset 0 @results-tablet-offset;\n display: grid;\n grid-template-columns: 100%;\n grid-template-rows: min-content min-content min-content 1fr min-content;\n gap: 0;\n grid-template-areas:\n \"corrections\"\n \"answers\"\n \"sidebar\"\n \"urls\"\n \"pagination\";\n\n #sidebar {\n display: none;\n }\n\n #urls {\n margin: 0;\n display: flex;\n flex-wrap: wrap;\n }\n\n #urls::after {\n flex-grow: 10;\n content: \"\";\n }\n\n #backToTop {\n .ltr-left(auto);\n .ltr-right(1rem);\n }\n\n #pagination {\n .ltr-margin-right(4rem);\n }\n}\n\n/*\n phone layout\n*/\n\n@media screen and (max-width: @phone) {\n // based on the tablet layout\n .results-tablet();\n\n html {\n background-color: var(--color-base-background-mobile);\n }\n\n #main_results div#results {\n grid-template-columns: 100%;\n margin: 1rem 0 0 0;\n }\n\n #links_on_top {\n top: 0.8rem;\n .ltr-right(0.7rem);\n }\n\n #main_index #links_on_top {\n top: 0.5rem;\n .ltr-right(0.5rem);\n }\n\n #results {\n margin: 0;\n padding: 0;\n }\n\n #pagination {\n margin: 2rem 1rem 0 1rem !important;\n }\n\n article[data-vim-selected] {\n border: 1px solid var(--color-result-vim-arrow);\n .rounded-corners;\n }\n\n .result {\n background: var(--color-result-background);\n margin: 1rem 0;\n }\n\n .result-images {\n margin: 0;\n height: @results-image-row-height-phone;\n background: var(--color-base-background-mobile);\n }\n\n .infobox {\n border: none !important;\n background-color: var(--color-sidebar-background);\n }\n\n .numbered_pagination {\n display: none;\n }\n\n .result-paper {\n .attributes {\n display: block;\n\n div {\n display: block;\n\n span {\n display: inline;\n }\n\n span:first-child {\n font-weight: bold;\n }\n\n span:nth-child(2) {\n .ltr-margin-left(0.5rem);\n }\n }\n }\n }\n}\n\n/*\n small-phone layout\n*/\n\n@media screen and (max-width: @small-phone) {\n .result-videos {\n img.thumbnail {\n float: none !important;\n }\n\n .content {\n overflow: inherit;\n }\n }\n}\n\npre code {\n white-space: pre-wrap;\n}\n"]} \ No newline at end of file diff --git a/searx/static/themes/magi/css/searxng.min.css b/searx/static/themes/magi/css/searxng.min.css new file mode 100644 index 000000000..6e51edad7 --- /dev/null +++ b/searx/static/themes/magi/css/searxng.min.css @@ -0,0 +1 @@ +/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none}:root{--color-base-font:#444;--color-base-font-rgb:68,68,68;--color-base-background:#fff;--color-base-background-mobile:#f2f5f8;--color-url-font:#334999;--color-url-visited-font:#9822c3;--color-header-background:#fdfbff;--color-header-border:#ddd;--color-footer-background:#fdfbff;--color-footer-border:#ddd;--color-sidebar-border:#ddd;--color-sidebar-font:#000;--color-sidebar-background:#fff;--color-backtotop-font:#444;--color-backtotop-border:#ddd;--color-backtotop-background:#fff;--color-btn-background:#3050ff;--color-btn-font:#fff;--color-show-btn-background:#bbb;--color-show-btn-font:#000;--color-search-border:#bbb;--color-search-shadow:0 2px 8px rgba(34, 38, 46, 0.25);--color-search-background:#fff;--color-search-font:#222;--color-search-background-hover:#3050ff;--color-error:#db3434;--color-error-background:#fae1e1;--color-warning:#dbba34;--color-warning-background:#faf5e1;--color-success:#42db34;--color-success-background:#e3fae1;--color-categories-item-selected-font:#3050ff;--color-categories-item-border-selected:#3050ff;--color-autocomplete-font:#000;--color-autocomplete-border:#bbb;--color-autocomplete-shadow:0 2px 8px rgba(34, 38, 46, 0.25);--color-autocomplete-background:#fff;--color-autocomplete-background-hover:#e3e3e3;--color-answer-font:#444;--color-answer-background:#fff;--color-result-background:#fff;--color-result-border:#ddd;--color-result-url-font:#000;--color-result-vim-selected:#f7f7f7;--color-result-vim-arrow:#000bbb;--color-result-description-highlight-font:#000;--color-result-link-font:#000bbb;--color-result-link-font-highlight:#000bbb;--color-result-link-visited-font:#9822c3;--color-result-publishdate-font:#777;--color-result-engines-font:#545454;--color-result-search-url-border:#ddd;--color-result-search-url-font:#000;--color-result-image-span-font:#444;--color-result-image-span-font-selected:#fff;--color-result-image-background:#fff;--color-settings-tr-hover:#ebebeb;--color-settings-engine-description-font:#545454;--color-settings-engine-group-background:#0001;--color-result-detail-font:#fff;--color-result-detail-label-font:lightgray;--color-result-detail-background:#242424;--color-result-detail-hr:#555;--color-result-detail-link:#8af;--color-result-detail-loader-border:rgba(255, 255, 255, 0.2);--color-result-detail-loader-borderleft:rgba(0, 0, 0, 0);--color-toolkit-badge-font:#fff;--color-toolkit-badge-background:#545454;--color-toolkit-kbd-font:#fff;--color-toolkit-kbd-background:#000;--color-toolkit-dialog-border:#ddd;--color-toolkit-dialog-background:#fff;--color-toolkit-tabs-label-border:#fff;--color-toolkit-tabs-section-border:#ddd;--color-toolkit-select-background:#e1e1e1;--color-toolkit-select-border:#ddd;--color-toolkit-select-background-hover:#bbb;--color-toolkit-input-text-font:#222;--color-toolkit-checkbox-onoff-off-background:#ddd;--color-toolkit-checkbox-onoff-on-background:#ddd;--color-toolkit-checkbox-onoff-on-mark-background:#3050ff;--color-toolkit-checkbox-onoff-on-mark-color:#fff;--color-toolkit-checkbox-onoff-off-mark-background:#aaa;--color-toolkit-checkbox-onoff-off-mark-color:#fff;--color-toolkit-checkbox-label-background:#ddd;--color-toolkit-checkbox-label-border:#ddd;--color-toolkit-checkbox-input-border:#3050ff;--color-toolkit-engine-tooltip-border:#ddd;--color-toolkit-engine-tooltip-background:#fff;--color-toolkit-loader-border:rgba(0, 0, 0, 0.2);--color-toolkit-loader-borderleft:rgba(255, 255, 255, 0);--color-doc-code:#300;--color-doc-code-background:#fdd;--invert-logo:invert(0%)}@media (prefers-color-scheme:dark){:root.theme-auto{--color-base-font:#bbb;--color-base-font-rgb:187,187,187;--color-base-background:#222428;--color-base-background-mobile:#222428;--color-url-font:#8af;--color-url-visited-font:#c09cd9;--color-header-background:#1e1e22;--color-header-border:#333;--color-footer-background:#1e1e22;--color-footer-border:#333;--color-sidebar-border:#555;--color-sidebar-font:#fff;--color-sidebar-background:#292c34;--color-backtotop-font:#bbb;--color-backtotop-border:#333;--color-backtotop-background:#2b2e36;--color-btn-background:linear-gradient(81.62deg, #2870ea 8.72%, #1b4aef 85.01%);--color-btn-font:#fff;--color-show-btn-background:#555;--color-show-btn-font:#fff;--color-search-border:#555;--color-search-shadow:0 2px 8px rgba(34, 38, 46, 0.25);--color-search-background:#2b2e36;--color-search-font:#fff;--color-search-background-hover:linear-gradient(81.62deg, #2870ea 8.72%, #1b4aef 85.01%);--color-error:#f55b5b;--color-error-background:#390a0a;--color-warning:#f1d561;--color-warning-background:#39300a;--color-success:#79f56e;--color-success-background:#0e390a;--color-categories-item-selected-font:#58f;--color-categories-item-border-selected:#58f;--color-autocomplete-font:#fff;--color-autocomplete-border:#555;--color-autocomplete-shadow:0 2px 8px rgba(34, 38, 46, 0.25);--color-autocomplete-background:#2b2e36;--color-autocomplete-background-hover:#1e1e22;--color-answer-font:#bbb;--color-answer-background:#26292f;--color-result-background:#26292f;--color-result-border:#333;--color-result-url-font:#fff;--color-result-vim-selected:#1f1f23cc;--color-result-vim-arrow:#8af;--color-result-description-highlight-font:#fff;--color-result-link-font:#8af;--color-result-link-font-highlight:#8af;--color-result-link-visited-font:#c09cd9;--color-result-publishdate-font:#888;--color-result-engines-font:#a4a4a4;--color-result-search-url-border:#555;--color-result-search-url-font:#fff;--color-result-detail-font:#fff;--color-result-detail-label-font:lightgray;--color-result-detail-background:#1a1a1c;--color-result-detail-hr:#555;--color-result-detail-link:#8af;--color-result-detail-loader-border:rgba(255, 255, 255, 0.2);--color-result-detail-loader-borderleft:rgba(0, 0, 0, 0);--color-result-image-span-font:#bbb;--color-result-image-span-font-selected:#222;--color-result-image-background:#222;--color-settings-tr-hover:#2c2c32;--color-settings-engine-description-font:#909090;--color-settings-engine-group-background:#1b1b21;--color-toolkit-badge-font:#fff;--color-toolkit-badge-background:#555;--color-toolkit-kbd-font:#000;--color-toolkit-kbd-background:#fff;--color-toolkit-dialog-border:#555;--color-toolkit-dialog-background:#1e1e22;--color-toolkit-tabs-label-border:#222;--color-toolkit-tabs-section-border:#555;--color-toolkit-select-background:#313338;--color-toolkit-select-border:#555;--color-toolkit-select-background-hover:#373b49;--color-toolkit-input-text-font:#fff;--color-toolkit-checkbox-onoff-off-background:#313338;--color-toolkit-checkbox-onoff-on-background:#313338;--color-toolkit-checkbox-onoff-on-mark-background:#58f;--color-toolkit-checkbox-onoff-on-mark-color:#222;--color-toolkit-checkbox-onoff-off-mark-background:#ddd;--color-toolkit-checkbox-onoff-off-mark-color:#222;--color-toolkit-checkbox-label-background:#222;--color-toolkit-checkbox-label-border:#333;--color-toolkit-checkbox-input-border:#58f;--color-toolkit-engine-tooltip-border:#333;--color-toolkit-engine-tooltip-background:#222;--color-toolkit-loader-border:rgba(255, 255, 255, 0.2);--color-toolkit-loader-borderleft:rgba(0, 0, 0, 0);--color-doc-code:#fdd;--color-doc-code-background:#300;--invert-logo:invert(100%)}}:root.theme-dark{--color-base-font:#bbb;--color-base-font-rgb:187,187,187;--color-base-background:#222428;--color-base-background-mobile:#222428;--color-url-font:#8af;--color-url-visited-font:#c09cd9;--color-header-background:#1e1e22;--color-header-border:#333;--color-footer-background:#1e1e22;--color-footer-border:#333;--color-sidebar-border:#555;--color-sidebar-font:#fff;--color-sidebar-background:#292c34;--color-backtotop-font:#bbb;--color-backtotop-border:#333;--color-backtotop-background:#2b2e36;--color-btn-background:linear-gradient(81.62deg, #2870ea 8.72%, #1b4aef 85.01%);--color-btn-font:#fff;--color-show-btn-background:#555;--color-show-btn-font:#fff;--color-search-border:#555;--color-search-shadow:0 2px 8px rgba(34, 38, 46, 0.25);--color-search-background:#2b2e36;--color-search-font:#fff;--color-search-background-hover:linear-gradient(81.62deg, #2870ea 8.72%, #1b4aef 85.01%);--color-error:#f55b5b;--color-error-background:#390a0a;--color-warning:#f1d561;--color-warning-background:#39300a;--color-success:#79f56e;--color-success-background:#0e390a;--color-categories-item-selected-font:#58f;--color-categories-item-border-selected:#58f;--color-autocomplete-font:#fff;--color-autocomplete-border:#555;--color-autocomplete-shadow:0 2px 8px rgba(34, 38, 46, 0.25);--color-autocomplete-background:#2b2e36;--color-autocomplete-background-hover:#1e1e22;--color-answer-font:#bbb;--color-answer-background:#26292f;--color-result-background:#26292f;--color-result-border:#333;--color-result-url-font:#fff;--color-result-vim-selected:#1f1f23cc;--color-result-vim-arrow:#8af;--color-result-description-highlight-font:#fff;--color-result-link-font:#8af;--color-result-link-font-highlight:#8af;--color-result-link-visited-font:#c09cd9;--color-result-publishdate-font:#888;--color-result-engines-font:#a4a4a4;--color-result-search-url-border:#555;--color-result-search-url-font:#fff;--color-result-detail-font:#fff;--color-result-detail-label-font:lightgray;--color-result-detail-background:#1a1a1c;--color-result-detail-hr:#555;--color-result-detail-link:#8af;--color-result-detail-loader-border:rgba(255, 255, 255, 0.2);--color-result-detail-loader-borderleft:rgba(0, 0, 0, 0);--color-result-image-span-font:#bbb;--color-result-image-span-font-selected:#222;--color-result-image-background:#222;--color-settings-tr-hover:#2c2c32;--color-settings-engine-description-font:#909090;--color-settings-engine-group-background:#1b1b21;--color-toolkit-badge-font:#fff;--color-toolkit-badge-background:#555;--color-toolkit-kbd-font:#000;--color-toolkit-kbd-background:#fff;--color-toolkit-dialog-border:#555;--color-toolkit-dialog-background:#1e1e22;--color-toolkit-tabs-label-border:#222;--color-toolkit-tabs-section-border:#555;--color-toolkit-select-background:#313338;--color-toolkit-select-border:#555;--color-toolkit-select-background-hover:#373b49;--color-toolkit-input-text-font:#fff;--color-toolkit-checkbox-onoff-off-background:#313338;--color-toolkit-checkbox-onoff-on-background:#313338;--color-toolkit-checkbox-onoff-on-mark-background:#58f;--color-toolkit-checkbox-onoff-on-mark-color:#222;--color-toolkit-checkbox-onoff-off-mark-background:#ddd;--color-toolkit-checkbox-onoff-off-mark-color:#222;--color-toolkit-checkbox-label-background:#222;--color-toolkit-checkbox-label-border:#333;--color-toolkit-checkbox-input-border:#58f;--color-toolkit-engine-tooltip-border:#333;--color-toolkit-engine-tooltip-background:#222;--color-toolkit-loader-border:rgba(255, 255, 255, 0.2);--color-toolkit-loader-borderleft:rgba(0, 0, 0, 0);--color-doc-code:#fdd;--color-doc-code-background:#300;--invert-logo:invert(100%)}.code-highlight pre{overflow:auto;background-color:inherit;color:inherit;border:inherit}.code-highlight .linenos{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:default;margin-right:8px;text-align:right}.code-highlight .linenos::selection{background:0 0}.code-highlight .linenos::-moz-selection{background:0 0}.code-highlight pre{line-height:125%}.code-highlight td.linenos .normal{color:inherit;background-color:transparent;padding-left:5px;padding-right:5px}.code-highlight span.linenos{color:inherit;background-color:transparent;padding-left:5px;padding-right:5px}.code-highlight td.linenos .special{color:#000;background-color:#ffffc0;padding-left:5px;padding-right:5px}.code-highlight span.linenos.special{color:#000;background-color:#ffffc0;padding-left:5px;padding-right:5px}.code-highlight .hll{background-color:#ffc}.code-highlight{background:#f8f8f8}.code-highlight .c{color:#3D7B7B;font-style:italic}.code-highlight .err{border:1px solid red}.code-highlight .k{color:green;font-weight:700}.code-highlight .o{color:#666}.code-highlight .ch{color:#3D7B7B;font-style:italic}.code-highlight .cm{color:#3D7B7B;font-style:italic}.code-highlight .cp{color:#9C6500}.code-highlight .cpf{color:#3D7B7B;font-style:italic}.code-highlight .c1{color:#3D7B7B;font-style:italic}.code-highlight .cs{color:#3D7B7B;font-style:italic}.code-highlight .gd{color:#A00000}.code-highlight .ge{font-style:italic}.code-highlight .gr{color:#E40000}.code-highlight .gh{color:navy;font-weight:700}.code-highlight .gi{color:#008400}.code-highlight .go{color:#717171}.code-highlight .gp{color:navy;font-weight:700}.code-highlight .gs{font-weight:700}.code-highlight .gu{color:purple;font-weight:700}.code-highlight .gt{color:#04D}.code-highlight .kc{color:green;font-weight:700}.code-highlight .kd{color:green;font-weight:700}.code-highlight .kn{color:green;font-weight:700}.code-highlight .kp{color:green}.code-highlight .kr{color:green;font-weight:700}.code-highlight .kt{color:#B00040}.code-highlight .m{color:#666}.code-highlight .s{color:#BA2121}.code-highlight .na{color:#687822}.code-highlight .nb{color:green}.code-highlight .nc{color:#00F;font-weight:700}.code-highlight .no{color:#800}.code-highlight .nd{color:#A2F}.code-highlight .ni{color:#717171;font-weight:700}.code-highlight .ne{color:#CB3F38;font-weight:700}.code-highlight .nf{color:#00F}.code-highlight .nl{color:#767600}.code-highlight .nn{color:#00F;font-weight:700}.code-highlight .nt{color:green;font-weight:700}.code-highlight .nv{color:#19177C}.code-highlight .ow{color:#A2F;font-weight:700}.code-highlight .w{color:#bbb}.code-highlight .mb{color:#666}.code-highlight .mf{color:#666}.code-highlight .mh{color:#666}.code-highlight .mi{color:#666}.code-highlight .mo{color:#666}.code-highlight .sa{color:#BA2121}.code-highlight .sb{color:#BA2121}.code-highlight .sc{color:#BA2121}.code-highlight .dl{color:#BA2121}.code-highlight .sd{color:#BA2121;font-style:italic}.code-highlight .s2{color:#BA2121}.code-highlight .se{color:#AA5D1F;font-weight:700}.code-highlight .sh{color:#BA2121}.code-highlight .si{color:#A45A77;font-weight:700}.code-highlight .sx{color:green}.code-highlight .sr{color:#A45A77}.code-highlight .s1{color:#BA2121}.code-highlight .ss{color:#19177C}.code-highlight .bp{color:green}.code-highlight .fm{color:#00F}.code-highlight .vc{color:#19177C}.code-highlight .vg{color:#19177C}.code-highlight .vi{color:#19177C}.code-highlight .vm{color:#19177C}.code-highlight .il{color:#666}html.no-js .hide_if_nojs{display:none}html.js .show_if_nojs{display:none}.center{text-align:center}.right{float:right}.left{float:left}.invisible{display:none!important}.list-unstyled{list-style-type:none}.list-unstyled li{margin-top:4px;margin-bottom:4px}.danger{background-color:var(--color-error-background)}.warning{background:var(--color-warning-background)}.success{background:var(--color-success-background)}.badge{display:inline-block;color:var(--color-toolkit-badge-font);background-color:var(--color-toolkit-badge-background);text-align:center;white-space:nowrap;vertical-align:baseline;min-width:10px;padding:1px 5px;border-radius:5px}kbd{padding:2px 4px;margin:1px;font-size:90%;color:var(--color-toolkit-kbd-font);background:var(--color-toolkit-kbd-background)}table{width:100%}table.striped tr{border-bottom:1px solid var(--color-settings-tr-hover)}th{padding:.4em}td{padding:0 4px}tr:hover{background:var(--color-settings-tr-hover)!important}div.selectable_url{display:block;border:1px solid var(--color-result-search-url-border);padding:4px;color:var(--color-result-search-url-font);margin:.1em;overflow:hidden;height:1.2em;line-height:1.2em;border-radius:5px}div.selectable_url pre{display:block;font-size:.8em;word-break:break-all;margin:.1em;user-select:all}.dialog-error{position:relative;display:flex;padding:1rem;margin:0 0 1em 0;border:1px solid var(--color-toolkit-dialog-border);text-align:left;border-radius:10px;color:var(--color-error);background:var(--color-error-background);border-color:var(--color-error)}.dialog-error .close{float:right;position:relative;top:-3px;color:inherit;font-size:1.5em}.dialog-error ol,.dialog-error p,.dialog-error ul{margin:1px 0 0 0}.dialog-error table{width:auto}.dialog-error tr{vertical-align:text-top}.dialog-error tr:hover{background:0 0!important}.dialog-error td{padding:0 1em 0 0;padding-top:0;padding-right:1rem;padding-bottom:0;padding-left:0}.dialog-error h4{margin-top:.3em;margin-bottom:.3em}.dialog-warning{position:relative;display:flex;padding:1rem;margin:0 0 1em 0;border:1px solid var(--color-toolkit-dialog-border);text-align:left;border-radius:10px;color:var(--color-warning);background:var(--color-warning-background);border-color:var(--color-warning)}.dialog-warning .close{float:right;position:relative;top:-3px;color:inherit;font-size:1.5em}.dialog-warning ol,.dialog-warning p,.dialog-warning ul{margin:1px 0 0 0}.dialog-warning table{width:auto}.dialog-warning tr{vertical-align:text-top}.dialog-warning tr:hover{background:0 0!important}.dialog-warning td{padding:0 1em 0 0;padding-top:0;padding-right:1rem;padding-bottom:0;padding-left:0}.dialog-warning h4{margin-top:.3em;margin-bottom:.3em}.dialog-modal{position:relative;display:flex;padding:1rem;margin:0 0 1em 0;border:1px solid var(--color-toolkit-dialog-border);text-align:left;border-radius:10px;display:block;background:var(--color-toolkit-dialog-background);position:fixed;top:50%;left:50%;margin:0 auto;transform:translate(-50%,-50%);z-index:10000000}.dialog-modal .close{float:right;position:relative;top:-3px;color:inherit;font-size:1.5em}.dialog-modal ol,.dialog-modal p,.dialog-modal ul{margin:1px 0 0 0}.dialog-modal table{width:auto}.dialog-modal tr{vertical-align:text-top}.dialog-modal tr:hover{background:0 0!important}.dialog-modal td{padding:0 1em 0 0;padding-top:0;padding-right:1rem;padding-bottom:0;padding-left:0}.dialog-modal h4{margin-top:.3em;margin-bottom:.3em}.dialog-modal h3{margin-top:0}.btn-collapse{cursor:pointer}.scrollx{overflow-x:auto;overflow-y:hidden;display:block;padding:0;margin:0;border:none}.tabs .tabs>label{font-size:90%}ul.tabs{border-bottom:1px solid var(--color-toolkit-tabs-section-border);list-style:none;padding-left:0}ul.tabs li{display:flex}.tabs{display:flex;flex-wrap:wrap;width:100%;min-width:100%}.tabs>*{order:2}.tabs>input[type=radio]{display:none}.tabs>label,.tabs>li>a{order:1;padding:.7em;margin:0 .7em;letter-spacing:.5px;text-transform:uppercase;border:solid var(--color-toolkit-tabs-label-border);border-width:0 0 2px 0;color:unset;-webkit-touch-callout:none;user-select:none;cursor:pointer}.tabs>label.active,.tabs>li>a.active{border-bottom:2px solid var(--color-categories-item-border-selected);background:var(--color-categories-item-selected);color:var(--color-categories-item-selected-font)}.tabs>label:hover,.tabs>li>a:hover{border-bottom:2px solid var(--color-categories-item-border-selected)}.tabs>section{min-width:100%;padding:.7rem 0;box-sizing:border-box;border-top:1px solid var(--color-toolkit-tabs-section-border);display:none}.tabs>label:last-of-type{border-bottom:2px solid var(--color-categories-item-border-selected);background:var(--color-categories-item-selected);color:var(--color-categories-item-selected-font);letter-spacing:-.1px}.tabs>section:last-of-type{display:block}html body .tabs>input:checked~section{display:none}html body .tabs>input:checked~label{position:inherited;background:inherit;border-bottom:2px solid transparent;font-weight:400;color:inherit}html body .tabs>input:checked~label:hover{border-bottom:2px solid var(--color-categories-item-border-selected)}html body .tabs>input:checked+label{border-bottom:2px solid var(--color-categories-item-border-selected);background:var(--color-categories-item-selected);color:var(--color-categories-item-selected-font)}html body .tabs>input:checked+label+section{display:block}select{height:2.4rem;margin-top:0;margin-right:1rem;margin-bottom:0;margin-left:0;padding:.2rem!important;color:var(--color-search-font);font-size:.9rem;z-index:2}select:focus,select:hover{cursor:pointer}@supports ((background-position-x:100%) and ((appearance:none) or (-webkit-appearance:none) or (-moz-appearance:none))){select{appearance:none;-webkit-appearance:none;-moz-appearance:none;border-width:0 2rem 0 0;border-color:transparent;background:url("data:image/svg+xml;charset=UTF-8,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22utf-8%22%3F%3E%0D%0A%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%0D%0A%3Cg%3E%3Cpolygon%20points%3D%22128%2C192%20256%2C320%20384%2C192%22%2F%3E%3C%2Fg%3E%0D%0A%3C%2Fsvg%3E") no-repeat;background-position-x:calc(100% + 2rem);background-size:2rem;background-origin:content-box;background-color:var(--color-toolkit-select-background);outline:medium none;text-overflow:ellipsis;border-radius:5px}select:focus,select:hover{background-color:var(--color-toolkit-select-background-hover)}select option{background-color:var(--color-base-background)}@media (prefers-color-scheme:dark){html.theme-auto select,html.theme-dark select{background-image:url("data:image/svg+xml;charset=UTF-8,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22utf-8%22%3F%3E%0D%0A%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%0D%0A%3Cg%3E%3Cpolygon%20fill%3D%22%23ddd%22%20points%3D%22128%2C192%20256%2C320%20384%2C192%22%2F%3E%3C%2Fg%3E%0D%0A%3C%2Fsvg%3E")}}html.theme-dark select{background-image:url("data:image/svg+xml;charset=UTF-8,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22utf-8%22%3F%3E%0D%0A%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22512%22%20height%3D%22512%22%20viewBox%3D%220%200%20512%20512%22%3E%0D%0A%3Cg%3E%3Cpolygon%20fill%3D%22%23ddd%22%20points%3D%22128%2C192%20256%2C320%20384%2C192%22%2F%3E%3C%2Fg%3E%0D%0A%3C%2Fsvg%3E")}}input.checkbox-onoff[type=checkbox]{-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer;display:inline-block;width:2.5em;height:.7em;box-shadow:none!important;margin:0 16px;border-radius:10px;position:relative}input.checkbox-onoff[type=checkbox]:focus,input.checkbox-onoff[type=checkbox]:hover{outline:0}input.checkbox-onoff[type=checkbox]:focus::after{content:"";position:absolute;width:3.5em;height:1.65em;border:1px solid var(--color-btn-background);border-radius:12px;box-shadow:var(--color-btn-background) 0 0 3px;z-index:10000;top:-.55em;left:-.6em}input.checkbox-onoff[type=checkbox]::before{position:absolute;top:-.5em;display:flex;justify-content:center;align-items:center;font-size:.75em;width:1.875em;height:1.875em;border-radius:50%}.reversed-checkbox input.checkbox-onoff[type=checkbox]:checked,input.checkbox-onoff[type=checkbox]{background:var(--color-toolkit-checkbox-onoff-off-background)}.reversed-checkbox input.checkbox-onoff[type=checkbox]:checked::before,input.checkbox-onoff[type=checkbox]::before{left:-.5em;content:"\2715";color:var(--color-toolkit-checkbox-onoff-off-mark-color);background:var(--color-toolkit-checkbox-onoff-off-mark-background)}.reversed-checkbox input.checkbox-onoff[type=checkbox],input.checkbox-onoff[type=checkbox]:checked{background:var(--color-toolkit-checkbox-onoff-on-background)}.reversed-checkbox input.checkbox-onoff[type=checkbox]::before,input.checkbox-onoff[type=checkbox]:checked::before{left:calc(100% - 1.5em);content:"\2713";color:var(--color-toolkit-checkbox-onoff-on-mark-color);background:var(--color-toolkit-checkbox-onoff-on-mark-background)}@supports (transform:rotate(-45deg)){input[type=checkbox]:not(.checkbox-onoff){-webkit-appearance:none;-moz-appearance:none;appearance:none;width:20px;height:20px;cursor:pointer;position:relative;top:0;left:0;border:2px solid var(--color-toolkit-checkbox-input-border);border-radius:.3em}input[type=checkbox]:not(.checkbox-onoff)::after{content:'';width:9px;height:5px;position:absolute;top:3px;left:2px;border:3px solid var(--color-toolkit-checkbox-label-border);border-top:none;border-right:none;background:0 0;opacity:0;transform:rotate(-45deg)}input[type=checkbox]:not(.checkbox-onoff):checked::after{border-color:var(--color-toolkit-checkbox-input-border);opacity:1}input[type=checkbox][disabled]:not(.checkbox-onoff){border:inherit;background-color:transparent!important;cursor:inherit}input.checkbox[type=checkbox]:not(:checked):not([disabled]):not(.checkbox-onoff):hover::after{opacity:.5}}@media screen and (max-width:50em){.tabs>label{width:100%}}.loader,.loader::after{border-radius:50%;width:2em;height:2em}.loader{margin:1em auto;font-size:10px;position:relative;text-indent:-9999em;border-top:.5em solid var(--color-toolkit-loader-border);border-right:.5em solid var(--color-toolkit-loader-border);border-bottom:.5em solid var(--color-toolkit-loader-border);border-left:.5em solid var(--color-toolkit-loader-borderleft);-webkit-transform:translateZ(0);-ms-transform:translateZ(0);transform:translateZ(0);-webkit-animation:load8 1.2s infinite linear;animation:load8 1.2s infinite linear}@-webkit-keyframes load8{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes load8{0%{-webkit-transform:rotate(0);transform:rotate(0)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.engine-tooltip{display:none;position:absolute;padding:.5rem 1rem;margin:0 0 0 2rem;border:1px solid var(--color-toolkit-engine-tooltip-border);background:var(--color-toolkit-engine-tooltip-background);font-size:14px;font-weight:400;z-index:1000000;text-align:left;border-radius:10px}.engine-tooltip:hover,td:hover .engine-tooltip,th:hover .engine-tooltip{display:inline-block}.stacked-bar-chart{margin:0;padding:0 .125rem 0 4rem;width:100%;width:-moz-available;width:-webkit-fill-available;width:fill;flex-direction:row;flex-wrap:nowrap;align-items:center;display:inline-flex}.stacked-bar-chart-value{width:3rem;display:inline-block;position:absolute;padding:0 .5rem;text-align:right}.stacked-bar-chart-base{display:flex;flex-shrink:0;flex-grow:0;flex-basis:unset}.stacked-bar-chart-median{display:flex;flex-shrink:0;flex-grow:0;flex-basis:unset;background:var(--color-base-font);border:1px solid rgba(var(--color-base-font-rgb),.9);padding:.3rem 0}.stacked-bar-chart-rate80{display:flex;flex-shrink:0;flex-grow:0;flex-basis:unset;background:0 0;border:1px solid rgba(var(--color-base-font-rgb),.3);padding:.3rem 0}.stacked-bar-chart-rate95{display:flex;flex-shrink:0;flex-grow:0;flex-basis:unset;background:0 0;border-bottom:1px dotted rgba(var(--color-base-font-rgb),.5);padding:0}.stacked-bar-chart-rate100{display:flex;flex-shrink:0;flex-grow:0;flex-basis:unset;background:0 0;border-left:1px solid rgba(var(--color-base-font-rgb),.9);padding:.4rem 0;width:1px}/*! Autocomplete.js v2.6.3 | license MIT | (c) 2017, Baptiste Donaux | http://autocomplete-js.com */.autocomplete{position:absolute;width:44rem;max-height:0;overflow-y:hidden;text-align:left;border-radius:10px}.autocomplete:active,.autocomplete:focus,.autocomplete:hover{background-color:var(--color-autocomplete-background)}.autocomplete:empty{display:none}.autocomplete>ul{list-style-type:none;margin:0;padding:0}.autocomplete>ul>li{cursor:pointer;padding:.5rem 1rem}.autocomplete>ul>li.active,.autocomplete>ul>li:active,.autocomplete>ul>li:focus,.autocomplete>ul>li:hover{background-color:var(--color-autocomplete-background-hover)}.autocomplete>ul>li.active a:active,.autocomplete>ul>li.active a:focus,.autocomplete>ul>li.active a:hover,.autocomplete>ul>li:active a:active,.autocomplete>ul>li:active a:focus,.autocomplete>ul>li:active a:hover,.autocomplete>ul>li:focus a:active,.autocomplete>ul>li:focus a:focus,.autocomplete>ul>li:focus a:hover,.autocomplete>ul>li:hover a:active,.autocomplete>ul>li:hover a:focus,.autocomplete>ul>li:hover a:hover{text-decoration:none}.autocomplete>ul>li.locked{cursor:inherit}.autocomplete.open{display:block;background-color:var(--color-autocomplete-background);color:var(--color-autocomplete-font);max-height:32rem;overflow-y:auto;z-index:100;margin-top:3.5rem;border-radius:.8rem;box-shadow:0 2px 8px rgba(34,38,46,.25)}.autocomplete.open:empty{display:none}@media screen and (max-width:50em){.autocomplete{width:100%}.autocomplete>ul>li{padding:1rem}}#main_results #results.image-detail-open.only_template_images{width:min(98%,59.25rem)!important}#main_results #results.only_template_images.image-detail-open #backToTop{left:56.75rem!important;right:inherit}article.result-images .detail{display:none}#results.image-detail-open article.result-images[data-vim-selected] .detail{display:flex;flex-direction:column;position:fixed;left:60rem;right:0;top:7.6rem;transition:top 64ms ease-in 0s;bottom:0;background:var(--color-result-detail-background);border:1px solid var(--color-result-detail-background);z-index:10000;padding:4rem 3rem 3rem 3rem}#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-images-source{display:block;flex:1;text-align:left;width:100%;border:none;text-decoration:none}#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-images-source img{padding:0;margin:0;border:none;object-fit:contain;width:inherit;height:inherit;max-width:100%;min-height:inherit;max-height:calc(100vh - 25rem - 7rem);background:inherit}#results.image-detail-open article.result-images[data-vim-selected] .detail .result-images-labels{color:var(--color-result-detail-font);max-height:16rem;min-height:16rem}#results.image-detail-open article.result-images[data-vim-selected] .detail .result-images-labels hr{border-top:1px solid var(--color-result-detail-hr);border-bottom:none}#results.image-detail-open article.result-images[data-vim-selected] .detail .result-images-labels h4{height:2rem;overflow:hidden;text-overflow:ellipsis;font-size:.9rem}#results.image-detail-open article.result-images[data-vim-selected] .detail .result-images-labels p{color:var(--color-result-detail-label-font);font-size:.9rem}#results.image-detail-open article.result-images[data-vim-selected] .detail .result-images-labels p span{display:inline-block;width:12rem}#results.image-detail-open article.result-images[data-vim-selected] .detail .result-images-labels a,#results.image-detail-open article.result-images[data-vim-selected] .detail .result-images-labels h4,#results.image-detail-open article.result-images[data-vim-selected] .detail .result-images-labels p{text-align:left}#results.image-detail-open article.result-images[data-vim-selected] .detail .result-images-labels p.result-content{height:2rem;overflow:hidden;text-overflow:ellipsis}#results.image-detail-open article.result-images[data-vim-selected] .detail .result-images-labels p.result-url{white-space:nowrap;overflow-x:hidden;text-overflow:ellipsis}#results.image-detail-open article.result-images[data-vim-selected] .detail .result-images-labels p.result-content:hover,#results.image-detail-open article.result-images[data-vim-selected] .detail .result-images-labels p.result-url:hover{position:relative;overflow:inherit!important;background:var(--color-result-detail-background);text-overflow:inherit!important}#results.image-detail-open article.result-images[data-vim-selected] .detail .result-images-labels a,#results.image-detail-open article.result-images[data-vim-selected] .detail .result-images-labels a:active,#results.image-detail-open article.result-images[data-vim-selected] .detail .result-images-labels a:hover,#results.image-detail-open article.result-images[data-vim-selected] .detail .result-images-labels a:visited{color:var(--color-result-detail-link)}#results.image-detail-open article.result-images[data-vim-selected] .detail .result-images-labels a:hover{text-decoration:underline}#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-detail-close{top:1rem;left:1rem;padding:.4rem}#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-detail-previous{top:1rem;right:6rem;padding-top:.4rem;padding-right:.5rem;padding-bottom:.4rem;padding-left:.3rem}#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-detail-next{top:1rem;right:2rem;padding:.4rem}#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-detail-close,#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-detail-next,#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-detail-previous{border-radius:50%;display:block;width:1.5rem;height:1.5rem;position:absolute;filter:opacity(40%);z-index:2000002}#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-detail-close span,#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-detail-next span,#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-detail-previous span{display:block;width:1.5rem;height:1.5rem;text-align:center}#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-detail-next span::before,#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-detail-previous span::before{vertical-align:sub}#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-detail-close,#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-detail-close:active,#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-detail-close:hover,#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-detail-close:visited,#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-detail-next,#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-detail-next:active,#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-detail-next:hover,#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-detail-next:visited,#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-detail-previous,#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-detail-previous:active,#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-detail-previous:hover,#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-detail-previous:visited{color:var(--color-result-detail-font);background:var(--color-result-detail-background);border:1px solid var(--color-result-detail-font)}#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-detail-close:focus,#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-detail-close:hover,#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-detail-next:focus,#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-detail-next:hover,#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-detail-previous:focus,#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-detail-previous:hover{filter:opacity(80%)}#results.image-detail-open article.result-images[data-vim-selected] .detail .loader{position:absolute;top:1rem;right:50%;border-top:.5em solid var(--color-result-detail-loader-border);border-right:.5em solid var(--color-result-detail-loader-border);border-bottom:.5em solid var(--color-result-detail-loader-border);border-left:.5em solid var(--color-result-detail-loader-borderleft)}#results.image-detail-open.scrolling article.result-images[data-vim-selected] .detail{top:0}#results.image-detail-open.scrolling article.result-images[data-vim-selected] .detail a.result-images-source img{max-height:calc(100vh - 25rem)}@media screen and (max-width:79.75em){#results.image-detail-open article.result-images[data-vim-selected] .detail{top:0;left:0}#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-images-source{display:flex;flex-direction:column;justify-content:center}#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-images-source img{width:100%;max-height:calc(100vh - 24rem)}#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-detail-next{right:1rem}}@media screen and (max-width:50em){#results.image-detail-open article.result-images[data-vim-selected] .detail{top:0;left:0;padding:1rem}#results.image-detail-open article.result-images[data-vim-selected] .detail a.result-images-source img{width:100%;max-height:calc(100vh - 20rem);margin:0}#results.image-detail-open article.result-images[data-vim-selected] .detail .result-images-labels p span{width:inherit;margin-right:1rem}}.dialog-modal{animation-name:dialogmodal;animation-duration:.13s}@keyframes dialogmodal{0%{opacity:0}50%{opacity:.5;transform:translate(-50%,-50%) scale(1.05)}}input.checkbox-onoff[type=checkbox]::before{transition:left .25s}iframe[src^="https://w.soundcloud.com"]{height:120px}iframe[src^="https://www.deezer.com"]{height:94px}iframe[src^="https://www.mixcloud.com"]{height:250px}iframe[src^="https://bandcamp.com/EmbeddedPlayer"]{height:350px}iframe[src^="https://bandcamp.com/EmbeddedPlayer/track"]{height:120px}iframe[src^="https://genius.com/songs"]{height:65px}.info-page code{font-family:monospace;color:var(--color-doc-code);background-color:var(--color-doc-code-background);padding:2px 5px;border-radius:5px}.stats_endpoint .github-issue-button{display:block;padding:8px 16px;font-family:sans-serif;font-size:16px;color:#fff;background-color:#238636;border:#2ea043;border-radius:10px!important;box-shadow:transparent 0 0 0 0}.stats_endpoint .github-issue-button:hover{background-color:#2ea043}.stats_endpoint .issue-hide{display:none}.stats_endpoint input[type=checked]{position:absolute}.stats_endpoint label{margin:1rem 1rem 1rem 0}.stats_endpoint .step_content{margin:1rem 1rem 1rem 2rem}.stats_endpoint .step1,.stats_endpoint .step2{visibility:hidden}.stats_endpoint .step1_delay{transition:visibility 0s linear 4s}.stats_endpoint #step1:checked~.step1,.stats_endpoint #step2:checked~.step2{visibility:visible}.engine-stats{border-spacing:0;border-collapse:collapse}.engine-stats tr td,.engine-stats tr th{border-bottom:1px solid var(--color-result-border);padding:.25rem}.engine-stats table.engine-tooltip{border-spacing:0;border-collapse:collapse}.engine-stats table.engine-tooltip td,.engine-stats table.engine-tooltip th{border:none}.engine-stats .engine-name{width:20rem}.engine-stats .engine-score{width:7rem;text-align:right}.engine-stats .engine-reliability{text-align:right}failed-test,table.engine-error td.engine-error-type,table.engine-error th.engine-error-type{width:10rem}.engine-errors{margin-top:3rem}.engine-errors table.engine-error{max-width:1280px;margin:1rem 0 3rem 0;border:1px solid var(--color-result-border);text-align:left}.engine-errors table.engine-error tr td,.engine-errors table.engine-error tr th{padding:.5rem}.engine-errors table.engine-error span.log_parameters{border-right:1px solid solid var(--color-result-border);padding:0 1rem 0 0;margin:0 0 0 .5rem}.bar-chart-value{width:3em;display:inline-block;text-align:right;padding-right:.5rem}.bar-chart-graph{width:calc(100% - 5rem);display:inline-block}.bar-chart-bar{border:3px solid #5bc0de;margin:1px 0}.bar-chart-serie1{border:3px solid #5bc0de;margin:1px 0;float:left}.bar-chart-serie2{border:3px solid #deb15b;margin:1px 0;float:left}.bar0{width:0;border:0}.bar1{width:1%}.bar2{width:2%}.bar3{width:3%}.bar4{width:4%}.bar5{width:5%}.bar6{width:6%}.bar7{width:7%}.bar8{width:8%}.bar9{width:9%}.bar10{width:10%}.bar11{width:11%}.bar12{width:12%}.bar13{width:13%}.bar14{width:14%}.bar15{width:15%}.bar16{width:16%}.bar17{width:17%}.bar18{width:18%}.bar19{width:19%}.bar20{width:20%}.bar21{width:21%}.bar22{width:22%}.bar23{width:23%}.bar24{width:24%}.bar25{width:25%}.bar26{width:26%}.bar27{width:27%}.bar28{width:28%}.bar29{width:29%}.bar30{width:30%}.bar31{width:31%}.bar32{width:32%}.bar33{width:33%}.bar34{width:34%}.bar35{width:35%}.bar36{width:36%}.bar37{width:37%}.bar38{width:38%}.bar39{width:39%}.bar40{width:40%}.bar41{width:41%}.bar42{width:42%}.bar43{width:43%}.bar44{width:44%}.bar45{width:45%}.bar46{width:46%}.bar47{width:47%}.bar48{width:48%}.bar49{width:49%}.bar50{width:50%}.bar51{width:51%}.bar52{width:52%}.bar53{width:53%}.bar54{width:54%}.bar55{width:55%}.bar56{width:56%}.bar57{width:57%}.bar58{width:58%}.bar59{width:59%}.bar60{width:60%}.bar61{width:61%}.bar62{width:62%}.bar63{width:63%}.bar64{width:64%}.bar65{width:65%}.bar66{width:66%}.bar67{width:67%}.bar68{width:68%}.bar69{width:69%}.bar70{width:70%}.bar71{width:71%}.bar72{width:72%}.bar73{width:73%}.bar74{width:74%}.bar75{width:75%}.bar76{width:76%}.bar77{width:77%}.bar78{width:78%}.bar79{width:79%}.bar80{width:80%}.bar81{width:81%}.bar82{width:82%}.bar83{width:83%}.bar84{width:84%}.bar85{width:85%}.bar86{width:86%}.bar87{width:87%}.bar88{width:88%}.bar89{width:89%}.bar90{width:90%}.bar91{width:91%}.bar92{width:92%}.bar93{width:93%}.bar94{width:94%}.bar95{width:95%}.bar96{width:96%}.bar97{width:97%}.bar98{width:98%}.bar99{width:99%}.bar100{width:100%}.osm-map-box{height:300px;width:100%;margin:10px 0}#main_index{margin-top:26vh}.index{text-align:center}.index .title{background:url(../img/logo.png) no-repeat;filter:var(--invert-logo);min-height:4rem;margin:4rem auto;background-position:center;background-size:contain}.index h1{font-size:4em;visibility:hidden}.index #search,.index #search_header{margin:0 auto;background:inherit;border:inherit;padding:0;display:block}.index .search_filters{display:block;margin:1em 0}.index .category label{padding:6px 10px;border-bottom:initial!important}@media screen and (max-width:79.75em){div.title h1{font-size:1em}#main_index{margin-top:6em}}#tab-content-query table td,#tab-content-query table th{text-align:right!important;height:3rem}#main_preferences form{width:100%}#main_preferences fieldset{margin:8px;border:none}#main_preferences legend{margin:0;padding:5px 0 0 0;display:block;float:left;width:300px}#main_preferences .value{margin:0;padding:0;float:left;width:15em}#main_preferences .value input[type=text],#main_preferences .value select{font-size:inherit!important;margin-top:0;margin-right:1rem;margin-bottom:0;margin-left:0}#main_preferences .value select{width:14rem}#main_preferences .value input[type=text]{width:13.25rem;color:var(--color-toolkit-input-text-font);border:none;background:none repeat scroll 0 0 var(--color-toolkit-select-background);padding:.2rem .4rem;height:2rem;border-radius:5px}#main_preferences .value input[type=text]:focus,#main_preferences .value input[type=text]:hover{background-color:var(--color-toolkit-select-background-hover)}#main_preferences .value input:focus,#main_preferences .value select:focus{outline:0;box-shadow:0 0 1px 1px var(--color-btn-background)}#main_preferences .description{margin:0;padding:5px 0 0 0;float:right;width:50%;color:var(--color-settings-engine-description-font);font-size:90%}#main_preferences table{border-collapse:collapse}#main_preferences table td{text-align:center}#main_preferences .category{margin-right:.5rem}#main_preferences .category label{border:2px solid transparent;padding:.2rem .4rem;border-radius:5px}#main_preferences .category input[type=checkbox]:checked+label{border:2px solid var(--color-categories-item-border-selected)}#main_preferences table.table_engines td{height:3.75rem}#main_preferences table.table_engines th.name label{cursor:pointer}#main_preferences table.table_engines th.name .engine-tooltip{margin-top:1.8rem;left:calc((100% - 85em)/ 2 + 10em);max-width:40rem}#main_preferences table.table_engines th.name .engine-tooltip .engine-description{margin-top:.5rem}#main_preferences table.table_engines .engine-group{text-align:left;font-weight:400;background:var(--color-settings-engine-group-background)}#main_preferences table.table_engines .name,#main_preferences table.table_engines .shortcut{text-align:left}#main_preferences table.cookies{width:100%;direction:ltr}#main_preferences table.cookies td,#main_preferences table.cookies th{text-align:left;font-family:monospace;font-size:1rem;padding:.5em;vertical-align:top}#main_preferences table.cookies td:first-child{word-break:keep-all;width:14rem;padding-right:1rem}#main_preferences table.cookies td:last-child{word-break:break-all}#main_preferences table.cookies>tbody>tr:nth-child(even)>td,#main_preferences table.cookies>tbody>tr:nth-child(even)>th{background-color:var(--color-settings-tr-hover)}#main_preferences .preferences_back{background:none repeat scroll 0 0 var(--color-btn-background);color:var(--color-btn-font);border:0 none;border-radius:10px;cursor:pointer;display:inline-block;margin:2px 4px;padding:.7em}#main_preferences .preferences_back a{color:var(--color-settings-return-font)}#main_preferences .preferences_back a::first-letter{text-transform:uppercase}#main_preferences div.selectable_url pre{width:100%}@media screen and (max-width:79.75em){.preferences_back{clear:both}.engine-tooltip{left:10em!important}}#search{padding:0;margin:0}#search_header{padding-top:1.5em;padding-right:2em;padding-left:7rem;margin:0;background:var(--color-header-background);border-bottom:1px solid var(--color-header-border);display:grid;column-gap:1.2rem;row-gap:1rem;grid-template-columns:3rem 1fr;grid-template-areas:"logo search" "spacer categories"}.category{display:inline-block;position:relative;margin-right:1rem;padding:0}.category input{display:none}.category label{cursor:pointer;padding:.2rem 0;display:inline-flex;text-transform:capitalize;font-size:.9em;border-bottom:2px solid transparent;-webkit-touch-callout:none;user-select:none}.category label svg{padding-right:.2rem}.category label div.category_name{margin:auto 0}.category input[type=checkbox]:checked+label{color:var(--color-categories-item-selected-font);border-bottom:2px solid var(--color-categories-item-border-selected)}#search_logo{filter:var(--invert-logo);grid-area:logo;display:flex;align-items:center;justify-content:center}#search_logo svg{flex:1;width:30px;height:30px;margin:.5rem 0 auto 0}.search_categories{grid-area:categories}.search_categories .help{display:none}.search_categories:hover .help{display:block;position:absolute;background:var(--color-base-background);padding:1rem .6rem .6rem 0;z-index:1000;width:100%;left:-.1rem}#search_view{grid-area:search}.search_box{border-radius:.8rem;width:44rem;display:inline-flex;flex-direction:row;white-space:nowrap;box-shadow:var(--color-search-shadow)}#clear_search{display:block;border-collapse:separate;box-sizing:border-box;width:1.8rem;margin:0;padding:.8rem .2rem;background:none repeat scroll 0 0 var(--color-search-background);border:none;outline:0;color:var(--color-search-font);font-size:1.1rem;z-index:10000}#clear_search:hover{color:var(--color-search-background-hover)}#clear_search.empty *{display:none}html.no-js #clear_search.hide_if_nojs{display:none}#q,#send_search{display:block;margin:0;padding:.8rem;background:none repeat scroll 0 0 var(--color-search-background);border:none;outline:0;color:var(--color-search-font);font-size:1.1rem;z-index:2}#q{width:100%;padding-left:1rem;padding-right:0!important;border-radius:.8rem 0 0 .8rem}#q::-ms-clear,#q::-webkit-search-cancel-button{display:none}#send_search{border-radius:0 .8rem .8rem 0}#send_search:hover{cursor:pointer;background-color:var(--color-search-background-hover);color:var(--color-search-background)}.no-js #clear_search,.no-js #send_search{width:auto!important;border-left:1px solid var(--color-search-border)}.search_filters{margin-top:.6rem;margin-right:0;margin-bottom:0;margin-left:10.6rem;display:flex;overflow-x:auto;overscroll-behavior-inline:contain}.search_filters select{background-color:inherit}.search_filters select:focus,.search_filters select:hover{color:var(--color-base-font)}@media screen and (max-width:79.75em){#search_header{padding:1.5em .5rem 0 .5rem;column-gap:.5rem}.search_filters{margin-top:.6rem;margin-right:0;margin-bottom:0;margin-left:3.5rem}#categories{font-size:90%;clear:both}#categories .checkbox_container{margin:auto;margin-top:2px}}@media screen and (max-width:79.75em) and (hover:none){#main_index #categories_container,#main_results #categories_container{width:max-content}#main_index #categories_container .category,#main_results #categories_container .category{display:inline-block;width:auto}#main_index #categories,#main_results #categories{width:100%;text-align:left;overflow-x:scroll;overflow-y:hidden;-webkit-overflow-scrolling:touch}}@media screen and (max-width:50em){#search_header{width:100%;margin:0;padding:.1rem 0 0 0;column-gap:0;row-gap:0;grid-template-areas:"logo search" "categories categories"}.search_logo{padding:0}.search_box{width:98%;display:flex;margin:0 auto}#q{width:100%;flex:1}.search_filters{margin:0}.category{display:inline-block;width:auto;margin:0}.category label{padding:1rem!important;margin:0!important}.category label svg{display:none}#search_view:focus-within{display:block;background-color:var(--color-search-background);position:absolute;top:0;height:100%;width:100%;z-index:10000}#search_view:focus-within .search_box{border-bottom:1px solid var(--color-search-border);width:100%;border-radius:0;box-shadow:none}#search_view:focus-within .search_box #send_search{margin-right:0!important}#search_view:focus-within .search_box *{border:none;border-radius:0;box-shadow:none}#main_results #q:placeholder-shown~#send_search{margin-right:2.6rem;transition:margin .1s}}@media screen and (max-width:20rem){#search_header{grid-template-areas:"search search" "categories categories"}#search_logo{display:none}}#categories{-webkit-touch-callout:none;user-select:none}#categories::-webkit-scrollbar{width:0;height:0}#categories_container{position:relative}@media screen and (min-width:50em){.center-aligment-yes #main_results{--center-page-width:48rem}}@media screen and (min-width:62rem){.center-aligment-yes #main_results{--center-page-width:60rem}}@media screen and (min-width:79.75em){.center-aligment-yes #main_results{--center-page-width:73rem}}@media screen and (min-width:50em) and (max-width:79.75em){.center-aligment-yes #main_results #results{grid-template-columns:60% calc(40% - 5rem);margin-left:0;margin-right:0}.center-aligment-yes #main_results #urls{margin-left:3rem}.center-aligment-yes #main_results #sidebar{margin-right:1rem}.center-aligment-yes #main_results #backToTop{left:calc(60% + 1rem)}}@media screen and (min-width:79.75em){.center-aligment-yes #main_results{display:flex;flex-direction:column;align-items:center}.center-aligment-yes #main_results #search{width:100%;display:flex;flex-direction:column;align-items:center}.center-aligment-yes #main_results #search_header{grid-template-columns:calc(50% - 4.5rem - var(--center-page-width)/ 2) 3rem var(--center-page-width);grid-template-areas:"na logo search" "na spacer categories";column-gap:1.2rem;width:100%;padding-left:0;padding-right:0}.center-aligment-yes #main_results .search_filters{margin-left:.5rem;width:var(--center-page-width)}.center-aligment-yes #main_results #results{margin-right:2rem;margin-left:10rem}.center-aligment-yes #main_results #results.image-detail-open,.center-aligment-yes #main_results #results.only_template_images{align-self:flex-start}.center-aligment-yes #main_results #results:not(.only_template_images):not(.image-detail-open){margin-left:1.5rem;grid-template-columns:calc(var(--center-page-width) - 5rem - 25rem) 25rem}.center-aligment-yes #main_results #results:not(.only_template_images):not(.image-detail-open) #backToTop{left:calc(50% - 25rem - 5rem + 1rem + var(--center-page-width)/ 2)}.center-aligment-yes #main_results #results .result .content{max-width:inherit}.center-aligment-yes #main_results #urls{margin-left:0}.center-aligment-yes #main_results #sidebar{margin-right:0}}.ion-icon{display:inline-block;vertical-align:bottom;line-height:1;text-decoration:inherit;transform:scale(1,1)}.ion-icon-small{width:1rem;height:1rem;display:inline-block;vertical-align:bottom;line-height:1;text-decoration:inherit;transform:scale(1,1)}.ion-icon-big{width:1.5rem;height:1.5rem;display:inline-block;vertical-align:bottom;line-height:1;text-decoration:inherit;transform:scale(1,1)}html{font-family:sans-serif;font-size:.9em;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%;color:var(--color-base-font);background-color:var(--color-base-background);padding:0;margin:0}body,main{padding:0;margin:0}body{display:flex;flex-direction:column;height:100vh;margin:0}main{width:100%;margin-bottom:2rem;flex:1}.page_with_header{margin:2em auto;width:85em}footer{clear:both;min-height:4rem;padding:1rem 0;width:100%;text-align:center;background-color:var(--color-footer-background);border-top:1px solid var(--color-footer-border);overflow:hidden}footer p{font-size:.9em}.page_with_header .logo{height:40px;filter:var(--invert-logo)}#results button[type=submit],input[type=submit]{padding:.7rem;display:inline-block;background:var(--color-btn-background);color:var(--color-btn-font);border-radius:10px;border:0;cursor:pointer}a{text-decoration:none;color:var(--color-url-font)}a:visited{color:var(--color-url-visited-font)}a:visited .highlight{color:var(--color-url-visited-font)}article[data-vim-selected]{background:var(--color-result-vim-selected);border-left:.2rem solid var(--color-result-vim-arrow);border-radius:0 10px 10px 0}article.result-images[data-vim-selected]{background:var(--color-result-vim-arrow);border:none;border-radius:10px}article.result-images[data-vim-selected] .image_thumbnail{filter:opacity(60%)}article.result-images[data-vim-selected] span.source,article.result-images[data-vim-selected] span.title{color:var(--color-result-image-span-font-selected)}article[data-vim-selected].category-files,article[data-vim-selected].category-map,article[data-vim-selected].category-music,article[data-vim-selected].category-news,article[data-vim-selected].category-social,article[data-vim-selected].category-videos{border:1px solid var(--color-result-vim-arrow);border-radius:10px}.result{margin:.125rem 0;padding:1rem;border-left:.2rem solid transparent}.result h3{font-size:1.2rem;word-wrap:break-word;margin:.4rem 0 .4rem 0;padding:0}.result h3 a{color:var(--color-result-link-font);font-weight:400;font-size:1.1em}.result h3 a:visited{color:var(--color-result-link-visited-font)}.result h3 a:focus,.result h3 a:hover{text-decoration:underline;border:none;outline:0}.result .cache_link,.result .proxyfied_link{font-size:.9em!important}.result .content,.result .stat{font-size:.9em;margin:0;padding:0;max-width:54em;word-wrap:break-word;line-height:1.24}.result .content .highlight,.result .stat .highlight{color:var(--color-result-description-highlight-font);background:inherit;font-weight:700}.result .altlink a{font-size:.9em;margin:0 10px 0 0;padding:5px 10px;border-radius:5px;background:var(--color-show-btn-background);color:var(--color-show-btn-font);cursor:pointer}.result .altlink a:hover{background:var(--color-btn-background);color:var(--color-btn-font)}.result .codelines .highlight{color:inherit;background:inherit;font-weight:400}.result .url_wrapper{display:flex;font-size:1rem;color:var(--color-result-url-font);flex-wrap:nowrap;overflow:hidden;flex-direction:row;margin:0;padding:0}.result .url_wrapper .url_o1{white-space:nowrap;flex-shrink:1}.result .url_wrapper .url_o1::after{content:" ";width:1ch;display:inline-block}.result .url_wrapper .url_o2{overflow:hidden;white-space:nowrap;flex-basis:content;flex-grow:0;flex-shrink:1;text-align:right}.result .url_wrapper .url_o2 .url_i2{float:right}.result .published_date,.result .result_author,.result .result_length,.result .result_shipping,.result .result_source_country{font-size:.8em;color:var(--color-result-publishdate-font)}.result .result_price{font-size:1.2em;color:var(--color-result-description-highlight-font)}.result img.thumbnail{float:left;padding-top:.6rem;padding-right:1rem;width:20rem;height:unset}.result img.image{float:left;padding-top:.6rem;padding-right:1rem;width:7rem;max-height:7rem;object-fit:scale-down;object-position:right top}.result .break{clear:both}.result-paper .attributes{display:table;border-spacing:.125rem}.result-paper .attributes div{display:table-row}.result-paper .attributes div span{font-size:.9rem;margin-top:.25rem;display:table-cell}.result-paper .attributes div span time{font-size:.9rem}.result-paper .attributes div span:first-child{color:var(--color-base-font);min-width:10rem}.result-paper .attributes div span:nth-child(2){color:var(--color-result-publishdate-font)}.result-paper .content{margin-top:.25rem}.result-paper .comments{font-size:.9rem;margin:.25rem 0 0 0;padding:0;word-wrap:break-word;line-height:1.24;font-style:italic}.template_group_images{display:flex;flex-wrap:wrap}.template_group_images::after{flex-grow:10;content:""}.category-files,.category-map,.category-music,.category-news,.category-social,.category-videos{border:1px solid var(--color-result-border);margin:0 .5rem 1rem .5rem!important;border-radius:10px}.category-social .image{width:auto!important;min-width:48px;min-height:48px;padding:0 5px 25px 0!important}.audio-control audio{width:100%;padding:10px 0 0 0}.embedded-content iframe{width:100%;padding:10px 0 0 0}.result-videos .content{overflow:hidden}.result-videos .embedded-video iframe{width:100%;aspect-ratio:16/9;padding:10px 0 0 0}@supports not (aspect-ratio:1 / 1){.result-videos .embedded-video iframe{height:calc(45rem * 9 / 16)}}.engines{float:right;display:flex;flex-wrap:wrap;justify-content:flex-end;color:var(--color-result-engines-font)}.engines span{font-size:smaller;margin-top:0;margin-bottom:0;margin-right:.5rem;margin-left:0}.small_font{font-size:.8em}.highlight{color:var(--color-result-link-font-highlight);background:inherit}.empty_element{font-style:italic}.result-images{flex-grow:1;padding:.5rem .5rem 3rem .5rem;margin:.25rem;border:none!important;height:12rem}.result-images>a{position:relative}.result-images img{margin:0;padding:0;border:none;height:100%;width:100%;object-fit:cover;vertical-align:bottom;background:var(--color-result-image-background)}.result-images span.source,.result-images span.title{display:block;position:absolute;width:100%;font-size:.9rem;color:var(--color-result-image-span-font);padding:.5rem 0 0 0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.result-images span.source{padding:1.8rem 0 0 0;font-size:.7rem}.result-map img.image{float:right!important;height:100px!important;width:auto!important}.result-map table{font-size:.9em;width:auto;border-collapse:separate;border-spacing:0 .35rem}.result-map table th{font-weight:inherit;width:17rem;vertical-align:top;text-align:left}.result-map table td{vertical-align:top;text-align:left}.hidden{display:none!important}#results{margin-top:1rem;margin-right:2rem;margin-bottom:0;margin-left:10rem;display:grid;grid-template-columns:45rem 25rem;grid-template-rows:min-content min-content 1fr min-content;gap:0 5rem;grid-template-areas:"corrections sidebar" "answers sidebar" "urls sidebar" "pagination sidebar"}#results #sidebar :first-child,#results #urls :first-child{margin-top:0}#urls{padding:0;grid-area:urls}#suggestions .wrapper{display:flex;flex-flow:column;justify-content:flex-end;flex-wrap:wrap;flex-direction:row}#suggestions .wrapper form{display:inline-block;flex:1 1 50%}#infoboxes input,#suggestions input{padding:0;margin:3px;font-size:.9em;display:inline-block;background:0 0;color:var(--color-result-search-url-font);cursor:pointer;width:calc(100%);text-overflow:ellipsis;overflow:hidden;text-align:left}#infoboxes .infobox .url a,#infoboxes input[type=submit],#suggestions .infobox .url a,#suggestions input[type=submit]{color:var(--color-result-link-font);text-decoration:none;font-size:.9rem}#infoboxes .infobox .url a:hover,#infoboxes input[type=submit]:hover,#suggestions .infobox .url a:hover,#suggestions input[type=submit]:hover{text-decoration:underline}#corrections{grid-area:corrections;display:flex;flex-flow:row wrap;margin:0 0 1em 0}#corrections h4,#corrections input[type=submit]{display:inline-block;padding:.5rem;margin:.5rem}#corrections input[type=submit]{font-size:.8rem;border-radius:5px}#apis .title,#search_url .title,#suggestions .title{margin:2em 0 .5em 0;color:var(--color-base-font)}#answers{grid-area:answers;background:var(--color-answer-background);padding:1rem;margin:1rem 0;margin-top:0;color:var(--color-answer-font);border-radius:10px}#answers h4{display:none}#answers span{overflow-wrap:anywhere}#infoboxes form{min-width:210px}#sidebar{grid-area:sidebar;word-wrap:break-word;color:var(--color-sidebar-font)}#sidebar .infobox{margin:10px 0 10px;border:1px solid var(--color-sidebar-border);padding:1rem;font-size:.9em;border-radius:10px}#sidebar .infobox h2{margin:0 0 .5em 0}#sidebar .infobox img{max-width:100%;max-height:12em;display:block;margin:0 auto;padding:0}#sidebar .infobox dt{font-weight:700}#sidebar .infobox .attributes dl{margin:.5em 0}#sidebar .infobox .attributes dt{display:inline;margin-top:.5em;margin-right:.25em;margin-bottom:.5em;margin-left:0;padding:0}#sidebar .infobox .attributes dd{display:inline;margin:.5em 0;padding:0}#sidebar .infobox input{font-size:1em}#sidebar .infobox br{clear:both}#sidebar .infobox .attributes,#sidebar .infobox .urls{clear:both}#search_url{margin-top:8px}#search_url div.selectable_url pre{width:200em}#links_on_top{position:absolute;right:1.8rem;text-align:right;top:2.2rem;padding:0;border:0;display:flex;align-items:center;font-size:1em;color:var(--color-search-font)}#links_on_top a{display:flex;align-items:center;margin-left:1em}#links_on_top a svg{font-size:1.2em;margin-right:.125em}#links_on_top a,#links_on_top a:active *,#links_on_top a:hover *,#links_on_top a:link *,#links_on_top a:visited *{color:var(--color-search-font)}#pagination{grid-area:pagination}#pagination br{clear:both}.numbered_pagination{display:flex;flex-direction:row;justify-content:center;align-items:center;overflow:hidden}.page_number{background:0 0!important;color:var(--color-result-link-font)!important;text-decoration:underline}.page_number_current{background:0 0;color:var(--color-result-link-visited-font);border:none}#apis{margin-top:8px;clear:both}#backToTop{border:1px solid var(--color-backtotop-border);margin:0;padding:0;font-size:1em;background:var(--color-backtotop-background);position:fixed;bottom:8rem;left:56.3rem;transition:opacity .5s;opacity:0;border-radius:10px}#backToTop a{display:block;margin:0;padding:.7em}#backToTop a,#backToTop a:active,#backToTop a:hover,#backToTop a:visited{color:var(--color-backtotop-font)}#results.scrolling #backToTop{opacity:1}@media screen and (max-width:calc(79.75em - 0.5px)){#links_on_top span{display:none}}@media screen and (max-width:52rem){body.results_endpoint #links_on_top .link_on_top_about,body.results_endpoint #links_on_top .link_on_top_donate{display:none}}@media screen and (min-width:50em) and (max-width:79.75em){.center-aligment-no #links_on_top span{display:none}.center-aligment-no .page_with_header{margin:2rem .5rem;width:auto}.center-aligment-no #infoboxes{position:inherit;max-width:inherit}.center-aligment-no #infoboxes .infobox{clear:both}.center-aligment-no #infoboxes .infobox img{float:left;max-width:10em;margin-top:.5em;margin-right:.5em;margin-bottom:.5em;margin-left:0}.center-aligment-no #sidebar{margin:0 .5rem .125rem .5rem;padding:0;float:none;border:none;width:auto}.center-aligment-no #sidebar input{border:0}.center-aligment-no #apis{display:none}.center-aligment-no #search_url{display:none}.center-aligment-no .result .thumbnail{max-width:98%}.center-aligment-no .result .url span.url{display:block;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;width:100%}.center-aligment-no .result .engines{float:right;display:flex;flex-wrap:wrap;justify-content:flex-end;padding:0 0 3px 0}.center-aligment-no .result-images{border-bottom:none!important}.center-aligment-no .image_result{max-width:98%}.center-aligment-no .image_result img{max-width:98%}.center-aligment-no #backToTop{display:none}.center-aligment-no #pagination{margin:2rem 0 0 0!important}.center-aligment-no #main_results div#results{margin:1rem auto 0 auto;justify-content:center;display:grid;grid-template-columns:45rem;grid-template-rows:min-content min-content min-content 1fr min-content min-content;gap:0;grid-template-areas:"corrections" "answers" "sidebar" "urls" "pagination"}}#main_results div#results.only_template_images{margin:1rem .5rem 0 .5rem;display:grid;grid-template-columns:100%;grid-template-rows:min-content min-content min-content 1fr min-content;gap:0;grid-template-areas:"corrections" "answers" "sidebar" "urls" "pagination"}#main_results div#results.only_template_images #sidebar{display:none}#main_results div#results.only_template_images #urls{margin:0;display:flex;flex-wrap:wrap}#main_results div#results.only_template_images #urls::after{flex-grow:10;content:""}#main_results div#results.only_template_images #backToTop{left:auto;right:1rem}#main_results div#results.only_template_images #pagination{margin-right:4rem}@media screen and (max-width:50em){#links_on_top span{display:none}.page_with_header{margin:2rem .5rem;width:auto}#infoboxes{position:inherit;max-width:inherit}#infoboxes .infobox{clear:both}#infoboxes .infobox img{float:left;max-width:10em;margin-top:.5em;margin-right:.5em;margin-bottom:.5em;margin-left:0}#sidebar{margin:0 .5rem .125rem .5rem;padding:0;float:none;border:none;width:auto}#sidebar input{border:0}#apis{display:none}#search_url{display:none}.result .thumbnail{max-width:98%}.result .url span.url{display:block;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;width:100%}.result .engines{float:right;display:flex;flex-wrap:wrap;justify-content:flex-end;padding:0 0 3px 0}.result-images{border-bottom:none!important}.image_result{max-width:98%}.image_result img{max-width:98%}#backToTop{display:none}#pagination{margin:2rem 0 0 0!important}#main_results div#results{margin:1rem auto 0 auto;justify-content:center;display:grid;grid-template-columns:45rem;grid-template-rows:min-content min-content min-content 1fr min-content min-content;gap:0;grid-template-areas:"corrections" "answers" "sidebar" "urls" "pagination"}html{background-color:var(--color-base-background-mobile)}#main_results div#results{grid-template-columns:100%;margin:1rem 0 0 0}#links_on_top{top:.8rem;right:.7rem}#main_index #links_on_top{top:.5rem;right:.5rem}#results{margin:0;padding:0}#pagination{margin:2rem 1rem 0 1rem!important}article[data-vim-selected]{border:1px solid var(--color-result-vim-arrow);border-radius:10px}.result{background:var(--color-result-background);margin:1rem 0}.result-images{margin:0;height:6rem;background:var(--color-base-background-mobile)}.infobox{border:none!important;background-color:var(--color-sidebar-background)}.numbered_pagination{display:none}.result-paper .attributes{display:block}.result-paper .attributes div{display:block}.result-paper .attributes div span{display:inline}.result-paper .attributes div span:first-child{font-weight:700}.result-paper .attributes div span:nth-child(2){margin-left:.5rem}}@media screen and (max-width:35em){.result-videos img.thumbnail{float:none!important}.result-videos .content{overflow:inherit}}pre code{white-space:pre-wrap}/*# sourceMappingURL=searxng.min.css.map */ \ No newline at end of file diff --git a/searx/static/themes/magi/css/searxng.min.css.map b/searx/static/themes/magi/css/searxng.min.css.map new file mode 100644 index 000000000..bf356fa75 --- /dev/null +++ b/searx/static/themes/magi/css/searxng.min.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["node_modules/normalize.css/normalize.css","$stdin","src/less/definitions.less","src/less/code.less","src/generated/pygments.less","src/less/toolkit.less","src/less/mixins.less","src/less/style-ltr.less","src/less/autocomplete.less","src/less/detail.less","src/less/animations.less","src/less/embedded.less","src/less/info.less","src/less/new_issue.less","src/less/stats.less","src/less/result_templates.less","src/less/index.less","src/less/preferences.less","src/less/search.less","src/less/style-center.less","src/less/style.less"],"names":[],"mappings":"4EAEA,KACE,YAAa,KACb,yBAA0c,KAO5c,KACE,OAAQ,EAKV,KACE,QAAS,MAKX,GACE,UAAW,IACX,OAAQ,MAAO,EAOjB,GACE,WAAY,YACZ,OAAs9B,EACt9B,SAAg+B,QAKl+B,IACE,YAAa,UAAW,UACxB,UAAynC,IAO3nC,EACE,iBAAkB,YAKpB,YACE,cAAe,KACf,gBAA27C,UAC37C,gBAAm8C,UAAU,OAK/8C,EACA,OACE,YAAa,OAKf,KACA,IACA,KACE,YAAa,UAAW,UACxB,UAAypD,IAK3pD,MACE,UAAW,IAKb,IACA,IACE,UAAW,IACX,YAAa,EACb,SAAU,SACV,eAAgB,SAGlB,IACE,OAAQ,OAGV,IACE,IAAK,MAOP,IACE,aAAc,KAOhB,OACA,MACA,SACA,OACA,SACE,YAAa,QACb,UAAgqE,KAChqE,YAA0qE,KAC1qE,OAA6qE,EAK/qE,OACA,MACE,SAAowE,QAKtwE,OACA,OACE,eAA25E,KAM75E,cACA,aACA,cAHA,OAIE,mBAAoB,OAMtB,gCACA,+BACA,gCAHA,yBAIE,aAAc,KACd,QAAS,EAMX,6BACA,4BACA,6BAHA,sBAIE,QAAS,IAAI,OAAO,WAKtB,SACE,QAAS,MAAO,MAAO,OAKzB,OACE,WAAY,WACZ,MAAi4F,QACj4F,QAA24F,MAC34F,UAAq5F,KACr5F,QAA25F,EAC35F,YAAu6F,OAKz6F,SACE,eAAgB,SAKlB,SACE,SAAU,KAKZ,gBACA,aACE,WAAY,WACZ,QAAkpG,EAKppG,yCACA,yCACE,OAAQ,KAKV,cACE,mBAAoB,UACpB,eAAq2G,KAKv2G,yCACE,mBAAoB,KAKtB,6BACE,mBAAoB,OACpB,KAAmjH,QAOrjH,QACE,QAAS,MAKX,QACE,QAAS,UAOX,SACE,QAAS,KAKX,SACE,QAAS,KAIX,MACE,kBAAmB,KACnB,sBAAuB,GAAI,GAAI,GAC/B,wBAAyB,KACzB,+BAAgC,QAChC,iBAAkB,QAClB,yBAA0B,QAC1B,0BAA2B,QAC3B,sBAAuB,KACvB,0BAA2B,QAC3B,sBAAuB,KACvB,uBAAwB,KACxB,qBAAsB,KACtB,2BAA4B,KAC5B,uBAAwB,KACxB,yBAA0B,KAC1B,6BAA8B,KAC9B,uBAAwB,QACxB,iBAAkB,KAClB,4BAA6B,KAC7B,sBAAuB,KACvB,sBAAuB,KACvB,sBAAuB,EAAE,IAAI,IAAI,uBACjC,0BAA2B,KAC3B,oBAAqB,KACrB,gCAAiC,QACjC,cAAe,QACf,yBAA0B,QAC1B,gBAAiB,QACjB,2BAA4B,QAC5B,gBAAiB,QACjB,2BAA4B,QAC5B,sCAAuC,QACvC,wCAAyC,QACzC,0BAA2B,KAC3B,4BAA6B,KAC7B,4BAA6B,EAAE,IAAI,IAAI,uBACvC,gCAAiC,KACjC,sCAAuC,QACvC,oBAAqB,KACrB,0BAA2B,KAC3B,0BAA2B,KAC3B,sBAAuB,KACvB,wBAAyB,KACzB,4BAA6B,QAC7B,yBAA0B,QAC1B,0CAA2C,KAC3C,yBAA0B,QAC1B,mCAAoC,QACpC,iCAAkC,QAClC,gCAAiC,KACjC,4BAA6B,QAC7B,iCAAkC,KAClC,+BAAgC,KAChC,+BAAgC,KAChC,wCAAyC,KACzC,gCAAiC,KACjC,0BAA2B,QAC3B,yCAA0C,QAC1C,yCAA0C,MAC1C,2BAA4B,KAC5B,iCAAkC,UAClC,iCAAkC,QAClC,yBAA0B,KAC1B,2BAA4B,KAC5B,oCAAqC,yBACrC,wCAAyC,iBACzC,2BAA4B,KAC5B,iCAAkC,QAClC,yBAA0B,KAC1B,+BAAgC,KAChC,8BAA+B,KAC/B,kCAAmC,KACnC,kCAAmC,KACnC,oCAAqC,KACrC,kCAAmC,QACnC,8BAA+B,KAC/B,wCAAyC,KACzC,gCAAiC,KACjC,8CAA+C,KAC/C,6CAA8C,KAC9C,kDAAmD,QACnD,6CAA8C,KAC9C,mDAAoD,KACpD,8CAA+C,KAC/C,0CAA2C,KAC3C,sCAAuC,KACvC,sCAAuC,QACvC,sCAAuC,KACvC,0CAA2C,KAC3C,8BAA+B,mBCM/B,kCAAmC,uBACnC,iBAAkB,KAClB,4BAA6B,KAC7B,cAAe,WC/VjB,mCAEE,iBACA,kBAAA,KACA,sBAAA,IAAA,IAAA,IACA,wBAAA,QACA,+BAAA,QACA,iBAAA,KAEA,yBAAA,QACA,0BAAA,QAEA,sBAAA,KACA,0BAAA,QAEA,sBAAA,KACA,uBAAA,KACA,qBAAA,KAEA,2BAAA,QACA,uBAAA,KACA,yBAAA,KAEA,6BAAA,QACA,uBAAA,yDACA,iBAAA,KACA,4BAAA,KAEA,sBAAA,KACA,sBAAA,KACA,sBAAA,EAAA,IAAA,IAAA,uBACA,0BAAA,QACA,oBAAA,KAEA,gCAAA,yDACA,cAAA,QACA,yBAAA,QACA,gBAAA,QACA,2BAAA,QACA,gBAAA,QAEA,2BAAA,QACA,sCAAA,KAEA,wCAAA,KACA,0BAAA,KACA,4BAAA,KACA,4BAAA,EAAA,IAAA,IAAA,uBACA,gCAAA,QAEA,sCAAA,QACA,oBAAA,KAEA,0BAAA,QACA,0BAAA,QACA,sBAAA,KACA,wBAAA,KACA,4BAAA,UACA,yBAAA,KACA,0CAAA,KACA,yBAAA,KACA,mCAAA,KACA,iCAAA,QACA,gCAAA,KACA,4BAAA,QACA,iCAAA,KAEA,+BAAA,KACA,2BAAA,KACA,iCAAA,UAEA,iCAAA,QACA,yBAAA,KACA,2BAAA,KAEA,oCAAA,yBACA,wCAAA,iBACA,+BAAA,KACA,wCAAA,KACA,gCAAA,KACA,0BAAA,QACA,yCAAA,QAEA,yCAAA,QACA,2BAAA,KACA,iCAAA,KACA,yBAAA,KACA,+BAAA,KACA,8BAAA,KACA,kCAAA,QACA,kCAAA,KACA,oCAAA,KACA,kCAAA,QACA,8BAAA,KACA,wCAAA,QACA,gCAAA,KACA,8CAAA,QACA,6CAAA,QACA,kDAAA,KACA,6CAAA,KACA,mDAAA,KACA,8CAAA,KACA,0CAAA,KACA,sCAAA,KACA,sCAAA,KACA,sCAAA,KACA,0CAAA,KACA,8BAAA,yBACA,kCAAA,iBACA,iBAAA,KACA,4BAAA,KDkVE,cAAe,cC7UjB,iBACA,kBAAA,KACA,sBAAA,IAAA,IAAA,IACA,wBAAA,QACA,+BAAA,QACA,iBAAA,KAEA,yBAAA,QACA,0BAAA,QAEA,sBAAA,KACA,0BAAA,QAEA,sBAAA,KACA,uBAAA,KACA,qBAAA,KAEA,2BAAA,QACA,uBAAA,KACA,yBAAA,KAEwB,6BAAA,QACxB,uBAAA,yDACA,iBAAA,KACA,4BAAA,KAEA,sBAAA,KACA,sBAAA,KACA,sBAAA,EAAA,IAAA,IAAA,uBACA,0BAAA,QACA,oBAAA,KAEA,gCAAA,yDACA,cAAA,QACA,yBAAA,QACA,gBAAA,QACA,2BAAA,QACA,gBAAA,QAEA,2BAAA,QACA,sCAAA,KAEA,wCAAA,KACA,0BAAA,KACA,4BAAA,KACA,4BAAA,EAAA,IAAA,IAAA,uBACA,gCAAA,QAEA,sCAAA,QACA,oBAAA,KAEA,0BAAA,QACA,0BAAA,QACA,sBAAA,KACA,wBAAA,KACA,4BAAA,UACA,yBAAA,KACA,0CAAA,KACA,yBAAA,KACA,mCAAA,KACA,iCAAA,QACA,gCAAA,KACA,4BAAA,QACA,iCAAA,KAEA,+BAAA,KACA,2BAAA,KACA,iCAAA,UACA,iCAAA,QACA,yBAAA,KACA,2BAAA,KACA,oCAAA,yBAEA,wCAAA,iBACA,+BAAA,KACA,wCAAA,KAEA,gCAAA,KACA,0BAAA,QACA,yCAAA,QAEA,yCAAA,QACA,2BAAA,KACA,iCAAA,KACA,yBAAA,KACA,+BAAA,KACA,8BAAA,KACA,kCAAA,QACA,kCAAA,KACA,oCAAA,KACA,kCAAA,QACA,8BAAA,KACA,wCAAA,QACA,gCAAA,KACA,8CAAA,QACA,6CAAA,QACA,kDAAA,KACA,6CAAA,KACA,mDAAA,KACA,8CAAA,KACA,0CAAA,KACA,sCAAA,KACA,sCAAA,KACA,sCAAA,KACA,0CAAA,KACA,8BAAA,yBACA,kCAAA,iBACA,iBAAA,KACe,4BAAf,KDkUA,cAAe,aCvTZ,oBAvHH,SAAA,KACA,iBAAA,QACA,MAAA,QACA,OAAA,QAIA,yBACA,sBAAA,KAEA,oBAAA,KACA,mBAAA,KAEA,iBAAA,KACA,gBAAA,KACA,YAAA,KAEA,OAAA,QACA,aAAA,IACA,WAAA,MAGA,oCACA,WAAA,IAIA,yCACA,WAAA,IAIA,oBACA,YAAA,KAEA,mCACA,MAAA,QACA,iBAAA,YAEA,aAAA,IACA,cAAA,IAGA,6BACA,MAAA,QACA,iBAAA,YACA,aAAA,IAEA,cAAA,IAGA,oCACA,MAAA,KACA,iBAAA,QACA,aAAA,IACA,cAAA,IAEA,qCACA,MAAA,KACA,iBAAA,QACA,aAAA,IACA,cAAA,IAEA,qBAEA,iBAAA,KAEA,gBACA,WAAA,QAEA,mBACA,MAAA,QAEA,WAAA,OAIA,qBACA,OAAA,IAAA,MAAA,IAIA,mBACA,MAAA,MACA,YAAA,IAGA,mBACA,MAAA,KAGA,oBACA,MAAA,QACA,WAAA,OAGA,oBACA,MAAA,QACA,WAAA,OAGA,oBACA,MAAA,QAGA,qBACA,MAAA,QACA,WAAA,OCrOc,oBACd,MAAA,QACA,WAAA,OF6oBF,oBACE,MAAO,QACP,WAAY,OG5oBE,oBACZ,MAAA,QAGA,oBACA,WAAA,OAWA,oBACA,MAAA,QAPI,oBHkpBN,MAAO,KACP,YAAa,IAGf,oBACE,MAAO,QAGT,oBG/oBE,MAAc,QAAoE,oBAAmB,MAAA,KHqpBrG,YAAa,IGppBgC,oBAA+B,YAAA,IAC5D,oBAAoB,MAAA,OAAgB,YAAA,IH+pBtD,oBG9pBE,MAAc,KAAkE,oBAAmB,MAAA,MHoqBnG,YAAa,IAGf,oBGrqBE,MAAO,MAAS,YAAA,IACG,oBAAgB,MAAA,MH2qBnC,YAAa,IG1qBQ,oBH8qBrB,MAAO,MG7qBY,oBAAgB,MAAA,MHkrBnC,YAAa,IGjrBM,oBHqrBnB,MAAO,QGprBa,mBAAgB,MAAA,KACtB,mBAAM,MAAA,QH8rBtB,oBG7rBE,MAAc,QHisBhB,oBGhsBE,MAAc,MHosBhB,oBACE,MAAO,KGpsBP,YAAc,IHwsBhB,oBACE,MAAO,KGxsB6B,oBH4sBpC,MAAO,KG3sBa,oBH+sBpB,MAAO,QACP,YAAa,IAGf,oBACE,MAAO,QGltBP,YAAc,IHstBhB,oBGrtBE,MAAc,KHytBhB,oBACE,MAAO,QAGT,oBACE,MAAO,KG5tBP,YAAc,IHguBhB,oBG/tBE,MAAc,MAAM,YAAA,IHouBtB,oBGnuBE,MAAc,QHuuBhB,oBGtuBE,MAAc,KAAM,YAAA,IH2uBtB,mBG1uBE,MAAc,KH8uBhB,oBG7uBE,MAAc,KHivBhB,oBACE,MAAO,KGjvB6B,oBHqvBpC,MAAO,KGpvBa,oBAAgB,MAAA,KACtB,oBAAM,MAAA,KACN,oBAAM,MAAA,QHiwBtB,oBGhwBE,MAAc,QHowBhB,oBGnwBE,MAAc,QHuwBhB,oBGtwBE,MAAc,QH0wBhB,oBGzwBE,MAAc,QAAM,WAAA,OACN,oBAAM,MAAA,QACN,oBAAM,MAAA,QAAgB,YAAA,IACtB,oBAAM,MAAA,QACN,oBAAM,MAAA,QHyxBpB,YAAa,IGxxBO,oBAAgB,MAAA,MACtB,oBAAM,MAAA,QHkyBtB,oBGjyBE,MAAc,QHqyBhB,oBGpyBE,MAAc,QHwyBhB,oBGvyBE,MAAc,MH2yBhB,oBACE,MAAO,KG3yB6B,oBH+yBpC,MAAO,QG9yBa,oBHkzBpB,MAAO,QGjzBa,oBAAgB,MAAA,QACtB,oBAAK,MAAA,QACL,oBAAM,MAAA,KACN,yBAAM,QAAA,KHg0BtB,sBG/zBE,QAAS,KHk0BX,QACE,WAAY,OGl0BQ,OHq0BpB,MAAO,MGp0BT,MAAsB,MAAA,KHy0BtB,WGx0BE,QAAc,eH20BhB,eACE,gBAAiB,KG30BG,kBH80BpB,WAAY,IACZ,cAAe,IG90BK,QHi1BpB,iBAAkB,8BGh1BpB,SAAsB,WAAA,gCHq1BtB,SGp1BE,WAAc,gCAAsB,OHw1BpC,QAAS,aACT,MAAO,gCGx1BO,iBAAA,sCAAM,WAAA,OH21BpB,YAAa,OACb,eAAgB,SG31BhB,UAAc,KAAM,QAAA,IAAA,IAAgB,cAAA,IHg2BtC,IG/1BE,QAAS,IAAK,IAAM,OAAA,IHk2BpB,UAAW,IACX,MAAO,8BGl2BP,WAAc,oCAAsB,MHs2BpC,MAAO,KGr2BO,iBAAM,cAAA,IAAA,MAAA,+BH02BtB,GGz2BE,QAAc,KH42BhB,GACE,QAAS,EAAE,IG52BS,SH+2BpB,WAAY,yCG92BE,mBAAM,QAAA,MHk3BpB,OAAQ,IAAI,MAAM,sCAClB,QAAS,IGl3BT,MAAc,oCAAM,OAAA,KHq3BpB,SAAU,OACV,OAAQ,MGr3BR,YAAc,MAAM,cAAA,IHy3BtB,uBGx3BE,QAAc,MAAM,UAAA,KH23BpB,WAAY,UACZ,OAAQ,KG33BR,YAAc,IH83BhB,cACE,SAAU,SG93BV,QAAS,KAAW,QAAA,KHi4BpB,OAAQ,EAAE,EAAE,IAAI,EAChB,OAAQ,IAAI,MAAM,mCGj4BlB,WAAc,KAAM,cAAA,KHo4BpB,MAAO,mBACP,WAAY,8BGp4BZ,aAAc,mBHu4BhB,qBACE,MAAO,MIt+BL,SAAO,SACT,IAAA,KJw+BA,MAAO,QIr+BD,UAAA,MAIR,iBACE,gBJm+BF,iBAGE,OAAQ,IAAI,EAAE,EAAE,EIl+BhB,oBJq+BA,MAAO,KIj+BP,iBJo+BA,eAAgB,SIh+BhB,uBJm+BA,WAAY,cI/9BZ,iBJk+BA,QAAS,EAAE,IAAI,EAAE,EIn+BjB,YAGA,EACE,cAAA,KACA,eAAA,EJk+BF,aAAc,EI79Bd,iBJg+BA,WAAY,KI79BZ,cAAe,KJg+BjB,gBI59BE,SAAU,SACV,QAAY,KJ89BZ,QAAS,KI39BT,OAAQ,EAAE,EAAE,IAAI,EAChB,OAAA,IAAA,MAAA,mCACO,WAAA,KACP,cAAkB,KAClB,MAAA,qBACA,WAAA,gCACA,aAAA,qBAEA,uBACA,MAAA,MJ69BA,SAAU,SIz9BV,IAAK,KACL,MAAA,QACA,UAAA,MAGY,mBAAA,kBADL,mBAKP,OAAQ,IAAI,EAAE,EAAE,EJ09BlB,sBIv9BG,MAAA,KJ09BH,mBIn9BE,eAAgB,SJs9BlB,yBIl9BE,WAAY,cJq9Bd,mBIh9BG,QAAA,EAAA,IAAA,EAAA,EACC,YAAY,EJk9Bd,cAAe,KIr8Bd,eAAA,EACD,aAAA,EAEA,mBACO,WAAA,KACP,cAAA,KAEA,cACA,SAAA,SC7FA,QAAA,KLqiCA,QAAS,KIh9BR,OAAA,EAAA,EAAA,IAWD,EAlBA,OAAA,IAAA,MAAA,mCACA,WAAA,KACA,cAAA,KACA,QAAA,MACA,WAAA,uCJ09BA,SAAU,MIr5BV,IAAK,IAhDL,KAAA,IACA,OAAA,EAAA,KACA,UAAA,qBACA,QAAA,SExDA,qBD1DA,MAAA,MDkKO,SAAA,SACP,IAAA,KACA,MAAA,QJ45BA,UAAW,MIv8BT,iBACA,gBEhGF,iBFiGE,OAAA,IAAA,EAAA,EAAA,EJ48BJ,oBIx6BE,MAAO,KA9BP,iBACE,eAAA,SAGF,uBACE,WAAA,cAGF,iBACE,QAAA,EAAA,IAAA,EAAA,EJw8BF,YAAa,EIz8Bb,cAGG,KACC,eAAA,EJw8BJ,aAAc,EIn8BZ,iBACA,WAAA,KErIF,cAAA,KAIA,iBN0kCA,WAAY,EIl8BV,cACA,OAAA,QAYJ,SAxDE,WAAA,KACA,WAAA,OACA,QAAA,MACA,QAAA,EACA,OAAA,EEzDA,OAAA,KFiHY,kBACZ,UAAA,IALF,QE7IE,cAAA,IAAA,MAAA,yCF+FE,WAAA,KACA,aAAA,EAEA,WJu/BF,QAAS,KI58BX,MAAE,QAAS,KArCP,UAAA,KJs/BF,MAAO,KIj9BP,UAlCA,KJs/BF,QIp9BE,MAAO,EJu9BT,wBIl/BI,QAAA,KJq/BJ,YI19BA,WArBI,MAAA,EACA,QAAA,KErIF,OAAA,EAAA,KFuIE,eAAA,KEnIF,eAAA,UNsnCA,OAAQ,MAAM,uCIj+Bd,aAdA,EAAA,EAAA,IAAA,EACE,MAAA,MACA,sBAAA,KJi/BF,YAAa,KI79Bb,OAAQ,QA/DR,mBACA,kBACA,cAAA,IAAA,MAAA,6CACA,WAAkB,sCEzDlB,MAAA,2CFwHA,kBACY,iBACZ,cAAA,IAAA,MAAA,6CAEA,cACA,UAAA,KACA,QAAW,MAAA,EACX,WAAA,WJo+BA,WAAY,IAAI,MAAM,yCI9+BtB,QAxDA,KAEE,yBACA,cAAA,IAAA,MAAA,6CACA,WAAA,sCACA,MAAA,2CJwiCF,eAAgB,MIpiChB,2BA+CA,QA9CA,MJwiCF,sCI1/BE,QA1CA,KJuiCF,oCI7/BE,SAtCA,UACE,WAAA,QJqiCF,cAAe,IAAI,MAAM,YIniCvB,YAAC,IACC,MAAA,QAIJ,0CACE,cAAA,IAAA,MAAA,6CEpIF,oCFuIE,cAAA,IAAA,MAAA,6CEnIF,WAAA,sCNuqCA,MAAO,2CI/hCL,4CACA,QAAA,MAiCA,OJogCF,OAAQ,OI//BR,WAAY,EACZ,aAAA,KJigCA,cAAe,EI7/Bf,YAAa,EACb,QAAA,gBACA,MAAA,yBACA,UAAA,MACA,QAAA,EAEA,aAAA,aJggCA,OAAQ,QI3/BR,wHJ8/BA,OI3/BA,WAAA,KACA,mBAAyB,KACzB,gBAAA,KACA,aAAA,EAAA,KAAA,EAAA,EJ6/BE,aAAc,YI3/BhB,WAAA,oWAAA,UACE,sBAAA,kBJ6/BA,gBAAiB,KIz/BjB,kBAAmB,YACrB,iBAAA,uCACA,QAAA,OAAA,KACA,cAAA,SACA,cAAA,IAGE,aADA,aJ4/BA,iBAAkB,6CIv/BlB,cJ0/BA,iBAAkB,6BIt/Bb,mCACL,uBACA,uBACA,iBAAA,2XAGc,uBACd,iBAAA,2XAKA,oCJw/BF,mBAAoB,KIt/BjB,gBAAA,KAdI,WAcJ,KACC,OAAA,QACA,QAAY,aACZ,MAAO,MJy/BX,OAAQ,KIr/BN,WAAO,eACP,OAAK,EAAG,KACR,cAAA,KJu/BF,SAAU,SIl/BR,0CACA,0CACA,QAAA,EJu/BJ,iDIl/BI,QAAO,GACP,SAAA,SACA,MAAA,MACA,OAAO,OACP,OAAA,IAAA,MAAA,4BJo/BF,cAAe,KIj/Bb,WAAS,4BAAA,EAAA,EAAA,IACT,QAAA,MJm/BF,IAAK,OI/+BF,KAAK,MJk/BV,4CIl/BU,SAAM,SAMZ,IAAA,MACA,QAAA,KACA,gBAAA,OACA,YAAA,OACA,UAAA,MJ++BF,MAAO,QIz/BJ,OAAW,QAaV,cAAA,IAMF,+DADyB,oCAElB,WAAP,mDAIA,uEADM,4CJ6+BR,KAAM,MACN,QAAS,QIx+BT,MAAO,mDACP,WAAA,wDAGA,uDE/TA,4CAIA,WAAA,kDF+TA,+DADA,oDAEA,KAAA,mBJ0+BA,QAAS,QIx+BR,MAAA,kDACA,WAAA,uDAKH,qCACE,0CACE,mBAAA,KACA,gBAAA,KACA,WAAA,KACA,MAAA,KACA,OAAA,KACA,OAAA,QACA,SAAA,SACA,IAAA,EACA,KAAA,EACA,OAAA,IAAA,MAAA,2CACA,cAAA,KC9UF,iDLwzCE,QAAS,GIt+BR,MAAA,IACA,OAAA,IACC,SAAA,SJw+BF,IAAK,IIz/BP,KAoBE,IACE,OAAA,IAAA,MAAA,2CJu+BF,WAAY,KIn+BsB,aAAA,KAC9B,WAAY,IACZ,QAAA,EACF,UAAkB,eJs+BtB,yDIl+BI,aAAY,2CACd,QAAA,EJq+BF,oDACE,OAAQ,QIj+BP,iBAAe,sBAClB,OAAA,QAEA,8FACA,QAAA,IAGA,mCACA,YACA,MAAA,MJs+BF,QI/+BK,eAAA,cAAA,IAgBD,MAAA,IJm+BF,OAAQ,II/9BN,QACA,OAAA,IAAA,KACA,UAAA,KACA,SAAA,SACA,YAAkB,QAClB,WAAA,KAAA,MAAA,mCACA,aAAY,KAAA,MAAZ,mCACA,cAAA,KAAA,MAAA,mCACA,YAAA,KAAA,MAAA,uCACA,kBAAA,cJk+BF,cAAe,cI//BZ,UAAe,cAiChB,kBAAA,MAAA,KAAA,SAAA,OACA,UAAA,MAAA,KAAA,SAAA,OAEA,yBACA,GACA,kBAAA,UACA,UAAA,UAEA,KJi+BA,kBAAmB,eACnB,UAAW,gBAGf,iBI79BE,GACiB,kBAAK,UACtB,UAAY,UAFT,KACc,kBAAK,eAIpB,UAAA,gBJm+BJ,gBI59BK,QAAA,KACH,SAAiB,SACjB,QAAY,MAAA,KJ89BZ,OAAQ,EAAE,EAAE,EAAE,KIh+BX,OAAA,IAAA,MAIF,2CAAD,WAAC,+CACO,UAAA,KACG,YAAT,IACA,QAAO,QACP,WAAY,KJ+9Bd,cAAe,KIx9Bb,sBADkB,yBADtB,yBAGI,QAAA,aAIA,mBACA,OAAA,EACA,QAAA,EAAA,QAAA,EAAA,KACA,MAAA,KACA,MAAA,eACA,MAAkB,uBCvcpB,MAAA,KLo6CA,eAAgB,IIx+BX,UAAA,OAeD,YAAA,OACA,QAAA,YAEA,yBACA,MAAA,KACA,QAAA,aACA,SAAA,SACA,QAAA,EAAA,MACA,WAAA,MAEA,wBACA,QAAA,KJ49BJ,YAAa,EIt/BR,UAAA,EA8BD,WAAc,MJ49BpB,0BIt9BO,QAAA,KACH,YAAA,EACA,UAAA,EACA,WAAA,MJw9BF,WAAY,uBIp9BP,OAAA,IAAS,MAAiC,oCAC7C,QAAA,MAAA,EJu9BJ,0BIn9BE,QAAS,KACH,YAAA,EACJ,UAAA,EJq9BF,WAAY,MACZ,WAAY,IACZ,OAAQ,IAAI,MAAM,oCIl9BlB,QAAS,MAAO,EAEhB,0BACA,QAAA,KACA,YAAA,EJo9BA,UAAW,EIj9BX,WAAY,MACZ,WAAA,IACA,cAAA,IAAA,OAAA,oCACA,QAAA,EAEwB,2BACxB,QAAA,KACA,YAAA,EACA,UAAA,EACA,WAAA,MACA,WAAe,IACf,YAAW,IAAA,MAAX,oCACA,QAAA,MAAA,EACA,MAAA,wGAIA,cACE,SAAA,SACA,MAAA,MJk9BF,WAAY,EI/8BZ,WAAA,OACE,WAAA,KACA,cAAW,KJk9Bf,qBI98BA,oBACE,oBACE,iBAAA,qCJi9BJ,oBI78BE,QAAA,KAEa,iBJ+8Bb,gBAAiB,KACjB,OAAQ,EACR,QAAS,EI38BT,oBACA,OAAA,QACA,QAAA,MAAA,KAEkB,2BACN,2BACZ,0BACA,0BACA,iBAAA,2CC5iBA,oCDmjBa,mCAKf,mCCxjBE,oCDojBA,mCAKA,mCARO,mCAGP,kCAMA,kCARO,mCAEP,kCAOA,kCACA,gBAAA,KAEA,2BACA,OAAA,QAEA,mBACA,QAAA,MJ48BA,iBAAkB,qCIz8BlB,MAAO,+BACP,WAAA,MACA,WAAA,KACA,QAAA,IACA,WAAA,OACA,cAAA,MJ28BA,WAAY,EAAE,IAAI,IAAI,mBIv8BtB,yBACA,QAAA,KAEA,mCJ08BA,cIv8BE,MAAO,KALT,oBACA,QAAA,MAQA,8DACA,MAAA,4BAGF,yEAdE,KAAA,mBACA,MAAA,QAEA,8BAcA,QAAA,KAEA,4EJ48BA,QAAS,KIz8BT,eAAgB,OAtBhB,SAAA,MACA,KAAA,MACA,MAAA,EACA,IAAA,OAsBA,WAAA,IAAA,KAAA,QAAA,GACA,OAAA,EACA,WAAA,sCJ68BA,OAAQ,IAAI,MAAM,sCI18BlB,QAAS,MA9BT,QAAA,KAAA,KAAA,KAAA,KAEA,mGACA,QAAA,MA8BA,KAAA,EACA,WAAA,KACA,MAAA,KACA,OAAA,KJ88BA,gBAAiB,KOzkDnB,uGACE,QAAA,EACA,OAAA,EACA,OAAA,KACA,WAAA,QD+DA,MAAA,QD1DA,OAAA,QLykDA,UAAW,KOzkDX,WAAC,QACD,WAAC,2BACD,WAAC,QP4kDH,kGOxkDE,MAAC,gCACC,WAAA,MP0kDF,WAAY,MOtkDV,qGACA,WAAA,IAAA,MAAA,8BACA,cAAA,KAEA,qGACE,OAAA,KACA,SAAA,OPykDJ,cAAe,SOvkDX,UAJF,MAMG,oGACD,MAAC,sCACC,UAAA,MAEC,yGALH,QALF,aAME,MAXJ,MAgBO,oGAAA,qGAAA,oGAJH,WAZJ,KAiBO,mHANH,OAXJ,KAYI,SAZJ,OAkBQ,cAAA,SAIH,+GACC,YAAA,OPglDN,WAAY,OO3kDX,cAAA,SAEC,yHACA,qHACA,SAAA,SACA,SAAA,kBACA,WAAA,sCACA,cAAA,kBAEA,oGAGE,2GADD,0GAFD,4GPglDF,MAAO,gCOvkDP,0GACE,gBAAA,UAEK,kGACH,IAAA,KP0kDJ,KAAM,KACN,QAAS,MQjpDT,qGRopDA,IAAK,KQjpDL,MAAO,KFHP,YAAA,MAIA,cAAA,MNopDA,eAAgB,MQhpDX,aAAe,MRmpDtB,iGQ/oDE,IAAM,KACN,MAAA,KACA,QAAA,MFdA,kGAIA,iGEcA,qGACA,cAAA,IACA,QAAA,MACA,MAAY,OACZ,OAAA,OACA,SAAA,SACA,OAAA,aRipDA,QAAS,QQ9oDP,uGACA,sGACA,0GACA,QAAA,MACA,MAAA,OACA,OAAA,ORipDF,WAAY,OQ9oDR,8GACA,kHACA,eAAA,IAEA,kGAGA,yGADA,wGADA,0GASF,iGAEA,wGAAA,uGADA,yGAPE,qGAKJ,4GAJI,2GAAA,6GAhCJ,MAAgC,gCA0C5B,WAAsB,sCACtB,OAAA,IAAA,MAAA,gCAGF,wGACE,wGAGA,uGAAA,uGAFA,2GACA,2GAjDJ,OAAM,aAuDF,oFR6oDJ,SAAU,SQpsDV,IAAM,KA0DA,MAAA,IACA,WAAA,KAAA,MAAA,yCR6oDN,aAAc,KAAM,MAAM,yCQxsDpB,cAAA,KAAmB,MAAyC,yCAA5D,YAAA,KAAmB,MAAyC,6CFwDlE,sFNqpDA,IAAK,EQvoDD,iHACA,WAAA,oBR2oDN,sCQ9qDE,4EAwCI,IAAA,EACA,KAAA,ER0oDJ,mGQvtDM,QAAA,KAAA,eAAA,OAmFF,gBAAA,OAEA,uGACA,MAAA,KRwoDF,WAAY,oBQpoDZ,iGA1FI,MAAA,MRouDR,mCQhsDE,4EA6DI,IAAA,ERsoDF,KAAM,EQvuDF,QAAA,KFZN,uGEoHE,MAAA,KRooDA,WAAY,oBQ5uDR,OAAA,EFRN,yGEuHE,MAAA,QFnGF,aAAA,MNwuDF,cQpvDQ,eAAmB,YAsHvB,mBAAA,KAEA,uBRioDF,GQzvDM,QAAA,EAAN,IA8HE,QAAA,GACA,UAAA,qBAAA,aAGA,4CACQ,WAAA,KAAR,KRioDJ,wCQpwDE,OAAM,MAAwC,sCAuI1C,OAAA,KAEA,wCACA,OAAA,MA1I0C,mDAA9C,OAAM,MRgxDR,yDQhxDE,OAAM,MAAwC,wCAA9C,OAAM,KAAA,gBAAA,YAAA,UAAN,MAAyB,sBAAnB,iBAAwC,iCAAxC,QAAA,IAAA,IAAA,cAAA,IAkKG,qCACP,QAAY,MACZ,QAAA,IAAA,KR4nDF,YAAa,WQhyDP,UAAA,KAAN,MAAM,KAAA,iBAAmB,QAAzB,OAAM,QAAA,cAAA,eAAA,WAAmB,YAAA,EAAO,EAAA,EAAA,ERwyDlC,2CQxyDQ,iBAAmB,QAkLvB,4BF1LF,QAAA,KE6L4B,oCAC1B,SAAA,SR2nDJ,sBQtnDE,OAAM,KAAA,KAAA,KAAA,ERynDR,8BQznDE,OAAM,KAAA,KAAA,KAAkB,KR4nD1B,uBQpnDuC,uBAC7B,WAAA,OFhNR,6BNw0DA,WAAY,WAAW,GAAG,OAAO,GQnnD7B,sCACA,sCACA,WAAA,QAPI,cAUF,eAAA,EACY,gBAAA,SAXV,oBF5MR,oBNg1DA,cAAe,IAAI,MAAM,2BACzB,QAAS,OQ/mDkB,mCACzB,eAAA,EFvOF,gBAAA,SN21DF,sCQrnDoC,sCAM9B,OAAA,KAEA,2BRknDJ,MAAO,MQ9mDH,4BF1OJ,MAAA,KN41DA,WAAY,MSr2Dd,kCACE,WAAA,MAIE,YADF,wCTs2DF,wCSp2DM,MAAA,MAGF,eACE,WAAA,KTw2DN,kCACE,UAAW,OSn2DR,OAAA,KAAA,EAAe,KAAA,EAClB,OAAA,IAAA,MAAA,2BTq2DA,WAAY,KUr3DZ,wCAAA,wCAGI,QAAA,MVw3DN,sDUl3DM,aAAA,IAAA,MAAA,MAAA,2BAOJ,QAAA,EAAA,KAAA,EAAA,EV82DA,OAAQ,EAAE,EAAE,EAAE,MUz2Dd,iBV42DA,MAAO,IUz2DH,QAAA,aAEJ,WAAA,MV02DA,cAAe,MUt2Df,iBVy2DA,MAAO,kBWx4DP,QACA,aAES,eACP,OAAA,IAAA,MAAkB,QAClB,OAAA,IAAA,EX04DJ,kBY94DE,OAAQ,IACR,MAAA,QACE,OAAA,IAAA,EACA,MAAA,KAEA,kBACA,OAAA,IAAA,MAAA,QACA,OAAA,IAAA,EACA,MAAA,KAEA,MZ+4DF,MAAO,EYz5DP,OAAQ,EZ45DV,MY55DE,MAAO,GZ+5DT,MY/5DE,MAAO,GZk6DT,MYl6DE,MAAO,GZq6DT,MYr6DE,MAAO,GZw6DT,MYx6DE,MAAO,GAmCL,MZy4DF,MAAO,GYr4DL,MZw4DF,MAAO,GY/6DT,MA4CI,MAAA,GC3CJ,MACE,MAAA,Gbq7DF,Oat7DE,MAAO,IAML,OACA,MAAA,IAPJ,OAWI,MAAA,Ibo7DJ,Oa/7DE,MAAO,IAgBH,Obm7DJ,MAAO,Ia96DL,Obi7DF,MAAO,Ia76DL,OACA,MAAA,IA1BJ,OA8BI,MAAA,IAIC,OACA,MAAA,IAEH,Ob66DA,MAAO,Iaz6DP,Ob46DA,MAAO,Iaz6DL,OACA,MAAA,IPsBF,ONw5DA,MAAO,Ian7DT,OAWM,MAAA,IAGF,OACE,MAAA,IAEA,Ob26DJ,MAAO,Iar6DP,OACA,MAAA,IAEA,Obw6DA,MAAO,Iap6DP,OACA,MAAA,IAGF,OACE,MAAA,Ibu6DF,Oan6DE,MAAO,IAEP,OACA,MAAA,IAGF,OACE,MAAA,IAEA,Obo6DA,MAAO,Iah6DP,OACA,MAAA,IV/FD,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,OUsGG,MAAA,IVtGH,QUsGG,MAAA,KVtGH,aUsGG,OAAA,MbqmEF,MAAO,KG3sER,OAAA,KAAA,EH8sED,YG9sEC,WAAA,KHitED,OGjtEC,WAAA,OHotED,cGptEC,WAAA,qBAAA,UUsGG,OAAA,mBbinEF,WAAY,KGvtEb,OAAA,KAAA,KUsGG,oBAAA,ObonEF,gBAAiB,QapnEf,UbunEF,UAAW,IG7tEZ,WAAA,OHguED,eGhuEC,sBUsGG,OAAA,EAAA,Kb6nEF,WAAY,QGnuEb,OAAA,QUsGG,QAAA,EbgoEF,QAAS,MahoEP,uBbmoEF,QAAS,MGzuEV,OAAA,IAAA,EH4uED,uBG5uEC,QAAA,IAAA,KUsGG,cAAA,kBVtGH,sCUsGG,ab4oEA,UAAW,Ia5oEX,Yb+oEA,WAAY,KAGhB,4BGxvEC,4BUsGG,WAAA,gBbqpEF,OAAQ,KarpEN,uBbwpEF,MAAO,KaxpEL,2Bb2pEF,OAAQ,IGjwET,OAAA,KHowED,yBGpwEC,OAAA,EUsGG,QAAA,IAAA,EAAA,EAAA,EbiqEF,QAAS,MGvwEV,MAAA,KUsGG,MAAA,MVtGH,yBUsGG,OAAA,EbuqEF,QAAS,EG7wEV,MAAA,KUsGG,MAAA,KAAA,0CVtGH,gCHmxEC,UAAW,kBGnxEZ,WAAA,EUsGG,aAAA,KbgrEF,cAAe,EGtxEhB,YAAA,EHyxED,gCGzxEC,MAAA,M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","sourcesContent":["/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */\n\n/* Document\n ========================================================================== */\n\n/**\n * 1. Correct the line height in all browsers.\n * 2. Prevent adjustments of font size after orientation changes in iOS.\n */\n\nhtml {\n line-height: 1.15; /* 1 */\n -webkit-text-size-adjust: 100%; /* 2 */\n}\n\n/* Sections\n ========================================================================== */\n\n/**\n * Remove the margin in all browsers.\n */\n\nbody {\n margin: 0;\n}\n\n/**\n * Render the `main` element consistently in IE.\n */\n\nmain {\n display: block;\n}\n\n/**\n * Correct the font size and margin on `h1` elements within `section` and\n * `article` contexts in Chrome, Firefox, and Safari.\n */\n\nh1 {\n font-size: 2em;\n margin: 0.67em 0;\n}\n\n/* Grouping content\n ========================================================================== */\n\n/**\n * 1. Add the correct box sizing in Firefox.\n * 2. Show the overflow in Edge and IE.\n */\n\nhr {\n box-sizing: content-box; /* 1 */\n height: 0; /* 1 */\n overflow: visible; /* 2 */\n}\n\n/**\n * 1. Correct the inheritance and scaling of font size in all browsers.\n * 2. Correct the odd `em` font sizing in all browsers.\n */\n\npre {\n font-family: monospace, monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/* Text-level semantics\n ========================================================================== */\n\n/**\n * Remove the gray background on active links in IE 10.\n */\n\na {\n background-color: transparent;\n}\n\n/**\n * 1. Remove the bottom border in Chrome 57-\n * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.\n */\n\nabbr[title] {\n border-bottom: none; /* 1 */\n text-decoration: underline; /* 2 */\n text-decoration: underline dotted; /* 2 */\n}\n\n/**\n * Add the correct font weight in Chrome, Edge, and Safari.\n */\n\nb,\nstrong {\n font-weight: bolder;\n}\n\n/**\n * 1. Correct the inheritance and scaling of font size in all browsers.\n * 2. Correct the odd `em` font sizing in all browsers.\n */\n\ncode,\nkbd,\nsamp {\n font-family: monospace, monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/**\n * Add the correct font size in all browsers.\n */\n\nsmall {\n font-size: 80%;\n}\n\n/**\n * Prevent `sub` and `sup` elements from affecting the line height in\n * all browsers.\n */\n\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -0.25em;\n}\n\nsup {\n top: -0.5em;\n}\n\n/* Embedded content\n ========================================================================== */\n\n/**\n * Remove the border on images inside links in IE 10.\n */\n\nimg {\n border-style: none;\n}\n\n/* Forms\n ========================================================================== */\n\n/**\n * 1. Change the font styles in all browsers.\n * 2. Remove the margin in Firefox and Safari.\n */\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n font-family: inherit; /* 1 */\n font-size: 100%; /* 1 */\n line-height: 1.15; /* 1 */\n margin: 0; /* 2 */\n}\n\n/**\n * Show the overflow in IE.\n * 1. Show the overflow in Edge.\n */\n\nbutton,\ninput { /* 1 */\n overflow: visible;\n}\n\n/**\n * Remove the inheritance of text transform in Edge, Firefox, and IE.\n * 1. Remove the inheritance of text transform in Firefox.\n */\n\nbutton,\nselect { /* 1 */\n text-transform: none;\n}\n\n/**\n * Correct the inability to style clickable types in iOS and Safari.\n */\n\nbutton,\n[type=\"button\"],\n[type=\"reset\"],\n[type=\"submit\"] {\n -webkit-appearance: button;\n}\n\n/**\n * Remove the inner border and padding in Firefox.\n */\n\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n border-style: none;\n padding: 0;\n}\n\n/**\n * Restore the focus styles unset by the previous rule.\n */\n\nbutton:-moz-focusring,\n[type=\"button\"]:-moz-focusring,\n[type=\"reset\"]:-moz-focusring,\n[type=\"submit\"]:-moz-focusring {\n outline: 1px dotted ButtonText;\n}\n\n/**\n * Correct the padding in Firefox.\n */\n\nfieldset {\n padding: 0.35em 0.75em 0.625em;\n}\n\n/**\n * 1. Correct the text wrapping in Edge and IE.\n * 2. Correct the color inheritance from `fieldset` elements in IE.\n * 3. Remove the padding so developers are not caught out when they zero out\n * `fieldset` elements in all browsers.\n */\n\nlegend {\n box-sizing: border-box; /* 1 */\n color: inherit; /* 2 */\n display: table; /* 1 */\n max-width: 100%; /* 1 */\n padding: 0; /* 3 */\n white-space: normal; /* 1 */\n}\n\n/**\n * Add the correct vertical alignment in Chrome, Firefox, and Opera.\n */\n\nprogress {\n vertical-align: baseline;\n}\n\n/**\n * Remove the default vertical scrollbar in IE 10+.\n */\n\ntextarea {\n overflow: auto;\n}\n\n/**\n * 1. Add the correct box sizing in IE 10.\n * 2. Remove the padding in IE 10.\n */\n\n[type=\"checkbox\"],\n[type=\"radio\"] {\n box-sizing: border-box; /* 1 */\n padding: 0; /* 2 */\n}\n\n/**\n * Correct the cursor style of increment and decrement buttons in Chrome.\n */\n\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n/**\n * 1. Correct the odd appearance in Chrome and Safari.\n * 2. Correct the outline style in Safari.\n */\n\n[type=\"search\"] {\n -webkit-appearance: textfield; /* 1 */\n outline-offset: -2px; /* 2 */\n}\n\n/**\n * Remove the inner padding in Chrome and Safari on macOS.\n */\n\n[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n/**\n * 1. Correct the inability to style clickable types in iOS and Safari.\n * 2. Change font properties to `inherit` in Safari.\n */\n\n::-webkit-file-upload-button {\n -webkit-appearance: button; /* 1 */\n font: inherit; /* 2 */\n}\n\n/* Interactive\n ========================================================================== */\n\n/*\n * Add the correct display in Edge, IE 10+, and Firefox.\n */\n\ndetails {\n display: block;\n}\n\n/*\n * Add the correct display in all browsers.\n */\n\nsummary {\n display: list-item;\n}\n\n/* Misc\n ========================================================================== */\n\n/**\n * Add the correct display in IE 10+.\n */\n\ntemplate {\n display: none;\n}\n\n/**\n * Add the correct display in IE 10.\n */\n\n[hidden] {\n display: none;\n}\n",null,"/*\n * SearXNG, A privacy-respecting, hackable metasearch engine\n *\n * To change the colors of the site, simple edit this variables\n */\n\n/// Light Theme\n:root {\n /// Base Colors\n --color-base-font: #444;\n --color-base-font-rgb: 68, 68, 68;\n --color-base-background: #fff;\n --color-base-background-mobile: #f2f5f8;\n --color-url-font: #334999;\n --color-url-visited-font: #9822c3;\n /// Header Colors\n --color-header-background: #fdfbff;\n --color-header-border: #ddd;\n /// Footer Colors\n --color-footer-background: #fdfbff;\n --color-footer-border: #ddd;\n /// Sidebar Colors\n --color-sidebar-border: #ddd;\n --color-sidebar-font: #000;\n --color-sidebar-background: #fff;\n /// BackToTop Colors\n --color-backtotop-font: #444;\n --color-backtotop-border: #ddd;\n --color-backtotop-background: #fff;\n /// Button Colors\n --color-btn-background: #3050ff;\n --color-btn-font: #fff;\n --color-show-btn-background: #bbb;\n --color-show-btn-font: #000;\n /// Search Input Colors\n --color-search-border: #bbb;\n --color-search-shadow: 0 2px 8px rgb(34 38 46 / 25%);\n --color-search-background: #fff;\n --color-search-font: #222;\n --color-search-background-hover: #3050ff;\n /// Modal Colors\n --color-error: #db3434;\n --color-error-background: lighten(#db3434, 40%);\n --color-warning: #dbba34;\n --color-warning-background: lighten(#dbba34, 40%);\n --color-success: #42db34;\n --color-success-background: lighten(#42db34, 40%);\n /// Categories Colors\n --color-categories-item-selected-font: #3050ff;\n --color-categories-item-border-selected: #3050ff;\n /// Autocomplete Colors\n --color-autocomplete-font: #000;\n --color-autocomplete-border: #bbb;\n --color-autocomplete-shadow: 0 2px 8px rgb(34 38 46 / 25%);\n --color-autocomplete-background: #fff;\n --color-autocomplete-background-hover: #e3e3e3;\n /// Answer Colors\n --color-answer-font: #444; // same as --color-base-font\n --color-answer-background: #fff;\n /// Results Colors\n --color-result-background: #fff;\n --color-result-border: #ddd;\n --color-result-url-font: #000;\n --color-result-vim-selected: #f7f7f7;\n --color-result-vim-arrow: #000bbb;\n --color-result-description-highlight-font: #000;\n --color-result-link-font: #000bbb;\n --color-result-link-font-highlight: #000bbb;\n --color-result-link-visited-font: #9822c3;\n --color-result-publishdate-font: #777;\n --color-result-engines-font: #545454;\n --color-result-search-url-border: #ddd;\n --color-result-search-url-font: #000;\n // Images Colors\n --color-result-image-span-font: #444;\n --color-result-image-span-font-selected: #fff;\n --color-result-image-background: #fff;\n /// Settings Colors\n --color-settings-tr-hover: #ebebeb;\n --color-settings-engine-description-font: #545454;\n --color-settings-engine-group-background: #0001;\n /// Detail modal\n --color-result-detail-font: #fff;\n --color-result-detail-label-font: lightgray;\n --color-result-detail-background: #242424;\n --color-result-detail-hr: #555;\n --color-result-detail-link: #8af;\n --color-result-detail-loader-border: rgba(255, 255, 255, 0.2);\n --color-result-detail-loader-borderleft: rgba(0, 0, 0, 0);\n /// Toolkit Colors\n --color-toolkit-badge-font: #fff;\n --color-toolkit-badge-background: #545454;\n --color-toolkit-kbd-font: #fff;\n --color-toolkit-kbd-background: #000;\n --color-toolkit-dialog-border: #ddd;\n --color-toolkit-dialog-background: #fff;\n --color-toolkit-tabs-label-border: #fff;\n --color-toolkit-tabs-section-border: #ddd;\n --color-toolkit-select-background: #e1e1e1;\n --color-toolkit-select-border: #ddd;\n --color-toolkit-select-background-hover: #bbb;\n --color-toolkit-input-text-font: #222;\n --color-toolkit-checkbox-onoff-off-background: #ddd;\n --color-toolkit-checkbox-onoff-on-background: #ddd;\n --color-toolkit-checkbox-onoff-on-mark-background: #3050ff;\n --color-toolkit-checkbox-onoff-on-mark-color: #fff;\n --color-toolkit-checkbox-onoff-off-mark-background: #aaa;\n --color-toolkit-checkbox-onoff-off-mark-color: #fff;\n --color-toolkit-checkbox-label-background: #ddd;\n --color-toolkit-checkbox-label-border: #ddd;\n --color-toolkit-checkbox-input-border: #3050ff;\n --color-toolkit-engine-tooltip-border: #ddd;\n --color-toolkit-engine-tooltip-background: #fff;\n --color-toolkit-loader-border: rgba(0, 0, 0, 0.2);\n --color-toolkit-loader-borderleft: rgba(255, 255, 255, 0);\n --color-doc-code: #300;\n --color-doc-code-background: #fdd;\n --invert-logo: invert(0%);\n}\n\n.dark-themes() {\n /// Base Colors\n --color-base-font: #bbb;\n --color-base-font-rgb: 187, 187, 187;\n --color-base-background: #222428;\n --color-base-background-mobile: #222428;\n --color-url-font: #8af;\n --color-url-visited-font: #c09cd9;\n /// Header Colors\n --color-header-background: #1e1e22;\n --color-header-border: #333;\n /// Footer Colors\n --color-footer-background: #1e1e22;\n --color-footer-border: #333;\n /// Sidebar Colors\n --color-sidebar-border: #555;\n --color-sidebar-font: #fff;\n --color-sidebar-background: #292c34;\n /// BackToTop Colors\n --color-backtotop-font: #bbb;\n --color-backtotop-border: #333;\n --color-backtotop-background: #2b2e36;\n /// Button Colors\n --color-btn-background: linear-gradient(81.62deg, #2870ea 8.72%, #1b4aef 85.01%);\n --color-btn-font: #fff;\n --color-show-btn-background: #555;\n --color-show-btn-font: #fff;\n /// Search Input Colors\n --color-search-border: #555;\n --color-search-shadow: 0 2px 8px rgb(34 38 46 / 25%);\n --color-search-background: #2b2e36;\n --color-search-font: #fff;\n --color-search-background-hover: linear-gradient(81.62deg, #2870ea 8.72%, #1b4aef 85.01%);\n /// Modal Colors\n --color-error: #f55b5b;\n --color-error-background: darken(#db3434, 40%);\n --color-warning: #f1d561;\n --color-warning-background: darken(#dbba34, 40%);\n --color-success: #79f56e;\n --color-success-background: darken(#42db34, 40%);\n /// Categories Colors\n --color-categories-item-selected-font: #58f;\n --color-categories-item-border-selected: #58f;\n /// Autocomplete Colors\n --color-autocomplete-font: #fff;\n --color-autocomplete-border: #555;\n --color-autocomplete-shadow: 0 2px 8px rgb(34 38 46 / 25%);\n --color-autocomplete-background: #2b2e36;\n --color-autocomplete-background-hover: #1e1e22;\n /// Answer Colors\n --color-answer-font: #bbb; // same as --color-base-font\n --color-answer-background: #26292f;\n /// Results Colors\n --color-result-background: #26292f;\n --color-result-border: #333;\n --color-result-url-font: #fff;\n --color-result-vim-selected: #1f1f23cc;\n --color-result-vim-arrow: #8af;\n --color-result-description-highlight-font: #fff;\n --color-result-link-font: #8af;\n --color-result-link-font-highlight: #8af;\n --color-result-link-visited-font: #c09cd9;\n --color-result-publishdate-font: #888;\n --color-result-engines-font: #a4a4a4;\n --color-result-search-url-border: #555;\n --color-result-search-url-font: #fff;\n /// Detail modal : same as the light version\n --color-result-detail-font: #fff;\n --color-result-detail-label-font: lightgray;\n --color-result-detail-background: #1a1a1c;\n --color-result-detail-hr: #555;\n --color-result-detail-link: #8af;\n --color-result-detail-loader-border: rgba(255, 255, 255, 0.2);\n --color-result-detail-loader-borderleft: rgba(0, 0, 0, 0);\n // Images Colors\n --color-result-image-span-font: #bbb;\n --color-result-image-span-font-selected: #222;\n --color-result-image-background: #222;\n /// Settings Colors\n --color-settings-tr-hover: #2c2c32;\n --color-settings-engine-description-font: darken(#dcdcdc, 30%);\n --color-settings-engine-group-background: #1b1b21;\n /// Toolkit Colors\n --color-toolkit-badge-font: #fff;\n --color-toolkit-badge-background: #555;\n --color-toolkit-kbd-font: #000;\n --color-toolkit-kbd-background: #fff;\n --color-toolkit-dialog-border: #555;\n --color-toolkit-dialog-background: #1e1e22;\n --color-toolkit-tabs-label-border: #222;\n --color-toolkit-tabs-section-border: #555;\n --color-toolkit-select-background: #313338;\n --color-toolkit-select-border: #555;\n --color-toolkit-select-background-hover: #373b49;\n --color-toolkit-input-text-font: #fff;\n --color-toolkit-checkbox-onoff-off-background: #313338;\n --color-toolkit-checkbox-onoff-on-background: #313338;\n --color-toolkit-checkbox-onoff-on-mark-background: #58f;\n --color-toolkit-checkbox-onoff-on-mark-color: #222;\n --color-toolkit-checkbox-onoff-off-mark-background: #ddd;\n --color-toolkit-checkbox-onoff-off-mark-color: #222;\n --color-toolkit-checkbox-label-background: #222;\n --color-toolkit-checkbox-label-border: #333;\n --color-toolkit-checkbox-input-border: #58f;\n --color-toolkit-engine-tooltip-border: #333;\n --color-toolkit-engine-tooltip-background: #222;\n --color-toolkit-loader-border: rgba(255, 255, 255, 0.2);\n --color-toolkit-loader-borderleft: rgba(0, 0, 0, 0);\n --color-doc-code: #fdd;\n --color-doc-code-background: #300;\n --invert-logo: invert(100%);\n}\n\n/// Dark Theme (autoswitch based on device pref)\n@media (prefers-color-scheme: dark) {\n :root.theme-auto {\n .dark-themes();\n }\n}\n\n// Dark Theme by preferences\n:root.theme-dark {\n .dark-themes();\n}\n\n/// General Size\n@results-width: 45rem;\n@results-sidebar-width: 25rem;\n@results-offset: 10rem;\n@results-tablet-offset: 0.5rem;\n@results-gap: 5rem;\n@results-margin: 0.125rem;\n@result-padding: 1rem;\n@results-image-row-height: 12rem;\n@results-image-row-height-phone: 6rem;\n@search-width: 44rem;\n// heigh of #search, see detail.less\n@search-height: 7.6rem;\n\n/// Device Size\n/// @desktop > @tablet\n@tablet: 79.75em; // see https://github.com/searxng/searxng/issues/874\n@phone: 50em;\n@small-phone: 35em;\n@ultra-small-phone: 20rem;\n\n/// From style.less\n@stacked-bar-chart: rgb(0, 0, 0);\n\n/// Load fonts from this directory.\n@icon-font-path: \"../../../fonts/\";\n//** File name for all font files.\n@icon-font-name: \"glyphicons-halflings-regular\";\n//** Element ID within SVG icon file.\n@icon-font-svg-id: \"glyphicons_halflingsregular\";\n\n// decoration of the select HTML elements\n@select-light-svg-path: \"../svg/select-light.svg\";\n@select-dark-svg-path: \"../svg/select-dark.svg\";\n",".code-highlight pre {\n overflow: auto;\n background-color: inherit;\n color: inherit;\n border: inherit;\n}\n\n// stylelint-disable no-invalid-position-at-import-rule\n@import \"../generated/pygments.less\";\n","/*\n this file is generated automatically by searxng_extra/update/update_pygments.py\n using pygments version 2.14.0\n*/\n\n.code-highlight .linenos {\n -webkit-touch-callout: none;\n -webkit-user-select: none;\n -khtml-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n cursor: default;\n\n &::selection {\n background: transparent; /* WebKit/Blink Browsers */\n }\n &::-moz-selection {\n background: transparent; /* Gecko Browsers */\n }\n\n margin-right: 8px;\n text-align: right;\n}\n\n.code-highlight pre { line-height: 125%; }\n.code-highlight td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }\n.code-highlight span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }\n.code-highlight td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }\n.code-highlight span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }\n.code-highlight .hll { background-color: #ffffcc }\n.code-highlight { background: #f8f8f8; }\n.code-highlight .c { color: #3D7B7B; font-style: italic } /* Comment */\n.code-highlight .err { border: 1px solid #FF0000 } /* Error */\n.code-highlight .k { color: #008000; font-weight: bold } /* Keyword */\n.code-highlight .o { color: #666666 } /* Operator */\n.code-highlight .ch { color: #3D7B7B; font-style: italic } /* Comment.Hashbang */\n.code-highlight .cm { color: #3D7B7B; font-style: italic } /* Comment.Multiline */\n.code-highlight .cp { color: #9C6500 } /* Comment.Preproc */\n.code-highlight .cpf { color: #3D7B7B; font-style: italic } /* Comment.PreprocFile */\n.code-highlight .c1 { color: #3D7B7B; font-style: italic } /* Comment.Single */\n.code-highlight .cs { color: #3D7B7B; font-style: italic } /* Comment.Special */\n.code-highlight .gd { color: #A00000 } /* Generic.Deleted */\n.code-highlight .ge { font-style: italic } /* Generic.Emph */\n.code-highlight .gr { color: #E40000 } /* Generic.Error */\n.code-highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */\n.code-highlight .gi { color: #008400 } /* Generic.Inserted */\n.code-highlight .go { color: #717171 } /* Generic.Output */\n.code-highlight .gp { color: #000080; font-weight: bold } /* Generic.Prompt */\n.code-highlight .gs { font-weight: bold } /* Generic.Strong */\n.code-highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */\n.code-highlight .gt { color: #0044DD } /* Generic.Traceback */\n.code-highlight .kc { color: #008000; font-weight: bold } /* Keyword.Constant */\n.code-highlight .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */\n.code-highlight .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */\n.code-highlight .kp { color: #008000 } /* Keyword.Pseudo */\n.code-highlight .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */\n.code-highlight .kt { color: #B00040 } /* Keyword.Type */\n.code-highlight .m { color: #666666 } /* Literal.Number */\n.code-highlight .s { color: #BA2121 } /* Literal.String */\n.code-highlight .na { color: #687822 } /* Name.Attribute */\n.code-highlight .nb { color: #008000 } /* Name.Builtin */\n.code-highlight .nc { color: #0000FF; font-weight: bold } /* Name.Class */\n.code-highlight .no { color: #880000 } /* Name.Constant */\n.code-highlight .nd { color: #AA22FF } /* Name.Decorator */\n.code-highlight .ni { color: #717171; font-weight: bold } /* Name.Entity */\n.code-highlight .ne { color: #CB3F38; font-weight: bold } /* Name.Exception */\n.code-highlight .nf { color: #0000FF } /* Name.Function */\n.code-highlight .nl { color: #767600 } /* Name.Label */\n.code-highlight .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */\n.code-highlight .nt { color: #008000; font-weight: bold } /* Name.Tag */\n.code-highlight .nv { color: #19177C } /* Name.Variable */\n.code-highlight .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */\n.code-highlight .w { color: #bbbbbb } /* Text.Whitespace */\n.code-highlight .mb { color: #666666 } /* Literal.Number.Bin */\n.code-highlight .mf { color: #666666 } /* Literal.Number.Float */\n.code-highlight .mh { color: #666666 } /* Literal.Number.Hex */\n.code-highlight .mi { color: #666666 } /* Literal.Number.Integer */\n.code-highlight .mo { color: #666666 } /* Literal.Number.Oct */\n.code-highlight .sa { color: #BA2121 } /* Literal.String.Affix */\n.code-highlight .sb { color: #BA2121 } /* Literal.String.Backtick */\n.code-highlight .sc { color: #BA2121 } /* Literal.String.Char */\n.code-highlight .dl { color: #BA2121 } /* Literal.String.Delimiter */\n.code-highlight .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */\n.code-highlight .s2 { color: #BA2121 } /* Literal.String.Double */\n.code-highlight .se { color: #AA5D1F; font-weight: bold } /* Literal.String.Escape */\n.code-highlight .sh { color: #BA2121 } /* Literal.String.Heredoc */\n.code-highlight .si { color: #A45A77; font-weight: bold } /* Literal.String.Interpol */\n.code-highlight .sx { color: #008000 } /* Literal.String.Other */\n.code-highlight .sr { color: #A45A77 } /* Literal.String.Regex */\n.code-highlight .s1 { color: #BA2121 } /* Literal.String.Single */\n.code-highlight .ss { color: #19177C } /* Literal.String.Symbol */\n.code-highlight .bp { color: #008000 } /* Name.Builtin.Pseudo */\n.code-highlight .fm { color: #0000FF } /* Name.Function.Magic */\n.code-highlight .vc { color: #19177C } /* Name.Variable.Class */\n.code-highlight .vg { color: #19177C } /* Name.Variable.Global */\n.code-highlight .vi { color: #19177C } /* Name.Variable.Instance */\n.code-highlight .vm { color: #19177C } /* Name.Variable.Magic */\n.code-highlight .il { color: #666666 } /* Literal.Number.Integer.Long */\n","// other solution : http://stackoverflow.com/questions/1577598/how-to-hide-parts-of-html-when-javascript-is-disabled/13857783#13857783\n\n// stylelint-disable no-descending-specificity\n\nhtml.no-js .hide_if_nojs {\n display: none;\n}\n\nhtml.js .show_if_nojs {\n display: none;\n}\n\n.center {\n text-align: center;\n}\n\n.right {\n float: right;\n}\n\n.left {\n float: left;\n}\n\n.invisible {\n display: none !important;\n}\n\n.list-unstyled {\n list-style-type: none;\n\n li {\n margin-top: 4px;\n margin-bottom: 4px;\n }\n}\n\n.danger {\n background-color: var(--color-error-background);\n}\n\n.warning {\n background: var(--color-warning-background);\n}\n\n.success {\n background: var(--color-success-background);\n}\n\n.badge {\n display: inline-block;\n color: var(--color-toolkit-badge-font);\n background-color: var(--color-toolkit-badge-background);\n text-align: center;\n white-space: nowrap;\n vertical-align: baseline;\n min-width: 10px;\n padding: 1px 5px;\n border-radius: 5px;\n}\n\n// kbd\nkbd {\n padding: 2px 4px;\n margin: 1px;\n font-size: 90%;\n color: var(--color-toolkit-kbd-font);\n background: var(--color-toolkit-kbd-background);\n}\n\n// table\ntable {\n width: 100%;\n\n &.striped {\n tr {\n border-bottom: 1px solid var(--color-settings-tr-hover);\n }\n }\n}\n\nth {\n padding: 0.4em;\n}\n\ntd {\n padding: 0 4px;\n}\n\ntr {\n &:hover {\n background: var(--color-settings-tr-hover) !important;\n }\n}\n\n// pre\n.pre() {\n display: block;\n font-size: 0.8em;\n word-break: break-all;\n margin: 0.1em;\n user-select: all;\n}\n\ndiv.selectable_url {\n display: block;\n border: 1px solid var(--color-result-search-url-border);\n padding: 4px;\n color: var(--color-result-search-url-font);\n margin: 0.1em;\n overflow: hidden;\n height: 1.2em;\n line-height: 1.2em;\n .rounded-corners-tiny;\n\n pre {\n .pre();\n }\n}\n\n// dialog\n.dialog() {\n position: relative;\n display: flex;\n padding: 1rem;\n margin: 0 0 1em 0;\n border: 1px solid var(--color-toolkit-dialog-border);\n .ltr-text-align-left();\n .rounded-corners;\n\n .close {\n .ltr-float-right();\n position: relative;\n top: -3px;\n color: inherit;\n font-size: 1.5em;\n }\n\n ul,\n ol,\n p {\n margin: 1px 0 0 0;\n }\n\n table {\n width: auto;\n }\n\n tr {\n vertical-align: text-top;\n\n &:hover {\n background: transparent !important;\n }\n }\n\n td {\n padding: 0 1em 0 0;\n padding-top: 0;\n .ltr-padding-right(1rem);\n padding-bottom: 0;\n .ltr-padding-left(0);\n }\n\n h4 {\n margin-top: 0.3em;\n margin-bottom: 0.3em;\n }\n}\n\n.dialog-error {\n .dialog();\n\n color: var(--color-error);\n background: var(--color-error-background);\n border-color: var(--color-error);\n}\n\n.dialog-warning {\n .dialog();\n\n color: var(--color-warning);\n background: var(--color-warning-background);\n border-color: var(--color-warning);\n}\n\n.dialog-modal {\n .dialog();\n\n display: block;\n background: var(--color-toolkit-dialog-background);\n position: fixed;\n top: 50%;\n left: 50%;\n margin: 0 auto;\n transform: translate(-50%, -50%);\n z-index: 10000000;\n\n h3 {\n margin-top: 0;\n }\n}\n\n// btn-collapse\n.btn-collapse {\n cursor: pointer;\n}\n\n//\n.scrollx {\n overflow-x: auto;\n overflow-y: hidden;\n display: block;\n padding: 0;\n margin: 0;\n border: none;\n}\n\n/* -- tabs -- */\n.tabs .tabs > label {\n font-size: 90%;\n}\n\nul.tabs {\n border-bottom: 1px solid var(--color-toolkit-tabs-section-border);\n list-style: none;\n padding-left: 0;\n\n li {\n display: flex;\n }\n}\n\n.tabs {\n display: flex;\n flex-wrap: wrap;\n width: 100%;\n min-width: 100%;\n\n & > * {\n order: 2;\n }\n\n & > input[type=radio] {\n display: none;\n }\n\n & > label,\n & > li > a {\n order: 1;\n padding: 0.7em;\n margin: 0 0.7em;\n letter-spacing: 0.5px;\n text-transform: uppercase;\n border: solid var(--color-toolkit-tabs-label-border);\n border-width: 0 0 2px 0;\n color: unset;\n\n .disable-user-select();\n\n cursor: pointer;\n\n &.active {\n border-bottom: 2px solid var(--color-categories-item-border-selected);\n background: var(--color-categories-item-selected);\n color: var(--color-categories-item-selected-font);\n }\n }\n\n & > label:hover,\n & > li > a:hover {\n border-bottom: 2px solid var(--color-categories-item-border-selected);\n }\n\n & > section {\n min-width: 100%;\n padding: 0.7rem 0;\n box-sizing: border-box;\n border-top: 1px solid var(--color-toolkit-tabs-section-border);\n display: none;\n }\n\n // default selection\n & > label:last-of-type {\n border-bottom: 2px solid var(--color-categories-item-border-selected);\n background: var(--color-categories-item-selected);\n color: var(--color-categories-item-selected-font);\n letter-spacing: -0.1px;\n }\n\n & > section:last-of-type {\n display: block;\n }\n}\n\nhtml body .tabs > input:checked {\n ~ section {\n display: none;\n }\n\n ~ label {\n position: inherited;\n background: inherit;\n border-bottom: 2px solid transparent;\n font-weight: normal;\n color: inherit;\n\n &:hover {\n border-bottom: 2px solid var(--color-categories-item-border-selected);\n }\n }\n\n + label {\n border-bottom: 2px solid var(--color-categories-item-border-selected);\n background: var(--color-categories-item-selected);\n color: var(--color-categories-item-selected-font);\n }\n\n + label + section {\n display: block;\n }\n}\n\n/* -- select -- */\nselect {\n height: 2.4rem;\n margin-top: 0;\n .ltr-margin-right(1rem);\n margin-bottom: 0;\n .ltr-margin-left(0);\n padding: 0.2rem !important;\n color: var(--color-search-font);\n font-size: 0.9rem;\n z-index: 2;\n\n &:hover,\n &:focus {\n cursor: pointer;\n }\n}\n\n@supports ((background-position-x: 100%) and ((appearance: none) or (-webkit-appearance: none) or (-moz-appearance: none))) {\n select {\n appearance: none;\n -webkit-appearance: none;\n -moz-appearance: none;\n border-width: 0 2rem 0 0;\n border-color: transparent;\n background: data-uri('image/svg+xml;charset=UTF-8', @select-light-svg-path) no-repeat;\n background-position-x: calc(100% + 2rem);\n background-size: 2rem;\n background-origin: content-box;\n background-color: var(--color-toolkit-select-background);\n outline: medium none;\n text-overflow: ellipsis;\n .rounded-corners-tiny;\n\n &:hover,\n &:focus {\n background-color: var(--color-toolkit-select-background-hover);\n }\n\n option {\n background-color: var(--color-base-background);\n }\n }\n\n @media (prefers-color-scheme: dark) {\n html.theme-auto select,\n html.theme-dark select {\n background-image: data-uri('image/svg+xml;charset=UTF-8', @select-dark-svg-path);\n }\n }\n\n html.theme-dark select {\n background-image: data-uri('image/svg+xml;charset=UTF-8', @select-dark-svg-path);\n }\n}\n\n/* -- checkbox-onoff -- */\ninput.checkbox-onoff[type=\"checkbox\"] {\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n cursor: pointer;\n display: inline-block;\n width: 2.5em;\n height: 0.7em;\n box-shadow: none !important;\n margin: 0 16px;\n border-radius: 10px;\n position: relative;\n\n /* focus & hover */\n &:focus,\n &:hover {\n outline: none;\n }\n\n &:focus::after {\n content: \"\";\n position: absolute;\n width: 3.5em;\n height: 1.65em;\n border: 1px solid var(--color-btn-background);\n border-radius: 12px;\n box-shadow: var(--color-btn-background) 0 0 3px;\n z-index: 10000;\n top: -0.55em;\n left: -0.6em;\n }\n\n &::before {\n position: absolute;\n top: -0.5em;\n display: flex;\n justify-content: center;\n align-items: center;\n font-size: 0.75em;\n width: 1.875em;\n height: 1.875em;\n border-radius: 50%;\n }\n}\n\n/* check mark\nreversed-checkbox displays unchecked checkedboxes as checked, and vice versa.\nsee https://github.com/searxng/searxng/blob/3408d061aab9abc6168fec9bbc6deab71b236dac/searx/templates/simple/preferences.html#L313\n*/\ninput.checkbox-onoff[type=\"checkbox\"],\n.reversed-checkbox input.checkbox-onoff[type=\"checkbox\"]:checked {\n background: var(--color-toolkit-checkbox-onoff-off-background);\n\n &::before {\n left: -0.5em;\n content: \"\\2715\";\n color: var(--color-toolkit-checkbox-onoff-off-mark-color);\n background: var(--color-toolkit-checkbox-onoff-off-mark-background);\n }\n}\n\ninput.checkbox-onoff[type=\"checkbox\"]:checked,\n.reversed-checkbox input.checkbox-onoff[type=\"checkbox\"] {\n background: var(--color-toolkit-checkbox-onoff-on-background);\n\n &::before {\n left: calc(100% - 1.5em);\n content: \"\\2713\";\n color: var(--color-toolkit-checkbox-onoff-on-mark-color);\n background: var(--color-toolkit-checkbox-onoff-on-mark-background);\n }\n}\n\n/* -- checkbox -- */\n@supports (transform: rotate(-45deg)) {\n input[type=checkbox]:not(.checkbox-onoff) {\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n\n width: 20px;\n height: 20px;\n cursor: pointer;\n position: relative;\n top: 0;\n left: 0;\n border: 2px solid var(--color-toolkit-checkbox-input-border);\n .rounded-corners(0.3em);\n\n &::after {\n content: '';\n width: 9px;\n height: 5px;\n position: absolute;\n top: 3px;\n left: 2px;\n border: 3px solid var(--color-toolkit-checkbox-label-border);\n border-top: none;\n border-right: none;\n background: transparent;\n opacity: 0;\n transform: rotate(-45deg);\n }\n\n &:checked::after {\n border-color: var(--color-toolkit-checkbox-input-border);\n opacity: 1;\n }\n }\n\n // disabled : can't be focused, show only the check mark\n input[type=checkbox][disabled]:not(.checkbox-onoff) {\n border: inherit;\n background-color: transparent !important;\n cursor: inherit;\n }\n\n // if not checked and possible to checked then display a \"light\" check mark on hover\n input.checkbox[type=checkbox]:not(:checked):not([disabled]):not(.checkbox-onoff):hover::after {\n opacity: 0.5;\n }\n}\n\n@media screen and (max-width: @phone) {\n .tabs > label {\n width: 100%;\n }\n}\n\n/* -- loader -- */\n.loader,\n.loader::after {\n border-radius: 50%;\n width: 2em;\n height: 2em;\n}\n\n.loader {\n margin: 1em auto;\n font-size: 10px;\n position: relative;\n text-indent: -9999em;\n border-top: 0.5em solid var(--color-toolkit-loader-border);\n border-right: 0.5em solid var(--color-toolkit-loader-border);\n border-bottom: 0.5em solid var(--color-toolkit-loader-border);\n border-left: 0.5em solid var(--color-toolkit-loader-borderleft);\n -webkit-transform: translateZ(0);\n -ms-transform: translateZ(0);\n transform: translateZ(0);\n -webkit-animation: load8 1.2s infinite linear;\n animation: load8 1.2s infinite linear;\n}\n\n@-webkit-keyframes load8 {\n 0% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n\n 100% {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n\n@keyframes load8 {\n 0% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n\n 100% {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n\n/* -- engine-tooltip -- */\n.engine-tooltip {\n display: none;\n position: absolute;\n padding: 0.5rem 1rem;\n margin: 0 0 0 2rem;\n border: 1px solid var(--color-toolkit-engine-tooltip-border);\n background: var(--color-toolkit-engine-tooltip-background);\n font-size: 14px;\n font-weight: normal;\n z-index: 1000000;\n text-align: left;\n .rounded-corners;\n}\n\nth:hover .engine-tooltip,\ntd:hover .engine-tooltip,\n.engine-tooltip:hover {\n display: inline-block;\n}\n\n/* -- stacked bar chart -- */\n.stacked-bar-chart {\n margin: 0;\n padding: 0 0.125rem 0 4rem;\n width: 100%;\n width: -moz-available;\n width: -webkit-fill-available;\n width: fill;\n flex-direction: row;\n flex-wrap: nowrap;\n align-items: center;\n display: inline-flex;\n}\n\n.stacked-bar-chart-value {\n width: 3rem;\n display: inline-block;\n position: absolute;\n padding: 0 0.5rem;\n text-align: right;\n}\n\n.stacked-bar-chart-base {\n display: flex;\n flex-shrink: 0;\n flex-grow: 0;\n flex-basis: unset;\n}\n\n.stacked-bar-chart-median {\n .stacked-bar-chart-base();\n\n background: var(--color-base-font);\n border: 1px solid rgba(var(--color-base-font-rgb), 0.9);\n padding: 0.3rem 0;\n}\n\n.stacked-bar-chart-rate80 {\n .stacked-bar-chart-base();\n\n background: transparent;\n border: 1px solid rgba(var(--color-base-font-rgb), 0.3);\n padding: 0.3rem 0;\n}\n\n.stacked-bar-chart-rate95 {\n .stacked-bar-chart-base();\n\n background: transparent;\n border-bottom: 1px dotted rgba(var(--color-base-font-rgb), 0.5);\n padding: 0;\n}\n\n.stacked-bar-chart-rate100 {\n .stacked-bar-chart-base();\n\n background: transparent;\n border-left: 1px solid rgba(var(--color-base-font-rgb), 0.9);\n padding: 0.4rem 0;\n width: 1px;\n}\n","// SPDX-License-Identifier: AGPL-3.0-or-later\n\n// Mixins\n.text-size-adjust (@property: 100%) {\n -webkit-text-size-adjust: @property;\n -ms-text-size-adjust: @property;\n -moz-text-size-adjust: @property;\n text-size-adjust: @property;\n}\n\n.rounded-corners (@radius: 10px) {\n border-radius: @radius;\n}\n\n.rounded-right-corners (@radius: 0 10px 10px 0) {\n border-radius: @radius;\n}\n\n.rounded-corners-tiny (@radius: 5px) {\n border-radius: @radius;\n}\n\n// disable user selection\n.disable-user-select () {\n -webkit-touch-callout: none;\n user-select: none;\n}\n\n.show-content-button() {\n padding: 5px 10px;\n .rounded-corners-tiny;\n background: var(--color-show-btn-background);\n color: var(--color-show-btn-font);\n cursor: pointer;\n\n &:hover {\n background: var(--color-btn-background);\n color: var(--color-btn-font);\n }\n}\n",".ltr-left(@offset) {\n left: @offset;\n}\n\n.ltr-right(@offset) {\n right: @offset;\n}\n\n.ltr-margin-right(@offset) {\n margin-right: @offset;\n}\n\n.ltr-margin-left(@offset) {\n margin-left: @offset;\n}\n\n.ltr-border-right(@offset) {\n border-right: @offset;\n}\n\n.ltr-border-left(@offset) {\n border-left: @offset;\n}\n\n.ltr-padding-right(@offset) {\n padding-right: @offset;\n}\n\n.ltr-padding-left(@offset) {\n padding-left: @offset;\n}\n\n.ltr-float-left() {\n float: left;\n}\n\n.ltr-float-right() {\n float: right;\n}\n\n.ltr-text-align-right() {\n text-align: right;\n}\n\n.ltr-rounded-left-corners(@radius) {\n border-radius: @radius 0 0 @radius;\n}\n\n.ltr-rounded-top-left-corners(@radius) {\n border-radius: @radius 0 0 0;\n}\n\n.ltr-rounded-bottom-left-corners(@radius) {\n border-radius: 0 0 0 @radius;\n}\n\n.ltr-rounded-right-corners(@radius) {\n border-radius: 0 @radius @radius 0;\n}\n\n.ltr-rounded-top-right-corners(@radius) {\n border-radius: 0 @radius 0 0;\n}\n\n.ltr-rounded-bottom-right-corners(@radius) {\n border-radius: 0 0 @radius 0;\n}\n\n.ltr-text-align-left() {\n text-align: left;\n}\n\n.ltr-border-left-width(@offset) {\n border-left-width: @offset;\n}\n\n.ltr-border-right-width(@offset) {\n border-right-width: @offset;\n}\n\n.ltr-transform() {\n transform: scale(1, 1);\n}\n\n@import \"style.less\";\n","/*! Autocomplete.js v2.6.3 | license MIT | (c) 2017, Baptiste Donaux | http://autocomplete-js.com */\n\n.autocomplete {\n position: absolute;\n width: @search-width;\n max-height: 0;\n overflow-y: hidden;\n .ltr-text-align-left();\n\n .rounded-corners;\n\n &:active,\n &:focus,\n &:hover {\n background-color: var(--color-autocomplete-background);\n }\n\n &:empty {\n display: none;\n }\n\n > ul {\n list-style-type: none;\n margin: 0;\n padding: 0;\n\n > li {\n cursor: pointer;\n padding: 0.5rem 1rem;\n\n &.active,\n &:active,\n &:focus,\n &:hover {\n background-color: var(--color-autocomplete-background-hover);\n\n a:active,\n a:focus,\n a:hover {\n text-decoration: none;\n }\n }\n\n &.locked {\n cursor: inherit;\n }\n }\n }\n\n &.open {\n display: block;\n background-color: var(--color-autocomplete-background);\n color: var(--color-autocomplete-font);\n max-height: 32rem;\n overflow-y: auto;\n z-index: 100;\n margin-top: 3.5rem;\n border-radius: 0.8rem;\n box-shadow: 0 2px 8px rgb(34 38 46 / 25%);\n\n &:empty {\n display: none;\n }\n }\n}\n\n@media screen and (max-width: @phone) {\n .autocomplete {\n width: 100%;\n\n > ul > li {\n padding: 1rem;\n }\n }\n}\n","#main_results #results.image-detail-open.only_template_images {\n width: min(98%, 59.25rem) !important;\n}\n\n#main_results #results.only_template_images.image-detail-open #backToTop {\n .ltr-left(56.75rem) !important;\n .ltr-right(inherit);\n}\n\narticle.result-images .detail {\n display: none;\n}\n\n#results.image-detail-open article.result-images[data-vim-selected] .detail {\n display: flex;\n flex-direction: column;\n position: fixed;\n .ltr-left(60rem);\n .ltr-right(0);\n top: @search-height;\n transition: top 0.064s ease-in 0s;\n bottom: 0;\n background: var(--color-result-detail-background);\n border: 1px solid var(--color-result-detail-background);\n z-index: 10000;\n padding: 4rem 3rem 3rem 3rem;\n\n a.result-images-source {\n display: block;\n flex: 1;\n text-align: left;\n width: 100%;\n border: none;\n text-decoration: none;\n\n img {\n padding: 0;\n margin: 0;\n border: none;\n object-fit: contain;\n width: inherit;\n height: inherit;\n max-width: 100%;\n min-height: inherit;\n max-height: calc(100vh - 25rem - 7rem);\n background: inherit;\n }\n }\n\n .result-images-labels {\n color: var(--color-result-detail-font);\n max-height: 16rem;\n min-height: 16rem;\n\n hr {\n border-top: 1px solid var(--color-result-detail-hr);\n border-bottom: none;\n }\n\n h4 {\n height: 2rem;\n overflow: hidden;\n text-overflow: ellipsis;\n font-size: 0.9rem;\n }\n\n p {\n color: var(--color-result-detail-label-font);\n font-size: 0.9rem;\n\n span {\n display: inline-block;\n width: 12rem;\n }\n }\n\n h4,\n p,\n a {\n .ltr-text-align-left();\n }\n\n p.result-content {\n height: 2rem;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n p.result-url {\n white-space: nowrap;\n overflow-x: hidden;\n text-overflow: ellipsis;\n }\n\n p.result-content:hover,\n p.result-url:hover {\n position: relative;\n overflow: inherit !important;\n background: var(--color-result-detail-background);\n text-overflow: inherit !important;\n }\n\n a,\n a:visited,\n a:hover,\n a:active {\n color: var(--color-result-detail-link);\n }\n\n a:hover {\n text-decoration: underline;\n }\n }\n\n a.result-detail-close {\n top: 1rem;\n .ltr-left(1rem);\n padding: 0.4rem;\n }\n\n a.result-detail-previous {\n top: 1rem;\n .ltr-right(6rem);\n // center the icon by moving it slightly on the left\n padding-top: 0.4rem;\n .ltr-padding-right(0.5rem);\n padding-bottom: 0.4rem;\n .ltr-padding-left(0.3rem);\n }\n\n a.result-detail-next {\n top: 1rem;\n .ltr-right(2rem);\n padding: 0.4rem;\n }\n\n a.result-detail-close,\n a.result-detail-next,\n a.result-detail-previous {\n border-radius: 50%;\n display: block;\n width: 1.5rem;\n height: 1.5rem;\n position: absolute;\n filter: opacity(40%);\n z-index: 2000002;\n\n span {\n display: block;\n width: 1.5rem;\n height: 1.5rem;\n text-align: center;\n }\n }\n\n a.result-detail-next,\n a.result-detail-previous {\n span::before {\n // vertical center small icons\n vertical-align: sub;\n }\n }\n\n a.result-detail-close,\n a.result-detail-close:visited,\n a.result-detail-close:hover,\n a.result-detail-close:active,\n a.result-detail-previous,\n a.result-detail-previous:visited,\n a.result-detail-previous:hover,\n a.result-detail-previous:active,\n a.result-detail-next,\n a.result-detail-next:visited,\n a.result-detail-next:hover,\n a.result-detail-next:active {\n color: var(--color-result-detail-font);\n background: var(--color-result-detail-background);\n border: 1px solid var(--color-result-detail-font);\n }\n\n a.result-detail-close:focus,\n a.result-detail-close:hover,\n a.result-detail-previous:focus,\n a.result-detail-previous:hover,\n a.result-detail-next:focus,\n a.result-detail-next:hover {\n filter: opacity(80%);\n }\n\n .loader {\n position: absolute;\n top: 1rem;\n .ltr-right(50%);\n border-top: 0.5em solid var(--color-result-detail-loader-border);\n border-right: 0.5em solid var(--color-result-detail-loader-border);\n border-bottom: 0.5em solid var(--color-result-detail-loader-border);\n border-left: 0.5em solid var(--color-result-detail-loader-borderleft);\n }\n}\n\n#results.image-detail-open.scrolling article.result-images[data-vim-selected] .detail {\n top: 0;\n\n a.result-images-source img {\n max-height: calc(100vh - 25rem);\n }\n}\n\n@media screen and (max-width: @tablet) {\n #results.image-detail-open article.result-images[data-vim-selected] .detail {\n top: 0;\n .ltr-left(0);\n\n a.result-images-source {\n display: flex;\n flex-direction: column;\n justify-content: center;\n\n img {\n width: 100%;\n max-height: calc(100vh - 24rem);\n }\n }\n\n a.result-detail-next {\n .ltr-right(1rem);\n }\n }\n}\n\n@media screen and (max-width: @phone) {\n #results.image-detail-open article.result-images[data-vim-selected] .detail {\n top: 0;\n .ltr-left(0);\n padding: 1rem;\n\n a.result-images-source img {\n width: 100%;\n max-height: calc(100vh - 20rem);\n margin: 0;\n }\n\n .result-images-labels p span {\n width: inherit;\n .ltr-margin-right(1rem);\n }\n }\n}\n",".dialog-modal {\n animation-name: dialogmodal;\n animation-duration: 0.13s;\n\n @keyframes dialogmodal {\n 0% {\n opacity: 0;\n }\n\n 50% {\n opacity: 0.5;\n transform: translate(-50%, -50%) scale(1.05);\n }\n }\n}\n\ninput.checkbox-onoff[type=\"checkbox\"]::before {\n transition: left 0.25s;\n}\n","iframe[src^=\"https://w.soundcloud.com\"] {\n height: 120px;\n}\n\niframe[src^=\"https://www.deezer.com\"] {\n // The real size is 92px, but 94px are needed to avoid an inner scrollbar of\n // the embedded HTML.\n height: 94px;\n}\n\niframe[src^=\"https://www.mixcloud.com\"] {\n // the embedded player from mixcloud has some quirks: initial there is an\n // issue with an image URL that is blocked since it is an a Cross-Origin\n // request. The alternative text (Mixcloud Logo then cause an\n // scrollbar in the inner of the iframe we can't avoid. Another quirk comes\n // when pressing the play button, somtimes the shown player has an height of\n // 200px, somtimes 250px.\n height: 250px;\n}\n\niframe[src^=\"https://bandcamp.com/EmbeddedPlayer\"] {\n // show playlist\n height: 350px;\n}\n\niframe[src^=\"https://bandcamp.com/EmbeddedPlayer/track\"] {\n // hide playlist\n height: 120px;\n}\n\niframe[src^=\"https://genius.com/songs\"] {\n height: 65px;\n}\n",".info-page {\n code {\n font-family: monospace;\n color: var(--color-doc-code);\n background-color: var(--color-doc-code-background);\n padding: 2px 5px;\n .rounded-corners(5px);\n }\n}\n","// SPDX-License-Identifier: AGPL-3.0-or-later\n.stats_endpoint {\n .github-issue-button {\n display: block;\n padding: 8px 16px;\n font-family: sans-serif;\n font-size: 16px;\n color: white;\n background-color: #238636;\n border: #2ea043;\n border-radius: 10px !important;\n box-shadow: rgba(0, 0, 0, 0) 0 0 0 0;\n }\n\n .github-issue-button:hover {\n background-color: #2ea043;\n }\n\n .issue-hide {\n display: none;\n }\n\n input[type=checked] {\n position: absolute;\n }\n\n label {\n margin: 1rem 1rem 1rem 0;\n }\n\n .step_content {\n margin: 1rem 1rem 1rem 2rem;\n }\n\n .step1,\n .step2 {\n visibility: hidden;\n }\n\n .step1_delay {\n transition: visibility 0s linear 4s;\n }\n\n #step1:checked ~ .step1,\n #step2:checked ~ .step2 {\n visibility: visible;\n }\n}\n","// SPDX-License-Identifier: AGPL-3.0-or-later\n\n.engine-stats {\n border-spacing: 0;\n border-collapse: collapse;\n\n tr td,\n tr th {\n border-bottom: 1px solid var(--color-result-border);\n padding: 0.25rem;\n }\n\n table.engine-tooltip {\n border-spacing: 0;\n border-collapse: collapse;\n\n td,\n th {\n border: none;\n }\n }\n\n .engine-name {\n width: 20rem;\n }\n\n .engine-score {\n width: 7rem;\n text-align: right;\n }\n\n .engine-reliability {\n text-align: right;\n }\n}\n\ntable.engine-error th.engine-error-type,\ntable.engine-error td.engine-error-type,\nfailed-test {\n width: 10rem;\n}\n\n.engine-errors {\n margin-top: 3rem;\n\n table.engine-error {\n max-width: 1280px;\n margin: 1rem 0 3rem 0;\n border: 1px solid var(--color-result-border);\n .ltr-text-align-left();\n\n tr th,\n tr td {\n padding: 0.5rem;\n }\n\n & span.log_parameters {\n border-right: 1px solid solid var(--color-result-border);\n padding: 0 1rem 0 0;\n margin: 0 0 0 0.5rem;\n }\n }\n}\n\n.bar-chart-value {\n width: 3em;\n display: inline-block;\n text-align: right;\n padding-right: 0.5rem;\n}\n\n.bar-chart-graph {\n width: calc(100% - 5rem);\n display: inline-block;\n}\n\n.bar-chart-bar {\n border: 3px solid #5bc0de;\n margin: 1px 0;\n}\n\n.bar-chart-serie1 {\n border: 3px solid #5bc0de;\n margin: 1px 0;\n float: left;\n}\n\n.bar-chart-serie2 {\n border: 3px solid #deb15b;\n margin: 1px 0;\n float: left;\n}\n\n.bar0 {\n width: 0;\n border: 0;\n}\n\n.generate-bar(100);\n\n.generate-bar(@n, @i: 1) when (@i =< @n) {\n .bar@{i} {\n width: (@i * 100% / @n);\n }\n .generate-bar(@n, (@i + 1));\n}\n","// SPDX-License-Identifier: AGPL-3.0-or-later\n\n.osm-map-box {\n height: 300px;\n width: 100%;\n margin: 10px 0;\n}\n","#main_index {\n margin-top: 26vh;\n}\n\n.index {\n text-align: center;\n\n .title {\n background: url('../img/logo.png') no-repeat;\n filter: var(--invert-logo);\n min-height: 4rem;\n margin: 4rem auto;\n background-position: center;\n background-size: contain;\n }\n\n h1 {\n font-size: 4em;\n visibility: hidden;\n }\n\n #search,\n #search_header {\n margin: 0 auto;\n background: inherit;\n border: inherit;\n padding: 0;\n display: block;\n }\n\n .search_filters {\n display: block;\n margin: 1em 0;\n }\n\n .category label {\n padding: 6px 10px;\n border-bottom: initial !important;\n }\n}\n\n@media screen and (max-width: @tablet) {\n div.title {\n h1 {\n font-size: 1em;\n }\n }\n\n #main_index {\n margin-top: 6em;\n }\n}\n","#tab-content-query table td,\n#tab-content-query table th {\n .ltr-text-align-right() !important;\n height: 3rem;\n}\n\n#main_preferences {\n form {\n width: 100%;\n }\n\n fieldset {\n margin: 8px;\n border: none;\n }\n\n legend {\n margin: 0;\n padding: 5px 0 0 0;\n display: block;\n .ltr-float-left();\n width: 300px;\n }\n\n .value {\n margin: 0;\n padding: 0;\n .ltr-float-left();\n width: 15em;\n\n select,\n input[type=\"text\"] {\n font-size: inherit !important;\n margin-top: 0;\n .ltr-margin-right(1rem);\n margin-bottom: 0;\n .ltr-margin-left(0);\n }\n\n select {\n width: 14rem;\n }\n\n input[type=\"text\"] {\n width: 13.25rem;\n color: var(--color-toolkit-input-text-font);\n border: none;\n background: none repeat scroll 0 0 var(--color-toolkit-select-background);\n padding: 0.2rem 0.4rem;\n height: 2rem;\n .rounded-corners-tiny;\n\n &:hover,\n &:focus {\n background-color: var(--color-toolkit-select-background-hover);\n }\n }\n\n select:focus,\n input:focus {\n outline: none;\n box-shadow: 0 0 1px 1px var(--color-btn-background);\n }\n }\n\n .description {\n margin: 0;\n padding: 5px 0 0 0;\n .ltr-float-right();\n width: 50%;\n color: var(--color-settings-engine-description-font);\n font-size: 90%;\n }\n\n table {\n border-collapse: collapse;\n }\n\n table td {\n text-align: center;\n }\n\n .category {\n .ltr-margin-right(0.5rem);\n\n label {\n border: 2px solid transparent;\n padding: 0.2rem 0.4rem;\n .rounded-corners-tiny;\n }\n }\n\n .category input[type=\"checkbox\"]:checked + label {\n border: 2px solid var(--color-categories-item-border-selected);\n }\n\n table.table_engines {\n td {\n height: 3.75rem;\n }\n\n th.name {\n /* stylelint-disable */\n label {\n cursor: pointer;\n }\n /* stylelint-enable */\n\n .engine-tooltip {\n margin-top: 1.8rem;\n .ltr-left(calc((100% - 85em) / 2 + 10em));\n max-width: 40rem;\n\n .engine-description {\n margin-top: 0.5rem;\n }\n }\n }\n\n .engine-group {\n .ltr-text-align-left();\n font-weight: normal;\n background: var(--color-settings-engine-group-background);\n }\n\n .name,\n .shortcut {\n .ltr-text-align-left();\n }\n }\n\n table.cookies {\n width: 100%;\n direction: ltr;\n\n th,\n td {\n text-align: left;\n font-family: monospace;\n font-size: 1rem;\n padding: 0.5em;\n vertical-align: top;\n }\n\n td:first-child {\n word-break: keep-all;\n width: 14rem;\n padding-right: 1rem;\n }\n\n td:last-child {\n word-break: break-all;\n }\n\n & > tbody > tr:nth-child(even) > th,\n & > tbody > tr:nth-child(even) > td {\n background-color: var(--color-settings-tr-hover);\n }\n }\n\n .preferences_back {\n background: none repeat scroll 0 0 var(--color-btn-background);\n color: var(--color-btn-font);\n border: 0 none;\n .rounded-corners;\n\n cursor: pointer;\n display: inline-block;\n margin: 2px 4px;\n padding: 0.7em;\n\n a {\n color: var(--color-settings-return-font);\n }\n\n a::first-letter {\n text-transform: uppercase;\n }\n }\n\n div.selectable_url {\n pre {\n width: 100%;\n }\n }\n}\n\n@media screen and (max-width: @tablet) {\n .preferences_back {\n clear: both;\n }\n\n .engine-tooltip {\n .ltr-left(10em) !important;\n }\n}\n","/*\n* SearXNG, A privacy-respecting, hackable metasearch engine\n*/\n\n#search {\n padding: 0;\n margin: 0;\n}\n\n#search_header {\n padding-top: 1.5em;\n .ltr-padding-right(2em);\n .ltr-padding-left(@results-offset - 3rem);\n margin: 0;\n background: var(--color-header-background);\n border-bottom: 1px solid var(--color-header-border);\n display: grid;\n column-gap: 1.2rem;\n row-gap: 1rem;\n grid-template-columns: 3rem 1fr;\n grid-template-areas:\n \"logo search\"\n \"spacer categories\";\n}\n\n.category {\n display: inline-block;\n position: relative;\n .ltr-margin-right(1rem);\n padding: 0;\n\n input {\n display: none;\n }\n\n label {\n svg {\n padding-right: 0.2rem;\n }\n\n cursor: pointer;\n padding: 0.2rem 0;\n display: inline-flex;\n text-transform: capitalize;\n font-size: 0.9em;\n border-bottom: 2px solid transparent;\n .disable-user-select;\n\n div.category_name {\n margin: auto 0;\n }\n }\n\n input[type=\"checkbox\"]:checked + label {\n color: var(--color-categories-item-selected-font);\n border-bottom: 2px solid var(--color-categories-item-border-selected);\n }\n}\n\n#search_logo {\n filter: var(--invert-logo);\n grid-area: logo;\n display: flex;\n align-items: center;\n justify-content: center;\n\n svg {\n flex: 1;\n width: 30px;\n height: 30px;\n margin: 0.5rem 0 auto 0;\n }\n}\n\n.search_categories {\n grid-area: categories;\n\n .help {\n display: none;\n }\n\n &:hover .help {\n display: block;\n position: absolute;\n background: var(--color-base-background);\n padding: 1rem 0.6rem 0.6rem 0;\n z-index: 1000;\n width: 100%;\n left: -0.1rem;\n }\n}\n\n#search_view {\n grid-area: search;\n}\n\n.search_box {\n border-radius: 0.8rem;\n width: @search-width;\n display: inline-flex;\n flex-direction: row;\n white-space: nowrap;\n box-shadow: var(--color-search-shadow);\n}\n\n#clear_search {\n display: block;\n border-collapse: separate;\n box-sizing: border-box;\n width: 1.8rem;\n margin: 0;\n padding: 0.8rem 0.2rem;\n background: none repeat scroll 0 0 var(--color-search-background);\n border: none;\n outline: none;\n color: var(--color-search-font);\n font-size: 1.1rem;\n z-index: 10000;\n\n &:hover {\n color: var(--color-search-background-hover);\n }\n\n &.empty * {\n display: none;\n }\n}\n\nhtml.no-js #clear_search.hide_if_nojs {\n display: none;\n}\n\n#q,\n#send_search {\n display: block;\n margin: 0;\n padding: 0.8rem;\n background: none repeat scroll 0 0 var(--color-search-background);\n border: none;\n outline: none;\n color: var(--color-search-font);\n font-size: 1.1rem;\n z-index: 2;\n}\n\n#q {\n width: 100%;\n .ltr-padding-left(1rem);\n .ltr-padding-right(0) !important;\n .ltr-rounded-left-corners(0.8rem);\n}\n\n#q::-ms-clear,\n#q::-webkit-search-cancel-button {\n display: none;\n}\n\n#send_search {\n .ltr-rounded-right-corners(0.8rem);\n\n &:hover {\n cursor: pointer;\n background var(--color-search-background-hover);\n color: var(--color-search-background);\n }\n}\n\n.no-js #clear_search,\n.no-js #send_search {\n width: auto !important;\n .ltr-border-left(1px solid var(--color-search-border));\n}\n\n.search_filters {\n margin-top: 0.6rem;\n .ltr-margin-right(0);\n margin-bottom: 0;\n .ltr-margin-left(@results-offset + 0.6rem);\n display: flex;\n overflow-x: auto;\n overscroll-behavior-inline: contain;\n\n select {\n background-color: inherit;\n\n &:hover,\n &:focus {\n color: var(--color-base-font);\n }\n }\n}\n\n@media screen and (max-width: @tablet) {\n #search_header {\n padding: 1.5em @results-tablet-offset 0 @results-tablet-offset;\n column-gap: @results-tablet-offset;\n }\n\n .search_filters {\n margin-top: 0.6rem;\n .ltr-margin-right(0);\n margin-bottom: 0;\n .ltr-margin-left(@results-tablet-offset + 3rem);\n }\n\n #categories {\n font-size: 90%;\n clear: both;\n\n .checkbox_container {\n margin: auto;\n margin-top: 2px;\n }\n }\n}\n\n@media screen and (max-width: @tablet) and (hover: none) {\n #main_index,\n #main_results {\n #categories_container {\n width: max-content;\n\n .category {\n display: inline-block;\n width: auto;\n }\n }\n\n #categories {\n width: 100%;\n .ltr-text-align-left();\n overflow-x: scroll;\n overflow-y: hidden;\n -webkit-overflow-scrolling: touch;\n }\n }\n}\n\n@media screen and (max-width: @phone) {\n #search_header {\n width: 100%;\n margin: 0;\n padding: 0.1rem 0 0 0;\n column-gap: 0;\n row-gap: 0;\n grid-template-areas:\n \"logo search\"\n \"categories categories\";\n }\n\n .search_logo {\n padding: 0;\n }\n\n .search_box {\n width: 98%;\n display: flex;\n margin: 0 auto;\n }\n\n #q {\n width: 100%;\n flex: 1;\n }\n\n .search_filters {\n margin: 0;\n }\n\n .category {\n display: inline-block;\n width: auto;\n margin: 0;\n\n label {\n padding: 1rem !important;\n margin: 0 !important;\n\n svg {\n display: none;\n }\n }\n }\n\n #search_view:focus-within {\n display: block;\n background-color: var(--color-search-background);\n position: absolute;\n top: 0;\n height: 100%;\n width: 100%;\n z-index: 10000;\n\n .search_box {\n border-bottom: 1px solid var(--color-search-border);\n width: 100%;\n border-radius: 0;\n box-shadow: none;\n\n #send_search {\n .ltr-margin-right(0) !important; // Delete when send_search button is disabled on mobile.\n }\n\n * {\n border: none;\n border-radius: 0;\n box-shadow: none;\n }\n }\n }\n\n #main_results #q:placeholder-shown ~ #send_search {\n .ltr-margin-right(2.6rem);\n transition: margin 0.1s;\n }\n}\n\n@media screen and (max-width: @ultra-small-phone) {\n #search_header {\n grid-template-areas:\n \"search search\"\n \"categories categories\";\n }\n\n #search_logo {\n display: none;\n }\n}\n\n#categories {\n .disable-user-select;\n\n &::-webkit-scrollbar {\n width: 0;\n height: 0;\n }\n}\n\n#categories_container {\n position: relative;\n}\n","/*\n--center-page-width overrides the less variable @results-width when the results are centered\nsee the CSS rules for #results in style.less ( grid-template-columns and gap).\n\nIn this file, the --center-page-width values comes from the Oscar theme (Bootstrap 3).\n\nAll rules starts with \".center-aligment-yes #main_results\" to be enabled only\non the /search URL and when the \"center alignment\" preference is enabled.\n*/\n\n@media screen and (min-width: @phone) {\n .center-aligment-yes #main_results {\n --center-page-width: 48rem;\n }\n}\n\n@media screen and (min-width: 62rem) {\n .center-aligment-yes #main_results {\n --center-page-width: 60rem;\n }\n}\n\n@media screen and (min-width: @tablet) {\n .center-aligment-yes #main_results {\n --center-page-width: 73rem;\n }\n}\n\n@media screen and (min-width: @phone) and (max-width: @tablet) {\n // any change must be reset in @media screen and (min-width: @tablet) { ... }\n .center-aligment-yes #main_results {\n #results {\n grid-template-columns: 60% calc(40% - @results-gap);\n margin-left: 0;\n margin-right: 0;\n }\n\n #urls {\n .ltr-margin-left(3rem);\n }\n\n #sidebar {\n .ltr-margin-right(1rem);\n }\n\n #backToTop {\n .ltr-left(calc(60% + 1rem));\n }\n }\n}\n\n@media screen and (min-width: @tablet) {\n .center-aligment-yes #main_results {\n display: flex;\n flex-direction: column;\n align-items: center;\n\n #search {\n width: 100%;\n display: flex;\n flex-direction: column;\n align-items: center;\n }\n\n #search_header {\n grid-template-columns: calc(50% - 4.5rem - var(--center-page-width) / 2) 3rem var(--center-page-width);\n grid-template-areas: \"na logo search\" \"na spacer categories\";\n column-gap: 1.2rem; // from search.less\n width: 100%;\n padding-left: 0;\n padding-right: 0;\n }\n\n .search_filters {\n .ltr-margin-left(0.5rem);\n width: var(--center-page-width);\n }\n\n #results {\n // from style.less (when screen width = @tablet, reset layout from tablet)\n .ltr-margin-right(2rem);\n .ltr-margin-left(@results-offset);\n //\n\n &.only_template_images,\n &.image-detail-open {\n // * grid-template-columns and .ltr-margin-left are set in style.less\n // * With .image-detail-open.only_template_images, the width is set in detail.less\n // * #results is going to be centered because of the #main_results rules,\n // align-self aligns the results on the left or right according to the language.\n align-self: flex-start;\n }\n\n &:not(.only_template_images):not(.image-detail-open) {\n // the gap is set in style.less\n .ltr-margin-left(1.5rem);\n grid-template-columns: calc(var(--center-page-width) - @results-gap - @results-sidebar-width) @results-sidebar-width;\n\n #backToTop {\n .ltr-left(calc(50% - @results-sidebar-width - @results-gap + 1rem + var(--center-page-width) / 2));\n }\n }\n\n .result .content {\n max-width: inherit;\n }\n }\n\n // from style.less (when screen width = @tablet, reset layout from tablet)\n #urls {\n .ltr-margin-left(0);\n }\n\n #sidebar {\n .ltr-margin-right(0);\n }\n }\n}\n","/*\n* SearXNG, A privacy-respecting, hackable metasearch engine\n*\n* To convert \"style.less\" to \"style.css\" run: $make styles\n*/\n\n// stylelint-disable no-descending-specificity\n\n@import (inline) \"../../node_modules/normalize.css/normalize.css\";\n@import \"definitions.less\";\n@import \"mixins.less\";\n@import \"code.less\";\n@import \"toolkit.less\";\n@import \"autocomplete.less\";\n@import \"detail.less\";\n@import \"animations.less\";\n@import \"embedded.less\";\n@import \"info.less\";\n@import \"new_issue.less\";\n@import \"stats.less\";\n@import \"result_templates.less\";\n\n// for index.html template\n@import \"index.less\";\n\n// for preferences.html template\n@import \"preferences.less\";\n\n// Search-Field\n@import \"search.less\";\n\n// to center the results\n@import \"style-center.less\";\n\n// ion-icon\n.ion-icon {\n display: inline-block;\n vertical-align: bottom;\n line-height: 1;\n text-decoration: inherit;\n .ltr-transform();\n}\n\n.ion-icon-small {\n width: 1rem;\n height: 1rem;\n .ion-icon;\n}\n\n.ion-icon-big {\n width: 1.5rem;\n height: 1.5rem;\n .ion-icon;\n}\n\n// Main LESS-Code\nhtml {\n font-family: sans-serif;\n font-size: 0.9em;\n .text-size-adjust;\n\n color: var(--color-base-font);\n background-color: var(--color-base-background);\n padding: 0;\n margin: 0;\n}\n\nbody,\nmain {\n padding: 0;\n margin: 0;\n}\n\nbody {\n display: flex;\n flex-direction: column;\n height: 100vh;\n margin: 0;\n}\n\nmain {\n width: 100%;\n margin-bottom: 2rem;\n flex: 1;\n}\n\n.page_with_header {\n margin: 2em auto;\n width: 85em;\n}\n\nfooter {\n clear: both;\n min-height: 4rem;\n padding: 1rem 0;\n width: 100%;\n text-align: center;\n background-color: var(--color-footer-background);\n border-top: 1px solid var(--color-footer-border);\n overflow: hidden;\n\n p {\n font-size: 0.9em;\n }\n}\n\n.page_with_header .logo {\n height: 40px;\n filter: var(--invert-logo);\n}\n\ninput[type=\"submit\"],\n#results button[type=\"submit\"] {\n padding: 0.7rem;\n display: inline-block;\n background: var(--color-btn-background);\n color: var(--color-btn-font);\n .rounded-corners;\n\n border: 0;\n cursor: pointer;\n}\n\na {\n text-decoration: none;\n color: var(--color-url-font);\n\n &:visited {\n color: var(--color-url-visited-font);\n\n .highlight {\n color: var(--color-url-visited-font);\n }\n }\n}\n\narticle[data-vim-selected] {\n background: var(--color-result-vim-selected);\n .ltr-border-left(0.2rem solid var(--color-result-vim-arrow));\n .ltr-rounded-right-corners(10px);\n}\n\narticle.result-images[data-vim-selected] {\n background: var(--color-result-vim-arrow);\n border: none;\n .rounded-corners;\n\n .image_thumbnail {\n filter: opacity(60%);\n }\n\n span.title,\n span.source {\n color: var(--color-result-image-span-font-selected);\n }\n}\n\narticle[data-vim-selected].category-videos,\narticle[data-vim-selected].category-news,\narticle[data-vim-selected].category-map,\narticle[data-vim-selected].category-music,\narticle[data-vim-selected].category-files,\narticle[data-vim-selected].category-social {\n border: 1px solid var(--color-result-vim-arrow);\n .rounded-corners;\n}\n\n.result {\n margin: @results-margin 0;\n padding: @result-padding;\n .ltr-border-left(0.2rem solid transparent);\n\n h3 {\n font-size: 1.2rem;\n word-wrap: break-word;\n margin: 0.4rem 0 0.4rem 0;\n padding: 0;\n\n a {\n color: var(--color-result-link-font);\n font-weight: normal;\n font-size: 1.1em;\n\n &:visited {\n color: var(--color-result-link-visited-font);\n }\n\n &:focus,\n &:hover {\n text-decoration: underline;\n border: none;\n outline: none;\n }\n }\n }\n\n .cache_link,\n .proxyfied_link {\n font-size: 0.9em !important;\n }\n\n .content,\n .stat {\n font-size: 0.9em;\n margin: 0;\n padding: 0;\n max-width: 54em;\n word-wrap: break-word;\n line-height: 1.24;\n\n .highlight {\n color: var(--color-result-description-highlight-font);\n background: inherit;\n font-weight: bold;\n }\n }\n\n .altlink a {\n font-size: 0.9em;\n margin: 0 10px 0 0;\n .show-content-button;\n }\n\n .codelines {\n .highlight {\n color: inherit;\n background: inherit;\n font-weight: normal;\n }\n }\n\n .url_wrapper {\n display: flex;\n font-size: 1rem;\n color: var(--color-result-url-font);\n flex-wrap: nowrap;\n overflow: hidden;\n flex-direction: row;\n margin: 0;\n padding: 0;\n\n .url_o1 {\n white-space: nowrap;\n flex-shrink: 1;\n }\n\n .url_o1::after {\n content: \" \";\n width: 1ch;\n display: inline-block;\n }\n\n .url_o2 {\n overflow: hidden;\n white-space: nowrap;\n flex-basis: content;\n flex-grow: 0;\n flex-shrink: 1;\n text-align: right;\n\n .url_i2 {\n float: right;\n }\n }\n }\n\n .published_date,\n .result_length,\n .result_author,\n .result_shipping,\n .result_source_country {\n font-size: 0.8em;\n color: var(--color-result-publishdate-font);\n }\n\n .result_price {\n font-size: 1.2em;\n color: var(--color-result-description-highlight-font);\n }\n\n img {\n &.thumbnail {\n .ltr-float-left();\n padding-top: 0.6rem;\n .ltr-padding-right(1rem);\n width: 20rem;\n height: unset; // remove heigth value that was needed for lazy loading\n }\n\n &.image {\n .ltr-float-left();\n padding-top: 0.6rem;\n .ltr-padding-right(1rem);\n width: 7rem;\n max-height: 7rem;\n object-fit: scale-down;\n object-position: right top;\n }\n }\n\n .break {\n clear: both;\n }\n}\n\n.result-paper {\n .attributes {\n display: table;\n border-spacing: 0.125rem;\n\n div {\n display: table-row;\n\n span {\n font-size: 0.9rem;\n margin-top: 0.25rem;\n display: table-cell;\n\n time {\n font-size: 0.9rem;\n }\n }\n\n span:first-child {\n color: var(--color-base-font);\n min-width: 10rem;\n }\n\n span:nth-child(2) {\n color: var(--color-result-publishdate-font);\n }\n }\n }\n\n .content {\n margin-top: 0.25rem;\n }\n\n .comments {\n font-size: 0.9rem;\n margin: 0.25rem 0 0 0;\n padding: 0;\n word-wrap: break-word;\n line-height: 1.24;\n font-style: italic;\n }\n}\n\n.template_group_images {\n display: flex;\n flex-wrap: wrap;\n}\n\n.template_group_images::after {\n flex-grow: 10;\n content: \"\";\n}\n\n.category-videos,\n.category-news,\n.category-map,\n.category-music,\n.category-files,\n.category-social {\n border: 1px solid var(--color-result-border);\n margin: 0 @results-tablet-offset 1rem @results-tablet-offset !important;\n .rounded-corners;\n}\n\n.category-social .image {\n width: auto !important;\n min-width: 48px;\n min-height: 48px;\n padding: 0 5px 25px 0 !important;\n}\n\n.audio-control audio {\n width: 100%;\n padding: 10px 0 0 0;\n}\n\n.embedded-content iframe {\n width: 100%;\n padding: 10px 0 0 0;\n}\n\n.result-videos .content {\n overflow: hidden;\n}\n\n.result-videos .embedded-video iframe {\n width: 100%;\n aspect-ratio: 16 / 9;\n padding: 10px 0 0 0;\n}\n\n@supports not (aspect-ratio: 1 / 1) {\n // support older browsers which do not have aspect-ratio\n // https://caniuse.com/?search=aspect-ratio\n .result-videos .embedded-video iframe {\n height: calc(@results-width * 9 / 16);\n }\n}\n\n.engines {\n .ltr-float-right();\n display: flex;\n flex-wrap: wrap;\n justify-content: flex-end;\n color: var(--color-result-engines-font);\n\n span {\n font-size: smaller;\n margin-top: 0;\n margin-bottom: 0;\n .ltr-margin-right(0.5rem);\n .ltr-margin-left(0);\n }\n}\n\n.small_font {\n font-size: 0.8em;\n}\n\n.highlight {\n color: var(--color-result-link-font-highlight);\n background: inherit;\n}\n\n.empty_element {\n font-style: italic;\n}\n\n.result-images {\n flex-grow: 1;\n padding: 0.5rem 0.5rem 3rem 0.5rem;\n margin: 0.25rem;\n border: none !important;\n height: @results-image-row-height;\n\n & > a {\n position: relative;\n }\n\n img {\n margin: 0;\n padding: 0;\n border: none;\n height: 100%;\n width: 100%;\n object-fit: cover;\n vertical-align: bottom;\n background: var(--color-result-image-background);\n }\n\n span.title,\n span.source {\n display: block;\n position: absolute;\n\n width: 100%;\n font-size: 0.9rem;\n color: var(--color-result-image-span-font);\n padding: 0.5rem 0 0 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n\n span.source {\n padding: 1.8rem 0 0 0;\n font-size: 0.7rem;\n }\n}\n\n.result-map {\n img.image {\n .ltr-float-right() !important;\n height: 100px !important;\n width: auto !important;\n }\n\n table {\n font-size: 0.9em;\n width: auto;\n border-collapse: separate;\n border-spacing: 0 0.35rem;\n\n th {\n font-weight: inherit;\n width: 17rem;\n vertical-align: top;\n .ltr-text-align-left();\n }\n\n td {\n vertical-align: top;\n .ltr-text-align-left();\n }\n }\n}\n\n.hidden {\n display: none !important;\n}\n\n#results {\n margin-top: 1rem;\n .ltr-margin-right(2rem);\n margin-bottom: 0;\n .ltr-margin-left(@results-offset);\n display: grid;\n grid-template-columns: @results-width @results-sidebar-width;\n grid-template-rows: min-content min-content 1fr min-content;\n gap: 0 @results-gap;\n grid-template-areas:\n \"corrections sidebar\"\n \"answers sidebar\"\n \"urls sidebar\"\n \"pagination sidebar\";\n}\n\n#results #sidebar *:first-child,\n#results #urls *:first-child {\n margin-top: 0;\n}\n\n#urls {\n padding: 0;\n grid-area: urls;\n}\n\n#suggestions {\n .wrapper {\n display: flex;\n flex-flow: column;\n justify-content: flex-end;\n flex-wrap: wrap;\n flex-direction: row;\n\n form {\n display: inline-block;\n flex: 1 1 50%;\n }\n }\n}\n\n#suggestions,\n#infoboxes {\n input {\n padding: 0;\n margin: 3px;\n font-size: 0.9em;\n display: inline-block;\n background: transparent;\n color: var(--color-result-search-url-font);\n cursor: pointer;\n width: calc(100%);\n text-overflow: ellipsis;\n overflow: hidden;\n text-align: left;\n }\n\n input[type=\"submit\"],\n .infobox .url a {\n color: var(--color-result-link-font);\n text-decoration: none;\n font-size: 0.9rem;\n\n &:hover {\n text-decoration: underline;\n }\n }\n}\n\n#corrections {\n grid-area: corrections;\n display: flex;\n flex-flow: row wrap;\n margin: 0 0 1em 0;\n\n h4,\n input[type=\"submit\"] {\n display: inline-block;\n padding: 0.5rem;\n margin: 0.5rem;\n }\n\n input[type=\"submit\"] {\n font-size: 0.8rem;\n .rounded-corners-tiny;\n }\n}\n\n#suggestions .title,\n#search_url .title,\n#apis .title {\n margin: 2em 0 0.5em 0;\n color: var(--color-base-font);\n}\n\n#answers {\n grid-area: answers;\n background: var(--color-answer-background);\n padding: @result-padding;\n margin: 1rem 0;\n margin-top: 0;\n color: var(--color-answer-font);\n .rounded-corners;\n\n h4 {\n display: none;\n }\n\n span {\n overflow-wrap: anywhere;\n }\n}\n\n#infoboxes {\n form {\n min-width: 210px;\n }\n}\n\n#sidebar {\n grid-area: sidebar;\n word-wrap: break-word;\n color: var(--color-sidebar-font);\n\n .infobox {\n margin: 10px 0 10px;\n border: 1px solid var(--color-sidebar-border);\n padding: 1rem;\n font-size: 0.9em;\n .rounded-corners;\n\n h2 {\n margin: 0 0 0.5em 0;\n }\n\n img {\n max-width: 100%;\n max-height: 12em;\n display: block;\n margin: 0 auto;\n padding: 0;\n }\n\n dt {\n font-weight: bold;\n }\n\n .attributes {\n dl {\n margin: 0.5em 0;\n }\n\n dt {\n display: inline;\n margin-top: 0.5em;\n .ltr-margin-right(0.25em);\n margin-bottom: 0.5em;\n .ltr-margin-left(0);\n padding: 0;\n }\n\n dd {\n display: inline;\n margin: 0.5em 0;\n padding: 0;\n }\n }\n\n input {\n font-size: 1em;\n }\n\n br {\n clear: both;\n }\n\n .attributes,\n .urls {\n clear: both;\n }\n }\n}\n\n#search_url {\n margin-top: 8px;\n\n div.selectable_url {\n pre {\n width: 200em;\n }\n }\n}\n\n#links_on_top {\n position: absolute;\n .ltr-right(1.8rem);\n .ltr-text-align-right();\n top: 2.2rem;\n padding: 0;\n border: 0;\n display: flex;\n align-items: center;\n font-size: 1em;\n color: var(--color-search-font);\n\n a {\n display: flex;\n align-items: center;\n margin-left: 1em;\n\n svg {\n font-size: 1.2em;\n .ltr-margin-right(0.125em);\n }\n }\n\n a,\n a:link *,\n a:hover *,\n a:visited *,\n a:active * {\n color: var(--color-search-font);\n }\n}\n\n#pagination {\n grid-area: pagination;\n\n br {\n clear: both;\n }\n}\n\n.numbered_pagination {\n display: flex;\n flex-direction: row;\n justify-content: center;\n align-items: center;\n overflow: hidden;\n}\n\n.page_number {\n background: transparent !important;\n color: var(--color-result-link-font) !important;\n text-decoration: underline;\n}\n\n.page_number_current {\n background: transparent;\n color: var(--color-result-link-visited-font);\n border: none;\n}\n\n#apis {\n margin-top: 8px;\n clear: both;\n}\n\n#backToTop {\n border: 1px solid var(--color-backtotop-border);\n margin: 0;\n padding: 0;\n font-size: 1em;\n background: var(--color-backtotop-background);\n position: fixed;\n bottom: 8rem;\n .ltr-left(@results-width + @results-offset + (0.5 * @results-gap - 1.2em));\n transition: opacity 0.5s;\n opacity: 0;\n .rounded-corners;\n\n a {\n display: block;\n margin: 0;\n padding: 0.7em;\n }\n\n a,\n a:visited,\n a:hover,\n a:active {\n color: var(--color-backtotop-font);\n }\n}\n\n#results.scrolling #backToTop {\n opacity: 1;\n}\n\n/*\n tablet layout\n*/\n\n.results-tablet() {\n #links_on_top {\n span {\n display: none;\n }\n }\n\n .page_with_header {\n margin: 2rem 0.5rem;\n width: auto;\n }\n\n #infoboxes {\n position: inherit;\n max-width: inherit;\n\n .infobox {\n clear: both;\n\n img {\n .ltr-float-left();\n max-width: 10em;\n margin-top: 0.5em;\n .ltr-margin-right(0.5em);\n margin-bottom: 0.5em;\n .ltr-margin-left(0);\n }\n }\n }\n\n #sidebar {\n margin: 0 @results-tablet-offset @results-margin @results-tablet-offset;\n padding: 0;\n float: none;\n border: none;\n width: auto;\n\n input {\n border: 0;\n }\n }\n\n #apis {\n display: none;\n }\n\n #search_url {\n display: none;\n }\n\n .result {\n .thumbnail {\n max-width: 98%;\n }\n\n .url {\n span.url {\n display: block;\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n width: 100%;\n }\n }\n\n .engines {\n .ltr-float-right();\n display: flex;\n flex-wrap: wrap;\n justify-content: flex-end;\n padding: 0 0 3px 0;\n }\n }\n\n .result-images {\n border-bottom: none !important;\n }\n\n .image_result {\n max-width: 98%;\n\n img {\n max-width: 98%;\n }\n }\n\n #backToTop {\n display: none;\n }\n\n #pagination {\n margin: 2rem 0 0 0 !important;\n }\n\n #main_results div#results {\n margin: 1rem auto 0 auto;\n justify-content: center;\n display: grid;\n grid-template-columns: @results-width;\n grid-template-rows: min-content min-content min-content 1fr min-content min-content;\n gap: 0;\n grid-template-areas:\n \"corrections\"\n \"answers\"\n \"sidebar\"\n \"urls\"\n \"pagination\";\n }\n}\n\n@media screen and (max-width: calc(@tablet - 0.5px)) {\n #links_on_top {\n span {\n display: none;\n }\n }\n}\n\n@media screen and (max-width: 52rem) {\n body.results_endpoint {\n #links_on_top {\n .link_on_top_about,\n .link_on_top_donate {\n display: none;\n }\n }\n }\n}\n\n@media screen and (min-width: @phone) and (max-width: @tablet) {\n // when .center-aligment-yes, see style-center.less\n // the media query includes \"min-width: @phone\"\n // because the phone layout includes the tablet layout unconditionally.\n .center-aligment-no {\n .results-tablet();\n }\n}\n\n/* Misc */\n\n#main_results div#results.only_template_images {\n margin: 1rem @results-tablet-offset 0 @results-tablet-offset;\n display: grid;\n grid-template-columns: 100%;\n grid-template-rows: min-content min-content min-content 1fr min-content;\n gap: 0;\n grid-template-areas:\n \"corrections\"\n \"answers\"\n \"sidebar\"\n \"urls\"\n \"pagination\";\n\n #sidebar {\n display: none;\n }\n\n #urls {\n margin: 0;\n display: flex;\n flex-wrap: wrap;\n }\n\n #urls::after {\n flex-grow: 10;\n content: \"\";\n }\n\n #backToTop {\n .ltr-left(auto);\n .ltr-right(1rem);\n }\n\n #pagination {\n .ltr-margin-right(4rem);\n }\n}\n\n/*\n phone layout\n*/\n\n@media screen and (max-width: @phone) {\n // based on the tablet layout\n .results-tablet();\n\n html {\n background-color: var(--color-base-background-mobile);\n }\n\n #main_results div#results {\n grid-template-columns: 100%;\n margin: 1rem 0 0 0;\n }\n\n #links_on_top {\n top: 0.8rem;\n .ltr-right(0.7rem);\n }\n\n #main_index #links_on_top {\n top: 0.5rem;\n .ltr-right(0.5rem);\n }\n\n #results {\n margin: 0;\n padding: 0;\n }\n\n #pagination {\n margin: 2rem 1rem 0 1rem !important;\n }\n\n article[data-vim-selected] {\n border: 1px solid var(--color-result-vim-arrow);\n .rounded-corners;\n }\n\n .result {\n background: var(--color-result-background);\n margin: 1rem 0;\n }\n\n .result-images {\n margin: 0;\n height: @results-image-row-height-phone;\n background: var(--color-base-background-mobile);\n }\n\n .infobox {\n border: none !important;\n background-color: var(--color-sidebar-background);\n }\n\n .numbered_pagination {\n display: none;\n }\n\n .result-paper {\n .attributes {\n display: block;\n\n div {\n display: block;\n\n span {\n display: inline;\n }\n\n span:first-child {\n font-weight: bold;\n }\n\n span:nth-child(2) {\n .ltr-margin-left(0.5rem);\n }\n }\n }\n }\n}\n\n/*\n small-phone layout\n*/\n\n@media screen and (max-width: @small-phone) {\n .result-videos {\n img.thumbnail {\n float: none !important;\n }\n\n .content {\n overflow: inherit;\n }\n }\n}\n\npre code {\n white-space: pre-wrap;\n}\n"]} \ No newline at end of file diff --git a/searx/static/themes/magi/gruntfile.js b/searx/static/themes/magi/gruntfile.js new file mode 100644 index 000000000..66d9f15e0 --- /dev/null +++ b/searx/static/themes/magi/gruntfile.js @@ -0,0 +1,307 @@ +/* SPDX-License-Identifier: AGPL-3.0-or-later */ + +module.exports = function (grunt) { + + const eachAsync = require('each-async'); + + function file_exists (filepath) { + // filter function to exit grunt task with error if a (src) file not exists + if (!grunt.file.exists(filepath)) { + grunt.fail.fatal('Could not find: ' + filepath, 42); + } else { + return true; + } + } + + grunt.initConfig({ + + _brand: '../../../../src/brand', + _templates: '../../../templates', + + pkg: grunt.file.readJSON('package.json'), + watch: { + scripts: { + files: ['gruntfile.js', 'src/**'], + tasks: [ + 'eslint', + 'copy', + 'uglify', + 'less', + 'image', + 'svg2png', + 'svg2jinja' + ] + } + }, + eslint: { + options: { + overrideConfigFile: '.eslintrc.json', + failOnError: true, + fix: grunt.option('fix') + }, + target: [ + 'gruntfile.js', + 'svg4web.svgo.js', + 'src/js/main/*.js', + 'src/js/head/*.js', + ], + }, + stylelint: { + options: { + formatter: 'unix', + }, + src: [ + 'src/less/**/*.less', + ] + }, + copy: { + js: { + expand: true, + cwd: './node_modules', + dest: './js/', + flatten: true, + filter: 'isFile', + timestamp: true, + src: [ + './leaflet/dist/leaflet.js', + ] + }, + css: { + expand: true, + cwd: './node_modules', + dest: './css/', + flatten: true, + filter: 'isFile', + timestamp: true, + src: [ + './leaflet/dist/leaflet.css', + ] + }, + leaflet_images: { + expand: true, + cwd: './node_modules', + dest: './css/images/', + flatten: true, + filter: 'isFile', + timestamp: true, + src: [ + './leaflet/dist/images/*.png', + ] + }, + }, + uglify: { + options: { + output: { + comments: 'some' + }, + ie8: false, + warnings: true, + compress: false, + mangle: true, + sourceMap: { + includeSources: true + } + }, + dist: { + files: { + 'js/magi.head.min.js': ['src/js/head/*.js'], + 'js/magi.min.js': [ + 'src/js/main/*.js', + './node_modules/autocomplete-js/dist/autocomplete.js' + ] + } + } + }, + less: { + production: { + options: { + paths: ["less"], + plugins: [ + new (require('less-plugin-clean-css'))() + ], + sourceMap: true, + sourceMapURL: (name) => { const s = name.split('/'); return s[s.length - 1] + '.map'; }, + outputSourceFiles: true, + }, + files: [ + { + src: ['src/less/style-ltr.less'], + dest: 'css/searxng.min.css', + nonull: true, + filter: file_exists, + }, + { + src: ['src/less/style-rtl.less'], + dest: 'css/searxng-rtl.min.css', + nonull: true, + filter: file_exists, + }, + ], + }, + }, + image: { + svg4web: { + options: { + svgo: ['--config', 'svg4web.svgo.js'] + }, + files: { + '<%= _templates %>/simple/searxng-wordmark.min.svg': '<%= _brand %>/searxng-wordmark.svg', + 'img/logo.svg': '<%= _brand %>/logo.svg', + 'img/img_load_error.svg': '<%= _brand %>/img_load_error.svg' + } + }, + favicon: { + options: { + svgo: ['--config', 'svg4favicon.svgo.js'] + }, + files: { + 'img/favicon.svg': '<%= _brand %>/searxng-wordmark.svg' + } + }, + }, + svg2png: { + favicon: { + files: { + 'img/favicon.png': '<%= _brand %>/searxng-wordmark.svg', + 'img/logo.png': '<%= _brand %>/logo.svg', + } + } + }, + svg2jinja: { + all: { + src: { + 'warning': 'node_modules/ionicons/dist/svg/alert-outline.svg', + 'close': 'node_modules/ionicons/dist/svg/close-outline.svg', + 'chevron-up-outline': 'node_modules/ionicons/dist/svg/chevron-up-outline.svg', + 'chevron-right': 'node_modules/ionicons/dist/svg/chevron-forward-outline.svg', + 'chevron-left': 'node_modules/ionicons/dist/svg/chevron-back-outline.svg', + 'menu-outline': 'node_modules/ionicons/dist/svg/settings-outline.svg', + 'ellipsis-vertical-outline': 'node_modules/ionicons/dist/svg/ellipsis-vertical-outline.svg', + 'magnet-outline': 'node_modules/ionicons/dist/svg/magnet-outline.svg', + 'globe-outline': 'node_modules/ionicons/dist/svg/globe-outline.svg', + 'search-outline': 'node_modules/ionicons/dist/svg/search-outline.svg', + 'image-outline': 'node_modules/ionicons/dist/svg/image-outline.svg', + 'play-outline': 'node_modules/ionicons/dist/svg/play-outline.svg', + 'newspaper-outline': 'node_modules/ionicons/dist/svg/newspaper-outline.svg', + 'location-outline': 'node_modules/ionicons/dist/svg/location-outline.svg', + 'musical-notes-outline': 'node_modules/ionicons/dist/svg/musical-notes-outline.svg', + 'layers-outline': 'node_modules/ionicons/dist/svg/layers-outline.svg', + 'school-outline': 'node_modules/ionicons/dist/svg/school-outline.svg', + 'file-tray-full-outline': 'node_modules/ionicons/dist/svg/file-tray-full-outline.svg', + 'people-outline': 'node_modules/ionicons/dist/svg/people-outline.svg', + 'heart-outline': 'node_modules/ionicons/dist/svg/heart-outline.svg', + 'information-circle-outline': 'src/svg/information-circle-outline.svg', + }, + dest: '../../../templates/simple/icons.html', + }, + }, + }); + + grunt.registerMultiTask('svg2jinja', 'Create Jinja2 macro', function () { + const ejs = require('ejs'), svgo = require('svgo'); + const icons = {} + for (const iconName in this.data.src) { + const svgFileName = this.data.src[iconName]; + try { + const svgContent = grunt.file.read(svgFileName, { encoding: 'utf8' }) + const svgoResult = svgo.optimize(svgContent, { + path: svgFileName, + multipass: true, + plugins: [ + { + name: "removeTitle", + }, + { + name: "removeXMLNS", + }, + { + name: "addAttributesToSVGElement", + params: { + attributes: [ + { "aria-hidden": "true" } + ] + } + } + ] + }); + icons[iconName] = svgoResult.data.replace("'", "\\'"); + } catch (err) { + grunt.log.error(err); + } + } + const template = `{# this file was generated by searx/static/themes/simple/gruntfile.js #} +{%- set icons = { +<% for (const iconName in icons) { %> '<%- iconName %>':'<%- icons[iconName] %>', +<% } %> +} +-%} + +{% macro icon(action, alt) -%} + {{ icons[action] | replace("ionicon", "ion-icon") | safe }} +{%- endmacro %} + +{% macro icon_small(action) -%} + {{ icons[action] | replace("ionicon", "ion-icon-small") | safe }} +{%- endmacro %} + +{% macro icon_big(action, alt) -%} + {{ icons[action] | replace("ionicon", "ion-icon-big") | safe }} +{%- endmacro %} +`; + const result = ejs.render(template, { icons }); + grunt.file.write(this.data.dest, result, { encoding: 'utf8' }); + grunt.log.ok(this.data.dest + " created"); + }); + + grunt.registerMultiTask('svg2png', 'Convert SVG to PNG', function () { + const sharp = require('sharp'), done = this.async(); + eachAsync(this.files, async (file, _index, next) => { + try { + if (file.src.length != 1) { + next("this task supports only one source per destination"); + } + const info = await sharp(file.src[0]) + .png({ + force: true, + compressionLevel: 9, + palette: true, + }) + .toFile(file.dest); + grunt.log.ok(file.dest + ' created (' + info.size + ' bytes, ' + info.width + 'px * ' + info.height + 'px)'); + next(); + } catch (error) { + grunt.fatal(error); + next(error); + } + }, error => { + if (error) { + grunt.fatal(error); + done(error); + } else { + done(); + } + }); + }); + + grunt.loadNpmTasks('grunt-contrib-watch'); + grunt.loadNpmTasks('grunt-contrib-copy'); + grunt.loadNpmTasks('grunt-contrib-uglify'); + grunt.loadNpmTasks('grunt-image'); + grunt.loadNpmTasks('grunt-contrib-less'); + grunt.loadNpmTasks('grunt-contrib-cssmin'); + grunt.loadNpmTasks('grunt-stylelint'); + grunt.loadNpmTasks('grunt-eslint'); + + grunt.registerTask('test', ['eslint']); + + grunt.registerTask('default', [ + 'eslint', + 'stylelint', + 'copy', + 'uglify', + 'less', + 'image', + 'svg2png', + 'svg2jinja', + ]); +}; diff --git a/searx/static/themes/magi/img/favicon.png b/searx/static/themes/magi/img/favicon.png new file mode 100644 index 000000000..72e7ae9f6 Binary files /dev/null and b/searx/static/themes/magi/img/favicon.png differ diff --git a/searx/static/themes/magi/img/favicon.svg b/searx/static/themes/magi/img/favicon.svg new file mode 100644 index 000000000..2c316d789 --- /dev/null +++ b/searx/static/themes/magi/img/favicon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/searx/static/themes/magi/img/img_load_error.svg b/searx/static/themes/magi/img/img_load_error.svg new file mode 100644 index 000000000..27ff0f056 --- /dev/null +++ b/searx/static/themes/magi/img/img_load_error.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/searx/static/themes/magi/img/logo.png b/searx/static/themes/magi/img/logo.png new file mode 100644 index 000000000..6e4c8b264 Binary files /dev/null and b/searx/static/themes/magi/img/logo.png differ diff --git a/searx/static/themes/magi/img/logo.svg b/searx/static/themes/magi/img/logo.svg new file mode 100644 index 000000000..b0dfff720 --- /dev/null +++ b/searx/static/themes/magi/img/logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/searx/static/themes/magi/js/leaflet.js b/searx/static/themes/magi/js/leaflet.js new file mode 100644 index 000000000..047bfe7eb --- /dev/null +++ b/searx/static/themes/magi/js/leaflet.js @@ -0,0 +1,6 @@ +/* @preserve + * Leaflet 1.9.3, a JS library for interactive maps. https://leafletjs.com + * (c) 2010-2022 Vladimir Agafonkin, (c) 2010-2011 CloudMade + */ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).leaflet={})}(this,function(t){"use strict";function l(t){for(var e,i,n=1,o=arguments.length;n=this.min.x&&i.x<=this.max.x&&e.y>=this.min.y&&i.y<=this.max.y},intersects:function(t){t=_(t);var e=this.min,i=this.max,n=t.min,t=t.max,o=t.x>=e.x&&n.x<=i.x,t=t.y>=e.y&&n.y<=i.y;return o&&t},overlaps:function(t){t=_(t);var e=this.min,i=this.max,n=t.min,t=t.max,o=t.x>e.x&&n.xe.y&&n.y=n.lat&&i.lat<=o.lat&&e.lng>=n.lng&&i.lng<=o.lng},intersects:function(t){t=g(t);var e=this._southWest,i=this._northEast,n=t.getSouthWest(),t=t.getNorthEast(),o=t.lat>=e.lat&&n.lat<=i.lat,t=t.lng>=e.lng&&n.lng<=i.lng;return o&&t},overlaps:function(t){t=g(t);var e=this._southWest,i=this._northEast,n=t.getSouthWest(),t=t.getNorthEast(),o=t.lat>e.lat&&n.late.lng&&n.lng","http://www.w3.org/2000/svg"===(Ft.firstChild&&Ft.firstChild.namespaceURI));function y(t){return 0<=navigator.userAgent.toLowerCase().indexOf(t)}var b={ie:pt,ielt9:mt,edge:n,webkit:ft,android:gt,android23:vt,androidStock:yt,opera:xt,chrome:wt,gecko:bt,safari:Pt,phantom:Lt,opera12:o,win:Tt,ie3d:Mt,webkit3d:zt,gecko3d:_t,any3d:Ct,mobile:Zt,mobileWebkit:St,mobileWebkit3d:Et,msPointer:kt,pointer:Ot,touch:Bt,touchNative:At,mobileOpera:It,mobileGecko:Rt,retina:Nt,passiveEvents:Dt,canvas:jt,svg:Ht,vml:!Ht&&function(){try{var t=document.createElement("div"),e=(t.innerHTML='',t.firstChild);return e.style.behavior="url(#default#VML)",e&&"object"==typeof e.adj}catch(t){return!1}}(),inlineSvg:Ft,mac:0===navigator.platform.indexOf("Mac"),linux:0===navigator.platform.indexOf("Linux")},Wt=b.msPointer?"MSPointerDown":"pointerdown",Ut=b.msPointer?"MSPointerMove":"pointermove",Vt=b.msPointer?"MSPointerUp":"pointerup",qt=b.msPointer?"MSPointerCancel":"pointercancel",Gt={touchstart:Wt,touchmove:Ut,touchend:Vt,touchcancel:qt},Kt={touchstart:function(t,e){e.MSPOINTER_TYPE_TOUCH&&e.pointerType===e.MSPOINTER_TYPE_TOUCH&&O(e);ee(t,e)},touchmove:ee,touchend:ee,touchcancel:ee},Yt={},Xt=!1;function Jt(t,e,i){return"touchstart"!==e||Xt||(document.addEventListener(Wt,$t,!0),document.addEventListener(Ut,Qt,!0),document.addEventListener(Vt,te,!0),document.addEventListener(qt,te,!0),Xt=!0),Kt[e]?(i=Kt[e].bind(this,i),t.addEventListener(Gt[e],i,!1),i):(console.warn("wrong event specified:",e),u)}function $t(t){Yt[t.pointerId]=t}function Qt(t){Yt[t.pointerId]&&(Yt[t.pointerId]=t)}function te(t){delete Yt[t.pointerId]}function ee(t,e){if(e.pointerType!==(e.MSPOINTER_TYPE_MOUSE||"mouse")){for(var i in e.touches=[],Yt)e.touches.push(Yt[i]);e.changedTouches=[e],t(e)}}var ie=200;function ne(t,i){t.addEventListener("dblclick",i);var n,o=0;function e(t){var e;1!==t.detail?n=t.detail:"mouse"===t.pointerType||t.sourceCapabilities&&!t.sourceCapabilities.firesTouchEvents||((e=Ne(t)).some(function(t){return t instanceof HTMLLabelElement&&t.attributes.for})&&!e.some(function(t){return t instanceof HTMLInputElement||t instanceof HTMLSelectElement})||((e=Date.now())-o<=ie?2===++n&&i(function(t){var e,i,n={};for(i in t)e=t[i],n[i]=e&&e.bind?e.bind(t):e;return(t=n).type="dblclick",n.detail=2,n.isTrusted=!1,n._simulated=!0,n}(t)):n=1,o=e))}return t.addEventListener("click",e),{dblclick:i,simDblclick:e}}var oe,se,re,ae,he,le,ue=we(["transform","webkitTransform","OTransform","MozTransform","msTransform"]),ce=we(["webkitTransition","transition","OTransition","MozTransition","msTransition"]),de="webkitTransition"===ce||"OTransition"===ce?ce+"End":"transitionend";function _e(t){return"string"==typeof t?document.getElementById(t):t}function pe(t,e){var i=t.style[e]||t.currentStyle&&t.currentStyle[e];return"auto"===(i=i&&"auto"!==i||!document.defaultView?i:(t=document.defaultView.getComputedStyle(t,null))?t[e]:null)?null:i}function P(t,e,i){t=document.createElement(t);return t.className=e||"",i&&i.appendChild(t),t}function T(t){var e=t.parentNode;e&&e.removeChild(t)}function me(t){for(;t.firstChild;)t.removeChild(t.firstChild)}function fe(t){var e=t.parentNode;e&&e.lastChild!==t&&e.appendChild(t)}function ge(t){var e=t.parentNode;e&&e.firstChild!==t&&e.insertBefore(t,e.firstChild)}function ve(t,e){return void 0!==t.classList?t.classList.contains(e):0<(t=xe(t)).length&&new RegExp("(^|\\s)"+e+"(\\s|$)").test(t)}function M(t,e){var i;if(void 0!==t.classList)for(var n=W(e),o=0,s=n.length;othis.options.maxZoom)?this.setZoom(t):this},panInsideBounds:function(t,e){this._enforcingBounds=!0;var i=this.getCenter(),t=this._limitCenter(i,this._zoom,g(t));return i.equals(t)||this.panTo(t,e),this._enforcingBounds=!1,this},panInside:function(t,e){var i=m((e=e||{}).paddingTopLeft||e.padding||[0,0]),n=m(e.paddingBottomRight||e.padding||[0,0]),o=this.project(this.getCenter()),t=this.project(t),s=this.getPixelBounds(),i=_([s.min.add(i),s.max.subtract(n)]),s=i.getSize();return i.contains(t)||(this._enforcingBounds=!0,n=t.subtract(i.getCenter()),i=i.extend(t).getSize().subtract(s),o.x+=n.x<0?-i.x:i.x,o.y+=n.y<0?-i.y:i.y,this.panTo(this.unproject(o),e),this._enforcingBounds=!1),this},invalidateSize:function(t){if(!this._loaded)return this;t=l({animate:!1,pan:!0},!0===t?{animate:!0}:t);var e=this.getSize(),i=(this._sizeChanged=!0,this._lastCenter=null,this.getSize()),n=e.divideBy(2).round(),o=i.divideBy(2).round(),n=n.subtract(o);return n.x||n.y?(t.animate&&t.pan?this.panBy(n):(t.pan&&this._rawPanBy(n),this.fire("move"),t.debounceMoveend?(clearTimeout(this._sizeTimer),this._sizeTimer=setTimeout(a(this.fire,this,"moveend"),200)):this.fire("moveend")),this.fire("resize",{oldSize:e,newSize:i})):this},stop:function(){return this.setZoom(this._limitZoom(this._zoom)),this.options.zoomSnap||this.fire("viewreset"),this._stop()},locate:function(t){var e,i;return t=this._locateOptions=l({timeout:1e4,watch:!1},t),"geolocation"in navigator?(e=a(this._handleGeolocationResponse,this),i=a(this._handleGeolocationError,this),t.watch?this._locationWatchId=navigator.geolocation.watchPosition(e,i,t):navigator.geolocation.getCurrentPosition(e,i,t)):this._handleGeolocationError({code:0,message:"Geolocation not supported."}),this},stopLocate:function(){return navigator.geolocation&&navigator.geolocation.clearWatch&&navigator.geolocation.clearWatch(this._locationWatchId),this._locateOptions&&(this._locateOptions.setView=!1),this},_handleGeolocationError:function(t){var e;this._container._leaflet_id&&(e=t.code,t=t.message||(1===e?"permission denied":2===e?"position unavailable":"timeout"),this._locateOptions.setView&&!this._loaded&&this.fitWorld(),this.fire("locationerror",{code:e,message:"Geolocation error: "+t+"."}))},_handleGeolocationResponse:function(t){if(this._container._leaflet_id){var e,i,n=new v(t.coords.latitude,t.coords.longitude),o=n.toBounds(2*t.coords.accuracy),s=this._locateOptions,r=(s.setView&&(e=this.getBoundsZoom(o),this.setView(n,s.maxZoom?Math.min(e,s.maxZoom):e)),{latlng:n,bounds:o,timestamp:t.timestamp});for(i in t.coords)"number"==typeof t.coords[i]&&(r[i]=t.coords[i]);this.fire("locationfound",r)}},addHandler:function(t,e){return e&&(e=this[t]=new e(this),this._handlers.push(e),this.options[t]&&e.enable()),this},remove:function(){if(this._initEvents(!0),this.options.maxBounds&&this.off("moveend",this._panInsideMaxBounds),this._containerId!==this._container._leaflet_id)throw new Error("Map container is being reused by another instance");try{delete this._container._leaflet_id,delete this._containerId}catch(t){this._container._leaflet_id=void 0,this._containerId=void 0}for(var t in void 0!==this._locationWatchId&&this.stopLocate(),this._stop(),T(this._mapPane),this._clearControlPos&&this._clearControlPos(),this._resizeRequest&&(r(this._resizeRequest),this._resizeRequest=null),this._clearHandlers(),this._loaded&&this.fire("unload"),this._layers)this._layers[t].remove();for(t in this._panes)T(this._panes[t]);return this._layers=[],this._panes=[],delete this._mapPane,delete this._renderer,this},createPane:function(t,e){e=P("div","leaflet-pane"+(t?" leaflet-"+t.replace("Pane","")+"-pane":""),e||this._mapPane);return t&&(this._panes[t]=e),e},getCenter:function(){return this._checkIfLoaded(),this._lastCenter&&!this._moved()?this._lastCenter.clone():this.layerPointToLatLng(this._getCenterLayerPoint())},getZoom:function(){return this._zoom},getBounds:function(){var t=this.getPixelBounds();return new s(this.unproject(t.getBottomLeft()),this.unproject(t.getTopRight()))},getMinZoom:function(){return void 0===this.options.minZoom?this._layersMinZoom||0:this.options.minZoom},getMaxZoom:function(){return void 0===this.options.maxZoom?void 0===this._layersMaxZoom?1/0:this._layersMaxZoom:this.options.maxZoom},getBoundsZoom:function(t,e,i){t=g(t),i=m(i||[0,0]);var n=this.getZoom()||0,o=this.getMinZoom(),s=this.getMaxZoom(),r=t.getNorthWest(),t=t.getSouthEast(),i=this.getSize().subtract(i),t=_(this.project(t,n),this.project(r,n)).getSize(),r=b.any3d?this.options.zoomSnap:1,a=i.x/t.x,i=i.y/t.y,t=e?Math.max(a,i):Math.min(a,i),n=this.getScaleZoom(t,n);return r&&(n=Math.round(n/(r/100))*(r/100),n=e?Math.ceil(n/r)*r:Math.floor(n/r)*r),Math.max(o,Math.min(s,n))},getSize:function(){return this._size&&!this._sizeChanged||(this._size=new p(this._container.clientWidth||0,this._container.clientHeight||0),this._sizeChanged=!1),this._size.clone()},getPixelBounds:function(t,e){t=this._getTopLeftPoint(t,e);return new f(t,t.add(this.getSize()))},getPixelOrigin:function(){return this._checkIfLoaded(),this._pixelOrigin},getPixelWorldBounds:function(t){return this.options.crs.getProjectedBounds(void 0===t?this.getZoom():t)},getPane:function(t){return"string"==typeof t?this._panes[t]:t},getPanes:function(){return this._panes},getContainer:function(){return this._container},getZoomScale:function(t,e){var i=this.options.crs;return e=void 0===e?this._zoom:e,i.scale(t)/i.scale(e)},getScaleZoom:function(t,e){var i=this.options.crs,t=(e=void 0===e?this._zoom:e,i.zoom(t*i.scale(e)));return isNaN(t)?1/0:t},project:function(t,e){return e=void 0===e?this._zoom:e,this.options.crs.latLngToPoint(w(t),e)},unproject:function(t,e){return e=void 0===e?this._zoom:e,this.options.crs.pointToLatLng(m(t),e)},layerPointToLatLng:function(t){t=m(t).add(this.getPixelOrigin());return this.unproject(t)},latLngToLayerPoint:function(t){return this.project(w(t))._round()._subtract(this.getPixelOrigin())},wrapLatLng:function(t){return this.options.crs.wrapLatLng(w(t))},wrapLatLngBounds:function(t){return this.options.crs.wrapLatLngBounds(g(t))},distance:function(t,e){return this.options.crs.distance(w(t),w(e))},containerPointToLayerPoint:function(t){return m(t).subtract(this._getMapPanePos())},layerPointToContainerPoint:function(t){return m(t).add(this._getMapPanePos())},containerPointToLatLng:function(t){t=this.containerPointToLayerPoint(m(t));return this.layerPointToLatLng(t)},latLngToContainerPoint:function(t){return this.layerPointToContainerPoint(this.latLngToLayerPoint(w(t)))},mouseEventToContainerPoint:function(t){return De(t,this._container)},mouseEventToLayerPoint:function(t){return this.containerPointToLayerPoint(this.mouseEventToContainerPoint(t))},mouseEventToLatLng:function(t){return this.layerPointToLatLng(this.mouseEventToLayerPoint(t))},_initContainer:function(t){t=this._container=_e(t);if(!t)throw new Error("Map container not found.");if(t._leaflet_id)throw new Error("Map container is already initialized.");S(t,"scroll",this._onScroll,this),this._containerId=h(t)},_initLayout:function(){var t=this._container,e=(this._fadeAnimated=this.options.fadeAnimation&&b.any3d,M(t,"leaflet-container"+(b.touch?" leaflet-touch":"")+(b.retina?" leaflet-retina":"")+(b.ielt9?" leaflet-oldie":"")+(b.safari?" leaflet-safari":"")+(this._fadeAnimated?" leaflet-fade-anim":"")),pe(t,"position"));"absolute"!==e&&"relative"!==e&&"fixed"!==e&&"sticky"!==e&&(t.style.position="relative"),this._initPanes(),this._initControlPos&&this._initControlPos()},_initPanes:function(){var t=this._panes={};this._paneRenderers={},this._mapPane=this.createPane("mapPane",this._container),Z(this._mapPane,new p(0,0)),this.createPane("tilePane"),this.createPane("overlayPane"),this.createPane("shadowPane"),this.createPane("markerPane"),this.createPane("tooltipPane"),this.createPane("popupPane"),this.options.markerZoomAnimation||(M(t.markerPane,"leaflet-zoom-hide"),M(t.shadowPane,"leaflet-zoom-hide"))},_resetView:function(t,e,i){Z(this._mapPane,new p(0,0));var n=!this._loaded,o=(this._loaded=!0,e=this._limitZoom(e),this.fire("viewprereset"),this._zoom!==e);this._moveStart(o,i)._move(t,e)._moveEnd(o),this.fire("viewreset"),n&&this.fire("load")},_moveStart:function(t,e){return t&&this.fire("zoomstart"),e||this.fire("movestart"),this},_move:function(t,e,i,n){void 0===e&&(e=this._zoom);var o=this._zoom!==e;return this._zoom=e,this._lastCenter=t,this._pixelOrigin=this._getNewPixelOrigin(t),n?i&&i.pinch&&this.fire("zoom",i):((o||i&&i.pinch)&&this.fire("zoom",i),this.fire("move",i)),this},_moveEnd:function(t){return t&&this.fire("zoomend"),this.fire("moveend")},_stop:function(){return r(this._flyToFrame),this._panAnim&&this._panAnim.stop(),this},_rawPanBy:function(t){Z(this._mapPane,this._getMapPanePos().subtract(t))},_getZoomSpan:function(){return this.getMaxZoom()-this.getMinZoom()},_panInsideMaxBounds:function(){this._enforcingBounds||this.panInsideBounds(this.options.maxBounds)},_checkIfLoaded:function(){if(!this._loaded)throw new Error("Set map center and zoom first.")},_initEvents:function(t){this._targets={};var e=t?k:S;e((this._targets[h(this._container)]=this)._container,"click dblclick mousedown mouseup mouseover mouseout mousemove contextmenu keypress keydown keyup",this._handleDOMEvent,this),this.options.trackResize&&e(window,"resize",this._onResize,this),b.any3d&&this.options.transform3DLimit&&(t?this.off:this.on).call(this,"moveend",this._onMoveEnd)},_onResize:function(){r(this._resizeRequest),this._resizeRequest=x(function(){this.invalidateSize({debounceMoveend:!0})},this)},_onScroll:function(){this._container.scrollTop=0,this._container.scrollLeft=0},_onMoveEnd:function(){var t=this._getMapPanePos();Math.max(Math.abs(t.x),Math.abs(t.y))>=this.options.transform3DLimit&&this._resetView(this.getCenter(),this.getZoom())},_findEventTargets:function(t,e){for(var i,n=[],o="mouseout"===e||"mouseover"===e,s=t.target||t.srcElement,r=!1;s;){if((i=this._targets[h(s)])&&("click"===e||"preclick"===e)&&this._draggableMoved(i)){r=!0;break}if(i&&i.listens(e,!0)){if(o&&!Fe(s,t))break;if(n.push(i),o)break}if(s===this._container)break;s=s.parentNode}return n=n.length||r||o||!this.listens(e,!0)?n:[this]},_isClickDisabled:function(t){for(;t&&t!==this._container;){if(t._leaflet_disable_click)return!0;t=t.parentNode}},_handleDOMEvent:function(t){var e,i=t.target||t.srcElement;!this._loaded||i._leaflet_disable_events||"click"===t.type&&this._isClickDisabled(i)||("mousedown"===(e=t.type)&&Me(i),this._fireDOMEvent(t,e))},_mouseEvents:["click","dblclick","mouseover","mouseout","contextmenu"],_fireDOMEvent:function(t,e,i){"click"===t.type&&((a=l({},t)).type="preclick",this._fireDOMEvent(a,a.type,i));var n=this._findEventTargets(t,e);if(i){for(var o=[],s=0;sthis.options.zoomAnimationThreshold)return!1;var n=this.getZoomScale(e),n=this._getCenterOffset(t)._divideBy(1-1/n);if(!0!==i.animate&&!this.getSize().contains(n))return!1;x(function(){this._moveStart(!0,!1)._animateZoom(t,e,!0)},this)}return!0},_animateZoom:function(t,e,i,n){this._mapPane&&(i&&(this._animatingZoom=!0,this._animateToCenter=t,this._animateToZoom=e,M(this._mapPane,"leaflet-zoom-anim")),this.fire("zoomanim",{center:t,zoom:e,noUpdate:n}),this._tempFireZoomEvent||(this._tempFireZoomEvent=this._zoom!==this._animateToZoom),this._move(this._animateToCenter,this._animateToZoom,void 0,!0),setTimeout(a(this._onZoomTransitionEnd,this),250))},_onZoomTransitionEnd:function(){this._animatingZoom&&(this._mapPane&&z(this._mapPane,"leaflet-zoom-anim"),this._animatingZoom=!1,this._move(this._animateToCenter,this._animateToZoom,void 0,!0),this._tempFireZoomEvent&&this.fire("zoom"),delete this._tempFireZoomEvent,this.fire("move"),this._moveEnd(!0))}});function Ue(t){return new B(t)}var Ve,B=et.extend({options:{position:"topright"},initialize:function(t){c(this,t)},getPosition:function(){return this.options.position},setPosition:function(t){var e=this._map;return e&&e.removeControl(this),this.options.position=t,e&&e.addControl(this),this},getContainer:function(){return this._container},addTo:function(t){this.remove(),this._map=t;var e=this._container=this.onAdd(t),i=this.getPosition(),t=t._controlCorners[i];return M(e,"leaflet-control"),-1!==i.indexOf("bottom")?t.insertBefore(e,t.firstChild):t.appendChild(e),this._map.on("unload",this.remove,this),this},remove:function(){return this._map&&(T(this._container),this.onRemove&&this.onRemove(this._map),this._map.off("unload",this.remove,this),this._map=null),this},_refocusOnMap:function(t){this._map&&t&&0",e=document.createElement("div");return e.innerHTML=t,e.firstChild},_addItem:function(t){var e,i=document.createElement("label"),n=this._map.hasLayer(t.layer),n=(t.overlay?((e=document.createElement("input")).type="checkbox",e.className="leaflet-control-layers-selector",e.defaultChecked=n):e=this._createRadioElement("leaflet-base-layers_"+h(this),n),this._layerControlInputs.push(e),e.layerId=h(t.layer),S(e,"click",this._onInputClick,this),document.createElement("span")),o=(n.innerHTML=" "+t.name,document.createElement("span"));return i.appendChild(o),o.appendChild(e),o.appendChild(n),(t.overlay?this._overlaysList:this._baseLayersList).appendChild(i),this._checkDisabledLayers(),i},_onInputClick:function(){var t,e,i=this._layerControlInputs,n=[],o=[];this._handlingClick=!0;for(var s=i.length-1;0<=s;s--)t=i[s],e=this._getLayer(t.layerId).layer,t.checked?n.push(e):t.checked||o.push(e);for(s=0;se.options.maxZoom},_expandIfNotCollapsed:function(){return this._map&&!this.options.collapsed&&this.expand(),this},_expandSafely:function(){var t=this._section;S(t,"click",O),this.expand(),setTimeout(function(){k(t,"click",O)})}})),Ge=B.extend({options:{position:"topleft",zoomInText:'',zoomInTitle:"Zoom in",zoomOutText:'',zoomOutTitle:"Zoom out"},onAdd:function(t){var e="leaflet-control-zoom",i=P("div",e+" leaflet-bar"),n=this.options;return this._zoomInButton=this._createButton(n.zoomInText,n.zoomInTitle,e+"-in",i,this._zoomIn),this._zoomOutButton=this._createButton(n.zoomOutText,n.zoomOutTitle,e+"-out",i,this._zoomOut),this._updateDisabled(),t.on("zoomend zoomlevelschange",this._updateDisabled,this),i},onRemove:function(t){t.off("zoomend zoomlevelschange",this._updateDisabled,this)},disable:function(){return this._disabled=!0,this._updateDisabled(),this},enable:function(){return this._disabled=!1,this._updateDisabled(),this},_zoomIn:function(t){!this._disabled&&this._map._zoomthis._map.getMinZoom()&&this._map.zoomOut(this._map.options.zoomDelta*(t.shiftKey?3:1))},_createButton:function(t,e,i,n,o){i=P("a",i,n);return i.innerHTML=t,i.href="#",i.title=e,i.setAttribute("role","button"),i.setAttribute("aria-label",e),Ie(i),S(i,"click",Re),S(i,"click",o,this),S(i,"click",this._refocusOnMap,this),i},_updateDisabled:function(){var t=this._map,e="leaflet-disabled";z(this._zoomInButton,e),z(this._zoomOutButton,e),this._zoomInButton.setAttribute("aria-disabled","false"),this._zoomOutButton.setAttribute("aria-disabled","false"),!this._disabled&&t._zoom!==t.getMinZoom()||(M(this._zoomOutButton,e),this._zoomOutButton.setAttribute("aria-disabled","true")),!this._disabled&&t._zoom!==t.getMaxZoom()||(M(this._zoomInButton,e),this._zoomInButton.setAttribute("aria-disabled","true"))}}),Ke=(A.mergeOptions({zoomControl:!0}),A.addInitHook(function(){this.options.zoomControl&&(this.zoomControl=new Ge,this.addControl(this.zoomControl))}),B.extend({options:{position:"bottomleft",maxWidth:100,metric:!0,imperial:!0},onAdd:function(t){var e="leaflet-control-scale",i=P("div",e),n=this.options;return this._addScales(n,e+"-line",i),t.on(n.updateWhenIdle?"moveend":"move",this._update,this),t.whenReady(this._update,this),i},onRemove:function(t){t.off(this.options.updateWhenIdle?"moveend":"move",this._update,this)},_addScales:function(t,e,i){t.metric&&(this._mScale=P("div",e,i)),t.imperial&&(this._iScale=P("div",e,i))},_update:function(){var t=this._map,e=t.getSize().y/2,t=t.distance(t.containerPointToLatLng([0,e]),t.containerPointToLatLng([this.options.maxWidth,e]));this._updateScales(t)},_updateScales:function(t){this.options.metric&&t&&this._updateMetric(t),this.options.imperial&&t&&this._updateImperial(t)},_updateMetric:function(t){var e=this._getRoundNum(t);this._updateScale(this._mScale,e<1e3?e+" m":e/1e3+" km",e/t)},_updateImperial:function(t){var e,i,t=3.2808399*t;5280'+(b.inlineSvg?' ':"")+"Leaflet"},initialize:function(t){c(this,t),this._attributions={}},onAdd:function(t){for(var e in(t.attributionControl=this)._container=P("div","leaflet-control-attribution"),Ie(this._container),t._layers)t._layers[e].getAttribution&&this.addAttribution(t._layers[e].getAttribution());return this._update(),t.on("layeradd",this._addAttribution,this),this._container},onRemove:function(t){t.off("layeradd",this._addAttribution,this)},_addAttribution:function(t){t.layer.getAttribution&&(this.addAttribution(t.layer.getAttribution()),t.layer.once("remove",function(){this.removeAttribution(t.layer.getAttribution())},this))},setPrefix:function(t){return this.options.prefix=t,this._update(),this},addAttribution:function(t){return t&&(this._attributions[t]||(this._attributions[t]=0),this._attributions[t]++,this._update()),this},removeAttribution:function(t){return t&&this._attributions[t]&&(this._attributions[t]--,this._update()),this},_update:function(){if(this._map){var t,e=[];for(t in this._attributions)this._attributions[t]&&e.push(t);var i=[];this.options.prefix&&i.push(this.options.prefix),e.length&&i.push(e.join(", ")),this._container.innerHTML=i.join(' ')}}}),n=(A.mergeOptions({attributionControl:!0}),A.addInitHook(function(){this.options.attributionControl&&(new Ye).addTo(this)}),B.Layers=qe,B.Zoom=Ge,B.Scale=Ke,B.Attribution=Ye,Ue.layers=function(t,e,i){return new qe(t,e,i)},Ue.zoom=function(t){return new Ge(t)},Ue.scale=function(t){return new Ke(t)},Ue.attribution=function(t){return new Ye(t)},et.extend({initialize:function(t){this._map=t},enable:function(){return this._enabled||(this._enabled=!0,this.addHooks()),this},disable:function(){return this._enabled&&(this._enabled=!1,this.removeHooks()),this},enabled:function(){return!!this._enabled}})),ft=(n.addTo=function(t,e){return t.addHandler(e,this),this},{Events:e}),Xe=b.touch?"touchstart mousedown":"mousedown",Je=it.extend({options:{clickTolerance:3},initialize:function(t,e,i,n){c(this,n),this._element=t,this._dragStartTarget=e||t,this._preventOutline=i},enable:function(){this._enabled||(S(this._dragStartTarget,Xe,this._onDown,this),this._enabled=!0)},disable:function(){this._enabled&&(Je._dragging===this&&this.finishDrag(!0),k(this._dragStartTarget,Xe,this._onDown,this),this._enabled=!1,this._moved=!1)},_onDown:function(t){var e,i;this._enabled&&(this._moved=!1,ve(this._element,"leaflet-zoom-anim")||(t.touches&&1!==t.touches.length?Je._dragging===this&&this.finishDrag():Je._dragging||t.shiftKey||1!==t.which&&1!==t.button&&!t.touches||((Je._dragging=this)._preventOutline&&Me(this._element),Le(),re(),this._moving||(this.fire("down"),i=t.touches?t.touches[0]:t,e=Ce(this._element),this._startPoint=new p(i.clientX,i.clientY),this._startPos=Pe(this._element),this._parentScale=Ze(e),i="mousedown"===t.type,S(document,i?"mousemove":"touchmove",this._onMove,this),S(document,i?"mouseup":"touchend touchcancel",this._onUp,this)))))},_onMove:function(t){var e;this._enabled&&(t.touches&&1e&&(i.push(t[n]),o=n);oe.max.x&&(i|=2),t.ye.max.y&&(i|=8),i}function ni(t,e,i,n){var o=e.x,e=e.y,s=i.x-o,r=i.y-e,a=s*s+r*r;return 0this._layersMaxZoom&&this.setZoom(this._layersMaxZoom),void 0===this.options.minZoom&&this._layersMinZoom&&this.getZoom()t.y!=n.y>t.y&&t.x<(n.x-i.x)*(t.y-i.y)/(n.y-i.y)+i.x&&(l=!l);return l||vi.prototype._containsPoint.call(this,t,!0)}});var xi=ui.extend({initialize:function(t,e){c(this,e),this._layers={},t&&this.addData(t)},addData:function(t){var e,i,n,o=d(t)?t:t.features;if(o){for(e=0,i=o.length;es.x&&(r=i.x+a-s.x+o.x),i.x-r-n.x<(a=0)&&(r=i.x-n.x),i.y+e+o.y>s.y&&(a=i.y+e-s.y+o.y),i.y-a-n.y<0&&(a=i.y-n.y),(r||a)&&(this.options.keepInView&&(this._autopanning=!0),t.fire("autopanstart").panBy([r,a]))))},_getAnchor:function(){return m(this._source&&this._source._getPopupAnchor?this._source._getPopupAnchor():[0,0])}})),Bi=(A.mergeOptions({closePopupOnClick:!0}),A.include({openPopup:function(t,e,i){return this._initOverlay(Ai,t,e,i).openOn(this),this},closePopup:function(t){return(t=arguments.length?t:this._popup)&&t.close(),this}}),o.include({bindPopup:function(t,e){return this._popup=this._initOverlay(Ai,this._popup,t,e),this._popupHandlersAdded||(this.on({click:this._openPopup,keypress:this._onKeyPress,remove:this.closePopup,move:this._movePopup}),this._popupHandlersAdded=!0),this},unbindPopup:function(){return this._popup&&(this.off({click:this._openPopup,keypress:this._onKeyPress,remove:this.closePopup,move:this._movePopup}),this._popupHandlersAdded=!1,this._popup=null),this},openPopup:function(t){return this._popup&&(this instanceof ui||(this._popup._source=this),this._popup._prepareOpen(t||this._latlng)&&this._popup.openOn(this._map)),this},closePopup:function(){return this._popup&&this._popup.close(),this},togglePopup:function(){return this._popup&&this._popup.toggle(this),this},isPopupOpen:function(){return!!this._popup&&this._popup.isOpen()},setPopupContent:function(t){return this._popup&&this._popup.setContent(t),this},getPopup:function(){return this._popup},_openPopup:function(t){var e;this._popup&&this._map&&(Re(t),e=t.layer||t.target,this._popup._source!==e||e instanceof mi?(this._popup._source=e,this.openPopup(t.latlng)):this._map.hasLayer(this._popup)?this.closePopup():this.openPopup(t.latlng))},_movePopup:function(t){this._popup.setLatLng(t.latlng)},_onKeyPress:function(t){13===t.originalEvent.keyCode&&this._openPopup(t)}}),Oi.extend({options:{pane:"tooltipPane",offset:[0,0],direction:"auto",permanent:!1,sticky:!1,opacity:.9},onAdd:function(t){Oi.prototype.onAdd.call(this,t),this.setOpacity(this.options.opacity),t.fire("tooltipopen",{tooltip:this}),this._source&&(this.addEventParent(this._source),this._source.fire("tooltipopen",{tooltip:this},!0))},onRemove:function(t){Oi.prototype.onRemove.call(this,t),t.fire("tooltipclose",{tooltip:this}),this._source&&(this.removeEventParent(this._source),this._source.fire("tooltipclose",{tooltip:this},!0))},getEvents:function(){var t=Oi.prototype.getEvents.call(this);return this.options.permanent||(t.preclick=this.close),t},_initLayout:function(){var t="leaflet-tooltip "+(this.options.className||"")+" leaflet-zoom-"+(this._zoomAnimated?"animated":"hide");this._contentNode=this._container=P("div",t),this._container.setAttribute("role","tooltip"),this._container.setAttribute("id","leaflet-tooltip-"+h(this))},_updateLayout:function(){},_adjustPan:function(){},_setPosition:function(t){var e,i=this._map,n=this._container,o=i.latLngToContainerPoint(i.getCenter()),i=i.layerPointToContainerPoint(t),s=this.options.direction,r=n.offsetWidth,a=n.offsetHeight,h=m(this.options.offset),l=this._getAnchor(),i="top"===s?(e=r/2,a):"bottom"===s?(e=r/2,0):(e="center"===s?r/2:"right"===s?0:"left"===s?r:i.xthis.options.maxZoom||nthis.options.maxZoom||void 0!==this.options.minZoom&&oi.max.x)||!e.wrapLat&&(t.yi.max.y))return!1}return!this.options.bounds||(e=this._tileCoordsToBounds(t),g(this.options.bounds).overlaps(e))},_keyToBounds:function(t){return this._tileCoordsToBounds(this._keyToTileCoords(t))},_tileCoordsToNwSe:function(t){var e=this._map,i=this.getTileSize(),n=t.scaleBy(i),i=n.add(i);return[e.unproject(n,t.z),e.unproject(i,t.z)]},_tileCoordsToBounds:function(t){t=this._tileCoordsToNwSe(t),t=new s(t[0],t[1]);return t=this.options.noWrap?t:this._map.wrapLatLngBounds(t)},_tileCoordsToKey:function(t){return t.x+":"+t.y+":"+t.z},_keyToTileCoords:function(t){var t=t.split(":"),e=new p(+t[0],+t[1]);return e.z=+t[2],e},_removeTile:function(t){var e=this._tiles[t];e&&(T(e.el),delete this._tiles[t],this.fire("tileunload",{tile:e.el,coords:this._keyToTileCoords(t)}))},_initTile:function(t){M(t,"leaflet-tile");var e=this.getTileSize();t.style.width=e.x+"px",t.style.height=e.y+"px",t.onselectstart=u,t.onmousemove=u,b.ielt9&&this.options.opacity<1&&C(t,this.options.opacity)},_addTile:function(t,e){var i=this._getTilePos(t),n=this._tileCoordsToKey(t),o=this.createTile(this._wrapCoords(t),a(this._tileReady,this,t));this._initTile(o),this.createTile.length<2&&x(a(this._tileReady,this,t,null,o)),Z(o,i),this._tiles[n]={el:o,coords:t,current:!0},e.appendChild(o),this.fire("tileloadstart",{tile:o,coords:t})},_tileReady:function(t,e,i){e&&this.fire("tileerror",{error:e,tile:i,coords:t});var n=this._tileCoordsToKey(t);(i=this._tiles[n])&&(i.loaded=+new Date,this._map._fadeAnimated?(C(i.el,0),r(this._fadeFrame),this._fadeFrame=x(this._updateOpacity,this)):(i.active=!0,this._pruneTiles()),e||(M(i.el,"leaflet-tile-loaded"),this.fire("tileload",{tile:i.el,coords:t})),this._noTilesToLoad()&&(this._loading=!1,this.fire("load"),b.ielt9||!this._map._fadeAnimated?x(this._pruneTiles,this):setTimeout(a(this._pruneTiles,this),250)))},_getTilePos:function(t){return t.scaleBy(this.getTileSize()).subtract(this._level.origin)},_wrapCoords:function(t){var e=new p(this._wrapX?H(t.x,this._wrapX):t.x,this._wrapY?H(t.y,this._wrapY):t.y);return e.z=t.z,e},_pxBoundsToTileRange:function(t){var e=this.getTileSize();return new f(t.min.unscaleBy(e).floor(),t.max.unscaleBy(e).ceil().subtract([1,1]))},_noTilesToLoad:function(){for(var t in this._tiles)if(!this._tiles[t].loaded)return!1;return!0}});var Ni=Ri.extend({options:{minZoom:0,maxZoom:18,subdomains:"abc",errorTileUrl:"",zoomOffset:0,tms:!1,zoomReverse:!1,detectRetina:!1,crossOrigin:!1,referrerPolicy:!1},initialize:function(t,e){this._url=t,(e=c(this,e)).detectRetina&&b.retina&&0')}}catch(t){}return function(t){return document.createElement("<"+t+' xmlns="urn:schemas-microsoft.com:vml" class="lvml">')}}(),zt={_initContainer:function(){this._container=P("div","leaflet-vml-container")},_update:function(){this._map._animatingZoom||(Hi.prototype._update.call(this),this.fire("update"))},_initPath:function(t){var e=t._container=Ui("shape");M(e,"leaflet-vml-shape "+(this.options.className||"")),e.coordsize="1 1",t._path=Ui("path"),e.appendChild(t._path),this._updateStyle(t),this._layers[h(t)]=t},_addPath:function(t){var e=t._container;this._container.appendChild(e),t.options.interactive&&t.addInteractiveTarget(e)},_removePath:function(t){var e=t._container;T(e),t.removeInteractiveTarget(e),delete this._layers[h(t)]},_updateStyle:function(t){var e=t._stroke,i=t._fill,n=t.options,o=t._container;o.stroked=!!n.stroke,o.filled=!!n.fill,n.stroke?(e=e||(t._stroke=Ui("stroke")),o.appendChild(e),e.weight=n.weight+"px",e.color=n.color,e.opacity=n.opacity,n.dashArray?e.dashStyle=d(n.dashArray)?n.dashArray.join(" "):n.dashArray.replace(/( *, *)/g," "):e.dashStyle="",e.endcap=n.lineCap.replace("butt","flat"),e.joinstyle=n.lineJoin):e&&(o.removeChild(e),t._stroke=null),n.fill?(i=i||(t._fill=Ui("fill")),o.appendChild(i),i.color=n.fillColor||n.color,i.opacity=n.fillOpacity):i&&(o.removeChild(i),t._fill=null)},_updateCircle:function(t){var e=t._point.round(),i=Math.round(t._radius),n=Math.round(t._radiusY||i);this._setPath(t,t._empty()?"M0 0":"AL "+e.x+","+e.y+" "+i+","+n+" 0,23592600")},_setPath:function(t,e){t._path.v=e},_bringToFront:function(t){fe(t._container)},_bringToBack:function(t){ge(t._container)}},Vi=b.vml?Ui:ct,qi=Hi.extend({_initContainer:function(){this._container=Vi("svg"),this._container.setAttribute("pointer-events","none"),this._rootGroup=Vi("g"),this._container.appendChild(this._rootGroup)},_destroyContainer:function(){T(this._container),k(this._container),delete this._container,delete this._rootGroup,delete this._svgSize},_update:function(){var t,e,i;this._map._animatingZoom&&this._bounds||(Hi.prototype._update.call(this),e=(t=this._bounds).getSize(),i=this._container,this._svgSize&&this._svgSize.equals(e)||(this._svgSize=e,i.setAttribute("width",e.x),i.setAttribute("height",e.y)),Z(i,t.min),i.setAttribute("viewBox",[t.min.x,t.min.y,e.x,e.y].join(" ")),this.fire("update"))},_initPath:function(t){var e=t._path=Vi("path");t.options.className&&M(e,t.options.className),t.options.interactive&&M(e,"leaflet-interactive"),this._updateStyle(t),this._layers[h(t)]=t},_addPath:function(t){this._rootGroup||this._initContainer(),this._rootGroup.appendChild(t._path),t.addInteractiveTarget(t._path)},_removePath:function(t){T(t._path),t.removeInteractiveTarget(t._path),delete this._layers[h(t)]},_updatePath:function(t){t._project(),t._update()},_updateStyle:function(t){var e=t._path,t=t.options;e&&(t.stroke?(e.setAttribute("stroke",t.color),e.setAttribute("stroke-opacity",t.opacity),e.setAttribute("stroke-width",t.weight),e.setAttribute("stroke-linecap",t.lineCap),e.setAttribute("stroke-linejoin",t.lineJoin),t.dashArray?e.setAttribute("stroke-dasharray",t.dashArray):e.removeAttribute("stroke-dasharray"),t.dashOffset?e.setAttribute("stroke-dashoffset",t.dashOffset):e.removeAttribute("stroke-dashoffset")):e.setAttribute("stroke","none"),t.fill?(e.setAttribute("fill",t.fillColor||t.color),e.setAttribute("fill-opacity",t.fillOpacity),e.setAttribute("fill-rule",t.fillRule||"evenodd")):e.setAttribute("fill","none"))},_updatePoly:function(t,e){this._setPath(t,dt(t._parts,e))},_updateCircle:function(t){var e=t._point,i=Math.max(Math.round(t._radius),1),n="a"+i+","+(Math.max(Math.round(t._radiusY),1)||i)+" 0 1,0 ",e=t._empty()?"M0 0":"M"+(e.x-i)+","+e.y+n+2*i+",0 "+n+2*-i+",0 ";this._setPath(t,e)},_setPath:function(t,e){t._path.setAttribute("d",e)},_bringToFront:function(t){fe(t._path)},_bringToBack:function(t){ge(t._path)}});function Gi(t){return b.svg||b.vml?new qi(t):null}b.vml&&qi.include(zt),A.include({getRenderer:function(t){t=(t=t.options.renderer||this._getPaneRenderer(t.options.pane)||this.options.renderer||this._renderer)||(this._renderer=this._createRenderer());return this.hasLayer(t)||this.addLayer(t),t},_getPaneRenderer:function(t){var e;return"overlayPane"!==t&&void 0!==t&&(void 0===(e=this._paneRenderers[t])&&(e=this._createRenderer({pane:t}),this._paneRenderers[t]=e),e)},_createRenderer:function(t){return this.options.preferCanvas&&Wi(t)||Gi(t)}});var Ki=yi.extend({initialize:function(t,e){yi.prototype.initialize.call(this,this._boundsToLatLngs(t),e)},setBounds:function(t){return this.setLatLngs(this._boundsToLatLngs(t))},_boundsToLatLngs:function(t){return[(t=g(t)).getSouthWest(),t.getNorthWest(),t.getNorthEast(),t.getSouthEast()]}});qi.create=Vi,qi.pointsToPath=dt,xi.geometryToLayer=wi,xi.coordsToLatLng=Pi,xi.coordsToLatLngs=Li,xi.latLngToCoords=Ti,xi.latLngsToCoords=Mi,xi.getFeature=zi,xi.asFeature=Ci,A.mergeOptions({boxZoom:!0});var _t=n.extend({initialize:function(t){this._map=t,this._container=t._container,this._pane=t._panes.overlayPane,this._resetStateTimeout=0,t.on("unload",this._destroy,this)},addHooks:function(){S(this._container,"mousedown",this._onMouseDown,this)},removeHooks:function(){k(this._container,"mousedown",this._onMouseDown,this)},moved:function(){return this._moved},_destroy:function(){T(this._pane),delete this._pane},_resetState:function(){this._resetStateTimeout=0,this._moved=!1},_clearDeferredResetState:function(){0!==this._resetStateTimeout&&(clearTimeout(this._resetStateTimeout),this._resetStateTimeout=0)},_onMouseDown:function(t){if(!t.shiftKey||1!==t.which&&1!==t.button)return!1;this._clearDeferredResetState(),this._resetState(),re(),Le(),this._startPoint=this._map.mouseEventToContainerPoint(t),S(document,{contextmenu:Re,mousemove:this._onMouseMove,mouseup:this._onMouseUp,keydown:this._onKeyDown},this)},_onMouseMove:function(t){this._moved||(this._moved=!0,this._box=P("div","leaflet-zoom-box",this._container),M(this._container,"leaflet-crosshair"),this._map.fire("boxzoomstart")),this._point=this._map.mouseEventToContainerPoint(t);var t=new f(this._point,this._startPoint),e=t.getSize();Z(this._box,t.min),this._box.style.width=e.x+"px",this._box.style.height=e.y+"px"},_finish:function(){this._moved&&(T(this._box),z(this._container,"leaflet-crosshair")),ae(),Te(),k(document,{contextmenu:Re,mousemove:this._onMouseMove,mouseup:this._onMouseUp,keydown:this._onKeyDown},this)},_onMouseUp:function(t){1!==t.which&&1!==t.button||(this._finish(),this._moved&&(this._clearDeferredResetState(),this._resetStateTimeout=setTimeout(a(this._resetState,this),0),t=new s(this._map.containerPointToLatLng(this._startPoint),this._map.containerPointToLatLng(this._point)),this._map.fitBounds(t).fire("boxzoomend",{boxZoomBounds:t})))},_onKeyDown:function(t){27===t.keyCode&&(this._finish(),this._clearDeferredResetState(),this._resetState())}}),Ct=(A.addInitHook("addHandler","boxZoom",_t),A.mergeOptions({doubleClickZoom:!0}),n.extend({addHooks:function(){this._map.on("dblclick",this._onDoubleClick,this)},removeHooks:function(){this._map.off("dblclick",this._onDoubleClick,this)},_onDoubleClick:function(t){var e=this._map,i=e.getZoom(),n=e.options.zoomDelta,i=t.originalEvent.shiftKey?i-n:i+n;"center"===e.options.doubleClickZoom?e.setZoom(i):e.setZoomAround(t.containerPoint,i)}})),Zt=(A.addInitHook("addHandler","doubleClickZoom",Ct),A.mergeOptions({dragging:!0,inertia:!0,inertiaDeceleration:3400,inertiaMaxSpeed:1/0,easeLinearity:.2,worldCopyJump:!1,maxBoundsViscosity:0}),n.extend({addHooks:function(){var t;this._draggable||(t=this._map,this._draggable=new Je(t._mapPane,t._container),this._draggable.on({dragstart:this._onDragStart,drag:this._onDrag,dragend:this._onDragEnd},this),this._draggable.on("predrag",this._onPreDragLimit,this),t.options.worldCopyJump&&(this._draggable.on("predrag",this._onPreDragWrap,this),t.on("zoomend",this._onZoomEnd,this),t.whenReady(this._onZoomEnd,this))),M(this._map._container,"leaflet-grab leaflet-touch-drag"),this._draggable.enable(),this._positions=[],this._times=[]},removeHooks:function(){z(this._map._container,"leaflet-grab"),z(this._map._container,"leaflet-touch-drag"),this._draggable.disable()},moved:function(){return this._draggable&&this._draggable._moved},moving:function(){return this._draggable&&this._draggable._moving},_onDragStart:function(){var t,e=this._map;e._stop(),this._map.options.maxBounds&&this._map.options.maxBoundsViscosity?(t=g(this._map.options.maxBounds),this._offsetLimit=_(this._map.latLngToContainerPoint(t.getNorthWest()).multiplyBy(-1),this._map.latLngToContainerPoint(t.getSouthEast()).multiplyBy(-1).add(this._map.getSize())),this._viscosity=Math.min(1,Math.max(0,this._map.options.maxBoundsViscosity))):this._offsetLimit=null,e.fire("movestart").fire("dragstart"),e.options.inertia&&(this._positions=[],this._times=[])},_onDrag:function(t){var e,i;this._map.options.inertia&&(e=this._lastTime=+new Date,i=this._lastPos=this._draggable._absPos||this._draggable._newPos,this._positions.push(i),this._times.push(e),this._prunePositions(e)),this._map.fire("move",t).fire("drag",t)},_prunePositions:function(t){for(;1e.max.x&&(t.x=this._viscousLimit(t.x,e.max.x)),t.y>e.max.y&&(t.y=this._viscousLimit(t.y,e.max.y)),this._draggable._newPos=this._draggable._startPos.add(t))},_onPreDragWrap:function(){var t=this._worldWidth,e=Math.round(t/2),i=this._initialWorldOffset,n=this._draggable._newPos.x,o=(n-e+i)%t+e-i,n=(n+e+i)%t-e-i,t=Math.abs(o+i)e.getMaxZoom()&&1t.appendChild(e))}function o(o){var e=i.querySelector("#pagination form.next_page");if(!e){return}r(i.querySelector("#pagination"),[n()]);var t=new FormData(e);searxng.http("POST",i.querySelector("#search").getAttribute("action"),t).then(function(e){var t=(new DOMParser).parseFromString(e,"text/html");var n=t.querySelectorAll("#urls article");var r=t.querySelector("#pagination");i.querySelector("#pagination").remove();if(n.length>0&&!s){i.querySelector("#urls").appendChild(i.createElement("hr"))}n.forEach(e=>{i.querySelector("#urls").appendChild(e)});if(r){i.querySelector("#results").appendChild(r);o()}}).catch(function(e){console.log(e);var t=i.createElement("div");t.textContent=searxng.settings.translations.error_loading_next_page;t.classList.add("dialog-error");t.setAttribute("role","alert");r(i.querySelector("#pagination"),[t])})}if(searxng.settings.infinite_scroll&&searxng.infinite_scroll_supported){const a={rootMargin:"20rem"};const l="article.result:last-child";const u=new IntersectionObserver(e=>{const t=e[0];if(t.isIntersecting){u.unobserve(t.target);o(()=>u.observe(i.querySelector(l),a))}});u.observe(i.querySelector(l),a)}});searxng.ready(function(){function e(e){while(e!==undefined){if(e.classList.contains("detail")){return true}if(e.classList.contains("result")){return false}e=e.parentNode}return false}function n(e){while(e!==undefined){if(e.classList.contains("result")){return e}e=e.parentNode}return undefined}function r(e){return e&&e.classList.contains("result-images")}searxng.on(".result","click",function(t){if(!e(t.target)){o(this)(true,true);let e=n(t.target);if(r(e)){t.preventDefault();searxng.selectImage(e)}}});searxng.on(".result a","focus",function(t){if(!e(t.target)){let e=n(t.target);if(e&&e.getAttribute("data-vim-selected")===null){o(e)(true)}if(r(e)){searxng.selectImage(e)}}},true);var d={27:{key:"Escape",fun:i,des:"remove focus from the focused input",cat:"Control"},73:{key:"i",fun:f,des:"focus on the search input",cat:"Control"},66:{key:"b",fun:u(-window.innerHeight),des:"scroll one page up",cat:"Navigation"},70:{key:"f",fun:u(window.innerHeight),des:"scroll one page down",cat:"Navigation"},85:{key:"u",fun:u(-window.innerHeight/2),des:"scroll half a page up",cat:"Navigation"},68:{key:"d",fun:u(window.innerHeight/2),des:"scroll half a page down",cat:"Navigation"},71:{key:"g",fun:c(-document.body.scrollHeight,"top"),des:"scroll to the top of the page",cat:"Navigation"},86:{key:"v",fun:c(document.body.scrollHeight,"bottom"),des:"scroll to the bottom of the page",cat:"Navigation"},75:{key:"k",fun:o("up"),des:"select previous search result",cat:"Results"},74:{key:"j",fun:o("down"),des:"select next search result",cat:"Results"},80:{key:"p",fun:l(),des:"go to previous page",cat:"Results"},78:{key:"n",fun:a(),des:"go to next page",cat:"Results"},79:{key:"o",fun:m(false),des:"open search result",cat:"Results"},84:{key:"t",fun:m(true),des:"open the result in a new tab",cat:"Results"},82:{key:"r",fun:t,des:"reload page from the server",cat:"Control"},72:{key:"h",fun:g,des:"toggle help window",cat:"Other"}};if(searxng.settings.hotkeys){searxng.on(document,"keydown",function(e){if(Object.prototype.hasOwnProperty.call(d,e.keyCode)&&!e.ctrlKey&&!e.altKey&&!e.shiftKey&&!e.metaKey){var t=e.target.tagName.toLowerCase();if(e.keyCode===27){d[e.keyCode].fun(e)}else{if(e.target===document.body||t==="a"||t==="button"){e.preventDefault();d[e.keyCode].fun()}}}})}function o(f){return function(e,t){var n=document.querySelector(".result[data-vim-selected]"),r=f;if(n===null){n=document.querySelector(".result");if(n===null){return}if(f==="down"||f==="up"){r=n}}var o,i=document.querySelectorAll(".result");if(typeof r!=="string"){o=r}else{switch(r){case"visible":var s=document.documentElement.scrollTop||document.body.scrollTop;var a=s+document.documentElement.clientHeight;for(var l=0;ls){break}}break;case"down":o=n.nextElementSibling;if(o===null){o=i[0]}break;case"up":o=n.previousElementSibling;if(o===null){o=i[i.length-1]}break;case"bottom":o=i[i.length-1];break;case"top":default:o=i[0]}}if(o){n.removeAttribute("data-vim-selected");o.setAttribute("data-vim-selected","true");if(!t){var d=o.querySelector("h3 a")||o.querySelector("a");if(d!==null){d.focus()}}if(!e){p()}}}}function t(){document.location.reload(true)}function i(e){const t=e.target.tagName.toLowerCase();if(document.activeElement&&(t==="input"||t==="select"||t==="textarea")){document.activeElement.blur()}else{searxng.closeDetail()}}function s(t){return function(){var e=document.querySelector(t);if(e){e.click()}}}function a(){return s('nav#pagination .next_page button[type="submit"]')}function l(){return s('nav#pagination .previous_page button[type="submit"]')}function p(){var e=document.querySelector(".result[data-vim-selected]");if(e===null){return}var t=document.documentElement.scrollTop||document.body.scrollTop,n=document.documentElement.clientHeight,r=e.offsetTop,o=r+e.clientHeight,i=120;if(e.previousElementSibling===null&&or-i){window.scroll(window.scrollX,r-i)}else{var s=t+n;if(s a")}if(e!==null){var t=e.getAttribute("href");if(n){window.open(t)}else{window.location.href=t}}}}function h(e){var n={};for(var t in d){var r=d[t];n[r.cat]=n[r.cat]||[];n[r.cat].push(r)}var o=Object.keys(n).sort(function(e,t){return n[t].length-n[e].length});if(o.length===0){return}var i='×';i+="

How to navigate searx with Vim-like hotkeys

";i+="";for(var s=0;s"}i+="";if(!u||l){i+=""}}i+="
";i+="

"+a[0].cat+"

";i+='
    ';for(var c in a){i+="
  • "+a[c].key+" "+a[c].des+"
  • "}i+="
";i+="
";e.innerHTML=i}function g(){var e=document.querySelector("#vim-hotkeys-help");if(e===undefined||e===null){e=document.createElement("div");e.id="vim-hotkeys-help";e.className="dialog-modal";h(e);h(e);h(e);var t=document.getElementsByTagName("body")[0];t.appendChild(e)}else{e.classList.toggle("invisible");return}}searxng.scrollPageToSelected=p;searxng.selectNext=o("down");searxng.selectPrevious=o("up")});(function(e,t,n){"use strict";n.ready(function(){n.on(".searxng_init_map","click",function(e){this.classList.remove("searxng_init_map");var d=this.dataset.leafletTarget;var f=parseFloat(this.dataset.mapLon);var p=parseFloat(this.dataset.mapLat);var m=parseFloat(this.dataset.mapZoom);var h=JSON.parse(this.dataset.mapBoundingbox);var g=JSON.parse(this.dataset.mapGeojson);n.loadStyle("css/leaflet.css");n.loadScript("js/leaflet.js",function(){var e=null;if(h){var t=L.latLng(h[0],h[2]);var n=L.latLng(h[1],h[3]);e=L.latLngBounds(t,n)}var r=L.map(d);var o="https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png";var i='Map data © OpenStreetMap contributors';var s=new L.TileLayer(o,{minZoom:1,maxZoom:19,attribution:i});var a="https://maps.wikimedia.org/osm-intl/{z}/{x}/{y}.png";var l='Wikimedia maps | Maps data © OpenStreetMap contributors';var u=new L.TileLayer(a,{minZoom:1,maxZoom:19,attribution:l});if(e){setTimeout(function(){r.fitBounds(e,{maxZoom:17})},0)}else if(f&&p){if(m){r.setView(new L.latLng(p,f),m)}else{r.setView(new L.latLng(p,f),8)}}r.addLayer(s);var c={"OSM Mapnik":s,"OSM Wikimedia":u};L.control.layers(c).addTo(r);if(g){L.geoJson(g).addTo(r)}});e.preventDefault()})})})(window,document,window.searxng);(function(e,i,s){"use strict";if(s.endpoint!=="preferences"){return}s.ready(function(){let o=null;function e(){if(o==null){s.http("GET","engine_descriptions.json").then(function(e){o=JSON.parse(e);for(const[t,n]of Object.entries(o)){let e=i.querySelectorAll('[data-engine-name="'+t+'"] .engine-description');for(const r of e){let e=" ("+s.settings.translations.Source+": "+n[1]+")";r.innerHTML=n[0]+e}}})}}for(const t of i.querySelectorAll("[data-engine-name]")){s.on(t,"mouseenter",e)}})})(window,document,window.searxng);(function(e,a,l){"use strict";if(l.endpoint!=="results"){return}l.ready(function(){a.querySelectorAll("#urls img.image").forEach(e=>e.addEventListener("error",()=>{e.style.display="none";e.error=null}));l.on(".btn-collapse","click",function(){var e=this.getAttribute("data-btn-text-collapsed");var t=this.getAttribute("data-btn-text-not-collapsed");var n=this.getAttribute("data-target");var r=a.querySelector(n);var o=this.innerHTML;if(this.classList.contains("collapsed")){o=o.replace(e,t)}else{o=o.replace(t,e)}this.innerHTML=o;this.classList.toggle("collapsed");r.classList.toggle("invisible")});l.on(".media-loader","click",function(){var e=this.getAttribute("data-target");var t=a.querySelector(e+" > iframe");var n=t.getAttribute("src");if(n===null||n===undefined||n===false){t.setAttribute("src",t.getAttribute("data-src"))}});l.selectImage=function(e){if(e){const t=e.querySelector(".result-images-source img");const n=e.querySelector(".image_thumbnail");const r=e.querySelector(".detail");if(t){const o=t.getAttribute("data-src");if(o){const i=a.createElement("div");const s=new Image;i.classList.add("loader");r.appendChild(i);s.onload=e=>{t.src=o;i.remove()};s.onerror=e=>{i.remove()};s.src=o;t.src=n.src;t.removeAttribute("data-src")}}}a.getElementById("results").classList.add("image-detail-open");l.scrollPageToSelected()};l.closeDetail=function(e){a.getElementById("results").classList.remove("image-detail-open");l.scrollPageToSelected()};l.on(".result-detail-close","click",e=>{e.preventDefault();l.closeDetail()});l.on(".result-detail-previous","click",e=>l.selectPrevious(false));l.on(".result-detail-next","click",e=>l.selectNext(false));e.addEventListener("scroll",function(){var e=a.getElementById("backToTop"),t=document.documentElement.scrollTop||document.body.scrollTop,n=a.getElementById("results");if(e!==null){if(t>=100){n.classList.add("scrolling")}else{n.classList.remove("scrolling")}}},true)})})(window,document,window.searxng);(function(e,n,t){"use strict";var r="q",o;const i=window.matchMedia("only screen and (max-width: 50em)").matches;function s(){if(o.value.length>0){var e=document.getElementById("search");setTimeout(e.submit.bind(e),0)}}function a(t){var e=document.getElementById("clear_search");var n=function(){if(t.value.length===0){e.classList.add("empty")}else{e.classList.remove("empty")}};n();e.addEventListener("click",function(e){t.value="";t.focus();n();e.preventDefault()});t.addEventListener("keyup",n,false)}t.ready(function(){o=n.getElementById(r);if(o!==null){a(o);if(t.settings.autocomplete_provider){t.autocomplete=AutoComplete.call(e,{Url:"./autocompleter",EmptyMessage:t.settings.translations.no_item_found,HttpMethod:t.settings.http_method,HttpHeaders:{"Content-type":"application/x-www-form-urlencoded","X-Requested-With":"XMLHttpRequest"},MinChars:t.settings.autocomplete_min,Delay:300,_Position:function(){},_Open:function(){var t=this;Array.prototype.forEach.call(this.DOMResults.getElementsByTagName("li"),function(e){if(e.getAttribute("class")!="locked"){e.onmousedown=function(){t._Select(e)}}})}},"#"+r)}AutoComplete.prototype.ajax=function(e,t,n){if(n===void 0){n=true}if(e.$AjaxTimer){window.clearTimeout(e.$AjaxTimer)}if(n===true){e.$AjaxTimer=window.setTimeout(AutoComplete.prototype.ajax.bind(null,e,t,false),e.Delay)}else{if(e.Request){e.Request.abort()}e.Request=t;e.Request.send(encodeURIComponent(e._QueryArg())+"="+encodeURIComponent(e._Pre()))}};if(!i&&document.querySelector(".index_endpoint")){o.focus()}}if(o!==null&&n.querySelector(".help")!=null&&t.settings.search_on_category_select){n.querySelector(".help").className="invisible";t.on("#categories input","change",function(){var e,t=n.querySelectorAll('#categories input[type="checkbox"]');for(e=0;e=e.From&&n.keyCode<=e.To){s=!e.Not}else{s=e.Not}}}};for(var o in a.prototype.getEventsByType(e,t)){var i=a.merge({Operator:l.AND},e.KeyboardMappings[o]),s=l.AND==i.Operator;i.Conditions.forEach(r);if(s===true){i.Callback.call(e,n)}}};a.prototype.makeRequest=function(e,t,n){var r=Object.getOwnPropertyNames(e.HttpHeaders),o=new XMLHttpRequest,i=e._HttpMethod(),s=e._Url(),a=e._Pre(),l=encodeURIComponent(e._QueryArg())+"="+encodeURIComponent(a);if(i.match(/^GET$/i)){if(s.indexOf("?")!==-1){s+="&"+l}else{s+="?"+l}}o.open(i,s,true);for(var u=r.length-1;u>=0;u--){o.setRequestHeader(r[u],e.HttpHeaders[r[u]])}o.onreadystatechange=function(){if(o.readyState==4&&o.status==200){e.$Cache[a]=o.response;t(o.response)}else if(o.status>=400){n()}};return o};a.prototype.ajax=function(e,t,n){if(n===void 0){n=true}if(e.$AjaxTimer){window.clearTimeout(e.$AjaxTimer)}if(n===true){e.$AjaxTimer=window.setTimeout(a.prototype.ajax.bind(null,e,t,false),e.Delay)}else{if(e.Request){e.Request.abort()}e.Request=t;e.Request.send(e._QueryArg()+"="+e._Pre())}};a.prototype.cache=function(e,t,n){var r=e._Cache(e._Pre());if(r===undefined){var o=a.prototype.makeRequest(e,t,n);a.prototype.ajax(e,o)}else{t(r)}};a.prototype.destroy=function(e){for(var t in e.$Listeners){e.Input.removeEventListener(t,e.$Listeners[t])}e.DOMResults.parentNode.removeChild(e.DOMResults)};a.merge=function(){var e={},t;for(var n=0;n"+e+""}},HttpHeaders:{"Content-type":"application/x-www-form-urlencoded"},Limit:0,MinChars:0,HttpMethod:"GET",QueryArg:"q",Url:null,KeyboardMappings:{Enter:{Conditions:[{Is:13,Not:false}],Callback:function(e){if(this.DOMResults.getAttribute("class").indexOf("open")!=-1){var t=this.DOMResults.querySelector("li.active");if(t!==null){e.preventDefault();this._Select(t);this.DOMResults.setAttribute("class","autocomplete")}}},Operator:l.AND,Event:i.KEYDOWN},KeyUpAndDown_down:{Conditions:[{Is:38,Not:false},{Is:40,Not:false}],Callback:function(e){e.preventDefault()},Operator:l.OR,Event:i.KEYDOWN},KeyUpAndDown_up:{Conditions:[{Is:38,Not:false},{Is:40,Not:false}],Callback:function(e){e.preventDefault();var t=this.DOMResults.querySelector("li:first-child:not(.locked)"),n=this.DOMResults.querySelector("li:last-child:not(.locked)"),r=this.DOMResults.querySelector("li.active");if(r){var o=Array.prototype.indexOf.call(r.parentNode.children,r),i=o+(e.keyCode-39),s=this.DOMResults.getElementsByTagName("li").length;if(i<0){i=s-1}else if(i>=s){i=0}r.classList.remove("active");r.parentElement.children.item(i).classList.add("active")}else if(n&&e.keyCode==38){n.classList.add("active")}else if(t){t.classList.add("active")}},Operator:l.OR,Event:i.KEYUP},AlphaNum:{Conditions:[{Is:13,Not:true},{From:35,To:40,Not:true}],Callback:function(){var e=this.Input.getAttribute("data-autocomplete-old-value"),t=this._Pre();if(t!==""&&t.length>=this._MinChars()){if(!e||t!=e){this.DOMResults.setAttribute("class","autocomplete open")}a.prototype.cache(this,function(e){this._Render(this._Post(e));this._Open()}.bind(this),this._Error)}else{this._Close()}},Operator:l.AND,Event:i.KEYUP}},DOMResults:null,Request:null,Input:null,_EmptyMessage:function(){var e="";if(this.Input.hasAttribute("data-autocomplete-empty-message")){e=this.Input.getAttribute("data-autocomplete-empty-message")}else if(this.EmptyMessage!==false){e=this.EmptyMessage}else{e=""}return e},_Limit:function(){var e=this.Input.getAttribute("data-autocomplete-limit");if(isNaN(e)||e===null){return this.Limit}return parseInt(e,10)},_MinChars:function(){var e=this.Input.getAttribute("data-autocomplete-minchars");if(isNaN(e)||e===null){return this.MinChars}return parseInt(e,10)},_Highlight:function(e){return e.replace(this.Highlight.getRegex(this._Pre()),this.Highlight.transform)},_HttpMethod:function(){if(this.Input.hasAttribute("data-autocomplete-method")){return this.Input.getAttribute("data-autocomplete-method")}return this.HttpMethod},_QueryArg:function(){if(this.Input.hasAttribute("data-autocomplete-param-name")){return this.Input.getAttribute("data-autocomplete-param-name")}return this.QueryArg},_Url:function(){if(this.Input.hasAttribute("data-autocomplete")){return this.Input.getAttribute("data-autocomplete")}return this.Url},_Blur:function(e){if(e===void 0){e=false}if(e){this._Close()}else{var t=this;setTimeout(function(){t._Blur(true)},150)}},_Cache:function(e){return this.$Cache[e]},_Focus:function(){var e=this.Input.getAttribute("data-autocomplete-old-value");if((!e||this.Input.value!=e)&&this._MinChars()<=this.Input.value.length){this.DOMResults.setAttribute("class","autocomplete open")}},_Open:function(){var t=this;Array.prototype.forEach.call(this.DOMResults.getElementsByTagName("li"),function(e){if(e.getAttribute("class")!="locked"){e.onclick=function(){t._Select(e)}}})},_Close:function(){this.DOMResults.setAttribute("class","autocomplete")},_Position:function(){this.DOMResults.setAttribute("class","autocomplete");this.DOMResults.setAttribute("style","top:"+(this.Input.offsetTop+this.Input.offsetHeight)+"px;left:"+this.Input.offsetLeft+"px;width:"+this.Input.clientWidth+"px;")},_Render:function(e){var t;if(typeof e=="string"){t=this._RenderRaw(e)}else{t=this._RenderResponseItems(e)}if(this.DOMResults.hasChildNodes()){this.DOMResults.removeChild(this.DOMResults.childNodes[0])}this.DOMResults.appendChild(t)},_RenderResponseItems:function(e){var t=document.createElement("ul"),n=document.createElement("li"),r=this._Limit();if(r<0){e=e.reverse()}else if(r===0){r=e.length}for(var o=0;o0){this.DOMResults.innerHTML=e}else{var r=this._EmptyMessage();if(r!==""){n.innerHTML=r;n.setAttribute("class","locked");t.appendChild(n)}}return t},_Post:function(t){try{var e=[];var n=JSON.parse(t);if(Object.keys(n).length===0){return""}if(Array.isArray(n)){for(var r=0;r element.appendChild(child));\r\n }\r\n\r\n function loadNextPage (callback) {\r\n var form = d.querySelector('#pagination form.next_page');\r\n if (!form) {\r\n return\r\n }\r\n replaceChildrenWith(d.querySelector('#pagination'), [ newLoadSpinner() ]);\r\n var formData = new FormData(form);\r\n searxng.http('POST', d.querySelector('#search').getAttribute('action'), formData).then(\r\n function (response) {\r\n var nextPageDoc = new DOMParser().parseFromString(response, 'text/html');\r\n var articleList = nextPageDoc.querySelectorAll('#urls article');\r\n var paginationElement = nextPageDoc.querySelector('#pagination');\r\n d.querySelector('#pagination').remove();\r\n if (articleList.length > 0 && !onlyImages) {\r\n // do not add
element when there are only images\r\n d.querySelector('#urls').appendChild(d.createElement('hr'));\r\n }\r\n articleList.forEach(articleElement => {\r\n d.querySelector('#urls').appendChild(articleElement);\r\n });\r\n if (paginationElement) {\r\n d.querySelector('#results').appendChild(paginationElement);\r\n callback();\r\n }\r\n }\r\n ).catch(\r\n function (err) {\r\n console.log(err);\r\n var e = d.createElement('div');\r\n e.textContent = searxng.settings.translations.error_loading_next_page;\r\n e.classList.add('dialog-error');\r\n e.setAttribute('role', 'alert');\r\n replaceChildrenWith(d.querySelector('#pagination'), [ e ]);\r\n }\r\n )\r\n }\r\n\r\n if (searxng.settings.infinite_scroll && searxng.infinite_scroll_supported) {\r\n const intersectionObserveOptions = {\r\n rootMargin: \"20rem\",\r\n };\r\n const observedSelector = 'article.result:last-child';\r\n const observer = new IntersectionObserver(entries => {\r\n const paginationEntry = entries[0];\r\n if (paginationEntry.isIntersecting) {\r\n observer.unobserve(paginationEntry.target);\r\n loadNextPage(() => observer.observe(d.querySelector(observedSelector), intersectionObserveOptions));\r\n }\r\n });\r\n observer.observe(d.querySelector(observedSelector), intersectionObserveOptions);\r\n }\r\n\r\n});\r\n","/* SPDX-License-Identifier: AGPL-3.0-or-later */\r\n/* global searxng */\r\n\r\nsearxng.ready(function () {\r\n\r\n function isElementInDetail (el) {\r\n while (el !== undefined) {\r\n if (el.classList.contains('detail')) {\r\n return true;\r\n }\r\n if (el.classList.contains('result')) {\r\n // we found a result, no need to go to the root of the document:\r\n // el is not inside a
element\r\n return false;\r\n }\r\n el = el.parentNode;\r\n }\r\n return false;\r\n }\r\n\r\n function getResultElement (el) {\r\n while (el !== undefined) {\r\n if (el.classList.contains('result')) {\r\n return el;\r\n }\r\n el = el.parentNode;\r\n }\r\n return undefined;\r\n }\r\n\r\n function isImageResult (resultElement) {\r\n return resultElement && resultElement.classList.contains('result-images');\r\n }\r\n\r\n searxng.on('.result', 'click', function (e) {\r\n if (!isElementInDetail(e.target)) {\r\n highlightResult(this)(true, true);\r\n let resultElement = getResultElement(e.target);\r\n if (isImageResult(resultElement)) {\r\n e.preventDefault();\r\n searxng.selectImage(resultElement);\r\n }\r\n }\r\n });\r\n\r\n searxng.on('.result a', 'focus', function (e) {\r\n if (!isElementInDetail(e.target)) {\r\n let resultElement = getResultElement(e.target);\r\n if (resultElement && resultElement.getAttribute(\"data-vim-selected\") === null) {\r\n highlightResult(resultElement)(true);\r\n }\r\n if (isImageResult(resultElement)) {\r\n searxng.selectImage(resultElement);\r\n }\r\n }\r\n }, true);\r\n\r\n var vimKeys = {\r\n 27: {\r\n key: 'Escape',\r\n fun: removeFocus,\r\n des: 'remove focus from the focused input',\r\n cat: 'Control'\r\n },\r\n 73: {\r\n key: 'i',\r\n fun: searchInputFocus,\r\n des: 'focus on the search input',\r\n cat: 'Control'\r\n },\r\n 66: {\r\n key: 'b',\r\n fun: scrollPage(-window.innerHeight),\r\n des: 'scroll one page up',\r\n cat: 'Navigation'\r\n },\r\n 70: {\r\n key: 'f',\r\n fun: scrollPage(window.innerHeight),\r\n des: 'scroll one page down',\r\n cat: 'Navigation'\r\n },\r\n 85: {\r\n key: 'u',\r\n fun: scrollPage(-window.innerHeight / 2),\r\n des: 'scroll half a page up',\r\n cat: 'Navigation'\r\n },\r\n 68: {\r\n key: 'd',\r\n fun: scrollPage(window.innerHeight / 2),\r\n des: 'scroll half a page down',\r\n cat: 'Navigation'\r\n },\r\n 71: {\r\n key: 'g',\r\n fun: scrollPageTo(-document.body.scrollHeight, 'top'),\r\n des: 'scroll to the top of the page',\r\n cat: 'Navigation'\r\n },\r\n 86: {\r\n key: 'v',\r\n fun: scrollPageTo(document.body.scrollHeight, 'bottom'),\r\n des: 'scroll to the bottom of the page',\r\n cat: 'Navigation'\r\n },\r\n 75: {\r\n key: 'k',\r\n fun: highlightResult('up'),\r\n des: 'select previous search result',\r\n cat: 'Results'\r\n },\r\n 74: {\r\n key: 'j',\r\n fun: highlightResult('down'),\r\n des: 'select next search result',\r\n cat: 'Results'\r\n },\r\n 80: {\r\n key: 'p',\r\n fun: GoToPreviousPage(),\r\n des: 'go to previous page',\r\n cat: 'Results'\r\n },\r\n 78: {\r\n key: 'n',\r\n fun: GoToNextPage(),\r\n des: 'go to next page',\r\n cat: 'Results'\r\n },\r\n 79: {\r\n key: 'o',\r\n fun: openResult(false),\r\n des: 'open search result',\r\n cat: 'Results'\r\n },\r\n 84: {\r\n key: 't',\r\n fun: openResult(true),\r\n des: 'open the result in a new tab',\r\n cat: 'Results'\r\n },\r\n 82: {\r\n key: 'r',\r\n fun: reloadPage,\r\n des: 'reload page from the server',\r\n cat: 'Control'\r\n },\r\n 72: {\r\n key: 'h',\r\n fun: toggleHelp,\r\n des: 'toggle help window',\r\n cat: 'Other'\r\n }\r\n };\r\n\r\n if (searxng.settings.hotkeys) {\r\n searxng.on(document, \"keydown\", function (e) {\r\n // check for modifiers so we don't break browser's hotkeys\r\n if (Object.prototype.hasOwnProperty.call(vimKeys, e.keyCode) && !e.ctrlKey && !e.altKey && !e.shiftKey && !e.metaKey) {\r\n var tagName = e.target.tagName.toLowerCase();\r\n if (e.keyCode === 27) {\r\n vimKeys[e.keyCode].fun(e);\r\n } else {\r\n if (e.target === document.body || tagName === 'a' || tagName === 'button') {\r\n e.preventDefault();\r\n vimKeys[e.keyCode].fun();\r\n }\r\n }\r\n }\r\n });\r\n }\r\n\r\n function highlightResult (which) {\r\n return function (noScroll, keepFocus) {\r\n var current = document.querySelector('.result[data-vim-selected]'),\r\n effectiveWhich = which;\r\n if (current === null) {\r\n // no selection : choose the first one\r\n current = document.querySelector('.result');\r\n if (current === null) {\r\n // no first one : there are no results\r\n return;\r\n }\r\n // replace up/down actions by selecting first one\r\n if (which === \"down\" || which === \"up\") {\r\n effectiveWhich = current;\r\n }\r\n }\r\n\r\n var next, results = document.querySelectorAll('.result');\r\n\r\n if (typeof effectiveWhich !== 'string') {\r\n next = effectiveWhich;\r\n } else {\r\n switch (effectiveWhich) {\r\n case 'visible':\r\n var top = document.documentElement.scrollTop || document.body.scrollTop;\r\n var bot = top + document.documentElement.clientHeight;\r\n\r\n for (var i = 0; i < results.length; i++) {\r\n next = results[i];\r\n var etop = next.offsetTop;\r\n var ebot = etop + next.clientHeight;\r\n\r\n if ((ebot <= bot) && (etop > top)) {\r\n break;\r\n }\r\n }\r\n break;\r\n case 'down':\r\n next = current.nextElementSibling;\r\n if (next === null) {\r\n next = results[0];\r\n }\r\n break;\r\n case 'up':\r\n next = current.previousElementSibling;\r\n if (next === null) {\r\n next = results[results.length - 1];\r\n }\r\n break;\r\n case 'bottom':\r\n next = results[results.length - 1];\r\n break;\r\n case 'top':\r\n /* falls through */\r\n default:\r\n next = results[0];\r\n }\r\n }\r\n\r\n if (next) {\r\n current.removeAttribute('data-vim-selected');\r\n next.setAttribute('data-vim-selected', 'true');\r\n if (!keepFocus) {\r\n var link = next.querySelector('h3 a') || next.querySelector('a');\r\n if (link !== null) {\r\n link.focus();\r\n }\r\n }\r\n if (!noScroll) {\r\n scrollPageToSelected();\r\n }\r\n }\r\n };\r\n }\r\n\r\n function reloadPage () {\r\n document.location.reload(true);\r\n }\r\n\r\n function removeFocus (e) {\r\n const tagName = e.target.tagName.toLowerCase();\r\n if (document.activeElement && (tagName === 'input' || tagName === 'select' || tagName === 'textarea')) {\r\n document.activeElement.blur();\r\n } else {\r\n searxng.closeDetail();\r\n }\r\n }\r\n\r\n function pageButtonClick (css_selector) {\r\n return function () {\r\n var button = document.querySelector(css_selector);\r\n if (button) {\r\n button.click();\r\n }\r\n };\r\n }\r\n\r\n function GoToNextPage () {\r\n return pageButtonClick('nav#pagination .next_page button[type=\"submit\"]');\r\n }\r\n\r\n function GoToPreviousPage () {\r\n return pageButtonClick('nav#pagination .previous_page button[type=\"submit\"]');\r\n }\r\n\r\n function scrollPageToSelected () {\r\n var sel = document.querySelector('.result[data-vim-selected]');\r\n if (sel === null) {\r\n return;\r\n }\r\n var wtop = document.documentElement.scrollTop || document.body.scrollTop,\r\n wheight = document.documentElement.clientHeight,\r\n etop = sel.offsetTop,\r\n ebot = etop + sel.clientHeight,\r\n offset = 120;\r\n // first element ?\r\n if ((sel.previousElementSibling === null) && (ebot < wheight)) {\r\n // set to the top of page if the first element\r\n // is fully included in the viewport\r\n window.scroll(window.scrollX, 0);\r\n return;\r\n }\r\n if (wtop > (etop - offset)) {\r\n window.scroll(window.scrollX, etop - offset);\r\n } else {\r\n var wbot = wtop + wheight;\r\n if (wbot < (ebot + offset)) {\r\n window.scroll(window.scrollX, ebot - wheight + offset);\r\n }\r\n }\r\n }\r\n\r\n function scrollPage (amount) {\r\n return function () {\r\n window.scrollBy(0, amount);\r\n highlightResult('visible')();\r\n };\r\n }\r\n\r\n function scrollPageTo (position, nav) {\r\n return function () {\r\n window.scrollTo(0, position);\r\n highlightResult(nav)();\r\n };\r\n }\r\n\r\n function searchInputFocus () {\r\n window.scrollTo(0, 0);\r\n var q = document.querySelector('#q');\r\n q.focus();\r\n if (q.setSelectionRange) {\r\n var len = q.value.length;\r\n q.setSelectionRange(len, len);\r\n }\r\n }\r\n\r\n function openResult (newTab) {\r\n return function () {\r\n var link = document.querySelector('.result[data-vim-selected] h3 a');\r\n if (link === null) {\r\n link = document.querySelector('.result[data-vim-selected] > a');\r\n }\r\n if (link !== null) {\r\n var url = link.getAttribute('href');\r\n if (newTab) {\r\n window.open(url);\r\n } else {\r\n window.location.href = url;\r\n }\r\n }\r\n };\r\n }\r\n\r\n function initHelpContent (divElement) {\r\n var categories = {};\r\n\r\n for (var k in vimKeys) {\r\n var key = vimKeys[k];\r\n categories[key.cat] = categories[key.cat] || [];\r\n categories[key.cat].push(key);\r\n }\r\n\r\n var sorted = Object.keys(categories).sort(function (a, b) {\r\n return categories[b].length - categories[a].length;\r\n });\r\n\r\n if (sorted.length === 0) {\r\n return;\r\n }\r\n\r\n var html = '×';\r\n html += '

How to navigate searx with Vim-like hotkeys

';\r\n html += '';\r\n\r\n for (var i = 0; i < sorted.length; i++) {\r\n var cat = categories[sorted[i]];\r\n\r\n var lastCategory = i === (sorted.length - 1);\r\n var first = i % 2 === 0;\r\n\r\n if (first) {\r\n html += '';\r\n }\r\n html += ''; // col-sm-*\r\n\r\n if (!first || lastCategory) {\r\n html += ''; // row\r\n }\r\n }\r\n\r\n html += '
';\r\n\r\n html += '

' + cat[0].cat + '

';\r\n html += '
    ';\r\n\r\n for (var cj in cat) {\r\n html += '
  • ' + cat[cj].key + ' ' + cat[cj].des + '
  • ';\r\n }\r\n\r\n html += '
';\r\n html += '
';\r\n\r\n divElement.innerHTML = html;\r\n }\r\n\r\n function toggleHelp () {\r\n var helpPanel = document.querySelector('#vim-hotkeys-help');\r\n if (helpPanel === undefined || helpPanel === null) {\r\n // first call\r\n helpPanel = document.createElement('div');\r\n helpPanel.id = 'vim-hotkeys-help';\r\n helpPanel.className = 'dialog-modal';\r\n initHelpContent(helpPanel);\r\n initHelpContent(helpPanel);\r\n initHelpContent(helpPanel);\r\n var body = document.getElementsByTagName('body')[0];\r\n body.appendChild(helpPanel);\r\n } else {\r\n // togggle hidden\r\n helpPanel.classList.toggle('invisible');\r\n return;\r\n }\r\n }\r\n\r\n searxng.scrollPageToSelected = scrollPageToSelected;\r\n searxng.selectNext = highlightResult('down');\r\n searxng.selectPrevious = highlightResult('up');\r\n});\r\n","/* SPDX-License-Identifier: AGPL-3.0-or-later */\r\n/* global L */\r\n(function (w, d, searxng) {\r\n 'use strict';\r\n\r\n searxng.ready(function () {\r\n searxng.on('.searxng_init_map', 'click', function (event) {\r\n // no more request\r\n this.classList.remove(\"searxng_init_map\");\r\n\r\n //\r\n var leaflet_target = this.dataset.leafletTarget;\r\n var map_lon = parseFloat(this.dataset.mapLon);\r\n var map_lat = parseFloat(this.dataset.mapLat);\r\n var map_zoom = parseFloat(this.dataset.mapZoom);\r\n var map_boundingbox = JSON.parse(this.dataset.mapBoundingbox);\r\n var map_geojson = JSON.parse(this.dataset.mapGeojson);\r\n\r\n searxng.loadStyle('css/leaflet.css');\r\n searxng.loadScript('js/leaflet.js', function () {\r\n var map_bounds = null;\r\n if (map_boundingbox) {\r\n var southWest = L.latLng(map_boundingbox[0], map_boundingbox[2]);\r\n var northEast = L.latLng(map_boundingbox[1], map_boundingbox[3]);\r\n map_bounds = L.latLngBounds(southWest, northEast);\r\n }\r\n\r\n // init map\r\n var map = L.map(leaflet_target);\r\n // create the tile layer with correct attribution\r\n var osmMapnikUrl = 'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png';\r\n var osmMapnikAttrib = 'Map data © OpenStreetMap contributors';\r\n var osmMapnik = new L.TileLayer(osmMapnikUrl, {minZoom: 1, maxZoom: 19, attribution: osmMapnikAttrib});\r\n var osmWikimediaUrl = 'https://maps.wikimedia.org/osm-intl/{z}/{x}/{y}.png';\r\n var osmWikimediaAttrib = 'Wikimedia maps | Maps data © OpenStreetMap contributors';\r\n var osmWikimedia = new L.TileLayer(osmWikimediaUrl, {minZoom: 1, maxZoom: 19, attribution: osmWikimediaAttrib});\r\n // init map view\r\n if (map_bounds) {\r\n // TODO hack: https://github.com/Leaflet/Leaflet/issues/2021\r\n // Still useful ?\r\n setTimeout(function () {\r\n map.fitBounds(map_bounds, {\r\n maxZoom: 17\r\n });\r\n }, 0);\r\n } else if (map_lon && map_lat) {\r\n if (map_zoom) {\r\n map.setView(new L.latLng(map_lat, map_lon), map_zoom);\r\n } else {\r\n map.setView(new L.latLng(map_lat, map_lon), 8);\r\n }\r\n }\r\n\r\n map.addLayer(osmMapnik);\r\n\r\n var baseLayers = {\r\n \"OSM Mapnik\": osmMapnik,\r\n \"OSM Wikimedia\": osmWikimedia,\r\n };\r\n\r\n L.control.layers(baseLayers).addTo(map);\r\n\r\n if (map_geojson) {\r\n L.geoJson(map_geojson).addTo(map);\r\n } /* else if(map_bounds) {\r\n L.rectangle(map_bounds, {color: \"#ff7800\", weight: 3, fill:false}).addTo(map);\r\n } */\r\n });\r\n\r\n // this event occour only once per element\r\n event.preventDefault();\r\n });\r\n });\r\n})(window, document, window.searxng);\r\n","/* SPDX-License-Identifier: AGPL-3.0-or-later */\r\n(function (w, d, searxng) {\r\n 'use strict';\r\n\r\n if (searxng.endpoint !== 'preferences') {\r\n return;\r\n }\r\n\r\n searxng.ready(function () {\r\n let engine_descriptions = null;\r\n function load_engine_descriptions () {\r\n if (engine_descriptions == null) {\r\n searxng.http(\"GET\", \"engine_descriptions.json\").then(function (content) {\r\n engine_descriptions = JSON.parse(content);\r\n for (const [engine_name, description] of Object.entries(engine_descriptions)) {\r\n let elements = d.querySelectorAll('[data-engine-name=\"' + engine_name + '\"] .engine-description');\r\n for (const element of elements) {\r\n let source = ' (' + searxng.settings.translations.Source + ': ' + description[1] + ')';\r\n element.innerHTML = description[0] + source;\r\n }\r\n }\r\n });\r\n }\r\n }\r\n\r\n for (const el of d.querySelectorAll('[data-engine-name]')) {\r\n searxng.on(el, 'mouseenter', load_engine_descriptions);\r\n }\r\n });\r\n})(window, document, window.searxng);\r\n","/* SPDX-License-Identifier: AGPL-3.0-or-later */\r\n(function (w, d, searxng) {\r\n 'use strict';\r\n\r\n if (searxng.endpoint !== 'results') {\r\n return;\r\n }\r\n\r\n searxng.ready(function () {\r\n d.querySelectorAll('#urls img.image').forEach(\r\n img =>\r\n img.addEventListener(\r\n 'error', () => {\r\n img.style.display = 'none';\r\n img.error = null;\r\n }\r\n ));\r\n\r\n searxng.on('.btn-collapse', 'click', function () {\r\n var btnLabelCollapsed = this.getAttribute('data-btn-text-collapsed');\r\n var btnLabelNotCollapsed = this.getAttribute('data-btn-text-not-collapsed');\r\n var target = this.getAttribute('data-target');\r\n var targetElement = d.querySelector(target);\r\n var html = this.innerHTML;\r\n if (this.classList.contains('collapsed')) {\r\n html = html.replace(btnLabelCollapsed, btnLabelNotCollapsed);\r\n } else {\r\n html = html.replace(btnLabelNotCollapsed, btnLabelCollapsed);\r\n }\r\n this.innerHTML = html;\r\n this.classList.toggle('collapsed');\r\n targetElement.classList.toggle('invisible');\r\n });\r\n\r\n searxng.on('.media-loader', 'click', function () {\r\n var target = this.getAttribute('data-target');\r\n var iframe_load = d.querySelector(target + ' > iframe');\r\n var srctest = iframe_load.getAttribute('src');\r\n if (srctest === null || srctest === undefined || srctest === false) {\r\n iframe_load.setAttribute('src', iframe_load.getAttribute('data-src'));\r\n }\r\n });\r\n\r\n searxng.selectImage = function (resultElement) {\r\n /* eslint no-unused-vars: 0 */\r\n if (resultElement) {\r\n // load full size image in background\r\n const imgElement = resultElement.querySelector('.result-images-source img');\r\n const thumbnailElement = resultElement.querySelector('.image_thumbnail');\r\n const detailElement = resultElement.querySelector('.detail');\r\n if (imgElement) {\r\n const imgSrc = imgElement.getAttribute('data-src');\r\n if (imgSrc) {\r\n const loader = d.createElement('div');\r\n const imgLoader = new Image();\r\n\r\n loader.classList.add('loader');\r\n detailElement.appendChild(loader);\r\n\r\n imgLoader.onload = e => {\r\n imgElement.src = imgSrc;\r\n loader.remove();\r\n };\r\n imgLoader.onerror = e => {\r\n loader.remove();\r\n };\r\n imgLoader.src = imgSrc;\r\n imgElement.src = thumbnailElement.src;\r\n imgElement.removeAttribute('data-src');\r\n }\r\n }\r\n }\r\n d.getElementById('results').classList.add('image-detail-open');\r\n searxng.scrollPageToSelected();\r\n }\r\n\r\n searxng.closeDetail = function (e) {\r\n d.getElementById('results').classList.remove('image-detail-open');\r\n searxng.scrollPageToSelected();\r\n }\r\n searxng.on('.result-detail-close', 'click', e => {\r\n e.preventDefault();\r\n searxng.closeDetail();\r\n });\r\n searxng.on('.result-detail-previous', 'click', e => searxng.selectPrevious(false));\r\n searxng.on('.result-detail-next', 'click', e => searxng.selectNext(false));\r\n\r\n w.addEventListener('scroll', function () {\r\n var e = d.getElementById('backToTop'),\r\n scrollTop = document.documentElement.scrollTop || document.body.scrollTop,\r\n results = d.getElementById('results');\r\n if (e !== null) {\r\n if (scrollTop >= 100) {\r\n results.classList.add('scrolling');\r\n } else {\r\n results.classList.remove('scrolling');\r\n }\r\n }\r\n }, true);\r\n\r\n });\r\n\r\n})(window, document, window.searxng);\r\n","/* SPDX-License-Identifier: AGPL-3.0-or-later */\r\n/* global AutoComplete */\r\n(function (w, d, searxng) {\r\n 'use strict';\r\n\r\n var qinput_id = \"q\", qinput;\r\n\r\n const isMobile = window.matchMedia(\"only screen and (max-width: 50em)\").matches;\r\n\r\n function submitIfQuery () {\r\n if (qinput.value.length > 0) {\r\n var search = document.getElementById('search');\r\n setTimeout(search.submit.bind(search), 0);\r\n }\r\n }\r\n\r\n function createClearButton (qinput) {\r\n var cs = document.getElementById('clear_search');\r\n var updateClearButton = function () {\r\n if (qinput.value.length === 0) {\r\n cs.classList.add(\"empty\");\r\n } else {\r\n cs.classList.remove(\"empty\");\r\n }\r\n };\r\n\r\n // update status, event listener\r\n updateClearButton();\r\n cs.addEventListener('click', function (ev) {\r\n qinput.value = '';\r\n qinput.focus();\r\n updateClearButton();\r\n ev.preventDefault();\r\n });\r\n qinput.addEventListener('keyup', updateClearButton, false);\r\n }\r\n\r\n searxng.ready(function () {\r\n qinput = d.getElementById(qinput_id);\r\n\r\n if (qinput !== null) {\r\n // clear button\r\n createClearButton(qinput);\r\n\r\n // autocompleter\r\n if (searxng.settings.autocomplete_provider) {\r\n searxng.autocomplete = AutoComplete.call(w, {\r\n Url: \"./autocompleter\",\r\n EmptyMessage: searxng.settings.translations.no_item_found,\r\n HttpMethod: searxng.settings.http_method,\r\n HttpHeaders: {\r\n \"Content-type\": \"application/x-www-form-urlencoded\",\r\n \"X-Requested-With\": \"XMLHttpRequest\"\r\n },\r\n MinChars: searxng.settings.autocomplete_min,\r\n Delay: 300,\r\n _Position: function () {},\r\n _Open: function () {\r\n var params = this;\r\n Array.prototype.forEach.call(this.DOMResults.getElementsByTagName(\"li\"), function (li) {\r\n if (li.getAttribute(\"class\") != \"locked\") {\r\n li.onmousedown = function () {\r\n params._Select(li);\r\n };\r\n }\r\n });\r\n },\r\n }, \"#\" + qinput_id);\r\n }\r\n\r\n /*\r\n Monkey patch autocomplete.js to fix a bug\r\n With the POST method, the values are not URL encoded: query like \"1 + 1\" are sent as \"1 1\" since space are URL encoded as plus.\r\n See HTML specifications:\r\n * HTML5: https://url.spec.whatwg.org/#concept-urlencoded-serializer\r\n * HTML4: https://www.w3.org/TR/html401/interact/forms.html#h-17.13.4.1\r\n\r\n autocomplete.js does not URL encode the name and values:\r\n https://github.com/autocompletejs/autocomplete.js/blob/87069524f3b95e68f1b54d8976868e0eac1b2c83/src/autocomplete.ts#L665\r\n\r\n The monkey patch overrides the compiled version of the ajax function.\r\n See https://github.com/autocompletejs/autocomplete.js/blob/87069524f3b95e68f1b54d8976868e0eac1b2c83/dist/autocomplete.js#L143-L158\r\n The patch changes only the line 156 from\r\n params.Request.send(params._QueryArg() + \"=\" + params._Pre());\r\n to\r\n params.Request.send(encodeURIComponent(params._QueryArg()) + \"=\" + encodeURIComponent(params._Pre()));\r\n\r\n Related to:\r\n * https://github.com/autocompletejs/autocomplete.js/issues/78\r\n * https://github.com/searxng/searxng/issues/1695\r\n */\r\n AutoComplete.prototype.ajax = function (params, request, timeout) {\r\n if (timeout === void 0) { timeout = true; }\r\n if (params.$AjaxTimer) {\r\n window.clearTimeout(params.$AjaxTimer);\r\n }\r\n if (timeout === true) {\r\n params.$AjaxTimer = window.setTimeout(AutoComplete.prototype.ajax.bind(null, params, request, false), params.Delay);\r\n } else {\r\n if (params.Request) {\r\n params.Request.abort();\r\n }\r\n params.Request = request;\r\n params.Request.send(encodeURIComponent(params._QueryArg()) + \"=\" + encodeURIComponent(params._Pre()));\r\n }\r\n };\r\n\r\n if (!isMobile && document.querySelector('.index_endpoint')) {\r\n qinput.focus();\r\n }\r\n }\r\n\r\n // vanilla js version of search_on_category_select.js\r\n if (qinput !== null && d.querySelector('.help') != null && searxng.settings.search_on_category_select) {\r\n d.querySelector('.help').className = 'invisible';\r\n\r\n searxng.on('#categories input', 'change', function () {\r\n var i, categories = d.querySelectorAll('#categories input[type=\"checkbox\"]');\r\n for (i = 0; i < categories.length; i++) {\r\n if (categories[i] !== this && categories[i].checked) {\r\n categories[i].click();\r\n }\r\n }\r\n if (! this.checked) {\r\n this.click();\r\n }\r\n submitIfQuery();\r\n return false;\r\n });\r\n\r\n searxng.on(d.getElementById('safesearch'), 'change', submitIfQuery);\r\n searxng.on(d.getElementById('time_range'), 'change', submitIfQuery);\r\n searxng.on(d.getElementById('language'), 'change', submitIfQuery);\r\n }\r\n\r\n });\r\n\r\n})(window, document, window.searxng);\r\n","(function(f){if(typeof exports===\"object\"&&typeof module!==\"undefined\"){module.exports=f()}else if(typeof define===\"function\"&&define.amd){define([],f)}else{var g;if(typeof window!==\"undefined\"){g=window}else if(typeof global!==\"undefined\"){g=global}else if(typeof self!==\"undefined\"){g=self}else{g=this}g.AutoComplete = f()}})(function(){var define,module,exports;return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\"function\"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u=\"function\"==typeof require&&require,i=0;i @baptistedonaux\n */\nvar AutoComplete = /** @class */ (function () {\n // Constructor\n function AutoComplete(params, selector) {\n if (params === void 0) { params = {}; }\n if (selector === void 0) { selector = \"[data-autocomplete]\"; }\n if (Array.isArray(selector)) {\n selector.forEach(function (s) {\n new AutoComplete(params, s);\n });\n }\n else if (typeof selector == \"string\") {\n var elements = document.querySelectorAll(selector);\n Array.prototype.forEach.call(elements, function (input) {\n new AutoComplete(params, input);\n });\n }\n else {\n var specificParams = AutoComplete.merge(AutoComplete.defaults, params, {\n DOMResults: document.createElement(\"div\")\n });\n AutoComplete.prototype.create(specificParams, selector);\n return specificParams;\n }\n }\n AutoComplete.prototype.create = function (params, element) {\n params.Input = element;\n if (params.Input.nodeName.match(/^INPUT$/i) && (params.Input.hasAttribute(\"type\") === false || params.Input.getAttribute(\"type\").match(/^TEXT|SEARCH$/i))) {\n params.Input.setAttribute(\"autocomplete\", \"off\");\n params._Position(params);\n params.Input.parentNode.appendChild(params.DOMResults);\n params.$Listeners = {\n blur: params._Blur.bind(params),\n destroy: AutoComplete.prototype.destroy.bind(null, params),\n focus: params._Focus.bind(params),\n keyup: AutoComplete.prototype.event.bind(null, params, EventType.KEYUP),\n keydown: AutoComplete.prototype.event.bind(null, params, EventType.KEYDOWN),\n position: params._Position.bind(params)\n };\n for (var event in params.$Listeners) {\n params.Input.addEventListener(event, params.$Listeners[event]);\n }\n }\n };\n AutoComplete.prototype.getEventsByType = function (params, type) {\n var mappings = {};\n for (var key in params.KeyboardMappings) {\n var event = EventType.KEYUP;\n if (params.KeyboardMappings[key].Event !== undefined) {\n event = params.KeyboardMappings[key].Event;\n }\n if (event == type) {\n mappings[key] = params.KeyboardMappings[key];\n }\n }\n return mappings;\n };\n AutoComplete.prototype.event = function (params, type, event) {\n var eventIdentifier = function (condition) {\n if ((match === true && mapping.Operator == ConditionOperator.AND) || (match === false && mapping.Operator == ConditionOperator.OR)) {\n condition = AutoComplete.merge({\n Not: false\n }, condition);\n if (condition.hasOwnProperty(\"Is\")) {\n if (condition.Is == event.keyCode) {\n match = !condition.Not;\n }\n else {\n match = condition.Not;\n }\n }\n else if (condition.hasOwnProperty(\"From\") && condition.hasOwnProperty(\"To\")) {\n if (event.keyCode >= condition.From && event.keyCode <= condition.To) {\n match = !condition.Not;\n }\n else {\n match = condition.Not;\n }\n }\n }\n };\n for (var name in AutoComplete.prototype.getEventsByType(params, type)) {\n var mapping = AutoComplete.merge({\n Operator: ConditionOperator.AND\n }, params.KeyboardMappings[name]), match = ConditionOperator.AND == mapping.Operator;\n mapping.Conditions.forEach(eventIdentifier);\n if (match === true) {\n mapping.Callback.call(params, event);\n }\n }\n };\n AutoComplete.prototype.makeRequest = function (params, callback, callbackErr) {\n var propertyHttpHeaders = Object.getOwnPropertyNames(params.HttpHeaders), request = new XMLHttpRequest(), method = params._HttpMethod(), url = params._Url(), queryParams = params._Pre(), queryParamsStringify = encodeURIComponent(params._QueryArg()) + \"=\" + encodeURIComponent(queryParams);\n if (method.match(/^GET$/i)) {\n if (url.indexOf(\"?\") !== -1) {\n url += \"&\" + queryParamsStringify;\n }\n else {\n url += \"?\" + queryParamsStringify;\n }\n }\n request.open(method, url, true);\n for (var i = propertyHttpHeaders.length - 1; i >= 0; i--) {\n request.setRequestHeader(propertyHttpHeaders[i], params.HttpHeaders[propertyHttpHeaders[i]]);\n }\n request.onreadystatechange = function () {\n if (request.readyState == 4 && request.status == 200) {\n params.$Cache[queryParams] = request.response;\n callback(request.response);\n }\n else if (request.status >= 400) {\n callbackErr();\n }\n };\n return request;\n };\n AutoComplete.prototype.ajax = function (params, request, timeout) {\n if (timeout === void 0) { timeout = true; }\n if (params.$AjaxTimer) {\n window.clearTimeout(params.$AjaxTimer);\n }\n if (timeout === true) {\n params.$AjaxTimer = window.setTimeout(AutoComplete.prototype.ajax.bind(null, params, request, false), params.Delay);\n }\n else {\n if (params.Request) {\n params.Request.abort();\n }\n params.Request = request;\n params.Request.send(params._QueryArg() + \"=\" + params._Pre());\n }\n };\n AutoComplete.prototype.cache = function (params, callback, callbackErr) {\n var response = params._Cache(params._Pre());\n if (response === undefined) {\n var request = AutoComplete.prototype.makeRequest(params, callback, callbackErr);\n AutoComplete.prototype.ajax(params, request);\n }\n else {\n callback(response);\n }\n };\n AutoComplete.prototype.destroy = function (params) {\n for (var event in params.$Listeners) {\n params.Input.removeEventListener(event, params.$Listeners[event]);\n }\n params.DOMResults.parentNode.removeChild(params.DOMResults);\n };\n AutoComplete.merge = function () {\n var merge = {}, tmp;\n for (var i = 0; i < arguments.length; i++) {\n for (tmp in arguments[i]) {\n merge[tmp] = arguments[i][tmp];\n }\n }\n return merge;\n };\n AutoComplete.defaults = {\n Delay: 150,\n EmptyMessage: \"No result here\",\n Highlight: {\n getRegex: function (value) {\n return new RegExp(value, \"ig\");\n },\n transform: function (value) {\n return \"\" + value + \"\";\n }\n },\n HttpHeaders: {\n \"Content-type\": \"application/x-www-form-urlencoded\"\n },\n Limit: 0,\n MinChars: 0,\n HttpMethod: \"GET\",\n QueryArg: \"q\",\n Url: null,\n KeyboardMappings: {\n \"Enter\": {\n Conditions: [{\n Is: 13,\n Not: false\n }],\n Callback: function (event) {\n if (this.DOMResults.getAttribute(\"class\").indexOf(\"open\") != -1) {\n var liActive = this.DOMResults.querySelector(\"li.active\");\n if (liActive !== null) {\n event.preventDefault();\n this._Select(liActive);\n this.DOMResults.setAttribute(\"class\", \"autocomplete\");\n }\n }\n },\n Operator: ConditionOperator.AND,\n Event: EventType.KEYDOWN\n },\n \"KeyUpAndDown_down\": {\n Conditions: [{\n Is: 38,\n Not: false\n },\n {\n Is: 40,\n Not: false\n }],\n Callback: function (event) {\n event.preventDefault();\n },\n Operator: ConditionOperator.OR,\n Event: EventType.KEYDOWN\n },\n \"KeyUpAndDown_up\": {\n Conditions: [{\n Is: 38,\n Not: false\n },\n {\n Is: 40,\n Not: false\n }],\n Callback: function (event) {\n event.preventDefault();\n var first = this.DOMResults.querySelector(\"li:first-child:not(.locked)\"), last = this.DOMResults.querySelector(\"li:last-child:not(.locked)\"), active = this.DOMResults.querySelector(\"li.active\");\n if (active) {\n var currentIndex = Array.prototype.indexOf.call(active.parentNode.children, active), position = currentIndex + (event.keyCode - 39), lisCount = this.DOMResults.getElementsByTagName(\"li\").length;\n if (position < 0) {\n position = lisCount - 1;\n }\n else if (position >= lisCount) {\n position = 0;\n }\n active.classList.remove(\"active\");\n active.parentElement.children.item(position).classList.add(\"active\");\n }\n else if (last && event.keyCode == 38) {\n last.classList.add(\"active\");\n }\n else if (first) {\n first.classList.add(\"active\");\n }\n },\n Operator: ConditionOperator.OR,\n Event: EventType.KEYUP\n },\n \"AlphaNum\": {\n Conditions: [{\n Is: 13,\n Not: true\n }, {\n From: 35,\n To: 40,\n Not: true\n }],\n Callback: function () {\n var oldValue = this.Input.getAttribute(\"data-autocomplete-old-value\"), currentValue = this._Pre();\n if (currentValue !== \"\" && currentValue.length >= this._MinChars()) {\n if (!oldValue || currentValue != oldValue) {\n this.DOMResults.setAttribute(\"class\", \"autocomplete open\");\n }\n AutoComplete.prototype.cache(this, function (response) {\n this._Render(this._Post(response));\n this._Open();\n }.bind(this), this._Error);\n }\n else {\n this._Close();\n }\n },\n Operator: ConditionOperator.AND,\n Event: EventType.KEYUP\n }\n },\n DOMResults: null,\n Request: null,\n Input: null,\n /**\n * Return the message when no result returns\n */\n _EmptyMessage: function () {\n var emptyMessage = \"\";\n if (this.Input.hasAttribute(\"data-autocomplete-empty-message\")) {\n emptyMessage = this.Input.getAttribute(\"data-autocomplete-empty-message\");\n }\n else if (this.EmptyMessage !== false) {\n emptyMessage = this.EmptyMessage;\n }\n else {\n emptyMessage = \"\";\n }\n return emptyMessage;\n },\n /**\n * Returns the maximum number of results\n */\n _Limit: function () {\n var limit = this.Input.getAttribute(\"data-autocomplete-limit\");\n if (isNaN(limit) || limit === null) {\n return this.Limit;\n }\n return parseInt(limit, 10);\n },\n /**\n * Returns the minimum number of characters entered before firing ajax\n */\n _MinChars: function () {\n var minchars = this.Input.getAttribute(\"data-autocomplete-minchars\");\n if (isNaN(minchars) || minchars === null) {\n return this.MinChars;\n }\n return parseInt(minchars, 10);\n },\n /**\n * Apply transformation on labels response\n */\n _Highlight: function (label) {\n return label.replace(this.Highlight.getRegex(this._Pre()), this.Highlight.transform);\n },\n /**\n * Returns the HHTP method to use\n */\n _HttpMethod: function () {\n if (this.Input.hasAttribute(\"data-autocomplete-method\")) {\n return this.Input.getAttribute(\"data-autocomplete-method\");\n }\n return this.HttpMethod;\n },\n /**\n * Returns the query param to use\n */\n _QueryArg: function () {\n if (this.Input.hasAttribute(\"data-autocomplete-param-name\")) {\n return this.Input.getAttribute(\"data-autocomplete-param-name\");\n }\n return this.QueryArg;\n },\n /**\n * Returns the URL to use for AJAX request\n */\n _Url: function () {\n if (this.Input.hasAttribute(\"data-autocomplete\")) {\n return this.Input.getAttribute(\"data-autocomplete\");\n }\n return this.Url;\n },\n /**\n * Manage the close\n */\n _Blur: function (now) {\n if (now === void 0) { now = false; }\n if (now) {\n this._Close();\n }\n else {\n var params = this;\n setTimeout(function () {\n params._Blur(true);\n }, 150);\n }\n },\n /**\n * Manage the cache\n */\n _Cache: function (value) {\n return this.$Cache[value];\n },\n /**\n * Manage the open\n */\n _Focus: function () {\n var oldValue = this.Input.getAttribute(\"data-autocomplete-old-value\");\n if ((!oldValue || this.Input.value != oldValue) && this._MinChars() <= this.Input.value.length) {\n this.DOMResults.setAttribute(\"class\", \"autocomplete open\");\n }\n },\n /**\n * Bind all results item if one result is opened\n */\n _Open: function () {\n var params = this;\n Array.prototype.forEach.call(this.DOMResults.getElementsByTagName(\"li\"), function (li) {\n if (li.getAttribute(\"class\") != \"locked\") {\n li.onclick = function () {\n params._Select(li);\n };\n }\n });\n },\n _Close: function () {\n this.DOMResults.setAttribute(\"class\", \"autocomplete\");\n },\n /**\n * Position the results HTML element\n */\n _Position: function () {\n this.DOMResults.setAttribute(\"class\", \"autocomplete\");\n this.DOMResults.setAttribute(\"style\", \"top:\" + (this.Input.offsetTop + this.Input.offsetHeight) + \"px;left:\" + this.Input.offsetLeft + \"px;width:\" + this.Input.clientWidth + \"px;\");\n },\n /**\n * Execute the render of results DOM element\n */\n _Render: function (response) {\n var ul;\n if (typeof response == \"string\") {\n ul = this._RenderRaw(response);\n }\n else {\n ul = this._RenderResponseItems(response);\n }\n if (this.DOMResults.hasChildNodes()) {\n this.DOMResults.removeChild(this.DOMResults.childNodes[0]);\n }\n this.DOMResults.appendChild(ul);\n },\n /**\n * ResponseItems[] rendering\n */\n _RenderResponseItems: function (response) {\n var ul = document.createElement(\"ul\"), li = document.createElement(\"li\"), limit = this._Limit();\n // Order\n if (limit < 0) {\n response = response.reverse();\n }\n else if (limit === 0) {\n limit = response.length;\n }\n for (var item = 0; item < Math.min(Math.abs(limit), response.length); item++) {\n li.innerHTML = response[item].Label;\n li.setAttribute(\"data-autocomplete-value\", response[item].Value);\n ul.appendChild(li);\n li = document.createElement(\"li\");\n }\n return ul;\n },\n /**\n * string response rendering (RAW HTML)\n */\n _RenderRaw: function (response) {\n var ul = document.createElement(\"ul\"), li = document.createElement(\"li\");\n if (response.length > 0) {\n this.DOMResults.innerHTML = response;\n }\n else {\n var emptyMessage = this._EmptyMessage();\n if (emptyMessage !== \"\") {\n li.innerHTML = emptyMessage;\n li.setAttribute(\"class\", \"locked\");\n ul.appendChild(li);\n }\n }\n return ul;\n },\n /**\n * Deal with request response\n */\n _Post: function (response) {\n try {\n var returnResponse = [];\n //JSON return\n var json = JSON.parse(response);\n if (Object.keys(json).length === 0) {\n return \"\";\n }\n if (Array.isArray(json)) {\n for (var i = 0; i < Object.keys(json).length; i++) {\n returnResponse[returnResponse.length] = { \"Value\": json[i], \"Label\": this._Highlight(json[i]) };\n }\n }\n else {\n for (var value in json) {\n returnResponse.push({\n \"Value\": value,\n \"Label\": this._Highlight(json[value])\n });\n }\n }\n return returnResponse;\n }\n catch (event) {\n //HTML return\n return response;\n }\n },\n /**\n * Return the autocomplete value to send (before request)\n */\n _Pre: function () {\n return this.Input.value;\n },\n /**\n * Choice one result item\n */\n _Select: function (item) {\n if (item.hasAttribute(\"data-autocomplete-value\")) {\n this.Input.value = item.getAttribute(\"data-autocomplete-value\");\n }\n else {\n this.Input.value = item.innerHTML;\n }\n this.Input.setAttribute(\"data-autocomplete-old-value\", this.Input.value);\n },\n /**\n * Handle HTTP error on the request\n */\n _Error: function () {\n },\n $AjaxTimer: null,\n $Cache: {},\n $Listeners: {}\n };\n return AutoComplete;\n}());\nmodule.exports = AutoComplete;\n\n},{}]},{},[1])(1)\n});\n"],"names":["window","searxng","w","d","Element","ElementPrototype","matches","matchesSelector","webkitMatchesSelector","msMatchesSelector","selector","node","this","nodes","parentNode","document","querySelectorAll","i","prototype","callbackSafe","callback","el","e","call","exception","console","log","on","obj","eventType","useCapture","addEventListener","target","srcElement","found","parentElement","ready","readyState","bind","http","method","url","data","Promise","resolve","reject","req","XMLHttpRequest","open","timeout","onload","status","response","responseType","Error","statusText","onerror","onabort","ontimeout","send","ex","loadStyle","src","path","settings","theme_static_path","id","replace","s","getElementById","createElement","setAttribute","body","appendChild","loadScript","hasAttribute","apply","insertBefore","newNode","referenceNode","insertAfter","nextSibling","classList","add","getEndpoint","className","getElementsByTagName","values","endsWith","split","endpoint","infinite_scroll_supported","IntersectionObserverEntry","let","onlyImages","contains","newLoadSpinner","loader","replaceChildrenWith","element","children","textContent","forEach","child","loadNextPage","form","querySelector","formData","FormData","getAttribute","then","nextPageDoc","DOMParser","parseFromString","articleList","paginationElement","remove","length","articleElement","catch","err","translations","error_loading_next_page","infinite_scroll","intersectionObserveOptions","rootMargin","observedSelector","observer","IntersectionObserver","entries","paginationEntry","isIntersecting","unobserve","observe","isElementInDetail","undefined","getResultElement","isImageResult","resultElement","highlightResult","preventDefault","selectImage","vimKeys","27","key","fun","removeFocus","des","cat","73","searchInputFocus","66","scrollPage","innerHeight","70","85","68","71","scrollPageTo","scrollHeight","86","75","74","80","GoToPreviousPage","78","GoToNextPage","79","openResult","84","82","reloadPage","72","toggleHelp","hotkeys","Object","hasOwnProperty","keyCode","ctrlKey","altKey","shiftKey","metaKey","tagName","toLowerCase","which","noScroll","keepFocus","current","effectiveWhich","next","results","top","documentElement","scrollTop","bot","clientHeight","etop","offsetTop","ebot","nextElementSibling","previousElementSibling","removeAttribute","link","focus","scrollPageToSelected","location","reload","activeElement","blur","closeDetail","pageButtonClick","css_selector","button","click","sel","wtop","wheight","offset","scroll","scrollX","wbot","amount","scrollBy","position","nav","scrollTo","q","setSelectionRange","len","value","newTab","href","initHelpContent","divElement","categories","k","push","sorted","keys","sort","a","b","html","lastCategory","first","cj","innerHTML","helpPanel","toggle","selectNext","selectPrevious","event","leaflet_target","dataset","leafletTarget","map_lon","parseFloat","mapLon","map_lat","mapLat","map_zoom","mapZoom","map_boundingbox","JSON","parse","mapBoundingbox","map_geojson","mapGeojson","map_bounds","southWest","L","latLng","northEast","latLngBounds","map","osmMapnikUrl","osmMapnikAttrib","osmMapnik","TileLayer","minZoom","maxZoom","attribution","osmWikimediaUrl","osmWikimediaAttrib","osmWikimedia","setTimeout","fitBounds","setView","addLayer","baseLayers","OSM Mapnik","OSM Wikimedia","control","layers","addTo","geoJson","engine_descriptions","load_engine_descriptions","content","engine_name","description","elements","source","Source","img","style","display","error","btnLabelCollapsed","btnLabelNotCollapsed","targetElement","iframe_load","srctest","imgElement","thumbnailElement","detailElement","imgSrc","imgLoader","Image","qinput_id","qinput","isMobile","matchMedia","submitIfQuery","search","submit","createClearButton","cs","updateClearButton","ev","autocomplete_provider","autocomplete","AutoComplete","Url","EmptyMessage","no_item_found","HttpMethod","http_method","HttpHeaders","Content-type","X-Requested-With","MinChars","autocomplete_min","Delay","_Position","_Open","params","Array","DOMResults","li","onmousedown","_Select","ajax","request","$AjaxTimer","clearTimeout","Request","abort","encodeURIComponent","_QueryArg","_Pre","search_on_category_select","checked","f","exports","module","define","amd","g","global","self","r","n","t","o","c","require","u","code","p","1","ConditionOperator","EventType","isArray","input","specificParams","merge","defaults","create","Input","nodeName","match","$Listeners","_Blur","destroy","_Focus","keyup","KEYUP","keydown","KEYDOWN","getEventsByType","type","mappings","KeyboardMappings","Event","eventIdentifier","condition","mapping","Operator","AND","OR","Not","Is","From","To","name","Conditions","Callback","makeRequest","callbackErr","propertyHttpHeaders","getOwnPropertyNames","_HttpMethod","_Url","queryParams","queryParamsStringify","indexOf","setRequestHeader","onreadystatechange","$Cache","cache","_Cache","removeEventListener","removeChild","tmp","arguments","Highlight","getRegex","RegExp","transform","Limit","QueryArg","Enter","liActive","KeyUpAndDown_down","KeyUpAndDown_up","last","active","currentIndex","lisCount","item","AlphaNum","oldValue","currentValue","_MinChars","_Render","_Post","_Error","_Close","_EmptyMessage","emptyMessage","_Limit","limit","isNaN","parseInt","minchars","_Highlight","label","now","onclick","offsetHeight","offsetLeft","clientWidth","ul","_RenderRaw","_RenderResponseItems","hasChildNodes","childNodes","reverse","Math","min","abs","Label","Value","returnResponse","json"],"mappings":"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"} \ No newline at end of file diff --git a/searx/static/themes/magi/markdown.js b/searx/static/themes/magi/markdown.js new file mode 100644 index 000000000..899980c2b --- /dev/null +++ b/searx/static/themes/magi/markdown.js @@ -0,0 +1,635 @@ +// Markdown.Converter.js +var Markdown;if(typeof exports==="object"&&typeof require==="function"){Markdown=exports}else{Markdown={}}(function(){function identity(x){return x}function returnFalse(x){return false}function HookCollection(){}HookCollection.prototype={chain:function(hookname,func){var original=this[hookname];if(!original){throw new Error("unknown hook "+hookname)}if(original===identity){this[hookname]=func}else{this[hookname]=function(text){var args=Array.prototype.slice.call(arguments,0);args[0]=original.apply(null,args);return func.apply(null,args)}}},set:function(hookname,func){if(!this[hookname]){throw new Error("unknown hook "+hookname)}this[hookname]=func},addNoop:function(hookname){this[hookname]=identity},addFalse:function(hookname){this[hookname]=returnFalse}};Markdown.HookCollection=HookCollection;function SaveHash(){}SaveHash.prototype={set:function(key,value){this["s_"+key]=value},get:function(key){return this["s_"+key]}};Markdown.Converter=function(){var options={};this.setOptions=function(optionsParam){options=optionsParam};var pluginHooks=this.hooks=new HookCollection();pluginHooks.addNoop("plainLinkText");pluginHooks.addNoop("preConversion");pluginHooks.addNoop("postNormalization");pluginHooks.addNoop("preBlockGamut");pluginHooks.addNoop("postBlockGamut");pluginHooks.addNoop("preSpanGamut");pluginHooks.addNoop("postSpanGamut");pluginHooks.addNoop("postConversion");var g_urls;var g_titles;var g_html_blocks;var g_list_level;this.makeHtml=function(text){if(g_urls){throw new Error("Recursive call to converter.makeHtml")}g_urls=new SaveHash();g_titles=new SaveHash();g_html_blocks=[];g_list_level=0;text=pluginHooks.preConversion(text);text=text.replace(/~/g,"~T");text=text.replace(/\$/g,"~D");text=text.replace(/\r\n/g,"\n");text=text.replace(/\r/g,"\n");text="\n\n"+text+"\n\n";text=_Detab(text);text=text.replace(/^[ \t]+$/mg,"");text=pluginHooks.postNormalization(text);text=_HashHTMLBlocks(text);text=_StripLinkDefinitions(text);text=_RunBlockGamut(text);text=_UnescapeSpecialChars(text);text=text.replace(/~D/g,"$$");text=text.replace(/~T/g,"~");text=pluginHooks.postConversion(text);g_html_blocks=g_titles=g_urls=null;return text};function _StripLinkDefinitions(text){text=text.replace(/^[ ]{0,3}\[(.+)\]:[ \t]*\n?[ \t]*?(?=\s|$)[ \t]*\n?[ \t]*((\n*)["(](.+?)[")][ \t]*)?(?:\n+)/gm,function(wholeMatch,m1,m2,m3,m4,m5){m1=m1.toLowerCase();g_urls.set(m1,_EncodeAmpsAndAngles(m2));if(m4){return m3}else{if(m5){g_titles.set(m1,m5.replace(/"/g,"""))}}return""});return text}function _HashHTMLBlocks(text){var block_tags_a="p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|script|noscript|form|fieldset|iframe|math|ins|del";var block_tags_b="p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|script|noscript|form|fieldset|iframe|math";text=text.replace(/^(<(p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|script|noscript|form|fieldset|iframe|math|ins|del)\b[^\r]*?\n<\/\2>[ \t]*(?=\n+))/gm,hashElement);text=text.replace(/^(<(p|div|h[1-6]|blockquote|pre|table|dl|ol|ul|script|noscript|form|fieldset|iframe|math)\b[^\r]*?<\/\2>[ \t]*(?=\n+)\n)/gm,hashElement);text=text.replace(/\n[ ]{0,3}((<(hr)\b([^<>])*?\/?>)[ \t]*(?=\n{2,}))/g,hashElement);text=text.replace(/\n\n[ ]{0,3}(-]|-[^>])(?:[^-]|-[^-])*)--)>[ \t]*(?=\n{2,}))/g,hashElement);text=text.replace(/(?:\n\n)([ ]{0,3}(?:<([?%])[^\r]*?\2>)[ \t]*(?=\n{2,}))/g,hashElement);return text}function hashElement(wholeMatch,m1){var blockText=m1;blockText=blockText.replace(/^\n+/,"");blockText=blockText.replace(/\n+$/g,"");blockText="\n\n~K"+(g_html_blocks.push(blockText)-1)+"K\n\n";return blockText}var blockGamutHookCallback=function(t){return _RunBlockGamut(t)};function _RunBlockGamut(text,doNotUnhash){text=pluginHooks.preBlockGamut(text,blockGamutHookCallback);text=_DoHeaders(text);var replacement="
\n";text=text.replace(/^[ ]{0,2}([ ]?\*[ ]?){3,}[ \t]*$/gm,replacement);text=text.replace(/^[ ]{0,2}([ ]?-[ ]?){3,}[ \t]*$/gm,replacement);text=text.replace(/^[ ]{0,2}([ ]?_[ ]?){3,}[ \t]*$/gm,replacement);text=_DoLists(text);text=_DoCodeBlocks(text);text=_DoBlockQuotes(text);text=pluginHooks.postBlockGamut(text,blockGamutHookCallback);text=_HashHTMLBlocks(text);text=_FormParagraphs(text,doNotUnhash);return text}function _RunSpanGamut(text){text=pluginHooks.preSpanGamut(text);text=_DoCodeSpans(text);text=_EscapeSpecialCharsWithinTagAttributes(text);text=_EncodeBackslashEscapes(text);text=_DoImages(text);text=_DoAnchors(text);text=_DoAutoLinks(text);text=text.replace(/~P/g,"://");text=_EncodeAmpsAndAngles(text);text=options._DoItalicsAndBold?options._DoItalicsAndBold(text):_DoItalicsAndBold(text);text=text.replace(/ +\n/g,"
\n");text=pluginHooks.postSpanGamut(text);return text}function _EscapeSpecialCharsWithinTagAttributes(text){var regex=/(<[a-z\/!$]("[^"]*"|'[^']*'|[^'">])*>|-]|-[^>])(?:[^-]|-[^-])*)--)>)/gi;text=text.replace(regex,function(wholeMatch){var tag=wholeMatch.replace(/(.)<\/?code>(?=.)/g,"$1`");tag=escapeCharacters(tag,wholeMatch.charAt(1)=="!"?"\\`*_/":"\\`*_"); +return tag});return text}function _DoAnchors(text){text=text.replace(/(\[((?:\[[^\]]*\]|[^\[\]])*)\][ ]?(?:\n[ ]*)?\[(.*?)\])()()()()/g,writeAnchorTag);text=text.replace(/(\[((?:\[[^\]]*\]|[^\[\]])*)\]\([ \t]*()?[ \t]*((['"])(.*?)\6[ \t]*)?\))/g,writeAnchorTag);text=text.replace(/(\[([^\[\]]+)\])()()()()()/g,writeAnchorTag);return text}function writeAnchorTag(wholeMatch,m1,m2,m3,m4,m5,m6,m7){if(m7==undefined){m7=""}var whole_match=m1;var link_text=m2.replace(/:\/\//g,"~P");var link_id=m3.toLowerCase();var url=m4;var title=m7;if(url==""){if(link_id==""){link_id=link_text.toLowerCase().replace(/ ?\n/g," ")}url="#"+link_id;if(g_urls.get(link_id)!=undefined){url=g_urls.get(link_id);if(g_titles.get(link_id)!=undefined){title=g_titles.get(link_id)}}else{if(whole_match.search(/\(\s*\)$/m)>-1){url=""}else{return whole_match}}}url=encodeProblemUrlChars(url);url=escapeCharacters(url,"*_");var result='";return result}function _DoImages(text){text=text.replace(/(!\[(.*?)\][ ]?(?:\n[ ]*)?\[(.*?)\])()()()()/g,writeImageTag);text=text.replace(/(!\[(.*?)\]\s?\([ \t]*()?[ \t]*((['"])(.*?)\6[ \t]*)?\))/g,writeImageTag);return text}function attributeEncode(text){return text.replace(/>/g,">").replace(/"+_RunSpanGamut(m1)+"\n\n"});text=text.replace(/^(.+)[ \t]*\n-+[ \t]*\n+/gm,function(matchFound,m1){return"

"+_RunSpanGamut(m1)+"

\n\n"});text=text.replace(/^(\#{1,6})[ \t]*(.+?)[ \t]*\#*\n+/gm,function(wholeMatch,m1,m2){var h_level=m1.length;return""+_RunSpanGamut(m2)+"\n\n"});return text}function _DoLists(text,isInsideParagraphlessListItem){text+="~0";var whole_list=/^(([ ]{0,3}([*+-]|\d+[.])[ \t]+)[^\r]+?(~0|\n{2,}(?=\S)(?![ \t]*(?:[*+-]|\d+[.])[ \t]+)))/gm;if(g_list_level){text=text.replace(whole_list,function(wholeMatch,m1,m2){var list=m1;var list_type=(m2.search(/[*+-]/g)>-1)?"ul":"ol";var result=_ProcessListItems(list,list_type,isInsideParagraphlessListItem);result=result.replace(/\s+$/,"");result="<"+list_type+">"+result+"\n";return result})}else{whole_list=/(\n\n|^\n?)(([ ]{0,3}([*+-]|\d+[.])[ \t]+)[^\r]+?(~0|\n{2,}(?=\S)(?![ \t]*(?:[*+-]|\d+[.])[ \t]+)))/g;text=text.replace(whole_list,function(wholeMatch,m1,m2,m3){var runup=m1;var list=m2;var list_type=(m3.search(/[*+-]/g)>-1)?"ul":"ol";var result=_ProcessListItems(list,list_type);result=runup+"<"+list_type+">\n"+result+"\n";return result})}text=text.replace(/~0/,"");return text}var _listItemMarkers={ol:"\\d+[.]",ul:"[*+-]"};function _ProcessListItems(list_str,list_type,isInsideParagraphlessListItem){g_list_level++;list_str=list_str.replace(/\n{2,}$/,"\n");list_str+="~0";var marker=_listItemMarkers[list_type];var re=new RegExp("(^[ \\t]*)("+marker+")[ \\t]+([^\\r]+?(\\n+))(?=(~0|\\1("+marker+")[ \\t]+))","gm");var last_item_had_a_double_newline=false;list_str=list_str.replace(re,function(wholeMatch,m1,m2,m3){var item=m3;var leading_space=m1;var ends_with_double_newline=/\n\n$/.test(item);var contains_double_newline=ends_with_double_newline||item.search(/\n{2,}/)>-1;if(contains_double_newline||last_item_had_a_double_newline){item=_RunBlockGamut(_Outdent(item),true)}else{item=_DoLists(_Outdent(item),true);item=item.replace(/\n$/,"");if(!isInsideParagraphlessListItem){item=_RunSpanGamut(item)}}last_item_had_a_double_newline=ends_with_double_newline;return"
  • "+item+"
  • \n"});list_str=list_str.replace(/~0/g,"");g_list_level--;return list_str}function _DoCodeBlocks(text){text+="~0";text=text.replace(/(?:\n\n|^\n?)((?:(?:[ ]{4}|\t).*\n+)+)(\n*[ ]{0,3}[^ \t\n]|(?=~0))/g,function(wholeMatch,m1,m2){var codeblock=m1;var nextChar=m2;codeblock=_EncodeCode(_Outdent(codeblock));codeblock=_Detab(codeblock);codeblock=codeblock.replace(/^\n+/g,"");codeblock=codeblock.replace(/\n+$/g,"");codeblock="
    "+codeblock+"\n
    ";return"\n\n"+codeblock+"\n\n"+nextChar});text=text.replace(/~0/,"");return text}function hashBlock(text){text=text.replace(/(^\n+|\n+$)/g,"");return"\n\n~K"+(g_html_blocks.push(text)-1)+"K\n\n" +}function _DoCodeSpans(text){text=text.replace(/(^|[^\\])(`+)([^\r]*?[^`])\2(?!`)/gm,function(wholeMatch,m1,m2,m3,m4){var c=m3;c=c.replace(/^([ \t]*)/g,"");c=c.replace(/[ \t]*$/g,"");c=_EncodeCode(c);c=c.replace(/:\/\//g,"~P");return m1+""+c+""});return text}function _EncodeCode(text){text=text.replace(/&/g,"&");text=text.replace(//g,">");text=escapeCharacters(text,"*_{}[]\\",false);return text}function _DoItalicsAndBold(text){text=text.replace(/([\W_]|^)(\*\*|__)(?=\S)([^\r]*?\S[\*_]*)\2([\W_]|$)/g,"$1$3$4");text=text.replace(/([\W_]|^)(\*|_)(?=\S)([^\r\*_]*?\S)\2([\W_]|$)/g,"$1$3$4");return text}function _DoBlockQuotes(text){text=text.replace(/((^[ \t]*>[ \t]?.+\n(.+\n)*\n*)+)/gm,function(wholeMatch,m1){var bq=m1;bq=bq.replace(/^[ \t]*>[ \t]?/gm,"~0");bq=bq.replace(/~0/g,"");bq=bq.replace(/^[ \t]+$/gm,"");bq=_RunBlockGamut(bq);bq=bq.replace(/(^|\n)/g,"$1 ");bq=bq.replace(/(\s*
    [^\r]+?<\/pre>)/gm,function(wholeMatch,m1){var pre=m1;pre=pre.replace(/^  /mg,"~0");pre=pre.replace(/~0/g,"");return pre});return hashBlock("
    \n"+bq+"\n
    ")});return text}function _FormParagraphs(text,doNotUnhash){text=text.replace(/^\n+/g,"");text=text.replace(/\n+$/g,"");var grafs=text.split(/\n{2,}/g);var grafsOut=[];var markerRe=/~K(\d+)K/;var end=grafs.length;for(var i=0;i");str+="

    ";grafsOut.push(str)}}}if(!doNotUnhash){end=grafsOut.length;for(var i=0;i#+-.!])/g,escapeCharacters_callback);return text}var charInsideUrl="[-A-Z0-9+&@#/%?=~_|[\\]()!:,.;]",charEndingUrl="[-A-Z0-9+&@#/%=~_|[\\])]",autoLinkRegex=new RegExp('(="|<)?\\b(https?|ftp)(://'+charInsideUrl+"*"+charEndingUrl+")(?=$|\\W)","gi"),endCharRegex=new RegExp(charEndingUrl,"i");function handleTrailingParens(wholeMatch,lookbehind,protocol,link){if(lookbehind){return wholeMatch}if(link.charAt(link.length-1)!==")"){return"<"+protocol+link+">"}var parens=link.match(/[()]/g);var level=0;for(var i=0;i"+tail}function _DoAutoLinks(text){text=text.replace(autoLinkRegex,handleTrailingParens);var replacer=function(wholematch,m1){return'
    '+pluginHooks.plainLinkText(m1)+""};text=text.replace(/<((https?|ftp):[^'">\s]+)>/gi,replacer);return text}function _UnescapeSpecialChars(text){text=text.replace(/~E(\d+)E/g,function(wholeMatch,m1){var charCodeToReplace=parseInt(m1);return String.fromCharCode(charCodeToReplace)});return text}function _Outdent(text){text=text.replace(/^(\t|[ ]{1,4})/gm,"~0");text=text.replace(/~0/g,"");return text}function _Detab(text){if(!/\t/.test(text)){return text}var spaces=[" "," "," "," "],skew=0,v;return text.replace(/[\n\t]/g,function(match,offset){if(match==="\n"){skew=offset+1;return match}v=(offset-skew)%4;skew=offset+1;return spaces[v]})}var _problemUrlChars=/(?:["'*()[\]:]|~D)/g;function encodeProblemUrlChars(url){if(!url){return""}var len=url.length;return url.replace(_problemUrlChars,function(match,offset){if(match=="~D"){return"%24"}if(match==":"){return":"}return"%"+match.charCodeAt(0).toString(16)})}function escapeCharacters(text,charsToEscape,afterBackslash){var regexString="(["+charsToEscape.replace(/([\[\]\\])/g,"\\$1")+"])";if(afterBackslash){regexString="\\\\"+regexString}var regex=new RegExp(regexString,"g");text=text.replace(regex,escapeCharacters_callback);return text}function escapeCharacters_callback(wholeMatch,m1){var charCodeToEscape=m1.charCodeAt(0);return"~E"+charCodeToEscape+"E"}}})(); + +// Markdown.Extra.js +(function(){var inlineTags=new RegExp(["^(<\\/?(a|abbr|acronym|applet|area|b|basefont|","bdo|big|button|cite|code|del|dfn|em|figcaption|","font|i|iframe|img|input|ins|kbd|label|map|","mark|meter|object|param|progress|q|ruby|rp|rt|s|","samp|script|select|small|span|strike|strong|","sub|sup|textarea|time|tt|u|var|wbr)[^>]*>|","<(br)\\s?\\/?>)$"].join(""),"i");if(!Array.indexOf){Array.prototype.indexOf=function(obj){for(var i=0;i]*>?/gi,function(tag){return tag.match(whitelist)?tag:""})}function union(x,y){var obj={};for(var i=0;i~X"+(this.hashBlocks.push(block)-1)+"X

    \n"};Markdown.Extra.prototype.hashExtraInline=function(block){return"~X"+(this.hashBlocks.push(block)-1)+"X"};Markdown.Extra.prototype.unHashExtraBlocks=function(text){var self=this;function recursiveUnHash(){var hasHash=false;text=text.replace(/(?:

    )?~X(\d+)X(?:<\/p>)?/g,function(wholeMatch,m1){hasHash=true;var key=parseInt(m1,10);return self.hashBlocks[key]});if(hasHash===true){recursiveUnHash()}}recursiveUnHash();return text};Markdown.Extra.prototype.wrapHeaders=function(text){function wrap(text){return"\n"+text+"\n"}text=text.replace(/^.+[ \t]*\n=+[ \t]*\n+/gm,wrap);text=text.replace(/^.+[ \t]*\n-+[ \t]*\n+/gm,wrap);text=text.replace(/^\#{1,6}[ \t]*.+?[ \t]*\#*\n+/gm,wrap);return text};var attrBlock="\\{[ \\t]*((?:[#.][-_:a-zA-Z0-9]+[ \\t]*)+)\\}";var hdrAttributesA=new RegExp("^(#{1,6}.*#{0,6})[ \\t]+"+attrBlock+"[ \\t]*(?:\\n|0x03)","gm");var hdrAttributesB=new RegExp("^(.*)[ \\t]+"+attrBlock+"[ \\t]*\\n"+"(?=[\\-|=]+\\s*(?:\\n|0x03))","gm");var fcbAttributes=new RegExp("^(```[^`\\n]*)[ \\t]+"+attrBlock+"[ \\t]*\\n"+"(?=([\\s\\S]*?)\\n```[ \\t]*(\\n|0x03))","gm");Markdown.Extra.prototype.hashHeaderAttributeBlocks=function(text){var self=this;function attributeCallback(wholeMatch,pre,attr){return"

    ~XX"+(self.hashBlocks.push(attr)-1)+"XX

    \n"+pre+"\n"}text=text.replace(hdrAttributesA,attributeCallback);text=text.replace(hdrAttributesB,attributeCallback);return text};Markdown.Extra.prototype.hashFcbAttributeBlocks=function(text){var self=this;function attributeCallback(wholeMatch,pre,attr){return"

    ~XX"+(self.hashBlocks.push(attr)-1)+"XX

    \n"+pre+"\n"}return text.replace(fcbAttributes,attributeCallback)};Markdown.Extra.prototype.applyAttributeBlocks=function(text){var self=this;var blockRe=new RegExp("

    ~XX(\\d+)XX

    [\\s]*"+'(?:<(h[1-6]|pre)(?: +class="(\\S+)")?(>[\\s\\S]*?))',"gm");text=text.replace(blockRe,function(wholeMatch,k,tag,cls,rest){if(!tag){return""}var key=parseInt(k,10);var attributes=self.hashBlocks[key];var id=attributes.match(/#[^\s#.]+/g)||[];var idStr=id[0]?' id="'+id[0].substr(1,id[0].length-1)+'"':"";var classes=attributes.match(/\.[^\s#.]+/g)||[];for(var i=0;i0){classStr=' class="'+classes.join(" ")+'"'}return"<"+tag+idStr+classStr+rest});return text};Markdown.Extra.prototype.tables=function(text){var self=this;var leadingPipe=new RegExp(["^","[ ]{0,3}","[|]","(.+)\\n","[ ]{0,3}","[|]([ ]*[-:]+[-| :]*)\\n","(","(?:[ ]*[|].*\\n?)*",")","(?:\\n|$)"].join(""),"gm");var noLeadingPipe=new RegExp(["^","[ ]{0,3}","(\\S.*[|].*)\\n","[ ]{0,3}","([-:]+[ ]*[|][-| :]*)\\n","(","(?:.*[|].*\\n?)*",")","(?:\\n|$)"].join(""),"gm");text=text.replace(leadingPipe,doTable);text=text.replace(noLeadingPipe,doTable);function doTable(match,header,separator,body,offset,string){header=header.replace(/^ *[|]/m,"");separator=separator.replace(/^ *[|]/m,"");body=body.replace(/^ *[|]/gm,"");header=header.replace(/[|] *$/m,"");separator=separator.replace(/[|] *$/m,"");body=body.replace(/[|] *$/gm,"");alignspecs=separator.split(/ *[|] */);align=[];for(var i=0;i\n","\n","\n"].join("");for(i=0;i",headerHtml,"\n"].join("")}html+="\n\n";var rows=body.split("\n");for(i=0;i\n";for(j=0;j",colHtml,"\n"].join("")}html+="\n"}html+="\n";return self.hashExtraBlock(html)}return text};Markdown.Extra.prototype.stripFootnoteDefinitions=function(text){var self=this;text=text.replace(/\n[ ]{0,3}\[\^(.+?)\]\:[ \t]*\n?([\s\S]*?)\n{1,2}((?=\n[ ]{0,3}\S)|$)/g,function(wholeMatch,m1,m2){m1=slugify(m1);m2+="\n";m2=m2.replace(/^[ ]{0,3}/g,"");self.footnotes[m1]=m2;return"\n"});return text};Markdown.Extra.prototype.doFootnotes=function(text){var self=this;if(self.isConvertingFootnote===true){return text}var footnoteCounter=0;text=text.replace(/\[\^(.+?)\]/g,function(wholeMatch,m1){var id=slugify(m1);var footnote=self.footnotes[id]; +if(footnote===undefined){return wholeMatch}footnoteCounter++;self.usedFootnotes.push(id);var html=''+footnoteCounter+"";return self.hashExtraInline(html)});return text};Markdown.Extra.prototype.printFootnotes=function(text){var self=this;if(self.usedFootnotes.length===0){return text}text+='\n\n
    \n
    \n
      \n\n';for(var i=0;i'+formattedfootnote+' \n\n'}text+="
    \n
    ";return text};Markdown.Extra.prototype.fencedCodeBlocks=function(text){function encodeCode(code){code=code.replace(/&/g,"&");code=code.replace(//g,">");code=code.replace(/~D/g,"$$");code=code.replace(/~T/g,"~");return code}var self=this;text=text.replace(/(?:^|\n)```([^`\n]*)\n([\s\S]*?)\n```[ \t]*(?=\n)/g,function(match,m1,m2){var language=trim(m1),codeblock=m2;var preclass=self.googleCodePrettify?' class="prettyprint"':"";var codeclass="";if(language){if(self.googleCodePrettify||self.highlightJs){codeclass=' class="language-'+language+'"'}else{codeclass=' class="'+language+'"'}}var html=["",encodeCode(codeblock),"
    "].join("");return self.hashExtraBlock(html)});return text};Markdown.Extra.prototype.educatePants=function(text){var self=this;var result="";var blockOffset=0;text.replace(/(?:)|(<)([a-zA-Z1-6]+)([^\n]*?>)([\s\S]*?)(<\/\2>)/g,function(wholeMatch,m1,m2,m3,m4,m5,offset){var token=text.substring(blockOffset,offset);result+=self.applyPants(token);self.smartyPantsLastChar=result.substring(result.length-1);blockOffset=offset+wholeMatch.length;if(!m1){result+=wholeMatch;return}if(!/code|kbd|pre|script|noscript|iframe|math|ins|del|pre/i.test(m2)){m4=self.educatePants(m4)}else{self.smartyPantsLastChar=m4.substring(m4.length-1)}result+=m1+m2+m3+m4+m5});var lastToken=text.substring(blockOffset);result+=self.applyPants(lastToken);self.smartyPantsLastChar=result.substring(result.length-1);return result};function revertPants(wholeMatch,m1){var blockText=m1;blockText=blockText.replace(/&\#8220;/g,'"');blockText=blockText.replace(/&\#8221;/g,'"');blockText=blockText.replace(/&\#8216;/g,"'");blockText=blockText.replace(/&\#8217;/g,"'");blockText=blockText.replace(/&\#8212;/g,"---");blockText=blockText.replace(/&\#8211;/g,"--");blockText=blockText.replace(/&\#8230;/g,"...");return blockText}Markdown.Extra.prototype.applyPants=function(text){text=text.replace(/---/g,"—").replace(/--/g,"–");text=text.replace(/\.\.\./g,"…").replace(/\.\s\.\s\./g,"…");text=text.replace(/``/g,"“").replace(/''/g,"”");if(/^'$/.test(text)){if(/\S/.test(this.smartyPantsLastChar)){return"’"}return"‘"}if(/^"$/.test(text)){if(/\S/.test(this.smartyPantsLastChar)){return"”"}return"“"}text=text.replace(/^'(?=[!"#\$\%'()*+,\-.\/:;<=>?\@\[\\]\^_`{|}~]\B)/,"’");text=text.replace(/^"(?=[!"#\$\%'()*+,\-.\/:;<=>?\@\[\\]\^_`{|}~]\B)/,"”");text=text.replace(/"'(?=\w)/g,"“‘");text=text.replace(/'"(?=\w)/g,"‘“");text=text.replace(/'(?=\d{2}s)/g,"’");text=text.replace(/(\s| |--|&[mn]dash;|&\#8211;|&\#8212;|&\#x201[34];)'(?=\w)/g,"$1‘");text=text.replace(/([^\s\[\{\(\-])'/g,"$1’");text=text.replace(/'(?=\s|s\b)/g,"’");text=text.replace(/'/g,"‘");text=text.replace(/(\s| |--|&[mn]dash;|&\#8211;|&\#8212;|&\#x201[34];)"(?=\w)/g,"$1“");text=text.replace(/([^\s\[\{\(\-])"/g,"$1”");text=text.replace(/"(?=\s)/g,"”");text=text.replace(/"/ig,"“");return text};Markdown.Extra.prototype.runSmartyPants=function(text){this.smartyPantsLastChar="";text=this.educatePants(text);text=text.replace(/(<([a-zA-Z1-6]+)\b([^\n>]*?)(\/)?>)/g,revertPants);return text};Markdown.Extra.prototype.definitionLists=function(text){var wholeList=new RegExp(["(\\x02\\n?|\\n\\n)","(?:","(","(","[ ]{0,3}","((?:[ \\t]*\\S.*\\n)+)","\\n?","[ ]{0,3}:[ ]+",")","([\\s\\S]+?)","(","(?=\\0x03)","|","(?=","\\n{2,}","(?=\\S)","(?!","[ ]{0,3}","(?:\\S.*\\n)+?","\\n?","[ ]{0,3}:[ ]+",")","(?!","[ ]{0,3}:[ ]+",")",")",")",")",")"].join(""),"gm");var self=this;text=addAnchors(text);text=text.replace(wholeList,function(match,pre,list){var result=trim(self.processDefListItems(list));result="
    \n"+result+"\n
    ";return pre+self.hashExtraBlock(result)+"\n\n"});return removeAnchors(text)};Markdown.Extra.prototype.processDefListItems=function(listStr){var self=this;var dt=new RegExp(["(\\x02\\n?|\\n\\n+)","(","[ ]{0,3}","(?![:][ ]|[ ])","(?:\\S.*\\n)+?",")","(?=\\n?[ ]{0,3}:[ ])"].join(""),"gm");var dd=new RegExp(["\\n(\\n+)?","(","[ ]{0,3}","[:][ ]+",")","([\\s\\S]+?)","(?=\\n*","(?:","\\n[ ]{0,3}[:][ ]|","
    |\\x03",")",")"].join(""),"gm"); +listStr=addAnchors(listStr);listStr=listStr.replace(/\n{2,}(?=\\x03)/,"\n");listStr=listStr.replace(dt,function(match,pre,termsStr){var terms=trim(termsStr).split("\n");var text="";for(var i=0;i"+term+"
    "}return text+"\n"});listStr=listStr.replace(dd,function(match,leadingLine,markerSpace,def){if(leadingLine||def.match(/\n{2,}/)){def=Array(markerSpace.length+1).join(" ")+def;def=outdent(def)+"\n\n";def="\n"+convertAll(def,self)+"\n"}else{def=rtrim(def);def=convertSpans(outdent(def),self)}return"\n
    "+def+"
    \n"});return removeAnchors(listStr)};Markdown.Extra.prototype.strikethrough=function(text){return text.replace(/([\W_]|^)~T~T(?=\S)([^\r]*?\S[\*_]*)~T~T([\W_]|$)/g,"$1$2$3")};Markdown.Extra.prototype.newlines=function(text){return text.replace(/(<(?:br|\/li)>)?\n/g,function(wholeMatch,previousTag){return previousTag?wholeMatch:"
    \n"})}})(); + + +(function() { + + // Create the converter and the editor + var converter = new Markdown.Converter(); + var options = { + _DoItalicsAndBold: function(text) { + // Restore original markdown implementation + text = text.replace(/(\*\*|__)(?=\S)(.+?[*_]*)(?=\S)\1/g, + "$2"); + text = text.replace(/(\*|_)(?=\S)(.+?)(?=\S)\1/g, + "$2"); + return text; + } + }; + converter.setOptions(options); + + function loadJs(src, callback) { + var _doc = document.getElementsByTagName('head')[0]; + var script = document.createElement('script'); + script.setAttribute('type', 'text/javascript'); + script.setAttribute('src', src); + _doc.appendChild(script); + script.onload = script.onreadystatechange = function() { + if(!this.readyState || this.readyState=='loaded' || this.readyState=='complete'){ + callback && callback(); + } + script.onload = script.onreadystatechange = null; + } + } + + function _each(list, callback) { + if(list && list.length > 0) { + for(var i = 0; i < list.length; i++) { + callback(list[i]); + } + } + } + function _has(obj, key) { + return hasOwnProperty.call(obj, key); + }; + + // markdown extra + function initMarkdownExtra() { + // Create the converter and the editor + // var converter = new Markdown.Converter(); + var options = { + _DoItalicsAndBold: function(text) { + // Restore original markdown implementation + text = text.replace(/(\*\*|__)(?=\S)(.+?[*_]*)(?=\S)\1/g, + "$2"); + text = text.replace(/(\*|_)(?=\S)(.+?)(?=\S)\1/g, + "$2"); + return text; + } + }; + converter.setOptions(options); + + //================ + // markdown exstra + + var markdownExtra = {}; + markdownExtra.config = { + extensions: [ + "fenced_code_gfm", + "tables", + "def_list", + "attr_list", + "footnotes", + "smartypants", + "strikethrough", + "newlines" + ], + intraword: true, + comments: true, + highlighter: "highlight" + }; + var extraOptions = { + extensions: markdownExtra.config.extensions, + highlighter: "prettify" + }; + + if(markdownExtra.config.intraword === true) { + var converterOptions = { + _DoItalicsAndBold: function(text) { + text = text.replace(/([^\w*]|^)(\*\*|__)(?=\S)(.+?[*_]*)(?=\S)\2(?=[^\w*]|$)/g, "$1$3"); + text = text.replace(/([^\w*]|^)(\*|_)(?=\S)(.+?)(?=\S)\2(?=[^\w*]|$)/g, "$1$3"); + // Redo bold to handle _**word**_ + text = text.replace(/([^\w*]|^)(\*\*|__)(?=\S)(.+?[*_]*)(?=\S)\2(?=[^\w*]|$)/g, "$1$3"); + return text; + } + }; + converter.setOptions(converterOptions); + } + + if(markdownExtra.config.comments === true) { + converter.hooks.chain("postConversion", function(text) { + return text.replace(//g, function(wholeMatch) { + return wholeMatch.replace(/^$/, ' $1 '); + }); + }); + } + + // email & todolist + converter.hooks.chain("postConversion", function(text) { + // email + text = text.replace(/<(mailto\:)?([^\s>]+@[^\s>]+\.\S+?)>/g, function(match, mailto, email) { + return '' + email + ''; + }); + // todolist + text = text.replace(/
  • (

    )?\[([ xX]?)\] /g, function(matched, p, b) { + p || (p = ''); + return !(b == 'x' || b == 'X') ? '

  • ' + p + ' ' : '
  • ' + p + ' ' + }); + return text; + }); + + Markdown.Extra.init(converter, extraOptions); + } + + //============== + // toc start + + function initToc() { + var toc = {}; + toc.config = { + marker: "\\[(TOC|toc)\\]", + maxDepth: 6, + button: true, + }; + + // TOC element description + function TocElement(tagName, anchor, text) { + this.tagName = tagName; + this.anchor = anchor; + this.text = text; + this.children = []; + } + TocElement.prototype.childrenToString = function() { + if(this.children.length === 0) { + return ""; + } + var result = "
      \n"; + _each(this.children, function(child) { + result += child.toString(); + }); + result += "
    \n"; + return result; + }; + TocElement.prototype.toString = function() { + var result = "
  • "; + if(this.anchor && this.text) { + result += '' + this.text + ''; + } + result += this.childrenToString() + "
  • \n"; + return result; + }; + + // Transform flat list of TocElement into a tree + function groupTags(array, level) { + level = level || 1; + var tagName = "H" + level; + var result = []; + + var currentElement; + function pushCurrentElement() { + if(currentElement !== undefined) { + if(currentElement.children.length > 0) { + currentElement.children = groupTags(currentElement.children, level + 1); + } + result.push(currentElement); + } + } + + _each(array, function(element) { + if(element.tagName != tagName) { + if(level !== toc.config.maxDepth) { + if(currentElement === undefined) { + currentElement = new TocElement(); + } + currentElement.children.push(element); + } + } + else { + pushCurrentElement(); + currentElement = element; + } + }); + pushCurrentElement(); + return result; + } + + var utils = {}; + var nonWordChars = new RegExp('[^\\p{L}\\p{N}-]', 'g'); + utils.slugify = function(text) { + return text.toLowerCase().replace(/\s/g, '-') // Replace spaces with - + .replace(nonWordChars, '') // Remove all non-word chars + .replace(/\-\-+/g, '-') // Replace multiple - with single - + .replace(/^-+/, '') // Trim - from start of text + .replace(/-+$/, ''); // Trim - from end of text + }; + + // Build the TOC + var previewContentsElt; + function buildToc(previewContentsElt) { + var anchorList = {}; + function createAnchor(element) { + var id = element.id || utils.slugify(element.textContent) || 'title'; + var anchor = id; + var index = 0; + while (_has(anchorList, anchor)) { + anchor = id + "-" + (++index); + } + anchorList[anchor] = true; + // Update the id of the element + element.id = anchor; + return anchor; + } + + var elementList = []; + _each(previewContentsElt.querySelectorAll('h1, h2, h3, h4, h5, h6'), function(elt) { + elementList.push(new TocElement(elt.tagName, createAnchor(elt), elt.textContent)); + }); + elementList = groupTags(elementList); + return '
    \n
      \n' + elementList.join("") + '
    \n
    \n'; + } + + toc.convert = function(previewContentsElt) { + var tocExp = new RegExp("^\\s*" + toc.config.marker + "\\s*$"); + var tocEltList = document.querySelectorAll('.table-of-contents, .toc'); + var htmlToc = buildToc(previewContentsElt); + // Replace toc paragraphs + _each(previewContentsElt.getElementsByTagName('p'), function(elt) { + if(tocExp.test(elt.innerHTML)) { + elt.innerHTML = htmlToc; + } + }); + // Add toc in the TOC button + _each(tocEltList, function(elt) { + elt.innerHTML = htmlToc; + }); + } + + return toc; + } + + //=========== + // mathjax + // function initMathJax() { + // // 配置 + // MathJax.Hub.Config({ + // skipStartupTypeset: true, + // "HTML-CSS": { + // preferredFont: "TeX", + // availableFonts: [ + // "STIX", + // "TeX" + // ], + // linebreaks: { + // automatic: true + // }, + // EqnChunk: 10, + // imageFont: null + // }, + // tex2jax: { inlineMath: [["$","$"],["\\\\(","\\\\)"]], displayMath: [["$$","$$"],["\\[","\\]"]], processEscapes: true }, + // TeX: { + // noUndefined: { + // attributes: { + // mathcolor: "red", + // mathbackground: "#FFEEEE", + // mathsize: "90%" + // } + // }, + // Safe: { + // allow: { + // URLs: "safe", + // classes: "safe", + // cssIDs: "safe", + // styles: "safe", + // fontsize: "all" + // } + // } + // }, + // messageStyle: "none" + // }); + + // var mathJax = {}; + // mathJax.config = { + // tex : "{}", + // tex2jax: '{ inlineMath: [["$","$"],["\\\\\\\\(","\\\\\\\\)"]], displayMath: [["$$","$$"],["\\\\[","\\\\]"]], processEscapes: true }' + // }; + + // mathJax.init = function(p) { + // converter.hooks.chain("preConversion", removeMath); + // converter.hooks.chain("postConversion", replaceMath); + // }; + + // // From math.stackexchange.com... + + // // + // // The math is in blocks i through j, so + // // collect it into one block and clear the others. + // // Replace &, <, and > by named entities. + // // For IE, put
    at the ends of comments since IE removes \n. + // // Clear the current math positions and store the index of the + // // math, then push the math string onto the storage array. + // // + // function processMath(i, j, unescape) { + // var block = blocks.slice(i, j + 1).join("") + // .replace(/&/g, "&") + // .replace(//g, ">"); + // for(HUB.Browser.isMSIE && (block = block.replace(/(%[^\n]*)\n/g, "$1
    \n")); j > i;) + // blocks[j] = "", j--; + // blocks[i] = "@@" + math.length + "@@"; + // unescape && (block = unescape(block)); + // math.push(block); + // start = end = last = null; + // } + + // function removeMath(text) { + // if(!text) { + // return; + // } + // start = end = last = null; + // math = []; + // var unescape; + // if(/`/.test(text)) { + // text = text.replace(/~/g, "~T").replace(/(^|[^\\])(`+)([^\n]*?[^`\n])\2(?!`)/gm, function(text) { + // return text.replace(/\$/g, "~D") + // }); + // unescape = function(text) { + // return text.replace(/~([TD])/g, + // function(match, n) { + // return {T: "~", D: "$"}[n] + // }) + // }; + // } else { + // unescape = function(text) { + // return text + // }; + // } + + // // + // // The pattern for math delimiters and special symbols + // // needed for searching for math in the page. + // // + // var splitDelimiter = /(\$\$?|\\(?:begin|end)\{[a-z]*\*?\}|\\[\\{}$]|[{}]|(?:\n\s*)+|@@\d+@@)/i; + // var split; + + // if(3 === "aba".split(/(b)/).length) { + // split = function(text, delimiter) { + // return text.split(delimiter) + // }; + // } else { + // split = function(text, delimiter) { + // var b = [], c; + // if(!delimiter.global) { + // c = delimiter.toString(); + // var d = ""; + // c = c.replace(/^\/(.*)\/([im]*)$/, function(a, c, b) { + // d = b; + // return c + // }); + // delimiter = RegExp(c, d + "g") + // } + // for(var e = delimiter.lastIndex = 0; c = delimiter.exec(text);) { + // b.push(text.substring(e, c.index)); + // b.push.apply(b, c.slice(1)); + // e = c.index + c[0].length; + // } + // b.push(text.substring(e)); + // return b + // }; + // } + + // blocks = split(text.replace(/\r\n?/g, "\n"), splitDelimiter); + // for(var i = 1, m = blocks.length; i < m; i += 2) { + // var block = blocks[i]; + // if("@" === block.charAt(0)) { + // // + // // Things that look like our math markers will get + // // stored and then retrieved along with the math. + // // + // blocks[i] = "@@" + math.length + "@@"; + // math.push(block) + // } else if(start) { + // // Ignore inline maths that are actually multiline (fixes #136) + // if(end == inline && block.charAt(0) == '\n') { + // if(last) { + // i = last; + // processMath(start, i, unescape); + // } + // start = end = last = null; + // braces = 0; + // } + // // + // // If we are in math, look for the end delimiter, + // // but don't go past double line breaks, and + // // and balance braces within the math. + // // + // else if(block === end) { + // if(braces) { + // last = i + // } else { + // processMath(start, i, unescape) + // } + // } else { + // if(block.match(/\n.*\n/)) { + // if(last) { + // i = last; + // processMath(start, i, unescape); + // } + // start = end = last = null; + // braces = 0; + // } else { + // if("{" === block) { + // braces++ + // } else { + // "}" === block && braces && braces-- + // } + // } + // } + // } else { + // if(block === inline || "$$" === block) { + // start = i; + // end = block; + // braces = 0; + // } else { + // if("begin" === block.substr(1, 5)) { + // start = i; + // end = "\\end" + block.substr(6); + // braces = 0; + // } + // } + // } + + // } + // last && processMath(start, last, unescape); + // return unescape(blocks.join("")); + // } + + // // + // // Put back the math strings that were saved, + // // and clear the math array (no need to keep it around). + // // + // function replaceMath(text) { + // text = text.replace(/@@(\d+)@@/g, function(match, n) { + // return math[n] + // }); + // math = null; + // return text + // } + + // // + // // This is run to restart MathJax after it has finished + // // the previous run (that may have been canceled) + // // + // function startMJ(toElem, callback) { + // var preview = toElem; + // pending = false; + // HUB.cancelTypeset = false; + // HUB.Queue([ + // "Typeset", + // HUB, + // preview + // ]); + // // 执行完后, 再执行 + // HUB.Queue(function() { + // callback && callback(); + // }); + // } + + // var ready = false, pending = false, preview = null, inline = "$", blocks, start, end, last, braces, math, HUB = MathJax.Hub; + + // // + // // Runs after initial typeset + // // + // HUB.Queue(function() { + // ready = true; + // HUB.processUpdateTime = 50; + // HUB.Config({"HTML-CSS": {EqnChunk: 10, EqnChunkFactor: 1}, SVG: {EqnChunk: 10, EqnChunkFactor: 1}}) + // }); + + // mathJax.init(); + // return { + // convert: startMJ + // } + // } + + // function initUml() { + // //=========== + // // uml + // var umlDiagrams = {}; + // umlDiagrams.config = { + // flowchartOptions: [ + // '{', + // ' "line-width": 2,', + // ' "font-family": "sans-serif",', + // ' "font-weight": "normal"', + // '}' + // ].join('\n') + // }; + + // var _loadUmlJs = false; + + // // callback 执行完后执行 + // umlDiagrams.convert = function(target, callback) { + // var previewContentsElt = target; + + // var sequenceElems = previewContentsElt.querySelectorAll('.prettyprint > .language-sequence'); + // var flowElems = previewContentsElt.querySelectorAll('.prettyprint > .language-flow'); + + // function convert() { + // _each(sequenceElems, function(elt) { + // try { + // var diagram = Diagram.parse(elt.textContent); + // var preElt = elt.parentNode; + // var containerElt = crel('div', { + // class: 'sequence-diagram' + // }); + // preElt.parentNode.replaceChild(containerElt, preElt); + // diagram.drawSVG(containerElt, { + // theme: 'simple' + // }); + // } + // catch(e) { + // console.trace(e); + // } + // }); + // _each(flowElems, function(elt) { + // try { + + // var chart = flowchart.parse(elt.textContent); + // var preElt = elt.parentNode; + // var containerElt = crel('div', { + // class: 'flow-chart' + // }); + // preElt.parentNode.replaceChild(containerElt, preElt); + // chart.drawSVG(containerElt, JSON.parse(umlDiagrams.config.flowchartOptions)); + // } + // catch(e) { + // console.error(e); + // } + // }); + + // callback && callback(); + // } + + // if(sequenceElems.length > 0 || flowElems.length > 0) { + // if(!_loadUmlJs) { + // loadJs('./libs/uml.js', function() { + // _loadUmlJs = true; + // convert(); + // }); + // } else { + // convert(); + // } + // } else { + // callback && callback(); + // } + // }; + + // return umlDiagrams; + // } + + // extra是实时的, 同步进行 + initMarkdownExtra(); + + var m; + window.markdownToHtml = function(mdText, toElem, callback) { + var _umlEnd = false; + var _mathJaxEnd = false; + + // 如果是jQuery对象 + if(toElem && !toElem['querySelectorAll'] && toElem['get']) { + toElem = toElem.get(0); + } + if(!toElem || typeof toElem == 'function') { + callback = toElem; + toElem = document.createElement('div'); + } + function _go(mdText, toElem) { + var htmlParsed = converter.makeHtml(mdText); + toElem.innerHTML = htmlParsed; + + // 同步执行 + var toc = initToc(); + toc.convert(toElem); + + // 异步执行 + // var umlDiagrams = initUml(); + // umlDiagrams.convert(toElem, function() { + // _umlEnd = true; + // if(_mathJaxEnd) { + // callback && callback(toElem.innerHTML); + // } + // }); + } + + // 表示有mathjax? + // 加载mathJax + // if(mdText.indexOf('$') !== -1) { + // loadJs("./libs/MathJax/MathJax.js?config=TeX-AMS_HTML", function() { + // if(!m) { + // var m = initMathJax(); + // } + // // 放到后面, 不然removeMathJax()不运行, bug + // _go(mdText, toElem); + // m.convert(toElem, function() { + // _mathJaxEnd = true; + // if(_umlEnd) { + // callback && callback(toElem.innerHTML); + // } + // }); + // }); + // } else { + // _mathJaxEnd = true; + // _go(mdText, toElem); + // } + _go(mdText, toElem); + } + +})(); diff --git a/searx/static/themes/magi/package.json b/searx/static/themes/magi/package.json new file mode 100644 index 000000000..530a96c88 --- /dev/null +++ b/searx/static/themes/magi/package.json @@ -0,0 +1,39 @@ +{ + "devDependencies": { + "eslint": "^8.18.0", + "grunt": "~1.6.1", + "grunt-contrib-copy": "^1.0.0", + "grunt-contrib-cssmin": "^4.0.0", + "grunt-contrib-less": "~3.0.0", + "grunt-contrib-uglify": "~5.2.1", + "grunt-xmlmin": "~0.1.8", + "grunt-contrib-watch": "~1.1.0", + "grunt-eslint": "^24.0.0", + "grunt-stylelint": "^0.16.0", + "grunt-image": "^6.4.0", + "ionicons": "^6.0.2", + "less": "^4.1.3", + "less-plugin-clean-css": "^1.5.1", + "sharp": "^0.31.0", + "stylelint": "^13.13.1", + "stylelint-config-standard": "^22.0.0", + "ejs": "^3.1.8", + "svgo": "^3.0.0" + }, + "dependencies": { + "autocomplete-js": "2.7.1", + "leaflet": "^1.8.0", + "normalize.css": "^8.0.1" + }, + "scripts": { + "all": "npm install && grunt", + "build": "grunt", + "test": "grunt test", + "eslint": "grunt eslint", + "eslint-fix": "grunt eslint --fix", + "watch": "grunt watch", + "clean": "rm -Rf node_modules package-lock.json", + "stylelint": "grunt stylelint", + "stylelint-fix": "grunt stylelint --fix" + } +} diff --git a/searx/static/themes/magi/src/generated/pygments.less b/searx/static/themes/magi/src/generated/pygments.less new file mode 100644 index 000000000..d1b6efb7a --- /dev/null +++ b/searx/static/themes/magi/src/generated/pygments.less @@ -0,0 +1,99 @@ +/* + this file is generated automatically by searxng_extra/update/update_pygments.py + using pygments version 2.14.0 +*/ + +.code-highlight .linenos { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: default; + + &::selection { + background: transparent; /* WebKit/Blink Browsers */ + } + &::-moz-selection { + background: transparent; /* Gecko Browsers */ + } + + margin-right: 8px; + text-align: right; +} + +.code-highlight pre { line-height: 125%; } +.code-highlight td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } +.code-highlight span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } +.code-highlight td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } +.code-highlight span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } +.code-highlight .hll { background-color: #ffffcc } +.code-highlight { background: #f8f8f8; } +.code-highlight .c { color: #3D7B7B; font-style: italic } /* Comment */ +.code-highlight .err { border: 1px solid #FF0000 } /* Error */ +.code-highlight .k { color: #008000; font-weight: bold } /* Keyword */ +.code-highlight .o { color: #666666 } /* Operator */ +.code-highlight .ch { color: #3D7B7B; font-style: italic } /* Comment.Hashbang */ +.code-highlight .cm { color: #3D7B7B; font-style: italic } /* Comment.Multiline */ +.code-highlight .cp { color: #9C6500 } /* Comment.Preproc */ +.code-highlight .cpf { color: #3D7B7B; font-style: italic } /* Comment.PreprocFile */ +.code-highlight .c1 { color: #3D7B7B; font-style: italic } /* Comment.Single */ +.code-highlight .cs { color: #3D7B7B; font-style: italic } /* Comment.Special */ +.code-highlight .gd { color: #A00000 } /* Generic.Deleted */ +.code-highlight .ge { font-style: italic } /* Generic.Emph */ +.code-highlight .gr { color: #E40000 } /* Generic.Error */ +.code-highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */ +.code-highlight .gi { color: #008400 } /* Generic.Inserted */ +.code-highlight .go { color: #717171 } /* Generic.Output */ +.code-highlight .gp { color: #000080; font-weight: bold } /* Generic.Prompt */ +.code-highlight .gs { font-weight: bold } /* Generic.Strong */ +.code-highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */ +.code-highlight .gt { color: #0044DD } /* Generic.Traceback */ +.code-highlight .kc { color: #008000; font-weight: bold } /* Keyword.Constant */ +.code-highlight .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */ +.code-highlight .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */ +.code-highlight .kp { color: #008000 } /* Keyword.Pseudo */ +.code-highlight .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */ +.code-highlight .kt { color: #B00040 } /* Keyword.Type */ +.code-highlight .m { color: #666666 } /* Literal.Number */ +.code-highlight .s { color: #BA2121 } /* Literal.String */ +.code-highlight .na { color: #687822 } /* Name.Attribute */ +.code-highlight .nb { color: #008000 } /* Name.Builtin */ +.code-highlight .nc { color: #0000FF; font-weight: bold } /* Name.Class */ +.code-highlight .no { color: #880000 } /* Name.Constant */ +.code-highlight .nd { color: #AA22FF } /* Name.Decorator */ +.code-highlight .ni { color: #717171; font-weight: bold } /* Name.Entity */ +.code-highlight .ne { color: #CB3F38; font-weight: bold } /* Name.Exception */ +.code-highlight .nf { color: #0000FF } /* Name.Function */ +.code-highlight .nl { color: #767600 } /* Name.Label */ +.code-highlight .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */ +.code-highlight .nt { color: #008000; font-weight: bold } /* Name.Tag */ +.code-highlight .nv { color: #19177C } /* Name.Variable */ +.code-highlight .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */ +.code-highlight .w { color: #bbbbbb } /* Text.Whitespace */ +.code-highlight .mb { color: #666666 } /* Literal.Number.Bin */ +.code-highlight .mf { color: #666666 } /* Literal.Number.Float */ +.code-highlight .mh { color: #666666 } /* Literal.Number.Hex */ +.code-highlight .mi { color: #666666 } /* Literal.Number.Integer */ +.code-highlight .mo { color: #666666 } /* Literal.Number.Oct */ +.code-highlight .sa { color: #BA2121 } /* Literal.String.Affix */ +.code-highlight .sb { color: #BA2121 } /* Literal.String.Backtick */ +.code-highlight .sc { color: #BA2121 } /* Literal.String.Char */ +.code-highlight .dl { color: #BA2121 } /* Literal.String.Delimiter */ +.code-highlight .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */ +.code-highlight .s2 { color: #BA2121 } /* Literal.String.Double */ +.code-highlight .se { color: #AA5D1F; font-weight: bold } /* Literal.String.Escape */ +.code-highlight .sh { color: #BA2121 } /* Literal.String.Heredoc */ +.code-highlight .si { color: #A45A77; font-weight: bold } /* Literal.String.Interpol */ +.code-highlight .sx { color: #008000 } /* Literal.String.Other */ +.code-highlight .sr { color: #A45A77 } /* Literal.String.Regex */ +.code-highlight .s1 { color: #BA2121 } /* Literal.String.Single */ +.code-highlight .ss { color: #19177C } /* Literal.String.Symbol */ +.code-highlight .bp { color: #008000 } /* Name.Builtin.Pseudo */ +.code-highlight .fm { color: #0000FF } /* Name.Function.Magic */ +.code-highlight .vc { color: #19177C } /* Name.Variable.Class */ +.code-highlight .vg { color: #19177C } /* Name.Variable.Global */ +.code-highlight .vi { color: #19177C } /* Name.Variable.Instance */ +.code-highlight .vm { color: #19177C } /* Name.Variable.Magic */ +.code-highlight .il { color: #666666 } /* Literal.Number.Integer.Long */ diff --git a/searx/static/themes/magi/src/js/head/00_init.js b/searx/static/themes/magi/src/js/head/00_init.js new file mode 100644 index 000000000..4aeece8c2 --- /dev/null +++ b/searx/static/themes/magi/src/js/head/00_init.js @@ -0,0 +1,20 @@ +/* SPDX-License-Identifier: AGPL-3.0-or-later */ +(function (w, d) { + 'use strict'; + + // add data- properties + var script = d.currentScript || (function () { + var scripts = d.getElementsByTagName('script'); + return scripts[scripts.length - 1]; + })(); + + w.searxng = { + settings: JSON.parse(atob(script.getAttribute('client_settings'))) + }; + + // update the css + var hmtlElement = d.getElementsByTagName("html")[0]; + hmtlElement.classList.remove('no-js'); + hmtlElement.classList.add('js'); + +})(window, document); diff --git a/searx/static/themes/magi/src/js/main/00_toolkit.js b/searx/static/themes/magi/src/js/main/00_toolkit.js new file mode 100644 index 000000000..e23142412 --- /dev/null +++ b/searx/static/themes/magi/src/js/main/00_toolkit.js @@ -0,0 +1,165 @@ +/** + * @license + * (C) Copyright Contributors to the SearXNG project. + * (C) Copyright Contributors to the searx project (2014 - 2021). + * SPDX-License-Identifier: AGPL-3.0-or-later + */ +window.searxng = (function (w, d) { + + 'use strict'; + + // not invented here tookit with bugs fixed elsewhere + // purposes : be just good enough and as small as possible + + // from https://plainjs.com/javascript/events/live-binding-event-handlers-14/ + if (w.Element) { + (function (ElementPrototype) { + ElementPrototype.matches = ElementPrototype.matches || + ElementPrototype.matchesSelector || + ElementPrototype.webkitMatchesSelector || + ElementPrototype.msMatchesSelector || + function (selector) { + var node = this, nodes = (node.parentNode || node.document).querySelectorAll(selector), i = -1; + while (nodes[++i] && nodes[i] != node); + return !!nodes[i]; + }; + })(Element.prototype); + } + + function callbackSafe (callback, el, e) { + try { + callback.call(el, e); + } catch (exception) { + console.log(exception); + } + } + + var searxng = window.searxng || {}; + + searxng.on = function (obj, eventType, callback, useCapture) { + useCapture = useCapture || false; + if (typeof obj !== 'string') { + // obj HTMLElement, HTMLDocument + obj.addEventListener(eventType, callback, useCapture); + } else { + // obj is a selector + d.addEventListener(eventType, function (e) { + var el = e.target || e.srcElement, found = false; + while (el && el.matches && el !== d && !(found = el.matches(obj))) el = el.parentElement; + if (found) callbackSafe(callback, el, e); + }, useCapture); + } + }; + + searxng.ready = function (callback) { + if (document.readyState != 'loading') { + callback.call(w); + } else { + w.addEventListener('DOMContentLoaded', callback.bind(w)); + } + }; + + searxng.http = function (method, url, data = null) { + return new Promise(function (resolve, reject) { + try { + var req = new XMLHttpRequest(); + req.open(method, url, true); + req.timeout = 20000; + + // On load + req.onload = function () { + if (req.status == 200) { + resolve(req.response, req.responseType); + } else { + reject(Error(req.statusText)); + } + }; + + // Handle network errors + req.onerror = function () { + reject(Error("Network Error")); + }; + + req.onabort = function () { + reject(Error("Transaction is aborted")); + }; + + req.ontimeout = function () { + reject(Error("Timeout")); + } + + // Make the request + if (data) { + req.send(data) + } else { + req.send(); + } + } catch (ex) { + reject(ex); + } + }); + }; + + searxng.loadStyle = function (src) { + var path = searxng.settings.theme_static_path + "/" + src, + id = "style_" + src.replace('.', '_'), + s = d.getElementById(id); + if (s === null) { + s = d.createElement('link'); + s.setAttribute('id', id); + s.setAttribute('rel', 'stylesheet'); + s.setAttribute('type', 'text/css'); + s.setAttribute('href', path); + d.body.appendChild(s); + } + }; + + searxng.loadScript = function (src, callback) { + var path = searxng.settings.theme_static_path + "/" + src, + id = "script_" + src.replace('.', '_'), + s = d.getElementById(id); + if (s === null) { + s = d.createElement('script'); + s.setAttribute('id', id); + s.setAttribute('src', path); + s.onload = callback; + s.onerror = function () { + s.setAttribute('error', '1'); + }; + d.body.appendChild(s); + } else if (!s.hasAttribute('error')) { + try { + callback.apply(s, []); + } catch (exception) { + console.log(exception); + } + } else { + console.log("callback not executed : script '" + path + "' not loaded."); + } + }; + + searxng.insertBefore = function (newNode, referenceNode) { + referenceNode.parentNode.insertBefore(newNode, referenceNode); + }; + + searxng.insertAfter = function (newNode, referenceNode) { + referenceNode.parentNode.insertAfter(newNode, referenceNode.nextSibling); + }; + + searxng.on('.close', 'click', function () { + this.parentNode.classList.add('invisible'); + }); + + function getEndpoint () { + for (var className of d.getElementsByTagName('body')[0].classList.values()) { + if (className.endsWith('_endpoint')) { + return className.split('_')[0]; + } + } + return ''; + } + + searxng.endpoint = getEndpoint(); + + return searxng; +})(window, document); diff --git a/searx/static/themes/magi/src/js/main/infinite_scroll.js b/searx/static/themes/magi/src/js/main/infinite_scroll.js new file mode 100644 index 000000000..07db3305a --- /dev/null +++ b/searx/static/themes/magi/src/js/main/infinite_scroll.js @@ -0,0 +1,88 @@ +// SPDX-License-Identifier: AGPL-3.0-or-later + +/* global searxng */ + +searxng.ready(function () { + 'use strict'; + + searxng.infinite_scroll_supported = ( + 'IntersectionObserver' in window && + 'IntersectionObserverEntry' in window && + 'intersectionRatio' in window.IntersectionObserverEntry.prototype); + + if (searxng.endpoint !== 'results') { + return; + } + + if (!searxng.infinite_scroll_supported) { + console.log('IntersectionObserver not supported'); + return; + } + + let d = document; + var onlyImages = d.getElementById('results').classList.contains('only_template_images'); + + function newLoadSpinner () { + var loader = d.createElement('div'); + loader.classList.add('loader'); + return loader; + } + + function replaceChildrenWith (element, children) { + element.textContent = ''; + children.forEach(child => element.appendChild(child)); + } + + function loadNextPage (callback) { + var form = d.querySelector('#pagination form.next_page'); + if (!form) { + return + } + replaceChildrenWith(d.querySelector('#pagination'), [ newLoadSpinner() ]); + var formData = new FormData(form); + searxng.http('POST', d.querySelector('#search').getAttribute('action'), formData).then( + function (response) { + var nextPageDoc = new DOMParser().parseFromString(response, 'text/html'); + var articleList = nextPageDoc.querySelectorAll('#urls article'); + var paginationElement = nextPageDoc.querySelector('#pagination'); + d.querySelector('#pagination').remove(); + if (articleList.length > 0 && !onlyImages) { + // do not add
    element when there are only images + d.querySelector('#urls').appendChild(d.createElement('hr')); + } + articleList.forEach(articleElement => { + d.querySelector('#urls').appendChild(articleElement); + }); + if (paginationElement) { + d.querySelector('#results').appendChild(paginationElement); + callback(); + } + } + ).catch( + function (err) { + console.log(err); + var e = d.createElement('div'); + e.textContent = searxng.settings.translations.error_loading_next_page; + e.classList.add('dialog-error'); + e.setAttribute('role', 'alert'); + replaceChildrenWith(d.querySelector('#pagination'), [ e ]); + } + ) + } + + if (searxng.settings.infinite_scroll && searxng.infinite_scroll_supported) { + const intersectionObserveOptions = { + rootMargin: "20rem", + }; + const observedSelector = 'article.result:last-child'; + const observer = new IntersectionObserver(entries => { + const paginationEntry = entries[0]; + if (paginationEntry.isIntersecting) { + observer.unobserve(paginationEntry.target); + loadNextPage(() => observer.observe(d.querySelector(observedSelector), intersectionObserveOptions)); + } + }); + observer.observe(d.querySelector(observedSelector), intersectionObserveOptions); + } + +}); diff --git a/searx/static/themes/magi/src/js/main/keyboard.js b/searx/static/themes/magi/src/js/main/keyboard.js new file mode 100644 index 000000000..0c52673d9 --- /dev/null +++ b/searx/static/themes/magi/src/js/main/keyboard.js @@ -0,0 +1,421 @@ +/* SPDX-License-Identifier: AGPL-3.0-or-later */ +/* global searxng */ + +searxng.ready(function () { + + function isElementInDetail (el) { + while (el !== undefined) { + if (el.classList.contains('detail')) { + return true; + } + if (el.classList.contains('result')) { + // we found a result, no need to go to the root of the document: + // el is not inside a
    element + return false; + } + el = el.parentNode; + } + return false; + } + + function getResultElement (el) { + while (el !== undefined) { + if (el.classList.contains('result')) { + return el; + } + el = el.parentNode; + } + return undefined; + } + + function isImageResult (resultElement) { + return resultElement && resultElement.classList.contains('result-images'); + } + + searxng.on('.result', 'click', function (e) { + if (!isElementInDetail(e.target)) { + highlightResult(this)(true, true); + let resultElement = getResultElement(e.target); + if (isImageResult(resultElement)) { + e.preventDefault(); + searxng.selectImage(resultElement); + } + } + }); + + searxng.on('.result a', 'focus', function (e) { + if (!isElementInDetail(e.target)) { + let resultElement = getResultElement(e.target); + if (resultElement && resultElement.getAttribute("data-vim-selected") === null) { + highlightResult(resultElement)(true); + } + if (isImageResult(resultElement)) { + searxng.selectImage(resultElement); + } + } + }, true); + + var vimKeys = { + 27: { + key: 'Escape', + fun: removeFocus, + des: 'remove focus from the focused input', + cat: 'Control' + }, + 73: { + key: 'i', + fun: searchInputFocus, + des: 'focus on the search input', + cat: 'Control' + }, + 66: { + key: 'b', + fun: scrollPage(-window.innerHeight), + des: 'scroll one page up', + cat: 'Navigation' + }, + 70: { + key: 'f', + fun: scrollPage(window.innerHeight), + des: 'scroll one page down', + cat: 'Navigation' + }, + 85: { + key: 'u', + fun: scrollPage(-window.innerHeight / 2), + des: 'scroll half a page up', + cat: 'Navigation' + }, + 68: { + key: 'd', + fun: scrollPage(window.innerHeight / 2), + des: 'scroll half a page down', + cat: 'Navigation' + }, + 71: { + key: 'g', + fun: scrollPageTo(-document.body.scrollHeight, 'top'), + des: 'scroll to the top of the page', + cat: 'Navigation' + }, + 86: { + key: 'v', + fun: scrollPageTo(document.body.scrollHeight, 'bottom'), + des: 'scroll to the bottom of the page', + cat: 'Navigation' + }, + 75: { + key: 'k', + fun: highlightResult('up'), + des: 'select previous search result', + cat: 'Results' + }, + 74: { + key: 'j', + fun: highlightResult('down'), + des: 'select next search result', + cat: 'Results' + }, + 80: { + key: 'p', + fun: GoToPreviousPage(), + des: 'go to previous page', + cat: 'Results' + }, + 78: { + key: 'n', + fun: GoToNextPage(), + des: 'go to next page', + cat: 'Results' + }, + 79: { + key: 'o', + fun: openResult(false), + des: 'open search result', + cat: 'Results' + }, + 84: { + key: 't', + fun: openResult(true), + des: 'open the result in a new tab', + cat: 'Results' + }, + 82: { + key: 'r', + fun: reloadPage, + des: 'reload page from the server', + cat: 'Control' + }, + 72: { + key: 'h', + fun: toggleHelp, + des: 'toggle help window', + cat: 'Other' + } + }; + + if (searxng.settings.hotkeys) { + searxng.on(document, "keydown", function (e) { + // check for modifiers so we don't break browser's hotkeys + if (Object.prototype.hasOwnProperty.call(vimKeys, e.keyCode) && !e.ctrlKey && !e.altKey && !e.shiftKey && !e.metaKey) { + var tagName = e.target.tagName.toLowerCase(); + if (e.keyCode === 27) { + vimKeys[e.keyCode].fun(e); + } else { + if (e.target === document.body || tagName === 'a' || tagName === 'button') { + e.preventDefault(); + vimKeys[e.keyCode].fun(); + } + } + } + }); + } + + function highlightResult (which) { + return function (noScroll, keepFocus) { + var current = document.querySelector('.result[data-vim-selected]'), + effectiveWhich = which; + if (current === null) { + // no selection : choose the first one + current = document.querySelector('.result'); + if (current === null) { + // no first one : there are no results + return; + } + // replace up/down actions by selecting first one + if (which === "down" || which === "up") { + effectiveWhich = current; + } + } + + var next, results = document.querySelectorAll('.result'); + + if (typeof effectiveWhich !== 'string') { + next = effectiveWhich; + } else { + switch (effectiveWhich) { + case 'visible': + var top = document.documentElement.scrollTop || document.body.scrollTop; + var bot = top + document.documentElement.clientHeight; + + for (var i = 0; i < results.length; i++) { + next = results[i]; + var etop = next.offsetTop; + var ebot = etop + next.clientHeight; + + if ((ebot <= bot) && (etop > top)) { + break; + } + } + break; + case 'down': + next = current.nextElementSibling; + if (next === null) { + next = results[0]; + } + break; + case 'up': + next = current.previousElementSibling; + if (next === null) { + next = results[results.length - 1]; + } + break; + case 'bottom': + next = results[results.length - 1]; + break; + case 'top': + /* falls through */ + default: + next = results[0]; + } + } + + if (next) { + current.removeAttribute('data-vim-selected'); + next.setAttribute('data-vim-selected', 'true'); + if (!keepFocus) { + var link = next.querySelector('h3 a') || next.querySelector('a'); + if (link !== null) { + link.focus(); + } + } + if (!noScroll) { + scrollPageToSelected(); + } + } + }; + } + + function reloadPage () { + document.location.reload(true); + } + + function removeFocus (e) { + const tagName = e.target.tagName.toLowerCase(); + if (document.activeElement && (tagName === 'input' || tagName === 'select' || tagName === 'textarea')) { + document.activeElement.blur(); + } else { + searxng.closeDetail(); + } + } + + function pageButtonClick (css_selector) { + return function () { + var button = document.querySelector(css_selector); + if (button) { + button.click(); + } + }; + } + + function GoToNextPage () { + return pageButtonClick('nav#pagination .next_page button[type="submit"]'); + } + + function GoToPreviousPage () { + return pageButtonClick('nav#pagination .previous_page button[type="submit"]'); + } + + function scrollPageToSelected () { + var sel = document.querySelector('.result[data-vim-selected]'); + if (sel === null) { + return; + } + var wtop = document.documentElement.scrollTop || document.body.scrollTop, + wheight = document.documentElement.clientHeight, + etop = sel.offsetTop, + ebot = etop + sel.clientHeight, + offset = 120; + // first element ? + if ((sel.previousElementSibling === null) && (ebot < wheight)) { + // set to the top of page if the first element + // is fully included in the viewport + window.scroll(window.scrollX, 0); + return; + } + if (wtop > (etop - offset)) { + window.scroll(window.scrollX, etop - offset); + } else { + var wbot = wtop + wheight; + if (wbot < (ebot + offset)) { + window.scroll(window.scrollX, ebot - wheight + offset); + } + } + } + + function scrollPage (amount) { + return function () { + window.scrollBy(0, amount); + highlightResult('visible')(); + }; + } + + function scrollPageTo (position, nav) { + return function () { + window.scrollTo(0, position); + highlightResult(nav)(); + }; + } + + function searchInputFocus () { + window.scrollTo(0, 0); + var q = document.querySelector('#q'); + q.focus(); + if (q.setSelectionRange) { + var len = q.value.length; + q.setSelectionRange(len, len); + } + } + + function openResult (newTab) { + return function () { + var link = document.querySelector('.result[data-vim-selected] h3 a'); + if (link === null) { + link = document.querySelector('.result[data-vim-selected] > a'); + } + if (link !== null) { + var url = link.getAttribute('href'); + if (newTab) { + window.open(url); + } else { + window.location.href = url; + } + } + }; + } + + function initHelpContent (divElement) { + var categories = {}; + + for (var k in vimKeys) { + var key = vimKeys[k]; + categories[key.cat] = categories[key.cat] || []; + categories[key.cat].push(key); + } + + var sorted = Object.keys(categories).sort(function (a, b) { + return categories[b].length - categories[a].length; + }); + + if (sorted.length === 0) { + return; + } + + var html = '×'; + html += '

    How to navigate searx with Vim-like hotkeys

    '; + html += ''; + + for (var i = 0; i < sorted.length; i++) { + var cat = categories[sorted[i]]; + + var lastCategory = i === (sorted.length - 1); + var first = i % 2 === 0; + + if (first) { + html += ''; + } + html += ''; // col-sm-* + + if (!first || lastCategory) { + html += ''; // row + } + } + + html += '
    '; + + html += '

    ' + cat[0].cat + '

    '; + html += '
      '; + + for (var cj in cat) { + html += '
    • ' + cat[cj].key + ' ' + cat[cj].des + '
    • '; + } + + html += '
    '; + html += '
    '; + + divElement.innerHTML = html; + } + + function toggleHelp () { + var helpPanel = document.querySelector('#vim-hotkeys-help'); + if (helpPanel === undefined || helpPanel === null) { + // first call + helpPanel = document.createElement('div'); + helpPanel.id = 'vim-hotkeys-help'; + helpPanel.className = 'dialog-modal'; + initHelpContent(helpPanel); + initHelpContent(helpPanel); + initHelpContent(helpPanel); + var body = document.getElementsByTagName('body')[0]; + body.appendChild(helpPanel); + } else { + // togggle hidden + helpPanel.classList.toggle('invisible'); + return; + } + } + + searxng.scrollPageToSelected = scrollPageToSelected; + searxng.selectNext = highlightResult('down'); + searxng.selectPrevious = highlightResult('up'); +}); diff --git a/searx/static/themes/magi/src/js/main/mapresult.js b/searx/static/themes/magi/src/js/main/mapresult.js new file mode 100644 index 000000000..419bfa9fa --- /dev/null +++ b/searx/static/themes/magi/src/js/main/mapresult.js @@ -0,0 +1,74 @@ +/* SPDX-License-Identifier: AGPL-3.0-or-later */ +/* global L */ +(function (w, d, searxng) { + 'use strict'; + + searxng.ready(function () { + searxng.on('.searxng_init_map', 'click', function (event) { + // no more request + this.classList.remove("searxng_init_map"); + + // + var leaflet_target = this.dataset.leafletTarget; + var map_lon = parseFloat(this.dataset.mapLon); + var map_lat = parseFloat(this.dataset.mapLat); + var map_zoom = parseFloat(this.dataset.mapZoom); + var map_boundingbox = JSON.parse(this.dataset.mapBoundingbox); + var map_geojson = JSON.parse(this.dataset.mapGeojson); + + searxng.loadStyle('css/leaflet.css'); + searxng.loadScript('js/leaflet.js', function () { + var map_bounds = null; + if (map_boundingbox) { + var southWest = L.latLng(map_boundingbox[0], map_boundingbox[2]); + var northEast = L.latLng(map_boundingbox[1], map_boundingbox[3]); + map_bounds = L.latLngBounds(southWest, northEast); + } + + // init map + var map = L.map(leaflet_target); + // create the tile layer with correct attribution + var osmMapnikUrl = 'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png'; + var osmMapnikAttrib = 'Map data © OpenStreetMap contributors'; + var osmMapnik = new L.TileLayer(osmMapnikUrl, {minZoom: 1, maxZoom: 19, attribution: osmMapnikAttrib}); + var osmWikimediaUrl = 'https://maps.wikimedia.org/osm-intl/{z}/{x}/{y}.png'; + var osmWikimediaAttrib = 'Wikimedia maps | Maps data © OpenStreetMap contributors'; + var osmWikimedia = new L.TileLayer(osmWikimediaUrl, {minZoom: 1, maxZoom: 19, attribution: osmWikimediaAttrib}); + // init map view + if (map_bounds) { + // TODO hack: https://github.com/Leaflet/Leaflet/issues/2021 + // Still useful ? + setTimeout(function () { + map.fitBounds(map_bounds, { + maxZoom: 17 + }); + }, 0); + } else if (map_lon && map_lat) { + if (map_zoom) { + map.setView(new L.latLng(map_lat, map_lon), map_zoom); + } else { + map.setView(new L.latLng(map_lat, map_lon), 8); + } + } + + map.addLayer(osmMapnik); + + var baseLayers = { + "OSM Mapnik": osmMapnik, + "OSM Wikimedia": osmWikimedia, + }; + + L.control.layers(baseLayers).addTo(map); + + if (map_geojson) { + L.geoJson(map_geojson).addTo(map); + } /* else if(map_bounds) { + L.rectangle(map_bounds, {color: "#ff7800", weight: 3, fill:false}).addTo(map); + } */ + }); + + // this event occour only once per element + event.preventDefault(); + }); + }); +})(window, document, window.searxng); diff --git a/searx/static/themes/magi/src/js/main/preferences.js b/searx/static/themes/magi/src/js/main/preferences.js new file mode 100644 index 000000000..1e3ae5981 --- /dev/null +++ b/searx/static/themes/magi/src/js/main/preferences.js @@ -0,0 +1,30 @@ +/* SPDX-License-Identifier: AGPL-3.0-or-later */ +(function (w, d, searxng) { + 'use strict'; + + if (searxng.endpoint !== 'preferences') { + return; + } + + searxng.ready(function () { + let engine_descriptions = null; + function load_engine_descriptions () { + if (engine_descriptions == null) { + searxng.http("GET", "engine_descriptions.json").then(function (content) { + engine_descriptions = JSON.parse(content); + for (const [engine_name, description] of Object.entries(engine_descriptions)) { + let elements = d.querySelectorAll('[data-engine-name="' + engine_name + '"] .engine-description'); + for (const element of elements) { + let source = ' (' + searxng.settings.translations.Source + ': ' + description[1] + ')'; + element.innerHTML = description[0] + source; + } + } + }); + } + } + + for (const el of d.querySelectorAll('[data-engine-name]')) { + searxng.on(el, 'mouseenter', load_engine_descriptions); + } + }); +})(window, document, window.searxng); diff --git a/searx/static/themes/magi/src/js/main/results.js b/searx/static/themes/magi/src/js/main/results.js new file mode 100644 index 000000000..4eae58435 --- /dev/null +++ b/searx/static/themes/magi/src/js/main/results.js @@ -0,0 +1,103 @@ +/* SPDX-License-Identifier: AGPL-3.0-or-later */ +(function (w, d, searxng) { + 'use strict'; + + if (searxng.endpoint !== 'results') { + return; + } + + searxng.ready(function () { + d.querySelectorAll('#urls img.image').forEach( + img => + img.addEventListener( + 'error', () => { + img.style.display = 'none'; + img.error = null; + } + )); + + searxng.on('.btn-collapse', 'click', function () { + var btnLabelCollapsed = this.getAttribute('data-btn-text-collapsed'); + var btnLabelNotCollapsed = this.getAttribute('data-btn-text-not-collapsed'); + var target = this.getAttribute('data-target'); + var targetElement = d.querySelector(target); + var html = this.innerHTML; + if (this.classList.contains('collapsed')) { + html = html.replace(btnLabelCollapsed, btnLabelNotCollapsed); + } else { + html = html.replace(btnLabelNotCollapsed, btnLabelCollapsed); + } + this.innerHTML = html; + this.classList.toggle('collapsed'); + targetElement.classList.toggle('invisible'); + }); + + searxng.on('.media-loader', 'click', function () { + var target = this.getAttribute('data-target'); + var iframe_load = d.querySelector(target + ' > iframe'); + var srctest = iframe_load.getAttribute('src'); + if (srctest === null || srctest === undefined || srctest === false) { + iframe_load.setAttribute('src', iframe_load.getAttribute('data-src')); + } + }); + + searxng.selectImage = function (resultElement) { + /* eslint no-unused-vars: 0 */ + if (resultElement) { + // load full size image in background + const imgElement = resultElement.querySelector('.result-images-source img'); + const thumbnailElement = resultElement.querySelector('.image_thumbnail'); + const detailElement = resultElement.querySelector('.detail'); + if (imgElement) { + const imgSrc = imgElement.getAttribute('data-src'); + if (imgSrc) { + const loader = d.createElement('div'); + const imgLoader = new Image(); + + loader.classList.add('loader'); + detailElement.appendChild(loader); + + imgLoader.onload = e => { + imgElement.src = imgSrc; + loader.remove(); + }; + imgLoader.onerror = e => { + loader.remove(); + }; + imgLoader.src = imgSrc; + imgElement.src = thumbnailElement.src; + imgElement.removeAttribute('data-src'); + } + } + } + d.getElementById('results').classList.add('image-detail-open'); + searxng.scrollPageToSelected(); + } + + searxng.closeDetail = function (e) { + d.getElementById('results').classList.remove('image-detail-open'); + searxng.scrollPageToSelected(); + } + searxng.on('.result-detail-close', 'click', e => { + e.preventDefault(); + searxng.closeDetail(); + }); + searxng.on('.result-detail-previous', 'click', e => searxng.selectPrevious(false)); + searxng.on('.result-detail-next', 'click', e => searxng.selectNext(false)); + + w.addEventListener('scroll', function () { + var e = d.getElementById('backToTop'), + scrollTop = document.documentElement.scrollTop || document.body.scrollTop, + results = d.getElementById('results'); + if (e !== null) { + if (scrollTop >= 100) { + results.classList.add('scrolling'); + } else { + results.classList.remove('scrolling'); + } + } + }, true); + + }); + +})(window, document, window.searxng); diff --git a/searx/static/themes/magi/src/js/main/search.js b/searx/static/themes/magi/src/js/main/search.js new file mode 100644 index 000000000..9ba3914be --- /dev/null +++ b/searx/static/themes/magi/src/js/main/search.js @@ -0,0 +1,138 @@ +/* SPDX-License-Identifier: AGPL-3.0-or-later */ +/* global AutoComplete */ +(function (w, d, searxng) { + 'use strict'; + + var qinput_id = "q", qinput; + + const isMobile = window.matchMedia("only screen and (max-width: 50em)").matches; + + function submitIfQuery () { + if (qinput.value.length > 0) { + var search = document.getElementById('search'); + setTimeout(search.submit.bind(search), 0); + } + } + + function createClearButton (qinput) { + var cs = document.getElementById('clear_search'); + var updateClearButton = function () { + if (qinput.value.length === 0) { + cs.classList.add("empty"); + } else { + cs.classList.remove("empty"); + } + }; + + // update status, event listener + updateClearButton(); + cs.addEventListener('click', function (ev) { + qinput.value = ''; + qinput.focus(); + updateClearButton(); + ev.preventDefault(); + }); + qinput.addEventListener('keyup', updateClearButton, false); + } + + searxng.ready(function () { + qinput = d.getElementById(qinput_id); + + if (qinput !== null) { + // clear button + createClearButton(qinput); + + // autocompleter + if (searxng.settings.autocomplete_provider) { + searxng.autocomplete = AutoComplete.call(w, { + Url: "./autocompleter", + EmptyMessage: searxng.settings.translations.no_item_found, + HttpMethod: searxng.settings.http_method, + HttpHeaders: { + "Content-type": "application/x-www-form-urlencoded", + "X-Requested-With": "XMLHttpRequest" + }, + MinChars: searxng.settings.autocomplete_min, + Delay: 300, + _Position: function () {}, + _Open: function () { + var params = this; + Array.prototype.forEach.call(this.DOMResults.getElementsByTagName("li"), function (li) { + if (li.getAttribute("class") != "locked") { + li.onmousedown = function () { + params._Select(li); + }; + } + }); + }, + }, "#" + qinput_id); + } + + /* + Monkey patch autocomplete.js to fix a bug + With the POST method, the values are not URL encoded: query like "1 + 1" are sent as "1 1" since space are URL encoded as plus. + See HTML specifications: + * HTML5: https://url.spec.whatwg.org/#concept-urlencoded-serializer + * HTML4: https://www.w3.org/TR/html401/interact/forms.html#h-17.13.4.1 + + autocomplete.js does not URL encode the name and values: + https://github.com/autocompletejs/autocomplete.js/blob/87069524f3b95e68f1b54d8976868e0eac1b2c83/src/autocomplete.ts#L665 + + The monkey patch overrides the compiled version of the ajax function. + See https://github.com/autocompletejs/autocomplete.js/blob/87069524f3b95e68f1b54d8976868e0eac1b2c83/dist/autocomplete.js#L143-L158 + The patch changes only the line 156 from + params.Request.send(params._QueryArg() + "=" + params._Pre()); + to + params.Request.send(encodeURIComponent(params._QueryArg()) + "=" + encodeURIComponent(params._Pre())); + + Related to: + * https://github.com/autocompletejs/autocomplete.js/issues/78 + * https://github.com/searxng/searxng/issues/1695 + */ + AutoComplete.prototype.ajax = function (params, request, timeout) { + if (timeout === void 0) { timeout = true; } + if (params.$AjaxTimer) { + window.clearTimeout(params.$AjaxTimer); + } + if (timeout === true) { + params.$AjaxTimer = window.setTimeout(AutoComplete.prototype.ajax.bind(null, params, request, false), params.Delay); + } else { + if (params.Request) { + params.Request.abort(); + } + params.Request = request; + params.Request.send(encodeURIComponent(params._QueryArg()) + "=" + encodeURIComponent(params._Pre())); + } + }; + + if (!isMobile && document.querySelector('.index_endpoint')) { + qinput.focus(); + } + } + + // vanilla js version of search_on_category_select.js + if (qinput !== null && d.querySelector('.help') != null && searxng.settings.search_on_category_select) { + d.querySelector('.help').className = 'invisible'; + + searxng.on('#categories input', 'change', function () { + var i, categories = d.querySelectorAll('#categories input[type="checkbox"]'); + for (i = 0; i < categories.length; i++) { + if (categories[i] !== this && categories[i].checked) { + categories[i].click(); + } + } + if (! this.checked) { + this.click(); + } + submitIfQuery(); + return false; + }); + + searxng.on(d.getElementById('safesearch'), 'change', submitIfQuery); + searxng.on(d.getElementById('time_range'), 'change', submitIfQuery); + searxng.on(d.getElementById('language'), 'change', submitIfQuery); + } + + }); + +})(window, document, window.searxng); diff --git a/searx/static/themes/magi/src/less/animations.less b/searx/static/themes/magi/src/less/animations.less new file mode 100644 index 000000000..75c98308f --- /dev/null +++ b/searx/static/themes/magi/src/less/animations.less @@ -0,0 +1,19 @@ +.dialog-modal { + animation-name: dialogmodal; + animation-duration: 0.13s; + + @keyframes dialogmodal { + 0% { + opacity: 0; + } + + 50% { + opacity: 0.5; + transform: translate(-50%, -50%) scale(1.05); + } + } +} + +input.checkbox-onoff[type="checkbox"]::before { + transition: left 0.25s; +} diff --git a/searx/static/themes/magi/src/less/autocomplete.less b/searx/static/themes/magi/src/less/autocomplete.less new file mode 100644 index 000000000..bb2e1890f --- /dev/null +++ b/searx/static/themes/magi/src/less/autocomplete.less @@ -0,0 +1,75 @@ +/*! Autocomplete.js v2.6.3 | license MIT | (c) 2017, Baptiste Donaux | http://autocomplete-js.com */ + +.autocomplete { + position: absolute; + width: @search-width; + max-height: 0; + overflow-y: hidden; + .ltr-text-align-left(); + + .rounded-corners; + + &:active, + &:focus, + &:hover { + background-color: var(--color-autocomplete-background); + } + + &:empty { + display: none; + } + + > ul { + list-style-type: none; + margin: 0; + padding: 0; + + > li { + cursor: pointer; + padding: 0.5rem 1rem; + + &.active, + &:active, + &:focus, + &:hover { + background-color: var(--color-autocomplete-background-hover); + + a:active, + a:focus, + a:hover { + text-decoration: none; + } + } + + &.locked { + cursor: inherit; + } + } + } + + &.open { + display: block; + background-color: var(--color-autocomplete-background); + color: var(--color-autocomplete-font); + max-height: 32rem; + overflow-y: auto; + z-index: 100; + margin-top: 3.5rem; + border-radius: 0.8rem; + box-shadow: 0 2px 8px rgb(34 38 46 / 25%); + + &:empty { + display: none; + } + } +} + +@media screen and (max-width: @phone) { + .autocomplete { + width: 100%; + + > ul > li { + padding: 1rem; + } + } +} diff --git a/searx/static/themes/magi/src/less/code.less b/searx/static/themes/magi/src/less/code.less new file mode 100644 index 000000000..f4e6735ba --- /dev/null +++ b/searx/static/themes/magi/src/less/code.less @@ -0,0 +1,9 @@ +.code-highlight pre { + overflow: auto; + background-color: inherit; + color: inherit; + border: inherit; +} + +// stylelint-disable no-invalid-position-at-import-rule +@import "../generated/pygments.less"; diff --git a/searx/static/themes/magi/src/less/definitions.less b/searx/static/themes/magi/src/less/definitions.less new file mode 100644 index 000000000..885826e76 --- /dev/null +++ b/searx/static/themes/magi/src/less/definitions.less @@ -0,0 +1,279 @@ +/* + * SearXNG, A privacy-respecting, hackable metasearch engine + * + * To change the colors of the site, simple edit this variables + */ + +/// Light Theme +:root { + /// Base Colors + --color-base-font: #444; + --color-base-font-rgb: 68, 68, 68; + --color-base-background: #fff; + --color-base-background-mobile: #f2f5f8; + --color-url-font: #334999; + --color-url-visited-font: #9822c3; + /// Header Colors + --color-header-background: #fdfbff; + --color-header-border: #ddd; + /// Footer Colors + --color-footer-background: #fdfbff; + --color-footer-border: #ddd; + /// Sidebar Colors + --color-sidebar-border: #ddd; + --color-sidebar-font: #000; + --color-sidebar-background: #fff; + /// BackToTop Colors + --color-backtotop-font: #444; + --color-backtotop-border: #ddd; + --color-backtotop-background: #fff; + /// Button Colors + --color-btn-background: #3050ff; + --color-btn-font: #fff; + --color-show-btn-background: #bbb; + --color-show-btn-font: #000; + /// Search Input Colors + --color-search-border: #bbb; + --color-search-shadow: 0 2px 8px rgb(34 38 46 / 25%); + --color-search-background: #fff; + --color-search-font: #222; + --color-search-background-hover: #3050ff; + /// Modal Colors + --color-error: #db3434; + --color-error-background: lighten(#db3434, 40%); + --color-warning: #dbba34; + --color-warning-background: lighten(#dbba34, 40%); + --color-success: #42db34; + --color-success-background: lighten(#42db34, 40%); + /// Categories Colors + --color-categories-item-selected-font: #3050ff; + --color-categories-item-border-selected: #3050ff; + /// Autocomplete Colors + --color-autocomplete-font: #000; + --color-autocomplete-border: #bbb; + --color-autocomplete-shadow: 0 2px 8px rgb(34 38 46 / 25%); + --color-autocomplete-background: #fff; + --color-autocomplete-background-hover: #e3e3e3; + /// Answer Colors + --color-answer-font: #444; // same as --color-base-font + --color-answer-background: #fff; + /// Results Colors + --color-result-background: #fff; + --color-result-border: #ddd; + --color-result-url-font: #000; + --color-result-vim-selected: #f7f7f7; + --color-result-vim-arrow: #000bbb; + --color-result-description-highlight-font: #000; + --color-result-link-font: #000bbb; + --color-result-link-font-highlight: #000bbb; + --color-result-link-visited-font: #9822c3; + --color-result-publishdate-font: #777; + --color-result-engines-font: #545454; + --color-result-search-url-border: #ddd; + --color-result-search-url-font: #000; + // Images Colors + --color-result-image-span-font: #444; + --color-result-image-span-font-selected: #fff; + --color-result-image-background: #fff; + /// Settings Colors + --color-settings-tr-hover: #ebebeb; + --color-settings-engine-description-font: #545454; + --color-settings-engine-group-background: #0001; + /// Detail modal + --color-result-detail-font: #fff; + --color-result-detail-label-font: lightgray; + --color-result-detail-background: #242424; + --color-result-detail-hr: #555; + --color-result-detail-link: #8af; + --color-result-detail-loader-border: rgba(255, 255, 255, 0.2); + --color-result-detail-loader-borderleft: rgba(0, 0, 0, 0); + /// Toolkit Colors + --color-toolkit-badge-font: #fff; + --color-toolkit-badge-background: #545454; + --color-toolkit-kbd-font: #fff; + --color-toolkit-kbd-background: #000; + --color-toolkit-dialog-border: #ddd; + --color-toolkit-dialog-background: #fff; + --color-toolkit-tabs-label-border: #fff; + --color-toolkit-tabs-section-border: #ddd; + --color-toolkit-select-background: #e1e1e1; + --color-toolkit-select-border: #ddd; + --color-toolkit-select-background-hover: #bbb; + --color-toolkit-input-text-font: #222; + --color-toolkit-checkbox-onoff-off-background: #ddd; + --color-toolkit-checkbox-onoff-on-background: #ddd; + --color-toolkit-checkbox-onoff-on-mark-background: #3050ff; + --color-toolkit-checkbox-onoff-on-mark-color: #fff; + --color-toolkit-checkbox-onoff-off-mark-background: #aaa; + --color-toolkit-checkbox-onoff-off-mark-color: #fff; + --color-toolkit-checkbox-label-background: #ddd; + --color-toolkit-checkbox-label-border: #ddd; + --color-toolkit-checkbox-input-border: #3050ff; + --color-toolkit-engine-tooltip-border: #ddd; + --color-toolkit-engine-tooltip-background: #fff; + --color-toolkit-loader-border: rgba(0, 0, 0, 0.2); + --color-toolkit-loader-borderleft: rgba(255, 255, 255, 0); + --color-doc-code: #300; + --color-doc-code-background: #fdd; + --invert-logo: invert(0%); +} + +.dark-themes() { + /// Base Colors + --color-base-font: #bbb; + --color-base-font-rgb: 187, 187, 187; + --color-base-background: #222428; + --color-base-background-mobile: #222428; + --color-url-font: #8af; + --color-url-visited-font: #c09cd9; + /// Header Colors + --color-header-background: #1e1e22; + --color-header-border: #333; + /// Footer Colors + --color-footer-background: #1e1e22; + --color-footer-border: #333; + /// Sidebar Colors + --color-sidebar-border: #555; + --color-sidebar-font: #fff; + --color-sidebar-background: #292c34; + /// BackToTop Colors + --color-backtotop-font: #bbb; + --color-backtotop-border: #333; + --color-backtotop-background: #2b2e36; + /// Button Colors + --color-btn-background: linear-gradient(81.62deg, #2870ea 8.72%, #1b4aef 85.01%); + --color-btn-font: #fff; + --color-show-btn-background: #555; + --color-show-btn-font: #fff; + /// Search Input Colors + --color-search-border: #555; + --color-search-shadow: 0 2px 8px rgb(34 38 46 / 25%); + --color-search-background: #2b2e36; + --color-search-font: #fff; + --color-search-background-hover: linear-gradient(81.62deg, #2870ea 8.72%, #1b4aef 85.01%); + /// Modal Colors + --color-error: #f55b5b; + --color-error-background: darken(#db3434, 40%); + --color-warning: #f1d561; + --color-warning-background: darken(#dbba34, 40%); + --color-success: #79f56e; + --color-success-background: darken(#42db34, 40%); + /// Categories Colors + --color-categories-item-selected-font: #58f; + --color-categories-item-border-selected: #58f; + /// Autocomplete Colors + --color-autocomplete-font: #fff; + --color-autocomplete-border: #555; + --color-autocomplete-shadow: 0 2px 8px rgb(34 38 46 / 25%); + --color-autocomplete-background: #2b2e36; + --color-autocomplete-background-hover: #1e1e22; + /// Answer Colors + --color-answer-font: #bbb; // same as --color-base-font + --color-answer-background: #26292f; + /// Results Colors + --color-result-background: #26292f; + --color-result-border: #333; + --color-result-url-font: #fff; + --color-result-vim-selected: #1f1f23cc; + --color-result-vim-arrow: #8af; + --color-result-description-highlight-font: #fff; + --color-result-link-font: #8af; + --color-result-link-font-highlight: #8af; + --color-result-link-visited-font: #c09cd9; + --color-result-publishdate-font: #888; + --color-result-engines-font: #a4a4a4; + --color-result-search-url-border: #555; + --color-result-search-url-font: #fff; + /// Detail modal : same as the light version + --color-result-detail-font: #fff; + --color-result-detail-label-font: lightgray; + --color-result-detail-background: #1a1a1c; + --color-result-detail-hr: #555; + --color-result-detail-link: #8af; + --color-result-detail-loader-border: rgba(255, 255, 255, 0.2); + --color-result-detail-loader-borderleft: rgba(0, 0, 0, 0); + // Images Colors + --color-result-image-span-font: #bbb; + --color-result-image-span-font-selected: #222; + --color-result-image-background: #222; + /// Settings Colors + --color-settings-tr-hover: #2c2c32; + --color-settings-engine-description-font: darken(#dcdcdc, 30%); + --color-settings-engine-group-background: #1b1b21; + /// Toolkit Colors + --color-toolkit-badge-font: #fff; + --color-toolkit-badge-background: #555; + --color-toolkit-kbd-font: #000; + --color-toolkit-kbd-background: #fff; + --color-toolkit-dialog-border: #555; + --color-toolkit-dialog-background: #1e1e22; + --color-toolkit-tabs-label-border: #222; + --color-toolkit-tabs-section-border: #555; + --color-toolkit-select-background: #313338; + --color-toolkit-select-border: #555; + --color-toolkit-select-background-hover: #373b49; + --color-toolkit-input-text-font: #fff; + --color-toolkit-checkbox-onoff-off-background: #313338; + --color-toolkit-checkbox-onoff-on-background: #313338; + --color-toolkit-checkbox-onoff-on-mark-background: #58f; + --color-toolkit-checkbox-onoff-on-mark-color: #222; + --color-toolkit-checkbox-onoff-off-mark-background: #ddd; + --color-toolkit-checkbox-onoff-off-mark-color: #222; + --color-toolkit-checkbox-label-background: #222; + --color-toolkit-checkbox-label-border: #333; + --color-toolkit-checkbox-input-border: #58f; + --color-toolkit-engine-tooltip-border: #333; + --color-toolkit-engine-tooltip-background: #222; + --color-toolkit-loader-border: rgba(255, 255, 255, 0.2); + --color-toolkit-loader-borderleft: rgba(0, 0, 0, 0); + --color-doc-code: #fdd; + --color-doc-code-background: #300; + --invert-logo: invert(100%); +} + +/// Dark Theme (autoswitch based on device pref) +@media (prefers-color-scheme: dark) { + :root.theme-auto { + .dark-themes(); + } +} + +// Dark Theme by preferences +:root.theme-dark { + .dark-themes(); +} + +/// General Size +@results-width: 45rem; +@results-sidebar-width: 25rem; +@results-offset: 10rem; +@results-tablet-offset: 0.5rem; +@results-gap: 5rem; +@results-margin: 0.125rem; +@result-padding: 1rem; +@results-image-row-height: 12rem; +@results-image-row-height-phone: 6rem; +@search-width: 44rem; +// heigh of #search, see detail.less +@search-height: 7.6rem; + +/// Device Size +/// @desktop > @tablet +@tablet: 79.75em; // see https://github.com/searxng/searxng/issues/874 +@phone: 50em; +@small-phone: 35em; +@ultra-small-phone: 20rem; + +/// From style.less +@stacked-bar-chart: rgb(0, 0, 0); + +/// Load fonts from this directory. +@icon-font-path: "../../../fonts/"; +//** File name for all font files. +@icon-font-name: "glyphicons-halflings-regular"; +//** Element ID within SVG icon file. +@icon-font-svg-id: "glyphicons_halflingsregular"; + +// decoration of the select HTML elements +@select-light-svg-path: "../svg/select-light.svg"; +@select-dark-svg-path: "../svg/select-dark.svg"; diff --git a/searx/static/themes/magi/src/less/detail.less b/searx/static/themes/magi/src/less/detail.less new file mode 100644 index 000000000..b63e65206 --- /dev/null +++ b/searx/static/themes/magi/src/less/detail.less @@ -0,0 +1,248 @@ +#main_results #results.image-detail-open.only_template_images { + width: min(98%, 59.25rem) !important; +} + +#main_results #results.only_template_images.image-detail-open #backToTop { + .ltr-left(56.75rem) !important; + .ltr-right(inherit); +} + +article.result-images .detail { + display: none; +} + +#results.image-detail-open article.result-images[data-vim-selected] .detail { + display: flex; + flex-direction: column; + position: fixed; + .ltr-left(60rem); + .ltr-right(0); + top: @search-height; + transition: top 0.064s ease-in 0s; + bottom: 0; + background: var(--color-result-detail-background); + border: 1px solid var(--color-result-detail-background); + z-index: 10000; + padding: 4rem 3rem 3rem 3rem; + + a.result-images-source { + display: block; + flex: 1; + text-align: left; + width: 100%; + border: none; + text-decoration: none; + + img { + padding: 0; + margin: 0; + border: none; + object-fit: contain; + width: inherit; + height: inherit; + max-width: 100%; + min-height: inherit; + max-height: calc(100vh - 25rem - 7rem); + background: inherit; + } + } + + .result-images-labels { + color: var(--color-result-detail-font); + max-height: 16rem; + min-height: 16rem; + + hr { + border-top: 1px solid var(--color-result-detail-hr); + border-bottom: none; + } + + h4 { + height: 2rem; + overflow: hidden; + text-overflow: ellipsis; + font-size: 0.9rem; + } + + p { + color: var(--color-result-detail-label-font); + font-size: 0.9rem; + + span { + display: inline-block; + width: 12rem; + } + } + + h4, + p, + a { + .ltr-text-align-left(); + } + + p.result-content { + height: 2rem; + overflow: hidden; + text-overflow: ellipsis; + } + + p.result-url { + white-space: nowrap; + overflow-x: hidden; + text-overflow: ellipsis; + } + + p.result-content:hover, + p.result-url:hover { + position: relative; + overflow: inherit !important; + background: var(--color-result-detail-background); + text-overflow: inherit !important; + } + + a, + a:visited, + a:hover, + a:active { + color: var(--color-result-detail-link); + } + + a:hover { + text-decoration: underline; + } + } + + a.result-detail-close { + top: 1rem; + .ltr-left(1rem); + padding: 0.4rem; + } + + a.result-detail-previous { + top: 1rem; + .ltr-right(6rem); + // center the icon by moving it slightly on the left + padding-top: 0.4rem; + .ltr-padding-right(0.5rem); + padding-bottom: 0.4rem; + .ltr-padding-left(0.3rem); + } + + a.result-detail-next { + top: 1rem; + .ltr-right(2rem); + padding: 0.4rem; + } + + a.result-detail-close, + a.result-detail-next, + a.result-detail-previous { + border-radius: 50%; + display: block; + width: 1.5rem; + height: 1.5rem; + position: absolute; + filter: opacity(40%); + z-index: 2000002; + + span { + display: block; + width: 1.5rem; + height: 1.5rem; + text-align: center; + } + } + + a.result-detail-next, + a.result-detail-previous { + span::before { + // vertical center small icons + vertical-align: sub; + } + } + + a.result-detail-close, + a.result-detail-close:visited, + a.result-detail-close:hover, + a.result-detail-close:active, + a.result-detail-previous, + a.result-detail-previous:visited, + a.result-detail-previous:hover, + a.result-detail-previous:active, + a.result-detail-next, + a.result-detail-next:visited, + a.result-detail-next:hover, + a.result-detail-next:active { + color: var(--color-result-detail-font); + background: var(--color-result-detail-background); + border: 1px solid var(--color-result-detail-font); + } + + a.result-detail-close:focus, + a.result-detail-close:hover, + a.result-detail-previous:focus, + a.result-detail-previous:hover, + a.result-detail-next:focus, + a.result-detail-next:hover { + filter: opacity(80%); + } + + .loader { + position: absolute; + top: 1rem; + .ltr-right(50%); + border-top: 0.5em solid var(--color-result-detail-loader-border); + border-right: 0.5em solid var(--color-result-detail-loader-border); + border-bottom: 0.5em solid var(--color-result-detail-loader-border); + border-left: 0.5em solid var(--color-result-detail-loader-borderleft); + } +} + +#results.image-detail-open.scrolling article.result-images[data-vim-selected] .detail { + top: 0; + + a.result-images-source img { + max-height: calc(100vh - 25rem); + } +} + +@media screen and (max-width: @tablet) { + #results.image-detail-open article.result-images[data-vim-selected] .detail { + top: 0; + .ltr-left(0); + + a.result-images-source { + display: flex; + flex-direction: column; + justify-content: center; + + img { + width: 100%; + max-height: calc(100vh - 24rem); + } + } + + a.result-detail-next { + .ltr-right(1rem); + } + } +} + +@media screen and (max-width: @phone) { + #results.image-detail-open article.result-images[data-vim-selected] .detail { + top: 0; + .ltr-left(0); + padding: 1rem; + + a.result-images-source img { + width: 100%; + max-height: calc(100vh - 20rem); + margin: 0; + } + + .result-images-labels p span { + width: inherit; + .ltr-margin-right(1rem); + } + } +} diff --git a/searx/static/themes/magi/src/less/embedded.less b/searx/static/themes/magi/src/less/embedded.less new file mode 100644 index 000000000..2e9216ad2 --- /dev/null +++ b/searx/static/themes/magi/src/less/embedded.less @@ -0,0 +1,33 @@ +iframe[src^="https://w.soundcloud.com"] { + height: 120px; +} + +iframe[src^="https://www.deezer.com"] { + // The real size is 92px, but 94px are needed to avoid an inner scrollbar of + // the embedded HTML. + height: 94px; +} + +iframe[src^="https://www.mixcloud.com"] { + // the embedded player from mixcloud has some quirks: initial there is an + // issue with an image URL that is blocked since it is an a Cross-Origin + // request. The alternative text (Mixcloud Logo then cause an + // scrollbar in the inner of the iframe we can't avoid. Another quirk comes + // when pressing the play button, somtimes the shown player has an height of + // 200px, somtimes 250px. + height: 250px; +} + +iframe[src^="https://bandcamp.com/EmbeddedPlayer"] { + // show playlist + height: 350px; +} + +iframe[src^="https://bandcamp.com/EmbeddedPlayer/track"] { + // hide playlist + height: 120px; +} + +iframe[src^="https://genius.com/songs"] { + height: 65px; +} diff --git a/searx/static/themes/magi/src/less/index.less b/searx/static/themes/magi/src/less/index.less new file mode 100644 index 000000000..afc6d4332 --- /dev/null +++ b/searx/static/themes/magi/src/less/index.less @@ -0,0 +1,52 @@ +#main_index { + margin-top: 26vh; +} + +.index { + text-align: center; + + .title { + background: url('../img/logo.png') no-repeat; + filter: var(--invert-logo); + min-height: 4rem; + margin: 4rem auto; + background-position: center; + background-size: contain; + } + + h1 { + font-size: 4em; + visibility: hidden; + } + + #search, + #search_header { + margin: 0 auto; + background: inherit; + border: inherit; + padding: 0; + display: block; + } + + .search_filters { + display: block; + margin: 1em 0; + } + + .category label { + padding: 6px 10px; + border-bottom: initial !important; + } +} + +@media screen and (max-width: @tablet) { + div.title { + h1 { + font-size: 1em; + } + } + + #main_index { + margin-top: 6em; + } +} diff --git a/searx/static/themes/magi/src/less/info.less b/searx/static/themes/magi/src/less/info.less new file mode 100644 index 000000000..8c83c379d --- /dev/null +++ b/searx/static/themes/magi/src/less/info.less @@ -0,0 +1,9 @@ +.info-page { + code { + font-family: monospace; + color: var(--color-doc-code); + background-color: var(--color-doc-code-background); + padding: 2px 5px; + .rounded-corners(5px); + } +} diff --git a/searx/static/themes/magi/src/less/mixins.less b/searx/static/themes/magi/src/less/mixins.less new file mode 100644 index 000000000..a4bae7128 --- /dev/null +++ b/searx/static/themes/magi/src/less/mixins.less @@ -0,0 +1,40 @@ +// SPDX-License-Identifier: AGPL-3.0-or-later + +// Mixins +.text-size-adjust (@property: 100%) { + -webkit-text-size-adjust: @property; + -ms-text-size-adjust: @property; + -moz-text-size-adjust: @property; + text-size-adjust: @property; +} + +.rounded-corners (@radius: 10px) { + border-radius: @radius; +} + +.rounded-right-corners (@radius: 0 10px 10px 0) { + border-radius: @radius; +} + +.rounded-corners-tiny (@radius: 5px) { + border-radius: @radius; +} + +// disable user selection +.disable-user-select () { + -webkit-touch-callout: none; + user-select: none; +} + +.show-content-button() { + padding: 5px 10px; + .rounded-corners-tiny; + background: var(--color-show-btn-background); + color: var(--color-show-btn-font); + cursor: pointer; + + &:hover { + background: var(--color-btn-background); + color: var(--color-btn-font); + } +} diff --git a/searx/static/themes/magi/src/less/new_issue.less b/searx/static/themes/magi/src/less/new_issue.less new file mode 100644 index 000000000..a1e5006e3 --- /dev/null +++ b/searx/static/themes/magi/src/less/new_issue.less @@ -0,0 +1,48 @@ +// SPDX-License-Identifier: AGPL-3.0-or-later +.stats_endpoint { + .github-issue-button { + display: block; + padding: 8px 16px; + font-family: sans-serif; + font-size: 16px; + color: white; + background-color: #238636; + border: #2ea043; + border-radius: 10px !important; + box-shadow: rgba(0, 0, 0, 0) 0 0 0 0; + } + + .github-issue-button:hover { + background-color: #2ea043; + } + + .issue-hide { + display: none; + } + + input[type=checked] { + position: absolute; + } + + label { + margin: 1rem 1rem 1rem 0; + } + + .step_content { + margin: 1rem 1rem 1rem 2rem; + } + + .step1, + .step2 { + visibility: hidden; + } + + .step1_delay { + transition: visibility 0s linear 4s; + } + + #step1:checked ~ .step1, + #step2:checked ~ .step2 { + visibility: visible; + } +} diff --git a/searx/static/themes/magi/src/less/preferences.less b/searx/static/themes/magi/src/less/preferences.less new file mode 100644 index 000000000..6913bbb90 --- /dev/null +++ b/searx/static/themes/magi/src/less/preferences.less @@ -0,0 +1,196 @@ +#tab-content-query table td, +#tab-content-query table th { + .ltr-text-align-right() !important; + height: 3rem; +} + +#main_preferences { + form { + width: 100%; + } + + fieldset { + margin: 8px; + border: none; + } + + legend { + margin: 0; + padding: 5px 0 0 0; + display: block; + .ltr-float-left(); + width: 300px; + } + + .value { + margin: 0; + padding: 0; + .ltr-float-left(); + width: 15em; + + select, + input[type="text"] { + font-size: inherit !important; + margin-top: 0; + .ltr-margin-right(1rem); + margin-bottom: 0; + .ltr-margin-left(0); + } + + select { + width: 14rem; + } + + input[type="text"] { + width: 13.25rem; + color: var(--color-toolkit-input-text-font); + border: none; + background: none repeat scroll 0 0 var(--color-toolkit-select-background); + padding: 0.2rem 0.4rem; + height: 2rem; + .rounded-corners-tiny; + + &:hover, + &:focus { + background-color: var(--color-toolkit-select-background-hover); + } + } + + select:focus, + input:focus { + outline: none; + box-shadow: 0 0 1px 1px var(--color-btn-background); + } + } + + .description { + margin: 0; + padding: 5px 0 0 0; + .ltr-float-right(); + width: 50%; + color: var(--color-settings-engine-description-font); + font-size: 90%; + } + + table { + border-collapse: collapse; + } + + table td { + text-align: center; + } + + .category { + .ltr-margin-right(0.5rem); + + label { + border: 2px solid transparent; + padding: 0.2rem 0.4rem; + .rounded-corners-tiny; + } + } + + .category input[type="checkbox"]:checked + label { + border: 2px solid var(--color-categories-item-border-selected); + } + + table.table_engines { + td { + height: 3.75rem; + } + + th.name { + /* stylelint-disable */ + label { + cursor: pointer; + } + /* stylelint-enable */ + + .engine-tooltip { + margin-top: 1.8rem; + .ltr-left(calc((100% - 85em) / 2 + 10em)); + max-width: 40rem; + + .engine-description { + margin-top: 0.5rem; + } + } + } + + .engine-group { + .ltr-text-align-left(); + font-weight: normal; + background: var(--color-settings-engine-group-background); + } + + .name, + .shortcut { + .ltr-text-align-left(); + } + } + + table.cookies { + width: 100%; + direction: ltr; + + th, + td { + text-align: left; + font-family: monospace; + font-size: 1rem; + padding: 0.5em; + vertical-align: top; + } + + td:first-child { + word-break: keep-all; + width: 14rem; + padding-right: 1rem; + } + + td:last-child { + word-break: break-all; + } + + & > tbody > tr:nth-child(even) > th, + & > tbody > tr:nth-child(even) > td { + background-color: var(--color-settings-tr-hover); + } + } + + .preferences_back { + background: none repeat scroll 0 0 var(--color-btn-background); + color: var(--color-btn-font); + border: 0 none; + .rounded-corners; + + cursor: pointer; + display: inline-block; + margin: 2px 4px; + padding: 0.7em; + + a { + color: var(--color-settings-return-font); + } + + a::first-letter { + text-transform: uppercase; + } + } + + div.selectable_url { + pre { + width: 100%; + } + } +} + +@media screen and (max-width: @tablet) { + .preferences_back { + clear: both; + } + + .engine-tooltip { + .ltr-left(10em) !important; + } +} diff --git a/searx/static/themes/magi/src/less/result_templates.less b/searx/static/themes/magi/src/less/result_templates.less new file mode 100644 index 000000000..afabdf322 --- /dev/null +++ b/searx/static/themes/magi/src/less/result_templates.less @@ -0,0 +1,7 @@ +// SPDX-License-Identifier: AGPL-3.0-or-later + +.osm-map-box { + height: 300px; + width: 100%; + margin: 10px 0; +} diff --git a/searx/static/themes/magi/src/less/search.less b/searx/static/themes/magi/src/less/search.less new file mode 100644 index 000000000..eff6a850d --- /dev/null +++ b/searx/static/themes/magi/src/less/search.less @@ -0,0 +1,341 @@ +/* +* SearXNG, A privacy-respecting, hackable metasearch engine +*/ + +#search { + padding: 0; + margin: 0; +} + +#search_header { + padding-top: 1.5em; + .ltr-padding-right(2em); + .ltr-padding-left(@results-offset - 3rem); + margin: 0; + background: var(--color-header-background); + border-bottom: 1px solid var(--color-header-border); + display: grid; + column-gap: 1.2rem; + row-gap: 1rem; + grid-template-columns: 3rem 1fr; + grid-template-areas: + "logo search" + "spacer categories"; +} + +.category { + display: inline-block; + position: relative; + .ltr-margin-right(1rem); + padding: 0; + + input { + display: none; + } + + label { + svg { + padding-right: 0.2rem; + } + + cursor: pointer; + padding: 0.2rem 0; + display: inline-flex; + text-transform: capitalize; + font-size: 0.9em; + border-bottom: 2px solid transparent; + .disable-user-select; + + div.category_name { + margin: auto 0; + } + } + + input[type="checkbox"]:checked + label { + color: var(--color-categories-item-selected-font); + border-bottom: 2px solid var(--color-categories-item-border-selected); + } +} + +#search_logo { + filter: var(--invert-logo); + grid-area: logo; + display: flex; + align-items: center; + justify-content: center; + + svg { + flex: 1; + width: 30px; + height: 30px; + margin: 0.5rem 0 auto 0; + } +} + +.search_categories { + grid-area: categories; + + .help { + display: none; + } + + &:hover .help { + display: block; + position: absolute; + background: var(--color-base-background); + padding: 1rem 0.6rem 0.6rem 0; + z-index: 1000; + width: 100%; + left: -0.1rem; + } +} + +#search_view { + grid-area: search; +} + +.search_box { + border-radius: 0.8rem; + width: @search-width; + display: inline-flex; + flex-direction: row; + white-space: nowrap; + box-shadow: var(--color-search-shadow); +} + +#clear_search { + display: block; + border-collapse: separate; + box-sizing: border-box; + width: 1.8rem; + margin: 0; + padding: 0.8rem 0.2rem; + background: none repeat scroll 0 0 var(--color-search-background); + border: none; + outline: none; + color: var(--color-search-font); + font-size: 1.1rem; + z-index: 10000; + + &:hover { + color: var(--color-search-background-hover); + } + + &.empty * { + display: none; + } +} + +html.no-js #clear_search.hide_if_nojs { + display: none; +} + +#q, +#send_search { + display: block; + margin: 0; + padding: 0.8rem; + background: none repeat scroll 0 0 var(--color-search-background); + border: none; + outline: none; + color: var(--color-search-font); + font-size: 1.1rem; + z-index: 2; +} + +#q { + width: 100%; + .ltr-padding-left(1rem); + .ltr-padding-right(0) !important; + .ltr-rounded-left-corners(0.8rem); +} + +#q::-ms-clear, +#q::-webkit-search-cancel-button { + display: none; +} + +#send_search { + .ltr-rounded-right-corners(0.8rem); + + &:hover { + cursor: pointer; + background: var(--color-search-background-hover); + color: var(--color-search-background); + } +} + +.no-js #clear_search, +.no-js #send_search { + width: auto !important; + .ltr-border-left(1px solid var(--color-search-border)); +} + +.search_filters { + margin-top: 0.6rem; + .ltr-margin-right(0); + margin-bottom: 0; + .ltr-margin-left(@results-offset + 0.6rem); + display: flex; + overflow-x: auto; + overscroll-behavior-inline: contain; + + select { + background-color: inherit; + + &:hover, + &:focus { + color: var(--color-base-font); + } + } +} + +@media screen and (max-width: @tablet) { + #search_header { + padding: 1.5em @results-tablet-offset 0 @results-tablet-offset; + column-gap: @results-tablet-offset; + } + + .search_filters { + margin-top: 0.6rem; + .ltr-margin-right(0); + margin-bottom: 0; + .ltr-margin-left(@results-tablet-offset + 3rem); + } + + #categories { + font-size: 90%; + clear: both; + + .checkbox_container { + margin: auto; + margin-top: 2px; + } + } +} + +@media screen and (max-width: @tablet) and (hover: none) { + #main_index, + #main_results { + #categories_container { + width: max-content; + + .category { + display: inline-block; + width: auto; + } + } + + #categories { + width: 100%; + .ltr-text-align-left(); + overflow-x: scroll; + overflow-y: hidden; + -webkit-overflow-scrolling: touch; + } + } +} + +@media screen and (max-width: @phone) { + #search_header { + width: 100%; + margin: 0; + padding: 0.1rem 0 0 0; + column-gap: 0; + row-gap: 0; + grid-template-areas: + "logo search" + "categories categories"; + } + + .search_logo { + padding: 0; + } + + .search_box { + width: 98%; + display: flex; + margin: 0 auto; + } + + #q { + width: 100%; + flex: 1; + } + + .search_filters { + margin: 0; + } + + .category { + display: inline-block; + width: auto; + margin: 0; + + label { + padding: 1rem !important; + margin: 0 !important; + + svg { + display: none; + } + } + } + + #search_view:focus-within { + display: block; + background-color: var(--color-search-background); + position: absolute; + top: 0; + height: 100%; + width: 100%; + z-index: 10000; + + .search_box { + border-bottom: 1px solid var(--color-search-border); + width: 100%; + border-radius: 0; + box-shadow: none; + + #send_search { + .ltr-margin-right(0) !important; // Delete when send_search button is disabled on mobile. + } + + * { + border: none; + border-radius: 0; + box-shadow: none; + } + } + } + + #main_results #q:placeholder-shown ~ #send_search { + .ltr-margin-right(2.6rem); + transition: margin 0.1s; + } +} + +@media screen and (max-width: @ultra-small-phone) { + #search_header { + grid-template-areas: + "search search" + "categories categories"; + } + + #search_logo { + display: none; + } +} + +#categories { + .disable-user-select; + + &::-webkit-scrollbar { + width: 0; + height: 0; + } +} + +#categories_container { + position: relative; +} diff --git a/searx/static/themes/magi/src/less/stats.less b/searx/static/themes/magi/src/less/stats.less new file mode 100644 index 000000000..4658d4f2b --- /dev/null +++ b/searx/static/themes/magi/src/less/stats.less @@ -0,0 +1,106 @@ +// SPDX-License-Identifier: AGPL-3.0-or-later + +.engine-stats { + border-spacing: 0; + border-collapse: collapse; + + tr td, + tr th { + border-bottom: 1px solid var(--color-result-border); + padding: 0.25rem; + } + + table.engine-tooltip { + border-spacing: 0; + border-collapse: collapse; + + td, + th { + border: none; + } + } + + .engine-name { + width: 20rem; + } + + .engine-score { + width: 7rem; + text-align: right; + } + + .engine-reliability { + text-align: right; + } +} + +table.engine-error th.engine-error-type, +table.engine-error td.engine-error-type, +failed-test { + width: 10rem; +} + +.engine-errors { + margin-top: 3rem; + + table.engine-error { + max-width: 1280px; + margin: 1rem 0 3rem 0; + border: 1px solid var(--color-result-border); + .ltr-text-align-left(); + + tr th, + tr td { + padding: 0.5rem; + } + + & span.log_parameters { + border-right: 1px solid solid var(--color-result-border); + padding: 0 1rem 0 0; + margin: 0 0 0 0.5rem; + } + } +} + +.bar-chart-value { + width: 3em; + display: inline-block; + text-align: right; + padding-right: 0.5rem; +} + +.bar-chart-graph { + width: calc(100% - 5rem); + display: inline-block; +} + +.bar-chart-bar { + border: 3px solid #5bc0de; + margin: 1px 0; +} + +.bar-chart-serie1 { + border: 3px solid #5bc0de; + margin: 1px 0; + float: left; +} + +.bar-chart-serie2 { + border: 3px solid #deb15b; + margin: 1px 0; + float: left; +} + +.bar0 { + width: 0; + border: 0; +} + +.generate-bar(100); + +.generate-bar(@n, @i: 1) when (@i =< @n) { + .bar@{i} { + width: (@i * 100% / @n); + } + .generate-bar(@n, (@i + 1)); +} diff --git a/searx/static/themes/magi/src/less/style-center.less b/searx/static/themes/magi/src/less/style-center.less new file mode 100644 index 000000000..30c52cd5a --- /dev/null +++ b/searx/static/themes/magi/src/less/style-center.less @@ -0,0 +1,118 @@ +/* +--center-page-width overrides the less variable @results-width when the results are centered +see the CSS rules for #results in style.less ( grid-template-columns and gap). + +In this file, the --center-page-width values comes from the Oscar theme (Bootstrap 3). + +All rules starts with ".center-aligment-yes #main_results" to be enabled only +on the /search URL and when the "center alignment" preference is enabled. +*/ + +@media screen and (min-width: @phone) { + .center-aligment-yes #main_results { + --center-page-width: 48rem; + } +} + +@media screen and (min-width: 62rem) { + .center-aligment-yes #main_results { + --center-page-width: 60rem; + } +} + +@media screen and (min-width: @tablet) { + .center-aligment-yes #main_results { + --center-page-width: 73rem; + } +} + +@media screen and (min-width: @phone) and (max-width: @tablet) { + // any change must be reset in @media screen and (min-width: @tablet) { ... } + .center-aligment-yes #main_results { + #results { + grid-template-columns: 60% calc(40% - @results-gap); + margin-left: 0; + margin-right: 0; + } + + #urls { + .ltr-margin-left(3rem); + } + + #sidebar { + .ltr-margin-right(1rem); + } + + #backToTop { + .ltr-left(calc(60% + 1rem)); + } + } +} + +@media screen and (min-width: @tablet) { + .center-aligment-yes #main_results { + display: flex; + flex-direction: column; + align-items: center; + + #search { + width: 100%; + display: flex; + flex-direction: column; + align-items: center; + } + + #search_header { + grid-template-columns: calc(50% - 4.5rem - var(--center-page-width) / 2) 3rem var(--center-page-width); + grid-template-areas: "na logo search" "na spacer categories"; + column-gap: 1.2rem; // from search.less + width: 100%; + padding-left: 0; + padding-right: 0; + } + + .search_filters { + .ltr-margin-left(0.5rem); + width: var(--center-page-width); + } + + #results { + // from style.less (when screen width = @tablet, reset layout from tablet) + .ltr-margin-right(2rem); + .ltr-margin-left(@results-offset); + // + + &.only_template_images, + &.image-detail-open { + // * grid-template-columns and .ltr-margin-left are set in style.less + // * With .image-detail-open.only_template_images, the width is set in detail.less + // * #results is going to be centered because of the #main_results rules, + // align-self aligns the results on the left or right according to the language. + align-self: flex-start; + } + + &:not(.only_template_images):not(.image-detail-open) { + // the gap is set in style.less + .ltr-margin-left(1.5rem); + grid-template-columns: calc(var(--center-page-width) - @results-gap - @results-sidebar-width) @results-sidebar-width; + + #backToTop { + .ltr-left(calc(50% - @results-sidebar-width - @results-gap + 1rem + var(--center-page-width) / 2)); + } + } + + .result .content { + max-width: inherit; + } + } + + // from style.less (when screen width = @tablet, reset layout from tablet) + #urls { + .ltr-margin-left(0); + } + + #sidebar { + .ltr-margin-right(0); + } + } +} diff --git a/searx/static/themes/magi/src/less/style-ltr.less b/searx/static/themes/magi/src/less/style-ltr.less new file mode 100644 index 000000000..6f7218b02 --- /dev/null +++ b/searx/static/themes/magi/src/less/style-ltr.less @@ -0,0 +1,85 @@ +.ltr-left(@offset) { + left: @offset; +} + +.ltr-right(@offset) { + right: @offset; +} + +.ltr-margin-right(@offset) { + margin-right: @offset; +} + +.ltr-margin-left(@offset) { + margin-left: @offset; +} + +.ltr-border-right(@offset) { + border-right: @offset; +} + +.ltr-border-left(@offset) { + border-left: @offset; +} + +.ltr-padding-right(@offset) { + padding-right: @offset; +} + +.ltr-padding-left(@offset) { + padding-left: @offset; +} + +.ltr-float-left() { + float: left; +} + +.ltr-float-right() { + float: right; +} + +.ltr-text-align-right() { + text-align: right; +} + +.ltr-rounded-left-corners(@radius) { + border-radius: @radius 0 0 @radius; +} + +.ltr-rounded-top-left-corners(@radius) { + border-radius: @radius 0 0 0; +} + +.ltr-rounded-bottom-left-corners(@radius) { + border-radius: 0 0 0 @radius; +} + +.ltr-rounded-right-corners(@radius) { + border-radius: 0 @radius @radius 0; +} + +.ltr-rounded-top-right-corners(@radius) { + border-radius: 0 @radius 0 0; +} + +.ltr-rounded-bottom-right-corners(@radius) { + border-radius: 0 0 @radius 0; +} + +.ltr-text-align-left() { + text-align: left; +} + +.ltr-border-left-width(@offset) { + border-left-width: @offset; +} + +.ltr-border-right-width(@offset) { + border-right-width: @offset; +} + +.ltr-transform() { + transform: scale(1, 1); +} + +@import "style.less"; diff --git a/searx/static/themes/magi/src/less/style-rtl.less b/searx/static/themes/magi/src/less/style-rtl.less new file mode 100644 index 000000000..aa97e039c --- /dev/null +++ b/searx/static/themes/magi/src/less/style-rtl.less @@ -0,0 +1,155 @@ +.ltr-left(@offset) { + right: @offset; +} + +.ltr-right(@offset) { + left: @offset; +} + +.ltr-margin-right(@offset) { + margin-left: @offset; +} + +.ltr-margin-left(@offset) { + margin-right: @offset; +} + +.ltr-border-right(@offset) { + border-left: @offset; +} + +.ltr-border-left(@offset) { + border-right: @offset; +} + +.ltr-padding-right(@offset) { + padding-left: @offset; +} + +.ltr-padding-left(@offset) { + padding-right: @offset; +} + +.ltr-float-left() { + float: right; +} + +.ltr-float-right() { + float: left; +} + +.ltr-text-align-right() { + text-align: left; +} + +.ltr-rounded-left-corners(@radius) { + border-radius: 0 @radius @radius 0; +} + +.ltr-rounded-top-left-corners(@radius) { + border-radius: 0 @radius 0 0; +} + +.ltr-rounded-bottom-left-corners(@radius) { + border-radius: 0 0 @radius 0; +} + +.ltr-rounded-right-corners(@radius) { + border-radius: @radius 0 0 @radius; +} + +.ltr-rounded-top-right-corners(@radius) { + border-radius: @radius 0 0 0; +} + +.ltr-rounded-bottom-right-corners(@radius) { + border-radius: 0 0 0 @radius; +} + +.ltr-text-align-left() { + text-align: right; +} + +.ltr-border-left-width(@offset) { + border-right-width: @offset; +} + +.ltr-border-right-width(@offset) { + border-left-width: @offset; +} + +.ltr-transform() { + transform: scale(-1, 1); +} + +@import "style.less"; + +#q, +#sidebar .infobox dt bdi { + direction: rtl; +} + +// URL are displayed LTR but align on the right +#urls { + direction: initial; + text-align: right; + + .result .url_wrapper { + justify-content: end; + } +} + +// Image flexbox +#main_results div#results.only_template_images #urls { + direction: rtl; +} + +// Image detail +#results.image-detail-open article.result-images[data-vim-selected] .detail .result-images-labels p { + direction: rtl; + + &.result-url { + // Display URL using the LTR direction + direction: ltr; + + span { + // And put the label on the right + direction: rtl; + float: right; + } + } +} + +// select HTML element +@supports ((background-position-x: 100%) and ((appearance: none) or (-webkit-appearance: none) or (-moz-appearance: none))) { + select { + border-width: 0 0 0 2rem; + background-position-x: -2rem; + } +} + +// vim hotkey helps is not translated +#vim-hotkeys-help table { + direction: ltr; + text-align: left; +} + +// Logo on the right +#main_preferences h1, +#main_stats h1 { + background-position-x: 100%; +} + +// patch of stats.less +.bar-chart-serie1, +.bar-chart-serie2 { + float: right; +} + +.engine-stats .engine-name, +.engine-stats .engine-score, +.engine-stats .result-count, +.engine-stats .response-time, +.engine-stats .engine-reliability { + text-align: right; +} diff --git a/searx/static/themes/magi/src/less/style.less b/searx/static/themes/magi/src/less/style.less new file mode 100644 index 000000000..b4c3ce393 --- /dev/null +++ b/searx/static/themes/magi/src/less/style.less @@ -0,0 +1,1080 @@ +/* +* SearXNG, A privacy-respecting, hackable metasearch engine +* +* To convert "style.less" to "style.css" run: $make styles +*/ + +// stylelint-disable no-descending-specificity + +@import (inline) "../../node_modules/normalize.css/normalize.css"; +@import "definitions.less"; +@import "mixins.less"; +@import "code.less"; +@import "toolkit.less"; +@import "autocomplete.less"; +@import "detail.less"; +@import "animations.less"; +@import "embedded.less"; +@import "info.less"; +@import "new_issue.less"; +@import "stats.less"; +@import "result_templates.less"; + +// for index.html template +@import "index.less"; + +// for preferences.html template +@import "preferences.less"; + +// Search-Field +@import "search.less"; + +// to center the results +@import "style-center.less"; + +// ion-icon +.ion-icon { + display: inline-block; + vertical-align: bottom; + line-height: 1; + text-decoration: inherit; + .ltr-transform(); +} + +.ion-icon-small { + width: 1rem; + height: 1rem; + .ion-icon; +} + +.ion-icon-big { + width: 1.5rem; + height: 1.5rem; + .ion-icon; +} + +// Main LESS-Code +html { + font-family: sans-serif; + font-size: 0.9em; + .text-size-adjust; + + color: var(--color-base-font); + background-color: var(--color-base-background); + padding: 0; + margin: 0; +} + +body, +main { + padding: 0; + margin: 0; +} + +body { + display: flex; + flex-direction: column; + height: 100vh; + margin: 0; +} + +main { + width: 100%; + margin-bottom: 2rem; + flex: 1; +} + +.page_with_header { + margin: 2em auto; + width: 85em; +} + +footer { + clear: both; + min-height: 4rem; + padding: 1rem 0; + width: 100%; + text-align: center; + background-color: var(--color-footer-background); + border-top: 1px solid var(--color-footer-border); + overflow: hidden; + + p { + font-size: 0.9em; + } +} + +.page_with_header .logo { + height: 40px; + filter: var(--invert-logo); +} + +input[type="submit"], +#results button[type="submit"] { + padding: 0.7rem; + display: inline-block; + background: var(--color-btn-background); + color: var(--color-btn-font); + .rounded-corners; + + border: 0; + cursor: pointer; +} + +a { + text-decoration: none; + color: var(--color-url-font); + + &:visited { + color: var(--color-url-visited-font); + + .highlight { + color: var(--color-url-visited-font); + } + } +} + +article[data-vim-selected] { + background: var(--color-result-vim-selected); + .ltr-border-left(0.2rem solid var(--color-result-vim-arrow)); + .ltr-rounded-right-corners(10px); +} + +article.result-images[data-vim-selected] { + background: var(--color-result-vim-arrow); + border: none; + .rounded-corners; + + .image_thumbnail { + filter: opacity(60%); + } + + span.title, + span.source { + color: var(--color-result-image-span-font-selected); + } +} + +article[data-vim-selected].category-videos, +article[data-vim-selected].category-news, +article[data-vim-selected].category-map, +article[data-vim-selected].category-music, +article[data-vim-selected].category-files, +article[data-vim-selected].category-social { + border: 1px solid var(--color-result-vim-arrow); + .rounded-corners; +} + +.result { + margin: @results-margin 0; + padding: @result-padding; + .ltr-border-left(0.2rem solid transparent); + + h3 { + font-size: 1.2rem; + word-wrap: break-word; + margin: 0.4rem 0 0.4rem 0; + padding: 0; + + a { + color: var(--color-result-link-font); + font-weight: normal; + font-size: 1.1em; + + &:visited { + color: var(--color-result-link-visited-font); + } + + &:focus, + &:hover { + text-decoration: underline; + border: none; + outline: none; + } + } + } + + .cache_link, + .proxyfied_link { + font-size: 0.9em !important; + } + + .content, + .stat { + font-size: 0.9em; + margin: 0; + padding: 0; + max-width: 54em; + word-wrap: break-word; + line-height: 1.24; + + .highlight { + color: var(--color-result-description-highlight-font); + background: inherit; + font-weight: bold; + } + } + + .altlink a { + font-size: 0.9em; + margin: 0 10px 0 0; + .show-content-button; + } + + .codelines { + .highlight { + color: inherit; + background: inherit; + font-weight: normal; + } + } + + .url_wrapper { + display: flex; + font-size: 1rem; + color: var(--color-result-url-font); + flex-wrap: nowrap; + overflow: hidden; + flex-direction: row; + margin: 0; + padding: 0; + + .url_o1 { + white-space: nowrap; + flex-shrink: 1; + } + + .url_o1::after { + content: " "; + width: 1ch; + display: inline-block; + } + + .url_o2 { + overflow: hidden; + white-space: nowrap; + flex-basis: content; + flex-grow: 0; + flex-shrink: 1; + text-align: right; + + .url_i2 { + float: right; + } + } + } + + .published_date, + .result_length, + .result_author, + .result_shipping, + .result_source_country { + font-size: 0.8em; + color: var(--color-result-publishdate-font); + } + + .result_price { + font-size: 1.2em; + color: var(--color-result-description-highlight-font); + } + + img { + &.thumbnail { + .ltr-float-left(); + padding-top: 0.6rem; + .ltr-padding-right(1rem); + width: 20rem; + height: unset; // remove heigth value that was needed for lazy loading + } + + &.image { + .ltr-float-left(); + padding-top: 0.6rem; + .ltr-padding-right(1rem); + width: 7rem; + max-height: 7rem; + object-fit: scale-down; + object-position: right top; + } + } + + .break { + clear: both; + } +} + +.result-paper { + .attributes { + display: table; + border-spacing: 0.125rem; + + div { + display: table-row; + + span { + font-size: 0.9rem; + margin-top: 0.25rem; + display: table-cell; + + time { + font-size: 0.9rem; + } + } + + span:first-child { + color: var(--color-base-font); + min-width: 10rem; + } + + span:nth-child(2) { + color: var(--color-result-publishdate-font); + } + } + } + + .content { + margin-top: 0.25rem; + } + + .comments { + font-size: 0.9rem; + margin: 0.25rem 0 0 0; + padding: 0; + word-wrap: break-word; + line-height: 1.24; + font-style: italic; + } +} + +.template_group_images { + display: flex; + flex-wrap: wrap; +} + +.template_group_images::after { + flex-grow: 10; + content: ""; +} + +.category-videos, +.category-news, +.category-map, +.category-music, +.category-files, +.category-social { + border: 1px solid var(--color-result-border); + margin: 0 @results-tablet-offset 1rem @results-tablet-offset !important; + .rounded-corners; +} + +.category-social .image { + width: auto !important; + min-width: 48px; + min-height: 48px; + padding: 0 5px 25px 0 !important; +} + +.audio-control audio { + width: 100%; + padding: 10px 0 0 0; +} + +.embedded-content iframe { + width: 100%; + padding: 10px 0 0 0; +} + +.result-videos .content { + overflow: hidden; +} + +.result-videos .embedded-video iframe { + width: 100%; + aspect-ratio: 16 / 9; + padding: 10px 0 0 0; +} + +@supports not (aspect-ratio: 1 / 1) { + // support older browsers which do not have aspect-ratio + // https://caniuse.com/?search=aspect-ratio + .result-videos .embedded-video iframe { + height: calc(@results-width * 9 / 16); + } +} + +.engines { + .ltr-float-right(); + display: flex; + flex-wrap: wrap; + justify-content: flex-end; + color: var(--color-result-engines-font); + + span { + font-size: smaller; + margin-top: 0; + margin-bottom: 0; + .ltr-margin-right(0.5rem); + .ltr-margin-left(0); + } +} + +.small_font { + font-size: 0.8em; +} + +.highlight { + color: var(--color-result-link-font-highlight); + background: inherit; +} + +.empty_element { + font-style: italic; +} + +.result-images { + flex-grow: 1; + padding: 0.5rem 0.5rem 3rem 0.5rem; + margin: 0.25rem; + border: none !important; + height: @results-image-row-height; + + & > a { + position: relative; + } + + img { + margin: 0; + padding: 0; + border: none; + height: 100%; + width: 100%; + object-fit: cover; + vertical-align: bottom; + background: var(--color-result-image-background); + } + + span.title, + span.source { + display: block; + position: absolute; + + width: 100%; + font-size: 0.9rem; + color: var(--color-result-image-span-font); + padding: 0.5rem 0 0 0; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + } + + span.source { + padding: 1.8rem 0 0 0; + font-size: 0.7rem; + } +} + +.result-map { + img.image { + .ltr-float-right() !important; + height: 100px !important; + width: auto !important; + } + + table { + font-size: 0.9em; + width: auto; + border-collapse: separate; + border-spacing: 0 0.35rem; + + th { + font-weight: inherit; + width: 17rem; + vertical-align: top; + .ltr-text-align-left(); + } + + td { + vertical-align: top; + .ltr-text-align-left(); + } + } +} + +.hidden { + display: none !important; +} + +#results { + margin-top: 1rem; + .ltr-margin-right(2rem); + margin-bottom: 0; + .ltr-margin-left(@results-offset); + display: grid; + grid-template-columns: @results-width @results-sidebar-width; + grid-template-rows: min-content min-content 1fr min-content; + gap: 0 @results-gap; + grid-template-areas: + "corrections sidebar" + "answers sidebar" + "urls sidebar" + "pagination sidebar"; +} + +#results #sidebar *:first-child, +#results #urls *:first-child { + margin-top: 0; +} + +#urls { + padding: 0; + grid-area: urls; +} + +#suggestions { + .wrapper { + display: flex; + flex-flow: column; + justify-content: flex-end; + flex-wrap: wrap; + flex-direction: row; + + form { + display: inline-block; + flex: 1 1 50%; + } + } +} + +#suggestions, +#infoboxes { + input { + padding: 0; + margin: 3px; + font-size: 0.9em; + display: inline-block; + background: transparent; + color: var(--color-result-search-url-font); + cursor: pointer; + width: calc(100%); + text-overflow: ellipsis; + overflow: hidden; + text-align: left; + } + + input[type="submit"], + .infobox .url a { + color: var(--color-result-link-font); + text-decoration: none; + font-size: 0.9rem; + + &:hover { + text-decoration: underline; + } + } +} + +#corrections { + grid-area: corrections; + display: flex; + flex-flow: row wrap; + margin: 0 0 1em 0; + + h4, + input[type="submit"] { + display: inline-block; + padding: 0.5rem; + margin: 0.5rem; + } + + input[type="submit"] { + font-size: 0.8rem; + .rounded-corners-tiny; + } +} + +#suggestions .title, +#search_url .title, +#apis .title { + margin: 2em 0 0.5em 0; + color: var(--color-base-font); +} + +#answers { + grid-area: answers; + background: var(--color-answer-background); + padding: @result-padding; + margin: 1rem 0; + margin-top: 0; + color: var(--color-answer-font); + .rounded-corners; + + h4 { + display: none; + } + + span { + overflow-wrap: anywhere; + } +} + +#infoboxes { + form { + min-width: 210px; + } +} + +#sidebar { + grid-area: sidebar; + word-wrap: break-word; + color: var(--color-sidebar-font); + + .infobox { + margin: 10px 0 10px; + border: 1px solid var(--color-sidebar-border); + padding: 1rem; + font-size: 0.9em; + .rounded-corners; + + h2 { + margin: 0 0 0.5em 0; + } + + img { + max-width: 100%; + max-height: 12em; + display: block; + margin: 0 auto; + padding: 0; + } + + dt { + font-weight: bold; + } + + .attributes { + dl { + margin: 0.5em 0; + } + + dt { + display: inline; + margin-top: 0.5em; + .ltr-margin-right(0.25em); + margin-bottom: 0.5em; + .ltr-margin-left(0); + padding: 0; + } + + dd { + display: inline; + margin: 0.5em 0; + padding: 0; + } + } + + input { + font-size: 1em; + } + + br { + clear: both; + } + + .attributes, + .urls { + clear: both; + } + } +} + +#search_url { + margin-top: 8px; + + div.selectable_url { + pre { + width: 200em; + } + } +} + +#links_on_top { + position: absolute; + .ltr-right(1.8rem); + .ltr-text-align-right(); + top: 2.2rem; + padding: 0; + border: 0; + display: flex; + align-items: center; + font-size: 1em; + color: var(--color-search-font); + + a { + display: flex; + align-items: center; + margin-left: 1em; + + svg { + font-size: 1.2em; + .ltr-margin-right(0.125em); + } + } + + a, + a:link *, + a:hover *, + a:visited *, + a:active * { + color: var(--color-search-font); + } +} + +#pagination { + grid-area: pagination; + + br { + clear: both; + } +} + +.numbered_pagination { + display: flex; + flex-direction: row; + justify-content: center; + align-items: center; + overflow: hidden; +} + +.page_number { + background: transparent !important; + color: var(--color-result-link-font) !important; + text-decoration: underline; +} + +.page_number_current { + background: transparent; + color: var(--color-result-link-visited-font); + border: none; +} + +#apis { + margin-top: 8px; + clear: both; +} + +#backToTop { + border: 1px solid var(--color-backtotop-border); + margin: 0; + padding: 0; + font-size: 1em; + background: var(--color-backtotop-background); + position: fixed; + bottom: 8rem; + .ltr-left(@results-width + @results-offset + (0.5 * @results-gap - 1.2em)); + transition: opacity 0.5s; + opacity: 0; + .rounded-corners; + + a { + display: block; + margin: 0; + padding: 0.7em; + } + + a, + a:visited, + a:hover, + a:active { + color: var(--color-backtotop-font); + } +} + +#results.scrolling #backToTop { + opacity: 1; +} + +/* + tablet layout +*/ + +.results-tablet() { + #links_on_top { + span { + display: none; + } + } + + .page_with_header { + margin: 2rem 0.5rem; + width: auto; + } + + #infoboxes { + position: inherit; + max-width: inherit; + + .infobox { + clear: both; + + img { + .ltr-float-left(); + max-width: 10em; + margin-top: 0.5em; + .ltr-margin-right(0.5em); + margin-bottom: 0.5em; + .ltr-margin-left(0); + } + } + } + + #sidebar { + margin: 0 @results-tablet-offset @results-margin @results-tablet-offset; + padding: 0; + float: none; + border: none; + width: auto; + + input { + border: 0; + } + } + + #apis { + display: none; + } + + #search_url { + display: none; + } + + .result { + .thumbnail { + max-width: 98%; + } + + .url { + span.url { + display: block; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; + width: 100%; + } + } + + .engines { + .ltr-float-right(); + display: flex; + flex-wrap: wrap; + justify-content: flex-end; + padding: 0 0 3px 0; + } + } + + .result-images { + border-bottom: none !important; + } + + .image_result { + max-width: 98%; + + img { + max-width: 98%; + } + } + + #backToTop { + display: none; + } + + #pagination { + margin: 2rem 0 0 0 !important; + } + + #main_results div#results { + margin: 1rem auto 0 auto; + justify-content: center; + display: grid; + grid-template-columns: @results-width; + grid-template-rows: min-content min-content min-content 1fr min-content min-content; + gap: 0; + grid-template-areas: + "corrections" + "answers" + "sidebar" + "urls" + "pagination"; + } +} + +@media screen and (max-width: calc(@tablet - 0.5px)) { + #links_on_top { + span { + display: none; + } + } +} + +@media screen and (max-width: 52rem) { + body.results_endpoint { + #links_on_top { + .link_on_top_about, + .link_on_top_donate { + display: none; + } + } + } +} + +@media screen and (min-width: @phone) and (max-width: @tablet) { + // when .center-aligment-yes, see style-center.less + // the media query includes "min-width: @phone" + // because the phone layout includes the tablet layout unconditionally. + .center-aligment-no { + .results-tablet(); + } +} + +/* Misc */ + +#main_results div#results.only_template_images { + margin: 1rem @results-tablet-offset 0 @results-tablet-offset; + display: grid; + grid-template-columns: 100%; + grid-template-rows: min-content min-content min-content 1fr min-content; + gap: 0; + grid-template-areas: + "corrections" + "answers" + "sidebar" + "urls" + "pagination"; + + #sidebar { + display: none; + } + + #urls { + margin: 0; + display: flex; + flex-wrap: wrap; + } + + #urls::after { + flex-grow: 10; + content: ""; + } + + #backToTop { + .ltr-left(auto); + .ltr-right(1rem); + } + + #pagination { + .ltr-margin-right(4rem); + } +} + +/* + phone layout +*/ + +@media screen and (max-width: @phone) { + // based on the tablet layout + .results-tablet(); + + html { + background-color: var(--color-base-background-mobile); + } + + #main_results div#results { + grid-template-columns: 100%; + margin: 1rem 0 0 0; + } + + #links_on_top { + top: 0.8rem; + .ltr-right(0.7rem); + } + + #main_index #links_on_top { + top: 0.5rem; + .ltr-right(0.5rem); + } + + #results { + margin: 0; + padding: 0; + } + + #pagination { + margin: 2rem 1rem 0 1rem !important; + } + + article[data-vim-selected] { + border: 1px solid var(--color-result-vim-arrow); + .rounded-corners; + } + + .result { + background: var(--color-result-background); + margin: 1rem 0; + } + + .result-images { + margin: 0; + height: @results-image-row-height-phone; + background: var(--color-base-background-mobile); + } + + .infobox { + border: none !important; + background-color: var(--color-sidebar-background); + } + + .numbered_pagination { + display: none; + } + + .result-paper { + .attributes { + display: block; + + div { + display: block; + + span { + display: inline; + } + + span:first-child { + font-weight: bold; + } + + span:nth-child(2) { + .ltr-margin-left(0.5rem); + } + } + } + } +} + +/* + small-phone layout +*/ + +@media screen and (max-width: @small-phone) { + .result-videos { + img.thumbnail { + float: none !important; + } + + .content { + overflow: inherit; + } + } +} + +pre code { + white-space: pre-wrap; +} diff --git a/searx/static/themes/magi/src/less/toolkit.less b/searx/static/themes/magi/src/less/toolkit.less new file mode 100644 index 000000000..93fa5e04c --- /dev/null +++ b/searx/static/themes/magi/src/less/toolkit.less @@ -0,0 +1,639 @@ +// other solution : http://stackoverflow.com/questions/1577598/how-to-hide-parts-of-html-when-javascript-is-disabled/13857783#13857783 + +// stylelint-disable no-descending-specificity + +html.no-js .hide_if_nojs { + display: none; +} + +html.js .show_if_nojs { + display: none; +} + +.center { + text-align: center; +} + +.right { + float: right; +} + +.left { + float: left; +} + +.invisible { + display: none !important; +} + +.list-unstyled { + list-style-type: none; + + li { + margin-top: 4px; + margin-bottom: 4px; + } +} + +.danger { + background-color: var(--color-error-background); +} + +.warning { + background: var(--color-warning-background); +} + +.success { + background: var(--color-success-background); +} + +.badge { + display: inline-block; + color: var(--color-toolkit-badge-font); + background-color: var(--color-toolkit-badge-background); + text-align: center; + white-space: nowrap; + vertical-align: baseline; + min-width: 10px; + padding: 1px 5px; + border-radius: 5px; +} + +// kbd +kbd { + padding: 2px 4px; + margin: 1px; + font-size: 90%; + color: var(--color-toolkit-kbd-font); + background: var(--color-toolkit-kbd-background); +} + +// table +table { + width: 100%; + + &.striped { + tr { + border-bottom: 1px solid var(--color-settings-tr-hover); + } + } +} + +th { + padding: 0.4em; +} + +td { + padding: 0 4px; +} + +tr { + &:hover { + background: var(--color-settings-tr-hover) !important; + } +} + +// pre +.pre() { + display: block; + font-size: 0.8em; + word-break: break-all; + margin: 0.1em; + user-select: all; +} + +div.selectable_url { + display: block; + border: 1px solid var(--color-result-search-url-border); + padding: 4px; + color: var(--color-result-search-url-font); + margin: 0.1em; + overflow: hidden; + height: 1.2em; + line-height: 1.2em; + .rounded-corners-tiny; + + pre { + .pre(); + } +} + +// dialog +.dialog() { + position: relative; + display: flex; + padding: 1rem; + margin: 0 0 1em 0; + border: 1px solid var(--color-toolkit-dialog-border); + .ltr-text-align-left(); + .rounded-corners; + + .close { + .ltr-float-right(); + position: relative; + top: -3px; + color: inherit; + font-size: 1.5em; + } + + ul, + ol, + p { + margin: 1px 0 0 0; + } + + table { + width: auto; + } + + tr { + vertical-align: text-top; + + &:hover { + background: transparent !important; + } + } + + td { + padding: 0 1em 0 0; + padding-top: 0; + .ltr-padding-right(1rem); + padding-bottom: 0; + .ltr-padding-left(0); + } + + h4 { + margin-top: 0.3em; + margin-bottom: 0.3em; + } +} + +.dialog-error { + .dialog(); + + color: var(--color-error); + background: var(--color-error-background); + border-color: var(--color-error); +} + +.dialog-warning { + .dialog(); + + color: var(--color-warning); + background: var(--color-warning-background); + border-color: var(--color-warning); +} + +.dialog-modal { + .dialog(); + + display: block; + background: var(--color-toolkit-dialog-background); + position: fixed; + top: 50%; + left: 50%; + margin: 0 auto; + transform: translate(-50%, -50%); + z-index: 10000000; + + h3 { + margin-top: 0; + } +} + +// btn-collapse +.btn-collapse { + cursor: pointer; +} + +// +.scrollx { + overflow-x: auto; + overflow-y: hidden; + display: block; + padding: 0; + margin: 0; + border: none; +} + +/* -- tabs -- */ +.tabs .tabs > label { + font-size: 90%; +} + +ul.tabs { + border-bottom: 1px solid var(--color-toolkit-tabs-section-border); + list-style: none; + padding-left: 0; + + li { + display: flex; + } +} + +.tabs { + display: flex; + flex-wrap: wrap; + width: 100%; + min-width: 100%; + + & > * { + order: 2; + } + + & > input[type=radio] { + display: none; + } + + & > label, + & > li > a { + order: 1; + padding: 0.7em; + margin: 0 0.7em; + letter-spacing: 0.5px; + text-transform: uppercase; + border: solid var(--color-toolkit-tabs-label-border); + border-width: 0 0 2px 0; + color: unset; + + .disable-user-select(); + + cursor: pointer; + + &.active { + border-bottom: 2px solid var(--color-categories-item-border-selected); + background: var(--color-categories-item-selected); + color: var(--color-categories-item-selected-font); + } + } + + & > label:hover, + & > li > a:hover { + border-bottom: 2px solid var(--color-categories-item-border-selected); + } + + & > section { + min-width: 100%; + padding: 0.7rem 0; + box-sizing: border-box; + border-top: 1px solid var(--color-toolkit-tabs-section-border); + display: none; + } + + // default selection + & > label:last-of-type { + border-bottom: 2px solid var(--color-categories-item-border-selected); + background: var(--color-categories-item-selected); + color: var(--color-categories-item-selected-font); + letter-spacing: -0.1px; + } + + & > section:last-of-type { + display: block; + } +} + +html body .tabs > input:checked { + ~ section { + display: none; + } + + ~ label { + position: inherited; + background: inherit; + border-bottom: 2px solid transparent; + font-weight: normal; + color: inherit; + + &:hover { + border-bottom: 2px solid var(--color-categories-item-border-selected); + } + } + + + label { + border-bottom: 2px solid var(--color-categories-item-border-selected); + background: var(--color-categories-item-selected); + color: var(--color-categories-item-selected-font); + } + + + label + section { + display: block; + } +} + +/* -- select -- */ +select { + height: 2.4rem; + margin-top: 0; + .ltr-margin-right(1rem); + margin-bottom: 0; + .ltr-margin-left(0); + padding: 0.2rem !important; + color: var(--color-search-font); + font-size: 0.9rem; + z-index: 2; + + &:hover, + &:focus { + cursor: pointer; + } +} + +@supports ((background-position-x: 100%) and ((appearance: none) or (-webkit-appearance: none) or (-moz-appearance: none))) { + select { + appearance: none; + -webkit-appearance: none; + -moz-appearance: none; + border-width: 0 2rem 0 0; + border-color: transparent; + background: data-uri('image/svg+xml;charset=UTF-8', @select-light-svg-path) no-repeat; + background-position-x: calc(100% + 2rem); + background-size: 2rem; + background-origin: content-box; + background-color: var(--color-toolkit-select-background); + outline: medium none; + text-overflow: ellipsis; + .rounded-corners-tiny; + + &:hover, + &:focus { + background-color: var(--color-toolkit-select-background-hover); + } + + option { + background-color: var(--color-base-background); + } + } + + @media (prefers-color-scheme: dark) { + html.theme-auto select, + html.theme-dark select { + background-image: data-uri('image/svg+xml;charset=UTF-8', @select-dark-svg-path); + } + } + + html.theme-dark select { + background-image: data-uri('image/svg+xml;charset=UTF-8', @select-dark-svg-path); + } +} + +/* -- checkbox-onoff -- */ +input.checkbox-onoff[type="checkbox"] { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + cursor: pointer; + display: inline-block; + width: 2.5em; + height: 0.7em; + box-shadow: none !important; + margin: 0 16px; + border-radius: 10px; + position: relative; + + /* focus & hover */ + &:focus, + &:hover { + outline: none; + } + + &:focus::after { + content: ""; + position: absolute; + width: 3.5em; + height: 1.65em; + border: 1px solid var(--color-btn-background); + border-radius: 12px; + box-shadow: var(--color-btn-background) 0 0 3px; + z-index: 10000; + top: -0.55em; + left: -0.6em; + } + + &::before { + position: absolute; + top: -0.5em; + display: flex; + justify-content: center; + align-items: center; + font-size: 0.75em; + width: 1.875em; + height: 1.875em; + border-radius: 50%; + } +} + +/* check mark +reversed-checkbox displays unchecked checkedboxes as checked, and vice versa. +see https://github.com/searxng/searxng/blob/3408d061aab9abc6168fec9bbc6deab71b236dac/searx/templates/simple/preferences.html#L313 +*/ +input.checkbox-onoff[type="checkbox"], +.reversed-checkbox input.checkbox-onoff[type="checkbox"]:checked { + background: var(--color-toolkit-checkbox-onoff-off-background); + + &::before { + left: -0.5em; + content: "\2715"; + color: var(--color-toolkit-checkbox-onoff-off-mark-color); + background: var(--color-toolkit-checkbox-onoff-off-mark-background); + } +} + +input.checkbox-onoff[type="checkbox"]:checked, +.reversed-checkbox input.checkbox-onoff[type="checkbox"] { + background: var(--color-toolkit-checkbox-onoff-on-background); + + &::before { + left: calc(100% - 1.5em); + content: "\2713"; + color: var(--color-toolkit-checkbox-onoff-on-mark-color); + background: var(--color-toolkit-checkbox-onoff-on-mark-background); + } +} + +/* -- checkbox -- */ +@supports (transform: rotate(-45deg)) { + input[type=checkbox]:not(.checkbox-onoff) { + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + + width: 20px; + height: 20px; + cursor: pointer; + position: relative; + top: 0; + left: 0; + border: 2px solid var(--color-toolkit-checkbox-input-border); + .rounded-corners(0.3em); + + &::after { + content: ''; + width: 9px; + height: 5px; + position: absolute; + top: 3px; + left: 2px; + border: 3px solid var(--color-toolkit-checkbox-label-border); + border-top: none; + border-right: none; + background: transparent; + opacity: 0; + transform: rotate(-45deg); + } + + &:checked::after { + border-color: var(--color-toolkit-checkbox-input-border); + opacity: 1; + } + } + + // disabled : can't be focused, show only the check mark + input[type=checkbox][disabled]:not(.checkbox-onoff) { + border: inherit; + background-color: transparent !important; + cursor: inherit; + } + + // if not checked and possible to checked then display a "light" check mark on hover + input.checkbox[type=checkbox]:not(:checked):not([disabled]):not(.checkbox-onoff):hover::after { + opacity: 0.5; + } +} + +@media screen and (max-width: @phone) { + .tabs > label { + width: 100%; + } +} + +/* -- loader -- */ +.loader, +.loader::after { + border-radius: 50%; + width: 2em; + height: 2em; +} + +.loader { + margin: 1em auto; + font-size: 10px; + position: relative; + text-indent: -9999em; + border-top: 0.5em solid var(--color-toolkit-loader-border); + border-right: 0.5em solid var(--color-toolkit-loader-border); + border-bottom: 0.5em solid var(--color-toolkit-loader-border); + border-left: 0.5em solid var(--color-toolkit-loader-borderleft); + -webkit-transform: translateZ(0); + -ms-transform: translateZ(0); + transform: translateZ(0); + -webkit-animation: load8 1.2s infinite linear; + animation: load8 1.2s infinite linear; +} + +@-webkit-keyframes load8 { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } +} + +@keyframes load8 { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } +} + +/* -- engine-tooltip -- */ +.engine-tooltip { + display: none; + position: absolute; + padding: 0.5rem 1rem; + margin: 0 0 0 2rem; + border: 1px solid var(--color-toolkit-engine-tooltip-border); + background: var(--color-toolkit-engine-tooltip-background); + font-size: 14px; + font-weight: normal; + z-index: 1000000; + text-align: left; + .rounded-corners; +} + +th:hover .engine-tooltip, +td:hover .engine-tooltip, +.engine-tooltip:hover { + display: inline-block; +} + +/* -- stacked bar chart -- */ +.stacked-bar-chart { + margin: 0; + padding: 0 0.125rem 0 4rem; + width: 100%; + width: -moz-available; + width: -webkit-fill-available; + width: fill; + flex-direction: row; + flex-wrap: nowrap; + align-items: center; + display: inline-flex; +} + +.stacked-bar-chart-value { + width: 3rem; + display: inline-block; + position: absolute; + padding: 0 0.5rem; + text-align: right; +} + +.stacked-bar-chart-base { + display: flex; + flex-shrink: 0; + flex-grow: 0; + flex-basis: unset; +} + +.stacked-bar-chart-median { + .stacked-bar-chart-base(); + + background: var(--color-base-font); + border: 1px solid rgba(var(--color-base-font-rgb), 0.9); + padding: 0.3rem 0; +} + +.stacked-bar-chart-rate80 { + .stacked-bar-chart-base(); + + background: transparent; + border: 1px solid rgba(var(--color-base-font-rgb), 0.3); + padding: 0.3rem 0; +} + +.stacked-bar-chart-rate95 { + .stacked-bar-chart-base(); + + background: transparent; + border-bottom: 1px dotted rgba(var(--color-base-font-rgb), 0.5); + padding: 0; +} + +.stacked-bar-chart-rate100 { + .stacked-bar-chart-base(); + + background: transparent; + border-left: 1px solid rgba(var(--color-base-font-rgb), 0.9); + padding: 0.4rem 0; + width: 1px; +} diff --git a/searx/static/themes/magi/src/less/toolkit_loader.less b/searx/static/themes/magi/src/less/toolkit_loader.less new file mode 100644 index 000000000..d426035a3 --- /dev/null +++ b/searx/static/themes/magi/src/less/toolkit_loader.less @@ -0,0 +1,46 @@ +.loader, +.loader::after { + border-radius: 50%; + width: 10em; + height: 10em; +} + +.loader { + margin: 60px auto; + font-size: 10px; + position: relative; + text-indent: -9999em; + border-top: 1.1em solid rgba(255, 255, 255, 0.2); + border-right: 1.1em solid rgba(255, 255, 255, 0.2); + border-bottom: 1.1em solid rgba(255, 255, 255, 0.2); + border-left: 1.1em solid #fff; + -webkit-transform: translateZ(0); + -ms-transform: translateZ(0); + transform: translateZ(0); + -webkit-animation: load8 1.1s infinite linear; + animation: load8 1.1s infinite linear; +} + +@-webkit-keyframes load8 { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } +} + +@keyframes load8 { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + + 100% { + -webkit-transform: rotate(360deg); + transform: rotate(360deg); + } +} diff --git a/searx/static/themes/magi/src/svg/information-circle-outline.svg b/searx/static/themes/magi/src/svg/information-circle-outline.svg new file mode 100644 index 000000000..b7c300094 --- /dev/null +++ b/searx/static/themes/magi/src/svg/information-circle-outline.svg @@ -0,0 +1,6 @@ + + Information Circle + + + + \ No newline at end of file diff --git a/searx/static/themes/magi/src/svg/select-dark.svg b/searx/static/themes/magi/src/svg/select-dark.svg new file mode 100644 index 000000000..97335cea5 --- /dev/null +++ b/searx/static/themes/magi/src/svg/select-dark.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/searx/static/themes/magi/src/svg/select-light.svg b/searx/static/themes/magi/src/svg/select-light.svg new file mode 100644 index 000000000..3b707f018 --- /dev/null +++ b/searx/static/themes/magi/src/svg/select-light.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/searx/static/themes/magi/svg4favicon.svgo.js b/searx/static/themes/magi/svg4favicon.svgo.js new file mode 100644 index 000000000..b9dd0da8e --- /dev/null +++ b/searx/static/themes/magi/svg4favicon.svgo.js @@ -0,0 +1,16 @@ +/** + * @license + * SPDX-License-Identifier: AGPL-3.0-or-later + * + * svgo config: Optimize SVG for WEB usage + */ + +module.exports = { + plugins: [ + { + name: 'preset-default', + }, + // make diff friendly + 'sortAttrs', + ], +}; diff --git a/searx/static/themes/magi/svg4web.svgo.js b/searx/static/themes/magi/svg4web.svgo.js new file mode 100644 index 000000000..83f74cde1 --- /dev/null +++ b/searx/static/themes/magi/svg4web.svgo.js @@ -0,0 +1,19 @@ +/** + * @license + * SPDX-License-Identifier: AGPL-3.0-or-later + * + * svgo config: Optimize SVG for WEB usage + */ + +module.exports = { + plugins: [ + { + name: 'preset-default', + }, + // make diff friendly + 'sortAttrs', + // Optimize SVG for WEB usage + 'convertStyleToAttrs', + 'removeXMLNS' + ], +}; diff --git a/searx/templates/magi/base.html b/searx/templates/magi/base.html index 0efc5a99c..1600783ed 100644 --- a/searx/templates/magi/base.html +++ b/searx/templates/magi/base.html @@ -19,7 +19,7 @@ {% endif %} {% block styles %}{% endblock %} - + {% block head %} @@ -78,7 +78,7 @@

    - + diff --git a/searx/templates/simple/base.html b/searx/templates/simple/base.html index 0efc5a99c..e27865427 100644 --- a/searx/templates/simple/base.html +++ b/searx/templates/simple/base.html @@ -19,7 +19,7 @@ {% endif %} {% block styles %}{% endblock %} - + {% block head %}