diff --git a/.eslintrc.json b/.eslintrc.json new file mode 100644 index 0000000..7bd31df --- /dev/null +++ b/.eslintrc.json @@ -0,0 +1,7 @@ +{ + "extends": "airbnb-base", + "parser": "@babel/eslint-parser", + "env": { + "browser": true + } +} diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 0000000..3771637 --- /dev/null +++ b/.prettierrc @@ -0,0 +1,8 @@ +{ + "tabWidth": 2, + "useTabs": false, + "singleQuote": true, + "printWidth": 120, + "trailingComma": "all", + "plugins": ["prettier-plugin-tailwindcss"] +} diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 0000000..2220c2c --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,3 @@ +{ + "recommendations": ["bradlc.vscode-tailwindcss", "ritwickdey.LiveServer", "ExodiusStudios.comment-anchors"] +} diff --git a/.vscode/settings.json b/.vscode/settings.json index 18c8a90..591ec68 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,21 +1,23 @@ { - "cSpell.words": [ - "Arepa", - "Beale", - "bsides", - "bsidesrdu", - "Buttar", - "eversec", - "gabemarshall", - "Kaminsky", - "Kimmon", - "Lockpick", - "lockpicking", - "Locksport", - "Shahid", - "Stoll", - "Vixie", - "Wysopal", - "Zilla" - ] + "cSpell.words": [ + "Arepa", + "Beale", + "bsides", + "bsidesrdu", + "Buttar", + "eversec", + "gabemarshall", + "Kaminsky", + "Kimmon", + "Lockpick", + "lockpicking", + "Locksport", + "Shahid", + "Stoll", + "tailwindcss", + "Vixie", + "Wysopal", + "Zilla" + ] + "liveServer.settings.root": "./docs" } diff --git a/LICENSE b/LICENSE index 8a3cc74..2028066 100644 --- a/LICENSE +++ b/LICENSE @@ -1,21 +1,7 @@ -MIT License +ISC License Copyright (c) 2023 BSidesRDU -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: +Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies. -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/README.md b/README.md index e96b9f5..511ffe2 100644 --- a/README.md +++ b/README.md @@ -11,3 +11,56 @@ Security is top of mind across the entire sphere of IT and the world beyond. The With many tech-companies, colleges and universities in Raleigh, Durham, Chapel Hill and surrounding areas, it is also an international center of innovation in the security industry. +## Development + +Work in a branch. In fact, fork the main repo on GitHub, and work in a branch on your fork. + +```shell +git checkout -b my-new-branch +``` + +Edit the `docs/index.html` file directly. It's not necessary to edit `src/input.css` if you don't use anything but tailwindcss utility classes. + +### Dev Server + +To start the "dev server", do: + +```shell +npm start +``` + +This starts the `server:dev` and `watch:tailwind` scripts defined in `package.json`. + +The `server:dev` script starts `live-server` on the `docs` directory. Live-server will pick an open port on your machine, and launch a web browser on `localhost:{PORT}`. Keep this page open in one window, and your editor open in another window. The page will automatically reload when you save. + +The `watch:tailwind` script in turn runs the `tailwind --watch` command. CSS will be compiled with tailwindcss defaults and any utility classes used in the html files. This uses the `src/input.css` file. Don't remove this file. It's not necessary to edit this file if you only use tailwindcss utility classes. + +Tailwindcss is watching all HTML in the `docs` directory. When tailwindcss detects a change in one of those files, it builds the `docs/css/style.css` file. In turn, live-server will detect the change and reload the web page. Live-server is set to simply reload the css, not to "inject" it. This works best. + +### The `docs` Directory + +All "static" assets are in the `docs` directory. Leave them there. It's not necessary to move them or have a "build" process that compiles them. They're fine where they are. + +Please do not change the `docs` directory to `public` or `html` or `static`. The `docs` directory is where github looks for the web root. When a pull request is done into the `main` branch, a GitHub Action is kicked off that builds from that branch and deploys the website. + + + +### Suggested Global Packages + +It is recommended that you have the `live-server` package installed globally. Live-server is required to run the `server:dev` script. It's not necessary, per se, but it's nice to have. However, due to its global utility, it's not installed directly in this project. + +To install, do; + +```shell +npm i -g live-server +``` + +## Deployment + +Once you're happy with your changes, push them up to github. + +```shell +git push -u origin my-new-branch +``` + +Then, on [GitHub](https://github.com/BSidesRDU/website), open a pull request (PR) against the main branch. When your PR is approved and merged, the GitHub Action will kick off that deploys the site. It's nice if someone previews your changes and code before it's merged. diff --git a/docs/.gitignore b/docs/.gitignore deleted file mode 100644 index e0b88a3..0000000 --- a/docs/.gitignore +++ /dev/null @@ -1,93 +0,0 @@ -.env* - -# Created by .ignore support plugin (hsz.mobi) -### Node template -# Logs -/logs -*.log -npm-debug.log* -yarn-debug.log* -yarn-error.log* - -# Runtime data -pids -*.pid -*.seed -*.pid.lock - -# Directory for instrumented libs generated by jscoverage/JSCover -lib-cov - -# Coverage directory used by tools like istanbul -coverage - -# nyc test coverage -.nyc_output - -# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) -.grunt - -# Bower dependency directory (https://bower.io/) -bower_components - -# node-waf configuration -.lock-wscript - -# Compiled binary addons (https://nodejs.org/api/addons.html) -build/Release - -# Dependency directories -node_modules/ -jspm_packages/ - -# TypeScript v1 declaration files -typings/ - -# Optional npm cache directory -.npm - -# Optional eslint cache -.eslintcache - -# Optional REPL history -.node_repl_history - -# Output of 'npm pack' -*.tgz - -# Yarn Integrity file -.yarn-integrity - -# dotenv environment variables file -.env - -# parcel-bundler cache (https://parceljs.org/) -.cache - -# next.js build output -.next - -# nuxt.js build output -.nuxt - -# Nuxt generate -dist - -# vuepress build output -.vuepress/dist - -# Serverless directories -.serverless - -# IDE / Editor -.idea - -# Service worker -sw.* - -# macOS -.DS_Store - -# Vim swap files -*.swp - diff --git a/docs/.prettierrc b/docs/.prettierrc deleted file mode 100644 index f390234..0000000 --- a/docs/.prettierrc +++ /dev/null @@ -1,6 +0,0 @@ -{ - "tabWidth": 2, - "useTabs": false, - "singleQuote": true, - "printWidth": 120 -} diff --git a/docs/css/style.css b/docs/css/style.css index 7b63ff9..37974b8 100644 --- a/docs/css/style.css +++ b/docs/css/style.css @@ -1,1016 +1,1598 @@ -@import url(https://fonts.googleapis.com/css2?family=Crimson+Text:ital@0;1&family=Rubik:wght@400;500;700&family=Ubuntu+Mono:ital,wght@0,400;1,700&display=swap); +/* +! tailwindcss v3.4.1 | MIT License | https://tailwindcss.com +*/ + +/* +1. Prevent padding and border from affecting element width. (https://github.com/mozdevs/cssremedy/issues/4) +2. Allow adding a border to an element by just adding a border-width. (https://github.com/tailwindcss/tailwindcss/pull/116) +*/ *, -:after, -:before { +::before, +::after { + box-sizing: border-box; + /* 1 */ + border-width: 0; + /* 2 */ + border-style: solid; + /* 2 */ + border-color: #e5e7eb; + /* 2 */ +} + +::before, +::after { + --tw-content: ''; +} + +/* +1. Use a consistent sensible line-height in all browsers. +2. Prevent adjustments of font size after orientation changes in iOS. +3. Use a more readable tab size. +4. Use the user's configured `sans` font-family by default. +5. Use the user's configured `sans` font-feature-settings by default. +6. Use the user's configured `sans` font-variation-settings by default. +7. Disable tap highlights on iOS +*/ + +html, +:host { + line-height: 1.5; + /* 1 */ + -webkit-text-size-adjust: 100%; + /* 2 */ + -moz-tab-size: 4; + /* 3 */ + -o-tab-size: 4; + tab-size: 4; + /* 3 */ + font-family: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + /* 4 */ + font-feature-settings: normal; + /* 5 */ + font-variation-settings: normal; + /* 6 */ + -webkit-tap-highlight-color: transparent; + /* 7 */ +} + +/* +1. Remove the margin in all browsers. +2. Inherit line-height from `html` so users can set them as a class directly on the `html` element. +*/ + +body { margin: 0; - padding: 0; - border: 0 solid; - box-sizing: inherit; + /* 1 */ + line-height: inherit; + /* 2 */ +} + +/* +1. Add the correct height in Firefox. +2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655) +3. Ensure horizontal rules are visible by default. +*/ + +hr { + height: 0; + /* 1 */ + color: inherit; + /* 2 */ + border-top-width: 1px; + /* 3 */ +} + +/* +Add the correct text decoration in Chrome, Edge, and Safari. +*/ + +abbr:where([title]) { + -webkit-text-decoration: underline dotted; + text-decoration: underline dotted; +} + +/* +Remove the default font size and weight for headings. +*/ + +h1, +h2, +h3, +h4, +h5, +h6 { + font-size: inherit; + font-weight: inherit; +} + +/* +Reset links to optimize for opt-in styling instead of opt-out. +*/ + +a { + color: inherit; + text-decoration: inherit; +} + +/* +Add the correct font weight in Edge and Safari. +*/ + +b, +strong { + font-weight: bolder; +} + +/* +1. Use the user's configured `mono` font-family by default. +2. Use the user's configured `mono` font-feature-settings by default. +3. Use the user's configured `mono` font-variation-settings by default. +4. Correct the odd `em` font sizing in all browsers. +*/ + +code, +kbd, +samp, +pre { + font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; + /* 1 */ + font-feature-settings: normal; + /* 2 */ + font-variation-settings: normal; + /* 3 */ + font-size: 1em; + /* 4 */ } -html { - font-size: 62.5%; - overflow-y: scroll; - font-family: Rubik, sans-serif; - background-color: #f6f6f6; - color: #151411; - scroll-padding-top: 12rem; - scroll-behavior: smooth; -} +/* +Add the correct font size in all browsers. +*/ -body { - box-sizing: border-box; - padding-top: 12rem; +small { + font-size: 80%; } -::-moz-selection { - background-color: red; - color: #fff; +/* +Prevent `sub` and `sup` elements from affecting the line height in all browsers. +*/ + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sub { + bottom: -0.25em; +} + +sup { + top: -0.5em; +} + +/* +1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297) +2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016) +3. Remove gaps between table borders by default. +*/ + +table { + text-indent: 0; + /* 1 */ + border-color: inherit; + /* 2 */ + border-collapse: collapse; + /* 3 */ +} + +/* +1. Change the font styles in all browsers. +2. Remove the margin in Firefox and Safari. +3. Remove default padding in all browsers. +*/ + +button, +input, +optgroup, +select, +textarea { + font-family: inherit; + /* 1 */ + font-feature-settings: inherit; + /* 1 */ + font-variation-settings: inherit; + /* 1 */ + font-size: 100%; + /* 1 */ + font-weight: inherit; + /* 1 */ + line-height: inherit; + /* 1 */ + color: inherit; + /* 1 */ + margin: 0; + /* 2 */ + padding: 0; + /* 3 */ } -::selection { - background-color: red; - color: #fff; +/* +Remove the inheritance of text transform in Edge and Firefox. +*/ + +button, +select { + text-transform: none; } -.content-section { - width: min(120ch, 100vw - 3.2rem); - margin: 0 auto 1.2rem; +/* +1. Correct the inability to style clickable types in iOS and Safari. +2. Remove default button styles. +*/ + +button, +[type='button'], +[type='reset'], +[type='submit'] { + -webkit-appearance: button; + /* 1 */ + background-color: transparent; + /* 2 */ + background-image: none; + /* 2 */ } -.content-section__wide { - width: 98vw; +/* +Use the modern Firefox focus style for all focusable elements. +*/ + +:-moz-focusring { + outline: auto; } -@media only screen and (min-width: 63.75em) { - .content-section__wide { - width: 80vw; - } +/* +Remove the additional `:invalid` styles in Firefox. (https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737) +*/ + +:-moz-ui-invalid { + box-shadow: none; } -.content-section h1 { - font-size: 3.2rem; - margin-bottom: 2.8rem; +/* +Add the correct vertical alignment in Chrome and Firefox. +*/ + +progress { + vertical-align: baseline; } -.content-section h2 { - font-size: 2.8rem; - margin-bottom: 2.4rem; +/* +Correct the cursor style of increment and decrement buttons in Safari. +*/ + +::-webkit-inner-spin-button, +::-webkit-outer-spin-button { + height: auto; } -.content-section h3 { - font-size: 2.4rem; - margin-bottom: 2rem; +/* +1. Correct the odd appearance in Chrome and Safari. +2. Correct the outline style in Safari. +*/ + +[type='search'] { + -webkit-appearance: textfield; + /* 1 */ + outline-offset: -2px; + /* 2 */ } -.content-section h3.data { - position: relative; - padding-left: 3.6rem; +/* +Remove the inner padding in Chrome and Safari on macOS. +*/ + +::-webkit-search-decoration { + -webkit-appearance: none; } -.content-section h3.data data { - position: absolute; - top: 0; - left: 0; - font-size: 1.6rem; - font-weight: 400; - border: 1px solid #595959; - width: 2.8rem; - height: 2.8rem; - line-height: 2.8rem; - border-radius: 2.8rem; - text-align: center; +/* +1. Correct the inability to style clickable types in iOS and Safari. +2. Change font properties to `inherit` in Safari. +*/ + +::-webkit-file-upload-button { + -webkit-appearance: button; + /* 1 */ + font: inherit; + /* 2 */ } -.content-section h4 { - font-size: 2rem; +/* +Add the correct display in Chrome and Safari. +*/ + +summary { + display: list-item; } -.content-section h4, -.content-section ol, -.content-section p, -.content-section ul { - margin-bottom: 2rem; +/* +Removes the default spacing and border for appropriate elements. +*/ + +blockquote, +dl, +dd, +h1, +h2, +h3, +h4, +h5, +h6, +hr, +figure, +p, +pre { + margin: 0; } -.content-section ol li, -.content-section p, -.content-section ul li { - font-size: 2rem; - line-height: 3.3rem; +fieldset { + margin: 0; + padding: 0; } -.content-section ol li, -.content-section ul li { - margin-left: 2rem; +legend { + padding: 0; } -.content-section span.nobr { - white-space: nowrap; +ol, +ul, +menu { + list-style: none; + margin: 0; + padding: 0; } -.content-section img { - margin: 0 auto; - max-width: 100%; +/* +Reset default styling for dialogs. +*/ + +dialog { + padding: 0; } -h3.coffee { - display: flex; - justify-content: space-between; - align-items: baseline; +/* +Prevent resizing textareas horizontally by default. +*/ + +textarea { + resize: vertical; } -span.little-chocolate-donuts { - font-size: 1.2rem; +/* +1. Reset the default placeholder opacity in Firefox. (https://github.com/tailwindlabs/tailwindcss/issues/3300) +2. Set the default placeholder color to the user's configured gray 400 color. +*/ + +input::-moz-placeholder, textarea::-moz-placeholder { + opacity: 1; + /* 1 */ + color: #9ca3af; + /* 2 */ } -span.little-chocolate-donuts a { - text-decoration: none; - color: #000000; - cursor: default; +input::placeholder, +textarea::placeholder { + opacity: 1; + /* 1 */ + color: #9ca3af; + /* 2 */ } -.content-section .food__provider { - text-align: center; +/* +Set the default cursor for buttons. +*/ + +button, +[role="button"] { + cursor: pointer; } -.content-section .food__provider img { - min-width: 50%; - max-width: 70%; +/* +Make sure disabled buttons don't get the pointer cursor. +*/ + +:disabled { + cursor: default; } -.content-section img.center { +/* +1. Make replaced elements `display: block` by default. (https://github.com/mozdevs/cssremedy/issues/14) +2. Add `vertical-align: middle` to align replaced elements more sensibly by default. (https://github.com/jensimmons/cssremedy/issues/14#issuecomment-634934210) + This can trigger a poorly considered lint error in some tools but is included by design. +*/ + +img, +svg, +video, +canvas, +audio, +iframe, +embed, +object { display: block; - margin: 0 auto 7rem; + /* 1 */ + vertical-align: middle; + /* 2 */ } -.content-section.center { - text-align: center; -} +/* +Constrain images and videos to the parent width and preserve their intrinsic aspect ratio. (https://github.com/mozdevs/cssremedy/issues/14) +*/ -.content-section .google-map { - height: 35rem; - position: relative; - margin-bottom: 4rem; +img, +video { + max-width: 100%; + height: auto; } -.content-section .google-map iframe { - border: 0; - height: 100%; +/* Make elements with the HTML hidden attribute stay hidden by default */ + +[hidden] { + display: none; +} + +*, ::before, ::after { + --tw-border-spacing-x: 0; + --tw-border-spacing-y: 0; + --tw-translate-x: 0; + --tw-translate-y: 0; + --tw-rotate: 0; + --tw-skew-x: 0; + --tw-skew-y: 0; + --tw-scale-x: 1; + --tw-scale-y: 1; + --tw-pan-x: ; + --tw-pan-y: ; + --tw-pinch-zoom: ; + --tw-scroll-snap-strictness: proximity; + --tw-gradient-from-position: ; + --tw-gradient-via-position: ; + --tw-gradient-to-position: ; + --tw-ordinal: ; + --tw-slashed-zero: ; + --tw-numeric-figure: ; + --tw-numeric-spacing: ; + --tw-numeric-fraction: ; + --tw-ring-inset: ; + --tw-ring-offset-width: 0px; + --tw-ring-offset-color: #fff; + --tw-ring-color: rgb(59 130 246 / 0.5); + --tw-ring-offset-shadow: 0 0 #0000; + --tw-ring-shadow: 0 0 #0000; + --tw-shadow: 0 0 #0000; + --tw-shadow-colored: 0 0 #0000; + --tw-blur: ; + --tw-brightness: ; + --tw-contrast: ; + --tw-grayscale: ; + --tw-hue-rotate: ; + --tw-invert: ; + --tw-saturate: ; + --tw-sepia: ; + --tw-drop-shadow: ; + --tw-backdrop-blur: ; + --tw-backdrop-brightness: ; + --tw-backdrop-contrast: ; + --tw-backdrop-grayscale: ; + --tw-backdrop-hue-rotate: ; + --tw-backdrop-invert: ; + --tw-backdrop-opacity: ; + --tw-backdrop-saturate: ; + --tw-backdrop-sepia: ; +} + +::backdrop { + --tw-border-spacing-x: 0; + --tw-border-spacing-y: 0; + --tw-translate-x: 0; + --tw-translate-y: 0; + --tw-rotate: 0; + --tw-skew-x: 0; + --tw-skew-y: 0; + --tw-scale-x: 1; + --tw-scale-y: 1; + --tw-pan-x: ; + --tw-pan-y: ; + --tw-pinch-zoom: ; + --tw-scroll-snap-strictness: proximity; + --tw-gradient-from-position: ; + --tw-gradient-via-position: ; + --tw-gradient-to-position: ; + --tw-ordinal: ; + --tw-slashed-zero: ; + --tw-numeric-figure: ; + --tw-numeric-spacing: ; + --tw-numeric-fraction: ; + --tw-ring-inset: ; + --tw-ring-offset-width: 0px; + --tw-ring-offset-color: #fff; + --tw-ring-color: rgb(59 130 246 / 0.5); + --tw-ring-offset-shadow: 0 0 #0000; + --tw-ring-shadow: 0 0 #0000; + --tw-shadow: 0 0 #0000; + --tw-shadow-colored: 0 0 #0000; + --tw-blur: ; + --tw-brightness: ; + --tw-contrast: ; + --tw-grayscale: ; + --tw-hue-rotate: ; + --tw-invert: ; + --tw-saturate: ; + --tw-sepia: ; + --tw-drop-shadow: ; + --tw-backdrop-blur: ; + --tw-backdrop-brightness: ; + --tw-backdrop-contrast: ; + --tw-backdrop-grayscale: ; + --tw-backdrop-hue-rotate: ; + --tw-backdrop-invert: ; + --tw-backdrop-opacity: ; + --tw-backdrop-saturate: ; + --tw-backdrop-sepia: ; +} + +.container { width: 100%; } -.content-section .floor-plan { - margin-bottom: 4rem; +@media (min-width: 640px) { + .container { + max-width: 640px; + } } -.content-section .after-party .table-esque p strong { - display: block; +@media (min-width: 768px) { + .container { + max-width: 768px; + } } -@media only screen and (min-width: 63.75em) { - .content-section .after-party .table-esque { - border-top: 1px solid #999; - border-left: 1px solid #999; +@media (min-width: 1024px) { + .container { + max-width: 1024px; } +} - .content-section .after-party .table-esque p { - border-right: 1px solid #999; - border-bottom: 1px solid #999; - padding: 0; - margin: 0; - display: flex; - justify-content: flex-start; - align-items: stretch; +@media (min-width: 1280px) { + .container { + max-width: 1280px; } +} - .content-section .after-party .table-esque p strong { - display: block; - width: 12rem; - background-color: #ddd; - border-right: 1px solid #999; - padding: 0.2rem 0.4rem; - font-size: 1.6rem; +@media (min-width: 1536px) { + .container { + max-width: 1536px; } +} - .content-section .after-party .table-esque p span { - text-align: left; - padding: 0.2rem 0.6rem; - } +/* Custom styles go here, before utilities */ + +::-moz-selection { + background-color: red; + color: #fff; } -.content-section .note { - font-size: 1.6rem; - color: #474747; +::selection { + background-color: red; + color: #fff; } -.content-section__separator { - color: #373737; +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border-width: 0; } -.content-section__separator svg { - fill: currentColor; - width: 35rem; - display: block; - margin: 4rem auto; +.absolute { + position: absolute; } -.separator { - background-image: url(/img/glitter-rule.png); - background-size: cover; - width: 90%; - height: 7rem; - margin: 2rem auto 4rem; +.relative { + position: relative; } -@media only screen and (min-width: 63.75em) { - .separator { - width: 72rem; - height: 7rem; - } +.sticky { + position: sticky; } -.hero { - display: flex; - flex-direction: column; - align-items: center; - text-align: center; +.-inset-0 { + inset: -0px; } -.hero h1 { - font-size: 6rem; - margin-bottom: 1.2rem; +.-inset-0\.5 { + inset: -0.125rem; } -.hero h2 { - font-size: 4.8rem; - margin-bottom: 1.2rem; +.inset-y-0 { + top: 0px; + bottom: 0px; } -.hero__logo svg { - margin: 1.2rem auto; - margin-bottom: 4rem; +.left-0 { + left: 0px; } -.hero__announcement { - width: 40rem; - display: block; - margin-bottom: 4rem; +.top-0 { + top: 0px; } -.hero__0b1010 { - width: 40rem; - display: block; - margin-bottom: 4rem; +.mx-4 { + margin-left: 1rem; + margin-right: 1rem; } -code[class*='language-'], -pre[class*='language-'] { - color: #000; - background: 0 0; - text-shadow: 0 1px #fff; - font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace; - font-size: 1em; - text-align: left; - white-space: pre; - word-spacing: normal; - word-break: normal; - word-wrap: normal; - line-height: 1.5; - -moz-tab-size: 4; - -o-tab-size: 4; - tab-size: 4; - -webkit-hyphens: none; - hyphens: none; +.mx-auto { + margin-left: auto; + margin-right: auto; } -code[class*='language-'] ::-moz-selection, -code[class*='language-']::-moz-selection, -pre[class*='language-'] ::-moz-selection, -pre[class*='language-']::-moz-selection { - text-shadow: none; - background: #b3d4fc; +.mx-3 { + margin-left: 0.75rem; + margin-right: 0.75rem; } -code[class*='language-'] ::selection, -code[class*='language-']::selection, -pre[class*='language-'] ::selection, -pre[class*='language-']::selection { - text-shadow: none; - background: #b3d4fc; +.-mt-1 { + margin-top: -0.25rem; } -@media print { - code[class*='language-'], - pre[class*='language-'] { - text-shadow: none; - } +.-mt-20 { + margin-top: -5rem; } -pre[class*='language-'] { - padding: 1em; - margin: 0.5em 0; - overflow: auto; +.mb-12 { + margin-bottom: 3rem; } -:not(pre) > code[class*='language-'], -pre[class*='language-'] { - background: #f5f2f0; +.mb-2 { + margin-bottom: 0.5rem; } -:not(pre) > code[class*='language-'] { - padding: 0.1em; - border-radius: 0.3em; - white-space: normal; +.mb-3 { + margin-bottom: 0.75rem; } -.token.cdata, -.token.comment, -.token.doctype, -.token.prolog { - color: #708090; +.mb-4 { + margin-bottom: 1rem; } -.token.punctuation { - color: #999; +.mb-5 { + margin-bottom: 1.25rem; } -.token.namespace { - opacity: 0.7; +.mb-6 { + margin-bottom: 1.5rem; } -.token.boolean, -.token.constant, -.token.deleted, -.token.number, -.token.property, -.token.symbol, -.token.tag { - color: #905; +.mb-7 { + margin-bottom: 1.75rem; } -.token.attr-name, -.token.builtin, -.token.char, -.token.inserted, -.token.selector, -.token.string { - color: #690; +.ml-2 { + margin-left: 0.5rem; } -.language-css .token.string, -.style .token.string, -.token.entity, -.token.operator, -.token.url { - color: #9a6e3a; - background: hsla(0, 0%, 100%, 0.5); +.ml-4 { + margin-left: 1rem; } -.token.atrule, -.token.attr-value, -.token.keyword { - color: #07a; +.mr-2 { + margin-right: 0.5rem; } -.token.class-name, -.token.function { - color: #dd4a68; +.mt-px { + margin-top: 1px; } -.token.important, -.token.regex, -.token.variable { - color: #e90; +.-mt-6 { + margin-top: -1.5rem; } -.token.bold, -.token.important { - font-weight: 700; +.-mt-12 { + margin-top: -3rem; } -.token.italic { - font-style: italic; +.-mt-16 { + margin-top: -4rem; } -.token.entity { - cursor: help; +.mb-8 { + margin-bottom: 2rem; } -.header { - position: fixed; - top: 0; - right: 0; - left: 0; - z-index: 500; - background-color: #151411; - background-image: linear-gradient(#151411, #373737); - border-bottom: 1px solid #151411; - padding: 1.4rem 1rem 0.8rem; - margin-bottom: 3rem; +.block { + display: block; +} + +.inline { + display: inline; } -.header__inner { +.flex { display: flex; - align-items: center; - justify-content: space-between; - grid-gap: 4rem; - gap: 4rem; - width: 100%; - margin: auto; } -.header__inner svg { - width: 7.7rem; +.inline-flex { + display: inline-flex; +} + +.grid { + display: grid; +} + +.hidden { + display: none; +} + +.h-10 { + height: 2.5rem; +} + +.h-16 { height: 4rem; } -@media only screen and (min-width: 63.75em) { - .header__inner { - max-width: 115rem; - } +.h-20 { + height: 5rem; } -.hamburger-menu { - display: flex; - z-index: 50; - align-items: center; - height: 100%; +.h-3 { + height: 0.75rem; } -.hamburger { - width: 36px; - height: 36px; - position: relative; - transform: rotate(0); - transition: 0.3s ease-in-out; - cursor: pointer; +.h-40 { + height: 10rem; } -.hamburger span { - display: block; - position: absolute; - height: 2px; - width: 35px; - background: #eee; - border-radius: 2px; - opacity: 1; - left: 0; - transform: rotate(0); - transition: 0.15s ease-in-out; +.h-5 { + height: 1.25rem; } -.hamburger span:first-child { - top: 3px; - transform-origin: left center; +.h-6 { + height: 1.5rem; } -.hamburger span:nth-child(2) { - top: 15px; - transform-origin: left center; +.h-7 { + height: 1.75rem; } -.hamburger span:nth-child(3) { - top: 27px; - transform-origin: left center; +.min-h-screen { + min-height: 100vh; } -.hamburger.open span:first-child { - width: 38px; - transform: rotate(45deg); - top: 2px; - left: 5px; +.w-1\/2 { + width: 50%; } -.hamburger.open span:nth-child(2) { - width: 0; - opacity: 0; +.w-16 { + width: 4rem; } -.hamburger.open span:nth-child(3) { - width: 38px; - transform: rotate(-45deg); - left: 5px; - top: 29px; +.w-28 { + width: 7rem; } -@media (min-width: 63.75em) { - .hamburger-menu.header__box { - display: none; - } +.w-3 { + width: 0.75rem; } -.main-menu { - position: absolute; - top: 6.6rem; - left: 0; +.w-3\/4 { + width: 75%; +} + +.w-4\/5 { + width: 80%; +} + +.w-5 { + width: 1.25rem; +} + +.w-6 { + width: 1.5rem; +} + +.w-7 { + width: 1.75rem; +} + +.w-full { width: 100%; - height: auto; - z-index: -25; - transform: translateY(-100%); - transform-origin: top; - overflow: hidden; } -.main-menu a { - text-decoration: none; +.w-24 { + width: 6rem; } -.main-menu a:link, -.main-menu a:visited { - color: #f6f6f6; +.w-2\/3 { + width: 66.666667%; } -.main-menu__closed, -.main-menu__open { - transition: all 0.3s; - overflow: hidden; +.max-w-7xl { + max-width: 80rem; } -.main-menu__closed ul, -.main-menu__open ul { - transition: all 0.3s; +.flex-1 { + flex: 1 1 0%; } -.main-menu__open { - background-color: #1f1f1f; - z-index: 25; +.flex-shrink { + flex-shrink: 1; } -.main-menu__open, -.main-menu__open ul { - transform: translateY(0); +.flex-shrink-0 { + flex-shrink: 0; } -.main-menu__closed ul { - transform: translateY(100%); +.flex-grow { + flex-grow: 1; } -.main-menu ul { - padding-bottom: 2rem; - display: flex; +.grow { + flex-grow: 1; +} + +.scroll-pt-32 { + scroll-padding-top: 8rem; +} + +.scroll-pt-20 { + scroll-padding-top: 5rem; +} + +.scroll-pt-24 { + scroll-padding-top: 6rem; +} + +.list-inside { + list-style-position: inside; +} + +.list-outside { + list-style-position: outside; +} + +.list-decimal { + list-style-type: decimal; +} + +.list-disc { + list-style-type: disc; +} + +.flex-row { + flex-direction: row; +} + +.flex-col { flex-direction: column; +} + +.flex-wrap { + flex-wrap: wrap; +} + +.items-start { + align-items: flex-start; +} + +.items-center { align-items: center; } -.main-menu ul li { - font-size: 2rem; - padding: 1.2rem; - list-style: none; - white-space: nowrap; +.items-stretch { + align-items: stretch; } -.main-menu ul li.cta { - margin-top: 1rem; - padding: 0.9rem; - background-color: #20c203; - border-radius: 2rem; - font-style: italic; +.justify-start { + justify-content: flex-start; } -.main-menu ul li.cta a { - color: #000000; +.justify-end { + justify-content: flex-end; } -.main-menu ul li.cta svg { - fill: currentColor; - width: 1.5rem; - height: 1.5rem; - margin-left: 0.2rem; +.justify-center { + justify-content: center; } -.main-menu__hidden { - transition: all 0; +.justify-between { + justify-content: space-between; } -@media only screen and (min-width: 63.75em) { - .main-menu { - width: auto; - height: 6rem; - position: static; - z-index: 0; - margin: 0; - display: flex; - flex-direction: row; - align-items: center; - transform: translateY(0); - } +.justify-evenly { + justify-content: space-evenly; +} - .main-menu__closed, - .main-menu__open { - transition: all 0s; - } +.gap-1 { + gap: 0.25rem; +} - .main-menu__open { - background-color: transparent; - } +.gap-16 { + gap: 4rem; +} - .main-menu ul { - transform: translateY(0); - padding-bottom: 0; - display: flex; - flex-direction: row; - justify-content: space-evenly; - align-items: center; - } +.gap-2 { + gap: 0.5rem; +} - .main-menu ul li { - margin-right: 0; - padding: 1.2rem 0.2rem; - } +.gap-28 { + gap: 7rem; +} - .main-menu ul li:hover a { - color: #fff; - border-bottom: 2px solid #f6f6f6; - } +.gap-3 { + gap: 0.75rem; +} - .main-menu ul li a { - font-size: 1.6rem; - color: #bbb; - text-decoration: none; - padding: 0.6rem; - border-bottom: 2px solid transparent; - } +.gap-4 { + gap: 1rem; +} - .main-menu ul li.cta { - margin-top: 0; - padding: 0; - margin-left: 0.7rem; - } +.gap-8 { + gap: 2rem; +} - .main-menu ul li.cta a { - border-bottom: none; - display: inline-block; - padding: 0.5rem 0.9rem; - } +.gap-6 { + gap: 1.5rem; } -main { - background-color: #f6f6f6; - color: #151411; +.gap-y-16 { + row-gap: 4rem; } -main > div { - min-height: calc(100vh - 28.3rem); +.space-x-4 > :not([hidden]) ~ :not([hidden]) { + --tw-space-x-reverse: 0; + margin-right: calc(1rem * var(--tw-space-x-reverse)); + margin-left: calc(1rem * calc(1 - var(--tw-space-x-reverse))); } -iframe { - width: 100%; +.space-y-1 > :not([hidden]) ~ :not([hidden]) { + --tw-space-y-reverse: 0; + margin-top: calc(0.25rem * calc(1 - var(--tw-space-y-reverse))); + margin-bottom: calc(0.25rem * var(--tw-space-y-reverse)); } -iframe#speakers { - min-height: 5000px; +.space-y-2 > :not([hidden]) ~ :not([hidden]) { + --tw-space-y-reverse: 0; + margin-top: calc(0.5rem * calc(1 - var(--tw-space-y-reverse))); + margin-bottom: calc(0.5rem * var(--tw-space-y-reverse)); } -@media only screen and (min-width: 35em) { - iframe#speakers { - min-height: 2800px; - } +.space-y-4 > :not([hidden]) ~ :not([hidden]) { + --tw-space-y-reverse: 0; + margin-top: calc(1rem * calc(1 - var(--tw-space-y-reverse))); + margin-bottom: calc(1rem * var(--tw-space-y-reverse)); } -.cta { - background: #20c203; - color: #000000; - text-align: center; - font-size: 3rem; - font-weight: 500; - font-style: italic; - padding: 1.2rem 2.2rem; - display: inline-block; - border-radius: 3rem; - transition: all 0.2s; - border: none; - cursor: pointer; - white-space: nowrap; +.space-y-10 > :not([hidden]) ~ :not([hidden]) { + --tw-space-y-reverse: 0; + margin-top: calc(2.5rem * calc(1 - var(--tw-space-y-reverse))); + margin-bottom: calc(2.5rem * var(--tw-space-y-reverse)); } -.cta svg { - fill: currentColor; - width: 2rem; - height: 2rem; - margin-left: 0.4rem; +.scroll-smooth { + scroll-behavior: smooth; } -.countdown-timer { - text-align: center; +.rounded-3xl { + border-radius: 1.5rem; } -.countdown-timer__ticking-time-bomb { - font-size: 4.5rem; +.rounded-full { + border-radius: 9999px; } -.countdown-timer__ticking-time-bomb--time { - font-family: 'Ubuntu Mono', monospace; - font-style: italic; - color: #b33018; +.rounded-md { + border-radius: 0.375rem; } -.countdown-timer__bsides { - font-size: 4.5rem; +.rounded-xl { + border-radius: 0.75rem; } -.countdown-timer__bsides--its-time { - margin-top: 4rem; - font-weight: 700; - color: #006600; +.border { + border-width: 1px; } -.countdown-timer__until { - font-size: 2.5rem; - font-weight: 700; +.border-b { + border-bottom-width: 1px; } -.sponsor-thanks > p.sponsor-thanks__fancy, -.sponsor-thanks > p.sponsor-thanks__list { - text-align: center; - line-height: 4.8rem; - font-size: 3rem; - font-family: serif; - font-style: italic; +.border-slate-400 { + --tw-border-opacity: 1; + border-color: rgb(148 163 184 / var(--tw-border-opacity)); } -.sponsor-thanks > p.sponsor-thanks__list { - column-count: 1; - column-gap: 0; - margin-top: 4rem; +.border-b-slate-300 { + --tw-border-opacity: 1; + border-bottom-color: rgb(203 213 225 / var(--tw-border-opacity)); } -@media (min-width: 63.75em) { - .sponsor-thanks p.sponsor-thanks__list { - column-count: 2; - column-gap: 3rem; - column-rule-width: 0.1rem; - column-rule-style: dashed; - column-rule-color: #999; - } +.border-b-slate-400 { + --tw-border-opacity: 1; + border-bottom-color: rgb(148 163 184 / var(--tw-border-opacity)); } -.events-spacetime { - margin-bottom: 2.5rem; +.bg-gray-900 { + --tw-bg-opacity: 1; + background-color: rgb(17 24 39 / var(--tw-bg-opacity)); } -.events-spacetime .not-smol { - background-image: linear-gradient(180deg, var(--dark), var(--light)); - padding: 1.5rem; - border-radius: 1rem; - color: var(--text); +.bg-slate-50 { + --tw-bg-opacity: 1; + background-color: rgb(248 250 252 / var(--tw-bg-opacity)); } -.events-single { - padding: 3rem; - text-align: left; - background-image: linear-gradient(180deg, var(--dark) 0, var(--dark) 40%, var(--med)); - background-color: var(--dark); +.bg-slate-700 { + --tw-bg-opacity: 1; + background-color: rgb(51 65 85 / var(--tw-bg-opacity)); } -.events-single > a:first-child { - display: flex; - justify-content: space-evenly; - flex-direction: row; - align-items: flex-start; +.bg-slate-800 { + --tw-bg-opacity: 1; + background-color: rgb(30 41 59 / var(--tw-bg-opacity)); } -.events-single > a > :not(:last-child) { - padding-right: 3rem; +.bg-slate-900 { + --tw-bg-opacity: 1; + background-color: rgb(15 23 42 / var(--tw-bg-opacity)); } -.events-single > a:link, -.events-single > a:visited { - color: var(--bright); - border-bottom: none; +.bg-gradient-to-b { + background-image: linear-gradient(to bottom, var(--tw-gradient-stops)); } -.events-single__link { - color: var(--bright); - border-bottom: 2px solid transparent; +.from-green-600 { + --tw-gradient-from: #16a34a var(--tw-gradient-from-position); + --tw-gradient-to: rgb(22 163 74 / 0) var(--tw-gradient-to-position); + --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to); } -.events-single__link:hover { - border-bottom-color: var(--light); +.from-slate-400 { + --tw-gradient-from: #94a3b8 var(--tw-gradient-from-position); + --tw-gradient-to: rgb(148 163 184 / 0) var(--tw-gradient-to-position); + --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to); } -.events-single p { - color: var(--bright); - font-size: 2rem; +.from-white { + --tw-gradient-from: #fff var(--tw-gradient-from-position); + --tw-gradient-to: rgb(255 255 255 / 0) var(--tw-gradient-to-position); + --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to); } -.events-single:not(:last-child) { - margin-bottom: 2.5rem; +.to-green-300 { + --tw-gradient-to: #86efac var(--tw-gradient-to-position); } -.events-single__header { - margin-bottom: 2rem; +.to-slate-200 { + --tw-gradient-to: #e2e8f0 var(--tw-gradient-to-position); } -.events-single__header h4 { - margin-bottom: 0; +.to-stone-50 { + --tw-gradient-to: #fafaf9 var(--tw-gradient-to-position); } -.events-single__floor { - font-size: 1.8rem; - color: var(--bright); +.fill-slate-50 { + fill: #f8fafc; } -.events-single__learn-more { - display: inline-block; - padding-top: 0.7rem; +.fill-slate-800 { + fill: #1e293b; } -.events-single__img { - min-width: 12.5rem; +.p-2 { + padding: 0.5rem; +} + +.p-4 { + padding: 1rem; } -.events-single__img img { +.px-2 { + padding-left: 0.5rem; + padding-right: 0.5rem; +} + +.px-3 { + padding-left: 0.75rem; + padding-right: 0.75rem; +} + +.px-4 { + padding-left: 1rem; + padding-right: 1rem; +} + +.px-6 { + padding-left: 1.5rem; + padding-right: 1.5rem; +} + +.py-1 { + padding-top: 0.25rem; + padding-bottom: 0.25rem; +} + +.py-16 { + padding-top: 4rem; + padding-bottom: 4rem; +} + +.py-2 { + padding-top: 0.5rem; padding-bottom: 0.5rem; } -@media only screen and (max-width: 31.25em) { - .events-single > a:first-child { - flex-direction: column; - align-items: center; - } +.pb-16 { + padding-bottom: 4rem; +} - .events-single > a > :not(:last-child) { - padding-right: 0; - padding-bottom: 2rem; - } +.pb-3 { + padding-bottom: 0.75rem; } -.sponsors__sponsor { - text-align: center; - margin-bottom: 8rem; +.pb-32 { + padding-bottom: 8rem; } -.sponsors__sponsor img { - max-height: 10rem; +.pl-4 { + padding-left: 1rem; } -.sponsors__sponsor.safebase img { - max-height: 9rem; +.pt-2 { + padding-top: 0.5rem; } -.sponsors__sponsor.guidepoint-security img { - max-height: 11rem; +.pt-8 { + padding-top: 2rem; } -.sponsors__sponsor.lenovo img .sponsors__sponsor.trend-micro img { - max-height: 12rem; +.pb-12 { + padding-bottom: 3rem; } -.sponsors__sponsor.stern-security img { - min-height: 15rem; +.pb-8 { + padding-bottom: 2rem; } -@media (min-width: 48em) { - .sponsors__logos { - margin: 0 4rem; - display: grid; - grid-template-columns: repeat(2, 1fr); - grid-template-rows: 1fr; - grid-column-gap: 70px; - grid-row-gap: 20px; - align-items: center; - } +.pb-10 { + padding-bottom: 2.5rem; +} - .sponsors__sponsor img { - max-height: 9rem; - } +.pt-12 { + padding-top: 3rem; +} - .sponsors__sponsor.guidepoint-security img { - max-height: 11rem; - } +.pt-16 { + padding-top: 4rem; +} - .sponsors__sponsor.safebase img, - .sponsors__sponsor.cisco img { - max-height: 10rem; - } +.pt-4 { + padding-top: 1rem; +} - .sponsors__logos.odd .sponsors__sponsor.last { - grid-column: span 2; - } +.pt-5 { + padding-top: 1.25rem; +} - .sponsors__logos.odd .sponsors__sponsor.last img { - max-width: 35rem; - } +.pb-0 { + padding-bottom: 0px; +} + +.pl-2 { + padding-left: 0.5rem; +} + +.pl-3 { + padding-left: 0.75rem; +} + +.pl-6 { + padding-left: 1.5rem; +} + +.pl-5 { + padding-left: 1.25rem; +} + +.text-center { + text-align: center; +} + +.font-sans { + font-family: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; +} + +.font-serif { + font-family: ui-serif, Georgia, Cambria, "Times New Roman", Times, serif; +} + +.text-2xl { + font-size: 1.5rem; + line-height: 2rem; +} + +.text-3xl { + font-size: 1.875rem; + line-height: 2.25rem; } -.sponsorships { - color: #0d607b; +.text-4xl { + font-size: 2.25rem; + line-height: 2.5rem; +} + +.text-8xl { + font-size: 6rem; + line-height: 1; +} + +.text-base { + font-size: 1rem; + line-height: 1.5rem; +} + +.text-lg { + font-size: 1.125rem; + line-height: 1.75rem; +} + +.text-sm { + font-size: 0.875rem; + line-height: 1.25rem; +} + +.text-xl { + font-size: 1.25rem; + line-height: 1.75rem; +} + +.text-5xl { font-size: 3rem; + line-height: 1; +} + +.text-6xl { + font-size: 3.75rem; + line-height: 1; +} + +.font-black { + font-weight: 900; +} + +.font-bold { + font-weight: 700; +} + +.font-light { + font-weight: 300; +} + +.font-medium { font-weight: 500; - font-style: italic; - text-decoration: underline; - border: none; - white-space: nowrap; - display: block; - width: 100%; - text-align: center; } -.sponsorships svg { - fill: currentColor; - width: 2rem; - height: 2rem; - margin-left: 0.4rem; +.font-semibold { + font-weight: 600; } -.events-page p.events-page__what { - font-size: 2.9rem; +.italic { font-style: italic; - font-family: 'Crimson Text', serif; - margin-bottom: 0.3rem; - font-weight: 500; } -.events-page p.events-page__spacetime { - font-size: 2rem; - font-family: 'Crimson Text', serif; - color: #545454; + +.text-gray-300 { + --tw-text-opacity: 1; + color: rgb(209 213 219 / var(--tw-text-opacity)); } -.events-page p.events-page__spacetime:not(:last-child) { - margin-bottom: 0; + +.text-gray-400 { + --tw-text-opacity: 1; + color: rgb(156 163 175 / var(--tw-text-opacity)); } -.events-page p.events-page__spacetime:last-child { - margin-bottom: 3.5rem; + +.text-slate-200 { + --tw-text-opacity: 1; + color: rgb(226 232 240 / var(--tw-text-opacity)); } -.events-page > h2 { - font-size: 2.8rem; - font-style: italic; - font-family: 'Crimson Text', serif; + +.text-slate-50 { + --tw-text-opacity: 1; + color: rgb(248 250 252 / var(--tw-text-opacity)); } -.events-page__content { - margin-top: 3.5rem; + +.text-slate-800 { + --tw-text-opacity: 1; + color: rgb(30 41 59 / var(--tw-text-opacity)); } -.events-page a.events-page__twitter, -.events-page a.events-page__twitter:visited { - margin-top: 0.8rem; - color: var(--dark); - float: right; + +.text-slate-900 { + --tw-text-opacity: 1; + color: rgb(15 23 42 / var(--tw-text-opacity)); } -.events-page a.events-page__twitter:active, -.events-page a.events-page__twitter:hover, -.events-page a.events-page__twitter:visited:active, -.events-page a.events-page__twitter:visited:hover { - color: var(--med); + +.text-white { + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity)); } -.events-page a.events-page__twitter svg, -.events-page a.events-page__twitter:visited svg { - width: 3rem; - height: 3rem; - fill: currentColor; + +.text-slate-600 { + --tw-text-opacity: 1; + color: rgb(71 85 105 / var(--tw-text-opacity)); } -.prev-next { - display: flex; - flex-direction: row; - justify-content: space-between; - align-items: center; - padding: 1rem; - border-radius: 1.2rem; - background-color: #ccc; - background-image: linear-gradient(180deg, #cacaca, #ddd); - margin-bottom: 3.5rem; - font-size: 1.6rem; -} -.prev-next__next > a, -.prev-next__prev > a { - position: relative; - z-index: 10; +.underline-offset-2 { + text-underline-offset: 2px; } -.footer { - width: 100%; - margin-top: 4.8rem; - background-color: #151411; - color: #bbb; - padding-top: 3.2rem; - padding-bottom: 4.8rem; +.shadow-xl { + --tw-shadow: 0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1); + --tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color); + box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); } -.footer__inner { - width: min(120ch, 100vw - 3.2rem); - margin: auto; - display: flex; - flex-direction: row; - justify-content: flex-end; +.hover\:bg-gray-700:hover { + --tw-bg-opacity: 1; + background-color: rgb(55 65 81 / var(--tw-bg-opacity)); } -.footer__inner p { - font-size: 1.4rem; - margin-right: auto; +.hover\:bg-slate-200:hover { + --tw-bg-opacity: 1; + background-color: rgb(226 232 240 / var(--tw-bg-opacity)); } -.footer__inner a:link, -.footer__inner a:visited { - color: #bbb; +.hover\:bg-slate-400:hover { + --tw-bg-opacity: 1; + background-color: rgb(148 163 184 / var(--tw-bg-opacity)); } -.footer__inner a:not(:first-child) { - margin-left: 1rem; +.hover\:from-green-500:hover { + --tw-gradient-from: #22c55e var(--tw-gradient-from-position); + --tw-gradient-to: rgb(34 197 94 / 0) var(--tw-gradient-to-position); + --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to); +} + +.hover\:to-green-200:hover { + --tw-gradient-to: #bbf7d0 var(--tw-gradient-to-position); +} + +.hover\:fill-red-600:hover { + fill: #dc2626; +} + +.hover\:text-red-600:hover { + --tw-text-opacity: 1; + color: rgb(220 38 38 / var(--tw-text-opacity)); +} + +.hover\:text-slate-100:hover { + --tw-text-opacity: 1; + color: rgb(241 245 249 / var(--tw-text-opacity)); +} + +.hover\:text-slate-900:hover { + --tw-text-opacity: 1; + color: rgb(15 23 42 / var(--tw-text-opacity)); +} + +.hover\:text-white:hover { + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity)); +} + +.hover\:underline:hover { + text-decoration-line: underline; } -.footer__inner svg { - fill: currentColor; - width: 3.2rem; - height: 3.2rem; +.focus\:outline-none:focus { + outline: 2px solid transparent; + outline-offset: 2px; +} + +.focus\:ring-2:focus { + --tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color); + --tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color); + box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow, 0 0 #0000); +} + +.focus\:ring-inset:focus { + --tw-ring-inset: inset; +} + +.focus\:ring-white:focus { + --tw-ring-opacity: 1; + --tw-ring-color: rgb(255 255 255 / var(--tw-ring-opacity)); +} + +@media (min-width: 640px) { + .sm\:mx-auto { + margin-left: auto; + margin-right: auto; + } + + .sm\:-mt-1 { + margin-top: -0.25rem; + } + + .sm\:ml-6 { + margin-left: 1.5rem; + } + + .sm\:-mt-20 { + margin-top: -5rem; + } + + .sm\:block { + display: block; + } + + .sm\:flex { + display: flex; + } + + .sm\:hidden { + display: none; + } + + .sm\:h-16 { + height: 4rem; + } + + .sm\:h-20 { + height: 5rem; + } + + .sm\:h-40 { + height: 10rem; + } + + .sm\:w-28 { + width: 7rem; + } + + .sm\:w-3\/4 { + width: 75%; + } + + .sm\:w-48 { + width: 12rem; + } + + .sm\:w-1\/2 { + width: 50%; + } + + .sm\:w-2\/3 { + width: 66.666667%; + } + + .sm\:w-40 { + width: 10rem; + } + + .sm\:w-8 { + width: 2rem; + } + + .sm\:w-10 { + width: 2.5rem; + } + + .sm\:w-6 { + width: 1.5rem; + } + + .sm\:w-2 { + width: 0.5rem; + } + + .sm\:w-3 { + width: 0.75rem; + } + + .sm\:w-5 { + width: 1.25rem; + } + + .sm\:w-4\/5 { + width: 80%; + } + + .sm\:flex-row { + flex-direction: row; + } + + .sm\:items-center { + align-items: center; + } + + .sm\:items-stretch { + align-items: stretch; + } + + .sm\:justify-start { + justify-content: flex-start; + } + + .sm\:gap-2 { + gap: 0.5rem; + } + + .sm\:space-x-4 > :not([hidden]) ~ :not([hidden]) { + --tw-space-x-reverse: 0; + margin-right: calc(1rem * var(--tw-space-x-reverse)); + margin-left: calc(1rem * calc(1 - var(--tw-space-x-reverse))); + } + + .sm\:space-x-8 > :not([hidden]) ~ :not([hidden]) { + --tw-space-x-reverse: 0; + margin-right: calc(2rem * var(--tw-space-x-reverse)); + margin-left: calc(2rem * calc(1 - var(--tw-space-x-reverse))); + } + + .sm\:px-6 { + padding-left: 1.5rem; + padding-right: 1.5rem; + } + + .sm\:py-6 { + padding-top: 1.5rem; + padding-bottom: 1.5rem; + } + + .sm\:pb-32 { + padding-bottom: 8rem; + } + + .sm\:pl-4 { + padding-left: 1rem; + } + + .sm\:text-center { + text-align: center; + } + + .sm\:text-3xl { + font-size: 1.875rem; + line-height: 2.25rem; + } +} + +@media (min-width: 768px) { + .md\:w-1\/2 { + width: 50%; + } + + .md\:gap-3 { + gap: 0.75rem; + } +} + +@media (min-width: 1024px) { + .lg\:flex { + display: flex; + } + + .lg\:px-8 { + padding-left: 2rem; + padding-right: 2rem; + } } diff --git a/docs/img/sponsors/avalara.png b/docs/img/sponsors/avalara.png new file mode 100644 index 0000000..84a18a9 Binary files /dev/null and b/docs/img/sponsors/avalara.png differ diff --git a/docs/img/sponsors/intel-security.png b/docs/img/sponsors/intel-security.png new file mode 100644 index 0000000..11f6460 Binary files /dev/null and b/docs/img/sponsors/intel-security.png differ diff --git a/docs/img/sponsors/jupiter-one.png b/docs/img/sponsors/jupiter-one.png new file mode 100644 index 0000000..8c933cc Binary files /dev/null and b/docs/img/sponsors/jupiter-one.png differ diff --git a/docs/img/sponsors/mend.png b/docs/img/sponsors/mend.png new file mode 100644 index 0000000..d914026 Binary files /dev/null and b/docs/img/sponsors/mend.png differ diff --git a/docs/img/sponsors/okta.png b/docs/img/sponsors/okta.png new file mode 100644 index 0000000..3489b09 Binary files /dev/null and b/docs/img/sponsors/okta.png differ diff --git a/docs/img/sponsors/pendo.png b/docs/img/sponsors/pendo.png new file mode 100644 index 0000000..d34a079 Binary files /dev/null and b/docs/img/sponsors/pendo.png differ diff --git a/docs/img/sponsors/secure-code-warrior.png b/docs/img/sponsors/secure-code-warrior.png new file mode 100644 index 0000000..b7f166f Binary files /dev/null and b/docs/img/sponsors/secure-code-warrior.png differ diff --git a/docs/img/sponsors/secureworks.png b/docs/img/sponsors/secureworks.png new file mode 100644 index 0000000..a81faee Binary files /dev/null and b/docs/img/sponsors/secureworks.png differ diff --git a/docs/img/sponsors/silverfort.png b/docs/img/sponsors/silverfort.png new file mode 100644 index 0000000..92c9b11 Binary files /dev/null and b/docs/img/sponsors/silverfort.png differ diff --git a/docs/img/sponsors/valiant-solutions.png b/docs/img/sponsors/valiant-solutions.png new file mode 100644 index 0000000..34b4b2b Binary files /dev/null and b/docs/img/sponsors/valiant-solutions.png differ diff --git a/docs/img/sponsors/velocity-stern-security.png b/docs/img/sponsors/velocity-stern-security.png new file mode 100644 index 0000000..b93d18d Binary files /dev/null and b/docs/img/sponsors/velocity-stern-security.png differ diff --git a/docs/index.html b/docs/index.html index b794599..a99fb5c 100644 --- a/docs/index.html +++ b/docs/index.html @@ -1,14 +1,16 @@ - - + + + - BSides RDU - Sept 22nd 2023 + BSides RDU | Friday, Sept. 13th 2024 + BSides RDU - Friday, September 13th 2024 @@ -20,7 +22,7 @@ @@ -41,551 +43,494 @@ - - -
-
- - BSides RDU - -
-
+ + + +
+ + -
-
-
-
-
-
-
-
-
-
-

Sponsors

-
-
- Guidepoint Security -
-
- Lenovo -
-
- SAFEBASE -
-
- Stern Security -
-
- -
-
- Cisco Systems, Inc. -
-
- CrowdStrike -
-
- SecurityPal -
-
- ISSA Raleigh Chapter -
-
- Devo -
-
- -

There still are many sponsorship opportunities!

-

- Sign up as a sponsor today! -

-

- For more information or questions about sponsorship, please contact - events (plural) - - at BSidesRDU - - - dot org. -

-

 

-
- -
- -
- - -
-
-
- -
-
-
-
-

Food

-
-

- Coffee - (the breakfast of champions) -

-

- Wake the Truck Up will be outside the theatre in the - morning. -

-

- Wake the Truck Up
Wake the Truck Up Menu
-

-
-
-

Lunch

-

The Lunch Truck Rodeo will be outside the theatre from 11:00 AM to 2:00 PM

-

- Arepa Culture, NC
Arepa Culture, NC Menu
-

-

- Mr Cheesesteak
Mr. Cheesesteak Menu
+

+ +
-
- --> -
-
-
-
-

The Venue

-

Please note: We are at a new venue this year!

-

The McKimmon Conference and Training Center at NC State (MCTC)

-
- -
-
-

Floor Plan

- Venue floor plan -

- - Note: Floor plan is oriented 90 ° counter-clockwise. That is, North is on the left - side. - -

-
+
+ + + +
-
-
-
-
-

Parking

-

Parking is provided Free at the Mckimmon center.

+
+ +
+ + +
+ +
+

+ Friday the 13th, September, 2024
+ The McKimmon Conference and Training Center at NC State +

+

BSides RDU

+

+ A community-driven framework for building events for and by cyber security community members. +

+ +
+ +
+
+ 0 Days +
+
+ 00 Hours +
+
+ 00 Minutes +
+
+ 00 Seconds +
+
+ +
+ +
+ +

About The Conference

+

+ Security BSides is a community-driven framework for building events for and by cyber security community + members. The goal is to expand the spectrum of conversation beyond the traditional confines of space and + time. It creates opportunities for individuals to both present and participate in an intimate atmosphere + that encourages collaboration. It is an intense event with discussions, demos, and interaction from + participants. It is where conversations for the next-big-thing are happening. +

+

+ Security is top of mind across the entire sphere of IT and the world beyond. Therefore, more people and + organizations are interested in the next new thing in security. BSides is the place where these people come + to collaborate, learn and share. +

+

+ With many tech-companies, colleges and universities in Raleigh, Durham, Chapel Hill and surrounding areas, + it is also an international center of innovation in the security industry. +

+

+ Security B-Sides Raleigh-Durham (B-Sides RDU) is proud to have had great speaker lineups at our events + including keynotes by Dan Kaminsky, Dave Kennedy, Paul Vixie, BenTen, Jay Beale, G.Mark Hardy, Cliff Stoll, + Shahid Buttar, Chris Wysopal and Bruce Potter. +

+ +
+ +
+

Sponsors

+

Call for 2024 Sponsors is almost open!

+

Check with our updates for more info. The link will be posted here when it's ready.

+

Thanks to our past sponsors!

+
+ Guidepoint Security + Lenovo + SAFEBASE + Stern Security + + Cisco Systems, Inc. + CrowdStrike + SecurityPal + ISSA Raleigh Chapter + Devo + Jupiter One + intel security + Mend. You code. We cure. + Secure Code Warrior + Secureworks + Valiant Solutions + Avalara + pendo + Okta + Silverfort
- -
-
-
-
-

Schedule

- -
-
-
-
-
-
-

Speakers

- -
-
-
-
-
-
-

About

-

- Security BSides is a community-driven framework for building events for and by cyber - security community members. The goal is to expand the spectrum of conversation beyond the traditional - confines of space and time. It creates opportunities for individuals to both present and participate in an - intimate atmosphere that encourages collaboration. It is an intense event with discussions, demos, and - interaction from participants. It is where conversations for the next-big-thing are happening. -

-

- Security is top of mind across the entire sphere of IT and the world beyond. Therefore, more people and - organizations are interested in the next new thing in security. BSides is the place where these people - come to collaborate, learn and share. -

-

- With many tech-companies, colleges and universities in Raleigh, Durham, Chapel Hill and surrounding areas, - it is also an international center of innovation in the security industry. -

-

- Security B-Sides Raleigh-Durham (B-Sides RDU) is proud to have had great speaker lineups at our events - including keynotes by Dan Kaminsky, Dave Kennedy, Paul Vixie, BenTen, Jay Beale, G.Mark Hardy, Cliff - Stoll, Shahid Buttar, Chris Wysopal and Bruce Potter. -

+
+ + + + + + + +
+

Venue

+
+

The McKimmon Conference and Training Center at NC State (MCTC)

+
-
-
-
-
-
-

Principles

-

- We don't think this should be too complicated. Conduct of all who participate in our community should be - based on open dialog, a willingness to learn, and helping each other out. For Security BSidesRDU, our - rules of conduct, principles, and values are listed here. +

Floor Plan

+
+ + Venue floor plan + +

+ + Note: Floor plan is oriented 90 ° counter-clockwise. That is, North is on the left side. +

-

1 Conduct

-

- We believe that there are simple rules for governance at any meeting of people striving to be a community: -

-
    -
  1. Don't be an asshole.
  2. -
  3. Be willing to learn.
  4. -
  5. Be willing to share.
  6. -
  7. Be willing to help.
  8. -
  9. Be willing to listen.
  10. -
  11. Accept criticism.
  12. -
  13. Be kind.
  14. -
-

- BSidesRDU is not an elementary school. It’s not a land full of rainbows and unicorns. Neither is it hell - on earth. If you believe someone is misbehaving, acting inappropriately, or acting illegally, start by - talking to that person. Confirm your perspective. If you are unable, or unwilling, to do that, that’s OK - -- find a BSidesRDU Staff member and talk to them. -

-

2 Principles

-

Security BSides operates under three simple principles:

-
    -
  • Expand the conversation.
  • -
  • Enable people to join the discussion.
  • -
  • Get people involved.
  • -
-

- BSidesRDU supports those principles as part of our regional BSides operation. What that means is that - BSidesRDU is your conference. It is up to everyone involved to make it happen, to engage in the debates, - to speak up and give voice to the issues. Feedback to the organizers is always welcome. -

-

3 Values

-

- Each BSides is a community-driven framework for building events for, and by, information security - professionals. The goal is to expand the spectrum of conversation beyond the traditional confines of space - and time. BSides creates opportunities for individuals to both present and participate in an intimate - atmosphere that encourages collaboration. It is an intense event with discussions, demos, and interaction - from participants. It is where conversations for the next big thing are happening. -

-

We value

-
    -
  • We lower the barriers for people to participate.
  • -
  • - We involve people in organizing the events, to help them participate, involve a diversity of input, and - teach a new generation of organizers. -
  • -
  • - We build and use tools that enable greater participation, share ideas, and enable others to share the - magic we collectively create. We share our work openly. -
  • -
  • We help grow the community, because a stronger group helps everyone involved.
  • -
-

We participate

-
    -
  • There are no bystanders.
  • -
  • - We all participate in different ways, including: audience, speakers, organizers, sponsors, volunteers. -
  • -
  • We encourage everyone to share their skills, expertise, and talent.
  • -
-

We steward

-
    -
  • We make decisions that strengthen the brand for everyone, not just ourselves.
  • -
  • - We remember that we are not owners of the brand, or the event, but simply caretakers that carry the - torch for a period of time, until we - pass it to others. -
  • -
  • We treat others with grace and respect at all times.
  • -
-

This work is licensed under a Creative Commons Attribution-NonCommercial 3.0 Unported License.

-
+
+ + + + + + + + + +
+

Principles

+

+ We don't think this should be too complicated. Conduct of all who participate in our community should be + based on open dialog, a willingness to learn, and helping each other out. For Security BSidesRDU, our rules + of conduct, principles, and values are listed here. +

+
+
+ 1 +
+

Conduct

+
+

+ We believe that there are simple rules for governance at any meeting of people striving to be a community: +

+
    +
  1. Don't be an asshole.
  2. +
  3. Be willing to learn.
  4. +
  5. Be willing to share.
  6. +
  7. Be willing to help.
  8. +
  9. Be willing to listen.
  10. +
  11. Accept criticism.
  12. +
  13. Be kind.
  14. +
+

+ BSidesRDU is not an elementary school. It’s not a land full of rainbows and unicorns. Neither is it hell on + earth. If you believe someone is misbehaving, acting inappropriately, or acting illegally, start by talking + to that person. Confirm your perspective. If you are unable, or unwilling, to do that, that’s OK -- find a + BSidesRDU Staff member and talk to them. +

+
+
+ 2 +
+

Principles

+
+

Security BSides operates under three simple principles:

+
    +
  • Expand the conversation.
  • +
  • Enable people to join the discussion.
  • +
  • Get people involved.
  • +
+

+ BSidesRDU supports those principles as part of our regional BSides operation. What that means is that + BSidesRDU is your conference. It is up to everyone involved to make it happen, to engage in the debates, to + speak up and give voice to the issues. Feedback to the organizers is always welcome. +

+
+
+ 3 +
+

Values

+
+

+ Each BSides is a community-driven framework for building events for, and by, information security + professionals. The goal is to expand the spectrum of conversation beyond the traditional confines of space + and time. BSides creates opportunities for individuals to both present and participate in an intimate + atmosphere that encourages collaboration. It is an intense event with discussions, demos, and interaction + from participants. It is where conversations for the next big thing are happening. +

+

We value

+
    +
  • We lower the barriers for people to participate.
  • +
  • + We involve people in organizing the events, to help them participate, involve a diversity of input, and + teach a new generation of organizers. +
  • +
  • + We build and use tools that enable greater participation, share ideas, and enable others to share the + magic we collectively create. We share our work openly. +
  • +
  • We help grow the community, because a stronger group helps everyone involved.
  • +
+

We participate

+
    +
  • There are no bystanders.
  • +
  • + We all participate in different ways, including: audience, speakers, organizers, sponsors, volunteers. +
  • +
  • We encourage everyone to share their skills, expertise, and talent.
  • +
+

We steward

+
    +
  • We make decisions that strengthen the brand for everyone, not just ourselves.
  • +
  • + We remember that we are not owners of the brand, or the event, but simply caretakers that carry the torch + for a period of time, until we pass it to others. +
  • +
  • We treat others with grace and respect at all times.
  • +
+

+ This work is licensed under a Creative Commons Attribution-NonCommercial 3.0 Unported License. +

+
-