diff --git a/CNAME b/CNAME new file mode 100644 index 0000000..60fcde6 --- /dev/null +++ b/CNAME @@ -0,0 +1 @@ +duckdblabs.com \ No newline at end of file diff --git a/Gemfile b/Gemfile new file mode 100644 index 0000000..81a9e94 --- /dev/null +++ b/Gemfile @@ -0,0 +1,9 @@ +source "https://rubygems.org" + +gem "jekyll", "3.9.5" +gem "jekyll-git-hash" +gem "liquid", "4.0.4" +gem "minima", "2.5.1" +gem "kramdown-parser-gfm", "1.1.0" +gem "kramdown", "2.4.0" +gem "webrick", "~> 1.8" diff --git a/Gemfile.lock b/Gemfile.lock new file mode 100644 index 0000000..0a84265 --- /dev/null +++ b/Gemfile.lock @@ -0,0 +1,102 @@ +GEM + remote: https://rubygems.org/ + specs: + addressable (2.8.7) + public_suffix (>= 2.0.2, < 7.0) + colorator (1.1.0) + concurrent-ruby (1.3.5) + em-websocket (0.5.3) + eventmachine (>= 0.12.9) + http_parser.rb (~> 0) + eventmachine (1.2.7) + ffi (1.17.1) + ffi (1.17.1-aarch64-linux-gnu) + ffi (1.17.1-aarch64-linux-musl) + ffi (1.17.1-arm-linux-gnu) + ffi (1.17.1-arm-linux-musl) + ffi (1.17.1-arm64-darwin) + ffi (1.17.1-x86-linux-gnu) + ffi (1.17.1-x86-linux-musl) + ffi (1.17.1-x86_64-darwin) + ffi (1.17.1-x86_64-linux-gnu) + ffi (1.17.1-x86_64-linux-musl) + forwardable-extended (2.6.0) + http_parser.rb (0.8.0) + i18n (1.14.7) + concurrent-ruby (~> 1.0) + jekyll (3.9.5) + addressable (~> 2.4) + colorator (~> 1.0) + em-websocket (~> 0.5) + i18n (>= 0.7, < 2) + jekyll-sass-converter (~> 1.0) + jekyll-watch (~> 2.0) + kramdown (>= 1.17, < 3) + liquid (~> 4.0) + mercenary (~> 0.3.3) + pathutil (~> 0.9) + rouge (>= 1.7, < 4) + safe_yaml (~> 1.0) + jekyll-feed (0.17.0) + jekyll (>= 3.7, < 5.0) + jekyll-git-hash (0.1.1) + jekyll (>= 3.9.2) + jekyll-sass-converter (1.5.2) + sass (~> 3.4) + jekyll-seo-tag (2.8.0) + jekyll (>= 3.8, < 5.0) + jekyll-watch (2.2.1) + listen (~> 3.0) + kramdown (2.4.0) + rexml + kramdown-parser-gfm (1.1.0) + kramdown (~> 2.0) + liquid (4.0.4) + listen (3.9.0) + rb-fsevent (~> 0.10, >= 0.10.3) + rb-inotify (~> 0.9, >= 0.9.10) + mercenary (0.3.6) + minima (2.5.1) + jekyll (>= 3.5, < 5.0) + jekyll-feed (~> 0.9) + jekyll-seo-tag (~> 2.1) + pathutil (0.16.2) + forwardable-extended (~> 2.6) + public_suffix (6.0.1) + rb-fsevent (0.11.2) + rb-inotify (0.11.1) + ffi (~> 1.0) + rexml (3.4.1) + rouge (3.30.0) + safe_yaml (1.0.5) + sass (3.7.4) + sass-listen (~> 4.0.0) + sass-listen (4.0.0) + rb-fsevent (~> 0.9, >= 0.9.4) + rb-inotify (~> 0.9, >= 0.9.7) + webrick (1.9.1) + +PLATFORMS + aarch64-linux-gnu + aarch64-linux-musl + arm-linux-gnu + arm-linux-musl + arm64-darwin + ruby + x86-linux-gnu + x86-linux-musl + x86_64-darwin + x86_64-linux-gnu + x86_64-linux-musl + +DEPENDENCIES + jekyll (= 3.9.5) + jekyll-git-hash + kramdown (= 2.4.0) + kramdown-parser-gfm (= 1.1.0) + liquid (= 4.0.4) + minima (= 2.5.1) + webrick (~> 1.8) + +BUNDLED WITH + 2.6.5 diff --git a/README.md b/README.md new file mode 100644 index 0000000..78ebfe6 --- /dev/null +++ b/README.md @@ -0,0 +1,2 @@ +# duckdblabs.com + diff --git a/assets/main.css b/assets/main.css new file mode 100644 index 0000000..819e0eb --- /dev/null +++ b/assets/main.css @@ -0,0 +1,505 @@ +/** + * Reset some basic elements + */ +body, h1, h2, h3, h4, h5, h6, +p, blockquote, pre, hr, +dl, dd, ol, ul, figure { + margin: 0; + padding: 0; } + +/** + * Basic styling + */ +body { + font: 400 16px/1.5 -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; + color: #111; + background-color: #fdfdfd; + -webkit-text-size-adjust: 100%; + -webkit-font-feature-settings: "kern" 1; + -moz-font-feature-settings: "kern" 1; + -o-font-feature-settings: "kern" 1; + font-feature-settings: "kern" 1; + font-kerning: normal; + display: flex; + min-height: 100vh; + flex-direction: column; } + +/** + * Set `margin-bottom` to maintain vertical rhythm + */ +h1, h2, h3, h4, h5, h6, +p, blockquote, pre, +ul, ol, dl, figure, +.highlight { + margin-bottom: 15px; } + +/** + * `main` element + */ +main { + display: block; + /* Default value of `display` of `main` element is 'inline' in IE 11. */ } + +/** + * Images + */ +img { + max-width: 100%; + vertical-align: middle; } + +/** + * Figures + */ +figure > img { + display: block; } + +figcaption { + font-size: 14px; } + +/** + * Lists + */ +ul, ol { + margin-left: 30px; } + +li > ul, +li > ol { + margin-bottom: 0; } + +/** + * Headings + */ +h1, h2, h3, h4, h5, h6 { + font-weight: 400; } + +/** + * Links + */ +a { + color: #2a7ae2; + text-decoration: none; } + a:visited { + color: #1756a9; } + a:hover { + color: #111; + text-decoration: underline; } + .social-media-list a:hover { + text-decoration: none; } + .social-media-list a:hover .username { + text-decoration: underline; } + +/** + * Blockquotes + */ +blockquote { + color: #828282; + border-left: 4px solid #e8e8e8; + padding-left: 15px; + font-size: 18px; + letter-spacing: -1px; + font-style: italic; } + blockquote > :last-child { + margin-bottom: 0; } + +/** + * Code formatting + */ +pre, +code { + font-size: 15px; + border: 1px solid #e8e8e8; + border-radius: 3px; + background-color: #eef; } + +code { + padding: 1px 5px; } + +pre { + padding: 8px 12px; + overflow-x: auto; } + pre > code { + border: 0; + padding-right: 0; + padding-left: 0; } + +/** + * Wrapper + */ +.wrapper { + max-width: -webkit-calc(800px - (30px * 2)); + max-width: calc(800px - (30px * 2)); + margin-right: auto; + margin-left: auto; + padding-right: 30px; + padding-left: 30px; } + @media screen and (max-width: 800px) { + .wrapper { + max-width: -webkit-calc(800px - (30px)); + max-width: calc(800px - (30px)); + padding-right: 15px; + padding-left: 15px; } } + +/** + * Clearfix + */ +.wrapper:after, .footer-col-wrapper:after { + content: ""; + display: table; + clear: both; } + +/** + * Icons + */ +.svg-icon { + width: 16px; + height: 16px; + display: inline-block; + fill: #828282; + padding-right: 5px; + vertical-align: text-top; } + +.social-media-list li + li { + padding-top: 5px; } + +/** + * Tables + */ +table { + margin-bottom: 30px; + width: 100%; + text-align: left; + color: #3f3f3f; + border-collapse: collapse; + border: 1px solid #e8e8e8; } + table tr:nth-child(even) { + background-color: #f7f7f7; } + table th, table td { + padding: 10px 15px; } + table th { + background-color: #f0f0f0; + border: 1px solid #dedede; + border-bottom-color: #c9c9c9; } + table td { + border: 1px solid #e8e8e8; } + +/** + * Site header + */ +.site-header { + border-top: 5px solid #424242; + border-bottom: 1px solid #e8e8e8; + min-height: 55.95px; + position: relative; } + +.site-title { + font-size: 26px; + font-weight: 300; + line-height: 54px; + letter-spacing: -1px; + margin-bottom: 0; + float: left; } + .site-title, .site-title:visited { + color: #424242; } + +.site-nav { + float: right; + line-height: 54px; } + .site-nav .nav-trigger { + display: none; } + .site-nav .menu-icon { + display: none; } + .site-nav .page-link { + color: #111; + line-height: 1.5; } + .site-nav .page-link:not(:last-child) { + margin-right: 20px; } + @media screen and (max-width: 600px) { + .site-nav { + position: absolute; + top: 9px; + right: 15px; + background-color: #fdfdfd; + border: 1px solid #e8e8e8; + border-radius: 5px; + text-align: right; } + .site-nav label[for="nav-trigger"] { + display: block; + float: right; + width: 36px; + height: 36px; + z-index: 2; + cursor: pointer; } + .site-nav .menu-icon { + display: block; + float: right; + width: 36px; + height: 26px; + line-height: 0; + padding-top: 10px; + text-align: center; } + .site-nav .menu-icon > svg { + fill: #424242; } + .site-nav input ~ .trigger { + clear: both; + display: none; } + .site-nav input:checked ~ .trigger { + display: block; + padding-bottom: 5px; } + .site-nav .page-link { + display: block; + padding: 5px 10px; + margin-left: 20px; } + .site-nav .page-link:not(:last-child) { + margin-right: 0; } } + +/** + * Site footer + */ +.site-footer { + border-top: 1px solid #e8e8e8; + padding: 30px 0; } + +.footer-heading { + font-size: 18px; + margin-bottom: 15px; } + +.contact-list, +.social-media-list { + list-style: none; + margin-left: 0; } + +.footer-col-wrapper { + font-size: 15px; + color: #828282; + margin-left: -15px; } + +.footer-col { + float: left; + margin-bottom: 15px; + padding-left: 15px; } + +.footer-col-1 { + width: -webkit-calc(35% - (30px / 2)); + width: calc(35% - (30px / 2)); } + +.footer-col-2 { + width: -webkit-calc(20% - (30px / 2)); + width: calc(20% - (30px / 2)); } + +.footer-col-3 { + width: -webkit-calc(45% - (30px / 2)); + width: calc(45% - (30px / 2)); } + +@media screen and (max-width: 800px) { + .footer-col-1, + .footer-col-2 { + width: -webkit-calc(50% - (30px / 2)); + width: calc(50% - (30px / 2)); } + + .footer-col-3 { + width: -webkit-calc(100% - (30px / 2)); + width: calc(100% - (30px / 2)); } } +@media screen and (max-width: 600px) { + .footer-col { + float: none; + width: -webkit-calc(100% - (30px / 2)); + width: calc(100% - (30px / 2)); } } +/** + * Page content + */ +.page-content { + padding: 30px 0; + flex: 1; } + +.page-heading { + font-size: 32px; } + +.post-list-heading { + font-size: 28px; } + +.post-list { + margin-left: 0; + list-style: none; } + .post-list > li { + margin-bottom: 30px; } + +.post-meta { + font-size: 14px; + color: #828282; } + +.post-link { + display: block; + font-size: 24px; } + +/** + * Posts + */ +.post-header { + margin-bottom: 30px; } + +.post-title { + font-size: 42px; + letter-spacing: -1px; + line-height: 1; } + @media screen and (max-width: 800px) { + .post-title { + font-size: 36px; } } + +.post-content { + margin-bottom: 30px; } + .post-content h2 { + font-size: 32px; } + @media screen and (max-width: 800px) { + .post-content h2 { + font-size: 28px; } } + .post-content h3 { + font-size: 26px; } + @media screen and (max-width: 800px) { + .post-content h3 { + font-size: 22px; } } + .post-content h4 { + font-size: 20px; } + @media screen and (max-width: 800px) { + .post-content h4 { + font-size: 18px; } } + +/** + * Syntax highlighting styles + */ +.highlight { + background: #fff; } + .highlighter-rouge .highlight { + background: #eef; } + .highlight .c { + color: #998; + font-style: italic; } + .highlight .err { + color: #a61717; + background-color: #e3d2d2; } + .highlight .k { + font-weight: bold; } + .highlight .o { + font-weight: bold; } + .highlight .cm { + color: #998; + font-style: italic; } + .highlight .cp { + color: #999; + font-weight: bold; } + .highlight .c1 { + color: #998; + font-style: italic; } + .highlight .cs { + color: #999; + font-weight: bold; + font-style: italic; } + .highlight .gd { + color: #000; + background-color: #fdd; } + .highlight .gd .x { + color: #000; + background-color: #faa; } + .highlight .ge { + font-style: italic; } + .highlight .gr { + color: #a00; } + .highlight .gh { + color: #999; } + .highlight .gi { + color: #000; + background-color: #dfd; } + .highlight .gi .x { + color: #000; + background-color: #afa; } + .highlight .go { + color: #888; } + .highlight .gp { + color: #555; } + .highlight .gs { + font-weight: bold; } + .highlight .gu { + color: #aaa; } + .highlight .gt { + color: #a00; } + .highlight .kc { + font-weight: bold; } + .highlight .kd { + font-weight: bold; } + .highlight .kp { + font-weight: bold; } + .highlight .kr { + font-weight: bold; } + .highlight .kt { + color: #458; + font-weight: bold; } + .highlight .m { + color: #099; } + .highlight .s { + color: #d14; } + .highlight .na { + color: #008080; } + .highlight .nb { + color: #0086B3; } + .highlight .nc { + color: #458; + font-weight: bold; } + .highlight .no { + color: #008080; } + .highlight .ni { + color: #800080; } + .highlight .ne { + color: #900; + font-weight: bold; } + .highlight .nf { + color: #900; + font-weight: bold; } + .highlight .nn { + color: #555; } + .highlight .nt { + color: #000080; } + .highlight .nv { + color: #008080; } + .highlight .ow { + font-weight: bold; } + .highlight .w { + color: #bbb; } + .highlight .mf { + color: #099; } + .highlight .mh { + color: #099; } + .highlight .mi { + color: #099; } + .highlight .mo { + color: #099; } + .highlight .sb { + color: #d14; } + .highlight .sc { + color: #d14; } + .highlight .sd { + color: #d14; } + .highlight .s2 { + color: #d14; } + .highlight .se { + color: #d14; } + .highlight .sh { + color: #d14; } + .highlight .si { + color: #d14; } + .highlight .sx { + color: #d14; } + .highlight .sr { + color: #009926; } + .highlight .s1 { + color: #d14; } + .highlight .ss { + color: #990073; } + .highlight .bp { + color: #999; } + .highlight .vc { + color: #008080; } + .highlight .vg { + color: #008080; } + .highlight .vi { + color: #008080; } + .highlight .il { + color: #099; } diff --git a/assets/minima-social-icons.svg b/assets/minima-social-icons.svg new file mode 100644 index 0000000..fa7399f --- /dev/null +++ b/assets/minima-social-icons.svg @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/community_support_policy/index.html b/community_support_policy/index.html new file mode 100644 index 0000000..29ffe36 --- /dev/null +++ b/community_support_policy/index.html @@ -0,0 +1,188 @@ + + + + + + + + DuckDB Labs – DuckDB Community Support Policy + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ DuckDB Labs Logo +
+
+ +
+
+
+
+
+
+
+
+
+ +
+ + +
+
+

DuckDB Community Support Policy

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

We are continuously amazed by the growth of the DuckDB community. There are now 10M+ downloads each month and a large amount of social media followers, GitHub stars and so forth. When we started DuckDB back in 2018, we could have not imagined this level of adoption and we are absolutely humbled to see it.

+ +

There are some drawbacks to having a large amount of users. The DuckDB project and the company behind the project, DuckDB Labs, are not funded by venture capital by our own choice. We feel investment would force the project direction towards monetization, and we would much prefer to keep DuckDB open and available for as many people as possible. This means that our team cannot grow at the same pace as DuckDB’s usage. This means we have to make some hard choices on how to prioritize our time.

+ +

We would like to be upfront and clarify DuckDB’s support model, and the following policies apply to our free support:

+ +
    +
  • Where to file tickets: Users can file bug reports as issues on GitHub and suggest features on GitHub Discussions.
  • +
  • Response time: We attempt to reproduce incoming issues within a few business days. Internally, we assign issues in weekly batches. However, we are unable to guarantee that issues will be resolved (e.g., fixed) within any time frame.
  • +
  • Volume: We are also unable to support a large volume of support requests from individuals or teams working in the same company.
  • +
  • APIs: We only support the C, Java (JDBC), ODBC, Node.JS (Neo), Python and R client APIs as well as the command line shell. The C++ API is intended for internal use and is not designed as a stable user-facing API. Other APIs such as Julia and Swift APIs are rather experimental and not supported. See the Client overview page for more details.
  • +
  • Extensions: Within the main project, the community support policy only covers the httpfs, icu, json and parquet extensions. Other extensions, such as autocomplete, excel, fts, inet, tpcds, tpch, etc., are not supported.
  • +
  • Internals: We are unable to answer questions about DuckDB internals, e.g., physical operators or storage internals. In general, if an issue cannot be triggered from SQL or one of the supported client APIs, it’s probably out of scope.
  • +
  • Crashes and internal errors: Issues that cause crashes (segfault, bus error, abort) and issues that result in internal errors get higher priority.
  • +
  • Platforms: We only support the following platforms: Windows 10+ on x86_64, macOS latest, Linux x86_64 & aarch64 (mainstream distributions under support by distributor running with glibc). The last three Ubuntu LTS releases are a safe bet (currently: Ubuntu 20.04, 22.04 and 24.04).
  • +
  • Versions: We only support the latest stable version and the bleeding edge version (main branch) of DuckDB.
  • +
  • Architectures: We do not support 32-bit and big-endian architectures.
  • +
  • Debug builds: Debug builds of DuckDB’s clients and tooling are out of scope.
  • +
  • Discord: Users are welcome to join our Discord server to engage with the DuckDB community.
  • +
+ +

There are several ways that you can help us resolve issues more quickly. The more time you can spend to reduce our team’s workload regarding the issue, the more likely we can help. We sometimes spend an enormous amount of time divining missing information in bug reports like schema, datasets, previous state, environment, etc.

+ +
    +
  • Issue template: Please (please) follow the issue template.
  • +
  • Data sharing: Please make every effort to provide the data that is triggering the issue. The template advises to include all of the required data in your issue itself. Sometimes this means actually creating a dataset that you can share, which is preferably minimal in size. If you can only reproduce the issue on a proprietary data set, DuckDB Labs offers commercial support where this is possible. We are not able to use proprietary data in the free support tier.
  • +
  • Succeeding examples: If possible, include test cases that succeed that are similar to the failure to help pinpoint the problem.
  • +
  • Multiple clients: Try to replicate the issue in multiple clients (CLI preferred).
  • +
  • Debugging issues: Debugging issues is a fantastic way to contribute to DuckDB!
  • +
  • Background information: Providing background information about why you are approaching your task the way you are can help DuckDB Labs suggest workarounds prior to a fix.
  • +
+ +

We would like to thank our awesome community and partners in joining us in the journey so far. We are looking forward to continuing our collaboration and delivering new releases DuckDB for everyone to use.

+ +

For support requests that fall outside this support policy, we recommend contacting DuckDB Labs for commercial support options. Commercial support contracts come with guaranteed response time, private issue tracker and private datasets, larger support volume and extended scope with regards to components.

+ +
+
+
+ + + + + + +
+ + + + + + + + + + + + diff --git a/contact/index.html b/contact/index.html new file mode 100644 index 0000000..a455625 --- /dev/null +++ b/contact/index.html @@ -0,0 +1,193 @@ + + + + + + + + DuckDB Labs – Contact DuckDB Labs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ DuckDB Labs Logo +
+
+ +
+
+
+
+
+
+
+
+
+ +
+ + +
+
+

Contact DuckDB Labs

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

Contact

+
+
+
+
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+ + + + + + +
+
+
Thanks for contacting us! We will get in touch with you shortly.
+ +
+
+
+
+
+ + + + +
+ + + + + + + + + + + + diff --git a/css/hamburgers.min.css b/css/hamburgers.min.css new file mode 100644 index 0000000..71a8156 --- /dev/null +++ b/css/hamburgers.min.css @@ -0,0 +1,7 @@ +/*! + * Hamburgers + * @description Tasty CSS-animated hamburgers + * @author Jonathan Suh @jonsuh + * @site https://jonsuh.com/hamburgers + * @link https://github.com/jonsuh/hamburgers + */.hamburger{font:inherit;display:inline-block;overflow:visible;margin:0;padding:15px;cursor:pointer;transition-timing-function:linear;transition-duration:.15s;transition-property:opacity,filter;text-transform:none;color:inherit;border:0;background-color:transparent}.hamburger.is-active:hover,.hamburger:hover{opacity:.7}.hamburger.is-active .hamburger-inner,.hamburger.is-active .hamburger-inner:after,.hamburger.is-active .hamburger-inner:before{background-color:#000}.hamburger-box{position:relative;display:inline-block;width:28px;height:24px}.hamburger-inner{top:50%;display:block;margin-top:-2px}.hamburger-inner,.hamburger-inner:after,.hamburger-inner:before{position:absolute;width:28px;height:4px;transition-timing-function:ease;transition-duration:.15s;transition-property:transform;border-radius:4px;background-color:#000}.hamburger-inner:after,.hamburger-inner:before{display:block;content:""}.hamburger-inner:before{top:-7px}.hamburger-inner:after{bottom:-7px}.hamburger--3dx .hamburger-box{perspective:80px}.hamburger--3dx .hamburger-inner{transition:transform .15s cubic-bezier(.645,.045,.355,1),background-color 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dx .hamburger-inner:after,.hamburger--3dx .hamburger-inner:before{transition:transform 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dx.is-active .hamburger-inner{transform:rotateY(180deg);background-color:transparent!important}.hamburger--3dx.is-active .hamburger-inner:before{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--3dx.is-active .hamburger-inner:after{transform:translate3d(0,-10px,0) rotate(-45deg)}.hamburger--3dx-r .hamburger-box{perspective:80px}.hamburger--3dx-r .hamburger-inner{transition:transform .15s cubic-bezier(.645,.045,.355,1),background-color 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dx-r .hamburger-inner:after,.hamburger--3dx-r .hamburger-inner:before{transition:transform 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dx-r.is-active .hamburger-inner{transform:rotateY(-180deg);background-color:transparent!important}.hamburger--3dx-r.is-active .hamburger-inner:before{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--3dx-r.is-active .hamburger-inner:after{transform:translate3d(0,-10px,0) rotate(-45deg)}.hamburger--3dy .hamburger-box{perspective:80px}.hamburger--3dy .hamburger-inner{transition:transform .15s cubic-bezier(.645,.045,.355,1),background-color 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dy .hamburger-inner:after,.hamburger--3dy .hamburger-inner:before{transition:transform 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dy.is-active .hamburger-inner{transform:rotateX(-180deg);background-color:transparent!important}.hamburger--3dy.is-active .hamburger-inner:before{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--3dy.is-active .hamburger-inner:after{transform:translate3d(0,-10px,0) rotate(-45deg)}.hamburger--3dy-r .hamburger-box{perspective:80px}.hamburger--3dy-r .hamburger-inner{transition:transform .15s cubic-bezier(.645,.045,.355,1),background-color 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dy-r .hamburger-inner:after,.hamburger--3dy-r .hamburger-inner:before{transition:transform 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dy-r.is-active .hamburger-inner{transform:rotateX(180deg);background-color:transparent!important}.hamburger--3dy-r.is-active .hamburger-inner:before{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--3dy-r.is-active .hamburger-inner:after{transform:translate3d(0,-10px,0) rotate(-45deg)}.hamburger--3dxy .hamburger-box{perspective:80px}.hamburger--3dxy .hamburger-inner{transition:transform .15s cubic-bezier(.645,.045,.355,1),background-color 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dxy .hamburger-inner:after,.hamburger--3dxy .hamburger-inner:before{transition:transform 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dxy.is-active .hamburger-inner{transform:rotateX(180deg) rotateY(180deg);background-color:transparent!important}.hamburger--3dxy.is-active .hamburger-inner:before{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--3dxy.is-active .hamburger-inner:after{transform:translate3d(0,-10px,0) rotate(-45deg)}.hamburger--3dxy-r .hamburger-box{perspective:80px}.hamburger--3dxy-r .hamburger-inner{transition:transform .15s cubic-bezier(.645,.045,.355,1),background-color 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dxy-r .hamburger-inner:after,.hamburger--3dxy-r .hamburger-inner:before{transition:transform 0s cubic-bezier(.645,.045,.355,1) .1s}.hamburger--3dxy-r.is-active .hamburger-inner{transform:rotateX(180deg) rotateY(180deg) rotate(-180deg);background-color:transparent!important}.hamburger--3dxy-r.is-active .hamburger-inner:before{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--3dxy-r.is-active .hamburger-inner:after{transform:translate3d(0,-10px,0) rotate(-45deg)}.hamburger--arrow.is-active .hamburger-inner:before{transform:translate3d(-8px,0,0) rotate(-45deg) scaleX(.7)}.hamburger--arrow.is-active .hamburger-inner:after{transform:translate3d(-8px,0,0) rotate(45deg) scaleX(.7)}.hamburger--arrow-r.is-active .hamburger-inner:before{transform:translate3d(8px,0,0) rotate(45deg) scaleX(.7)}.hamburger--arrow-r.is-active .hamburger-inner:after{transform:translate3d(8px,0,0) rotate(-45deg) scaleX(.7)}.hamburger--arrowalt .hamburger-inner:before{transition:top .1s ease .1s,transform .1s cubic-bezier(.165,.84,.44,1)}.hamburger--arrowalt .hamburger-inner:after{transition:bottom .1s ease .1s,transform .1s cubic-bezier(.165,.84,.44,1)}.hamburger--arrowalt.is-active .hamburger-inner:before{top:0;transition:top .1s ease,transform .1s cubic-bezier(.895,.03,.685,.22) .1s;transform:translate3d(-8px,-10px,0) rotate(-45deg) scaleX(.7)}.hamburger--arrowalt.is-active .hamburger-inner:after{bottom:0;transition:bottom .1s ease,transform .1s cubic-bezier(.895,.03,.685,.22) .1s;transform:translate3d(-8px,10px,0) rotate(45deg) scaleX(.7)}.hamburger--arrowalt-r .hamburger-inner:before{transition:top .1s ease .1s,transform .1s cubic-bezier(.165,.84,.44,1)}.hamburger--arrowalt-r .hamburger-inner:after{transition:bottom .1s ease .1s,transform .1s cubic-bezier(.165,.84,.44,1)}.hamburger--arrowalt-r.is-active .hamburger-inner:before{top:0;transition:top .1s ease,transform .1s cubic-bezier(.895,.03,.685,.22) .1s;transform:translate3d(8px,-10px,0) rotate(45deg) scaleX(.7)}.hamburger--arrowalt-r.is-active .hamburger-inner:after{bottom:0;transition:bottom .1s ease,transform .1s cubic-bezier(.895,.03,.685,.22) .1s;transform:translate3d(8px,10px,0) rotate(-45deg) scaleX(.7)}.hamburger--arrowturn.is-active .hamburger-inner{transform:rotate(-180deg)}.hamburger--arrowturn.is-active .hamburger-inner:before{transform:translate3d(8px,0,0) rotate(45deg) scaleX(.7)}.hamburger--arrowturn.is-active .hamburger-inner:after{transform:translate3d(8px,0,0) rotate(-45deg) scaleX(.7)}.hamburger--arrowturn-r.is-active .hamburger-inner{transform:rotate(-180deg)}.hamburger--arrowturn-r.is-active .hamburger-inner:before{transform:translate3d(-8px,0,0) rotate(-45deg) scaleX(.7)}.hamburger--arrowturn-r.is-active .hamburger-inner:after{transform:translate3d(-8px,0,0) rotate(45deg) scaleX(.7)}.hamburger--boring .hamburger-inner,.hamburger--boring .hamburger-inner:after,.hamburger--boring .hamburger-inner:before{transition-property:none}.hamburger--boring.is-active .hamburger-inner{transform:rotate(45deg)}.hamburger--boring.is-active .hamburger-inner:before{top:0;opacity:0}.hamburger--boring.is-active .hamburger-inner:after{bottom:0;transform:rotate(-90deg)}.hamburger--collapse .hamburger-inner{top:auto;bottom:0;transition-delay:.13s;transition-timing-function:cubic-bezier(.55,.055,.675,.19);transition-duration:.13s}.hamburger--collapse .hamburger-inner:after{top:-20px;transition:top .2s cubic-bezier(.33333,.66667,.66667,1) .2s,opacity .1s linear}.hamburger--collapse .hamburger-inner:before{transition:top .12s cubic-bezier(.33333,.66667,.66667,1) .2s,transform .13s cubic-bezier(.55,.055,.675,.19)}.hamburger--collapse.is-active .hamburger-inner{transition-delay:.22s;transition-timing-function:cubic-bezier(.215,.61,.355,1);transform:translate3d(0,-10px,0) rotate(-45deg)}.hamburger--collapse.is-active .hamburger-inner:after{top:0;transition:top .2s cubic-bezier(.33333,0,.66667,.33333),opacity .1s linear .22s;opacity:0}.hamburger--collapse.is-active .hamburger-inner:before{top:0;transition:top .1s cubic-bezier(.33333,0,.66667,.33333) .16s,transform .13s cubic-bezier(.215,.61,.355,1) .25s;transform:rotate(-90deg)}.hamburger--collapse-r .hamburger-inner{top:auto;bottom:0;transition-delay:.13s;transition-timing-function:cubic-bezier(.55,.055,.675,.19);transition-duration:.13s}.hamburger--collapse-r .hamburger-inner:after{top:-20px;transition:top .2s cubic-bezier(.33333,.66667,.66667,1) .2s,opacity .1s linear}.hamburger--collapse-r .hamburger-inner:before{transition:top .12s cubic-bezier(.33333,.66667,.66667,1) .2s,transform .13s cubic-bezier(.55,.055,.675,.19)}.hamburger--collapse-r.is-active .hamburger-inner{transition-delay:.22s;transition-timing-function:cubic-bezier(.215,.61,.355,1);transform:translate3d(0,-10px,0) rotate(45deg)}.hamburger--collapse-r.is-active .hamburger-inner:after{top:0;transition:top .2s cubic-bezier(.33333,0,.66667,.33333),opacity .1s linear .22s;opacity:0}.hamburger--collapse-r.is-active .hamburger-inner:before{top:0;transition:top .1s cubic-bezier(.33333,0,.66667,.33333) .16s,transform .13s cubic-bezier(.215,.61,.355,1) .25s;transform:rotate(90deg)}.hamburger--elastic .hamburger-inner{top:2px;transition-timing-function:cubic-bezier(.68,-.55,.265,1.55);transition-duration:.275s}.hamburger--elastic .hamburger-inner:before{top:10px;transition:opacity .125s ease .275s}.hamburger--elastic .hamburger-inner:after{top:20px;transition:transform .275s cubic-bezier(.68,-.55,.265,1.55)}.hamburger--elastic.is-active .hamburger-inner{transition-delay:75ms;transform:translate3d(0,10px,0) rotate(135deg)}.hamburger--elastic.is-active .hamburger-inner:before{transition-delay:0s;opacity:0}.hamburger--elastic.is-active .hamburger-inner:after{transition-delay:75ms;transform:translate3d(0,-20px,0) rotate(-270deg)}.hamburger--elastic-r .hamburger-inner{top:2px;transition-timing-function:cubic-bezier(.68,-.55,.265,1.55);transition-duration:.275s}.hamburger--elastic-r .hamburger-inner:before{top:10px;transition:opacity .125s ease .275s}.hamburger--elastic-r .hamburger-inner:after{top:20px;transition:transform .275s cubic-bezier(.68,-.55,.265,1.55)}.hamburger--elastic-r.is-active .hamburger-inner{transition-delay:75ms;transform:translate3d(0,10px,0) rotate(-135deg)}.hamburger--elastic-r.is-active .hamburger-inner:before{transition-delay:0s;opacity:0}.hamburger--elastic-r.is-active .hamburger-inner:after{transition-delay:75ms;transform:translate3d(0,-20px,0) rotate(270deg)}.hamburger--emphatic{overflow:hidden}.hamburger--emphatic .hamburger-inner{transition:background-color .125s ease-in .175s}.hamburger--emphatic .hamburger-inner:before{left:0;transition:transform .125s cubic-bezier(.6,.04,.98,.335),top .05s linear .125s,left .125s ease-in .175s}.hamburger--emphatic .hamburger-inner:after{top:10px;right:0;transition:transform .125s cubic-bezier(.6,.04,.98,.335),top .05s linear .125s,right .125s ease-in .175s}.hamburger--emphatic.is-active .hamburger-inner{transition-delay:0s;transition-timing-function:ease-out;background-color:transparent!important}.hamburger--emphatic.is-active .hamburger-inner:before{top:-80px;left:-80px;transition:left .125s ease-out,top .05s linear .125s,transform .125s cubic-bezier(.075,.82,.165,1) .175s;transform:translate3d(80px,80px,0) rotate(45deg)}.hamburger--emphatic.is-active .hamburger-inner:after{top:-80px;right:-80px;transition:right .125s ease-out,top .05s linear .125s,transform .125s cubic-bezier(.075,.82,.165,1) .175s;transform:translate3d(-80px,80px,0) rotate(-45deg)}.hamburger--emphatic-r{overflow:hidden}.hamburger--emphatic-r .hamburger-inner{transition:background-color .125s ease-in .175s}.hamburger--emphatic-r .hamburger-inner:before{left:0;transition:transform .125s cubic-bezier(.6,.04,.98,.335),top .05s linear .125s,left .125s ease-in .175s}.hamburger--emphatic-r .hamburger-inner:after{top:10px;right:0;transition:transform .125s cubic-bezier(.6,.04,.98,.335),top .05s linear .125s,right .125s ease-in .175s}.hamburger--emphatic-r.is-active .hamburger-inner{transition-delay:0s;transition-timing-function:ease-out;background-color:transparent!important}.hamburger--emphatic-r.is-active .hamburger-inner:before{top:80px;left:-80px;transition:left .125s ease-out,top .05s linear .125s,transform .125s cubic-bezier(.075,.82,.165,1) .175s;transform:translate3d(80px,-80px,0) rotate(-45deg)}.hamburger--emphatic-r.is-active .hamburger-inner:after{top:80px;right:-80px;transition:right .125s ease-out,top .05s linear .125s,transform .125s cubic-bezier(.075,.82,.165,1) .175s;transform:translate3d(-80px,-80px,0) rotate(45deg)}.hamburger--minus .hamburger-inner:after,.hamburger--minus .hamburger-inner:before{transition:bottom .08s ease-out 0s,top .08s ease-out 0s,opacity 0s linear}.hamburger--minus.is-active .hamburger-inner:after,.hamburger--minus.is-active .hamburger-inner:before{transition:bottom .08s ease-out,top .08s ease-out,opacity 0s linear .08s;opacity:0}.hamburger--minus.is-active .hamburger-inner:before{top:0}.hamburger--minus.is-active .hamburger-inner:after{bottom:0}.hamburger--slider .hamburger-inner{top:2px}.hamburger--slider .hamburger-inner:before{top:10px;transition-timing-function:ease;transition-duration:.15s;transition-property:transform,opacity}.hamburger--slider .hamburger-inner:after{top:20px}.hamburger--slider.is-active .hamburger-inner{transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--slider.is-active .hamburger-inner:before{transform:rotate(-45deg) translate3d(-5.71429px,-6px,0);opacity:0}.hamburger--slider.is-active .hamburger-inner:after{transform:translate3d(0,-20px,0) rotate(-90deg)}.hamburger--slider-r .hamburger-inner{top:2px}.hamburger--slider-r .hamburger-inner:before{top:10px;transition-timing-function:ease;transition-duration:.15s;transition-property:transform,opacity}.hamburger--slider-r .hamburger-inner:after{top:20px}.hamburger--slider-r.is-active .hamburger-inner{transform:translate3d(0,10px,0) rotate(-45deg)}.hamburger--slider-r.is-active .hamburger-inner:before{transform:rotate(45deg) translate3d(5.71429px,-6px,0);opacity:0}.hamburger--slider-r.is-active .hamburger-inner:after{transform:translate3d(0,-20px,0) rotate(90deg)}.hamburger--spin .hamburger-inner{transition-timing-function:cubic-bezier(.55,.055,.675,.19);transition-duration:.22s}.hamburger--spin .hamburger-inner:before{transition:top .1s ease-in .25s,opacity .1s ease-in}.hamburger--spin .hamburger-inner:after{transition:bottom .1s ease-in .25s,transform .22s cubic-bezier(.55,.055,.675,.19)}.hamburger--spin.is-active .hamburger-inner{transition-delay:.12s;transition-timing-function:cubic-bezier(.215,.61,.355,1);transform:rotate(225deg)}.hamburger--spin.is-active .hamburger-inner:before{top:0;transition:top .1s ease-out,opacity .1s ease-out .12s;opacity:0}.hamburger--spin.is-active .hamburger-inner:after{bottom:0;transition:bottom .1s ease-out,transform .22s cubic-bezier(.215,.61,.355,1) .12s;transform:rotate(-90deg)}.hamburger--spin-r .hamburger-inner{transition-timing-function:cubic-bezier(.55,.055,.675,.19);transition-duration:.22s}.hamburger--spin-r .hamburger-inner:before{transition:top .1s ease-in .25s,opacity .1s ease-in}.hamburger--spin-r .hamburger-inner:after{transition:bottom .1s ease-in .25s,transform .22s cubic-bezier(.55,.055,.675,.19)}.hamburger--spin-r.is-active .hamburger-inner{transition-delay:.12s;transition-timing-function:cubic-bezier(.215,.61,.355,1);transform:rotate(-225deg)}.hamburger--spin-r.is-active .hamburger-inner:before{top:0;transition:top .1s ease-out,opacity .1s ease-out .12s;opacity:0}.hamburger--spin-r.is-active .hamburger-inner:after{bottom:0;transition:bottom .1s ease-out,transform .22s cubic-bezier(.215,.61,.355,1) .12s;transform:rotate(90deg)}.hamburger--spring .hamburger-inner{top:2px;transition:background-color 0s linear .13s}.hamburger--spring .hamburger-inner:before{top:10px;transition:top .1s cubic-bezier(.33333,.66667,.66667,1) .2s,transform .13s cubic-bezier(.55,.055,.675,.19)}.hamburger--spring .hamburger-inner:after{top:20px;transition:top .2s cubic-bezier(.33333,.66667,.66667,1) .2s,transform .13s cubic-bezier(.55,.055,.675,.19)}.hamburger--spring.is-active .hamburger-inner{transition-delay:.22s;background-color:transparent!important}.hamburger--spring.is-active .hamburger-inner:before{top:0;transition:top .1s cubic-bezier(.33333,0,.66667,.33333) .15s,transform .13s cubic-bezier(.215,.61,.355,1) .22s;transform:translate3d(0,10px,0) rotate(45deg)}.hamburger--spring.is-active .hamburger-inner:after{top:0;transition:top .2s cubic-bezier(.33333,0,.66667,.33333),transform .13s cubic-bezier(.215,.61,.355,1) .22s;transform:translate3d(0,10px,0) rotate(-45deg)}.hamburger--spring-r .hamburger-inner{top:auto;bottom:0;transition-delay:0s;transition-timing-function:cubic-bezier(.55,.055,.675,.19);transition-duration:.13s}.hamburger--spring-r .hamburger-inner:after{top:-20px;transition:top .2s cubic-bezier(.33333,.66667,.66667,1) .2s,opacity 0s linear}.hamburger--spring-r .hamburger-inner:before{transition:top .1s cubic-bezier(.33333,.66667,.66667,1) .2s,transform .13s cubic-bezier(.55,.055,.675,.19)}.hamburger--spring-r.is-active .hamburger-inner{transition-delay:.22s;transition-timing-function:cubic-bezier(.215,.61,.355,1);transform:translate3d(0,-10px,0) rotate(-45deg)}.hamburger--spring-r.is-active .hamburger-inner:after{top:0;transition:top .2s cubic-bezier(.33333,0,.66667,.33333),opacity 0s linear .22s;opacity:0}.hamburger--spring-r.is-active .hamburger-inner:before{top:0;transition:top .1s cubic-bezier(.33333,0,.66667,.33333) .15s,transform .13s cubic-bezier(.215,.61,.355,1) .22s;transform:rotate(90deg)}.hamburger--stand .hamburger-inner{transition:transform 75ms cubic-bezier(.55,.055,.675,.19) .15s,background-color 0s linear 75ms}.hamburger--stand .hamburger-inner:before{transition:top 75ms ease-in 75ms,transform 75ms cubic-bezier(.55,.055,.675,.19) 0s}.hamburger--stand .hamburger-inner:after{transition:bottom 75ms ease-in 75ms,transform 75ms cubic-bezier(.55,.055,.675,.19) 0s}.hamburger--stand.is-active .hamburger-inner{transition:transform 75ms cubic-bezier(.215,.61,.355,1) 0s,background-color 0s linear .15s;transform:rotate(90deg);background-color:transparent!important}.hamburger--stand.is-active .hamburger-inner:before{top:0;transition:top 75ms ease-out .1s,transform 75ms cubic-bezier(.215,.61,.355,1) .15s;transform:rotate(-45deg)}.hamburger--stand.is-active .hamburger-inner:after{bottom:0;transition:bottom 75ms ease-out .1s,transform 75ms cubic-bezier(.215,.61,.355,1) .15s;transform:rotate(45deg)}.hamburger--stand-r .hamburger-inner{transition:transform 75ms cubic-bezier(.55,.055,.675,.19) .15s,background-color 0s linear 75ms}.hamburger--stand-r .hamburger-inner:before{transition:top 75ms ease-in 75ms,transform 75ms cubic-bezier(.55,.055,.675,.19) 0s}.hamburger--stand-r .hamburger-inner:after{transition:bottom 75ms ease-in 75ms,transform 75ms cubic-bezier(.55,.055,.675,.19) 0s}.hamburger--stand-r.is-active .hamburger-inner{transition:transform 75ms cubic-bezier(.215,.61,.355,1) 0s,background-color 0s linear .15s;transform:rotate(-90deg);background-color:transparent!important}.hamburger--stand-r.is-active .hamburger-inner:before{top:0;transition:top 75ms ease-out .1s,transform 75ms cubic-bezier(.215,.61,.355,1) .15s;transform:rotate(-45deg)}.hamburger--stand-r.is-active .hamburger-inner:after{bottom:0;transition:bottom 75ms ease-out .1s,transform 75ms cubic-bezier(.215,.61,.355,1) .15s;transform:rotate(45deg)}.hamburger--squeeze .hamburger-inner{transition-timing-function:cubic-bezier(.55,.055,.675,.19);transition-duration:75ms}.hamburger--squeeze .hamburger-inner:before{transition:top 75ms ease .12s,opacity 75ms ease}.hamburger--squeeze .hamburger-inner:after{transition:bottom 75ms ease .12s,transform 75ms cubic-bezier(.55,.055,.675,.19)}.hamburger--squeeze.is-active .hamburger-inner{transition-delay:.12s;transition-timing-function:cubic-bezier(.215,.61,.355,1);transform:rotate(45deg)}.hamburger--squeeze.is-active .hamburger-inner:before{top:0;transition:top 75ms ease,opacity 75ms ease .12s;opacity:0}.hamburger--squeeze.is-active .hamburger-inner:after{bottom:0;transition:bottom 75ms ease,transform 75ms cubic-bezier(.215,.61,.355,1) .12s;transform:rotate(-90deg)}.hamburger--vortex .hamburger-inner{transition-timing-function:cubic-bezier(.19,1,.22,1);transition-duration:.2s}.hamburger--vortex .hamburger-inner:after,.hamburger--vortex .hamburger-inner:before{transition-delay:.1s;transition-timing-function:linear;transition-duration:0s}.hamburger--vortex .hamburger-inner:before{transition-property:top,opacity}.hamburger--vortex .hamburger-inner:after{transition-property:bottom,transform}.hamburger--vortex.is-active .hamburger-inner{transition-timing-function:cubic-bezier(.19,1,.22,1);transform:rotate(765deg)}.hamburger--vortex.is-active .hamburger-inner:after,.hamburger--vortex.is-active .hamburger-inner:before{transition-delay:0s}.hamburger--vortex.is-active .hamburger-inner:before{top:0;opacity:0}.hamburger--vortex.is-active .hamburger-inner:after{bottom:0;transform:rotate(90deg)}.hamburger--vortex-r .hamburger-inner{transition-timing-function:cubic-bezier(.19,1,.22,1);transition-duration:.2s}.hamburger--vortex-r .hamburger-inner:after,.hamburger--vortex-r .hamburger-inner:before{transition-delay:.1s;transition-timing-function:linear;transition-duration:0s}.hamburger--vortex-r .hamburger-inner:before{transition-property:top,opacity}.hamburger--vortex-r .hamburger-inner:after{transition-property:bottom,transform}.hamburger--vortex-r.is-active .hamburger-inner{transition-timing-function:cubic-bezier(.19,1,.22,1);transform:rotate(-765deg)}.hamburger--vortex-r.is-active .hamburger-inner:after,.hamburger--vortex-r.is-active .hamburger-inner:before{transition-delay:0s}.hamburger--vortex-r.is-active .hamburger-inner:before{top:0;opacity:0}.hamburger--vortex-r.is-active .hamburger-inner:after{bottom:0;transform:rotate(-90deg)} \ No newline at end of file diff --git a/css/main.css b/css/main.css new file mode 100644 index 0000000..69c6d90 --- /dev/null +++ b/css/main.css @@ -0,0 +1,1588 @@ +@charset "UTF-8"; +@import url(hamburgers.min.css); +#duckdb_logo { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='137' height='40' fill='none'%3E%3Cpath fill='%23FFEF00' d='M74.967 15.255v7.751c0 1.668-1.034 2.847-2.447 2.847h-.69c-1.445 0-2.446-1.179-2.446-2.847v-7.751H66.66v8.23c0 2.969 2.135 5.104 5.126 5.104h.79c2.992 0 5.105-2.135 5.105-5.104v-8.23h-2.714Zm24.856 4.704 5.049-5.316h-3.804l-4.437 4.782v-7.929h-2.692v16.87h2.692v-4.948l1.301-1.368 4.437 6.328h3.337l-5.883-8.419Zm-42.438 5.716h-3.259V14.221h3.259c2.524 0 4.537 2.569 4.537 5.683 0 3.213-2.013 5.771-4.537 5.771Zm0-14.201h-5.961v16.915h5.96c3.993 0 7.263-3.77 7.263-8.485 0-4.605-3.259-8.43-7.262-8.43ZM113.5 25.675h-3.214V14.221h3.214c2.547 0 4.538 2.569 4.538 5.683 0 3.213-1.991 5.771-4.538 5.771Zm0-14.201h-5.927v16.915h5.927c4.048 0 7.262-3.77 7.262-8.485 0-4.605-3.214-8.43-7.262-8.43Zm16.259 14.201h-4.192v-4.682h4.192c1.246 0 2.325 1.08 2.325 2.325 0 1.323-1.079 2.357-2.325 2.357Zm-4.192-7.406V14.22h3.336c1.123 0 2.035.878 2.035 2.013a2.036 2.036 0 0 1-2.035 2.035h-3.336Zm7.062.9c.611-.811 1.034-1.834 1.034-2.947 0-2.602-2.18-4.76-4.76-4.76h-6.028v16.916h6.884c2.792 0 5.027-2.28 5.027-5.072a5.035 5.035 0 0 0-2.157-4.137Zm-47.276-1.39h.667c1.613 0 2.947 1.18 2.947 2.647h2.747c0-2.913-2.569-5.316-5.683-5.316h-.667c-3.07 0-5.538 2.48-5.538 5.516v2.425c0 3.07 2.48 5.538 5.538 5.538h.668c3.213 0 5.838-2.402 5.838-5.294h-2.747c0 1.402-1.401 2.547-3.091 2.547h-.668c-1.568 0-2.869-1.245-2.869-2.791v-2.425c0-1.579 1.29-2.847 2.858-2.847ZM19.984 38.598c-10.287 0-18.594-8.307-18.594-18.594S9.697 1.409 19.984 1.409s18.594 8.308 18.594 18.595c0 10.287-8.307 18.594-18.594 18.594Z'/%3E%3Cpath fill='%23000' d='M29.926 17.246h-3.648v5.505h3.648a2.791 2.791 0 0 0 2.77-2.77c0-1.523-1.257-2.735-2.77-2.735ZM8.408 20.004c0 4.248 3.458 7.707 7.707 7.707 4.248 0 7.707-3.459 7.707-7.707 0-4.249-3.46-7.707-7.707-7.707-4.249 0-7.707 3.458-7.707 7.707Z'/%3E%3C/svg%3E"); + background-size: contain; + background-repeat: no-repeat; + background-position: center left; + width: 140px; + height: 70px; + pointer-events: none; } + +.button { + display: inline-block; + cursor: pointer; + font-size: 14px; + line-height: 1; + font-weight: 600; + transition: background-color .3s; + padding: 12px 20px; + border-radius: 100px; + text-decoration: none; + color: inherit; + box-sizing: border-box; + margin-right: 10px; } + .button.yellow { + background-color: #fff100; + color: black; } + .button.yellow:hover { + background-color: white; } + .button.orange { + background-color: #FF6900; + color: black; } + .button.orange:hover { + background-color: white; } + .button.transparent { + box-shadow: 0 0 0 1px black inset; } + .button.transparent.dark { + box-shadow: 0 0 0 1px white inset; } + .button.transparent:hover { + background: #7D66FF; + box-shadow: 0 0 0 1px #7D66FF inset; + color: white; } + .button.transparent.arrow-right:hover::after { + /*background-image: url("data:image/svg+xml,%3Csvg width='13' height='9' viewBox='0 0 13 9' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12.472 4.64599L8.146 8.99999L7.25 8.07599L10.008 5.33199H0V3.97399H10.036L7.25 1.21599L8.146 0.291992L12.472 4.64599Z' fill='white'/%3E%3C/svg%3E%0A");*/ } + .button.white { + background: white; + color: black; } + .button.white:hover { + background: #7D66FF; + color: white; } + .button.arrow-down::after { + content: "↓"; + margin-left: 5px; } + .button.arrow-right:after { + /*background-image: url("data:image/svg+xml,%3Csvg width='13' height='9' viewBox='0 0 13 9' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12.472 4.64599L8.146 8.99999L7.25 8.07599L10.008 5.33199H0V3.97399H10.036L7.25 1.21599L8.146 0.291992L12.472 4.64599Z' fill='black'/%3E%3C/svg%3E%0A"); + content: ""; + width: 13px; + height: 9px; + background-size: contain; + display: inline-block; + */ + margin-left: 5px; + transition: all .25s; + content: "→"; } + .button.arrow-right:hover:after { + margin-left: 12px; } + .button:hover { + text-decoration: none; } + +.textbutton { + font-size: 14px; + font-weight: 500; + color: inherit; + text-decoration: none; + display: inline; } + .textbutton.arrow-right:after { + /* + background-image: url("data:image/svg+xml,%3Csvg width='13' height='9' viewBox='0 0 13 9' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12.472 4.64599L8.146 8.99999L7.25 8.07599L10.008 5.33199H0V3.97399H10.036L7.25 1.21599L8.146 0.291992L12.472 4.64599Z' fill='black'/%3E%3C/svg%3E%0A"); + content: ""; + width: 13px; + height: 9px; + background-size: contain; + display: inline-block; + */ + content: "→"; + margin-left: 5px; + transition: all .25s; } + .textbutton.arrow-right:hover:after { + margin-left: 12px; + /*background-image: url("data:image/svg+xml,%3Csvg width='13' height='9' viewBox='0 0 13 9' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12.472 4.64599L8.146 8.99999L7.25 8.07599L10.008 5.33199H0V3.97399H10.036L7.25 1.21599L8.146 0.291992L12.472 4.64599Z' fill='%237D66FF'/%3E%3C/svg%3E%0A");*/ } + .textbutton:hover { + color: #7D66FF; } + +/** DUCKDB LABS CUSTOM VARIABLES **/ +/** FONT IMPORT **/ +@font-face { + font-family: "SuisseIntl"; + src: url("webfont/SuisseIntl-Book-WebXL.woff2") format("woff2"), url("webfont/SuisseIntl-Book-WebXL.woff") format("woff"); + font-weight: 450; + font-style: normal; + font-display: swap; } +@font-face { + font-family: "SuisseIntl"; + src: url("webfont/SuisseIntl-Medium-WebXL.woff2") format("woff2"), url("webfont/SuisseIntl-SemiBold-WebXL.woff") format("woff"); + font-weight: 500; + font-style: normal; + font-display: swap; } +@font-face { + font-family: "SuisseIntl"; + src: url("webfont/SuisseIntl-SemiBold-WebXL.woff2") format("woff2"), url("webfont/SuisseIntl-SemiBold-WebXL.woff") format("woff"); + font-weight: 600; + font-style: normal; + font-display: swap; } +@font-face { + font-family: "SuisseIntl"; + src: url("webfont/SuisseIntl-Bold-WebS.woff2") format("woff2"), url("webfont/SuisseIntl-Bold-WebS.woff") format("woff"); + font-weight: 700; + font-style: normal; + font-display: swap; } +@font-face { + font-family: "DuckDB-Symbol"; + src: url("webfont/DuckDB-Symbol.woff2") format("woff2"), url("webfont/DuckDB-Symbol.woff") format("woff"); } +@font-face { + font-family: "JetBrainsMono-Regular"; + src: url("webfont/JetBrainsMono/woff2/JetBrainsMono-Regular.woff2") format("woff2"), url("webfont/JetBrainsMono/woff/JetBrainsMonoNL-Regular.woff") format("woff"); } +@font-face { + font-family: "JetBrainsMono-Bold"; + src: url("webfont/JetBrainsMono/woff2/JetBrainsMono-Bold.woff2") format("woff2"), url("webfont/JetBrainsMono/woff/JetBrainsMonoNL-Bold.woff") format("woff"); } +@font-face { + font-family: "JetBrainsMono-ExtraBold"; + src: url("webfont/JetBrainsMono/woff2/JetBrainsMono-ExtraBold.woff2") format("woff2"), url("webfont/JetBrainsMono/woff/JetBrainsMono-ExtraBold.woff") format("woff"); } +@font-face { + font-family: "JetBrainsMono-Italic"; + src: url("webfont/JetBrainsMono/woff2/JetBrainsMono-Italic.woff2") format("woff2"), url("webfont/JetBrainsMono/woff/JetBrainsMonoNL-Italic.woff") format("woff"); } +@font-face { + font-family: "JetBrainsMono-Bold-Italic"; + src: url("webfont/JetBrainsMono/woff2/JetBrainsMono-Bold-Italic.woff2") format("woff2"), url("webfont/JetBrainsMono/woff/JetBrainsMonoNL-BoldItalic.woff") format("woff"); } +* { + -webkit-box-sizing: border-box; + box-sizing: border-box; } + +body { + font-size: 100%; + font-family: "SuisseIntl", Helvetica, Arial, sans-serif; + font-weight: 450; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; } + +::-moz-selection { + background: #fff100; } + +::selection { + background: #fff100; } + +a, a:active, a:focus, button, button:active, button:focus { + outline: none; } + +p a, +li a { + color: inherit; + text-decoration: underline; + transition: color .3s; } + p a:hover, + li a:hover { + color: #FF6900; + cursor: pointer; } + +p a:has(code):hover { + background-color: transparent; } + +ul { + list-style-type: '\2022 \00a0\00a0'; + padding: 0; + padding-left: 20px; } + +strong { + font-family: "SuisseIntl", Helvetica, Arial, sans-serif; + font-weight: 600; + font-weight: normal; } + +.duckdbsymbol { + font-family: "DuckDB-Symbol"; } + +.onlymobile { + display: none; } + +.notonmobile { + display: block; } + +a.blocklink { + display: block; + position: absolute; + z-index: 500; + top: 0; + left: 0; + width: 100%; + height: 100%; } + a.blocklink:hover { + background-color: transparent !important; } + +.flexwrap { + display: flex; + flex-wrap: wrap; + justify-content: space-between; } + +main.f-md .pagehead + .wrap { + padding: 105px 15px; } + +main > .pagehead { + margin-top: 70px; } + +.pagehead { + background-color: #161616; + background-image: url("data:image/svg+xml,%3Csvg width='1440' height='257' viewBox='0 0 1440 257' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cg clip-path='url(%23clip0_2960_5714)'%3E%3Crect width='1440' height='257' fill='%23161616'/%3E%3Cpath d='M1762 710.626L1762 -53.9999C1762 -142.365 1690.37 -214 1602 -214L1344.05 -214C1255.69 -214 1184.05 -142.366 1184.05 -54L1184.05 270.996C1184.05 359.361 1112.42 430.996 1024.05 430.996L942 430.996C853.635 430.996 782 502.63 782 590.996L782 1058' stroke='url(%23paint0_linear_2960_5714)' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'/%3E%3Cpath d='M-664.793 1108L850 1108C938.366 1108 1010 1036.37 1010 948L1010 220.616C1010 132.25 938.366 60.6156 850 60.6155L1.7064 60.6155C-86.6592 60.6155 -158.294 -11.019 -158.294 -99.3845L-158.294 -508C-158.294 -596.365 -229.928 -668 -318.294 -668L-1294 -668' stroke='url(%23paint1_linear_2960_5714)' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/g%3E%3Cdefs%3E%3ClinearGradient id='paint0_linear_2960_5714' x1='1556.56' y1='-272.688' x2='965.893' y2='681.719' gradientUnits='userSpaceOnUse'%3E%3Cstop stop-color='%23292058'/%3E%3Cstop offset='1' stop-color='%235C4CB8'/%3E%3C/linearGradient%3E%3ClinearGradient id='paint1_linear_2960_5714' x1='1116.3' y1='735.688' x2='-612.923' y2='-333.951' gradientUnits='userSpaceOnUse'%3E%3Cstop stop-color='%23292058'/%3E%3Cstop offset='1' stop-color='%235C4CB8'/%3E%3C/linearGradient%3E%3CclipPath id='clip0_2960_5714'%3E%3Crect width='1440' height='257' fill='white'/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E%0A"); + background-size: cover; + background-position: center center; } + .pagehead h1 { + padding: 65px 0; + color: white; + font-size: 47px; + margin-bottom: 0; } + .pagehead.bg1 { + background-image: url("data:image/svg+xml,%3Csvg width='1440' height='180' viewBox='0 0 1440 180' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cg clip-path='url(%23clip0_3117_3030)'%3E%3Crect width='1440' height='180' fill='%23161616'/%3E%3Cpath d='M1762 737.626L1762 -26.9999C1762 -115.365 1690.37 -187 1602 -187L1344.05 -187C1255.69 -187 1184.05 -115.366 1184.05 -27L1184.05 297.996C1184.05 386.361 1112.42 457.996 1024.05 457.996L942 457.996C853.635 457.996 782 529.63 782 617.996L782 1085' stroke='url(%23paint0_linear_3117_3030)' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'/%3E%3Cpath d='M1064 246L1064 141C1064 85.7716 1019.23 41.0001 964 41.0001L-158 41' stroke='url(%23paint1_linear_3117_3030)' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/g%3E%3Cdefs%3E%3ClinearGradient id='paint0_linear_3117_3030' x1='1556.56' y1='-245.688' x2='965.893' y2='708.719' gradientUnits='userSpaceOnUse'%3E%3Cstop stop-color='%23292058'/%3E%3Cstop offset='1' stop-color='%235C4CB8'/%3E%3C/linearGradient%3E%3ClinearGradient id='paint1_linear_3117_3030' x1='1175.19' y1='714.808' x2='-585.695' y2='-426.622' gradientUnits='userSpaceOnUse'%3E%3Cstop stop-color='%23292058'/%3E%3Cstop offset='1' stop-color='%235C4CB8'/%3E%3C/linearGradient%3E%3CclipPath id='clip0_3117_3030'%3E%3Crect width='1440' height='180' fill='white'/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E%0A"); } + .pagehead.bg2 { + background-image: url("data:image/svg+xml,%3Csvg width='1440' height='180' viewBox='0 0 1440 180' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cg clip-path='url(%23clip0_3117_3021)'%3E%3Crect width='1440' height='180' fill='%23161616'/%3E%3Cpath d='M1064 -65L1064 39.9999C1064 95.2284 1019.23 140 964 140L-158 140' stroke='url(%23paint0_linear_3117_3021)' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'/%3E%3Cpath d='M1488 112L1232.05 112C1176.82 112 1132.05 156.772 1132.05 212L1132.05 258.5' stroke='url(%23paint1_linear_3117_3021)' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/g%3E%3Cdefs%3E%3ClinearGradient id='paint0_linear_3117_3021' x1='1175.19' y1='-533.808' x2='-585.695' y2='607.622' gradientUnits='userSpaceOnUse'%3E%3Cstop stop-color='%23292058'/%3E%3Cstop offset='1' stop-color='%235C4CB8'/%3E%3C/linearGradient%3E%3ClinearGradient id='paint1_linear_3117_3021' x1='1504.56' y1='53.3121' x2='913.893' y2='1007.72' gradientUnits='userSpaceOnUse'%3E%3Cstop stop-color='%23292058'/%3E%3Cstop offset='1' stop-color='%235C4CB8'/%3E%3C/linearGradient%3E%3CclipPath id='clip0_3117_3021'%3E%3Crect width='1440' height='180' fill='white'/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E%0A"); } + .pagehead.bg3 { + background-image: url("data:image/svg+xml,%3Csvg width='1440' height='180' viewBox='0 0 1440 180' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cg clip-path='url(%23clip0_3117_3016)'%3E%3Crect width='1440' height='180' fill='%23161616'/%3E%3Cpath d='M440 -33L440 33C440 88.2284 484.771 133 540 133L979 133C1034.23 133 1079 88.2284 1079 32.9999V-49' stroke='url(%23paint0_linear_3117_3016)' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'/%3E%3Cpath d='M1488 112L1232.05 112C1176.82 112 1132.05 156.771 1132.05 212L1132.05 258.5' stroke='url(%23paint1_linear_3117_3016)' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/g%3E%3Cdefs%3E%3ClinearGradient id='paint0_linear_3117_3016' x1='1137.14' y1='808.687' x2='-36.2365' y2='411.703' gradientUnits='userSpaceOnUse'%3E%3Cstop stop-color='%23292058'/%3E%3Cstop offset='1' stop-color='%235C4CB8'/%3E%3C/linearGradient%3E%3ClinearGradient id='paint1_linear_3117_3016' x1='1504.56' y1='53.3119' x2='913.893' y2='1007.72' gradientUnits='userSpaceOnUse'%3E%3Cstop stop-color='%23292058'/%3E%3Cstop offset='1' stop-color='%235C4CB8'/%3E%3C/linearGradient%3E%3CclipPath id='clip0_3117_3016'%3E%3Crect width='1440' height='180' fill='white'/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E%0A"); } + .pagehead.bg4 { + background-image: url("data:image/svg+xml,%3Csvg width='1440' height='180' viewBox='0 0 1440 180' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cg clip-path='url(%23clip0_3117_3003)'%3E%3Crect width='1440' height='180' fill='%23161616'/%3E%3Cpath d='M757 -104L757 18C757 73.2284 801.771 118 857 118L1122 118C1177.23 118 1222 73.2285 1222 18L1222 -81' stroke='url(%23paint0_linear_3117_3003)' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/g%3E%3Cdefs%3E%3ClinearGradient id='paint0_linear_3117_3003' x1='1305.44' y1='938.484' x2='-9.30333' y2='78.9597' gradientUnits='userSpaceOnUse'%3E%3Cstop stop-color='%23292058'/%3E%3Cstop offset='1' stop-color='%235C4CB8'/%3E%3C/linearGradient%3E%3CclipPath id='clip0_3117_3003'%3E%3Crect width='1440' height='180' fill='white'/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E%0A"); } + .pagehead.bg5 { + background-image: url("data:image/svg+xml,%3Csvg width='1440' height='180' viewBox='0 0 1440 180' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cg clip-path='url(%23clip0_3117_3010)'%3E%3Crect width='1440' height='180' fill='%23161616'/%3E%3Cpath d='M1710 112L1232.05 112C1176.82 112 1132.05 156.772 1132.05 212L1132.05 656.996C1132.05 712.224 1087.28 756.996 1032.05 756.996L730 756.996' stroke='url(%23paint0_linear_3117_3010)' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'/%3E%3Cpath d='M1010 297L1010 140.616C1010 85.3872 965.229 40.6156 910 40.6156L-158.294 40.6155' stroke='url(%23paint1_linear_3117_3010)' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/g%3E%3Cdefs%3E%3ClinearGradient id='paint0_linear_3117_3010' x1='1504.56' y1='53.3119' x2='913.893' y2='1007.72' gradientUnits='userSpaceOnUse'%3E%3Cstop stop-color='%23292058'/%3E%3Cstop offset='1' stop-color='%235C4CB8'/%3E%3C/linearGradient%3E%3ClinearGradient id='paint1_linear_3117_3010' x1='1219.64' y1='2733.49' x2='-2551' y2='846.424' gradientUnits='userSpaceOnUse'%3E%3Cstop stop-color='%23292058'/%3E%3Cstop offset='1' stop-color='%235C4CB8'/%3E%3C/linearGradient%3E%3CclipPath id='clip0_3117_3010'%3E%3Crect width='1440' height='180' fill='white'/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E%0A"); } + .pagehead.bg6 { + background-image: url("data:image/svg+xml,%3Csvg width='1440' height='180' viewBox='0 0 1440 180' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cg clip-path='url(%23clip0_3117_3037)'%3E%3Crect width='1440' height='180' fill='%23161616'/%3E%3Cpath d='M1137 145L1260 145C1315.23 145 1360 100.228 1360 45L1360 -296' stroke='url(%23paint0_linear_3117_3037)' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'/%3E%3Cpath d='M698 145L73.0001 145C17.7717 145 -26.9998 100.229 -26.9998 45.0001L-27 -296' stroke='url(%23paint1_linear_3117_3037)' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'/%3E%3Crect x='698' y='45' width='439' height='236' rx='100' stroke='url(%23paint2_linear_3117_3037)' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/g%3E%3Cdefs%3E%3ClinearGradient id='paint0_linear_3117_3037' x1='587.973' y1='553.593' x2='1634.94' y2='-94.5036' gradientUnits='userSpaceOnUse'%3E%3Cstop stop-color='%23292058'/%3E%3Cstop offset='1' stop-color='%235C4CB8'/%3E%3C/linearGradient%3E%3ClinearGradient id='paint1_linear_3117_3037' x1='2482.95' y1='553.593' x2='1550.69' y2='-1322.6' gradientUnits='userSpaceOnUse'%3E%3Cstop stop-color='%23292058'/%3E%3Cstop offset='1' stop-color='%235C4CB8'/%3E%3C/linearGradient%3E%3ClinearGradient id='paint2_linear_3117_3037' x1='-382.821' y1='-173.657' x2='78.0801' y2='875.881' gradientUnits='userSpaceOnUse'%3E%3Cstop stop-color='%23292058'/%3E%3Cstop offset='1' stop-color='%235C4CB8'/%3E%3C/linearGradient%3E%3CclipPath id='clip0_3117_3037'%3E%3Crect width='1440' height='180' fill='white'/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E%0A"); } + +h1 { + font-size: 29px; + line-height: 1.0; + font-weight: normal; + margin-bottom: 50px; } + +h2 { + font-size: 26px; + line-height: 1.0; + font-weight: normal; + margin-bottom: 30px; } + +h3 { + font-weight: normal; + font-size: 21px; + line-height: 1.1; } + +h4 { + font-weight: normal; + font-size: 19px; + line-height: 1.0; } + +h5 { + font-weight: normal; + line-height: 1.0; + font-size: 18px; } + +h6 { + font-weight: normal; + line-height: 1.0; + font-size: 14px; } + +.button { + display: inline-block; + cursor: pointer; + font-size: 14px; + line-height: 1; + font-weight: 600; + transition: background-color .3s; + padding: 12px 20px; + border-radius: 100px; + text-decoration: none; + color: inherit; + box-sizing: border-box; + margin-right: 10px; } + .button.yellow { + background-color: #fff100; + color: black; } + .button.yellow:hover { + background-color: white; } + .button.orange { + background-color: #FF6900; + color: black; } + .button.orange:hover { + background-color: white; } + .button.transparent { + box-shadow: 0 0 0 1px black inset; } + .button.transparent.dark { + box-shadow: 0 0 0 1px white inset; } + .button.transparent:hover { + background: #7D66FF; + box-shadow: 0 0 0 1px #7D66FF inset; + color: white; } + .button.transparent.arrow-right:hover::after { + /*background-image: url("data:image/svg+xml,%3Csvg width='13' height='9' viewBox='0 0 13 9' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12.472 4.64599L8.146 8.99999L7.25 8.07599L10.008 5.33199H0V3.97399H10.036L7.25 1.21599L8.146 0.291992L12.472 4.64599Z' fill='white'/%3E%3C/svg%3E%0A");*/ } + .button.white { + background: white; + color: black; } + .button.white:hover { + background: #7D66FF; + color: white; } + .button.arrow-down::after { + content: "↓"; + margin-left: 5px; } + .button.arrow-right:after { + /*background-image: url("data:image/svg+xml,%3Csvg width='13' height='9' viewBox='0 0 13 9' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12.472 4.64599L8.146 8.99999L7.25 8.07599L10.008 5.33199H0V3.97399H10.036L7.25 1.21599L8.146 0.291992L12.472 4.64599Z' fill='black'/%3E%3C/svg%3E%0A"); + content: ""; + width: 13px; + height: 9px; + background-size: contain; + display: inline-block; + */ + margin-left: 5px; + transition: all .25s; + content: "→"; } + .button.arrow-right:hover:after { + margin-left: 12px; } + .button:hover { + text-decoration: none; } + +.hamburger { + padding: 3px; + margin-top: 2px; + display: none; + background: #2E2E2E; + border-radius: 100px; + width: 41px; + height: 41px; + align-items: center; + justify-content: center; + position: absolute; + right: 15px; + top: 13px; } + +.hamburger-inner, .hamburger-inner:after, .hamburger-inner:before { + background-color: #FF6900; + border-radius: 0px; + height: 2px; + width: 16px; } + +.hamburger-box { + width: 16px; + height: 16px; + margin-top: 2px; } + +.hamburger-inner:after { + bottom: -6px; } + +.hamburger-inner:before { + top: -6px; } + +.hamburger.is-active:hover, .hamburger:hover { + opacity: 1; } + +.hamburger.is-active .hamburger-inner, .hamburger.is-active .hamburger-inner:after, .hamburger.is-active .hamburger-inner:before { + background-color: #FF6900; } + +/** External Links in Fließtext **/ +a.externallink:hover { + background-color: #e0f1fd !important; } + +a.externallink:hover::after { + opacity: 1; + -webkit-transform: translate(0px, 0px); + -ms-transform: translate(0px, 0px); + transform: translate(0px, 0px); } + +a.externallink::after { + content: " \2197"; + position: absolute; + margin-left: -1px; + font-size: 10px; + opacity: 0; + -webkit-transform: translate(-10px, 5px); + -ms-transform: translate(-10px, 5px); + transform: translate(-10px, 5px); + -webkit-transition: all .3s; + -o-transition: all .3s; + transition: all .3s; } + +a.externallink { + margin-right: 3px; } + +/** External Links in Header **/ +.external a::after { + content: "\E000"; + font-size: 90%; + top: -1px; + -webkit-transform: translateX(1px); + -ms-transform: translateX(1px); + transform: translateX(1px); + display: inline-block; + -webkit-transition: all .3s; + -o-transition: all .3s; + transition: all .3s; + opacity: 0; + color: white; + position: absolute; } + +.external a:hover::after { + -webkit-transform: translateX(5px); + -ms-transform: translateX(5px); + transform: translateX(5px); + opacity: 1; + color: #fff100; } + +.external a:hover { + background-color: transparent !important; } + +.duckdbsymbol { + font-family: "DuckDB-Symbol"; } + +a.blocklink { + display: block; + position: absolute; + z-index: 500; + top: 0; + left: 0; + width: 100%; + height: 100%; } + a.blocklink:hover { + background-color: transparent !important; } + +img.downloadlogo { + height: 30px; + width: 130px; + position: absolute; + top: 10px; + left: 15px; + z-index: 999; + /*background: red;*/ + opacity: 0 !important; } + +/** HEADER **/ +header .headerline { + background-color: black; + height: 70px; + width: 100%; + position: fixed; + top: 0; + left: 0; + overflow: visible; + z-index: 9000; } + header .headerline .headercontent { + max-width: calc(100% - 40px); + height: 100%; + margin: 0 auto; + color: white; + align-items: center; + display: -webkit-box; + display: -ms-flexbox; + display: flex; } + header .headerline .headercontent .duckdblabshome { + position: relative; + z-index: 50; } + header .headerline .headercontent .duckdblabshome img { + height: 37px; + width: auto; + display: block; } + header .headerline .headercontent .duckdblabshome a { + text-decoration: none; + color: #fff100; + -webkit-transition: color .3s; + -o-transition: color .3s; + transition: color .3s; } + header .headerline .headercontent .duckdblabshome a:hover { + color: white; } + header .headerline .headercontent .landingmenu { + font-size: 16px; + height: 100%; + position: absolute; + z-index: 20; + width: 100%; } + header .headerline .headercontent .landingmenu nav .menu { + padding: 0; + margin: 0; + width: 100%; + position: absolute; + left: -20px; + top: 0; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + height: 100%; + align-items: center; + justify-content: center; + gap: 35px; } + header .headerline .headercontent .landingmenu nav .menu > div { + margin-left: 35px; + position: relative; } + header .headerline .headercontent .landingmenu nav .menu a { + color: white; + text-decoration: none; + -webkit-transition: color .3s; + -o-transition: color .3s; + transition: color .3s; + line-height: 70px; } + header .headerline .headercontent .landingmenu nav .menu a:hover { + color: #FF6900; } + header .headerline .headercontent .button { + line-height: 1; + margin: 0; } + +.wrap { + max-width: 1150px; + margin: 0 auto; } + +/** LANDING STYLES **/ +body.landing, +main.job_template { + font-size: 17px; + /** GENERAL STYLES **/ + /** WELCOME SECTION **/ } + body.landing main, + main.job_template main { + margin-top: 70px; } + body.landing h1, + main.job_template h1 { + font-size: 47px; + font-weight: 500; + line-height: 1; + margin: 0; } + body.landing h2, + main.job_template h2 { + font-size: 37px; + font-weight: 500; + line-height: 1; + margin-bottom: 0; } + body.landing h3, + main.job_template h3 { + font-size: 22px; + line-height: 1.1; + font-weight: 500; + margin: 0; } + body.landing h1 + p, + main.job_template h1 + p { + margin-top: 30px; } + body.landing ul + h2, + body.landing p + h2, + main.job_template ul + h2, + main.job_template p + h2 { + margin-top: 1em; } + body.landing section, + main.job_template section { + padding: 105px 15px; } + body.landing section div p:last-of-type, + main.job_template section div p:last-of-type { + margin-bottom: 25px; } + body.landing .wrap, + main.job_template .wrap { + max-width: 1150px; + margin: 0 auto; } + body.landing .flexwrap, + main.job_template .flexwrap { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + -webkit-box-pack: justify; + -ms-flex-pack: justify; + justify-content: space-between; } + body.landing .hidden, + main.job_template .hidden { + display: none; } + body.landing section.welcome, + main.job_template section.welcome { + color: white; + background-color: #161616; + background-image: url("data:image/svg+xml,%3Csvg width='1440' height='1029' viewBox='0 0 1440 1029' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cg clip-path='url(%23clip0_3558_5290)'%3E%3Crect width='1440' height='1029' fill='%23161616'/%3E%3Cpath d='M658 136.318V0H-7V389H191.796C227.694 389 256.796 359.898 256.796 324V266.318C256.796 230.419 285.897 201.318 321.796 201.318H593C628.898 201.318 658 172.216 658 136.318Z' fill='%23232323'/%3E%3Cpath d='M926.5 534.5V422.132C926.5 386.233 955.601 357.132 991.5 357.132H1280.33C1316.23 357.132 1345.33 328.03 1345.33 292.132V-77H1464V357.132V1028.5H-74V664.5C-74 628.601 -44.8986 599.5 -9 599.5L861.5 599.5C897.398 599.5 926.5 570.398 926.5 534.5Z' fill='%23232323'/%3E%3Cpath d='M1177 792C1177 756.101 1206.1 727 1242 727H1579V1129H1177V792Z' fill='%23161616'/%3E%3C/g%3E%3Cdefs%3E%3CclipPath id='clip0_3558_5290'%3E%3Crect width='1440' height='1029' fill='white'/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E%0A"); + background-size: cover; + background-position: top center; } + body.landing section.welcome .flexwrap, + main.job_template section.welcome .flexwrap { + gap: 40px; + -webkit-box-align: start; + -ms-flex-align: start; + align-items: flex-start; } + body.landing section.welcome .flexwrap .duckdb, + main.job_template section.welcome .flexwrap .duckdb { + width: calc(40%); + text-align: left; } + body.landing section.welcome .flexwrap .duckdb p, + main.job_template section.welcome .flexwrap .duckdb p { + margin: 25px 0; } + body.landing section.welcome .flexwrap .officeimage, + main.job_template section.welcome .flexwrap .officeimage { + width: 550px; } + body.landing section.welcome .flexwrap .officeimage img, + main.job_template section.welcome .flexwrap .officeimage img { + width: 100%; + height: auto; + border-radius: 15px; } + body.landing section.welcome .flexwrap .button.livedemo, + main.job_template section.welcome .flexwrap .button.livedemo { + background: #BCBCBC; + color: black; + font-weight: 500; } + body.landing section.collaborators, + main.job_template section.collaborators { + background: transparent; + padding-top: 80px; + padding-bottom: 0; } + body.landing section.collaborators h6, + main.job_template section.collaborators h6 { + font-size: 14px; + font-weight: normal; + color: #FF6900; + text-align: center; } + body.landing section.collaborators .logos, + main.job_template section.collaborators .logos { + display: flex; + flex-wrap: wrap; + justify-content: center; + column-gap: 40px; + row-gap: 20px; + max-width: 1150px; + margin: 0 auto; + margin-top: 20px; } + body.landing section.collaborators .logos a, + main.job_template section.collaborators .logos a { + text-decoration: none; } + body.landing section.collaborators .logos a:hover img, + main.job_template section.collaborators .logos a:hover img { + filter: brightness(1.5); } + body.landing section.collaborators .logos img, + main.job_template section.collaborators .logos img { + display: block; + height: 40px; + width: auto; + transition: all .3s; } + body.landing section.support, + main.job_template section.support { + background-image: url("data:image/svg+xml,%3Csvg width='1439' height='582' viewBox='0 0 1439 582' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath opacity='0.3' d='M1000.58 190.11V-198H1439V311H1411C1383.39 311 1361 333.386 1361 361V461.274C1361 488.883 1338.62 511.267 1311.01 511.274L434.992 511.507C407.531 511.517 385.218 533.672 385.012 561.132L384.188 671H0V378.624H70.3527C90.4877 378.624 106.811 362.829 106.811 343.346V115.5C106.811 87.8858 129.197 65.5 156.811 65.5H665.988C693.602 65.5 715.988 87.8858 715.988 115.5V185.405C715.988 206.409 733.584 223.445 755.3 223.445H966.128C985.152 223.445 1000.58 208.526 1000.58 190.11Z' fill='%237D66FF' fill-opacity='0.4'/%3E%3C/svg%3E%0A"); + background-size: cover; + background-color: #e6e4fe; } + body.landing section.support h1, + main.job_template section.support h1 { + max-width: 600px; } + body.landing section.support .intro, + main.job_template section.support .intro { + width: calc(33.33% - 10px); } + body.landing section.support .options, + main.job_template section.support .options { + display: flex; + justify-content: space-between; + width: calc(67% - 50px); + position: relative; } + body.landing section.support .options .option, + main.job_template section.support .options .option { + width: calc(50% - 10px); + border-radius: 15px; + border: 1px solid rgba(125, 102, 255, 0.3); + background: rgba(255, 255, 255, 0.6); + backdrop-filter: blur(7px); + padding: 20px; } + body.landing section.support .options .option hr, + main.job_template section.support .options .option hr { + outline: 0; + border: 0; + height: 1px; + background: #CFC7FF; } + body.landing section.support .options .option .content h2, + main.job_template section.support .options .option .content h2 { + font-weight: 600; + font-size: 28px; + margin-bottom: 20px; } + body.landing section.support .options .option .content .tag, + main.job_template section.support .options .option .content .tag { + font-size: 14px; + margin-bottom: 10px; } + body.landing section.support .options .option .content ul, + main.job_template section.support .options .option .content ul { + padding: 0; + margin: 0; + margin-top: 20px; + padding-left: 2px; + /* + li::marker { + content: url("data:image/svg+xml,%3Csvg width='15' height='15' viewBox='0 0 15 15' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M7.5 0C3.3645 0 0 3.3645 0 7.5C0 11.6355 3.3645 15 7.5 15C11.6355 15 15 11.6355 15 7.5C15 3.3645 11.6355 0 7.5 0ZM7.5 13.5C4.19175 13.5 1.5 10.8082 1.5 7.5C1.5 4.19175 4.19175 1.5 7.5 1.5C10.8082 1.5 13.5 4.19175 13.5 7.5C13.5 10.8082 10.8082 13.5 7.5 13.5Z' fill='%238274CD'/%3E%3Cpath d='M5.99907 8.68925L4.27482 6.968L3.21582 8.03L6.00057 10.8088L11.0301 5.77925L9.96957 4.71875L5.99907 8.68925Z' fill='%238274CD'/%3E%3C/svg%3E%0A"); + } + li.contra::marker{ + content: url("data:image/svg+xml,%3Csvg width='15' height='15' viewBox='0 0 15 15' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cg clip-path='url(%23clip0_3479_2051)'%3E%3Cpath d='M7.5 0C3.36 0 0 3.36 0 7.5C0 11.64 3.36 15 7.5 15C11.64 15 15 11.64 15 7.5C15 3.36 11.64 0 7.5 0ZM7.5 13.5C4.19 13.5 1.5 10.81 1.5 7.5C1.5 4.19 4.19 1.5 7.5 1.5C10.81 1.5 13.5 4.19 13.5 7.5C13.5 10.81 10.81 13.5 7.5 13.5Z' fill='%238274CD'/%3E%3Cpath d='M10.5302 5.5307L9.47022 4.4707L7.50022 6.4407L5.53022 4.4707L4.47021 5.5307L6.44022 7.5007L4.47021 9.4707L5.53022 10.5307L7.50022 8.5607L9.47022 10.5307L10.5302 9.4707L8.56022 7.5007L10.5302 5.5307Z' fill='%238274CD'/%3E%3C/g%3E%3Cdefs%3E%3CclipPath id='clip0_3479_2051'%3E%3Crect width='15' height='15' fill='white'/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E%0A"); + } + */ } + body.landing section.support .options .option .content ul li, + main.job_template section.support .options .option .content ul li { + list-style: none; + padding-left: 23px; + background-image: url("data:image/svg+xml,%3Csvg width='15' height='15' viewBox='0 0 15 15' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M7.5 0C3.3645 0 0 3.3645 0 7.5C0 11.6355 3.3645 15 7.5 15C11.6355 15 15 11.6355 15 7.5C15 3.3645 11.6355 0 7.5 0ZM7.5 13.5C4.19175 13.5 1.5 10.8082 1.5 7.5C1.5 4.19175 4.19175 1.5 7.5 1.5C10.8082 1.5 13.5 4.19175 13.5 7.5C13.5 10.8082 10.8082 13.5 7.5 13.5Z' fill='%238274CD'/%3E%3Cpath d='M5.99907 8.68925L4.27482 6.968L3.21582 8.03L6.00057 10.8088L11.0301 5.77925L9.96957 4.71875L5.99907 8.68925Z' fill='%238274CD'/%3E%3C/svg%3E%0A"); + background-size: 15px 15px; + background-repeat: no-repeat; + background-position: left center; + line-height: 1.5; } + body.landing section.support .options .option .content ul li.contra, + main.job_template section.support .options .option .content ul li.contra { + background-image: url("data:image/svg+xml,%3Csvg width='15' height='15' viewBox='0 0 15 15' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cg clip-path='url(%23clip0_3479_2051)'%3E%3Cpath d='M7.5 0C3.36 0 0 3.36 0 7.5C0 11.64 3.36 15 7.5 15C11.64 15 15 11.64 15 7.5C15 3.36 11.64 0 7.5 0ZM7.5 13.5C4.19 13.5 1.5 10.81 1.5 7.5C1.5 4.19 4.19 1.5 7.5 1.5C10.81 1.5 13.5 4.19 13.5 7.5C13.5 10.81 10.81 13.5 7.5 13.5Z' fill='%238274CD'/%3E%3Cpath d='M10.5302 5.5307L9.47022 4.4707L7.50022 6.4407L5.53022 4.4707L4.47021 5.5307L6.44022 7.5007L4.47021 9.4707L5.53022 10.5307L7.50022 8.5607L9.47022 10.5307L10.5302 9.4707L8.56022 7.5007L10.5302 5.5307Z' fill='%238274CD'/%3E%3C/g%3E%3Cdefs%3E%3CclipPath id='clip0_3479_2051'%3E%3Crect width='15' height='15' fill='white'/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E%0A"); } + body.landing section.support .options .option .content ul li, + main.job_template section.support .options .option .content ul li { + margin-top: 10px; + margin-bottom: 10px; + font-size: 14px; } + body.landing section.support .options .option .content ul li:last-child, + main.job_template section.support .options .option .content ul li:last-child { + margin-bottom: 45px; } + body.landing section.support .options .option .button.orange:hover, + main.job_template section.support .options .option .button.orange:hover { + background: #161616; + color: white; } + body.landing section#jobs, + main.job_template section#jobs { + background-color: #161616; + color: white; + background-image: url('data:image/svg+xml,'); + background-size: cover; } + body.landing section#jobs h1, + main.job_template section#jobs h1 { + max-width: 600px; } + body.landing section#jobs .about, + main.job_template section#jobs .about { + width: calc(33.33% - 10px); } + body.landing section#jobs .flexwrap, + main.job_template section#jobs .flexwrap { + justify-content: space-between; + align-items: flex-start; } + body.landing section#jobs .jobs_collection, + main.job_template section#jobs .jobs_collection { + border-radius: 15px; + border: 1px solid #3A3A3A; + background: rgba(255, 255, 255, 0.05); + box-shadow: 2px 2px 44px 0px rgba(0, 0, 0, 0.35); + backdrop-filter: blur(5px); + width: calc(67% - 50px); } + body.landing section#jobs .jobs_collection h2, + main.job_template section#jobs .jobs_collection h2 { + font-size: 17px; + padding: 20px; + margin: 0; } + body.landing section#jobs .jobs_collection h2 span, + main.job_template section#jobs .jobs_collection h2 span { + color: #B8B8B8; } + body.landing section#jobs .jobs_collection hr, + main.job_template section#jobs .jobs_collection hr { + border: 0; + outline: 0; + height: 1px; + background: #3A3A3A; + margin: 0; } + body.landing section#jobs .jobs_collection .job, + main.job_template section#jobs .jobs_collection .job { + padding: 20px; + border-bottom: 1px solid #2d2d2d; + position: relative; } + body.landing section#jobs .jobs_collection .job:last-child, + main.job_template section#jobs .jobs_collection .job:last-child { + border-bottom: 0; } + body.landing section#jobs .jobs_collection .job .subline, + main.job_template section#jobs .jobs_collection .job .subline { + color: #B8B8B8; + margin-top: 4px; } + body.landing section#jobs .jobs_collection .job a.button, + main.job_template section#jobs .jobs_collection .job a.button { + text-decoration: none; + display: inline-block; + position: absolute; + right: 0; + top: 50%; + transform: translateY(-50%); } + body.landing section#jobs .jobs_collection .job a, + main.job_template section#jobs .jobs_collection .job a { + text-decoration: none; + color: inherit; } + body.landing section#jobs .nojobs p, + main.job_template section#jobs .nojobs p { + padding: 0 20px; + color: #b8b8b8; } + body.landing section#about, + main.job_template section#about { + background-color: #161616; + color: white; + background-image: url("data:image/svg+xml,%3Csvg width='1348' height='597' viewBox='0 0 1348 597' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1346 461.405L1346 145.308C1346 66.161 1281.84 2 1202.69 1.99999V1.99999C1123.55 1.99999 1059.38 66.161 1059.38 145.308L1059.38 222.777C1059.38 277.836 1014.75 322.469 959.692 322.469V322.469C904.634 322.469 860 367.103 860 422.162L860 634' stroke='url(%23paint0_linear_3480_2063)' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'/%3E%3Cpath d='M2 231V360.335C2 403.966 37.3695 439.335 81 439.335V439.335C124.63 439.335 160 474.705 160 518.335V645' stroke='url(%23paint1_linear_3480_2063)' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'/%3E%3Cdefs%3E%3ClinearGradient id='paint0_linear_3480_2063' x1='1244.12' y1='-27.1595' x2='950.396' y2='446.547' gradientUnits='userSpaceOnUse'%3E%3Cstop stop-color='%233C1800'/%3E%3Cstop offset='1' stop-color='%23BC4D00'/%3E%3C/linearGradient%3E%3ClinearGradient id='paint1_linear_3480_2063' x1='-5.28987' y1='317.789' x2='153.412' y2='346.668' gradientUnits='userSpaceOnUse'%3E%3Cstop stop-color='%233C1800'/%3E%3Cstop offset='1' stop-color='%23BC4D00'/%3E%3C/linearGradient%3E%3C/defs%3E%3C/svg%3E%0A"); + background-size: cover; } + body.landing section#about h1, + main.job_template section#about h1 { + max-width: 600px; } + body.landing section#about .about, + main.job_template section#about .about { + width: calc(33.33% - 10px); } + body.landing section#about .flexwrap, + main.job_template section#about .flexwrap { + justify-content: space-between; } + body.landing section#about .team, + main.job_template section#about .team { + border-radius: 15px; + border: 1px solid #3A3A3A; + background: rgba(255, 255, 255, 0.05); + box-shadow: 2px 2px 44px 0px rgba(0, 0, 0, 0.35); + backdrop-filter: blur(5px); + width: calc(67% - 50px); } + body.landing section#about .team h2, + main.job_template section#about .team h2 { + font-size: 17px; + padding: 20px; + margin: 0; } + body.landing section#about .team h2 span, + main.job_template section#about .team h2 span { + color: #B8B8B8; } + body.landing section#about .team hr, + main.job_template section#about .team hr { + border: 0; + outline: 0; + height: 1px; + background: #3A3A3A; + margin: 0; } + body.landing section#about .team .showall.button, + main.job_template section#about .team .showall.button { + margin-left: 20px; + margin-bottom: 20px; + margin-top: 30px; } + body.landing section#about .team .teammembers, + main.job_template section#about .team .teammembers { + border-radius: 0px; + padding: 15px; + box-sizing: border-box; + display: flex; + flex-wrap: wrap; + justify-content: space-between; } + body.landing section#about .team .teammembers .member, + main.job_template section#about .team .teammembers .member { + width: calc(50% - 20px); + display: flex; + justify-content: space-between; + align-items: center; + margin-top: 30px; } + body.landing section#about .team .teammembers .member:nth-child(1), body.landing section#about .team .teammembers .member:nth-child(2), + main.job_template section#about .team .teammembers .member:nth-child(1), + main.job_template section#about .team .teammembers .member:nth-child(2) { + margin-top: 0; } + body.landing section#about .team .teammembers .member .portrait, + main.job_template section#about .team .teammembers .member .portrait { + width: 75px; + height: 75px; + border-radius: 200px; + background-position: center center; + background-size: cover; + background-color: black; + border: 1px solid #3A3A3A; } + body.landing section#about .team .teammembers .member .info, + main.job_template section#about .team .teammembers .member .info { + width: calc(100% - 60px); + padding-left: 15px; + box-sizing: border-box; + font-size: 16px; } + body.landing section#about .team .teammembers .member .info .name, + main.job_template section#about .team .teammembers .member .info .name { + display: block; } + body.landing section#about .team .teammembers .member span.position, + main.job_template section#about .team .teammembers .member span.position { + color: #b8b8b8; } + body.landing section#about .team .teammembers .member.fix, + main.job_template section#about .team .teammembers .member.fix { + margin: 0; + height: 0px; } + body.landing section#whatsnew, + main.job_template section#whatsnew { + background-color: #F9F9F9; } + body.landing section.faq h1, + main.job_template section.faq h1 { + max-width: 600px; } + body.landing section.faq .flexwrap, + main.job_template section.faq .flexwrap { + margin-top: 70px; } + +.newswrap, .newstileswrap { + margin-top: 70px; + margin-bottom: 50px; + display: flex; + flex-wrap: wrap; + justify-content: space-between; + row-gap: 50px; } + +.postpreview { + width: calc(33.33% - 15px); } + .postpreview .postimg { + aspect-ratio: 16/9; + background-color: #fff100; + background-position: left top; + background-size: contain; + border-radius: 15px; + position: relative; } + .postpreview .postimg a.blocklink { + display: block; + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; } + .postpreview .postimg.bg_1 { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='750' height='500' fill='none'%3E%3Cpath fill='%23FF6900' d='M0 0h750v500H0z'/%3E%3Cpath fill='%23F36400' d='M750 72c-23.29.039-34.974 5.916-46.658 11.793-11.722 5.896-23.444 11.793-46.888 11.793s-35.166-5.897-46.889-11.793C597.843 77.896 586.121 72 562.677 72s-35.166 5.897-46.889 11.793c-11.722 5.896-23.444 11.793-46.888 11.793s-35.166-5.897-46.889-11.793C410.289 77.896 398.567 72 375.123 72s-35.167 5.897-46.889 11.793c-11.722 5.896-23.444 11.793-46.888 11.793-23.443 0-35.161-5.896-46.88-11.792C222.744 77.897 211.022 72 187.569 72c-23.454 0-35.179 5.897-46.904 11.794-11.723 5.896-23.446 11.792-46.888 11.792-23.444 0-35.166-5.897-46.889-11.793C35.166 77.896 23.445 72 0 72v166h750V72Z'/%3E%3Cpath fill='%23E75F00' d='M0 369h750V226.641h-.015c-23.445 0-35.167-5.911-46.888-11.822C691.378 208.909 679.66 203 656.225 203c-23.436 0-35.154 5.91-46.872 11.82-11.718 5.911-23.436 11.821-46.873 11.821-23.436 0-35.154-5.91-46.872-11.821-11.718-5.91-23.436-11.82-46.873-11.82-23.436 0-35.154 5.91-46.872 11.82-11.718 5.911-23.437 11.821-46.873 11.821-23.436 0-35.154-5.91-46.872-11.821C316.4 208.91 304.681 203 281.245 203c-23.436 0-35.154 5.91-46.872 11.82-11.719 5.911-23.437 11.821-46.873 11.821-23.434 0-35.149-5.909-46.864-11.819C128.919 208.911 117.2 203 93.755 203s-35.167 5.911-46.888 11.822C35.149 220.731 23.43 226.64 0 226.641V369Z'/%3E%3Cpath fill='%23DC5A00' d='M750 334c-23.29.039-34.974 5.916-46.658 11.793-11.722 5.896-23.444 11.793-46.888 11.793s-35.166-5.897-46.889-11.793C597.843 339.896 586.121 334 562.677 334s-35.166 5.896-46.889 11.793c-11.722 5.896-23.444 11.793-46.888 11.793s-35.166-5.897-46.889-11.793C410.289 339.896 398.567 334 375.123 334s-35.167 5.896-46.889 11.793c-11.722 5.896-23.444 11.793-46.888 11.793-23.443 0-35.161-5.896-46.88-11.792C222.744 339.897 211.022 334 187.569 334c-23.454 0-35.179 5.897-46.904 11.794-11.723 5.896-23.446 11.792-46.888 11.792-23.444 0-35.166-5.897-46.889-11.793C35.166 339.896 23.445 334 0 334v166h750V334Z'/%3E%3C/svg%3E"); } + .postpreview .postimg.bg_2 { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='750' height='500' fill='none'%3E%3Cpath fill='%238C78FF' d='M0 0h750v500H0z'/%3E%3Cpath fill='%238370F3' d='M750 72c-23.29.039-34.974 5.916-46.658 11.793-11.722 5.896-23.444 11.793-46.888 11.793s-35.166-5.897-46.889-11.793C597.843 77.896 586.121 72 562.677 72s-35.166 5.897-46.889 11.793c-11.722 5.896-23.444 11.793-46.888 11.793s-35.166-5.897-46.889-11.793C410.289 77.896 398.567 72 375.123 72s-35.167 5.897-46.889 11.793c-11.722 5.896-23.444 11.793-46.888 11.793-23.443 0-35.161-5.896-46.88-11.792C222.744 77.897 211.022 72 187.569 72c-23.454 0-35.179 5.897-46.904 11.794-11.723 5.896-23.446 11.792-46.888 11.792-23.444 0-35.166-5.897-46.889-11.793C35.166 77.896 23.445 72 0 72v166h750V72Z'/%3E%3Cpath fill='%237C69E5' d='M0 369h750V226.641h-.015c-23.445 0-35.167-5.911-46.888-11.822C691.378 208.909 679.66 203 656.225 203c-23.436 0-35.154 5.91-46.872 11.82-11.718 5.911-23.436 11.821-46.873 11.821-23.436 0-35.154-5.91-46.872-11.821-11.718-5.91-23.436-11.82-46.873-11.82-23.436 0-35.154 5.91-46.872 11.82-11.718 5.911-23.437 11.821-46.873 11.821-23.436 0-35.154-5.91-46.872-11.821C316.4 208.91 304.681 203 281.245 203c-23.436 0-35.154 5.91-46.872 11.82-11.719 5.911-23.437 11.821-46.873 11.821-23.434 0-35.149-5.909-46.864-11.819C128.919 208.911 117.2 203 93.755 203s-35.167 5.911-46.888 11.822C35.149 220.731 23.43 226.64 0 226.641V369Z'/%3E%3Cpath fill='%237361DA' d='M750 334c-23.29.039-34.974 5.916-46.658 11.793-11.722 5.896-23.444 11.793-46.888 11.793s-35.166-5.897-46.889-11.793C597.843 339.896 586.121 334 562.677 334s-35.166 5.896-46.889 11.793c-11.722 5.896-23.444 11.793-46.888 11.793s-35.166-5.897-46.889-11.793C410.289 339.896 398.567 334 375.123 334s-35.167 5.896-46.889 11.793c-11.722 5.896-23.444 11.793-46.888 11.793-23.443 0-35.161-5.896-46.88-11.792C222.744 339.897 211.022 334 187.569 334c-23.454 0-35.179 5.897-46.904 11.794-11.723 5.896-23.446 11.792-46.888 11.792-23.444 0-35.166-5.897-46.889-11.793C35.166 339.896 23.445 334 0 334v166h750V334Z'/%3E%3C/svg%3E"); } + .postpreview .postimg.bg_3 { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='750' height='500' fill='none'%3E%3Cpath fill='%2378A6FF' d='M0 0h750v500H0z'/%3E%3Cpath fill='%23759FF2' d='M750 72c-23.29.039-34.974 5.916-46.658 11.793-11.722 5.896-23.444 11.793-46.888 11.793s-35.166-5.897-46.889-11.793C597.843 77.896 586.121 72 562.677 72s-35.166 5.897-46.889 11.793c-11.722 5.896-23.444 11.793-46.888 11.793s-35.166-5.897-46.889-11.793C410.289 77.896 398.567 72 375.123 72s-35.167 5.897-46.889 11.793c-11.722 5.896-23.444 11.793-46.888 11.793-23.443 0-35.161-5.896-46.88-11.792C222.744 77.897 211.022 72 187.569 72c-23.454 0-35.179 5.897-46.904 11.794-11.723 5.896-23.446 11.792-46.888 11.792-23.444 0-35.166-5.897-46.889-11.793C35.166 77.896 23.445 72 0 72v166h750V72Z'/%3E%3Cpath fill='%236D97E8' d='M0 369h750V226.641h-.015c-23.445 0-35.167-5.911-46.888-11.822C691.378 208.909 679.66 203 656.225 203c-23.436 0-35.154 5.91-46.872 11.82-11.718 5.911-23.436 11.821-46.873 11.821-23.436 0-35.154-5.91-46.872-11.821-11.718-5.91-23.436-11.82-46.873-11.82-23.436 0-35.154 5.91-46.872 11.82-11.718 5.911-23.437 11.821-46.873 11.821-23.436 0-35.154-5.91-46.872-11.821C316.4 208.91 304.681 203 281.245 203c-23.436 0-35.154 5.91-46.872 11.82-11.719 5.911-23.437 11.821-46.873 11.821-23.434 0-35.149-5.909-46.864-11.819C128.919 208.911 117.2 203 93.755 203s-35.167 5.911-46.888 11.822C35.149 220.731 23.43 226.64 0 226.641V369Z'/%3E%3Cpath fill='%23638BD8' d='M750 334c-23.29.039-34.974 5.916-46.658 11.793-11.722 5.896-23.444 11.793-46.888 11.793s-35.166-5.897-46.889-11.793C597.843 339.896 586.121 334 562.677 334s-35.166 5.896-46.889 11.793c-11.722 5.896-23.444 11.793-46.888 11.793s-35.166-5.897-46.889-11.793C410.289 339.896 398.567 334 375.123 334s-35.167 5.896-46.889 11.793c-11.722 5.896-23.444 11.793-46.888 11.793-23.443 0-35.161-5.896-46.88-11.792C222.744 339.897 211.022 334 187.569 334c-23.454 0-35.179 5.897-46.904 11.794-11.723 5.896-23.446 11.792-46.888 11.792-23.444 0-35.166-5.897-46.889-11.793C35.166 339.896 23.445 334 0 334v166h750V334Z'/%3E%3C/svg%3E"); } + .postpreview .postimg.bg_4 { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='750' height='500' fill='none'%3E%3Cpath fill='%2300C770' d='M0 0h750v500H0z'/%3E%3Cpath fill='%2300BD6A' d='M750 72c-23.29.039-34.974 5.916-46.658 11.793-11.722 5.896-23.444 11.793-46.888 11.793s-35.166-5.897-46.889-11.793C597.843 77.896 586.121 72 562.677 72s-35.166 5.897-46.889 11.793c-11.722 5.896-23.444 11.793-46.888 11.793s-35.166-5.897-46.889-11.793C410.289 77.896 398.567 72 375.123 72s-35.167 5.897-46.889 11.793c-11.722 5.896-23.444 11.793-46.888 11.793-23.443 0-35.161-5.896-46.88-11.792C222.744 77.897 211.022 72 187.569 72c-23.454 0-35.179 5.897-46.904 11.794-11.723 5.896-23.446 11.792-46.888 11.792-23.444 0-35.166-5.897-46.889-11.793C35.166 77.896 23.445 72 0 72v166h750V72Z'/%3E%3Cpath fill='%2300B365' d='M0 369h750V226.641h-.015c-23.445 0-35.167-5.911-46.888-11.822C691.378 208.909 679.66 203 656.225 203c-23.436 0-35.154 5.91-46.872 11.82-11.718 5.911-23.436 11.821-46.873 11.821-23.436 0-35.154-5.91-46.872-11.821-11.718-5.91-23.436-11.82-46.873-11.82-23.436 0-35.154 5.91-46.872 11.82-11.718 5.911-23.437 11.821-46.873 11.821-23.436 0-35.154-5.91-46.872-11.821C316.4 208.91 304.681 203 281.245 203c-23.436 0-35.154 5.91-46.872 11.82-11.719 5.911-23.437 11.821-46.873 11.821-23.434 0-35.149-5.909-46.864-11.819C128.919 208.911 117.2 203 93.755 203s-35.167 5.911-46.888 11.822C35.149 220.731 23.43 226.64 0 226.641V369Z'/%3E%3Cpath fill='%2300A95F' d='M750 334c-23.29.039-34.974 5.916-46.658 11.793-11.722 5.896-23.444 11.793-46.888 11.793s-35.166-5.897-46.889-11.793C597.843 339.896 586.121 334 562.677 334s-35.166 5.896-46.889 11.793c-11.722 5.896-23.444 11.793-46.888 11.793s-35.166-5.897-46.889-11.793C410.289 339.896 398.567 334 375.123 334s-35.167 5.896-46.889 11.793c-11.722 5.896-23.444 11.793-46.888 11.793-23.443 0-35.161-5.896-46.88-11.792C222.744 339.897 211.022 334 187.569 334c-23.454 0-35.179 5.897-46.904 11.794-11.723 5.896-23.446 11.792-46.888 11.792-23.444 0-35.166-5.897-46.889-11.793C35.166 339.896 23.445 334 0 334v166h750V334Z'/%3E%3C/svg%3E"); } + .postpreview .postimg.bg_0 { + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='750' height='500' fill='none'%3E%3Cpath fill='%23FFF100' d='M0 0h750v500H0z'/%3E%3Cpath fill='%23F8E700' d='M750 72c-23.29.039-34.974 5.916-46.658 11.793-11.722 5.896-23.444 11.793-46.888 11.793s-35.166-5.897-46.889-11.793C597.843 77.896 586.121 72 562.677 72s-35.166 5.897-46.889 11.793c-11.722 5.896-23.444 11.793-46.888 11.793s-35.166-5.897-46.889-11.793C410.289 77.896 398.567 72 375.123 72s-35.167 5.897-46.889 11.793c-11.722 5.896-23.444 11.793-46.888 11.793-23.443 0-35.161-5.896-46.88-11.792C222.744 77.897 211.022 72 187.569 72c-23.454 0-35.179 5.897-46.904 11.794-11.723 5.896-23.446 11.792-46.888 11.792-23.444 0-35.166-5.897-46.889-11.793C35.166 77.896 23.445 72 0 72v166h750V72Z'/%3E%3Cpath fill='%23ECDC00' d='M0 369h750V226.641h-.015c-23.445 0-35.167-5.911-46.888-11.822C691.378 208.909 679.66 203 656.225 203c-23.436 0-35.154 5.91-46.872 11.82-11.718 5.911-23.436 11.821-46.873 11.821-23.436 0-35.154-5.91-46.872-11.821-11.718-5.91-23.436-11.82-46.873-11.82-23.436 0-35.154 5.91-46.872 11.82-11.718 5.911-23.437 11.821-46.873 11.821-23.436 0-35.154-5.91-46.872-11.821C316.4 208.91 304.681 203 281.245 203c-23.436 0-35.154 5.91-46.872 11.82-11.719 5.911-23.437 11.821-46.873 11.821-23.434 0-35.149-5.909-46.864-11.819C128.919 208.911 117.2 203 93.755 203s-35.167 5.911-46.888 11.822C35.149 220.731 23.43 226.64 0 226.641V369Z'/%3E%3Cpath fill='%23DFD100' d='M750 334c-23.29.039-34.974 5.916-46.658 11.793-11.722 5.896-23.444 11.793-46.888 11.793s-35.166-5.897-46.889-11.793C597.843 339.896 586.121 334 562.677 334s-35.166 5.896-46.889 11.793c-11.722 5.896-23.444 11.793-46.888 11.793s-35.166-5.897-46.889-11.793C410.289 339.896 398.567 334 375.123 334s-35.167 5.896-46.889 11.793c-11.722 5.896-23.444 11.793-46.888 11.793-23.443 0-35.161-5.896-46.88-11.792C222.744 339.897 211.022 334 187.569 334c-23.454 0-35.179 5.897-46.904 11.794-11.723 5.896-23.446 11.792-46.888 11.792-23.444 0-35.166-5.897-46.889-11.793C35.166 339.896 23.445 334 0 334v166h750V334Z'/%3E%3C/svg%3E"); } + .postpreview .postimg.custom, .postpreview .postimg.default { + background-size: cover; + background-position: center center; } + .postpreview .date { + font-size: 14px; + margin-top: 15px; + margin-bottom: 5px; + padding: 0 3px; } + .postpreview h3 { + margin-bottom: 15px; + padding: 0 3px; } + .postpreview h3 a { + text-decoration: none; + color: inherit; } + +.postpreview.hidden { + display: none; } + +main.job_template h2 { + font-size: 37px; } +main.job_template section.job_content { + background-image: url("data:image/svg+xml,%3Csvg width='1440' height='1025' viewBox='0 0 1440 1025' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cg clip-path='url(%23clip0_3486_2192)'%3E%3Crect width='1440' height='1025' fill='white'/%3E%3Crect width='1440' height='1025' fill='%237D66FF' fill-opacity='0.16'/%3E%3Cpath opacity='0.3' d='M1000.58 148.001V-25.998H1439V533.002H1411C1383.39 533.002 1361 555.388 1361 583.002V683.288C1361 710.892 1338.63 733.274 1311.03 733.288L872 733.509C844.54 733.519 822.226 755.674 822.02 783.133L821.196 1059H0V336.516H70.3527C90.4877 336.516 106.811 320.721 106.811 301.237V103.391C106.811 75.7771 129.197 53.3913 156.811 53.3913H665.988C693.602 53.3913 715.988 75.7771 715.988 103.391V143.296C715.988 164.301 733.584 181.336 755.3 181.336H966.128C985.152 181.336 1000.58 166.418 1000.58 148.001Z' fill='%237D66FF' fill-opacity='0.4'/%3E%3C/g%3E%3Cdefs%3E%3CclipPath id='clip0_3486_2192'%3E%3Crect width='1440' height='1025' fill='white'/%3E%3C/clipPath%3E%3C/defs%3E%3C/svg%3E%0A"); + background-size: cover; + background-position: center center; } + main.job_template section.job_content .content { + max-width: 580px; } +main.job_template .flexwrap { + align-items: flex-start; } +main.job_template .applyform { + width: 370px; + border-radius: 15px; + border: 1px solid rgba(125, 102, 255, 0.3); + background: rgba(255, 255, 255, 0.6); + backdrop-filter: blur(7px); + padding: 30px; } + main.job_template .applyform .form .formwrap { + width: 100%; } +main.job_template a.backtoarchive { + color: rgba(0, 0, 0, 0.5); + text-decoration: none; + -webkit-transition: color .3s; + -o-transition: color .3s; + transition: color .3s; + margin-top: 60px; + display: inline-block; } + main.job_template a.backtoarchive:hover { + color: black; } + +body.career h1 { + font-size: 34px; + margin-top: 90px; + margin-bottom: 30px; } +body.career .openpositions { + margin-top: 50px; } + +/** CONTACT STYLES **/ +body.contact section { + padding: 70px 15px; } +body.contact section:nth-child(even) { + background-color: #f5f5f5; } +body.contact section:first-child .wrap { + margin-top: 50px; } +body.contact .intro { + display: flex; + justify-content: space-between; + align-items: stretch; } + body.contact .intro > div { + width: calc(50% - 60px); + position: relative; } + body.contact .intro .graphic { + position: relative; + min-height: 150px; + background-color: #eeebfe; } + body.contact .intro .graphic img { + margin: 0; + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + max-height: 100px; } + body.contact .intro .graphic.Extensions { + background-color: #cdf4e3; } + body.contact .intro .graphic.Contracting { + background-color: #ffeadc; } + +.form { + /** FILE UPLOAD **/ } + .form *, + .form :before, + .form :after { + box-sizing: border-box; } + .form .formwrap { + box-sizing: border-box; + position: relative; + margin: 0 auto; } + .form .formwrap form { + display: flex; + flex-wrap: wrap; + justify-content: space-between; } + .form .success { + color: #333333; + width: 100%; + display: none; + margin-top: 15px; } + .form .success.is-active { + display: flex; + flex-wrap: wrap; + justify-content: space-between; } + .form .success > div:first-of-type { + width: 100%; } + .form .success > div:nth-child(2) { + width: 100%; + align-self: center; } + .form .success > div:nth-child(2) .button { + display: inline-block; + cursor: pointer; + font-size: 14px; + line-height: 1; + font-weight: 600; + transition: background-color .3s; + padding: 12px 20px; + border-radius: 100px; + text-decoration: none; + color: inherit; + box-sizing: border-box; + margin-right: 10px; + float: right; + background: #b8b8b8; + color: black; } + .form .success > div:nth-child(2) .button.yellow { + background-color: #fff100; + color: black; } + .form .success > div:nth-child(2) .button.yellow:hover { + background-color: white; } + .form .success > div:nth-child(2) .button.orange { + background-color: #FF6900; + color: black; } + .form .success > div:nth-child(2) .button.orange:hover { + background-color: white; } + .form .success > div:nth-child(2) .button.transparent { + box-shadow: 0 0 0 1px black inset; } + .form .success > div:nth-child(2) .button.transparent.dark { + box-shadow: 0 0 0 1px white inset; } + .form .success > div:nth-child(2) .button.transparent:hover { + background: #7D66FF; + box-shadow: 0 0 0 1px #7D66FF inset; + color: white; } + .form .success > div:nth-child(2) .button.transparent.arrow-right:hover::after { + /*background-image: url("data:image/svg+xml,%3Csvg width='13' height='9' viewBox='0 0 13 9' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12.472 4.64599L8.146 8.99999L7.25 8.07599L10.008 5.33199H0V3.97399H10.036L7.25 1.21599L8.146 0.291992L12.472 4.64599Z' fill='white'/%3E%3C/svg%3E%0A");*/ } + .form .success > div:nth-child(2) .button.white { + background: white; + color: black; } + .form .success > div:nth-child(2) .button.white:hover { + background: #7D66FF; + color: white; } + .form .success > div:nth-child(2) .button.arrow-down::after { + content: "↓"; + margin-left: 5px; } + .form .success > div:nth-child(2) .button.arrow-right:after { + /*background-image: url("data:image/svg+xml,%3Csvg width='13' height='9' viewBox='0 0 13 9' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12.472 4.64599L8.146 8.99999L7.25 8.07599L10.008 5.33199H0V3.97399H10.036L7.25 1.21599L8.146 0.291992L12.472 4.64599Z' fill='black'/%3E%3C/svg%3E%0A"); + content: ""; + width: 13px; + height: 9px; + background-size: contain; + display: inline-block; + */ + margin-left: 5px; + transition: all .25s; + content: "→"; } + .form .success > div:nth-child(2) .button.arrow-right:hover:after { + margin-left: 12px; } + .form .success > div:nth-child(2) .button:hover { + text-decoration: none; } + .form .formwrap.Contracting input:focus, .form .formwrap.Contracting textarea:focus { + background: #ffeadc; } + .form .formwrap.Contracting .bar, .form .formwrap.Contracting .bar:before, .form .formwrap.Contracting button[type="submit"] { + background: #fd6a25; } + .form .formwrap.Contracting button[type="submit"]:hover { + background-color: rgba(255, 105, 0, 0.5); } + .form .formwrap.Contracting input:focus ~ label, .form .formwrap.Contracting input:valid:not(:placeholder-shown) ~ label, + .form .formwrap.Contracting textarea:focus ~ label, + .form .formwrap.Contracting textarea:valid:not(:placeholder-shown) ~ label { + color: #fd6a25; } + .form .formwrap.Extensions input:focus, .form .formwrap.Extensions textarea:focus { + background: #cdf4e3; } + .form .formwrap.Extensions .bar, .form .formwrap.Extensions .bar:before, .form .formwrap.Extensions button[type="submit"] { + background: #00C770; } + .form .formwrap.Extensions button[type="submit"]:hover { + background-color: rgba(0, 199, 112, 0.5); } + .form .formwrap.Extensions input:focus ~ label, .form .formwrap.Extensions input:valid:not(:placeholder-shown) ~ label, + .form .formwrap.Extensions textarea:focus ~ label, + .form .formwrap.Extensions textarea:valid:not(:placeholder-shown) ~ label { + color: #00C770; } + .form .formwrap.License input:focus, .form .formwrap.License textarea:focus { + background: #ece9fc; } + .form .formwrap.License .bar, .form .formwrap.License .bar:before, .form .formwrap.License button[type="submit"] { + background: #8b78f9; } + .form .formwrap.License button[type="submit"]:hover { + background-color: rgba(140, 120, 255, 0.5); } + .form .formwrap.License input:focus ~ label, .form .formwrap.License input:valid:not(:placeholder-shown) ~ label, + .form .formwrap.License textarea:focus ~ label, + .form .formwrap.License textarea:valid:not(:placeholder-shown) ~ label { + color: #8b78f9; } + .form .group { + width: 100%; + position: relative; + margin: 10px 0; } + .form .group.halfsize { + width: calc(50% - 10px); } + .form textarea { + resize: none; } + .form input[type="text"], + .form input[type="password"], + .form textarea { + background-color: white; + color: black; + font-size: 16px; + padding: 35px 10px 10px 10px; + display: block; + width: 100%; + border: none; + border-radius: 10px; + transition: all .3s; + /* + &:not(:placeholder-shown):not(:focus):invalid ~ label{ + color: red; + top: 20px; + } + */ } + .form input[type="text"]:focus, + .form input[type="password"]:focus, + .form textarea:focus { + outline: none; + /* + border-bottom-left-radius: 0px; + border-bottom-right-radius: 0px; + */ } + .form input[type="text"]:focus ~ label, .form input[type="text"]:valid:not(:placeholder-shown) ~ label, + .form input[type="password"]:focus ~ label, + .form input[type="password"]:valid:not(:placeholder-shown) ~ label, + .form textarea:focus ~ label, + .form textarea:valid:not(:placeholder-shown) ~ label { + top: 8px; + font-size: 12px; + color: #7D66FF; } + .form input[type="text"]:focus ~ .bar:before, + .form input[type="password"]:focus ~ .bar:before, + .form textarea:focus ~ .bar:before { + width: 100%; } + .form input[type="text"]:focus, + .form input[type="password"]:focus, + .form textarea:focus { + background: #DDD8FF; } + .form input[type="password"] { + letter-spacing: 0.3em; } + .form .file-input { + display: inline-block; + text-align: left; + background: white; + padding: 16px; + width: 450px; + position: relative; + border-radius: 10px; + display: flex; + flex-wrap: wrap; + align-items: center; + justify-content: space-between; } + .form .file-input > [type='file'] { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + opacity: 0; + z-index: 10; + cursor: pointer; } + .form .file-input > .button { + display: inline-block; + cursor: pointer; + background-color: #D9D9D9; + width: 30px; + height: 30px; + border-radius: 50px; + margin-right: 8px; + background-image: url("data:image/svg+xml,%3Csvg width='11' height='10' viewBox='0 0 11 10' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M6.25504 9.40523V5.57608H10.1368V3.90518H6.25504V0.11084H4.51436V3.90518H0.615234V5.57608H4.51436V9.40523H6.25504Z' fill='%23717171'/%3E%3C/svg%3E%0A"); + background-repeat: no-repeat; + background-size: 45%; + background-position: center center; + padding: 0; + order: 2; } + .form .file-input > .label { + color: #717171; + white-space: nowrap; + opacity: 1; + overflow: hidden; + width: calc(100% - 50px); + order: 1; } + .form .file-input:hover > .button { + background-color: #fd6a25; + background-image: url("data:image/svg+xml,%3Csvg width='11' height='10' viewBox='0 0 11 10' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M6.25504 9.40523V5.57608H10.1368V3.90518H6.25504V0.11084H4.51436V3.90518H0.615234V5.57608H4.51436V9.40523H6.25504Z' fill='white'/%3E%3C/svg%3E%0A"); } + .form .file-input + .file-input.-chosen > .label { + opacity: 1; } + .form label { + color: #717171; + font-size: 16px; + font-weight: normal; + position: absolute; + pointer-events: none; + left: 10px; + top: 23px; + transition: 300ms ease all; } + .form .bar { + position: relative; + display: block; + width: 100%; } + .form .bar:before { + content: ''; + height: 2px; + width: 0; + bottom: 0px; + position: absolute; + /*background: $hl-color;*/ + background: transparent; + transition: 300ms ease all; + left: 0%; } + .form button[type="submit"] { + outline: 0; + border: 0; + padding: 0; + margin: 0; + margin-top: 30px; + display: inline-block; + cursor: pointer; + font-size: 14px; + line-height: 1; + font-weight: 600; + transition: background-color .3s; + padding: 12px 20px; + border-radius: 100px; + text-decoration: none; + color: inherit; + box-sizing: border-box; + margin-right: 10px; } + .form button[type="submit"].yellow { + background-color: #fff100; + color: black; } + .form button[type="submit"].yellow:hover { + background-color: white; } + .form button[type="submit"].orange { + background-color: #FF6900; + color: black; } + .form button[type="submit"].orange:hover { + background-color: white; } + .form button[type="submit"].transparent { + box-shadow: 0 0 0 1px black inset; } + .form button[type="submit"].transparent.dark { + box-shadow: 0 0 0 1px white inset; } + .form button[type="submit"].transparent:hover { + background: #7D66FF; + box-shadow: 0 0 0 1px #7D66FF inset; + color: white; } + .form button[type="submit"].transparent.arrow-right:hover::after { + /*background-image: url("data:image/svg+xml,%3Csvg width='13' height='9' viewBox='0 0 13 9' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12.472 4.64599L8.146 8.99999L7.25 8.07599L10.008 5.33199H0V3.97399H10.036L7.25 1.21599L8.146 0.291992L12.472 4.64599Z' fill='white'/%3E%3C/svg%3E%0A");*/ } + .form button[type="submit"].white { + background: white; + color: black; } + .form button[type="submit"].white:hover { + background: #7D66FF; + color: white; } + .form button[type="submit"].arrow-down::after { + content: "↓"; + margin-left: 5px; } + .form button[type="submit"].arrow-right:after { + /*background-image: url("data:image/svg+xml,%3Csvg width='13' height='9' viewBox='0 0 13 9' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M12.472 4.64599L8.146 8.99999L7.25 8.07599L10.008 5.33199H0V3.97399H10.036L7.25 1.21599L8.146 0.291992L12.472 4.64599Z' fill='black'/%3E%3C/svg%3E%0A"); + content: ""; + width: 13px; + height: 9px; + background-size: contain; + display: inline-block; + */ + margin-left: 5px; + transition: all .25s; + content: "→"; } + .form button[type="submit"].arrow-right:hover:after { + margin-left: 12px; } + .form button[type="submit"]:hover { + text-decoration: none; } + .form button[type="submit"].button:hover { + color: white; + background-color: black; } + +#ajaxForm div.group { + transition: opacity .5s; } + +#ajaxForm.inactive div.group { + opacity: .2; + pointer-events: none; } + #ajaxForm.inactive div.group input { + pointer-events: none !important; } + +.post { + position: relative; } + +.newswrap { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + min-height: calc(100vh - 111px); } + .newswrap .postwrap { + position: relative; + width: 100%; } + .newswrap .postwrap .postcontent { + max-width: 720px; + margin: 0 auto; + margin-top: 80px; + margin-bottom: 80px; } + .newswrap .postwrap .postcontent h2 { + font-size: 34px; + line-height: 44px; } + .newswrap .postwrap .postcontent p, .newswrap .postwrap .postcontent ul li, .newswrap .postwrap .postcontent ol li { + font-size: 19px; + line-height: 29px; + margin-top: 30px; + margin-bottom: 30px; + font-family: "SuisseIntl", Helvetica, Arial, sans-serif; } + .newswrap .postwrap .postcontent p i, .newswrap .postwrap .postcontent p em, .newswrap .postwrap .postcontent ul li i, .newswrap .postwrap .postcontent ul li em, .newswrap .postwrap .postcontent ol li i, .newswrap .postwrap .postcontent ol li em { + font-style: italic; } + .newswrap .postwrap .postcontent h4 { + font-size: 24px; + line-height: 31px; + font-weight: normal; + margin-top: 60px; } + .newswrap .postwrap .postcontent table thead th { + color: white; + font-weight: normal; + text-align: right; + font-size: 14px; } + .newswrap .postwrap .postcontent table tbody td { + font-weight: normal; + text-align: right; + font-size: 14px; } + .newswrap .postwrap .postcontent table tbody tr:hover { + background-color: #fff100; } + .newswrap .postwrap .postcontent div.highlight { + max-width: 750px; } + .newswrap .postwrap .postcontent div.highlighter-rouge + table, + .newswrap .postwrap .postcontent table + div.highlighter-rouge { + margin-top: 30px; } + .newswrap .postwrap .infoline { + color: #b8b8b8; + margin-bottom: 15px; } + .newswrap .postwrap .infoline span:first-child { + margin-right: 80px; } + .newswrap .postwrap .postpreview { + margin: 0 auto; + margin-top: 80px; + margin-bottom: 80px; } + .newswrap .postwrap .postpreview h2 a { + color: black; + text-decoration: none; } + .newswrap .postwrap a.backtoarchive, + .newswrap .postwrap a.continue { + color: #b8b8b8; + text-decoration: none; + -webkit-transition: color .3s; + -o-transition: color .3s; + transition: color .3s; } + .newswrap .postwrap a.backtoarchive:hover, + .newswrap .postwrap a.continue:hover { + color: black; } + .newswrap .postwrap .singleentry h1 { + font-size: 47px; + line-height: 1; + margin-bottom: 30px; } + +/** SUPPORT OPTIONS PAGE **/ +body.supportoptions section { + padding: 70px 15px; } +body.supportoptions h1 { + font-size: 34px; } +body.supportoptions .options { + display: flex; + flex-wrap: wrap; + gap: 24px; + margin-top: 70px; } +body.supportoptions .option { + display: flex; + flex-direction: column; + width: 25%; + position: relative; + background: #F5F5F5; + border: 1px solid #F5F5F5; + border-top: 0; + transition: border .3s; } + body.supportoptions .option h2 { + margin-top: 15px; + font-weight: 600; + font-size: 34px; + margin-bottom: 20px; + line-height: .95; } + body.supportoptions .option hr { + outline: 0; + border: 0; + border-top: 1px solid #DADADA; } + body.supportoptions .option ul { + padding: 0; + margin: 0; + margin-top: 20px; + padding-left: 20px; } + body.supportoptions .option ul li::marker { + content: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='17' height='13' viewBox='0 0 17 13' style='enable-background:new 0 0 17 13' xml:space='preserve'%3E%3Cpath d='m15.9 1.3-10 10-5-5' style='fill:none;stroke:%23000;stroke-width:2'/%3E%3C/svg%3E"); + /*background-image: url("data:image/svg+xml,%3Csvg width='17' height='13' viewBox='0 0 17 13' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M16 1 6 11 1 6' stroke='%23000' stroke-width='2'/%3E%3C/svg%3E");*/ } + body.supportoptions .option ul li.contra::marker { + content: url("data:image/svg+xml,%0A%3Csvg version='1.1' width='17' height='13' xmlns='http://www.w3.org/2000/svg' x='0' y='0' viewBox='0 0 17 13' style='enable-background:new 0 0 17 13' xml:space='preserve'%3E%3Cstyle%3E.st0%7Bfill:none;stroke:%23000;stroke-width:2%7D%3C/style%3E%3Cpath class='st0' d='m3 11.9 11-11M3 .9l11 11'/%3E%3C/svg%3E"); } + body.supportoptions .option ul li { + margin-top: 10px; + margin-bottom: 10px; + padding-left: 10px; } + body.supportoptions .option ul li:last-child { + margin-bottom: 45px; } + body.supportoptions .option a.button { + background: black; + color: white; + display: block; + width: calc(100% - 40px); + text-align: center; + text-decoration: none; + margin-top: auto; + margin-left: 20px; + margin-bottom: 20px; + transition: all .3s; } + body.supportoptions .option a.button:hover { + color: #FF6900; } +body.supportoptions .content { + flex: 1; + border: 1px solid #F5F5F5; + border-top: none; + padding: 26px 20px 0px 20px; } + body.supportoptions .content::before { + content: ""; + background-color: black; + width: calc(100% + 2px); + height: 6px; + position: absolute; + display: block; + top: 0; + left: -1px; } +body.supportoptions .option:hover { + border: 1px solid #DADADA; + border-top: none; } +body.supportoptions .tag { + background: #DADADA; + display: inline-block; + padding: .15em .7em; } +body.supportoptions .option:nth-child(2) .content::before { + background: #FF6900; } +body.supportoptions .option:nth-child(2) a.button { + background: #FF6900; + color: black; } + body.supportoptions .option:nth-child(2) a.button:hover { + background-color: rgba(255, 105, 0, 0.5); + color: black; } + +/** PURE CSS SPINNER **/ +.lds-ellipsis { + display: inline-block; + position: relative; + width: 80px; + height: 62px; + display: none; } + +.lds-ellipsis div { + position: absolute; + top: 43px; + width: 10px; + height: 10px; + border-radius: 50%; + background: #333333; + animation-timing-function: cubic-bezier(0, 1, 1, 0); } + +.lds-ellipsis div:nth-child(1) { + left: 8px; + animation: lds-ellipsis1 0.6s infinite; } + +.lds-ellipsis div:nth-child(2) { + left: 8px; + animation: lds-ellipsis2 0.6s infinite; } + +.lds-ellipsis div:nth-child(3) { + left: 32px; + animation: lds-ellipsis2 0.6s infinite; } + +.lds-ellipsis div:nth-child(4) { + left: 56px; + animation: lds-ellipsis3 0.6s infinite; } + +@keyframes lds-ellipsis1 { + 0% { + transform: scale(0); } + 100% { + transform: scale(1); } } +@keyframes lds-ellipsis3 { + 0% { + transform: scale(1); } + 100% { + transform: scale(0); } } +@keyframes lds-ellipsis2 { + 0% { + transform: translate(0, 0); } + 100% { + transform: translate(24px, 0); } } +/** FOOTER **/ +footer .sitefooter { + background-color: black; + color: white; } + footer .sitefooter .footercontent { + max-width: 1150px; + margin: 0 auto; + padding: 60px 15px 20px 15px; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + justify-content: space-between; + column-gap: 80px; + font-size: 14px; + flex-wrap: wrap; } + footer .sitefooter .footercontent .footernavigation { + display: flex; + column-gap: 50px; } + footer .sitefooter .footercontent .footernavigation a { + line-height: 2; } + footer .sitefooter .footercontent .bottomline { + width: 100%; + margin-top: 60px; + font-weight: 400; + color: #979797; } + footer .sitefooter .footercontent strong { + font-weight: normal; + color: #fff100; } + footer .sitefooter .footercontent > div { + overflow: visible; + position: relative; } + footer .sitefooter .footercontent > div a { + color: #B8B8B8; + text-decoration: none; + -webkit-transition: color .3s; + -o-transition: color .3s; + transition: color .3s; } + footer .sitefooter .footercontent > div a:hover { + color: #7D66FF; } + footer .sitefooter .footercontent h6 { + text-decoration: none; + font-family: "SuisseIntl", Helvetica, Arial, sans-serif; + font-weight: 500; + margin-top: 0px; + margin-bottom: 20px; + color: white; } + footer .sitefooter .footercontent img.duckdbfooter { + width: auto; + height: 39px; } + footer .sitefooter .footercontent .icons a { + text-decoration: none; + font-size: 25px; } + footer .sitefooter .footercontent .icons a span { + margin-right: 4px; } + footer .sitefooter .footercontent .tmhints a { + font-size: 11px; + color: #878787; + text-decoration: none; } + +.grecaptcha-badge { + visibility: hidden; } + +@media print { + header, footer { + display: none !important; } } diff --git a/css/mobilestyles.css b/css/mobilestyles.css new file mode 100644 index 0000000..b3bb3de --- /dev/null +++ b/css/mobilestyles.css @@ -0,0 +1,324 @@ +@media only screen and (max-width: 1100px) { + body.landing .whatsnew article.post { + width: 100%; + margin-bottom: 30px; } + + body.contact .form .formwrap { + width: 65%; } + + body.landing .products .product { + width: calc(33.3% - 10px); } + + .pagehead { + padding: 0 15px; } } +@media only screen and (max-width: 980px) { + footer .sitefooter .footercontent { + flex-wrap: wrap; + justify-content: space-between; + column-gap: 40px; } + + footer .sitefooter .footercontent > div:first-child { + width: 100%; + margin-bottom: 30px; } + + body.supportoptions .options { + gap: 15px; } + + body.supportoptions .option { + width: 50%; } + + body.landing #commercial_support .flex p { + margin-right: 40px; } + + footer .sitefooter .footercontent { + flex-wrap: wrap; + justify-content: space-between; + column-gap: 40px; } } +@media only screen and (max-width: 940px) { + body.landing section.welcome .flexwrap .duckdb, main.job_template section.welcome .flexwrap .duckdb { + width: 100%; } + + body.landing section.welcome .flexwrap .officeimage { + width: 100%; } + + body.landing section#jobs .flexwrap, + body.landing section#about .flexwrap { + flex-wrap: wrap; } + + body.landing section#jobs .jobs_collection, + body.landing section#jobs .about { + width: 100%; } + + .wrap p { + max-width: 600px; } + + body.landing section#about .about { + width: 100%; } + + body.landing section#about .team { + width: 100%; + margin-top: 40px; } } +@media only screen and (max-width: 860px) { + body.landing .about .teammembers .member { + width: 50%; } + + body.landing section.support .options { + width: 100%; + flex-wrap: wrap; + row-gap: 20px; } + + body.landing section.support .intro { + width: 100%; } } +@media only screen and (max-width: 800px) { + body.landing .about .teammembers .member { + width: 50%; } + + body.landing .welcome .mainlinks ul, + .headerline { + overflow: hidden; } + + body.landing .products .product { + width: 100%; + margin-bottom: 50px; } + + body.landing .about .teammembers .member { + width: 100%; } + + body.landing .about .teammembers .member:nth-child(2), body.landing .about .teammembers .member:nth-child(3) { + margin-top: 30px; } + + body.landing .welcome .mainlinks ul li { + margin-bottom: 10px; + width: 80%; } + + body.contact .form .formwrap { + width: 80%; } + + body.landing .welcome .mainlinks ul, .sitefooter .footercontent { + flex-wrap: wrap; } } +@media only screen and (max-width: 780px) { + footer .sitefooter .footercontent > div:first-child { + width: 100%; + margin-bottom: 30px; } } +@media only screen and (max-width: 700px) { + body.contact .intro { + flex-wrap: wrap; } + + body.contact .intro > div { + width: 100%; } + + body.contact .intro .graphic { + height: 170px; } + + body.landing label.onlymobile { + display: block; } + + main.job_template .applyform { + width: 100%; + margin-top: 50px; } + + main.job_template a.backtoarchive { + margin-top: 20px; } } +@media only screen and (max-width: 660px) { + body.contact .form .formwrap { + width: 95%; } + + .hamburger { + display: flex; } + + nav.mobile .hamburger { + display: flex !important; } + + .landingmenu { + margin-left: -15px; } + + .headerline nav { + display: block; + position: fixed; + height: 100%; + width: 75%; + right: 0; + top: 70px; + border-radius: 0px 0px 15px 15px; + border: 1px solid #393939; + border-top: 0; + background: rgba(9, 9, 9, 0.85); + backdrop-filter: blur(5px); + -webkit-backdrop-filter: blur(5px); + right: -100%; + pointer-events: none; + transition: all .3s; } + .headerline nav > div { + margin-left: 20px; } + .headerline nav.slidein { + pointer-events: all; + right: 0%; } + .headerline nav ul.menu { + display: flex; + flex-direction: column; + left: 0; } + .headerline nav ul.menu li { + line-height: 20px; + margin-left: 20px; } + .headerline nav ul.menu li a { + color: black; } + + .pagehead h1 { + font-size: 35px; + padding: 50px 15px; } + + header .headerline .headercontent .landingmenu nav .menu { + left: 0; + align-items: flex-start; + justify-content: flex-start; + padding-top: 30px; } + header .headerline .headercontent .landingmenu nav .menu a { + line-height: 20px; } + + main { + transition: opacity .3s; } + + footer .sitefooter .footercontent, + header .headerline .headercontent { + max-width: calc(100% - 30px); } + + footer .sitefooter .footercontent { + padding: 45px 0px; } + + footer .sitefooter .footercontent { + column-gap: 0; } + + footer .sitefooter .footercontent > div { + width: 180px; + box-sizing: border-box; + margin-bottom: 30px; } + + footer .sitefooter .footercontent > div:first-child { + width: 100%; } + + body.landing footer .sitefooter .footercontent .footernavigation, + .sitefooter .footercontent .footernavigation { + column-gap: 30px; + row-gap: 40px; + flex-wrap: wrap; } + body.landing footer .sitefooter .footercontent .footernavigation > div, + .sitefooter .footercontent .footernavigation > div { + width: calc(50% - 15px); } + body.landing footer .sitefooter .footercontent .footernavigation a, + .sitefooter .footercontent .footernavigation a { + line-height: 1.5; } + + .jobs_collection .job a.button { + position: relative; + transform: none; + margin-top: 7px; } + + body.landing #commercial_support .flex > div { + width: 100%; + order: 2; } + body.landing #commercial_support .flex > div:nth-child(2) { + order: 1; + margin-bottom: 30px; } + + body.landing .welcome h1, + body.landing .intro h1, + body.landing section#jobs h1, + body.landing section.blog h1, + body.landing section#about h1 { + font-size: 35px; } + + body.landing section.support .options .option { + width: 100%; } + + body.landing section#about .team .teammembers .member { + width: 100%; } + + body.landing section#about .team .teammembers .member:nth-child(2), + body.landing section#about .team .teammembers .member { + margin-top: 20px; } + + .postpreview { + width: 100%; } + .postpreview:last-child { + margin-bottom: 0; } + + .newstileswrap { + margin-bottom: 0; + margin-top: 50px; } + + body.landing section#jobs .jobs_collection .job a.button { + display: inline-block; + position: relative; + top: unset; + margin-top: 20px; + transform: none; } + + body.landing section.collaborators { + padding-top: 50px; } + + body.landing section.collaborators .logos { + column-gap: 30px; + row-gap: 10px; } + + body.landing section.collaborators .logos img { + height: 30px; } + + .newswrap, .newstileswrap { + row-gap: 30px; } + + #load-more-news { + margin-top: 30px; } } +@media only screen and (max-width: 660px) { + body.supportoptions .option { + width: 100%; } } +@media only screen and (max-width: 580px) { + footer .sitefooter .footercontent > div { + width: 50%; } + + footer .sitefooter .footercontent .linktoduckdblabs .button, + footer .sitefooter .footercontent .gitbutton { + width: 170px; } } +@media only screen and (min-device-width: 320px) and (max-device-width: 480px) { + body.landing section, + main.job_template section, + main > section { + padding: 50px 15px; } + + body.landing .whatsnew article.post .generative { + width: 100px; + height: 100px; + display: none; } + + body.landing .whatsnew article.post .info { + width: 100%; } + + .headerline .headercontent { + max-width: calc(100% - 20px); } + + .form .formwrap { + width: 100%; } + + .form .group.halfsize { + width: 100%; } + + footer .sitefooter .footercontent > div { + width: 100%; } + + body.landing .welcome .mainlinks ul a { + display: inline-block; + width: 100%; } + body.landing .welcome .mainlinks ul a li { + margin-left: 0; + width: 80%; + margin: 0 auto; + margin-bottom: 10px; } + + .newswrap { + width: 100%; } + + .newswrap .postwrap { + width: calc(100% - 20px); + margin: 0 auto; } + + footer .sitefooter .footercontent .bottomline { + font-size: 11px; } } diff --git a/css/normalize.css b/css/normalize.css new file mode 100644 index 0000000..575c0cb --- /dev/null +++ b/css/normalize.css @@ -0,0 +1,502 @@ +/*! normalize.css http://github.com/necolas/normalize.css */ + +/* ============================================================================= + HTML5 display definitions + ========================================================================== */ + +/* + * Corrects block display not defined in IE6/7/8/9 & FF3 + */ + +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +nav, +section, +summary { + display: block; +} + +/* + * Corrects inline-block display not defined in IE6/7/8/9 & FF3 + */ + +audio, +canvas, +video { + display: inline-block; + *display: inline; + *zoom: 1; +} + +/* + * Prevents modern browsers from displaying 'audio' without controls + */ + +audio:not([controls]) { + display: none; +} + +/* + * Addresses styling for 'hidden' attribute not present in IE7/8/9, FF3, S4 + * Known issue: no IE6 support + */ + +[hidden] { + display: none; +} + + +/* ============================================================================= + Base + ========================================================================== */ + +/* + * 1. Corrects text resizing oddly in IE6/7 when body font-size is set using em units + * http://clagnut.com/blog/348/#c790 + * 2. Prevents iOS text size adjust after orientation change, without disabling user zoom + * www.456bereastreet.com/archive/201012/controlling_text_size_in_safari_for_ios_without_disabling_user_zoom/ + */ + +html { + font-size: 100%; /* 1 */ + -webkit-text-size-adjust: 100%; /* 2 */ + -ms-text-size-adjust: 100%; /* 2 */ +} + +/* + * Addresses font-family inconsistency between 'textarea' and other form elements. + */ + +html, +button, +input, +select, +textarea { + font-family: sans-serif; +} + +/* + * Addresses margins handled incorrectly in IE6/7 + */ + +body { + margin: 0; +} + + +/* ============================================================================= + Links + ========================================================================== */ + +/* + * Addresses outline displayed oddly in Chrome + */ + +a:focus { + outline: thin dotted; +} + +/* + * Improves readability when focused and also mouse hovered in all browsers + * people.opera.com/patrickl/experiments/keyboard/test + */ + +a:hover, +a:active { + outline: 0; +} + + +/* ============================================================================= + Typography + ========================================================================== */ + +/* + * Addresses font sizes and margins set differently in IE6/7 + * Addresses font sizes within 'section' and 'article' in FF4+, Chrome, S5 + */ + +h1 { + font-size: 2em; + margin: 0; +} + +h2 { + font-size: 1.5em; + margin: 0; +} + +h3 { + font-size: 1.17em; + margin: 0; +} + +h4 { + font-size: 1em; + margin: 0; +} + +h5 { + font-size: 0.83em; + margin: 0; +} + +h6 { + font-size: 0.75em; + margin: 0; +} + +/* + * Addresses styling not present in IE7/8/9, S5, Chrome + */ + +abbr[title] { + border-bottom: 1px dotted; +} + +/* + * Addresses style set to 'bolder' in FF3+, S4/5, Chrome +*/ + +b, +strong { + font-weight: bold; +} + +blockquote { + margin: 1em 40px; +} + +/* + * Addresses styling not present in S5, Chrome + */ + +dfn { + font-style: italic; +} + +/* + * Addresses styling not present in IE6/7/8/9 + */ + +mark { + background: #ff0; + color: #000; +} + +/* + * Addresses margins set differently in IE6/7 + */ + +p, +pre { + margin: 1em 0; +} + +/* + * Corrects font family set oddly in IE6, S4/5, Chrome + * en.wikipedia.org/wiki/User:Davidgothberg/Test59 + */ + +pre, +code, +kbd, +samp { + font-family: monospace, serif; + _font-family: 'courier new', monospace; + font-size: 1em; +} + +/* + * Improves readability of pre-formatted text in all browsers + */ + +pre { + white-space: pre; + white-space: pre-wrap; + word-wrap: break-word; +} + +/* + * 1. Addresses CSS quotes not supported in IE6/7 + * 2. Addresses quote property not supported in S4 + */ + +/* 1 */ + +q { + quotes: none; +} + +/* 2 */ + +q:before, +q:after { + content: ''; + content: none; +} + +small { + font-size: 75%; +} + +/* + * Prevents sub and sup affecting line-height in all browsers + * gist.github.com/413930 + */ + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sup { + top: -0.5em; +} + +sub { + bottom: -0.25em; +} + + +/* ============================================================================= + Lists + ========================================================================== */ + +/* + * Addresses margins set differently in IE6/7 + */ + +dl, +menu, +ol, +ul { + margin: 1em 0; +} + +dd { + margin: 0 0 0 40px; +} + +/* + * Addresses paddings set differently in IE6/7 + */ + +menu, +ol, +ul { + padding: 0 0 0 40px; +} + +/* + * Corrects list images handled incorrectly in IE7 + */ + +nav ul, +nav ol { + list-style: none; + list-style-image: none; +} + + +/* ============================================================================= + Embedded content + ========================================================================== */ + +/* + * 1. Removes border when inside 'a' element in IE6/7/8/9, FF3 + * 2. Improves image quality when scaled in IE7 + * code.flickr.com/blog/2008/11/12/on-ui-quality-the-little-things-client-side-image-resizing/ + */ + +img { + border: 0; /* 1 */ + -ms-interpolation-mode: bicubic; /* 2 */ +} + +/* + * Corrects overflow displayed oddly in IE9 + */ + +svg:not(:root) { + overflow: hidden; +} + + +/* ============================================================================= + Figures + ========================================================================== */ + +/* + * Addresses margin not present in IE6/7/8/9, S5, O11 + */ + +figure { + margin: 0; +} + + +/* ============================================================================= + Forms + ========================================================================== */ + +/* + * Corrects margin displayed oddly in IE6/7 + */ + +form { + margin: 0; +} + +/* + * Define consistent border, margin, and padding + */ + +fieldset { + border: 1px solid #c0c0c0; + margin: 0 2px; + padding: 0.35em 0.625em 0.75em; +} + +/* + * 1. Corrects color not being inherited in IE6/7/8/9 + * 2. Corrects text not wrapping in FF3 + * 3. Corrects alignment displayed oddly in IE6/7 + */ + +legend { + border: 0; /* 1 */ + padding: 0; + white-space: normal; /* 2 */ + *margin-left: -7px; /* 3 */ +} + +/* + * 1. Corrects font size not being inherited in all browsers + * 2. Addresses margins set differently in IE6/7, FF3+, S5, Chrome + * 3. Improves appearance and consistency in all browsers + */ + +button, +input, +select, +textarea { + font-size: 100%; /* 1 */ + margin: 0; /* 2 */ + vertical-align: baseline; /* 3 */ + *vertical-align: middle; /* 3 */ +} + +/* + * Addresses FF3/4 setting line-height on 'input' using !important in the UA stylesheet + */ + +button, +input { + line-height: normal; /* 1 */ +} + +/* + * 1. Improves usability and consistency of cursor style between image-type 'input' and others + * 2. Corrects inability to style clickable 'input' types in iOS + * 3. Removes inner spacing in IE7 without affecting normal text inputs + * Known issue: inner spacing remains in IE6 + */ + +button, +input[type="button"], +input[type="reset"], +input[type="submit"] { + cursor: pointer; /* 1 */ + -webkit-appearance: button; /* 2 */ + *overflow: visible; /* 3 */ +} + +/* + * Re-set default cursor for disabled elements + */ + +button[disabled], +input[disabled] { + cursor: default; +} + +/* + * 1. Addresses box sizing set to content-box in IE8/9 + * 2. Removes excess padding in IE8/9 + * 3. Removes excess padding in IE7 + Known issue: excess padding remains in IE6 + */ + +input[type="checkbox"], +input[type="radio"] { + box-sizing: border-box; /* 1 */ + padding: 0; /* 2 */ + *height: 13px; /* 3 */ + *width: 13px; /* 3 */ +} + +/* + * 1. Addresses appearance set to searchfield in S5, Chrome + * 2. Addresses box-sizing set to border-box in S5, Chrome (include -moz to future-proof) + */ + +input[type="search"] { + -webkit-appearance: textfield; /* 1 */ + -moz-box-sizing: content-box; + -webkit-box-sizing: content-box; /* 2 */ + box-sizing: content-box; +} + +/* + * Removes inner padding and search cancel button in S5, Chrome on OS X + */ + +input[type="search"]::-webkit-search-decoration, +input[type="search"]::-webkit-search-cancel-button { + -webkit-appearance: none; +} + +/* + * Removes inner padding and border in FF3+ + * www.sitepen.com/blog/2008/05/14/the-devils-in-the-details-fixing-dojos-toolbar-buttons/ + */ + +button::-moz-focus-inner, +input::-moz-focus-inner { + border: 0; + padding: 0; +} + +/* + * 1. Removes default vertical scrollbar in IE6/7/8/9 + * 2. Improves readability and alignment in all browsers + */ + +textarea { + overflow: auto; /* 1 */ + vertical-align: top; /* 2 */ +} + + +/* ============================================================================= + Tables + ========================================================================== */ + +/* + * Remove most spacing between table cells + */ + +table { + border-collapse: collapse; + border-spacing: 0; +} \ No newline at end of file diff --git a/css/webfont/DuckDB-Symbol.woff b/css/webfont/DuckDB-Symbol.woff new file mode 100644 index 0000000..5b679e6 Binary files /dev/null and b/css/webfont/DuckDB-Symbol.woff differ diff --git a/css/webfont/DuckDB-Symbol.woff2 b/css/webfont/DuckDB-Symbol.woff2 new file mode 100644 index 0000000..ea51492 Binary files /dev/null and b/css/webfont/DuckDB-Symbol.woff2 differ diff --git a/css/webfont/JetBrainsMono/woff/JetBrainsMono-Bold-Italic.woff b/css/webfont/JetBrainsMono/woff/JetBrainsMono-Bold-Italic.woff new file mode 100644 index 0000000..5c42d28 Binary files /dev/null and b/css/webfont/JetBrainsMono/woff/JetBrainsMono-Bold-Italic.woff differ diff --git a/css/webfont/JetBrainsMono/woff/JetBrainsMono-Bold.woff b/css/webfont/JetBrainsMono/woff/JetBrainsMono-Bold.woff new file mode 100644 index 0000000..c8118a8 Binary files /dev/null and b/css/webfont/JetBrainsMono/woff/JetBrainsMono-Bold.woff differ diff --git a/css/webfont/JetBrainsMono/woff/JetBrainsMono-ExtraBold-Italic.woff b/css/webfont/JetBrainsMono/woff/JetBrainsMono-ExtraBold-Italic.woff new file mode 100644 index 0000000..ce95a1a Binary files /dev/null and b/css/webfont/JetBrainsMono/woff/JetBrainsMono-ExtraBold-Italic.woff differ diff --git a/css/webfont/JetBrainsMono/woff/JetBrainsMono-ExtraBold.woff b/css/webfont/JetBrainsMono/woff/JetBrainsMono-ExtraBold.woff new file mode 100644 index 0000000..2060cd1 Binary files /dev/null and b/css/webfont/JetBrainsMono/woff/JetBrainsMono-ExtraBold.woff differ diff --git a/css/webfont/JetBrainsMono/woff/JetBrainsMono-Italic.woff b/css/webfont/JetBrainsMono/woff/JetBrainsMono-Italic.woff new file mode 100644 index 0000000..9c292e3 Binary files /dev/null and b/css/webfont/JetBrainsMono/woff/JetBrainsMono-Italic.woff differ diff --git a/css/webfont/JetBrainsMono/woff/JetBrainsMono-Medium-Italic.woff b/css/webfont/JetBrainsMono/woff/JetBrainsMono-Medium-Italic.woff new file mode 100644 index 0000000..6e55fd9 Binary files /dev/null and b/css/webfont/JetBrainsMono/woff/JetBrainsMono-Medium-Italic.woff differ diff --git a/css/webfont/JetBrainsMono/woff/JetBrainsMono-Medium.woff b/css/webfont/JetBrainsMono/woff/JetBrainsMono-Medium.woff new file mode 100644 index 0000000..30e8af2 Binary files /dev/null and b/css/webfont/JetBrainsMono/woff/JetBrainsMono-Medium.woff differ diff --git a/css/webfont/JetBrainsMono/woff/JetBrainsMono-Regular.woff b/css/webfont/JetBrainsMono/woff/JetBrainsMono-Regular.woff new file mode 100644 index 0000000..dc1d85f Binary files /dev/null and b/css/webfont/JetBrainsMono/woff/JetBrainsMono-Regular.woff differ diff --git a/css/webfont/JetBrainsMono/woff2/JetBrainsMono-Bold-Italic.woff2 b/css/webfont/JetBrainsMono/woff2/JetBrainsMono-Bold-Italic.woff2 new file mode 100644 index 0000000..02ffc7c Binary files /dev/null and b/css/webfont/JetBrainsMono/woff2/JetBrainsMono-Bold-Italic.woff2 differ diff --git a/css/webfont/JetBrainsMono/woff2/JetBrainsMono-Bold.woff2 b/css/webfont/JetBrainsMono/woff2/JetBrainsMono-Bold.woff2 new file mode 100644 index 0000000..d098076 Binary files /dev/null and b/css/webfont/JetBrainsMono/woff2/JetBrainsMono-Bold.woff2 differ diff --git a/css/webfont/JetBrainsMono/woff2/JetBrainsMono-ExtraBold-Italic.woff2 b/css/webfont/JetBrainsMono/woff2/JetBrainsMono-ExtraBold-Italic.woff2 new file mode 100644 index 0000000..280eee5 Binary files /dev/null and b/css/webfont/JetBrainsMono/woff2/JetBrainsMono-ExtraBold-Italic.woff2 differ diff --git a/css/webfont/JetBrainsMono/woff2/JetBrainsMono-ExtraBold.woff2 b/css/webfont/JetBrainsMono/woff2/JetBrainsMono-ExtraBold.woff2 new file mode 100644 index 0000000..f81bf39 Binary files /dev/null and b/css/webfont/JetBrainsMono/woff2/JetBrainsMono-ExtraBold.woff2 differ diff --git a/css/webfont/JetBrainsMono/woff2/JetBrainsMono-Italic.woff2 b/css/webfont/JetBrainsMono/woff2/JetBrainsMono-Italic.woff2 new file mode 100644 index 0000000..514fc7b Binary files /dev/null and b/css/webfont/JetBrainsMono/woff2/JetBrainsMono-Italic.woff2 differ diff --git a/css/webfont/JetBrainsMono/woff2/JetBrainsMono-Medium-Italic.woff2 b/css/webfont/JetBrainsMono/woff2/JetBrainsMono-Medium-Italic.woff2 new file mode 100644 index 0000000..965ddcd Binary files /dev/null and b/css/webfont/JetBrainsMono/woff2/JetBrainsMono-Medium-Italic.woff2 differ diff --git a/css/webfont/JetBrainsMono/woff2/JetBrainsMono-Medium.woff2 b/css/webfont/JetBrainsMono/woff2/JetBrainsMono-Medium.woff2 new file mode 100644 index 0000000..cf13ff6 Binary files /dev/null and b/css/webfont/JetBrainsMono/woff2/JetBrainsMono-Medium.woff2 differ diff --git a/css/webfont/JetBrainsMono/woff2/JetBrainsMono-Regular.woff2 b/css/webfont/JetBrainsMono/woff2/JetBrainsMono-Regular.woff2 new file mode 100644 index 0000000..fdf95dd Binary files /dev/null and b/css/webfont/JetBrainsMono/woff2/JetBrainsMono-Regular.woff2 differ diff --git a/css/webfont/SuisseIntl-Bold-WebM.woff b/css/webfont/SuisseIntl-Bold-WebM.woff new file mode 100644 index 0000000..44c3c9d Binary files /dev/null and b/css/webfont/SuisseIntl-Bold-WebM.woff differ diff --git a/css/webfont/SuisseIntl-Bold-WebM.woff2 b/css/webfont/SuisseIntl-Bold-WebM.woff2 new file mode 100644 index 0000000..22ae106 Binary files /dev/null and b/css/webfont/SuisseIntl-Bold-WebM.woff2 differ diff --git a/css/webfont/SuisseIntl-Bold-WebS.woff b/css/webfont/SuisseIntl-Bold-WebS.woff new file mode 100644 index 0000000..5d8908b Binary files /dev/null and b/css/webfont/SuisseIntl-Bold-WebS.woff differ diff --git a/css/webfont/SuisseIntl-Bold-WebS.woff2 b/css/webfont/SuisseIntl-Bold-WebS.woff2 new file mode 100644 index 0000000..a2a9e31 Binary files /dev/null and b/css/webfont/SuisseIntl-Bold-WebS.woff2 differ diff --git a/css/webfont/SuisseIntl-Bold-WebXL.woff b/css/webfont/SuisseIntl-Bold-WebXL.woff new file mode 100644 index 0000000..4293f53 Binary files /dev/null and b/css/webfont/SuisseIntl-Bold-WebXL.woff differ diff --git a/css/webfont/SuisseIntl-Bold-WebXL.woff2 b/css/webfont/SuisseIntl-Bold-WebXL.woff2 new file mode 100644 index 0000000..f4f855c Binary files /dev/null and b/css/webfont/SuisseIntl-Bold-WebXL.woff2 differ diff --git a/css/webfont/SuisseIntl-Book-WebM.woff b/css/webfont/SuisseIntl-Book-WebM.woff new file mode 100644 index 0000000..601d17e Binary files /dev/null and b/css/webfont/SuisseIntl-Book-WebM.woff differ diff --git a/css/webfont/SuisseIntl-Book-WebM.woff2 b/css/webfont/SuisseIntl-Book-WebM.woff2 new file mode 100644 index 0000000..91430d8 Binary files /dev/null and b/css/webfont/SuisseIntl-Book-WebM.woff2 differ diff --git a/css/webfont/SuisseIntl-Book-WebS.woff b/css/webfont/SuisseIntl-Book-WebS.woff new file mode 100644 index 0000000..8629bb9 Binary files /dev/null and b/css/webfont/SuisseIntl-Book-WebS.woff differ diff --git a/css/webfont/SuisseIntl-Book-WebS.woff2 b/css/webfont/SuisseIntl-Book-WebS.woff2 new file mode 100644 index 0000000..d1e24b8 Binary files /dev/null and b/css/webfont/SuisseIntl-Book-WebS.woff2 differ diff --git a/css/webfont/SuisseIntl-Book-WebXL.woff b/css/webfont/SuisseIntl-Book-WebXL.woff new file mode 100644 index 0000000..0023366 Binary files /dev/null and b/css/webfont/SuisseIntl-Book-WebXL.woff differ diff --git a/css/webfont/SuisseIntl-Book-WebXL.woff2 b/css/webfont/SuisseIntl-Book-WebXL.woff2 new file mode 100644 index 0000000..e69a4fb Binary files /dev/null and b/css/webfont/SuisseIntl-Book-WebXL.woff2 differ diff --git a/css/webfont/SuisseIntl-Medium-WebXL.woff2 b/css/webfont/SuisseIntl-Medium-WebXL.woff2 new file mode 100644 index 0000000..31f1763 Binary files /dev/null and b/css/webfont/SuisseIntl-Medium-WebXL.woff2 differ diff --git a/css/webfont/SuisseIntl-Regular-WebM.woff b/css/webfont/SuisseIntl-Regular-WebM.woff new file mode 100644 index 0000000..dd04fab Binary files /dev/null and b/css/webfont/SuisseIntl-Regular-WebM.woff differ diff --git a/css/webfont/SuisseIntl-Regular-WebM.woff2 b/css/webfont/SuisseIntl-Regular-WebM.woff2 new file mode 100644 index 0000000..387ce82 Binary files /dev/null and b/css/webfont/SuisseIntl-Regular-WebM.woff2 differ diff --git a/css/webfont/SuisseIntl-Regular-WebS.woff b/css/webfont/SuisseIntl-Regular-WebS.woff new file mode 100644 index 0000000..b91bbc2 Binary files /dev/null and b/css/webfont/SuisseIntl-Regular-WebS.woff differ diff --git a/css/webfont/SuisseIntl-Regular-WebS.woff2 b/css/webfont/SuisseIntl-Regular-WebS.woff2 new file mode 100644 index 0000000..03fbdb0 Binary files /dev/null and b/css/webfont/SuisseIntl-Regular-WebS.woff2 differ diff --git a/css/webfont/SuisseIntl-Regular-WebXL.woff b/css/webfont/SuisseIntl-Regular-WebXL.woff new file mode 100644 index 0000000..4a29ac5 Binary files /dev/null and b/css/webfont/SuisseIntl-Regular-WebXL.woff differ diff --git a/css/webfont/SuisseIntl-Regular-WebXL.woff2 b/css/webfont/SuisseIntl-Regular-WebXL.woff2 new file mode 100644 index 0000000..97f71c3 Binary files /dev/null and b/css/webfont/SuisseIntl-Regular-WebXL.woff2 differ diff --git a/css/webfont/SuisseIntl-RegularItalic-WebM.woff b/css/webfont/SuisseIntl-RegularItalic-WebM.woff new file mode 100644 index 0000000..2980b4b Binary files /dev/null and b/css/webfont/SuisseIntl-RegularItalic-WebM.woff differ diff --git a/css/webfont/SuisseIntl-RegularItalic-WebM.woff2 b/css/webfont/SuisseIntl-RegularItalic-WebM.woff2 new file mode 100644 index 0000000..67b3ab5 Binary files /dev/null and b/css/webfont/SuisseIntl-RegularItalic-WebM.woff2 differ diff --git a/css/webfont/SuisseIntl-RegularItalic-WebS.woff b/css/webfont/SuisseIntl-RegularItalic-WebS.woff new file mode 100644 index 0000000..f375359 Binary files /dev/null and b/css/webfont/SuisseIntl-RegularItalic-WebS.woff differ diff --git a/css/webfont/SuisseIntl-RegularItalic-WebS.woff2 b/css/webfont/SuisseIntl-RegularItalic-WebS.woff2 new file mode 100644 index 0000000..708a489 Binary files /dev/null and b/css/webfont/SuisseIntl-RegularItalic-WebS.woff2 differ diff --git a/css/webfont/SuisseIntl-RegularItalic-WebXL.woff b/css/webfont/SuisseIntl-RegularItalic-WebXL.woff new file mode 100644 index 0000000..efb762a Binary files /dev/null and b/css/webfont/SuisseIntl-RegularItalic-WebXL.woff differ diff --git a/css/webfont/SuisseIntl-RegularItalic-WebXL.woff2 b/css/webfont/SuisseIntl-RegularItalic-WebXL.woff2 new file mode 100644 index 0000000..07ae7fc Binary files /dev/null and b/css/webfont/SuisseIntl-RegularItalic-WebXL.woff2 differ diff --git a/css/webfont/SuisseIntl-SemiBold-WebM.woff b/css/webfont/SuisseIntl-SemiBold-WebM.woff new file mode 100644 index 0000000..d94f21b Binary files /dev/null and b/css/webfont/SuisseIntl-SemiBold-WebM.woff differ diff --git a/css/webfont/SuisseIntl-SemiBold-WebM.woff2 b/css/webfont/SuisseIntl-SemiBold-WebM.woff2 new file mode 100644 index 0000000..edecf59 Binary files /dev/null and b/css/webfont/SuisseIntl-SemiBold-WebM.woff2 differ diff --git a/css/webfont/SuisseIntl-SemiBold-WebS.woff b/css/webfont/SuisseIntl-SemiBold-WebS.woff new file mode 100644 index 0000000..eff3cbf Binary files /dev/null and b/css/webfont/SuisseIntl-SemiBold-WebS.woff differ diff --git a/css/webfont/SuisseIntl-SemiBold-WebS.woff2 b/css/webfont/SuisseIntl-SemiBold-WebS.woff2 new file mode 100644 index 0000000..cbfcfc9 Binary files /dev/null and b/css/webfont/SuisseIntl-SemiBold-WebS.woff2 differ diff --git a/css/webfont/SuisseIntl-SemiBold-WebXL.woff b/css/webfont/SuisseIntl-SemiBold-WebXL.woff new file mode 100644 index 0000000..0e419aa Binary files /dev/null and b/css/webfont/SuisseIntl-SemiBold-WebXL.woff differ diff --git a/css/webfont/SuisseIntl-SemiBold-WebXL.woff2 b/css/webfont/SuisseIntl-SemiBold-WebXL.woff2 new file mode 100644 index 0000000..bcb9c41 Binary files /dev/null and b/css/webfont/SuisseIntl-SemiBold-WebXL.woff2 differ diff --git a/css/webfont/SuisseIntlMono-Regular-WebS.woff b/css/webfont/SuisseIntlMono-Regular-WebS.woff new file mode 100644 index 0000000..1ba1a83 Binary files /dev/null and b/css/webfont/SuisseIntlMono-Regular-WebS.woff differ diff --git a/css/webfont/SuisseIntlMono-Regular-WebS.woff2 b/css/webfont/SuisseIntlMono-Regular-WebS.woff2 new file mode 100644 index 0000000..fcc3bc2 Binary files /dev/null and b/css/webfont/SuisseIntlMono-Regular-WebS.woff2 differ diff --git a/css/webfont/SuisseIntlMono-Regular-WebXL.woff b/css/webfont/SuisseIntlMono-Regular-WebXL.woff new file mode 100644 index 0000000..c8e9cc6 Binary files /dev/null and b/css/webfont/SuisseIntlMono-Regular-WebXL.woff differ diff --git a/css/webfont/SuisseIntlMono-Regular-WebXL.woff2 b/css/webfont/SuisseIntlMono-Regular-WebXL.woff2 new file mode 100644 index 0000000..894e802 Binary files /dev/null and b/css/webfont/SuisseIntlMono-Regular-WebXL.woff2 differ diff --git a/feed.xml b/feed.xml new file mode 100644 index 0000000..db0c350 --- /dev/null +++ b/feed.xml @@ -0,0 +1,47 @@ +Jekyll2025-02-24T14:50:38+00:00https://duckdblabs.com/feed.xmlDuckDB LabsDuckDB Labs provides services around the DuckDB in-process OLAP data management system directly from its main developers.Dutch ICT Research 2025 Award for Hannes Mühleisen2025-01-13T00:00:00+00:002025-01-13T00:00:00+00:00https://duckdblabs.com/news/2025/01/13/hannes-muehleisen-dutch-ict-awardWe are proud to announce that DuckDB co-creator and DuckDB Labs CEO, Prof. Dr. Hannes Mühleisen, received the Dutch Prize for ICT Research 2025. This prize is awarded each year to a computer scientist in the Netherlands, who has conducted particularly innovative research within 15 years of obtaining their doctorate.

+ +

Read the full announcement in English or Dutch.

]]>
Announcing the Hydra Partnership2024-08-28T00:00:00+00:002024-08-28T00:00:00+00:00https://duckdblabs.com/news/2024/08/28/hydra-partnershipDuckDB Labs is excited to announce that we are going to be working with Hydra in the coming years to build DuckDB-Powered PostgreSQL for real-time apps and analytics development. DuckDB Labs has entered a long-term strategic partnership with Hydra to enrich and extend the DuckDB ecosystem. Joseph Sciarrino and his co-founder, Jonathan Dance “JD” helped pioneer the fusion of columnar analytics with transactional RDBMS, raising the bar of what’s possible with Postgres, which is why we are confident to join them in this endeavor.

+ +

Our collaboration with Hydra revolves around pg_duckdb, an open-source (MIT licensed) program that embeds DuckDB’s state-of-the-art analytics engine and features within Postgres. pg_duckdb is meant for developing high-performance applications and analytics with any new or existing Postgres database. We’ve observed software engineers increasingly embedding powerful analytics directly into their applications. These applications tend to require both greater access to disparate data sources and sub-second response times. We believe pg_duckdb will serve these use-cases nicely by overcoming Postgres’ known limitations in analytical processing.

+ +

The Hydra team has graciously donated the pg_duckdb repository to the DuckDB Foundation to ensure the project remains open-source and free of conflict. We applaud and share Joseph & JD’s belief in the necessity and long-term benefits of creating an open-source data foundation as the bedrock of future work. pg_duckdb’s continued development is driven in collaboration with Hydra and MotherDuck as both companies share an exciting vision for the role of DuckDB in application development.

+ +

Hydra joins DuckDB Labs’ excellent lineup of partners that includes MotherDuck, Voltron Data, and others. DuckDB Labs is not funded by venture capital, its sole owners are the people in the founding team. All our revenue comes from partnerships where our partners employ DuckDB in mission-critical roles and contract with DuckDB Labs for close and long-term development collaboration. This allows DuckDB Labs to focus on pushing boundaries in the DuckDB software project without chasing exponential growth in sales.

+ +

While consulting alone is a viable business model for open-source companies, it does not scale well. To address this, DuckDB Labs has acquired shares in Hydra, which connects their success with ours. This way, DuckDB Labs’ founding team joins in the financial success of our partners while allowing us to focus on the technical challenges as an artisanal database company.

+ +

We welcome all contributions and support to pg_duckdb, large and small as pg_duckdb works towards its first release.

]]>
DuckDB Version 1.0.0 Released2024-06-03T00:00:00+00:002024-06-03T00:00:00+00:00https://duckdblabs.com/news/2024/06/03/duckdb-version-100-releasedDuckDB version 1.0.0 has just been released. See the announcement blog post on duckdb.org.

]]>
DuckDB Community Support Policy2023-10-02T00:00:00+00:002023-10-02T00:00:00+00:00https://duckdblabs.com/news/2023/10/02/support-policySee the Community Support Policy page.

]]>
Announcing the MotherDuck Partnership2022-11-15T00:00:00+00:002022-11-15T00:00:00+00:00https://duckdblabs.com/news/2022/11/15/motherduck-partnership--> + +

DuckDB Labs is excited to announce that we are going to be working with MotherDuck in the coming years to build a modern serverless cloud analytics platform based on DuckDB. DuckDB Labs has entered a long-term strategic partnership with MotherDuck to enrich and extend the DuckDB ecosystem. Jordan Tigani and his amazing founding team have decades of experience pushing the envelope of what is possible in cloud analytics which is why we feel confident to join them in this endeavor.

+ + + +

When the first ideas that eventually lead to DuckDB were thrown around, we went against the prevailing wisdom in both industry and research that only massive scale and distributed data processing would be the way forward. From our interactions with data practitioners, we became convinced that while massive datasets exist, they are mostly found in organizations that already have the technological expertise to handle them anyway. We bet on efficient and ergonomic single-node analytics, and we are very happy that the MotherDuck team shares this vision, especially given the team’s background.

+ +

MotherDuck joins DuckDB Labs’ excellent lineup of partners that includes Voltron Data, RelationalAI, Google’s Malloy Project and others. DuckDB Labs is not funded by venture capital, its sole owners are the founding team and CWI. All our revenue comes from partnerships where our partners employ DuckDB in mission-critical roles and contract with DuckDB Labs for close and long-term development collaboration. This allows DuckDB Labs to focus on pushing boundaries in the DuckDB software project without chasing exponential growth in sales.

+ +

While consulting alone is a viable business model for Open Source companies, it does not scale well. To address this, DuckDB Labs has acquired shares in MotherDuck, which connects their success with ours. This way, DuckDB Lab’s founding team joins in the financial success of our partners while allowing us to focus on the technical challenges as an artisanal database company.

+ +

MotherDuck has also started supporting the DuckDB Foundation: The DuckDB project itself is governed by the non-profit DuckDB Foundation which safeguards the intellectual property and continuity of the DuckDB Project. Its statutes also ensure DuckDB remains Open Source under the MIT license in perpetuity. The foundation appreciates donations from commercial users of DuckDB which organize in the DuckDB user association. User association members are heard for input on the development roadmap and enjoy several other benefits.

]]>
New CWI Spin-Off Company DuckDB Labs: Solutions for Fast Database Analytics2021-07-14T00:00:00+00:002021-07-14T00:00:00+00:00https://duckdblabs.com/news/2021/07/14/spin-off-company-DuckDB-LabsTL;DR: CWI researchers Hannes Mühleisen and Mark Raasveldt founded the spin-off company DuckDB Labs, providing services and development for DuckDB. DuckDB is an open-source database management system aimed at efficient data analytics. It is easy to install, works very fast and within running processes. Presently, DuckDB is downloaded about 100.000 times per week.

+ + + +

Companies, governments and academic research groups collect ever more data. These data are stored in large databases and one of the main challenges is to extract new insights from the data as fast as possible. That’s one of the jobs of a database management system.

+ +

In 2019 Hannes Mühleisen and Mark Raasveldt, researchers in the Database Architectures research group at Centrum Wiskunde & Informatica (CWI), released the first open-source version of their database management system DuckDB. DuckDB is the first purpose built in-process Online Analytical Processing (OLAP)-database management system.

+ +

“DuckDB got its name because I used to have a pet duck”, Mühleisen laughs. “Ducks are amazing animals. They can fly, walk and swim, and they are quite resilient to environmental challenges. So, they are the perfect mascot for a versatile and resilient data management system.”

+ +

Now, two years later, DuckDB has become a huge success: it is downloaded about 100.000 times per week, mainly by data scientists and corporate users. “In a world where most successful software has been developed in the corporate sector in the USA, it is remarkable that software coming out of the publicly funded research institute CWI is gaining such a traction”, says Mühleisen.

+ +

With the aim of creating an even better system, Mühleisen and Raasveldt just founded DuckDB Labs B.V. as a spin-off company from CWI. The company will act as the environment for innovative projects around DuckDB, to provide further development of the system as well as a platform for support services. Mühleisen emphasizes that DuckDB will still continue to be an Open-Source project under the current permissive MIT licence.

+ +

What distinguishes DuckDB from existing database management systems?

+ +

Raasveldt: “First of all, DuckDB aims at analytical use cases where it is needed to look at lots of data at the same time. Think about cases where millions of rows have to be aggregated, or where giant tables need to be combined. There are many such use cases in business reporting or in statistical analysis.”

+ +

Second, DuckDB runs inside other processes already running on the computer. Raasveldt: “If you do data analysis in Python, DuckDB will run inside Python. That creates the advantage that the data transfer is very quick. Actually, DuckDB is the first in-process OLAP-database system that manages large amounts of data. We call ourselves the ‘SQLite for analytics’. SQLite is the world’s most popular database management system, but it doesn’t do analytics.”

+ +

From the practical point of view, DuckDB is ‘lean and mean’. It is a small software package that everybody can easily install and for which no separate server is needed. Finally, DuckDB works fast. This is because DuckDB builds on state-of-the art database research origining from the CWI Datatabase Architecture group. For example, it uses a query processing technique called vectorized execution, which was developed at CWI in 2005.

+ +

DuckDB Labs is the newest addition to the list of 28 start-up companies originating at Centrum Wiskunde & Informatica in Amsterdam, a research institute in mathematics and computer science. This tradition of research-based spin-offs is in line with the CWI agenda of converting fundamental research into projects that are beneficial for the society.

]]>
\ No newline at end of file diff --git a/img/DuckDBLabs-Footer.svg b/img/DuckDBLabs-Footer.svg new file mode 100644 index 0000000..c302604 --- /dev/null +++ b/img/DuckDBLabs-Footer.svg @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/img/Symbol_Extension.svg b/img/Symbol_Extension.svg new file mode 100644 index 0000000..eb1bacd --- /dev/null +++ b/img/Symbol_Extension.svg @@ -0,0 +1,3 @@ + + + diff --git a/img/Symbol_Extension_extended.svg b/img/Symbol_Extension_extended.svg new file mode 100644 index 0000000..7dfba91 --- /dev/null +++ b/img/Symbol_Extension_extended.svg @@ -0,0 +1,23 @@ + + + + + + diff --git a/img/Symbol_License.svg b/img/Symbol_License.svg new file mode 100644 index 0000000..80dd798 --- /dev/null +++ b/img/Symbol_License.svg @@ -0,0 +1,3 @@ + + + diff --git a/img/Symbol_License_extended.svg b/img/Symbol_License_extended.svg new file mode 100644 index 0000000..1f18fcc --- /dev/null +++ b/img/Symbol_License_extended.svg @@ -0,0 +1,13 @@ + + + + + + diff --git a/img/Symbol_Support.svg b/img/Symbol_Support.svg new file mode 100644 index 0000000..ffd51e3 --- /dev/null +++ b/img/Symbol_Support.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/img/Symbol_Support_extended.svg b/img/Symbol_Support_extended.svg new file mode 100644 index 0000000..88108fe --- /dev/null +++ b/img/Symbol_Support_extended.svg @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + diff --git a/img/blog/240603.svg b/img/blog/240603.svg new file mode 100644 index 0000000..186f331 --- /dev/null +++ b/img/blog/240603.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/img/blog/240828.svg b/img/blog/240828.svg new file mode 100644 index 0000000..af5a158 --- /dev/null +++ b/img/blog/240828.svg @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/img/blog/blog_duckdb_motherduck.png b/img/blog/blog_duckdb_motherduck.png new file mode 100644 index 0000000..c9b1cba Binary files /dev/null and b/img/blog/blog_duckdb_motherduck.png differ diff --git a/img/blog/blog_new_support_policy.png b/img/blog/blog_new_support_policy.png new file mode 100644 index 0000000..2afff3b Binary files /dev/null and b/img/blog/blog_new_support_policy.png differ diff --git a/img/blog/default.png b/img/blog/default.png new file mode 100644 index 0000000..3ee9643 Binary files /dev/null and b/img/blog/default.png differ diff --git a/img/blog/nl-ict.svg b/img/blog/nl-ict.svg new file mode 100644 index 0000000..9ce4347 --- /dev/null +++ b/img/blog/nl-ict.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/img/collaborators/databricks.svg b/img/collaborators/databricks.svg new file mode 100644 index 0000000..b1543ba --- /dev/null +++ b/img/collaborators/databricks.svg @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/img/collaborators/dlthub.svg b/img/collaborators/dlthub.svg new file mode 100644 index 0000000..3975743 --- /dev/null +++ b/img/collaborators/dlthub.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/img/collaborators/evidence.svg b/img/collaborators/evidence.svg new file mode 100644 index 0000000..f088a98 --- /dev/null +++ b/img/collaborators/evidence.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/img/collaborators/fivetran.svg b/img/collaborators/fivetran.svg new file mode 100644 index 0000000..ad622f0 --- /dev/null +++ b/img/collaborators/fivetran.svg @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/img/collaborators/hex.svg b/img/collaborators/hex.svg new file mode 100644 index 0000000..3fcc546 --- /dev/null +++ b/img/collaborators/hex.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/img/collaborators/huggingface.svg b/img/collaborators/huggingface.svg new file mode 100644 index 0000000..e3b11fa --- /dev/null +++ b/img/collaborators/huggingface.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/img/collaborators/hydra.svg b/img/collaborators/hydra.svg new file mode 100644 index 0000000..3d69cc2 --- /dev/null +++ b/img/collaborators/hydra.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/img/collaborators/i-refact.svg b/img/collaborators/i-refact.svg new file mode 100644 index 0000000..f349201 --- /dev/null +++ b/img/collaborators/i-refact.svg @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/img/collaborators/monday.svg b/img/collaborators/monday.svg new file mode 100644 index 0000000..45c7de0 --- /dev/null +++ b/img/collaborators/monday.svg @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/img/collaborators/motherduck.svg b/img/collaborators/motherduck.svg new file mode 100644 index 0000000..0b49068 --- /dev/null +++ b/img/collaborators/motherduck.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/img/collaborators/posit.svg b/img/collaborators/posit.svg new file mode 100644 index 0000000..bb12503 --- /dev/null +++ b/img/collaborators/posit.svg @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/img/collaborators/rill.svg b/img/collaborators/rill.svg new file mode 100644 index 0000000..b9911c9 --- /dev/null +++ b/img/collaborators/rill.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/img/collaborators/spiceai.svg b/img/collaborators/spiceai.svg new file mode 100644 index 0000000..7d64cf6 --- /dev/null +++ b/img/collaborators/spiceai.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/img/collaborators/stoic.svg b/img/collaborators/stoic.svg new file mode 100644 index 0000000..e15f515 --- /dev/null +++ b/img/collaborators/stoic.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/img/collaborators/tecton.svg b/img/collaborators/tecton.svg new file mode 100644 index 0000000..e8c0c44 --- /dev/null +++ b/img/collaborators/tecton.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/img/collaborators/tigereye.svg b/img/collaborators/tigereye.svg new file mode 100644 index 0000000..4cf0792 --- /dev/null +++ b/img/collaborators/tigereye.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/img/collaborators/voltrondata.svg b/img/collaborators/voltrondata.svg new file mode 100644 index 0000000..1d15120 --- /dev/null +++ b/img/collaborators/voltrondata.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/img/duckdb-labs-logo.png b/img/duckdb-labs-logo.png new file mode 100644 index 0000000..499742d Binary files /dev/null and b/img/duckdb-labs-logo.png differ diff --git a/img/duckdb_office.jpg b/img/duckdb_office.jpg new file mode 100644 index 0000000..d40dfaf Binary files /dev/null and b/img/duckdb_office.jpg differ diff --git a/img/duckdblabs.png b/img/duckdblabs.png new file mode 100644 index 0000000..e84ab3f Binary files /dev/null and b/img/duckdblabs.png differ diff --git a/img/duckdblabs.svg b/img/duckdblabs.svg new file mode 100644 index 0000000..5a9128b --- /dev/null +++ b/img/duckdblabs.svg @@ -0,0 +1,24 @@ + + + + + + diff --git a/img/duckdblabs1.svg b/img/duckdblabs1.svg new file mode 100644 index 0000000..923f4ad --- /dev/null +++ b/img/duckdblabs1.svg @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/img/duckdblabs_circle.svg b/img/duckdblabs_circle.svg new file mode 100644 index 0000000..039b105 --- /dev/null +++ b/img/duckdblabs_circle.svg @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/img/duckdblabsmail.png b/img/duckdblabsmail.png new file mode 100644 index 0000000..ba445d7 Binary files /dev/null and b/img/duckdblabsmail.png differ diff --git a/img/favicon/android-chrome-192x192.png b/img/favicon/android-chrome-192x192.png new file mode 100644 index 0000000..c66a089 Binary files /dev/null and b/img/favicon/android-chrome-192x192.png differ diff --git a/img/favicon/android-chrome-512x512.png b/img/favicon/android-chrome-512x512.png new file mode 100644 index 0000000..c997405 Binary files /dev/null and b/img/favicon/android-chrome-512x512.png differ diff --git a/img/favicon/apple-touch-icon.png b/img/favicon/apple-touch-icon.png new file mode 100644 index 0000000..aa30ce3 Binary files /dev/null and b/img/favicon/apple-touch-icon.png differ diff --git a/img/favicon/browserconfig.xml b/img/favicon/browserconfig.xml new file mode 100644 index 0000000..d416bc5 --- /dev/null +++ b/img/favicon/browserconfig.xml @@ -0,0 +1,9 @@ + + + + + + #ffffff + + + diff --git a/img/favicon/favicon-16x16.png b/img/favicon/favicon-16x16.png new file mode 100644 index 0000000..715ddaf Binary files /dev/null and b/img/favicon/favicon-16x16.png differ diff --git a/img/favicon/favicon-32x32.png b/img/favicon/favicon-32x32.png new file mode 100644 index 0000000..25fab52 Binary files /dev/null and b/img/favicon/favicon-32x32.png differ diff --git a/img/favicon/favicon.ico b/img/favicon/favicon.ico new file mode 100644 index 0000000..4dcee76 Binary files /dev/null and b/img/favicon/favicon.ico differ diff --git a/img/favicon/mstile-144x144.png b/img/favicon/mstile-144x144.png new file mode 100644 index 0000000..1d8a951 Binary files /dev/null and b/img/favicon/mstile-144x144.png differ diff --git a/img/favicon/mstile-150x150.png b/img/favicon/mstile-150x150.png new file mode 100644 index 0000000..40ede24 Binary files /dev/null and b/img/favicon/mstile-150x150.png differ diff --git a/img/favicon/mstile-310x150.png b/img/favicon/mstile-310x150.png new file mode 100644 index 0000000..e0df311 Binary files /dev/null and b/img/favicon/mstile-310x150.png differ diff --git a/img/favicon/mstile-310x310.png b/img/favicon/mstile-310x310.png new file mode 100644 index 0000000..2f85543 Binary files /dev/null and b/img/favicon/mstile-310x310.png differ diff --git a/img/favicon/mstile-70x70.png b/img/favicon/mstile-70x70.png new file mode 100644 index 0000000..abe16a6 Binary files /dev/null and b/img/favicon/mstile-70x70.png differ diff --git a/img/favicon/safari-pinned-tab.svg b/img/favicon/safari-pinned-tab.svg new file mode 100644 index 0000000..ba4357c --- /dev/null +++ b/img/favicon/safari-pinned-tab.svg @@ -0,0 +1,21 @@ + + + + +Created by potrace 1.14, written by Peter Selinger 2001-2017 + + + + + + diff --git a/img/favicon/site.webmanifest b/img/favicon/site.webmanifest new file mode 100644 index 0000000..b20abb7 --- /dev/null +++ b/img/favicon/site.webmanifest @@ -0,0 +1,19 @@ +{ + "name": "", + "short_name": "", + "icons": [ + { + "src": "/android-chrome-192x192.png", + "sizes": "192x192", + "type": "image/png" + }, + { + "src": "/android-chrome-512x512.png", + "sizes": "512x512", + "type": "image/png" + } + ], + "theme_color": "#ffffff", + "background_color": "#ffffff", + "display": "standalone" +} diff --git a/img/sharing.jpg b/img/sharing.jpg new file mode 100644 index 0000000..77414c8 Binary files /dev/null and b/img/sharing.jpg differ diff --git a/img/team/alex_monahan.jpg b/img/team/alex_monahan.jpg new file mode 100644 index 0000000..c6cff13 Binary files /dev/null and b/img/team/alex_monahan.jpg differ diff --git a/img/team/carlo_piovesan.jpg b/img/team/carlo_piovesan.jpg new file mode 100644 index 0000000..756d52d Binary files /dev/null and b/img/team/carlo_piovesan.jpg differ diff --git a/img/team/christiaan_herrewijn.png b/img/team/christiaan_herrewijn.png new file mode 100644 index 0000000..d5bb749 Binary files /dev/null and b/img/team/christiaan_herrewijn.png differ diff --git a/img/team/elliana_may.jpg b/img/team/elliana_may.jpg new file mode 100644 index 0000000..881fffb Binary files /dev/null and b/img/team/elliana_may.jpg differ diff --git a/img/team/gabor_szarnyas.png b/img/team/gabor_szarnyas.png new file mode 100644 index 0000000..edc40d7 Binary files /dev/null and b/img/team/gabor_szarnyas.png differ diff --git a/img/team/hannes_muehleisen.jpg b/img/team/hannes_muehleisen.jpg new file mode 100644 index 0000000..26badf2 Binary files /dev/null and b/img/team/hannes_muehleisen.jpg differ diff --git a/img/team/laurens_kuiper.jpg b/img/team/laurens_kuiper.jpg new file mode 100644 index 0000000..fd764a3 Binary files /dev/null and b/img/team/laurens_kuiper.jpg differ diff --git a/img/team/maja.png b/img/team/maja.png new file mode 100644 index 0000000..7446fa7 Binary files /dev/null and b/img/team/maja.png differ diff --git a/img/team/mark_raasveldt.jpg b/img/team/mark_raasveldt.jpg new file mode 100644 index 0000000..ac08b29 Binary files /dev/null and b/img/team/mark_raasveldt.jpg differ diff --git a/img/team/max_gabrielsson.jpg b/img/team/max_gabrielsson.jpg new file mode 100644 index 0000000..67b6159 Binary files /dev/null and b/img/team/max_gabrielsson.jpg differ diff --git a/img/team/pedro_holanda.jpg b/img/team/pedro_holanda.jpg new file mode 100644 index 0000000..3b007b4 Binary files /dev/null and b/img/team/pedro_holanda.jpg differ diff --git a/img/team/richard_wesley.jpg b/img/team/richard_wesley.jpg new file mode 100644 index 0000000..9196e73 Binary files /dev/null and b/img/team/richard_wesley.jpg differ diff --git a/img/team/sam_ansmink.png b/img/team/sam_ansmink.png new file mode 100644 index 0000000..654edb5 Binary files /dev/null and b/img/team/sam_ansmink.png differ diff --git a/img/team/tania_bogatsch.jpg b/img/team/tania_bogatsch.jpg new file mode 100644 index 0000000..a7d5e18 Binary files /dev/null and b/img/team/tania_bogatsch.jpg differ diff --git a/img/team/thijs_bruineman.jpg b/img/team/thijs_bruineman.jpg new file mode 100644 index 0000000..03976e0 Binary files /dev/null and b/img/team/thijs_bruineman.jpg differ diff --git a/img/team/tom_ebergen.jpg b/img/team/tom_ebergen.jpg new file mode 100644 index 0000000..acc6f63 Binary files /dev/null and b/img/team/tom_ebergen.jpg differ diff --git a/img/team/zuleykha_pavlichenkova.png b/img/team/zuleykha_pavlichenkova.png new file mode 100644 index 0000000..6e5edbb Binary files /dev/null and b/img/team/zuleykha_pavlichenkova.png differ diff --git a/index.html b/index.html new file mode 100644 index 0000000..fa17372 --- /dev/null +++ b/index.html @@ -0,0 +1,523 @@ + + + + + + + + DuckDB Labs – Services for DuckDB + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ DuckDB Labs Logo +
+
+ +
+
+
+
+
+
+
+
+
+ +
+ + + + + + +
+
+
+

Directly from DuckDB's creators

+

DuckDB Labs provides support and consultancy services for the DuckDB data management system.

+ Support + Get in touch +
+
+ DuckDB Labs Office +
+
+ +
+
DuckDB Labs is proud to work with
+ +
+ +
+ + + +
+
+
+

DuckDB
support options

+

DuckDB Labs offers commercial support for DuckDB, ensuring timely responses and flexible coverage. Contact us for more information.

+
+
+ +
+
+
Free
+

Community support

+
+
    +
  • Public issue tracker
  • +
  • No guaranteed response time
  • +
  • SQL and API support only
  • +
+
+ Get started +
+ +
+
+
Negotiable
+

Custom support

+
+
    +
  • Private issue tracker and datasets
  • +
  • Guaranteed response time
  • +
  • Flexible scope
  • +
  • Deployment advice
  • +
  • Negotiable support volume
  • +
+
+ Get in touch +
+ +
+
+
+ +
+
+
+
+

About

+

DuckDB Labs is a small artisanal data processing company based in Amsterdam. It employs the main contributors of the DuckDB project, and offers support and consulting services for the system.

+

For more information, get in touch via the contact form or via hello@duckdblabs.com.

+
+
+

Team

+ +
+ +
+ + +
+
+
+ Hannes Mühleisen + Co-founder & CEO +
+
+ +
+
+
+ Mark Raasveldt + Co-founder & CTO +
+
+ +
+
+
+ Pedro Holanda + Software engineer +
+
+ +
+
+
+ Richard Wesley + Software engineer +
+
+ +
+
+
+ Laurens Kuiper + Software engineer +
+
+ +
+
+
+ Sam Ansmink + Software engineer +
+
+ +
+
+
+ Tania Bogatsch + Software engineer +
+
+ +
+
+
+ Thijs Bruineman + Software engineer +
+
+ +
+
+
+ Elliana May + Software engineer +
+
+ +
+
+
+ Tom Ebergen + Software engineer +
+
+ +
+
+
+ Max Gabrielsson + Software engineer +
+
+ +
+
+
+ Carlo Piovesan + Software engineer +
+
+ +
+
+
+ Maia de Graaf + Software engineer +
+
+ +
+
+
+ Zuleykha Pavlichenkova + Software engineer +
+
+ +
+
+
+ Christiaan Herrewijn + Software engineer +
+
+ +
+
+
+ Gábor Szárnyas + Developer relations advocate +
+
+ +
+
+
+ Alex Monahan + Training & documentation +
+
+ + +
+ +
+
+
+
+
+ +
+
+

News

+
+ + + + +
+ +
+ + +
+
2024-08-28
+

Announcing the Hydra Partnership

+
+ +
+ +
+ + +
+
2024-06-03
+

DuckDB Version 1.0.0 Released

+
+ + + + + + + +
+ Show more +
+
+ +
+
+
+
+

Jobs

+

As a DuckDB employee, you will be working in Amsterdam with a small team of database experts on one of the most exciting, fastest-growing open-source database systems in the world.

+
+ + + +
+

Open positions

+ +
+

At the moment there are no open positions at DuckDB Labs.

+
+ +
+
+
+ + + + +
+ + + + + + + + + + + + diff --git a/jobs/Associate-Tools-Engineer.html b/jobs/Associate-Tools-Engineer.html new file mode 100644 index 0000000..97d97e8 --- /dev/null +++ b/jobs/Associate-Tools-Engineer.html @@ -0,0 +1,259 @@ + + + + + + + + DuckDB Labs Jobs – Associate Tools Engineer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ DuckDB Labs Logo +
+
+ +
+
+
+
+
+
+
+
+
+ +
+ +
+
+

Work at DuckDB Labs

+
+
+ +
+
+
+

Associate Tools Engineer

+

As a DuckDB software engineer, you will be working in Amsterdam with a small team of database experts on one of the most exciting, fastest-growing open-source database systems in the world. This vacancy requires that you live or are willing to relocate to Amsterdam (or nearby cities).

+ +

Yearly Salary Range

+
    +
  • 20.000 – 120.000€
  • +
+ +

Requirements

+
    +
  • 2+ years of industry experience.
  • +
  • Good Experience with Database Systems and SQL expertise.
  • +
  • Good experience with DuckDB’s Core Language: C++.
  • +
  • Good experience with at least one of DuckDB’S API Languages: Python, Java, R, JS, Rust.
  • +
  • Knowledge of code versioning tools, in special Git/GitHub.
  • +
  • Native level of communication skills in English.
  • +
+ +

Good to have

+
    +
  • Experience with AWS.
  • +
  • Bachelor in Computer Science.
  • +
  • MSc or Ph.D. in Computer Science, plus if related to Database Architecture.
  • +
  • Experience with WASM.
  • +
+ +

Perks

+
    +
  • Possibility of traveling to scientific and industrial conferences.
  • +
  • Flexibility in creating and picking your own DuckDB internal projects.
  • +
  • Possibility of working 2 days from home.
  • +
  • Flexible hours.
  • +
  • Gym Benefits. You are allowed to workout during work hours and will have a gym monthly allowance
  • +
  • Company-sponsored lunch 3x week.
  • +
+ + back to main page +
+
+
+

Apply now

+ +
+
+
+ + +
+
+ + +
+
+ + +
+
+ + + CV File* +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+ + + + + + + + +
+
+
Thanks for your application! We will get in touch with you soon.
+
+
+
+ + + +
+
+
+
+ +
+ + + + + + + + + + + + + diff --git a/jobs/Driver-Engineer.html b/jobs/Driver-Engineer.html new file mode 100644 index 0000000..1088ebd --- /dev/null +++ b/jobs/Driver-Engineer.html @@ -0,0 +1,249 @@ + + + + + + + + DuckDB Labs Jobs – JDBC / ODBC Driver Engineer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ DuckDB Labs Logo +
+
+ +
+
+
+
+
+
+
+
+
+ +
+ +
+
+

Work at DuckDB Labs

+
+
+ +
+
+
+

JDBC / ODBC Driver Engineer

+

We are looking for driver engineers to develop and maintain DuckDB’s +JDBC or +ODBC drivers.

+ +

If you live outside of the Netherlands, these positions are available with a remote setup on a contractual basis. +If you live in the Netherlands, you will be employed by DuckDB Labs in Amsterdam.

+ +

Requirements

+ +
    +
  • Good level of communication skills in English.
  • +
  • Knowledge of code versioning tools, in particular Git / GitHub.
  • +
  • Experience with SQL.
  • +
  • For the JDBC driver: Strong experience with JDBC and JNI.
  • +
  • For the ODBC driver: Strong experience with ODBC, C and/or C++.
  • +
+ +

Nice to have

+ +

Candidates with experience for both JDBC and ODBC are especially encouraged to apply.

+ +

Hours

+ +

This role is flexible in terms of the hours per week, ranging between 8 and 40 hours.

+ + back to main page +
+
+
+

Apply now

+ +
+
+
+ + +
+
+ + +
+
+ + +
+
+ + + CV File* +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+ + + + + + + + +
+
+
Thanks for your application! We will get in touch with you soon.
+
+
+
+ + + +
+
+
+
+ +
+ + + + + + + + + + + + + diff --git a/jobs/Quality_Assurance_Engineer.html b/jobs/Quality_Assurance_Engineer.html new file mode 100644 index 0000000..15f3f7c --- /dev/null +++ b/jobs/Quality_Assurance_Engineer.html @@ -0,0 +1,265 @@ + + + + + + + + DuckDB Labs Jobs – Quality Assurance Engineer - Database Systems + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ DuckDB Labs Logo +
+
+ +
+
+
+
+
+
+
+
+
+ +
+ +
+
+

Work at DuckDB Labs

+
+
+ +
+
+
+

Quality Assurance Engineer - Database Systems

+

As a QA Engineer for DuckDB, you will play a crucial role in ensuring the performance, reliability, and accuracy of DuckDB. Your primary responsibilities will include:

+ +
    +
  • Conducting thorough testing and quality assurance of DuckDB.
  • +
  • Developing and executing test plans, test cases, and test scripts to validate the functionality of DuckDB’s SQL features and client APIs.
  • +
  • Identifying and documenting software defects and issues and working closely with developers to ensure timely resolution.
  • +
  • Participating in designing and implementing automated testing frameworks, tools, and fuzzers.
  • +
  • Maintain and develop our Continuous Integration tools.
  • +
+ +

This position requires that you live in or be willing to relocate to +Amsterdam or a nearby city.

+ +

You must already be allowed to work in the European Union. We are not able to arrange a working visa at this time.

+ +

Requirements

+
    +
  • 3+ years of industry experience.
  • +
  • Strong expertise in SQL and experience with database APIs.
  • +
  • Familiarity with Database Testing (e.g., Fuzzers).
  • +
  • Familiarity with continuous integration practices and experience with GitHub CI/CD actions for automating testing and deployment processes.
  • +
  • Good experience with at least three of DuckDB’s API Languages: Python, Java, R, JS, Rust.
  • +
  • Knowledge of code versioning tools, particularly Git/GitHub.
  • +
  • Native level of communication skills in English.
  • +
  • You must be already allowed to work in the European Union.
  • +
+ +

Nice to have

+
    +
  • Bachelor in Computer Science.
  • +
  • MSc or Ph.D. in Computer Science, plus if related to Database Testing.
  • +
+ +

Perks

+
    +
  • Possibility of traveling to scientific and industrial conferences.
  • +
  • Opportunities to learn from and collaborate with other data analysis tool vendors
  • +
  • Possibility of working two days from home.
  • +
  • Flexible hours.
  • +
+ + back to main page +
+
+
+

Apply now

+ +
+
+
+ + +
+
+ + +
+
+ + +
+
+ + + CV File* +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+ + + + + + + + +
+
+
Thanks for your application! We will get in touch with you soon.
+
+
+
+ + + +
+
+
+
+ +
+ + + + + + + + + + + + + diff --git a/jobs/Software_Engineer.html b/jobs/Software_Engineer.html new file mode 100644 index 0000000..a40be73 --- /dev/null +++ b/jobs/Software_Engineer.html @@ -0,0 +1,253 @@ + + + + + + + + DuckDB Labs Jobs – Software Engineer + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ DuckDB Labs Logo +
+
+ +
+
+
+
+
+
+
+
+
+ +
+ +
+
+

Work at DuckDB Labs

+
+
+ +
+
+
+

Software Engineer

+

As a DuckDB software engineer, you will be working in Amsterdam with a small team of database experts on one of the most exciting, fastest-growing open-source database systems in the world. This vacancy requires that you live or are willing to relocate to Amsterdam (or nearby cities).

+ +

Requirements

+
    +
  • 2+ years of industry experience.
  • +
  • Good Experience with Database Systems and SQL expertise.
  • +
  • Good experience with DuckDB’s Core Language: C++.
  • +
  • Good experience with at least one of DuckDB’S API Languages: Python, Java, R, JS, Rust.
  • +
  • Knowledge of code versioning tools, in particular Git/GitHub.
  • +
  • Native level of communication skills in English.
  • +
  • You must be already allowed to work in the European Union.
  • +
+ +

Nice to have

+
    +
  • Experience with AWS.
  • +
  • Bachelor in Computer Science.
  • +
  • MSc or Ph.D. in Computer Science, plus if related to Database Architecture.
  • +
  • Experience with WASM.
  • +
+ +

Perks

+
    +
  • Possibility of traveling to scientific and industrial conferences.
  • +
  • Flexibility in creating and picking your own DuckDB internal projects.
  • +
  • Possibility of working 2 days from home.
  • +
  • Flexible hours.
  • +
+ + back to main page +
+
+
+

Apply now

+ +
+
+
+ + +
+
+ + +
+
+ + +
+
+ + + CV File* +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+ + + + + + + + +
+
+
Thanks for your application! We will get in touch with you soon.
+
+
+
+ + + +
+
+
+
+ +
+ + + + + + + + + + + + + diff --git a/jobs/Technical_Writer.html b/jobs/Technical_Writer.html new file mode 100644 index 0000000..fdffedd --- /dev/null +++ b/jobs/Technical_Writer.html @@ -0,0 +1,266 @@ + + + + + + + + DuckDB Labs Jobs – Technical Writer - Developer Relations + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ DuckDB Labs Logo +
+
+ +
+
+
+
+
+
+
+
+
+ +
+ +
+
+

Work at DuckDB Labs

+
+
+ +
+
+
+

Technical Writer - Developer Relations

+

As a Technical Writer for DuckDB, you will have the opportunity to +work with a talented team of database experts in Amsterdam, and +contribute to one of the most innovative and rapidly growing +open-source database systems in the world. +Your primary responsibilities will include developing and expanding +DuckDB’s documentation, including +documenting SQL features, creating how-to guides for our client APIs, +and developing data science pipeline templates using DuckDB. In +addition, it will also be expected that you write high-visibility blog +posts that showcase DuckDB being used in innovative ways (e.g., +https://duckdb.org/2022/10/12/modern-data-stack-in-a-box.html)

+ +

This position requires that you live in or be willing to relocate to +Amsterdam or a nearby city.

+ +

Requirements

+
    +
  • 2+ years of industry experience.
  • +
  • Strong expertise in SQL.
  • +
  • Experience with DB APIs.
  • +
  • Experience with data science pipelines.
  • +
  • Excellent writing skills for creating tutorials and how-to guides.
  • +
  • Good experience with at least three of DuckDB’S API Languages: Python, Java, R, JS, Rust.
  • +
  • Knowledge of code versioning tools, in particular Git/GitHub.
  • +
  • Native level of communication skills in English.
  • +
+ +

Nice to have

+
    +
  • Bachelor in Computer Science.
  • +
  • MSc or Ph.D. in Computer Science, plus if related to Database Architecture.
  • +
  • Experience in giving out technical presentations.
  • +
+ +

Perks

+
    +
  • Possibility of traveling to scientific and industrial conferences.
  • +
  • Opportunities to learn from and collaborate with other data analysis tool vendors
  • +
  • Possibility of working 2 days from home.
  • +
  • Flexible hours.
  • +
+ + back to main page +
+
+
+

Apply now

+ +
+
+
+ + +
+
+ + +
+
+ + +
+
+ + + CV File* +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+ + + + + + + + +
+
+
Thanks for your application! We will get in touch with you soon.
+
+
+
+ + + +
+
+
+
+ +
+ + + + + + + + + + + + + diff --git a/jobs/index.html b/jobs/index.html new file mode 100644 index 0000000..9159b55 --- /dev/null +++ b/jobs/index.html @@ -0,0 +1,165 @@ + + + + + + + + DuckDB Labs – DuckDB Labs – Jobs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ DuckDB Labs Logo +
+
+ +
+
+
+
+
+
+
+
+
+ +
+ + +
+
+

DuckDB Labs – Jobs

+
+
+ + + + + +
+
+

Jobs

+
+

As a DuckDB employee, you will be working in Amsterdam with a small team of database experts on one of the most exciting, fastest-growing open-source database systems in the world. +

+
+
+
+ +
+
+ + + +
+

Open Positions

+ +
+ +
+
+ + + + +
+ + + + + + + + + + + + diff --git a/js/duckdblabs-circle.json b/js/duckdblabs-circle.json new file mode 100644 index 0000000..9a0daef --- /dev/null +++ b/js/duckdblabs-circle.json @@ -0,0 +1 @@ +{"v":"5.7.4","fr":30,"ip":0,"op":16,"w":300,"h":300,"nm":"duckdb-labs-circle","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"Ebene 1 Konturen 2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"t":0,"s":[158.25,150,0],"to":[-1.375,0,0],"ti":[1.375,0,0]},{"t":14,"s":[150,150,0]}],"ix":2,"l":2},"a":{"a":0,"k":[150,150,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":0,"s":[-100,100,100]},{"t":14,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[12.082,0],[0,0],[0,0],[0,0],[0,12.081]],"o":[[0,0],[0,0],[0,0],[12.082,0],[0,-12.082]],"v":[[3.474,-21.898],[-25.522,-21.898],[-25.522,21.898],[3.474,21.898],[25.523,-0.151]],"c":true},"ix":2},"nm":"Pfad 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fläche 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[225.661,149.849],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transformieren"}],"nm":"Gruppe 2","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":18,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"Ebene 1 Konturen 3","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"t":0,"s":[220.495,150,0],"to":[-11.749,0,0],"ti":[11.749,0,0]},{"t":14,"s":[150,150,0]}],"ix":2,"l":2},"a":{"a":0,"k":[150,150,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,-33.828],[-33.828,0],[0,33.828],[33.829,0]],"o":[[0,33.828],[33.829,0],[0,-33.828],[-33.828,0]],"v":[[-61.314,0],[0,61.314],[61.314,0],[0,-61.314]],"c":true},"ix":2},"nm":"Pfad 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fläche 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[119.191,150],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transformieren"}],"nm":"Gruppe 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":18,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"Ebene 1 Konturen","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[150,150,0],"ix":2,"l":2},"a":{"a":0,"k":[150,150,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[81.854,0],[0,0],[0,81.854],[-81.853,0],[0,-81.854]],"o":[[0,0],[-81.853,0],[0,-81.854],[81.854,0],[0,81.854]],"v":[[0,148],[0,148],[-148,0],[0,-148],[148,0]],"c":true},"ix":2},"nm":"Pfad 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[1,0.411764705882,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fläche 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[150,150],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transformieren"}],"nm":"Gruppe 3","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":18,"st":0,"bm":0}],"markers":[]} \ No newline at end of file diff --git a/js/jquery-3.6.0.min.js b/js/jquery-3.6.0.min.js new file mode 100644 index 0000000..c4c6022 --- /dev/null +++ b/js/jquery-3.6.0.min.js @@ -0,0 +1,2 @@ +/*! jQuery v3.6.0 | (c) OpenJS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.0",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="
",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0+~]|"+R+")"+R+"*"),U=new RegExp(R+"|>"),V=new RegExp(W),X=new RegExp("^"+B+"$"),Q={ID:new RegExp("^#("+B+")"),CLASS:new RegExp("^\\.("+B+")"),TAG:new RegExp("^("+B+"|[*])"),ATTR:new RegExp("^"+M),PSEUDO:new RegExp("^"+W),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+R+"*(even|odd|(([+-]|)(\\d*)n|)"+R+"*(?:([+-]|)"+R+"*(\\d+)|))"+R+"*\\)|)","i"),bool:new RegExp("^(?:"+I+")$","i"),needsContext:new RegExp("^"+R+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+R+"*((?:-\\d)?\\d*)"+R+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,G=/^(?:input|select|textarea|button)$/i,K=/^h\d$/i,J=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+R+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){C()},ae=xe(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{O.apply(t=P.call(d.childNodes),d.childNodes),t[d.childNodes.length].nodeType}catch(e){O={apply:t.length?function(e,t){q.apply(e,P.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,d=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==d&&9!==d&&11!==d)return n;if(!r&&(C(e),e=e||T,E)){if(11!==d&&(u=Z.exec(t)))if(i=u[1]){if(9===d){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return O.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&p.getElementsByClassName&&e.getElementsByClassName)return O.apply(n,e.getElementsByClassName(i)),n}if(p.qsa&&!k[t+" "]&&(!v||!v.test(t))&&(1!==d||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===d&&(U.test(t)||_.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&p.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=A)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+be(l[o]);c=l.join(",")}try{return O.apply(n,f.querySelectorAll(c)),n}catch(e){k(t,!0)}finally{s===A&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>x.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[A]=!0,e}function ce(e){var t=T.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)x.attrHandle[n[r]]=t}function de(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function pe(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in p=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},C=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:d;return r!=T&&9===r.nodeType&&r.documentElement&&(a=(T=r).documentElement,E=!i(T),d!=T&&(n=T.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),p.scope=ce(function(e){return a.appendChild(e).appendChild(T.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),p.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),p.getElementsByTagName=ce(function(e){return e.appendChild(T.createComment("")),!e.getElementsByTagName("*").length}),p.getElementsByClassName=J.test(T.getElementsByClassName),p.getById=ce(function(e){return a.appendChild(e).id=A,!T.getElementsByName||!T.getElementsByName(A).length}),p.getById?(x.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},x.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(x.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},x.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),x.find.TAG=p.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):p.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},x.find.CLASS=p.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(p.qsa=J.test(T.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+R+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+R+"*(?:value|"+I+")"),e.querySelectorAll("[id~="+A+"-]").length||v.push("~="),(t=T.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+R+"*name"+R+"*="+R+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+A+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=T.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+R+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(p.matchesSelector=J.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){p.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",W)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=J.test(a.compareDocumentPosition),y=t||J.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!p.sortDetached&&t.compareDocumentPosition(e)===n?e==T||e.ownerDocument==d&&y(d,e)?-1:t==T||t.ownerDocument==d&&y(d,t)?1:u?H(u,e)-H(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==T?-1:t==T?1:i?-1:o?1:u?H(u,e)-H(u,t):0;if(i===o)return de(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?de(a[r],s[r]):a[r]==d?-1:s[r]==d?1:0}),T},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(C(e),p.matchesSelector&&E&&!k[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||p.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){k(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return Q.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&V.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+R+")"+e+"("+R+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function D(e,n,r){return b(n)?E.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?E.grep(e,function(e){return e===n!==r}):"string"!=typeof n?E.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(E.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||L,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:j.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof E?t[0]:t,E.merge(this,E.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:w,!0)),k.test(r[1])&&E.isPlainObject(t))for(r in t)b(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=w.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):b(e)?void 0!==n.ready?n.ready(e):e(E):E.makeArray(e,this)}).prototype=E.fn,L=E(w);var q=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}E.fn.extend({has:function(e){var t=E(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,pe=/^$|^module$|\/(?:java|ecma)script/i;le=w.createDocumentFragment().appendChild(w.createElement("div")),(ce=w.createElement("input")).setAttribute("type","radio"),ce.setAttribute("checked","checked"),ce.setAttribute("name","t"),le.appendChild(ce),m.checkClone=le.cloneNode(!0).cloneNode(!0).lastChild.checked,le.innerHTML="",m.noCloneChecked=!!le.cloneNode(!0).lastChild.defaultValue,le.innerHTML="",m.option=!!le.lastChild;var he={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ge(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&S(e,t)?E.merge([e],n):n}function ve(e,t){for(var n=0,r=e.length;n",""]);var ye=/<|&#?\w+;/;function me(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),d=[],p=0,h=e.length;p\s*$/g;function ke(e,t){return S(e,"table")&&S(11!==t.nodeType?t:t.firstChild,"tr")&&E(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Le(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function je(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n
",2===lt.childNodes.length),E.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(m.createHTMLDocument?((r=(t=w.implementation.createHTMLDocument("")).createElement("base")).href=w.location.href,t.head.appendChild(r)):t=w),o=!n&&[],(i=k.exec(e))?[t.createElement(i[1])]:(i=me([e],t,o),o&&o.length&&E(o).remove(),E.merge([],i.childNodes)));var r,i,o},E.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=E.css(e,"position"),c=E(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=E.css(e,"top"),u=E.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),b(t)&&(t=t.call(e,n,E.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},E.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){E.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===E.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===E.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=E(e).offset()).top+=E.css(e,"borderTopWidth",!0),i.left+=E.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-E.css(r,"marginTop",!0),left:t.left-i.left-E.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===E.css(e,"position"))e=e.offsetParent;return e||re})}}),E.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;E.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),E.each(["top","left"],function(e,n){E.cssHooks[n]=Me(m.pixelPosition,function(e,t){if(t)return t=Be(e,n),Pe.test(t)?E(e).position()[n]+"px":t})}),E.each({Height:"height",Width:"width"},function(a,s){E.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){E.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?E.css(e,t,i):E.style(e,t,n,i)},s,n?e:void 0,n)}})}),E.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),E.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){E.fn[n]=function(e,t){return 0>>=1;return(t+i)/e};return n.int32=function(){return 0|a.g(4)},n.quick=function(){return a.g(4)/4294967296},n.double=n,E(x(a.S),o),(e.pass||i||function(t,e,i,r){return r&&(r.S&&b(r,a),t.state=function(){return b(a,{})}),i?(h[c]=t,e):t})(n,s,"global"in e?e.global:this==h,e.state)},E(h.random(),o)}([],BMMath);var BezierFactory=function(){var t={getBezierEasing:function(t,e,i,r,s){var a=s||("bez_"+t+"_"+e+"_"+i+"_"+r).replace(/\./g,"p");if(o[a])return o[a];var n=new h([t,e,i,r]);return o[a]=n}},o={};var l=11,p=1/(l-1),e="function"==typeof Float32Array;function r(t,e){return 1-3*e+3*t}function s(t,e){return 3*e-6*t}function a(t){return 3*t}function m(t,e,i){return((r(e,i)*t+s(e,i))*t+a(e))*t}function f(t,e,i){return 3*r(e,i)*t*t+2*s(e,i)*t+a(e)}function h(t){this._p=t,this._mSampleValues=e?new Float32Array(l):new Array(l),this._precomputed=!1,this.get=this.get.bind(this)}return h.prototype={get:function(t){var e=this._p[0],i=this._p[1],r=this._p[2],s=this._p[3];return this._precomputed||this._precompute(),e===i&&r===s?t:0===t?0:1===t?1:m(this._getTForX(t),i,s)},_precompute:function(){var t=this._p[0],e=this._p[1],i=this._p[2],r=this._p[3];this._precomputed=!0,t===e&&i===r||this._calcSampleValues()},_calcSampleValues:function(){for(var t=this._p[0],e=this._p[2],i=0;in?-1:1,l=!0;l;)if(r[a]<=n&&r[a+1]>n?(o=(n-r[a])/(r[a+1]-r[a]),l=!1):a+=h,a<0||s-1<=a){if(a===s-1)return i[a];l=!1}return i[a]+(i[a+1]-i[a])*o}var D=createTypedArray("float32",8);return{getSegmentsLength:function(t){var e,i=segments_length_pool.newElement(),r=t.c,s=t.v,a=t.o,n=t.i,o=t._length,h=i.lengths,l=0;for(e=0;ei[0]||!(i[0]>t[0])&&(t[1]>i[1]||!(i[1]>t[1])&&(t[2]>i[2]||!(i[2]>t[2])&&void 0))}var h,i=function(){var r=[4,4,14];function s(t){var e,i,r,s=t.length;for(e=0;e=a.t-r){s.h&&(s=a),f=0;break}if(a.t-r>t){f=c;break}c=i&&i<=t||this._caching.lastFrame=t&&(this._caching._lastKeyframeIndex=-1,this._caching.lastIndex=0);var r=this.interpolateValue(t,this._caching);this.pv=r}return this._caching.lastFrame=t,this.pv}function d(t){var e;if("unidimensional"===this.propType)e=t*this.mult,1e-5=this.p.keyframes[this.p.keyframes.length-1].t?(e=this.p.getValueAtTime(this.p.keyframes[this.p.keyframes.length-1].t/r,0),this.p.getValueAtTime((this.p.keyframes[this.p.keyframes.length-1].t-.05)/r,0)):(e=this.p.pv,this.p.getValueAtTime((this.p._caching.lastFrame+this.p.offsetTime-.01)/r,this.p.offsetTime));else if(this.px&&this.px.keyframes&&this.py.keyframes&&this.px.getValueAtTime&&this.py.getValueAtTime){e=[],i=[];var s=this.px,a=this.py;s._caching.lastFrame+s.offsetTime<=s.keyframes[0].t?(e[0]=s.getValueAtTime((s.keyframes[0].t+.01)/r,0),e[1]=a.getValueAtTime((a.keyframes[0].t+.01)/r,0),i[0]=s.getValueAtTime(s.keyframes[0].t/r,0),i[1]=a.getValueAtTime(a.keyframes[0].t/r,0)):s._caching.lastFrame+s.offsetTime>=s.keyframes[s.keyframes.length-1].t?(e[0]=s.getValueAtTime(s.keyframes[s.keyframes.length-1].t/r,0),e[1]=a.getValueAtTime(a.keyframes[a.keyframes.length-1].t/r,0),i[0]=s.getValueAtTime((s.keyframes[s.keyframes.length-1].t-.01)/r,0),i[1]=a.getValueAtTime((a.keyframes[a.keyframes.length-1].t-.01)/r,0)):(e=[s.pv,a.pv],i[0]=s.getValueAtTime((s._caching.lastFrame+s.offsetTime-.01)/r,s.offsetTime),i[1]=a.getValueAtTime((a._caching.lastFrame+a.offsetTime-.01)/r,a.offsetTime))}else e=i=n;this.v.rotate(-Math.atan2(e[1]-i[1],e[0]-i[0]))}this.data.p&&this.data.p.s?this.data.p.z?this.v.translate(this.px.v,this.py.v,-this.pz.v):this.v.translate(this.px.v,this.py.v,0):this.v.translate(this.p.v[0],this.p.v[1],-this.p.v[2])}this.frameId=this.elem.globalData.frameId}},precalculateMatrix:function(){if(!this.a.k&&(this.pre.translate(-this.a.v[0],-this.a.v[1],this.a.v[2]),this.appliedTransformations=1,!this.s.effectsSequence.length)){if(this.pre.scale(this.s.v[0],this.s.v[1],this.s.v[2]),this.appliedTransformations=2,this.sk){if(this.sk.effectsSequence.length||this.sa.effectsSequence.length)return;this.pre.skewFromAxis(-this.sk.v,this.sa.v),this.appliedTransformations=3}if(this.r){if(this.r.effectsSequence.length)return;this.pre.rotate(-this.r.v),this.appliedTransformations=4}else this.rz.effectsSequence.length||this.ry.effectsSequence.length||this.rx.effectsSequence.length||this.or.effectsSequence.length||(this.pre.rotateZ(-this.rz.v).rotateY(this.ry.v).rotateX(this.rx.v).rotateZ(-this.or.v[2]).rotateY(this.or.v[1]).rotateX(this.or.v[0]),this.appliedTransformations=4)}},autoOrient:function(){}},extendPrototype([DynamicPropertyContainer],r),r.prototype.addDynamicProperty=function(t){this._addDynamicProperty(t),this.elem.addDynamicProperty(t),this._isDirty=!0},r.prototype._addDynamicProperty=DynamicPropertyContainer.prototype.addDynamicProperty,{getTransformProperty:function(t,e,i){return new r(t,e,i)}}}();function ShapePath(){this.c=!1,this._length=0,this._maxLength=8,this.v=createSizedArray(this._maxLength),this.o=createSizedArray(this._maxLength),this.i=createSizedArray(this._maxLength)}ShapePath.prototype.setPathData=function(t,e){this.c=t,this.setLength(e);for(var i=0;i=this._maxLength&&this.doubleArrayLength(),i){case"v":a=this.v;break;case"i":a=this.i;break;case"o":a=this.o}(!a[r]||a[r]&&!s)&&(a[r]=point_pool.newElement()),a[r][0]=t,a[r][1]=e},ShapePath.prototype.setTripleAt=function(t,e,i,r,s,a,n,o){this.setXYAt(t,e,"v",n,o),this.setXYAt(i,r,"o",n,o),this.setXYAt(s,a,"i",n,o)},ShapePath.prototype.reverse=function(){var t=new ShapePath;t.setPathData(this.c,this._length);var e=this.v,i=this.o,r=this.i,s=0;this.c&&(t.setTripleAt(e[0][0],e[0][1],r[0][0],r[0][1],i[0][0],i[0][1],0,!1),s=1);var a,n=this._length-1,o=this._length;for(a=s;a=c[c.length-1].t-this.offsetTime)r=c[c.length-1].s?c[c.length-1].s[0]:c[c.length-2].e[0],a=!0;else{for(var d,u,y=f,g=c.length-1,v=!0;v&&(d=c[y],!((u=c[y+1]).t-this.offsetTime>t));)y=u.t-this.offsetTime)p=1;else if(tr+i);else p=o.s*s<=r?0:(o.s*s-r)/i,m=o.e*s>=r+i?1:(o.e*s-r)/i,h.push([p,m])}return h.length||h.push([0,0]),h},TrimModifier.prototype.releasePathsData=function(t){var e,i=t.length;for(e=0;ee.e){i.c=!1;break}e.s<=d&&e.e>=d+n.addedLength?(this.addSegment(f[r].v[s-1],f[r].o[s-1],f[r].i[s],f[r].v[s],i,o,y),y=!1):(l=bez.getNewSegment(f[r].v[s-1],f[r].v[s],f[r].o[s-1],f[r].i[s],(e.s-d)/n.addedLength,(e.e-d)/n.addedLength,h[s-1]),this.addSegmentFromArray(l,i,o,y),y=!1,i.c=!1),d+=n.addedLength,o+=1}if(f[r].c&&h.length){if(n=h[s-1],d<=e.e){var g=h[s-1].addedLength;e.s<=d&&e.e>=d+g?(this.addSegment(f[r].v[s-1],f[r].o[s-1],f[r].i[0],f[r].v[0],i,o,y),y=!1):(l=bez.getNewSegment(f[r].v[s-1],f[r].v[0],f[r].o[s-1],f[r].i[0],(e.s-d)/g,(e.e-d)/g,h[s-1]),this.addSegmentFromArray(l,i,o,y),y=!1,i.c=!1)}else i.c=!1;d+=n.addedLength,o+=1}if(i._length&&(i.setXYAt(i.v[p][0],i.v[p][1],"i",p),i.setXYAt(i.v[i._length-1][0],i.v[i._length-1][1],"o",i._length-1)),d>e.e)break;r=d.length&&(m=0,d=u[f+=1]?u[f].points:E.v.c?u[f=m=0].points:(l-=h.partialLength,null)),d&&(c=h,y=(h=d[m]).partialLength));L=T[s].an/2-T[s].add,_.translate(-L,0,0)}else L=T[s].an/2-T[s].add,_.translate(-L,0,0),_.translate(-x[0]*T[s].an/200,-x[1]*V/100,0);for(T[s].l/2,w=0;we));)i+=1;return this.keysIndex!==i&&(this.keysIndex=i),this.data.d.k[this.keysIndex].s},TextProperty.prototype.buildFinalText=function(t){for(var e,i=FontManager.getCombinedCharacterCodes(),r=[],s=0,a=t.length;sthis.minimumFontSize&&D=u(o)&&(n=c(0,d(t-o<0?d(h,1)-(o-t):h-t,1))),a(n));return n*this.a.v},getValue:function(t){this.iterateDynamicProperties(),this._mdf=t||this._mdf,this._currentTextLength=this.elem.textProperty.currentData.l.length||0,t&&2===this.data.r&&(this.e.v=this._currentTextLength);var e=2===this.data.r?1:100/this.data.totalChars,i=this.o.v/e,r=this.s.v/e+i,s=this.e.v/e+i;if(st-this.layers[e].st&&this.buildItem(e),this.completeLayers=!!this.elements[e]&&this.completeLayers;this.checkPendingElements()},BaseRenderer.prototype.createItem=function(t){switch(t.ty){case 2:return this.createImage(t);case 0:return this.createComp(t);case 1:return this.createSolid(t);case 3:return this.createNull(t);case 4:return this.createShape(t);case 5:return this.createText(t);case 13:return this.createCamera(t)}return this.createNull(t)},BaseRenderer.prototype.createCamera=function(){throw new Error("You're using a 3d camera. Try the html renderer.")},BaseRenderer.prototype.buildAllItems=function(){var t,e=this.layers.length;for(t=0;t=t)return this.threeDElements[e].perspectiveElem;e+=1}},HybridRenderer.prototype.createThreeDContainer=function(t,e){var i=createTag("div");styleDiv(i);var r=createTag("div");styleDiv(r),"3d"===e&&(i.style.width=this.globalData.compSize.w+"px",i.style.height=this.globalData.compSize.h+"px",i.style.transformOrigin=i.style.mozTransformOrigin=i.style.webkitTransformOrigin="50% 50%",r.style.transform=r.style.webkitTransform="matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)"),i.appendChild(r);var s={container:r,perspectiveElem:i,startPos:t,endPos:t,type:e};return this.threeDElements.push(s),s},HybridRenderer.prototype.build3dContainers=function(){var t,e,i=this.layers.length,r="";for(t=0;tt?!0!==this.isInRange&&(this.globalData._mdf=!0,this._mdf=!0,this.isInRange=!0,this.show()):!1!==this.isInRange&&(this.globalData._mdf=!0,this.isInRange=!1,this.hide())},renderRenderable:function(){var t,e=this.renderableComponents.length;for(t=0;t=t.x+t.width&&this.currentBBox.height+this.currentBBox.y>=t.y+t.height},HShapeElement.prototype.renderInnerContent=function(){if(this._renderShapeFrame(),!this.hidden&&(this._isFirstFrame||this._mdf)){var t=this.tempBoundingBox,e=999999;if(t.x=e,t.xMax=-e,t.y=e,t.yMax=-e,this.calculateBoundingBox(this.itemsData,t),t.width=t.xMaxthis.animationData.op&&(this.animationData.op=t.op,this.totalFrames=Math.floor(t.op-this.animationData.ip));var e,i,r=this.animationData.layers,s=r.length,a=t.layers,n=a.length;for(i=0;ithis.timeCompleted&&(this.currentFrame=this.timeCompleted),this.trigger("enterFrame"),this.renderFrame()},AnimationItem.prototype.renderFrame=function(){if(!1!==this.isLoaded)try{this.renderer.renderFrame(this.currentFrame+this.firstFrame)}catch(t){this.triggerRenderFrameError(t)}},AnimationItem.prototype.play=function(t){t&&this.name!=t||!0===this.isPaused&&(this.isPaused=!1,this._idle&&(this._idle=!1,this.trigger("_active")))},AnimationItem.prototype.pause=function(t){t&&this.name!=t||!1===this.isPaused&&(this.isPaused=!0,this._idle=!0,this.trigger("_idle"))},AnimationItem.prototype.togglePause=function(t){t&&this.name!=t||(!0===this.isPaused?this.play():this.pause())},AnimationItem.prototype.stop=function(t){t&&this.name!=t||(this.pause(),this.playCount=0,this._completedLoop=!1,this.setCurrentRawFrameValue(0))},AnimationItem.prototype.goToAndStop=function(t,e,i){i&&this.name!=i||(e?this.setCurrentRawFrameValue(t):this.setCurrentRawFrameValue(t*this.frameModifier),this.pause())},AnimationItem.prototype.goToAndPlay=function(t,e,i){this.goToAndStop(t,e,i),this.play()},AnimationItem.prototype.advanceTime=function(t){if(!0!==this.isPaused&&!1!==this.isLoaded){var e=this.currentRawFrame+t*this.frameModifier,i=!1;e>=this.totalFrames-1&&0=this.totalFrames?(this.playCount+=1,this.checkSegments(e%this.totalFrames)||(this.setCurrentRawFrameValue(e%this.totalFrames),this._completedLoop=!0,this.trigger("loopComplete"))):this.setCurrentRawFrameValue(e):this.checkSegments(e>this.totalFrames?e%this.totalFrames:0)||(i=!0,e=this.totalFrames-1):e<0?this.checkSegments(e%this.totalFrames)||(!this.loop||this.playCount--<=0&&!0!==this.loop?(i=!0,e=0):(this.setCurrentRawFrameValue(this.totalFrames+e%this.totalFrames),this._completedLoop?this.trigger("loopComplete"):this._completedLoop=!0)):this.setCurrentRawFrameValue(e),i&&(this.setCurrentRawFrameValue(e),this.pause(),this.trigger("complete"))}},AnimationItem.prototype.adjustSegment=function(t,e){this.playCount=0,t[1]t[0]&&(this.frameModifier<0&&(this.playSpeed<0?this.setSpeed(-this.playSpeed):this.setDirection(1)),this.timeCompleted=this.totalFrames=t[1]-t[0],this.firstFrame=t[0],this.setCurrentRawFrameValue(.001+e)),this.trigger("segmentStart")},AnimationItem.prototype.setSegment=function(t,e){var i=-1;this.isPaused&&(this.currentRawFrame+this.firstFramee&&(i=e-t)),this.firstFrame=t,this.timeCompleted=this.totalFrames=e-t,-1!==i&&this.goToAndStop(i,!0)},AnimationItem.prototype.playSegments=function(t,e){if(e&&(this.segments.length=0),"object"==typeof t[0]){var i,r=t.length;for(i=0;idata.k[e].t&&tdata.k[e+1].t-t?(i=e+2,data.k[e+1].t):(i=e+1,data.k[e].t);break}}-1===i&&(i=e+1,r=data.k[e].t)}else r=i=0;var a={};return a.index=i,a.time=r/elem.comp.globalData.frameRate,a}function key(t){var e,i,r;if(!data.k.length||"number"==typeof data.k[0])throw new Error("The property has no keyframe at index "+t);t-=1,e={time:data.k[t].t/elem.comp.globalData.frameRate,value:[]};var s=data.k[t].hasOwnProperty("s")?data.k[t].s:data.k[t-1].e;for(r=s.length,i=0;il.length-1)&&(e=l.length-1),r=p-(s=l[l.length-1-e].t)),"pingpong"===t){if(Math.floor((h-s)/r)%2!=0)return this.getValueAtTime((r-(h-s)%r+s)/this.comp.globalData.frameRate,0)}else{if("offset"===t){var m=this.getValueAtTime(s/this.comp.globalData.frameRate,0),f=this.getValueAtTime(p/this.comp.globalData.frameRate,0),c=this.getValueAtTime(((h-s)%r+s)/this.comp.globalData.frameRate,0),d=Math.floor((h-s)/r);if(this.pv.length){for(n=(o=new Array(m.length)).length,a=0;al.length-1)&&(e=l.length-1),r=(s=l[e].t)-p),"pingpong"===t){if(Math.floor((p-h)/r)%2==0)return this.getValueAtTime(((p-h)%r+p)/this.comp.globalData.frameRate,0)}else{if("offset"===t){var m=this.getValueAtTime(p/this.comp.globalData.frameRate,0),f=this.getValueAtTime(s/this.comp.globalData.frameRate,0),c=this.getValueAtTime((r-(p-h)%r+p)/this.comp.globalData.frameRate,0),d=Math.floor((p-h)/r)+1;if(this.pv.length){for(n=(o=new Array(m.length)).length,a=0;an){var p=o,m=i.c&&o===h-1?0:o+1,f=(n-l)/a[o].addedLength;r=bez.getPointInSegment(i.v[p],i.v[m],i.o[p],i.i[m],f,a[o]);break}l+=a[o].addedLength,o+=1}return r||(r=i.c?[i.v[0][0],i.v[0][1]]:[i.v[i._length-1][0],i.v[i._length-1][1]]),r},vectorOnPath:function(t,e,i){t=1==t?this.v.c?0:.999:t;var r=this.pointOnPath(t,e),s=this.pointOnPath(t+.001,e),a=s[0]-r[0],n=s[1]-r[1],o=Math.sqrt(Math.pow(a,2)+Math.pow(n,2));return 0===o?[0,0]:"tangent"===i?[a/o,n/o]:[-n/o,a/o]},tangentOnPath:function(t,e){return this.vectorOnPath(t,e,"tangent")},normalOnPath:function(t,e){return this.vectorOnPath(t,e,"normal")},setGroupProperty:expressionHelpers.setGroupProperty,getValueAtTime:expressionHelpers.getStaticValueAtTime},extendPrototype([i],t),extendPrototype([i],e),e.prototype.getValueAtTime=function(t){return this._cachingAtTime||(this._cachingAtTime={shapeValue:shape_pool.clone(this.pv),lastIndex:0,lastTime:initialDefaultFrame}),t*=this.elem.globalData.frameRate,(t-=this.offsetTime)!==this._cachingAtTime.lastTime&&(this._cachingAtTime.lastIndex=this._cachingAtTime.lastTime').addClass('button white showall').text('Show all'); + $('.teammembers').after($showAllButton); + + $showAllButton.on('click', function() { + $(this).fadeOut(); + $remaining.slideDown(200); + }); + } + + // DISPLAY MORE NEWS + $("#load-more-news").on("click", function () { + const hiddenPosts = $(".postpreview.hidden"); + hiddenPosts.slice(0, 3).removeClass("hidden"); + if ($(".postpreview.hidden").length === 0) { + $(this).hide(); + } + }); + + // Mobile Menu + var hamburgers = document.querySelectorAll(".hamburger"); + if ($('.hamburger').length > 0) { + $('.hamburger').click(function(){ + $(this).toggleClass('is-active'); + $('.headerline nav').toggleClass('slidein'); + $('body main').toggleClass('inactive'); + }) + } + $('.headerline nav ul.menu li').click(function(){ + $('.hamburger').toggleClass('is-active'); + $('.headerline nav').toggleClass('slidein'); + $('body main').toggleClass('inactive'); + }) + + // Contact Form AJAX + $("#ajaxForm").submit(function(e){ + e.preventDefault(); + var action = $(this).attr("action"); + + $('#ajaxForm button[type="submit"]').hide(); + $('#ajaxForm .lds-ellipsis').fadeIn(); + + $.ajax({ + type: "POST", + url: action, + crossDomain: true, + data: new FormData(this), + dataType: "json", + processData: false, + contentType: false, + headers: { + "Accept": "application/json" + } + }).done(function() { + $('#ajaxForm').addClass('inactive'); + $('#ajaxForm .lds-ellipsis').hide(); + $('.success').addClass('is-active'); + }).fail(function() { + alert('An error occurred! Please try again later.'); + $('#ajaxForm button[type="submit"]').show(); + $('#ajaxForm .lds-ellipsis').hide(); + }); + + }); + + +}); \ No newline at end of file diff --git a/news/2021/07/14/spin-off-company-DuckDB-Labs.html b/news/2021/07/14/spin-off-company-DuckDB-Labs.html new file mode 100644 index 0000000..0cc9f7d --- /dev/null +++ b/news/2021/07/14/spin-off-company-DuckDB-Labs.html @@ -0,0 +1,165 @@ + + + + + + + + DuckDB Labs – New CWI Spin-Off Company DuckDB Labs: Solutions for Fast Database Analytics + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ DuckDB Labs Logo +
+
+ +
+
+
+
+
+
+
+
+
+ +
+ +
+ +
+
+ +
+
2021-07-14
+

New CWI Spin-Off Company DuckDB Labs: Solutions for Fast Database Analytics

+

TL;DR: CWI researchers Hannes Mühleisen and Mark Raasveldt founded the spin-off company DuckDB Labs, providing services and development for DuckDB. DuckDB is an open-source database management system aimed at efficient data analytics. It is easy to install, works very fast and within running processes. Presently, DuckDB is downloaded about 100.000 times per week.

+ + + +

Companies, governments and academic research groups collect ever more data. These data are stored in large databases and one of the main challenges is to extract new insights from the data as fast as possible. That’s one of the jobs of a database management system.

+ +

In 2019 Hannes Mühleisen and Mark Raasveldt, researchers in the Database Architectures research group at Centrum Wiskunde & Informatica (CWI), released the first open-source version of their database management system DuckDB. DuckDB is the first purpose built in-process Online Analytical Processing (OLAP)-database management system.

+ +

“DuckDB got its name because I used to have a pet duck”, Mühleisen laughs. “Ducks are amazing animals. They can fly, walk and swim, and they are quite resilient to environmental challenges. So, they are the perfect mascot for a versatile and resilient data management system.”

+ +

Now, two years later, DuckDB has become a huge success: it is downloaded about 100.000 times per week, mainly by data scientists and corporate users. “In a world where most successful software has been developed in the corporate sector in the USA, it is remarkable that software coming out of the publicly funded research institute CWI is gaining such a traction”, says Mühleisen.

+ +

With the aim of creating an even better system, Mühleisen and Raasveldt just founded DuckDB Labs B.V. as a spin-off company from CWI. The company will act as the environment for innovative projects around DuckDB, to provide further development of the system as well as a platform for support services. Mühleisen emphasizes that DuckDB will still continue to be an Open-Source project under the current permissive MIT licence.

+ +

What distinguishes DuckDB from existing database management systems?

+ +

Raasveldt: “First of all, DuckDB aims at analytical use cases where it is needed to look at lots of data at the same time. Think about cases where millions of rows have to be aggregated, or where giant tables need to be combined. There are many such use cases in business reporting or in statistical analysis.”

+ +

Second, DuckDB runs inside other processes already running on the computer. Raasveldt: “If you do data analysis in Python, DuckDB will run inside Python. That creates the advantage that the data transfer is very quick. Actually, DuckDB is the first in-process OLAP-database system that manages large amounts of data. We call ourselves the ‘SQLite for analytics’. SQLite is the world’s most popular database management system, but it doesn’t do analytics.”

+ +

From the practical point of view, DuckDB is ‘lean and mean’. It is a small software package that everybody can easily install and for which no separate server is needed. Finally, DuckDB works fast. This is because DuckDB builds on state-of-the art database research origining from the CWI Datatabase Architecture group. For example, it uses a query processing technique called vectorized execution, which was developed at CWI in 2005.

+ +

DuckDB Labs is the newest addition to the list of 28 start-up companies originating at Centrum Wiskunde & Informatica in Amsterdam, a research institute in mathematics and computer science. This tradition of research-based spin-offs is in line with the CWI agenda of converting fundamental research into projects that are beneficial for the society.

+ + back to main page +
+ +
+
+ + +
+ + +
+ + + + + + + + + + + diff --git a/news/2022/11/15/motherduck-partnership.html b/news/2022/11/15/motherduck-partnership.html new file mode 100644 index 0000000..4db4ea5 --- /dev/null +++ b/news/2022/11/15/motherduck-partnership.html @@ -0,0 +1,156 @@ + + + + + + + + DuckDB Labs – Announcing the MotherDuck Partnership + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ DuckDB Labs Logo +
+
+ +
+
+
+
+
+
+
+
+
+ +
+ +
+ +
+
+ +
+
2022-11-15
+

Announcing the MotherDuck Partnership

+ + +

DuckDB Labs is excited to announce that we are going to be working with MotherDuck in the coming years to build a modern serverless cloud analytics platform based on DuckDB. DuckDB Labs has entered a long-term strategic partnership with MotherDuck to enrich and extend the DuckDB ecosystem. Jordan Tigani and his amazing founding team have decades of experience pushing the envelope of what is possible in cloud analytics which is why we feel confident to join them in this endeavor.

+ + + +

When the first ideas that eventually lead to DuckDB were thrown around, we went against the prevailing wisdom in both industry and research that only massive scale and distributed data processing would be the way forward. From our interactions with data practitioners, we became convinced that while massive datasets exist, they are mostly found in organizations that already have the technological expertise to handle them anyway. We bet on efficient and ergonomic single-node analytics, and we are very happy that the MotherDuck team shares this vision, especially given the team’s background.

+ +

MotherDuck joins DuckDB Labs’ excellent lineup of partners that includes Voltron Data, RelationalAI, Google’s Malloy Project and others. DuckDB Labs is not funded by venture capital, its sole owners are the founding team and CWI. All our revenue comes from partnerships where our partners employ DuckDB in mission-critical roles and contract with DuckDB Labs for close and long-term development collaboration. This allows DuckDB Labs to focus on pushing boundaries in the DuckDB software project without chasing exponential growth in sales.

+ +

While consulting alone is a viable business model for Open Source companies, it does not scale well. To address this, DuckDB Labs has acquired shares in MotherDuck, which connects their success with ours. This way, DuckDB Lab’s founding team joins in the financial success of our partners while allowing us to focus on the technical challenges as an artisanal database company.

+ +

MotherDuck has also started supporting the DuckDB Foundation: The DuckDB project itself is governed by the non-profit DuckDB Foundation which safeguards the intellectual property and continuity of the DuckDB Project. Its statutes also ensure DuckDB remains Open Source under the MIT license in perpetuity. The foundation appreciates donations from commercial users of DuckDB which organize in the DuckDB user association. User association members are heard for input on the development roadmap and enjoy several other benefits.

+ + + back to main page +
+ +
+
+ + +
+ + +
+ + + + + + + + + + + diff --git a/news/2023/10/02/support-policy.html b/news/2023/10/02/support-policy.html new file mode 100644 index 0000000..012d934 --- /dev/null +++ b/news/2023/10/02/support-policy.html @@ -0,0 +1,143 @@ + + + + + + + + DuckDB Labs – DuckDB Community Support Policy + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ DuckDB Labs Logo +
+
+ +
+
+
+
+
+
+
+
+
+ +
+ +
+ +
+
+ +
+
2023-10-02
+

DuckDB Community Support Policy

+

See the Community Support Policy page.

+ + back to main page +
+ +
+
+ + +
+ + +
+ + + + + + + + + + + diff --git a/news/2024/06/03/duckdb-version-100-released.html b/news/2024/06/03/duckdb-version-100-released.html new file mode 100644 index 0000000..bb66b87 --- /dev/null +++ b/news/2024/06/03/duckdb-version-100-released.html @@ -0,0 +1,143 @@ + + + + + + + + DuckDB Labs – DuckDB Version 1.0.0 Released + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ DuckDB Labs Logo +
+
+ +
+
+
+
+
+
+
+
+
+ +
+ +
+ +
+
+ +
+
2024-06-03
+

DuckDB Version 1.0.0 Released

+

DuckDB version 1.0.0 has just been released. See the announcement blog post on duckdb.org.

+ + back to main page +
+ +
+
+ + +
+ + +
+ + + + + + + + + + + diff --git a/news/2024/08/28/hydra-partnership.html b/news/2024/08/28/hydra-partnership.html new file mode 100644 index 0000000..abc5777 --- /dev/null +++ b/news/2024/08/28/hydra-partnership.html @@ -0,0 +1,153 @@ + + + + + + + + DuckDB Labs – Announcing the Hydra Partnership + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ DuckDB Labs Logo +
+
+ +
+
+
+
+
+
+
+
+
+ +
+ +
+ +
+
+ +
+
2024-08-28
+

Announcing the Hydra Partnership

+

DuckDB Labs is excited to announce that we are going to be working with Hydra in the coming years to build DuckDB-Powered PostgreSQL for real-time apps and analytics development. DuckDB Labs has entered a long-term strategic partnership with Hydra to enrich and extend the DuckDB ecosystem. Joseph Sciarrino and his co-founder, Jonathan Dance “JD” helped pioneer the fusion of columnar analytics with transactional RDBMS, raising the bar of what’s possible with Postgres, which is why we are confident to join them in this endeavor.

+ +

Our collaboration with Hydra revolves around pg_duckdb, an open-source (MIT licensed) program that embeds DuckDB’s state-of-the-art analytics engine and features within Postgres. pg_duckdb is meant for developing high-performance applications and analytics with any new or existing Postgres database. We’ve observed software engineers increasingly embedding powerful analytics directly into their applications. These applications tend to require both greater access to disparate data sources and sub-second response times. We believe pg_duckdb will serve these use-cases nicely by overcoming Postgres’ known limitations in analytical processing.

+ +

The Hydra team has graciously donated the pg_duckdb repository to the DuckDB Foundation to ensure the project remains open-source and free of conflict. We applaud and share Joseph & JD’s belief in the necessity and long-term benefits of creating an open-source data foundation as the bedrock of future work. pg_duckdb’s continued development is driven in collaboration with Hydra and MotherDuck as both companies share an exciting vision for the role of DuckDB in application development.

+ +

Hydra joins DuckDB Labs’ excellent lineup of partners that includes MotherDuck, Voltron Data, and others. DuckDB Labs is not funded by venture capital, its sole owners are the people in the founding team. All our revenue comes from partnerships where our partners employ DuckDB in mission-critical roles and contract with DuckDB Labs for close and long-term development collaboration. This allows DuckDB Labs to focus on pushing boundaries in the DuckDB software project without chasing exponential growth in sales.

+ +

While consulting alone is a viable business model for open-source companies, it does not scale well. To address this, DuckDB Labs has acquired shares in Hydra, which connects their success with ours. This way, DuckDB Labs’ founding team joins in the financial success of our partners while allowing us to focus on the technical challenges as an artisanal database company.

+ +

We welcome all contributions and support to pg_duckdb, large and small as pg_duckdb works towards its first release.

+ + back to main page +
+ +
+
+ + +
+ + +
+ + + + + + + + + + + diff --git a/news/2025/01/13/hannes-muehleisen-dutch-ict-award.html b/news/2025/01/13/hannes-muehleisen-dutch-ict-award.html new file mode 100644 index 0000000..1a2d916 --- /dev/null +++ b/news/2025/01/13/hannes-muehleisen-dutch-ict-award.html @@ -0,0 +1,145 @@ + + + + + + + + DuckDB Labs – Dutch ICT Research 2025 Award for Hannes Mühleisen + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ DuckDB Labs Logo +
+
+ +
+
+
+
+
+
+
+
+
+ +
+ +
+ +
+
+ +
+
2025-01-13
+

Dutch ICT Research 2025 Award for Hannes Mühleisen

+

We are proud to announce that DuckDB co-creator and DuckDB Labs CEO, Prof. Dr. Hannes Mühleisen, received the Dutch Prize for ICT Research 2025. This prize is awarded each year to a computer scientist in the Netherlands, who has conducted particularly innovative research within 15 years of obtaining their doctorate.

+ +

Read the full announcement in English or Dutch.

+ + back to main page +
+ +
+
+ + +
+ + +
+ + + + + + + + + + + diff --git a/news/index.html b/news/index.html new file mode 100644 index 0000000..aeda118 --- /dev/null +++ b/news/index.html @@ -0,0 +1,113 @@ + + + + + + + {% if page.title %} + DuckDB Labs - {{ page.title }} + {% else %} + DuckDB Labs - Directly from the developers + {% endif %} + + + + + + + + + + + + + + + + + + + + {% if page.description %} + + + {% else %} + + + {% endif %} + + + + + + + +
+
+
+ + +
+
+
+ +
+ + {% if page.body_class contains "nowrap" %} + + {{ content }} + + {% else %} +
+ + {{ content }} + +
+ {% endif %} + +
+ + + + + + + + + + diff --git a/scripts/serve.sh b/scripts/serve.sh new file mode 100755 index 0000000..3d0edfa --- /dev/null +++ b/scripts/serve.sh @@ -0,0 +1,8 @@ +#!/usr/bin/env bash + +set -euo pipefail + +# navigate to the repository root +cd "$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )/.." + +bundler exec jekyll serve --incremental --livereload $@ diff --git a/support/index.html b/support/index.html new file mode 100644 index 0000000..ccfaaf9 --- /dev/null +++ b/support/index.html @@ -0,0 +1,189 @@ + + + + + + + + DuckDB Labs – DuckDB Support Options + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ DuckDB Labs Logo +
+
+ +
+
+
+
+
+
+
+
+
+ +
+ + +
+
+

DuckDB Support Options

+
+
+ + + + + +
+
+

DuckDB Labs offers commercial support for DuckDB. + Customers can use a private issue tracker where issues are treated with a guaranteed response time, + and private data sets can be shared to help development. + The scope of the support is flexible, and may include client APIs, features, extensions, etc. + Please get in touch with us for more details. +

+ + +
+ +
+
+
Free
+

Community

+
+
    +
  • Public issue tracker
  • +
  • No guaranteed response time
  • +
  • SQL and API support only
  • +
+
+ Get Started +
+ +
+
+
Negotiable
+

Custom

+
+
    +
  • Private issue tracker and datasets
  • +
  • Guaranteed response time
  • +
  • Flexible scope
  • +
  • Deployment advice
  • +
  • Negotiable support volume
  • +
+
+ Get in Touch +
+ +
+ + +
+
+ + + +
+ + + + + + + + + + + +