From a77f93842ad10bdba5a74d3e8720c9d304eb0288 Mon Sep 17 00:00:00 2001 From: partisan Date: Tue, 3 Sep 2024 20:12:33 +0200 Subject: [PATCH] fixed favicon, updated image gallery --- README.md | 103 +- go.mod | 26 +- main.go | 1217 ++--- run.bat | 21 + static/css/blog.css | 100 +- static/css/fancy-gallery.css | 277 +- static/css/images/overlay.png | Bin 20100 -> 0 bytes static/css/main.css | 7600 ++++++++++++++-------------- static/css/slick.min.css | 2 +- static/images/favicon.png | Bin 0 -> 82491 bytes static/js/main.js | 6 +- static/sass/components/_icons.scss | 42 +- static/sass/libs/_breakpoints.scss | 444 +- static/sass/libs/_vendor.scss | 750 +-- templates/download-linux.html | 10 +- templates/download.html | 102 +- templates/index.html | 8 +- templates/news.html | 230 +- 18 files changed, 5485 insertions(+), 5453 deletions(-) create mode 100644 run.bat delete mode 100644 static/css/images/overlay.png create mode 100644 static/images/favicon.png diff --git a/README.md b/README.md index 6dea6ef..456cd60 100644 --- a/README.md +++ b/README.md @@ -1,49 +1,54 @@ -

- Logo -

- -

- Spitfire Browser Website -

- -Unlike some other browser sites flexing with their 98.8% TypeScript (yikes), i keep it cool with minimal JavaScript just enough to get the job done, no extra BS. - -Spitfire Browser's website is built without Next.js, TypeScript, and Tailwind CSS or any other bullshit. - -## TO-DO: - -- [ ] Add browser download/screenshots for this web browser website (optional) - -### Blog entries should be fromated this way: - -```md -[HEADER] -t: TITLE -d: SHORT-DESC -p: 2024-08-16 15:04 -a: AUTHOR -[END] - -# lorem ipsum - - Vestibulum fermentum tortor id mi. Nullam at arcu a est sollicitudin euismod. Nullam faucibus mi quis velit. Mauris dictum facilisis augue. Nullam sapien sem, ornare ac, nonummy non, lobortis a enim. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Etiam commodo dui eget wisi. Mauris dictum facilisis augue. Etiam posuere lacus quis dolor. In sem justo, commodo ut, suscipit at, pharetra vitae, orci. - -Vivamus luctus egestas leo. Phasellus faucibus molestie nisl. Etiam commodo dui eget wisi. Donec vitae arcu. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Etiam neque. Suspendisse sagittis ultrices augue. Suspendisse nisl. Etiam sapien elit, consequat eget, tristique non, venenatis quis, ante. Phasellus rhoncus. Maecenas libero. -``` - -*default path:* - -``` -/data/news/1.md -/data/news/2.md -... -``` - -### Based on: - -Stellar by HTML5 UP -html5up.net | @ajlkn - -### Licence: - -This project is licensed under the Creative Commons Attribution 3.0 License (CCA 3.0). For more details, see the LICENSE file. +

+ Logo +

+ +

+ Spitfire Browser Website +

+ +

+Unlike some other browser sites flexing with their 98.8% TypeScript (yikes), i keep it cool with minimal JavaScript just enough to get the job done. +

+ +

+Spitfire Browser's website is built without Next.js, TypeScript, and Tailwind CSS or any other BS. +

+ +## TO-DO: + +- [ ] Add browser download/screenshots for this web browser website (optional) + +### Blog entries should be fromated this way: + +```md +[HEADER] +t: TITLE +d: SHORT-DESC +p: 2024-08-16 15:04 +a: AUTHOR +[END] + +# lorem ipsum + + Vestibulum fermentum tortor id mi. Nullam at arcu a est sollicitudin euismod. Nullam faucibus mi quis velit. Mauris dictum facilisis augue. Nullam sapien sem, ornare ac, nonummy non, lobortis a enim. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Etiam commodo dui eget wisi. Mauris dictum facilisis augue. Etiam posuere lacus quis dolor. In sem justo, commodo ut, suscipit at, pharetra vitae, orci. + +Vivamus luctus egestas leo. Phasellus faucibus molestie nisl. Etiam commodo dui eget wisi. Donec vitae arcu. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Etiam neque. Suspendisse sagittis ultrices augue. Suspendisse nisl. Etiam sapien elit, consequat eget, tristique non, venenatis quis, ante. Phasellus rhoncus. Maecenas libero. +``` + +*default path:* + +``` +/data/news/1.md +/data/news/2.md +... +``` + +### Based on HTML template: + +[Stellar](https://html5up.net/stellar) by HTML5 UP + +html5up.net | @ajlkn + +### Licence: + +This project is licensed under the Creative Commons Attribution 3.0 License (CCA 3.0). For more details, see the LICENSE file. diff --git a/go.mod b/go.mod index a825ae9..5205775 100644 --- a/go.mod +++ b/go.mod @@ -1,13 +1,13 @@ -module my-web - -go 1.18 - -require ( - github.com/fsnotify/fsnotify v1.7.0 // indirect - github.com/go-telegram-bot-api/telegram-bot-api v4.6.4+incompatible // indirect - github.com/go-telegram-bot-api/telegram-bot-api/v5 v5.5.1 // indirect - github.com/gorilla/feeds v1.2.0 // indirect - github.com/russross/blackfriday/v2 v2.1.0 // indirect - github.com/technoweenie/multipartstreamer v1.0.1 // indirect - golang.org/x/sys v0.4.0 // indirect -) +module spitfire-browser-website + +go 1.18 + +require ( + github.com/fsnotify/fsnotify v1.7.0 // indirect + github.com/go-telegram-bot-api/telegram-bot-api v4.6.4+incompatible // indirect + github.com/go-telegram-bot-api/telegram-bot-api/v5 v5.5.1 // indirect + github.com/gorilla/feeds v1.2.0 // indirect + github.com/russross/blackfriday/v2 v2.1.0 // indirect + github.com/technoweenie/multipartstreamer v1.0.1 // indirect + golang.org/x/sys v0.4.0 // indirect +) diff --git a/main.go b/main.go index cb3350c..a1ed4e7 100644 --- a/main.go +++ b/main.go @@ -1,606 +1,611 @@ -package main - -import ( - "bufio" - "bytes" - "flag" - "fmt" - "html/template" - "log" - "net/http" - "os" - "path/filepath" - "sort" - "strconv" - "strings" - "sync" - "time" - - "github.com/fsnotify/fsnotify" - tgbotapi "github.com/go-telegram-bot-api/telegram-bot-api/v5" - "github.com/russross/blackfriday/v2" -) - -const ( - dataDir = "./data" - templateDir = "./templates" - staticDir = "./static" - notifiedFilePath = "./notified_entries.json" - defaultPort = 8080 - pageSize = 5 // Number of blog entries per page - botTokenEnv = "YOUR_TELEGRAM_BOT_TOKEN" // Replace with your bot's token or set via environment variable - YOUR_TELEGRAM_CHAT_ID = 0 - discordWebhookURL = "YOUR_DISCORD_WEBHOOK_URL" -) - -type Blog struct { - Name string - Entries []BlogEntry -} - -type BlogEntry struct { - Title string - Description string - Author string - Content string - Date time.Time - Number int - Notified bool // To track if the notification was sent -} - -type PageData struct { - Title string - Date string - Desc string - Author string - Content template.HTML - PrevLink string - NextLink string -} - -var ( - blogs []Blog - bot *tgbotapi.BotAPI - port int - creationTimes = make(map[string]time.Time) - creationTimesM sync.Mutex - notifiedEntries = make(map[int]bool) -) - -func init() { - flag.IntVar(&port, "p", defaultPort, "Specify the port to run the server on") - flag.IntVar(&port, "port", defaultPort, "Specify the port to run the server on") -} - -func main() { - // Parse the flags - flag.Parse() - - // Load the notified entries from the file - loadNotifiedEntries() - - // Retrieve the Telegram bot token from the environment variable - botToken := os.Getenv("TELEGRAM_BOT_TOKEN") - if botToken == "" { - botToken = botTokenEnv - } - - // Initialize the Telegram bot - var err error - bot, err = tgbotapi.NewBotAPI(botToken) - if err != nil { - log.Printf("Warning: Error creating Telegram bot: %v", err) - } else { - go startTelegramBot() - } - - // Retrieve blog entries from the data directory - blogs, err = getBlogs(dataDir) - if err != nil { - log.Fatalf("Error getting blogs: %v", err) - } - - // Start the periodic notification checker - go startNotificationChecker(10 * time.Minute) - - // Start watching for changes in the data directory - go watchForChanges(dataDir) - - // Serve static files (CSS, JS, etc.) from the /static directory - http.Handle("/static/", http.StripPrefix("/static/", http.FileServer(http.Dir(staticDir)))) - - // Custom handler to serve only directories and their contents under /news-assets/ - http.Handle("/news-assets/", http.StripPrefix("/news-assets/", http.HandlerFunc(serveDirectoriesOnly))) - - // Serve downloads.html at /downloads - http.HandleFunc("/download", func(w http.ResponseWriter, r *http.Request) { - renderTemplate(w, "download.html", nil) - }) - - // Serve download-linux.html at /download-linux - http.HandleFunc("/download-linux", func(w http.ResponseWriter, r *http.Request) { - renderTemplate(w, "download-linux.html", nil) - }) - - // Route for generating the RSS feed for all blogs - http.HandleFunc("/rss", func(w http.ResponseWriter, r *http.Request) { - siteURL := fmt.Sprintf("http://%s", r.Host) // or you can use a fixed base URL - generateAtomFeed(w, blogs, siteURL) - }) - - // Route for generating the RSS feed for a specific blog - http.HandleFunc("/rss/", func(w http.ResponseWriter, r *http.Request) { - pathParts := strings.Split(r.URL.Path, "/") - if len(pathParts) < 3 { - http.NotFound(w, r) - return - } - - blogName := pathParts[2] - for _, blog := range blogs { - if blog.Name == blogName { - siteURL := fmt.Sprintf("http://%s", r.Host) // or you can use a fixed base URL - generateBlogAtomFeed(w, blog, siteURL) - return - } - } - - http.NotFound(w, r) - }) - - // Define route handlers - http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { - if r.URL.Path == "/" { - renderIndex(w) - return - } - - pathParts := strings.Split(r.URL.Path, "/") - if len(pathParts) < 2 { - http.NotFound(w, r) - return - } - - if len(pathParts) == 3 { - blogName := pathParts[1] - entryNumber, err := strconv.Atoi(pathParts[2]) - if err == nil { - renderBlogEntry(w, r, blogName, entryNumber) - return - } - } - - blogName := pathParts[1] - for _, blog := range blogs { - if blog.Name == blogName { - http.Redirect(w, r, fmt.Sprintf("/%s/%d", blogName, blog.Entries[0].Number), http.StatusFound) - return - } - } - - http.NotFound(w, r) - }) - - // Start the HTTP server on the specified port - serverURL := fmt.Sprintf("http://localhost:%d", port) - log.Printf("Starting server on %s", serverURL) - log.Fatal(http.ListenAndServe(fmt.Sprintf(":%d", port), nil)) -} - -func startNotificationChecker(interval time.Duration) { - ticker := time.NewTicker(interval) - defer ticker.Stop() - - for range ticker.C { - checkAndSendNotifications() - } -} - -func renderTemplate(w http.ResponseWriter, tmpl string, data interface{}) { - tmplPath := filepath.Join(templateDir, tmpl) - t, err := template.ParseFiles(tmplPath) - if err != nil { - http.Error(w, "Internal Server Error", http.StatusInternalServerError) - log.Printf("Error parsing template %s: %v", tmpl, err) - return - } - - err = t.Execute(w, data) - if err != nil { - http.Error(w, "Internal Server Error", http.StatusInternalServerError) - log.Printf("Error executing template %s: %v", tmpl, err) - } -} - -func renderIndex(w http.ResponseWriter) { - renderTemplate(w, "index.html", nil) -} - -// Helper function to add loading="lazy" to all img tags -func injectLazyLoading(htmlContent string) string { - // Split the content by ") - if endOfTag == -1 { - // If no closing bracket is found, add the remaining part as is - modifiedContent += " 0 && !time.Now().Before(blog.Entries[i-1].Date) { - prevLink = fmt.Sprintf("/%s/%d", blog.Name, blog.Entries[i-1].Number) - } - - // Check if the next entry is visible - if i < len(blog.Entries)-1 && !time.Now().Before(blog.Entries[i+1].Date) { - nextLink = fmt.Sprintf("/%s/%d", blog.Name, blog.Entries[i+1].Number) - } - break - } - } - - // Convert .md to HTML - htmlContent := blackfriday.Run([]byte(entry.Content)) - - // Double check "/news-assets/" in URL of images - htmlContent = bytes.ReplaceAll(htmlContent, []byte("src=\"./"), []byte(fmt.Sprintf("src=\"/news-assets/%d/", entryNumber))) - - // Apply lazy loading to the generated HTML content - htmlContentWithLazyLoading := injectLazyLoading(string(htmlContent)) - - pageData := PageData{ - Title: entry.Title, - Date: entry.Date.Format("2006-01-02 15:04"), - Desc: entry.Description, - Author: entry.Author, - Content: template.HTML(htmlContentWithLazyLoading), - PrevLink: prevLink, - NextLink: nextLink, - } - - renderTemplate(w, "news.html", pageData) -} - -func getBlogs(dir string) ([]Blog, error) { - var blogs []Blog - - files, err := os.ReadDir(dir) - if err != nil { - return nil, err - } - - for _, file := range files { - if file.IsDir() { - blog, err := getBlogEntries(filepath.Join(dir, file.Name())) - if err != nil { - return nil, err - } - blogs = append(blogs, blog) - } - } - - return blogs, nil -} - -func getBlogEntries(dir string) (Blog, error) { - var entries []BlogEntry - - files, err := os.ReadDir(dir) - if err != nil { - return Blog{}, err - } - - for _, file := range files { - if filepath.Ext(file.Name()) == ".md" { - entry, err := parseMarkdownFile(filepath.Join(dir, file.Name())) - if err != nil { - return Blog{}, err - } - - entries = append(entries, entry) - } - } - - sort.Slice(entries, func(i, j int) bool { - return entries[i].Number > entries[j].Number - }) - - blog := Blog{ - Name: filepath.Base(dir), - Entries: entries, - } - - return blog, nil -} - -func parseMarkdownFile(path string) (BlogEntry, error) { - content, err := os.ReadFile(path) - if err != nil { - return BlogEntry{}, err - } - - scanner := bufio.NewScanner(strings.NewReader(string(content))) - - var title, description, postTime, author string - var articleContent strings.Builder - var insideHeader bool - - for scanner.Scan() { - line := strings.TrimSpace(scanner.Text()) - - if line == "[HEADER]" { - insideHeader = true - continue - } else if line == "[END]" { - insideHeader = false - continue - } - - if insideHeader { - if strings.HasPrefix(line, "t:") { - title = strings.TrimSpace(line[2:]) - } else if strings.HasPrefix(line, "d:") { - description = strings.TrimSpace(line[2:]) - } else if strings.HasPrefix(line, "p:") { - postTime = strings.TrimSpace(line[2:]) - } else if strings.HasPrefix(line, "a:") { - author = strings.TrimSpace(line[2:]) - } - } else { - articleContent.WriteString(line + "\n") - } - } - - date := time.Now() - if postTime != "" { - date, err = time.Parse("2006-01-02 15:04", postTime) - if err != nil { - log.Printf("Error parsing date in file %s: %v", path, err) - } - } - - number, err := strconv.Atoi(strings.TrimSuffix(filepath.Base(path), filepath.Ext(path))) - if err != nil { - log.Printf("Error extracting number from file %s: %v", path, err) - return BlogEntry{}, err - } - - // Check if the entry has already been notified - notified := notifiedEntries[number] - - entry := BlogEntry{ - Title: title, - Description: description, - Author: author, - Content: articleContent.String(), - Date: date, - Number: number, - Notified: notified, - } - - return entry, nil -} - -func watchForChanges(dir string) { - watcher, err := fsnotify.NewWatcher() - if err != nil { - log.Fatalf("Error creating file watcher: %v", err) - } - defer watcher.Close() - - go func() { - for { - select { - case event, ok := <-watcher.Events: - if !ok { - return - } - if event.Op&fsnotify.Create == fsnotify.Create { - handleFileChange(event.Name, true) - } else if event.Op&fsnotify.Write == fsnotify.Write { - handleFileChange(event.Name, false) - } - case err, ok := <-watcher.Errors: - if !ok { - return - } - log.Printf("File watcher error: %v", err) - } - } - }() - - err = watcher.Add(dir) - if err != nil { - log.Fatalf("Error adding directory to watcher: %v", err) - } - - // Add subdirectories - err = filepath.Walk(dir, func(path string, info os.FileInfo, err error) error { - if err != nil { - return err - } - if info.IsDir() && path != dir { - return watcher.Add(path) - } - return nil - }) - if err != nil { - log.Fatalf("Error adding subdirectories to watcher: %v", err) - } - - // Block forever - select {} -} - -// serveDirectoriesOnly handles requests and only serves directories and their contents. -func serveDirectoriesOnly(w http.ResponseWriter, r *http.Request) { - requestedPath := filepath.Join(dataDir, "news", r.URL.Path) - - // Check if the requested path is a directory - fileInfo, err := os.Stat(requestedPath) - if err != nil { - http.NotFound(w, r) // If the path doesn't exist, return a 404 - return - } - - // Block access to any files at the root level or the .git directory - if isRootLevel(requestedPath) || isRestrictedDirectory(requestedPath) { - http.NotFound(w, r) // Block access to root-level files like .md and the .git directory - return - } - - // Block access to any .md files at the root level - if isRootLevel(requestedPath) && strings.HasSuffix(requestedPath, ".md") { - http.NotFound(w, r) // Block access to root-level .md files - return - } - - // If the path is a directory, serve its contents - if fileInfo.IsDir() { - http.FileServer(http.Dir(requestedPath)).ServeHTTP(w, r) - return - } - - // Serve the file within the subdirectory - http.FileServer(http.Dir(filepath.Join(dataDir, "news"))).ServeHTTP(w, r) -} - -// isRootLevel checks if the file is at the root level of /news-assets/ -func isRootLevel(path string) bool { - relPath, err := filepath.Rel(filepath.Join(dataDir, "news"), path) - if err != nil { - return false - } - - // The relative path should not contain any slashes if it's at the root level - return !strings.Contains(relPath, string(os.PathSeparator)) -} - -// isRestrictedDirectory checks if the path is within a restricted directory like .git -func isRestrictedDirectory(path string) bool { - // Normalize the path - cleanPath := filepath.Clean(path) - - // Check if the path contains .git directory or other restricted directories - return strings.Contains(cleanPath, string(os.PathSeparator)+".git") || strings.HasSuffix(cleanPath, ".git") -} - -func handleFileChange(path string, isNew bool) { - if filepath.Ext(path) == ".md" { - creationTimesM.Lock() - defer creationTimesM.Unlock() - if isNew { - creationTimes[path] = time.Now() - } - - dir := filepath.Dir(path) - blogName := filepath.Base(dir) - updateBlogEntries(blogName, path) - checkAndSendNotifications() - } -} - -func updateBlogEntries(blogName, path string) { - for i, blog := range blogs { - if blog.Name == blogName { - entry, err := parseMarkdownFile(path) - if err != nil { - log.Printf("Error parsing markdown file: %v", err) - return - } - - updated := false - for j, e := range blogs[i].Entries { - if e.Number == entry.Number { - blogs[i].Entries[j] = entry - updated = true - break - } - } - - if !updated { - blogs[i].Entries = append(blogs[i].Entries, entry) - } - - sort.Slice(blogs[i].Entries, func(a, b int) bool { - return blogs[i].Entries[a].Number > blogs[i].Entries[b].Number - }) - - log.Printf("Updated blog %s with entry %d", blogName, entry.Number) - return - } - } - - // If blog not found, create new one - entry, err := parseMarkdownFile(path) - if err != nil { - log.Printf("Error parsing markdown file: %v", err) - return - } - - newBlog := Blog{ - Name: blogName, - Entries: []BlogEntry{entry}, - } - - blogs = append(blogs, newBlog) - log.Printf("Created new blog %s with entry %d", blogName, entry.Number) -} - -func sendNotifications(entry BlogEntry) { - message := fmt.Sprintf("New blog post published!\nTitle: %s\nDescription: %s\nAuthor: %s\nDate: %s", - entry.Title, entry.Description, entry.Author, entry.Date.Format("2006-01-02 15:04")) - - // Send notification to Telegram - sendTelegramNotification(message) - - // Send notification to Discord - sendDiscordNotification(message) - - log.Printf("Sent notifications for entry %d: %s", entry.Number, entry.Title) -} +package main + +import ( + "bufio" + "bytes" + "flag" + "fmt" + "html/template" + "log" + "net/http" + "os" + "path/filepath" + "sort" + "strconv" + "strings" + "sync" + "time" + + "github.com/fsnotify/fsnotify" + tgbotapi "github.com/go-telegram-bot-api/telegram-bot-api/v5" + "github.com/russross/blackfriday/v2" +) + +const ( + dataDir = "./data" + templateDir = "./templates" + staticDir = "./static" + notifiedFilePath = "./notified_entries.json" + defaultPort = 8080 + pageSize = 5 // Number of blog entries per page + botTokenEnv = "YOUR_TELEGRAM_BOT_TOKEN" // Replace with your bot's token or set via environment variable + YOUR_TELEGRAM_CHAT_ID = 0 + discordWebhookURL = "YOUR_DISCORD_WEBHOOK_URL" +) + +/* + Spitfire Browser by Internet Addict (https://spitfirebrowser.com) + Free for personal and commercial use under the CCA 3.0 license (html5up.net/license) +*/ + +type Blog struct { + Name string + Entries []BlogEntry +} + +type BlogEntry struct { + Title string + Description string + Author string + Content string + Date time.Time + Number int + Notified bool // To track if the notification was sent +} + +type PageData struct { + Title string + Date string + Desc string + Author string + Content template.HTML + PrevLink string + NextLink string +} + +var ( + blogs []Blog + bot *tgbotapi.BotAPI + port int + creationTimes = make(map[string]time.Time) + creationTimesM sync.Mutex + notifiedEntries = make(map[int]bool) +) + +func init() { + flag.IntVar(&port, "p", defaultPort, "Specify the port to run the server on") + flag.IntVar(&port, "port", defaultPort, "Specify the port to run the server on") +} + +func main() { + // Parse the flags + flag.Parse() + + // Load the notified entries from the file + loadNotifiedEntries() + + // Retrieve the Telegram bot token from the environment variable + botToken := os.Getenv("TELEGRAM_BOT_TOKEN") + if botToken == "" { + botToken = botTokenEnv + } + + // Initialize the Telegram bot + var err error + bot, err = tgbotapi.NewBotAPI(botToken) + if err != nil { + log.Printf("Warning: Error creating Telegram bot: %v", err) + } else { + go startTelegramBot() + } + + // Retrieve blog entries from the data directory + blogs, err = getBlogs(dataDir) + if err != nil { + log.Fatalf("Error getting blogs: %v", err) + } + + // Start the periodic notification checker + go startNotificationChecker(10 * time.Minute) + + // Start watching for changes in the data directory + go watchForChanges(dataDir) + + // Serve static files (CSS, JS, etc.) from the /static directory + http.Handle("/static/", http.StripPrefix("/static/", http.FileServer(http.Dir(staticDir)))) + + // Custom handler to serve only directories and their contents under /news-assets/ + http.Handle("/news-assets/", http.StripPrefix("/news-assets/", http.HandlerFunc(serveDirectoriesOnly))) + + // Serve downloads.html at /downloads + http.HandleFunc("/download", func(w http.ResponseWriter, r *http.Request) { + renderTemplate(w, "download.html", nil) + }) + + // Serve download-linux.html at /download-linux + http.HandleFunc("/download-linux", func(w http.ResponseWriter, r *http.Request) { + renderTemplate(w, "download-linux.html", nil) + }) + + // Route for generating the RSS feed for all blogs + http.HandleFunc("/rss", func(w http.ResponseWriter, r *http.Request) { + siteURL := fmt.Sprintf("http://%s", r.Host) // or you can use a fixed base URL + generateAtomFeed(w, blogs, siteURL) + }) + + // Route for generating the RSS feed for a specific blog + http.HandleFunc("/rss/", func(w http.ResponseWriter, r *http.Request) { + pathParts := strings.Split(r.URL.Path, "/") + if len(pathParts) < 3 { + http.NotFound(w, r) + return + } + + blogName := pathParts[2] + for _, blog := range blogs { + if blog.Name == blogName { + siteURL := fmt.Sprintf("http://%s", r.Host) // or you can use a fixed base URL + generateBlogAtomFeed(w, blog, siteURL) + return + } + } + + http.NotFound(w, r) + }) + + // Define route handlers + http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { + if r.URL.Path == "/" { + renderIndex(w) + return + } + + pathParts := strings.Split(r.URL.Path, "/") + if len(pathParts) < 2 { + http.NotFound(w, r) + return + } + + if len(pathParts) == 3 { + blogName := pathParts[1] + entryNumber, err := strconv.Atoi(pathParts[2]) + if err == nil { + renderBlogEntry(w, r, blogName, entryNumber) + return + } + } + + blogName := pathParts[1] + for _, blog := range blogs { + if blog.Name == blogName { + http.Redirect(w, r, fmt.Sprintf("/%s/%d", blogName, blog.Entries[0].Number), http.StatusFound) + return + } + } + + http.NotFound(w, r) + }) + + // Start the HTTP server on the specified port + serverURL := fmt.Sprintf("http://localhost:%d", port) + log.Printf("Starting server on %s", serverURL) + log.Fatal(http.ListenAndServe(fmt.Sprintf(":%d", port), nil)) +} + +func startNotificationChecker(interval time.Duration) { + ticker := time.NewTicker(interval) + defer ticker.Stop() + + for range ticker.C { + checkAndSendNotifications() + } +} + +func renderTemplate(w http.ResponseWriter, tmpl string, data interface{}) { + tmplPath := filepath.Join(templateDir, tmpl) + t, err := template.ParseFiles(tmplPath) + if err != nil { + http.Error(w, "Internal Server Error", http.StatusInternalServerError) + log.Printf("Error parsing template %s: %v", tmpl, err) + return + } + + err = t.Execute(w, data) + if err != nil { + http.Error(w, "Internal Server Error", http.StatusInternalServerError) + log.Printf("Error executing template %s: %v", tmpl, err) + } +} + +func renderIndex(w http.ResponseWriter) { + renderTemplate(w, "index.html", nil) +} + +// Helper function to add loading="lazy" to all img tags +func injectLazyLoading(htmlContent string) string { + // Split the content by ") + if endOfTag == -1 { + // If no closing bracket is found, add the remaining part as is + modifiedContent += " 0 && !time.Now().Before(blog.Entries[i-1].Date) { + prevLink = fmt.Sprintf("/%s/%d", blog.Name, blog.Entries[i-1].Number) + } + + // Check if the next entry is visible + if i < len(blog.Entries)-1 && !time.Now().Before(blog.Entries[i+1].Date) { + nextLink = fmt.Sprintf("/%s/%d", blog.Name, blog.Entries[i+1].Number) + } + break + } + } + + // Convert .md to HTML + htmlContent := blackfriday.Run([]byte(entry.Content)) + + // Double check "/news-assets/" in URL of images + htmlContent = bytes.ReplaceAll(htmlContent, []byte("src=\"./"), []byte(fmt.Sprintf("src=\"/news-assets/%d/", entryNumber))) + + // Apply lazy loading to the generated HTML content + htmlContentWithLazyLoading := injectLazyLoading(string(htmlContent)) + + pageData := PageData{ + Title: entry.Title, + Date: entry.Date.Format("2006-01-02 15:04"), + Desc: entry.Description, + Author: entry.Author, + Content: template.HTML(htmlContentWithLazyLoading), + PrevLink: prevLink, + NextLink: nextLink, + } + + renderTemplate(w, "news.html", pageData) +} + +func getBlogs(dir string) ([]Blog, error) { + var blogs []Blog + + files, err := os.ReadDir(dir) + if err != nil { + return nil, err + } + + for _, file := range files { + if file.IsDir() { + blog, err := getBlogEntries(filepath.Join(dir, file.Name())) + if err != nil { + return nil, err + } + blogs = append(blogs, blog) + } + } + + return blogs, nil +} + +func getBlogEntries(dir string) (Blog, error) { + var entries []BlogEntry + + files, err := os.ReadDir(dir) + if err != nil { + return Blog{}, err + } + + for _, file := range files { + if filepath.Ext(file.Name()) == ".md" { + entry, err := parseMarkdownFile(filepath.Join(dir, file.Name())) + if err != nil { + return Blog{}, err + } + + entries = append(entries, entry) + } + } + + sort.Slice(entries, func(i, j int) bool { + return entries[i].Number > entries[j].Number + }) + + blog := Blog{ + Name: filepath.Base(dir), + Entries: entries, + } + + return blog, nil +} + +func parseMarkdownFile(path string) (BlogEntry, error) { + content, err := os.ReadFile(path) + if err != nil { + return BlogEntry{}, err + } + + scanner := bufio.NewScanner(strings.NewReader(string(content))) + + var title, description, postTime, author string + var articleContent strings.Builder + var insideHeader bool + + for scanner.Scan() { + line := strings.TrimSpace(scanner.Text()) + + if line == "[HEADER]" { + insideHeader = true + continue + } else if line == "[END]" { + insideHeader = false + continue + } + + if insideHeader { + if strings.HasPrefix(line, "t:") { + title = strings.TrimSpace(line[2:]) + } else if strings.HasPrefix(line, "d:") { + description = strings.TrimSpace(line[2:]) + } else if strings.HasPrefix(line, "p:") { + postTime = strings.TrimSpace(line[2:]) + } else if strings.HasPrefix(line, "a:") { + author = strings.TrimSpace(line[2:]) + } + } else { + articleContent.WriteString(line + "\n") + } + } + + date := time.Now() + if postTime != "" { + date, err = time.Parse("2006-01-02 15:04", postTime) + if err != nil { + log.Printf("Error parsing date in file %s: %v", path, err) + } + } + + number, err := strconv.Atoi(strings.TrimSuffix(filepath.Base(path), filepath.Ext(path))) + if err != nil { + log.Printf("Error extracting number from file %s: %v", path, err) + return BlogEntry{}, err + } + + // Check if the entry has already been notified + notified := notifiedEntries[number] + + entry := BlogEntry{ + Title: title, + Description: description, + Author: author, + Content: articleContent.String(), + Date: date, + Number: number, + Notified: notified, + } + + return entry, nil +} + +func watchForChanges(dir string) { + watcher, err := fsnotify.NewWatcher() + if err != nil { + log.Fatalf("Error creating file watcher: %v", err) + } + defer watcher.Close() + + go func() { + for { + select { + case event, ok := <-watcher.Events: + if !ok { + return + } + if event.Op&fsnotify.Create == fsnotify.Create { + handleFileChange(event.Name, true) + } else if event.Op&fsnotify.Write == fsnotify.Write { + handleFileChange(event.Name, false) + } + case err, ok := <-watcher.Errors: + if !ok { + return + } + log.Printf("File watcher error: %v", err) + } + } + }() + + err = watcher.Add(dir) + if err != nil { + log.Fatalf("Error adding directory to watcher: %v", err) + } + + // Add subdirectories + err = filepath.Walk(dir, func(path string, info os.FileInfo, err error) error { + if err != nil { + return err + } + if info.IsDir() && path != dir { + return watcher.Add(path) + } + return nil + }) + if err != nil { + log.Fatalf("Error adding subdirectories to watcher: %v", err) + } + + // Block forever + select {} +} + +// serveDirectoriesOnly handles requests and only serves directories and their contents. +func serveDirectoriesOnly(w http.ResponseWriter, r *http.Request) { + requestedPath := filepath.Join(dataDir, "news", r.URL.Path) + + // Check if the requested path is a directory + fileInfo, err := os.Stat(requestedPath) + if err != nil { + http.NotFound(w, r) // If the path doesn't exist, return a 404 + return + } + + // Block access to any files at the root level or the .git directory + if isRootLevel(requestedPath) || isRestrictedDirectory(requestedPath) { + http.NotFound(w, r) // Block access to root-level files like .md and the .git directory + return + } + + // Block access to any .md files at the root level + if isRootLevel(requestedPath) && strings.HasSuffix(requestedPath, ".md") { + http.NotFound(w, r) // Block access to root-level .md files + return + } + + // If the path is a directory, serve its contents + if fileInfo.IsDir() { + http.FileServer(http.Dir(requestedPath)).ServeHTTP(w, r) + return + } + + // Serve the file within the subdirectory + http.FileServer(http.Dir(filepath.Join(dataDir, "news"))).ServeHTTP(w, r) +} + +// isRootLevel checks if the file is at the root level of /news-assets/ +func isRootLevel(path string) bool { + relPath, err := filepath.Rel(filepath.Join(dataDir, "news"), path) + if err != nil { + return false + } + + // The relative path should not contain any slashes if it's at the root level + return !strings.Contains(relPath, string(os.PathSeparator)) +} + +// isRestrictedDirectory checks if the path is within a restricted directory like .git +func isRestrictedDirectory(path string) bool { + // Normalize the path + cleanPath := filepath.Clean(path) + + // Check if the path contains .git directory or other restricted directories + return strings.Contains(cleanPath, string(os.PathSeparator)+".git") || strings.HasSuffix(cleanPath, ".git") +} + +func handleFileChange(path string, isNew bool) { + if filepath.Ext(path) == ".md" { + creationTimesM.Lock() + defer creationTimesM.Unlock() + if isNew { + creationTimes[path] = time.Now() + } + + dir := filepath.Dir(path) + blogName := filepath.Base(dir) + updateBlogEntries(blogName, path) + checkAndSendNotifications() + } +} + +func updateBlogEntries(blogName, path string) { + for i, blog := range blogs { + if blog.Name == blogName { + entry, err := parseMarkdownFile(path) + if err != nil { + log.Printf("Error parsing markdown file: %v", err) + return + } + + updated := false + for j, e := range blogs[i].Entries { + if e.Number == entry.Number { + blogs[i].Entries[j] = entry + updated = true + break + } + } + + if !updated { + blogs[i].Entries = append(blogs[i].Entries, entry) + } + + sort.Slice(blogs[i].Entries, func(a, b int) bool { + return blogs[i].Entries[a].Number > blogs[i].Entries[b].Number + }) + + log.Printf("Updated blog %s with entry %d", blogName, entry.Number) + return + } + } + + // If blog not found, create new one + entry, err := parseMarkdownFile(path) + if err != nil { + log.Printf("Error parsing markdown file: %v", err) + return + } + + newBlog := Blog{ + Name: blogName, + Entries: []BlogEntry{entry}, + } + + blogs = append(blogs, newBlog) + log.Printf("Created new blog %s with entry %d", blogName, entry.Number) +} + +func sendNotifications(entry BlogEntry) { + message := fmt.Sprintf("New blog post published!\nTitle: %s\nDescription: %s\nAuthor: %s\nDate: %s", + entry.Title, entry.Description, entry.Author, entry.Date.Format("2006-01-02 15:04")) + + // Send notification to Telegram + sendTelegramNotification(message) + + // Send notification to Discord + sendDiscordNotification(message) + + log.Printf("Sent notifications for entry %d: %s", entry.Number, entry.Title) +} diff --git a/run.bat b/run.bat new file mode 100644 index 0000000..9c6aa74 --- /dev/null +++ b/run.bat @@ -0,0 +1,21 @@ +@echo off + +REM Default values +set PORT=8080 + +REM Parse command-line arguments +:parse_args +if "%~1"=="" goto run_app +if "%~1"=="-p" ( + set PORT=%~2 + shift + shift + goto parse_args +) else ( + echo Unknown parameter passed: %~1 + exit /b 1 +) + +:run_app +REM Run the Go application with the parsed flags +go run discord.go rss.go telegram.go save.go main.go -p=%PORT% diff --git a/static/css/blog.css b/static/css/blog.css index 60a9364..34f639b 100644 --- a/static/css/blog.css +++ b/static/css/blog.css @@ -1,50 +1,50 @@ -/* Global settings for images and videos */ -img, video { - display: block; - width: 100%; - border-radius: 10px; /* Add rounded corners */ - margin-top: 20px; /* Add space above the image */ - margin-bottom: 20px; /* Add space below the image */ -} - -/* Exclude images inside the .icons class from global settings */ -ul.icons img { - display: inline; /* Override display: block */ - width: auto; /* Override width: 100% */ - border-radius: 0; /* Remove rounded corners */ - margin-top: 0; /* Remove top margin */ - margin-bottom: 0; /* Remove bottom margin */ -} - -/* Align blog text and links */ -.align-blog p, a, em { - text-align: left; - font-size: 1em; - line-height: 1.6; -} - -/* Increase margin top for all headings */ -.align-blog h1, -.align-blog h2, -.align-blog h3, -.align-blog h4, -.align-blog h5, -.align-blog h6 { - margin-top: 30px; /* Adjust this value to increase space above headings */ -} - -/* Icons specific styles */ -ul.icons { - cursor: default; - list-style: none; - padding-left: 0; -} - -ul.icons li { - display: inline-block; - padding: 0 0.65em 0 0; -} - -ul.icons li:last-child { - padding-right: 0 !important; -} +/* Global settings for images and videos */ +img, video { + display: block; + width: 100%; + border-radius: 10px; /* Add rounded corners */ + margin-top: 20px; /* Add space above the image */ + margin-bottom: 20px; /* Add space below the image */ +} + +/* Exclude images inside the .icons class from global settings */ +ul.icons img { + display: inline; /* Override display: block */ + width: auto; /* Override width: 100% */ + border-radius: 0; /* Remove rounded corners */ + margin-top: 0; /* Remove top margin */ + margin-bottom: 0; /* Remove bottom margin */ +} + +/* Align blog text and links */ +.align-blog p, a, em { + text-align: left; + font-size: 1em; + line-height: 1.6; +} + +/* Increase margin top for all headings */ +.align-blog h1, +.align-blog h2, +.align-blog h3, +.align-blog h4, +.align-blog h5, +.align-blog h6 { + margin-top: 30px; /* Adjust this value to increase space above headings */ +} + +/* Icons specific styles */ +ul.icons { + cursor: default; + list-style: none; + padding-left: 0; +} + +ul.icons li { + display: inline-block; + padding: 0 0.65em 0 0; +} + +ul.icons li:last-child { + padding-right: 0 !important; +} diff --git a/static/css/fancy-gallery.css b/static/css/fancy-gallery.css index 689df70..d8e3068 100644 --- a/static/css/fancy-gallery.css +++ b/static/css/fancy-gallery.css @@ -1,138 +1,139 @@ -/* Adjust the gallery wrapper */ -.gallery-wrapper { - position: relative; - width: 100%; - max-width: 800px; - margin: 0 auto; /* Center the gallery */ - overflow: hidden; /* Ensure content is within bounds */ -} - -.gallery-wrapper img { - display: block; - width: 100%; - height: auto; -} - -/* Slick carousel specific styles */ -.slick-prev, .slick-next { - background: #444; /* Button background color */ - border: none; /* Remove any border */ - border-radius: 50%; /* Make the buttons circular */ - color: #fff; /* Text color */ - font-size: 18px; /* Font size for the arrow */ - height: 40px; /* Button height */ - width: 40px; /* Button width */ - line-height: 40px; /* Center text vertically */ - text-align: center; /* Center text horizontally */ - z-index: 1000; /* Make sure buttons are above the carousel images */ - position: absolute; - top: 50%; /* Position vertically centered */ - transform: translateY(-50%); -} - -.slick-prev { - left: -50px; /* Position to the left of the carousel */ -} - -.slick-next { - right: -50px; /* Position to the right of the carousel */ -} - -/* Center the dots under the image */ -.slick-dots { - text-align: center; - margin-top: 15px; /* Space between image and dots */ - padding-left: 0; - list-style: none; -} - -.slick-dots li { - display: inline-block; /* Align dots horizontally */ - margin: 0 8px; /* Space between dots */ -} - -.slick-dots li button { - background: #ccc; /* Dot background color */ - border: none; /* Remove any border */ - border-radius: 50%; /* Make the dots circular */ - width: 12px; /* Dot width */ - height: 12px; /* Dot height */ - position: relative; -} - -.slick-dots li button::before { - content: ''; - display: block; - width: 16px; /* Adjusted circle width */ - height: 16px; /* Adjusted circle height */ - border-radius: 50%; - background-color: transparent; - border: 2px solid #ccc; /* Circle border color */ - position: absolute; - left: 50%; - top: 50%; - transform: translate(-50%, -50%); -} - -.slick-dots li.slick-active button::before { - background-color: #fff; /* Active dot background color */ - border-color: #fff; /* Active dot border color */ -} - -/* This is what I get for global styling and using templates */ - -/* Override the border-radius to remove rounded corners */ -.slick-prev, .slick-next { - border-radius: 0 !important; - background: none !important; - box-shadow: none !important; -} - -/* If you want a specific shape, like a square or a different background */ -.slick-prev, .slick-next { - border-radius: 0 !important; - background: transparent !important; -} - -/* Ensure the active dot buttons are not rounded */ -.slick-dots li button { - border-radius: 0 !important; - background: none !important; -} - -.slick-dots li button::before { - border-radius: 0 !important; -} - -/* General button override */ -button[type="button"][role="tab"] { - border-radius: 0 !important; - background: none !important; - box-shadow: none !important; - border: none !important; - color: inherit !important; - padding: 0 !important; -} - -/* Restore the round shape for the dots */ -.slick-dots li button { - border-radius: 50% !important; - background: #ccc !important; - width: 12px; - height: 12px; -} - -/* Ensure the pseudo-element is also circular */ -.slick-dots li button::before { - border-radius: 50% !important; - background-color: transparent; - border: 2px solid #ccc; - width: 16px; - height: 16px; -} - -/* Style for the active dot */ -.slick-dots li.slick-active button::before { - background-color: #fff; - border-color: #fff; -} +/* Adjust the gallery wrapper */ +.gallery-wrapper { + position: relative; + width: 100%; + max-width: 800px; + margin: 0 auto; /* Center the gallery */ + overflow: hidden; /* Ensure content is within bounds */ +} + +.gallery-wrapper img { + display: block; + width: 100%; + height: auto; + border: 1px solid #dddddd3d; +} + +/* Slick carousel specific styles */ +.slick-prev, .slick-next { + background: #444; /* Button background color */ + border: none; /* Remove any border */ + border-radius: 50%; /* Make the buttons circular */ + color: #fff; /* Text color */ + font-size: 18px; /* Font size for the arrow */ + height: 40px; /* Button height */ + width: 40px; /* Button width */ + line-height: 40px; /* Center text vertically */ + text-align: center; /* Center text horizontally */ + z-index: 1000; /* Make sure buttons are above the carousel images */ + position: absolute; + top: 50%; /* Position vertically centered */ + transform: translateY(-50%); +} + +.slick-prev { + left: 0px; +} + +.slick-next { + right: 0px; +} + +/* Center the dots under the image */ +.slick-dots { + text-align: center; + margin-top: 15px; /* Space between image and dots */ + padding-left: 0; + list-style: none; +} + +.slick-dots li { + display: inline-block; /* Align dots horizontally */ + margin: 0 8px; /* Space between dots */ +} + +.slick-dots li button { + background: #ccc; /* Dot background color */ + border: none; /* Remove any border */ + border-radius: 50%; /* Make the dots circular */ + width: 12px; /* Dot width */ + height: 12px; /* Dot height */ + position: relative; +} + +.slick-dots li button::before { + content: ''; + display: block; + width: 16px; /* Adjusted circle width */ + height: 16px; /* Adjusted circle height */ + border-radius: 50%; + background-color: transparent; + border: 2px solid #ccc; /* Circle border color */ + position: absolute; + left: 50%; + top: 50%; + transform: translate(-50%, -50%); +} + +.slick-dots li.slick-active button::before { + background-color: #fff; /* Active dot background color */ + border-color: #fff; /* Active dot border color */ +} + +/* This is what I get for global styling and using templates */ + +/* Override the border-radius to remove rounded corners */ +.slick-prev, .slick-next { + border-radius: 0 !important; + background: none !important; + box-shadow: none !important; +} + +/* If you want a specific shape, like a square or a different background */ +.slick-prev, .slick-next { + border-radius: 0 !important; + background: transparent !important; +} + +/* Ensure the active dot buttons are not rounded */ +.slick-dots li button { + border-radius: 0 !important; + background: none !important; +} + +.slick-dots li button::before { + border-radius: 0 !important; +} + +/* General button override */ +button[type="button"][role="tab"] { + border-radius: 0 !important; + background: none !important; + box-shadow: none !important; + border: none !important; + color: inherit !important; + padding: 0 !important; +} + +/* Restore the round shape for the dots */ +.slick-dots li button { + border-radius: 50% !important; + background: #ccc !important; + width: 12px; + height: 12px; +} + +/* Ensure the pseudo-element is also circular */ +.slick-dots li button::before { + border-radius: 50% !important; + background-color: transparent; + border: 2px solid #ccc; + width: 16px; + height: 16px; +} + +/* Style for the active dot */ +.slick-dots li.slick-active button::before { + background-color: #fff; + border-color: #fff; +} diff --git a/static/css/images/overlay.png b/static/css/images/overlay.png deleted file mode 100644 index a5619432c61cf8b68bd79f2fe75ce988dc54692d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20100 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 N002ovPDHLkV1fZZ-2DIm diff --git a/static/css/main.css b/static/css/main.css index d356b01..95e5d51 100644 --- a/static/css/main.css +++ b/static/css/main.css @@ -1,3800 +1,3800 @@ -@import url(fontawesome-all.min.css); - -/* @import 'https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400'; */ -@import 'assets/webfonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwkxduz8A.woff2'; /*THIS NEEDS TO WORK*/ -@import 'assets/webfonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlxdu.woff2'; - -/* - Stellar by HTML5 UP - html5up.net | @ajlkn - Free for personal and commercial use under the CCA 3.0 license (html5up.net/license) -*/ - -html, body, div, span, applet, object, -iframe, h1, h2, h3, h4, h5, h6, p, blockquote, -pre, a, abbr, acronym, address, big, cite, -code, del, dfn, em, img, ins, kbd, q, s, samp, -small, strike, strong, sub, sup, tt, var, b, -u, i, center, dl, dt, dd, ol, ul, li, fieldset, -form, label, legend, table, caption, tbody, -tfoot, thead, tr, th, td, article, aside, -canvas, details, embed, figure, figcaption, -footer, header, hgroup, menu, nav, output, ruby, -section, summary, time, mark, audio, video { - margin: 0; - padding: 0; - border: 0; - font-size: 100%; - font: inherit; - vertical-align: baseline;} - -article, aside, details, figcaption, figure, -footer, header, hgroup, menu, nav, section { - display: block;} - -body { - line-height: 1; -} - -ol, ul { - list-style: none; -} - -blockquote, q { - quotes: none; -} - - blockquote:before, blockquote:after, q:before, q:after { - content: ''; - content: none; - } - -table { - border-collapse: collapse; - border-spacing: 0; -} - -body { - -webkit-text-size-adjust: none; -} - -mark { - background-color: transparent; - color: inherit; -} - -input::-moz-focus-inner { - border: 0; - padding: 0; -} - -input, select, textarea { - -moz-appearance: none; - -webkit-appearance: none; - -ms-appearance: none; - appearance: none; -} - -/* Basic */ - - @-ms-viewport { - width: device-width; - } - - body { - -ms-overflow-style: scrollbar; - } - - @media screen and (max-width: 480px) { - - html, body { - min-width: 320px; - } - - } - - html { - box-sizing: border-box; - } - - *, *:before, *:after { - box-sizing: inherit; - } - - /* body { - background-color: #935d8c; - background-image: url("images/overlay.png"), -moz-linear-gradient(45deg, #e37682 15%, #5f4d93 85%); - background-image: url("images/overlay.png"), -webkit-linear-gradient(45deg, #e37682 15%, #5f4d93 85%); - background-image: url("images/overlay.png"), -ms-linear-gradient(45deg, #e37682 15%, #5f4d93 85%); - background-image: url("images/overlay.png"), linear-gradient(45deg, #e37682 15%, #5f4d93 85%); - } */ - - body.is-preload *, body.is-preload *:before, body.is-preload *:after { - -moz-animation: none !important; - -webkit-animation: none !important; - -ms-animation: none !important; - animation: none !important; - -moz-transition: none !important; - -webkit-transition: none !important; - -ms-transition: none !important; - transition: none !important; - } - -/* Type */ - - /* body { - background-color: #935d8c; - color: rgba(255, 255, 255, 0.65); - } */ - - body, input, select, textarea { - font-family: "Source Sans Pro", Helvetica, sans-serif; - font-size: 14pt; - font-weight: 300; - line-height: 1.65; - } - - @media screen and (max-width: 1680px) { - - body, input, select, textarea { - font-size: 14pt; - } - - } - - @media screen and (max-width: 1280px) { - - body, input, select, textarea { - font-size: 12pt; - } - - } - - @media screen and (max-width: 360px) { - - body, input, select, textarea { - font-size: 11pt; - } - - } - - a { - -moz-transition: color 0.2s ease, border-bottom 0.2s ease; - -webkit-transition: color 0.2s ease, border-bottom 0.2s ease; - -ms-transition: color 0.2s ease, border-bottom 0.2s ease; - transition: color 0.2s ease, border-bottom 0.2s ease; - text-decoration: none; - border-bottom: dotted 1px; - color: inherit; - } - - a:hover { - border-bottom-color: transparent; - } - - strong, b { - font-weight: 400; - } - - em, i { - font-style: italic; - } - - - - p.content { - -moz-columns: 20em 2; - -webkit-columns: 20em 2; - -ms-columns: 20em 2; - columns: 20em 2; - -moz-column-gap: 2em; - -webkit-column-gap: 2em; - -ms-column-gap: 2em; - column-gap: 2em; - text-align: justify; - } - - h1, h2, h3, h4, h5, h6 { - font-weight: 300; - line-height: 1.5; - margin: 0 0 0.7em 0; - letter-spacing: -0.025em; - } - - h1 a, h2 a, h3 a, h4 a, h5 a, h6 a { - color: inherit; - text-decoration: none; - } - - h1 { - font-size: 2.5em; - line-height: 1.2; - } - - h2 { - font-size: 1.5em; - } - - h3 { - font-size: 1.25em; - } - - h4 { - font-size: 1.1em; - } - - h5 { - font-size: 0.9em; - } - - h6 { - font-size: 0.7em; - } - - @media screen and (max-width: 736px) { - - h1 { - font-size: 2em; - } - - } - - sub { - font-size: 0.8em; - position: relative; - top: 0.5em; - } - - sup { - font-size: 0.8em; - position: relative; - top: -0.5em; - } - - blockquote { - border-left: solid 4px; - font-style: italic; - margin: 0 0 2em 0; - padding: 0.5em 0 0.5em 2em; - } - - code { - border-radius: 8px; - border: solid 1px; - font-family: "Courier New", monospace; - font-size: 0.9em; - margin: 0 0.25em; - padding: 0.25em 0.65em; - } - - pre { - -webkit-overflow-scrolling: touch; - font-family: "Courier New", monospace; - font-size: 0.9em; - margin: 0 0 2em 0; - } - - pre code { - display: block; - line-height: 1.75; - padding: 1em 1.5em; - overflow-x: auto; - } - - hr { - border: 0; - border-bottom: solid 1px; - margin: 2em 0; - } - - hr.major { - margin: 3em 0; - } - - .align-left { - text-align: left; - } - - .align-center { - text-align: center; - } - - .align-right { - text-align: right; - } - - input, select, textarea { - color: #ffffff; - } - - a:hover { - color: #ffffff; - } - - strong, b { - color: #ffffff; - } - - h1, h2, h3, h4, h5, h6 { - color: #ffffff; - } - - blockquote { - border-left-color: rgba(255, 255, 255, 0.35); - } - - code { - background: rgba(255, 255, 255, 0.075); - border-color: rgba(255, 255, 255, 0.35); - } - - hr { - border-bottom-color: rgba(255, 255, 255, 0.35); - } - -/* Row */ - - .row { - display: flex; - flex-wrap: wrap; - box-sizing: border-box; - align-items: stretch; - } - - .row > * { - box-sizing: border-box; - } - - .row.gtr-uniform > * > :last-child { - margin-bottom: 0; - } - - .row.aln-left { - justify-content: flex-start; - } - - .row.aln-center { - justify-content: center; - } - - .row.aln-right { - justify-content: flex-end; - } - - .row.aln-top { - align-items: flex-start; - } - - .row.aln-middle { - align-items: center; - } - - .row.aln-bottom { - align-items: flex-end; - } - - .row > .imp { - order: -1; - } - - .row > .col-1 { - width: 8.33333%; - } - - .row > .off-1 { - margin-left: 8.33333%; - } - - .row > .col-2 { - width: 16.66667%; - } - - .row > .off-2 { - margin-left: 16.66667%; - } - - .row > .col-3 { - width: 25%; - } - - .row > .off-3 { - margin-left: 25%; - } - - .row > .col-4 { - width: 33.33333%; - } - - .row > .off-4 { - margin-left: 33.33333%; - } - - .row > .col-5 { - width: 41.66667%; - } - - .row > .off-5 { - margin-left: 41.66667%; - } - - .row > .col-6 { - width: 50%; - } - - .row > .off-6 { - margin-left: 50%; - } - - .row > .col-7 { - width: 58.33333%; - } - - .row > .off-7 { - margin-left: 58.33333%; - } - - .row > .col-8 { - width: 66.66667%; - } - - .row > .off-8 { - margin-left: 66.66667%; - } - - .row > .col-9 { - width: 75%; - } - - .row > .off-9 { - margin-left: 75%; - } - - .row > .col-10 { - width: 83.33333%; - } - - .row > .off-10 { - margin-left: 83.33333%; - } - - .row > .col-11 { - width: 91.66667%; - } - - .row > .off-11 { - margin-left: 91.66667%; - } - - .row > .col-12 { - width: 100%; - } - - .row > .off-12 { - margin-left: 100%; - } - - .row.gtr-0 { - margin-top: 0; - margin-left: 0em; - } - - .row.gtr-0 > * { - padding: 0 0 0 0em; - } - - .row.gtr-0.gtr-uniform { - margin-top: 0em; - } - - .row.gtr-0.gtr-uniform > * { - padding-top: 0em; - } - - .row.gtr-25 { - margin-top: 0; - margin-left: -0.375em; - } - - .row.gtr-25 > * { - padding: 0 0 0 0.375em; - } - - .row.gtr-25.gtr-uniform { - margin-top: -0.375em; - } - - .row.gtr-25.gtr-uniform > * { - padding-top: 0.375em; - } - - .row.gtr-50 { - margin-top: 0; - margin-left: -0.75em; - } - - .row.gtr-50 > * { - padding: 0 0 0 0.75em; - } - - .row.gtr-50.gtr-uniform { - margin-top: -0.75em; - } - - .row.gtr-50.gtr-uniform > * { - padding-top: 0.75em; - } - - .row { - margin-top: 0; - margin-left: -1.5em; - } - - .row > * { - padding: 0 0 0 1.5em; - } - - .row.gtr-uniform { - margin-top: -1.5em; - } - - .row.gtr-uniform > * { - padding-top: 1.5em; - } - - .row.gtr-150 { - margin-top: 0; - margin-left: -2.25em; - } - - .row.gtr-150 > * { - padding: 0 0 0 2.25em; - } - - .row.gtr-150.gtr-uniform { - margin-top: -2.25em; - } - - .row.gtr-150.gtr-uniform > * { - padding-top: 2.25em; - } - - .row.gtr-200 { - margin-top: 0; - margin-left: -3em; - } - - .row.gtr-200 > * { - padding: 0 0 0 3em; - } - - .row.gtr-200.gtr-uniform { - margin-top: -3em; - } - - .row.gtr-200.gtr-uniform > * { - padding-top: 3em; - } - - @media screen and (max-width: 1680px) { - - .row { - display: flex; - flex-wrap: wrap; - box-sizing: border-box; - align-items: stretch; - } - - .row > * { - box-sizing: border-box; - } - - .row.gtr-uniform > * > :last-child { - margin-bottom: 0; - } - - .row.aln-left { - justify-content: flex-start; - } - - .row.aln-center { - justify-content: center; - } - - .row.aln-right { - justify-content: flex-end; - } - - .row.aln-top { - align-items: flex-start; - } - - .row.aln-middle { - align-items: center; - } - - .row.aln-bottom { - align-items: flex-end; - } - - .row > .imp-xlarge { - order: -1; - } - - .row > .col-1-xlarge { - width: 8.33333%; - } - - .row > .off-1-xlarge { - margin-left: 8.33333%; - } - - .row > .col-2-xlarge { - width: 16.66667%; - } - - .row > .off-2-xlarge { - margin-left: 16.66667%; - } - - .row > .col-3-xlarge { - width: 25%; - } - - .row > .off-3-xlarge { - margin-left: 25%; - } - - .row > .col-4-xlarge { - width: 33.33333%; - } - - .row > .off-4-xlarge { - margin-left: 33.33333%; - } - - .row > .col-5-xlarge { - width: 41.66667%; - } - - .row > .off-5-xlarge { - margin-left: 41.66667%; - } - - .row > .col-6-xlarge { - width: 50%; - } - - .row > .off-6-xlarge { - margin-left: 50%; - } - - .row > .col-7-xlarge { - width: 58.33333%; - } - - .row > .off-7-xlarge { - margin-left: 58.33333%; - } - - .row > .col-8-xlarge { - width: 66.66667%; - } - - .row > .off-8-xlarge { - margin-left: 66.66667%; - } - - .row > .col-9-xlarge { - width: 75%; - } - - .row > .off-9-xlarge { - margin-left: 75%; - } - - .row > .col-10-xlarge { - width: 83.33333%; - } - - .row > .off-10-xlarge { - margin-left: 83.33333%; - } - - .row > .col-11-xlarge { - width: 91.66667%; - } - - .row > .off-11-xlarge { - margin-left: 91.66667%; - } - - .row > .col-12-xlarge { - width: 100%; - } - - .row > .off-12-xlarge { - margin-left: 100%; - } - - .row.gtr-0 { - margin-top: 0; - margin-left: 0em; - } - - .row.gtr-0 > * { - padding: 0 0 0 0em; - } - - .row.gtr-0.gtr-uniform { - margin-top: 0em; - } - - .row.gtr-0.gtr-uniform > * { - padding-top: 0em; - } - - .row.gtr-25 { - margin-top: 0; - margin-left: -0.375em; - } - - .row.gtr-25 > * { - padding: 0 0 0 0.375em; - } - - .row.gtr-25.gtr-uniform { - margin-top: -0.375em; - } - - .row.gtr-25.gtr-uniform > * { - padding-top: 0.375em; - } - - .row.gtr-50 { - margin-top: 0; - margin-left: -0.75em; - } - - .row.gtr-50 > * { - padding: 0 0 0 0.75em; - } - - .row.gtr-50.gtr-uniform { - margin-top: -0.75em; - } - - .row.gtr-50.gtr-uniform > * { - padding-top: 0.75em; - } - - .row { - margin-top: 0; - margin-left: -1.5em; - } - - .row > * { - padding: 0 0 0 1.5em; - } - - .row.gtr-uniform { - margin-top: -1.5em; - } - - .row.gtr-uniform > * { - padding-top: 1.5em; - } - - .row.gtr-150 { - margin-top: 0; - margin-left: -2.25em; - } - - .row.gtr-150 > * { - padding: 0 0 0 2.25em; - } - - .row.gtr-150.gtr-uniform { - margin-top: -2.25em; - } - - .row.gtr-150.gtr-uniform > * { - padding-top: 2.25em; - } - - .row.gtr-200 { - margin-top: 0; - margin-left: -3em; - } - - .row.gtr-200 > * { - padding: 0 0 0 3em; - } - - .row.gtr-200.gtr-uniform { - margin-top: -3em; - } - - .row.gtr-200.gtr-uniform > * { - padding-top: 3em; - } - - } - - @media screen and (max-width: 1280px) { - - .row { - display: flex; - flex-wrap: wrap; - box-sizing: border-box; - align-items: stretch; - } - - .row > * { - box-sizing: border-box; - } - - .row.gtr-uniform > * > :last-child { - margin-bottom: 0; - } - - .row.aln-left { - justify-content: flex-start; - } - - .row.aln-center { - justify-content: center; - } - - .row.aln-right { - justify-content: flex-end; - } - - .row.aln-top { - align-items: flex-start; - } - - .row.aln-middle { - align-items: center; - } - - .row.aln-bottom { - align-items: flex-end; - } - - .row > .imp-large { - order: -1; - } - - .row > .col-1-large { - width: 8.33333%; - } - - .row > .off-1-large { - margin-left: 8.33333%; - } - - .row > .col-2-large { - width: 16.66667%; - } - - .row > .off-2-large { - margin-left: 16.66667%; - } - - .row > .col-3-large { - width: 25%; - } - - .row > .off-3-large { - margin-left: 25%; - } - - .row > .col-4-large { - width: 33.33333%; - } - - .row > .off-4-large { - margin-left: 33.33333%; - } - - .row > .col-5-large { - width: 41.66667%; - } - - .row > .off-5-large { - margin-left: 41.66667%; - } - - .row > .col-6-large { - width: 50%; - } - - .row > .off-6-large { - margin-left: 50%; - } - - .row > .col-7-large { - width: 58.33333%; - } - - .row > .off-7-large { - margin-left: 58.33333%; - } - - .row > .col-8-large { - width: 66.66667%; - } - - .row > .off-8-large { - margin-left: 66.66667%; - } - - .row > .col-9-large { - width: 75%; - } - - .row > .off-9-large { - margin-left: 75%; - } - - .row > .col-10-large { - width: 83.33333%; - } - - .row > .off-10-large { - margin-left: 83.33333%; - } - - .row > .col-11-large { - width: 91.66667%; - } - - .row > .off-11-large { - margin-left: 91.66667%; - } - - .row > .col-12-large { - width: 100%; - } - - .row > .off-12-large { - margin-left: 100%; - } - - .row.gtr-0 { - margin-top: 0; - margin-left: 0em; - } - - .row.gtr-0 > * { - padding: 0 0 0 0em; - } - - .row.gtr-0.gtr-uniform { - margin-top: 0em; - } - - .row.gtr-0.gtr-uniform > * { - padding-top: 0em; - } - - .row.gtr-25 { - margin-top: 0; - margin-left: -0.375em; - } - - .row.gtr-25 > * { - padding: 0 0 0 0.375em; - } - - .row.gtr-25.gtr-uniform { - margin-top: -0.375em; - } - - .row.gtr-25.gtr-uniform > * { - padding-top: 0.375em; - } - - .row.gtr-50 { - margin-top: 0; - margin-left: -0.75em; - } - - .row.gtr-50 > * { - padding: 0 0 0 0.75em; - } - - .row.gtr-50.gtr-uniform { - margin-top: -0.75em; - } - - .row.gtr-50.gtr-uniform > * { - padding-top: 0.75em; - } - - .row { - margin-top: 0; - margin-left: -1.5em; - } - - .row > * { - padding: 0 0 0 1.5em; - } - - .row.gtr-uniform { - margin-top: -1.5em; - } - - .row.gtr-uniform > * { - padding-top: 1.5em; - } - - .row.gtr-150 { - margin-top: 0; - margin-left: -2.25em; - } - - .row.gtr-150 > * { - padding: 0 0 0 2.25em; - } - - .row.gtr-150.gtr-uniform { - margin-top: -2.25em; - } - - .row.gtr-150.gtr-uniform > * { - padding-top: 2.25em; - } - - .row.gtr-200 { - margin-top: 0; - margin-left: -3em; - } - - .row.gtr-200 > * { - padding: 0 0 0 3em; - } - - .row.gtr-200.gtr-uniform { - margin-top: -3em; - } - - .row.gtr-200.gtr-uniform > * { - padding-top: 3em; - } - - } - - @media screen and (max-width: 980px) { - - .row { - display: flex; - flex-wrap: wrap; - box-sizing: border-box; - align-items: stretch; - } - - .row > * { - box-sizing: border-box; - } - - .row.gtr-uniform > * > :last-child { - margin-bottom: 0; - } - - .row.aln-left { - justify-content: flex-start; - } - - .row.aln-center { - justify-content: center; - } - - .row.aln-right { - justify-content: flex-end; - } - - .row.aln-top { - align-items: flex-start; - } - - .row.aln-middle { - align-items: center; - } - - .row.aln-bottom { - align-items: flex-end; - } - - .row > .imp-medium { - order: -1; - } - - .row > .col-1-medium { - width: 8.33333%; - } - - .row > .off-1-medium { - margin-left: 8.33333%; - } - - .row > .col-2-medium { - width: 16.66667%; - } - - .row > .off-2-medium { - margin-left: 16.66667%; - } - - .row > .col-3-medium { - width: 25%; - } - - .row > .off-3-medium { - margin-left: 25%; - } - - .row > .col-4-medium { - width: 33.33333%; - } - - .row > .off-4-medium { - margin-left: 33.33333%; - } - - .row > .col-5-medium { - width: 41.66667%; - } - - .row > .off-5-medium { - margin-left: 41.66667%; - } - - .row > .col-6-medium { - width: 50%; - } - - .row > .off-6-medium { - margin-left: 50%; - } - - .row > .col-7-medium { - width: 58.33333%; - } - - .row > .off-7-medium { - margin-left: 58.33333%; - } - - .row > .col-8-medium { - width: 66.66667%; - } - - .row > .off-8-medium { - margin-left: 66.66667%; - } - - .row > .col-9-medium { - width: 75%; - } - - .row > .off-9-medium { - margin-left: 75%; - } - - .row > .col-10-medium { - width: 83.33333%; - } - - .row > .off-10-medium { - margin-left: 83.33333%; - } - - .row > .col-11-medium { - width: 91.66667%; - } - - .row > .off-11-medium { - margin-left: 91.66667%; - } - - .row > .col-12-medium { - width: 100%; - } - - .row > .off-12-medium { - margin-left: 100%; - } - - .row.gtr-0 { - margin-top: 0; - margin-left: 0em; - } - - .row.gtr-0 > * { - padding: 0 0 0 0em; - } - - .row.gtr-0.gtr-uniform { - margin-top: 0em; - } - - .row.gtr-0.gtr-uniform > * { - padding-top: 0em; - } - - .row.gtr-25 { - margin-top: 0; - margin-left: -0.375em; - } - - .row.gtr-25 > * { - padding: 0 0 0 0.375em; - } - - .row.gtr-25.gtr-uniform { - margin-top: -0.375em; - } - - .row.gtr-25.gtr-uniform > * { - padding-top: 0.375em; - } - - .row.gtr-50 { - margin-top: 0; - margin-left: -0.75em; - } - - .row.gtr-50 > * { - padding: 0 0 0 0.75em; - } - - .row.gtr-50.gtr-uniform { - margin-top: -0.75em; - } - - .row.gtr-50.gtr-uniform > * { - padding-top: 0.75em; - } - - .row { - margin-top: 0; - margin-left: -1.5em; - } - - .row > * { - padding: 0 0 0 1.5em; - } - - .row.gtr-uniform { - margin-top: -1.5em; - } - - .row.gtr-uniform > * { - padding-top: 1.5em; - } - - .row.gtr-150 { - margin-top: 0; - margin-left: -2.25em; - } - - .row.gtr-150 > * { - padding: 0 0 0 2.25em; - } - - .row.gtr-150.gtr-uniform { - margin-top: -2.25em; - } - - .row.gtr-150.gtr-uniform > * { - padding-top: 2.25em; - } - - .row.gtr-200 { - margin-top: 0; - margin-left: -3em; - } - - .row.gtr-200 > * { - padding: 0 0 0 3em; - } - - .row.gtr-200.gtr-uniform { - margin-top: -3em; - } - - .row.gtr-200.gtr-uniform > * { - padding-top: 3em; - } - - } - - @media screen and (max-width: 736px) { - - .row { - display: flex; - flex-wrap: wrap; - box-sizing: border-box; - align-items: stretch; - } - - .row > * { - box-sizing: border-box; - } - - .row.gtr-uniform > * > :last-child { - margin-bottom: 0; - } - - .row.aln-left { - justify-content: flex-start; - } - - .row.aln-center { - justify-content: center; - } - - .row.aln-right { - justify-content: flex-end; - } - - .row.aln-top { - align-items: flex-start; - } - - .row.aln-middle { - align-items: center; - } - - .row.aln-bottom { - align-items: flex-end; - } - - .row > .imp-small { - order: -1; - } - - .row > .col-1-small { - width: 8.33333%; - } - - .row > .off-1-small { - margin-left: 8.33333%; - } - - .row > .col-2-small { - width: 16.66667%; - } - - .row > .off-2-small { - margin-left: 16.66667%; - } - - .row > .col-3-small { - width: 25%; - } - - .row > .off-3-small { - margin-left: 25%; - } - - .row > .col-4-small { - width: 33.33333%; - } - - .row > .off-4-small { - margin-left: 33.33333%; - } - - .row > .col-5-small { - width: 41.66667%; - } - - .row > .off-5-small { - margin-left: 41.66667%; - } - - .row > .col-6-small { - width: 50%; - } - - .row > .off-6-small { - margin-left: 50%; - } - - .row > .col-7-small { - width: 58.33333%; - } - - .row > .off-7-small { - margin-left: 58.33333%; - } - - .row > .col-8-small { - width: 66.66667%; - } - - .row > .off-8-small { - margin-left: 66.66667%; - } - - .row > .col-9-small { - width: 75%; - } - - .row > .off-9-small { - margin-left: 75%; - } - - .row > .col-10-small { - width: 83.33333%; - } - - .row > .off-10-small { - margin-left: 83.33333%; - } - - .row > .col-11-small { - width: 91.66667%; - } - - .row > .off-11-small { - margin-left: 91.66667%; - } - - .row > .col-12-small { - width: 100%; - } - - .row > .off-12-small { - margin-left: 100%; - } - - .row.gtr-0 { - margin-top: 0; - margin-left: 0em; - } - - .row.gtr-0 > * { - padding: 0 0 0 0em; - } - - .row.gtr-0.gtr-uniform { - margin-top: 0em; - } - - .row.gtr-0.gtr-uniform > * { - padding-top: 0em; - } - - .row.gtr-25 { - margin-top: 0; - margin-left: -0.25em; - } - - .row.gtr-25 > * { - padding: 0 0 0 0.25em; - } - - .row.gtr-25.gtr-uniform { - margin-top: -0.25em; - } - - .row.gtr-25.gtr-uniform > * { - padding-top: 0.25em; - } - - .row.gtr-50 { - margin-top: 0; - margin-left: -0.5em; - } - - .row.gtr-50 > * { - padding: 0 0 0 0.5em; - } - - .row.gtr-50.gtr-uniform { - margin-top: -0.5em; - } - - .row.gtr-50.gtr-uniform > * { - padding-top: 0.5em; - } - - .row { - margin-top: 0; - margin-left: -1em; - } - - .row > * { - padding: 0 0 0 1em; - } - - .row.gtr-uniform { - margin-top: -1em; - } - - .row.gtr-uniform > * { - padding-top: 1em; - } - - .row.gtr-150 { - margin-top: 0; - margin-left: -1.5em; - } - - .row.gtr-150 > * { - padding: 0 0 0 1.5em; - } - - .row.gtr-150.gtr-uniform { - margin-top: -1.5em; - } - - .row.gtr-150.gtr-uniform > * { - padding-top: 1.5em; - } - - .row.gtr-200 { - margin-top: 0; - margin-left: -2em; - } - - .row.gtr-200 > * { - padding: 0 0 0 2em; - } - - .row.gtr-200.gtr-uniform { - margin-top: -2em; - } - - .row.gtr-200.gtr-uniform > * { - padding-top: 2em; - } - - } - - @media screen and (max-width: 480px) { - - .row { - display: flex; - flex-wrap: wrap; - box-sizing: border-box; - align-items: stretch; - } - - .row > * { - box-sizing: border-box; - } - - .row.gtr-uniform > * > :last-child { - margin-bottom: 0; - } - - .row.aln-left { - justify-content: flex-start; - } - - .row.aln-center { - justify-content: center; - } - - .row.aln-right { - justify-content: flex-end; - } - - .row.aln-top { - align-items: flex-start; - } - - .row.aln-middle { - align-items: center; - } - - .row.aln-bottom { - align-items: flex-end; - } - - .row > .imp-xsmall { - order: -1; - } - - .row > .col-1-xsmall { - width: 8.33333%; - } - - .row > .off-1-xsmall { - margin-left: 8.33333%; - } - - .row > .col-2-xsmall { - width: 16.66667%; - } - - .row > .off-2-xsmall { - margin-left: 16.66667%; - } - - .row > .col-3-xsmall { - width: 25%; - } - - .row > .off-3-xsmall { - margin-left: 25%; - } - - .row > .col-4-xsmall { - width: 33.33333%; - } - - .row > .off-4-xsmall { - margin-left: 33.33333%; - } - - .row > .col-5-xsmall { - width: 41.66667%; - } - - .row > .off-5-xsmall { - margin-left: 41.66667%; - } - - .row > .col-6-xsmall { - width: 50%; - } - - .row > .off-6-xsmall { - margin-left: 50%; - } - - .row > .col-7-xsmall { - width: 58.33333%; - } - - .row > .off-7-xsmall { - margin-left: 58.33333%; - } - - .row > .col-8-xsmall { - width: 66.66667%; - } - - .row > .off-8-xsmall { - margin-left: 66.66667%; - } - - .row > .col-9-xsmall { - width: 75%; - } - - .row > .off-9-xsmall { - margin-left: 75%; - } - - .row > .col-10-xsmall { - width: 83.33333%; - } - - .row > .off-10-xsmall { - margin-left: 83.33333%; - } - - .row > .col-11-xsmall { - width: 91.66667%; - } - - .row > .off-11-xsmall { - margin-left: 91.66667%; - } - - .row > .col-12-xsmall { - width: 100%; - } - - .row > .off-12-xsmall { - margin-left: 100%; - } - - .row.gtr-0 { - margin-top: 0; - margin-left: 0em; - } - - .row.gtr-0 > * { - padding: 0 0 0 0em; - } - - .row.gtr-0.gtr-uniform { - margin-top: 0em; - } - - .row.gtr-0.gtr-uniform > * { - padding-top: 0em; - } - - .row.gtr-25 { - margin-top: 0; - margin-left: -0.3125em; - } - - .row.gtr-25 > * { - padding: 0 0 0 0.3125em; - } - - .row.gtr-25.gtr-uniform { - margin-top: -0.3125em; - } - - .row.gtr-25.gtr-uniform > * { - padding-top: 0.3125em; - } - - .row.gtr-50 { - margin-top: 0; - margin-left: -0.625em; - } - - .row.gtr-50 > * { - padding: 0 0 0 0.625em; - } - - .row.gtr-50.gtr-uniform { - margin-top: -0.625em; - } - - .row.gtr-50.gtr-uniform > * { - padding-top: 0.625em; - } - - .row { - margin-top: 0; - margin-left: -1.25em; - } - - .row > * { - padding: 0 0 0 1.25em; - } - - .row.gtr-uniform { - margin-top: -1.25em; - } - - .row.gtr-uniform > * { - padding-top: 1.25em; - } - - .row.gtr-150 { - margin-top: 0; - margin-left: -1.875em; - } - - .row.gtr-150 > * { - padding: 0 0 0 1.875em; - } - - .row.gtr-150.gtr-uniform { - margin-top: -1.875em; - } - - .row.gtr-150.gtr-uniform > * { - padding-top: 1.875em; - } - - .row.gtr-200 { - margin-top: 0; - margin-left: -2.5em; - } - - .row.gtr-200 > * { - padding: 0 0 0 2.5em; - } - - .row.gtr-200.gtr-uniform { - margin-top: -2.5em; - } - - .row.gtr-200.gtr-uniform > * { - padding-top: 2.5em; - } - - } - -/* Box */ - - .box { - border-radius: 8px; - border: solid; - margin-bottom: 2em; - padding: 1.5em; - } - - .box > :last-child, - .box > :last-child > :last-child, - .box > :last-child > :last-child > :last-child { - margin-bottom: 0; - } - - .box.alt { - border: 0; - border-radius: 0; - padding: 0; - } - - .box { - border-color: rgba(255, 255, 255, 0.35); - } - -/* Button */ - - input[type="submit"], - input[type="reset"], - input[type="button"], - button, - .button { - -moz-appearance: none; - -webkit-appearance: none; - -ms-appearance: none; - appearance: none; - -moz-transition: background-color 0.2s ease-in-out, color 0.2s ease-in-out; - -webkit-transition: background-color 0.2s ease-in-out, color 0.2s ease-in-out; - -ms-transition: background-color 0.2s ease-in-out, color 0.2s ease-in-out; - transition: background-color 0.2s ease-in-out, color 0.2s ease-in-out; - border-radius: 8px; - border: 0; - cursor: pointer; - display: inline-block; - font-weight: 300; - height: 2.75em; - line-height: 2.75em; - min-width: 9.25em; - padding: 0 1.5em; - text-align: center; - text-decoration: none; - white-space: nowrap; - } - - input[type="submit"].icon, - input[type="reset"].icon, - input[type="button"].icon, - button.icon, - .button.icon { - padding-left: 1.35em; - } - - input[type="submit"].icon:before, - input[type="reset"].icon:before, - input[type="button"].icon:before, - button.icon:before, - .button.icon:before { - margin-right: 0.5em; - } - - input[type="submit"].fit, - input[type="reset"].fit, - input[type="button"].fit, - button.fit, - .button.fit { - width: 100%; - } - - input[type="submit"].small, - input[type="reset"].small, - input[type="button"].small, - button.small, - .button.small { - font-size: 0.8em; - } - - input[type="submit"].large, - input[type="reset"].large, - input[type="button"].large, - button.large, - .button.large { - font-size: 1.35em; - } - - input[type="submit"].disabled, input[type="submit"]:disabled, - input[type="reset"].disabled, - input[type="reset"]:disabled, - input[type="button"].disabled, - input[type="button"]:disabled, - button.disabled, - button:disabled, - .button.disabled, - .button:disabled { - pointer-events: none; - opacity: 0.25; - } - - @media screen and (max-width: 736px) { - - input[type="submit"], - input[type="reset"], - input[type="button"], - button, - .button { - min-width: 0; - } - - } - - input[type="submit"], - input[type="reset"], - input[type="button"], - button, - .button { - background-color: transparent; - box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.35); - color: #ffffff !important; - } - - input[type="submit"]:hover, - input[type="reset"]:hover, - input[type="button"]:hover, - button:hover, - .button:hover { - background-color: rgba(255, 255, 255, 0.075); - } - - input[type="submit"]:active, - input[type="reset"]:active, - input[type="button"]:active, - button:active, - .button:active { - background-color: rgb(255, 255, 255); - } - - input[type="submit"].icon:before, - input[type="reset"].icon:before, - input[type="button"].icon:before, - button.icon:before, - .button.icon:before { - color: rgba(255, 255, 255, 0.5); - } - - input[type="submit"].primary, - input[type="reset"].primary, - input[type="button"].primary, - button.primary, - .button.primary { - background-color: #8cc9f0; - color: #ffffff !important; - box-shadow: none; - } - - input[type="submit"].primary:hover, - input[type="reset"].primary:hover, - input[type="button"].primary:hover, - button.primary:hover, - .button.primary:hover { - background-color: #9acff2; - } - - input[type="submit"].primary:active, - input[type="reset"].primary:active, - input[type="button"].primary:active, - button.primary:active, - .button.primary:active { - background-color: #7ec3ee; - } - - input[type="submit"].primary.icon:before, - input[type="reset"].primary.icon:before, - input[type="button"].primary.icon:before, - button.primary.icon:before, - .button.primary.icon:before { - color: #ffffff !important; - } - -/* Form */ - - form { - margin: 0 0 2em 0; - } - - label { - display: block; - font-size: 0.9em; - font-weight: 400; - margin: 0 0 1em 0; - } - - input[type="text"], - input[type="password"], - input[type="email"], - select, - textarea { - -moz-appearance: none; - -webkit-appearance: none; - -ms-appearance: none; - appearance: none; - border-radius: 8px; - border: solid 1px; - color: inherit; - display: block; - outline: 0; - padding: 0 1em; - text-decoration: none; - width: 100%; - } - - input[type="text"]:invalid, - input[type="password"]:invalid, - input[type="email"]:invalid, - select:invalid, - textarea:invalid { - box-shadow: none; - } - - select { - background-size: 1.25rem; - background-repeat: no-repeat; - background-position: calc(100% - 1rem) center; - height: 2.75em; - padding-right: 2.75em; - text-overflow: ellipsis; - } - - select:focus::-ms-value { - background-color: transparent; - } - - select::-ms-expand { - display: none; - } - - input[type="text"], - input[type="password"], - input[type="email"], - select { - height: 2.75em; - } - - textarea { - padding: 0.75em 1em; - } - - input[type="checkbox"], - input[type="radio"] { - -moz-appearance: none; - -webkit-appearance: none; - -ms-appearance: none; - appearance: none; - display: block; - float: left; - margin-right: -2em; - opacity: 0; - width: 1em; - z-index: -1; - } - - input[type="checkbox"] + label, - input[type="radio"] + label { - text-decoration: none; - cursor: pointer; - display: inline-block; - font-size: 1em; - font-weight: 300; - padding-left: 2.4em; - padding-right: 0.75em; - position: relative; - } - - input[type="checkbox"] + label:before, - input[type="radio"] + label:before { - -moz-osx-font-smoothing: grayscale; - -webkit-font-smoothing: antialiased; - display: inline-block; - font-style: normal; - font-variant: normal; - text-rendering: auto; - line-height: 1; - text-transform: none !important; - font-family: 'Font Awesome 5 Free'; - font-weight: 900; - } - - input[type="checkbox"] + label:before, - input[type="radio"] + label:before { - border-radius: 8px; - border: solid 1px; - content: ''; - display: inline-block; - font-size: 0.8em; - height: 2.0625em; - left: 0; - line-height: 2.0625em; - position: absolute; - text-align: center; - top: 0; - width: 2.0625em; - } - - input[type="checkbox"]:checked + label:before, - input[type="radio"]:checked + label:before { - content: '\f00c'; - } - - input[type="checkbox"] + label:before { - border-radius: 8px; - } - - input[type="radio"] + label:before { - border-radius: 100%; - } - - ::-webkit-input-placeholder { - opacity: 1.0; - } - - :-moz-placeholder { - opacity: 1.0; - } - - ::-moz-placeholder { - opacity: 1.0; - } - - :-ms-input-placeholder { - opacity: 1.0; - } - - label { - color: #ffffff; - } - - input[type="text"], - input[type="password"], - input[type="email"], - select, - textarea { - background-color: rgba(255, 255, 255, 0.075); - border-color: rgba(255, 255, 255, 0.35); - } - - input[type="text"]:focus, - input[type="password"]:focus, - input[type="email"]:focus, - select:focus, - textarea:focus { - border-color: #8cc9f0; - box-shadow: 0 0 0 1px #8cc9f0; - } - - select { - background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='40' height='40' preserveAspectRatio='none' viewBox='0 0 40 40'%3E%3Cpath d='M9.4,12.3l10.4,10.4l10.4-10.4c0.2-0.2,0.5-0.4,0.9-0.4c0.3,0,0.6,0.1,0.9,0.4l3.3,3.3c0.2,0.2,0.4,0.5,0.4,0.9 c0,0.4-0.1,0.6-0.4,0.9L20.7,31.9c-0.2,0.2-0.5,0.4-0.9,0.4c-0.3,0-0.6-0.1-0.9-0.4L4.3,17.3c-0.2-0.2-0.4-0.5-0.4-0.9 c0-0.4,0.1-0.6,0.4-0.9l3.3-3.3c0.2-0.2,0.5-0.4,0.9-0.4S9.1,12.1,9.4,12.3z' fill='rgba(255, 255, 255, 0.35)' /%3E%3C/svg%3E"); - } - - select option { - color: #ffffff; - background: #935d8c; - } - - input[type="checkbox"] + label, - input[type="radio"] + label { - color: rgba(255, 255, 255, 0.65); - } - - input[type="checkbox"] + label:before, - input[type="radio"] + label:before { - background: rgba(255, 255, 255, 0.075); - border-color: rgba(255, 255, 255, 0.35); - } - - input[type="checkbox"]:checked + label:before, - input[type="radio"]:checked + label:before { - background-color: #ffffff; - border-color: #ffffff; - color: #935d8c; - } - - input[type="checkbox"]:focus + label:before, - input[type="radio"]:focus + label:before { - border-color: #8cc9f0; - box-shadow: 0 0 0 1px #8cc9f0; - } - - ::-webkit-input-placeholder { - color: rgba(255, 255, 255, 0.5) !important; - } - - :-moz-placeholder { - color: rgba(255, 255, 255, 0.5) !important; - } - - ::-moz-placeholder { - color: rgba(255, 255, 255, 0.5) !important; - } - - :-ms-input-placeholder { - color: rgba(255, 255, 255, 0.5) !important; - } - - .formerize-placeholder { - color: rgba(255, 255, 255, 0.5) !important; - } -/* Icon */ - -.icon { - text-decoration: none; - -moz-transition: background-color 0.2s ease-in-out, color 0.2s ease-in-out; - -webkit-transition: background-color 0.2s ease-in-out, color 0.2s ease-in-out; - -ms-transition: background-color 0.2s ease-in-out, color 0.2s ease-in-out; - transition: background-color 0.2s ease-in-out, color 0.2s ease-in-out; - border-bottom: none; - position: relative; -} - -.icon:before { - -moz-osx-font-smoothing: grayscale; - -webkit-font-smoothing: antialiased; - display: inline-block; - font-style: normal; - font-variant: normal; - text-rendering: auto; - line-height: 1; - text-transform: none !important; - font-family: 'Font Awesome 5 Free'; - font-weight: 400; -} - -.icon > .label { - display: none; -} - -.icon:before { - line-height: solid; -} - -.icon.solid:before { - font-weight: 900; -} - -.icon.brands:before { - font-family: 'Font Awesome 5 Brands'; -} - -.icon.major { - border: solid 1px; - display: inline-block; - border-radius: 100%; - padding: 0.65em; - margin: 0 0 2em 0; - cursor: default; -} - -.icon.major:before { - display: inline-block; - font-size: 6.25rem; - width: 2.25em; - height: 2.25em; - line-height: 2.2em; - border-radius: 100%; - border: solid 1px; - text-align: center; -} - -.icon.alt { - display: inline-block; - border: solid 1px; - border-radius: 100%; -} - -.icon.alt:before { - display: block; - font-size: 1.25em; - width: 2em; - height: 2em; - text-align: center; - line-height: 2em; -} - -.icon.alt img { - display: block; - width: 2.5em; - height: 2.5em; - text-align: center; - border-radius: 100%; - padding: 0.5em; -} - -.icon.style1 { - color: #efa8b0; -} - -.icon.style2 { - color: #c79cc8; -} - -.icon.style3 { - color: #a89cc8; -} - -.icon.style4 { - color: #9bb2e1; -} - -.icon.style5 { - color: #8cc9f0; -} - -@media screen and (max-width: 1680px) { - - .icon.major:before { - font-size: 5.5rem; - } - -} - -@media screen and (max-width: 1280px) { - - .icon.major:before { - font-size: 4.75rem; - } - -} - -@media screen and (max-width: 736px) { - - .icon.major { - margin: 0 0 1.5em 0; - padding: 0.35em; - } - - .icon.major:before { - font-size: 3.5rem; - } - -} - -.icon.major { - border-color: rgba(255, 255, 255, 0.35); -} - -.icon.major:before { - border-color: rgba(255, 255, 255, 0.35); -} - -.icon.alt { - border-color: rgba(255, 255, 255, 0.35); - color: #ffffff; -} - -.icon.alt:hover { - background-color: rgba(255, 255, 255, 0.075); -} - -.icon.alt:active { - background-color: rgba(255, 255, 255, 0.2); -} - - -/* Image */ - - .image { - border-radius: 8px; - border: 0; - display: inline-block; - position: relative; - } - - .image img { - border-radius: 8px; - display: block; - } - - .image.left, .image.right { - max-width: 40%; - } - - .image.left img, .image.right img { - width: 100%; - } - - .image.left { - float: left; - margin: 0 1.5em 1em 0; - top: 0.25em; - } - - .image.right { - float: right; - margin: 0 0 1em 1.5em; - top: 0.25em; - } - - .image.fit { - display: block; - margin: 0 0 2em 0; - width: 100%; - } - - .image.fit img { - width: 100%; - } - - .image.main { - display: block; - margin: 0 0 3em 0; - width: 100%; - } - - .image.main img { - width: 100%; - } - -/* List */ - - ol { - list-style: decimal; - margin: 0 0 2em 0; - padding-left: 1.25em; - } - - ol li { - padding-left: 0.25em; - } - - ul { - list-style: disc; - margin: 0 0 2em 0; - padding-left: 1em; - } - - ul li { - padding-left: 0.5em; - } - - ul.alt { - list-style: none; - padding-left: 0; - } - - ul.alt li { - border-top: solid 1px; - padding: 0.5em 0; - } - - ul.alt li:first-child { - border-top: 0; - padding-top: 0; - } - - dl { - margin: 0 0 2em 0; - } - - dl dt { - display: block; - font-weight: 400; - margin: 0 0 1em 0; - } - - dl dd { - margin-left: 2em; - } - - dl.alt dt { - display: block; - width: 3em; - margin: 0; - clear: left; - float: left; - } - - dl.alt dd { - margin: 0 0 0.85em 5.5em; - } - - dl.alt:after { - content: ''; - display: block; - clear: both; - } - - ul.alt li { - border-top-color: rgba(255, 255, 255, 0.35); - } - - dl dt { - color: #ffffff; - } - -/* Actions */ - - ul.actions { - display: -moz-flex; - display: -webkit-flex; - display: -ms-flex; - display: flex; - cursor: default; - list-style: none; - margin-left: -1em; - padding-left: 0; - } - - ul.actions li { - padding: 0 0 0 1em; - vertical-align: middle; - } - - ul.actions.special { - -moz-justify-content: center; - -webkit-justify-content: center; - -ms-justify-content: center; - justify-content: center; - width: 100%; - margin-left: 0; - } - - ul.actions.special li:first-child { - padding-left: 0; - } - - ul.actions.stacked { - -moz-flex-direction: column; - -webkit-flex-direction: column; - -ms-flex-direction: column; - flex-direction: column; - margin-left: 0; - } - - ul.actions.stacked li { - padding: 1.3em 0 0 0; - } - - ul.actions.stacked li:first-child { - padding-top: 0; - } - - ul.actions.fit { - width: calc(100% + 1em); - } - - ul.actions.fit li { - -moz-flex-grow: 1; - -webkit-flex-grow: 1; - -ms-flex-grow: 1; - flex-grow: 1; - -moz-flex-shrink: 1; - -webkit-flex-shrink: 1; - -ms-flex-shrink: 1; - flex-shrink: 1; - width: 100%; - } - - ul.actions.fit li > * { - width: 100%; - } - - ul.actions.fit.stacked { - width: 100%; - } - - @media screen and (max-width: 480px) { - - ul.actions:not(.fixed) { - -moz-flex-direction: column; - -webkit-flex-direction: column; - -ms-flex-direction: column; - flex-direction: column; - margin-left: 0; - width: 100% !important; - } - - ul.actions:not(.fixed) li { - -moz-flex-grow: 1; - -webkit-flex-grow: 1; - -ms-flex-grow: 1; - flex-grow: 1; - -moz-flex-shrink: 1; - -webkit-flex-shrink: 1; - -ms-flex-shrink: 1; - flex-shrink: 1; - padding: 1em 0 0 0; - text-align: center; - width: 100%; - } - - ul.actions:not(.fixed) li > * { - width: 100%; - } - - ul.actions:not(.fixed) li:first-child { - padding-top: 0; - } - - ul.actions:not(.fixed) li input[type="submit"], - ul.actions:not(.fixed) li input[type="reset"], - ul.actions:not(.fixed) li input[type="button"], - ul.actions:not(.fixed) li button, - ul.actions:not(.fixed) li .button { - width: 100%; - } - - ul.actions:not(.fixed) li input[type="submit"].icon:before, - ul.actions:not(.fixed) li input[type="reset"].icon:before, - ul.actions:not(.fixed) li input[type="button"].icon:before, - ul.actions:not(.fixed) li button.icon:before, - ul.actions:not(.fixed) li .button.icon:before { - margin-left: -0.5rem; - } - - } - -/* Icons */ - - ul.icons { - cursor: default; - list-style: none; - padding-left: 0; - } - - ul.icons li { - display: inline-block; - padding: 0 0.65em 0 0; - } - - ul.icons li:last-child { - padding-right: 0 !important; - } - -/* Section/Article */ - - section.special, article.special { - text-align: center; - } - - header.major { - margin-bottom: 3em; - } - - header.major h2 { - font-size: 2em; - } - - header.major h2:after { - display: block; - content: ''; - width: 3.25em; - height: 2px; - margin: 0.7em 0 1em 0; - border-radius: 2px; - } - - section.special header.major h2:after, article.special header.major h2:after { - margin-left: auto; - margin-right: auto; - } - - header.major p { - letter-spacing: -0.025em; - } - - header.major.special { - text-align: center; - } - - header.major.special h2:after { - margin-left: auto; - margin-right: auto; - } - - footer.major { - margin-top: 3em; - } - - @media screen and (max-width: 736px) { - - header.major { - margin-bottom: 0; - } - - header.major h2 { - font-size: 1.5em; - } - - header.major p { - font-size: 1em; - letter-spacing: 0; - } - - header.major p br { - display: none; - } - - footer.major { - margin-top: 0; - } - - } - - header.major h2:after { - background-color: rgba(255, 255, 255, 0.35); - } - -/* Table */ - - .table-wrapper { - -webkit-overflow-scrolling: touch; - overflow-x: auto; - } - - table { - margin: 0 0 2em 0; - width: 100%; - } - - table tbody tr { - border: solid 1px; - border-left: 0; - border-right: 0; - } - - table td { - padding: 0.75em 0.75em; - } - - table th { - font-size: 0.9em; - font-weight: 400; - padding: 0 0.75em 0.75em 0.75em; - text-align: left; - } - - table thead { - border-bottom: solid 2px; - } - - table tfoot { - border-top: solid 2px; - } - - table.alt { - border-collapse: separate; - } - - table.alt tbody tr td { - border: solid 1px; - border-left-width: 0; - border-top-width: 0; - } - - table.alt tbody tr td:first-child { - border-left-width: 1px; - } - - table.alt tbody tr:first-child td { - border-top-width: 1px; - } - - table.alt thead { - border-bottom: 0; - } - - table.alt tfoot { - border-top: 0; - } - - table tbody tr { - border-color: rgba(255, 255, 255, 0.35); - } - - table tbody tr:nth-child(2n + 1) { - background-color: rgba(255, 255, 255, 0.075); - } - - table th { - color: #ffffff; - } - - table thead { - border-bottom-color: rgba(255, 255, 255, 0.35); - } - - table tfoot { - border-top-color: rgba(255, 255, 255, 0.35); - } - - table.alt tbody tr td { - border-color: rgba(255, 255, 255, 0.35); - } - -/* Features */ - - .features { - display: -moz-flex; - display: -webkit-flex; - display: -ms-flex; - display: flex; - -moz-flex-wrap: wrap; - -webkit-flex-wrap: wrap; - -ms-flex-wrap: wrap; - flex-wrap: wrap; - -moz-justify-content: center; - -webkit-justify-content: center; - -ms-justify-content: center; - justify-content: center; - width: calc(100% + 2em); - margin: 0 0 3em -2em; - padding: 0; - list-style: none; - } - - .features li { - width: calc(33.33333% - 2em); - margin-left: 2em; - margin-top: 3em; - padding: 0; - } - - .features li:nth-child(1), .features li:nth-child(2), .features li:nth-child(3) { - margin-top: 0; - } - - .features li > :last-child { - margin-bottom: 0; - } - - @media screen and (max-width: 980px) { - - .features li { - width: calc(50% - 2em); - } - - .features li:nth-child(3) { - margin-top: 3em; - } - - } - - @media screen and (max-width: 736px) { - - .features { - width: 100%; - margin: 0 0 2em 0; - } - - .features li { - width: 100%; - margin-left: 0; - margin-top: 2em; - } - - .features li:nth-child(2), .features li:nth-child(3) { - margin-top: 2em; - } - - } - -/* Statistics */ - - .statistics { - display: -moz-flex; - display: -webkit-flex; - display: -ms-flex; - display: flex; - width: 100%; - margin: 0 0 3em 0; - padding: 0; - list-style: none; - cursor: default; - } - - .statistics li { - -moz-flex: 1; - -webkit-flex: 1; - -ms-flex: 1; - flex: 1; - padding: 1.5em; - color: #ffffff; - text-align: center; - } - - .statistics li.style1 { - background-color: #efa8b0; - } - - .statistics li.style2 { - background-color: #c79cc8; - } - - .statistics li.style3 { - background-color: #a89cc8; - } - - .statistics li.style4 { - background-color: #9bb2e1; - } - - .statistics li.style5 { - background-color: #8cc9f0; - } - - .statistics li strong, .statistics li b { - display: block; - font-size: 2em; - line-height: 1.1; - color: inherit !important; - font-weight: 300; - letter-spacing: -0.025em; - } - - .statistics li:first-child { - border-top-left-radius: 8px; - border-bottom-left-radius: 8px; - } - - .statistics li:last-child { - border-top-right-radius: 8px; - border-bottom-right-radius: 8px; - } - - .statistics li .icon { - display: inline-block; - } - - .statistics li .icon:before { - font-size: 2.75rem; - line-height: 1.3; - } - - @media screen and (max-width: 980px) { - - .statistics li strong, .statistics li b { - font-size: 1.5em; - } - - } - - @media screen and (max-width: 736px) { - - .statistics { - display: block; - width: 20em; - max-width: 100%; - margin: 0 auto 2em auto; - } - - .statistics li:first-child { - border-bottom-left-radius: 0; - border-top-right-radius: 8px; - } - - .statistics li:last-child { - border-top-right-radius: 0; - border-bottom-left-radius: 8px; - } - - .statistics li .icon:before { - font-size: 3.75rem; - } - - .statistics li strong, .statistics li b { - font-size: 2.5em; - } - - } - -/* Spotlight */ - - .spotlight { - display: -moz-flex; - display: -webkit-flex; - display: -ms-flex; - display: flex; - -moz-align-items: center; - -webkit-align-items: center; - -ms-align-items: center; - align-items: center; - margin: 0 0 2em 0; - } - - .spotlight .content { - -moz-flex: 1; - -webkit-flex: 1; - -ms-flex: 1; - flex: 1; - } - - .spotlight .content > :last-child { - margin-bottom: 0; - } - - .spotlight .content header.major { - margin: 0 0 2em 0; - } - - .spotlight .image { - display: inline-block; - margin-left: 4em; - padding: 0.65em; - border-radius: 100%; - border: solid 1px; - } - - .spotlight .image img { - display: block; - border-radius: 100%; - width: 16em; - } - - @media screen and (max-width: 980px) { - - .spotlight { - -moz-flex-direction: column-reverse; - -webkit-flex-direction: column-reverse; - -ms-flex-direction: column-reverse; - flex-direction: column-reverse; - text-align: center; - } - - .spotlight .content { - -moz-flex: 0 1 auto; - -webkit-flex: 0 1 auto; - -ms-flex: 0 1 auto; - flex: 0 1 auto; - width: 100%; - } - - .spotlight .content header.major h2:after { - margin-left: auto; - margin-right: auto; - } - - .spotlight .content .actions { - -moz-justify-content: center; - -webkit-justify-content: center; - -ms-justify-content: center; - justify-content: center; - width: calc(100% + 1em); - } - - .spotlight .image { - -moz-flex: 0 1 auto; - -webkit-flex: 0 1 auto; - -ms-flex: 0 1 auto; - flex: 0 1 auto; - margin-left: 0; - margin-bottom: 2em; - } - - } - - @media screen and (max-width: 736px) { - - .spotlight .image { - padding: 0.35em; - } - - .spotlight .image img { - width: 12em; - } - - } - - .spotlight .image { - border-color: rgba(255, 255, 255, 0.35); - } - -/* Header */ - - #header { - padding: 5em 5em 1em 5em ; - text-align: center; - } - - #header h1 { - margin: 0 0 0.25em 0; - } - - #header p { - font-size: 1.25em; - letter-spacing: -0.025em; - } - - #header.alt { - padding: 7em 5em 4em 5em ; - } - - #header.alt h1 { - font-size: 3.25em; - } - - #header.alt > * { - -moz-transition: opacity 3s ease; - -webkit-transition: opacity 3s ease; - -ms-transition: opacity 3s ease; - transition: opacity 3s ease; - -moz-transition-delay: 0.5s; - -webkit-transition-delay: 0.5s; - -ms-transition-delay: 0.5s; - transition-delay: 0.5s; - opacity: 1; - } - - #header.alt .logo { - -moz-transition: opacity 1.25s ease, -moz-transform 0.5s ease; - -webkit-transition: opacity 1.25s ease, -webkit-transform 0.5s ease; - -ms-transition: opacity 1.25s ease, -ms-transform 0.5s ease; - transition: opacity 1.25s ease, transform 0.5s ease; - -moz-transition-delay: 0s; - -webkit-transition-delay: 0s; - -ms-transition-delay: 0s; - transition-delay: 0s; - display: block; - margin: 0 0 1.5em 0; - } - - #header.alt .logo img { - display: block; - margin: 0 auto; - max-width: 75%; - } - - @media screen and (max-width: 1280px) { - - #header { - padding: 4em 4em 0.1em 4em ; - } - - #header.alt { - padding: 6em 4em 3em 4em ; - } - - } - - @media screen and (max-width: 980px) { - - #header { - padding: 4em 3em 0.1em 3em ; - } - - #header.alt { - padding: 5em 3em 2em 3em ; - } - - } - - @media screen and (max-width: 736px) { - - #header { - padding: 3em 2em 0.1em 2em ; - } - - #header p { - font-size: 1em; - letter-spacing: 0; - } - - #header p br { - display: none; - } - - #header.alt { - padding: 4em 2em 1em 2em ; - } - - #header.alt h1 { - font-size: 2.5em; - } - - } - - @media screen and (max-width: 480px) { - - #header { - padding: 3em 1.5em 0.1em 1.5em ; - } - - #header.alt { - padding: 4em 1.5em 1em 1.5em ; - } - - } - - @media screen and (max-width: 360px) { - - #header { - padding: 2.5em 1em 0.1em 1em ; - } - - #header.alt { - padding: 3.5em 1em 0.5em 1em ; - } - - } - - body.is-preload #header.alt > * { - opacity: 0; - } - - body.is-preload #header.alt .logo { - -moz-transform: scale(0.8) rotate(-30deg); - -webkit-transform: scale(0.8) rotate(-30deg); - -ms-transform: scale(0.8) rotate(-30deg); - transform: scale(0.8) rotate(-30deg); - } - -/* Nav */ - - #nav { - -moz-transition: background-color 0.2s ease, border-top-left-radius 0.2s ease, border-top-right-radius 0.2s ease, padding 0.2s ease; - -webkit-transition: background-color 0.2s ease, border-top-left-radius 0.2s ease, border-top-right-radius 0.2s ease, padding 0.2s ease; - -ms-transition: background-color 0.2s ease, border-top-left-radius 0.2s ease, border-top-right-radius 0.2s ease, padding 0.2s ease; - transition: background-color 0.2s ease, border-top-left-radius 0.2s ease, border-top-right-radius 0.2s ease, padding 0.2s ease; - background-color: #0a0a0a; - color: #fafafa; - position: absolute; - width: 64em; - max-width: calc(100% - 4em); - padding: 1em; - background-color: #0a0a0a; - border-top-left-radius: 0.25em; - border-top-right-radius: 0.25em; - cursor: default; - text-align: center; - } - - #nav input, #nav select, #nav textarea { - color: #fafafa; - } - - #nav a:hover { - color: #ffffff; - } - - #nav strong, #nav b { - color: #0a0a0a; - } - - #nav h1, #nav h2, #nav h3, #nav h4, #nav h5, #nav h6 { - color: #ffffff; - } - - #nav blockquote { - border-left-color: #0a0a0a; - } - - #nav code { - background: #0a0a0a; - border-color: #0a0a0a; - } - - #nav hr { - border-bottom-color: #0a0a0a; - } - - #nav + #main { - padding-top: 4.25em; - } - - #nav ul { - margin: 0; - padding: 0; - list-style: none; - } - - #nav ul li { - -moz-transition: margin 0.2s ease; - -webkit-transition: margin 0.2s ease; - -ms-transition: margin 0.2s ease; - transition: margin 0.2s ease; - display: inline-block; - margin: 0 0.35em; - padding: 0; - vertical-align: middle; - } - - #nav ul li a { - -moz-transition: font-size 0.2s ease; - -webkit-transition: font-size 0.2s ease; - -ms-transition: font-size 0.2s ease; - transition: font-size 0.2s ease; - display: inline-block; - height: 2.25em; - line-height: 2.25em; - padding: 0 1.25em; - border: 0; - border-radius: 8px; - box-shadow: inset 0 0 0 1px transparent; - } - - #nav ul li a:hover { - background-color: #080808; - } - - #nav ul li a.active { - background-color: #000000; - box-shadow: none; - } - - #nav.alt { - position: fixed; - top: 0; - padding: 0.5em 1em; - background-color: #0a0a0a; - border-top-left-radius: 0; - border-top-right-radius: 0; - z-index: 10000; - } - - #nav.alt ul li { - margin: 0 0.175em; - } - - #nav.alt ul li a { - font-size: 0.9em; - } - - @media screen and (max-width: 736px) { - - #nav { - display: none; - } - - #nav + #main { - padding-top: 0; - } - - } - -/* Main */ - - #main { - background-color: #0a0a0a; - color: #fafafa; - border-radius: 0.25em; - } - - #main input, #main select, #main textarea { - color: #ffffff; - } - - #main a:hover { - color: #ffffff; - } - - #main strong, #main b { - color: #ffffff; - } - - #main h1, #main h2, #main h3, #main h4, #main h5, #main h6 { - color: #ffffff; - } - - #main blockquote { - border-left-color: #dddddd; - } - - #main code { - background: rgba(222, 222, 222, 0.25); - border-color: #dddddd; - } - - #main hr { - border-bottom-color: #dddddd; - } - - #main a,p { - color: #fafafa; - } - - #main .box { - border-color: #dddddd; - } - - #main input[type="submit"], - #main input[type="reset"], - #main input[type="button"], - #main button, - #main .button { - background-color: transparent; - box-shadow: inset 0 0 0 1px #dddddd; - color: #ffffff !important; - } - - #main input[type="submit"]:hover, - #main input[type="reset"]:hover, - #main input[type="button"]:hover, - #main button:hover, - #main .button:hover { - background-color: rgba(222, 222, 222, 0.25); - } - - #main input[type="submit"]:active, - #main input[type="reset"]:active, - #main input[type="button"]:active, - #main button:active, - #main .button:active { - background-color: rgba(222, 222, 222, 0.5); - } - - #main input[type="submit"].icon:before, - #main input[type="reset"].icon:before, - #main input[type="button"].icon:before, - #main button.icon:before, - #main .button.icon:before { - color: rgba(99, 99, 99, 0.25); - } - - #main input[type="submit"].primary, - #main input[type="reset"].primary, - #main input[type="button"].primary, - #main button.primary, - #main .button.primary { - background-color: #1f1f1f; - color: #ffffff !important; - box-shadow: none; - } - - #main input[type="submit"].primary:hover, - #main input[type="reset"].primary:hover, - #main input[type="button"].primary:hover, - #main button.primary:hover, - #main .button.primary:hover { - background-color: #000000; - } - - #main input[type="submit"].primary:active, - #main input[type="reset"].primary:active, - #main input[type="button"].primary:active, - #main button.primary:active, - #main .button.primary:active { - background-color: #080808; - } - - #main input[type="submit"].primary.icon:before, - #main input[type="reset"].primary.icon:before, - #main input[type="button"].primary.icon:before, - #main button.primary.icon:before, - #main .button.primary.icon:before { - color: #ffffff !important; - } - - #main label { - color: #636363; - } - - #main input[type="text"], - #main input[type="password"], - #main input[type="email"], - #main select, - #main textarea { - background-color: rgba(222, 222, 222, 0.25); - border-color: #dddddd; - } - - #main input[type="text"]:focus, - #main input[type="password"]:focus, - #main input[type="email"]:focus, - #main select:focus, - #main textarea:focus { - border-color: #8cc9f0; - box-shadow: 0 0 0 1px #8cc9f0; - } - - #main select { - background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='40' height='40' preserveAspectRatio='none' viewBox='0 0 40 40'%3E%3Cpath d='M9.4,12.3l10.4,10.4l10.4-10.4c0.2-0.2,0.5-0.4,0.9-0.4c0.3,0,0.6,0.1,0.9,0.4l3.3,3.3c0.2,0.2,0.4,0.5,0.4,0.9 c0,0.4-0.1,0.6-0.4,0.9L20.7,31.9c-0.2,0.2-0.5,0.4-0.9,0.4c-0.3,0-0.6-0.1-0.9-0.4L4.3,17.3c-0.2-0.2-0.4-0.5-0.4-0.9 c0-0.4,0.1-0.6,0.4-0.9l3.3-3.3c0.2-0.2,0.5-0.4,0.9-0.4S9.1,12.1,9.4,12.3z' fill='%23dddddd' /%3E%3C/svg%3E"); - } - - #main select option { - color: #636363; - background: #ffffff; - } - - #main input[type="checkbox"] + label, - #main input[type="radio"] + label { - color: #636363; - } - - #main input[type="checkbox"] + label:before, - #main input[type="radio"] + label:before { - background: rgba(222, 222, 222, 0.25); - border-color: #dddddd; - } - - #main input[type="checkbox"]:checked + label:before, - #main input[type="radio"]:checked + label:before { - background-color: #636363; - border-color: #636363; - color: #ffffff; - } - - #main input[type="checkbox"]:focus + label:before, - #main input[type="radio"]:focus + label:before { - border-color: #8cc9f0; - box-shadow: 0 0 0 1px #8cc9f0; - } - - #main ::-webkit-input-placeholder { - color: rgba(99, 99, 99, 0.25) !important; - } - - #main :-moz-placeholder { - color: rgba(99, 99, 99, 0.25) !important; - } - - #main ::-moz-placeholder { - color: rgba(99, 99, 99, 0.25) !important; - } - - #main :-ms-input-placeholder { - color: rgba(99, 99, 99, 0.25) !important; - } - - #main .formerize-placeholder { - color: rgba(99, 99, 99, 0.25) !important; - } - - #main .icon.major { - border-color: #dddddd; - } - - #main .icon.major:before { - border-color: #dddddd; - } - - #main .icon.alt { - border-color: #dddddd; - color: #636363; - } - - #main .icon.alt:hover { - background-color: rgba(222, 222, 222, 0.25); - } - - #main .icon.alt:active { - background-color: rgba(222, 222, 222, 0.5); - } - - #main ul.alt li { - border-top-color: #dddddd; - } - - #main dl dt { - color: #636363; - } - - #main header.major h2:after { - background-color: #dddddd; - background-image: -moz-linear-gradient(90deg, #efa8b0, #a89cc8, #8cc9f0); - background-image: -webkit-linear-gradient(90deg, #efa8b0, #a89cc8, #8cc9f0); - background-image: -ms-linear-gradient(90deg, #efa8b0, #a89cc8, #8cc9f0); - background-image: linear-gradient(90deg, #efa8b0, #a89cc8, #8cc9f0); - } - - #main table tbody tr { - border-color: #dddddd; - } - - #main table tbody tr:nth-child(2n + 1) { - background-color: rgba(222, 222, 222, 0.25); - } - - #main table th { - color: #636363; - } - - #main table thead { - border-bottom-color: #dddddd; - } - - #main table tfoot { - border-top-color: #dddddd; - } - - #main table.alt tbody tr td { - border-color: #dddddd; - } - - #main .spotlight .image { - border-color: #dddddd; - } - - #main > .main { - padding: 5em 5em 3em 5em ; - border-top: solid 1px #dddddd; - } - - #main > .main:first-child { - border-top: 0; - } - - #main > .main > .image.main:first-child { - margin: -5em 0 5em -5em; - width: calc(100% + 10em); - border-top-right-radius: 0.25em; - border-top-left-radius: 0.25em; - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; - } - - #main > .main > .image.main:first-child img { - border-top-right-radius: 0.25em; - border-top-left-radius: 0.25em; - border-bottom-right-radius: 0; - border-bottom-left-radius: 0; - } - - @media screen and (max-width: 1280px) { - - #main > .main { - padding: 4em 4em 2em 4em ; - } - - #main > .main > .image.main:first-child { - margin: -4em 0 4em -4em; - width: calc(100% + 8em); - } - - } - - @media screen and (max-width: 980px) { - - #main > .main { - padding: 4em 3em 2em 3em ; - } - - #main > .main > .image.main:first-child { - margin: -4em 0 4em -3em; - width: calc(100% + 6em); - } - - } - - @media screen and (max-width: 736px) { - - #main > .main { - padding: 3em 2em 1em 2em ; - } - - #main > .main > .image.main:first-child { - margin: -3em 0 2em -2em; - width: calc(100% + 4em); - } - - } - - @media screen and (max-width: 480px) { - - #main > .main { - padding: 3em 1.5em 1em 1.5em ; - } - - #main > .main > .image.main:first-child { - margin: -3em 0 1.5em -1.5em; - width: calc(100% + 3em); - } - - } - - @media screen and (max-width: 360px) { - - #main { - border-radius: 0; - } - - #main > .main { - padding: 2.5em 1em 0.5em 1em ; - } - - #main > .main > .image.main:first-child { - margin: -2.5em 0 1.5em -1em; - width: calc(100% + 2em); - border-radius: 0; - } - - #main > .main > .image.main:first-child img { - border-radius: 0; - } - - } - -/* Footer */ - - #footer { - display: -moz-flex; - display: -webkit-flex; - display: -ms-flex; - display: flex; - -moz-flex-wrap: wrap; - -webkit-flex-wrap: wrap; - -ms-flex-wrap: wrap; - flex-wrap: wrap; - padding: 5em 5em 3em 5em ; - width: calc(100% + 2em); - margin: 0 0 3em -2em; - } - - #footer > * { - width: calc(50% - 2em); - margin-left: 2em; - } - - #footer .copyright { - width: 100%; - margin: 2.5em 0 2em 0; - font-size: 0.8em; - text-align: center; - } - - @media screen and (max-width: 1280px) { - - #footer { - padding: 4em 4em 2em 4em ; - } - - } - - @media screen and (max-width: 980px) { - - #footer { - padding: 4em 3em 2em 3em ; - display: block; - margin: 0 0 3em 0; - width: 100%; - } - - #footer > * { - width: 100%; - margin-left: 0; - margin-bottom: 3em; - } - - #footer .copyright { - text-align: left; - } - - } - - @media screen and (max-width: 736px) { - - #footer { - padding: 3em 2em 1em 2em ; - } - - } - - @media screen and (max-width: 480px) { - - #footer { - padding: 3em 1.5em 1em 1.5em ; - } - - } - - @media screen and (max-width: 480px) { - - #footer { - padding: 2.5em 1em 0.5em 1em ; - } - - } - -/* Wrapper */ - - #wrapper { - width: 64em; - max-width: calc(100% - 4em); - margin: 0 auto; - } - - @media screen and (max-width: 480px) { - - #wrapper { - max-width: calc(100% - 2em); - } - - } - - @media screen and (max-width: 360px) { - - #wrapper { - max-width: 100%; - } - - } - - +@import url(fontawesome-all.min.css); + +/* @import 'https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400'; */ +@import 'assets/webfonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwkxduz8A.woff2'; /*THIS NEEDS TO WORK*/ +@import 'assets/webfonts/6xKydSBYKcSV-LCoeQqfX1RYOo3ik4zwlxdu.woff2'; + +/* + Spitfire Browser by Internet Addict (https://weforgecode.xyz/Spitfire/Website) + Based on Stellar by HTML5 UP | @ajlkn + Free for personal and commercial use under the CCA 3.0 license (html5up.net/license) +*/ + +html, body, div, span, applet, object, +iframe, h1, h2, h3, h4, h5, h6, p, blockquote, +pre, a, abbr, acronym, address, big, cite, +code, del, dfn, em, img, ins, kbd, q, s, samp, +small, strike, strong, sub, sup, tt, var, b, +u, i, center, dl, dt, dd, ol, ul, li, fieldset, +form, label, legend, table, caption, tbody, +tfoot, thead, tr, th, td, article, aside, +canvas, details, embed, figure, figcaption, +footer, header, hgroup, menu, nav, output, ruby, +section, summary, time, mark, audio, video { + margin: 0; + padding: 0; + border: 0; + font-size: 100%; + font: inherit; + vertical-align: baseline;} + +article, aside, details, figcaption, figure, +footer, header, hgroup, menu, nav, section { + display: block;} + +body { + line-height: 1; +} + +ol, ul { + list-style: none; +} + +blockquote, q { + quotes: none; +} + + blockquote:before, blockquote:after, q:before, q:after { + content: ''; + content: none; + } + +table { + border-collapse: collapse; + border-spacing: 0; +} + +body { + -webkit-text-size-adjust: none; +} + +mark { + background-color: transparent; + color: inherit; +} + +input::-moz-focus-inner { + border: 0; + padding: 0; +} + +input, select, textarea { + -moz-appearance: none; + -webkit-appearance: none; + -ms-appearance: none; + appearance: none; +} + +/* Basic */ + + @-ms-viewport { + width: device-width; + } + + body { + -ms-overflow-style: scrollbar; + } + + @media screen and (max-width: 480px) { + + html, body { + min-width: 320px; + } + + } + + html { + box-sizing: border-box; + } + + *, *:before, *:after { + box-sizing: inherit; + } + + /* body { + background-color: #935d8c; + background-image: url("images/overlay.png"), -moz-linear-gradient(45deg, #e37682 15%, #5f4d93 85%); + background-image: url("images/overlay.png"), -webkit-linear-gradient(45deg, #e37682 15%, #5f4d93 85%); + background-image: url("images/overlay.png"), -ms-linear-gradient(45deg, #e37682 15%, #5f4d93 85%); + background-image: url("images/overlay.png"), linear-gradient(45deg, #e37682 15%, #5f4d93 85%); + } */ + + body.is-preload *, body.is-preload *:before, body.is-preload *:after { + -moz-animation: none !important; + -webkit-animation: none !important; + -ms-animation: none !important; + animation: none !important; + -moz-transition: none !important; + -webkit-transition: none !important; + -ms-transition: none !important; + transition: none !important; + } + +/* Type */ + + /* body { + background-color: #935d8c; + color: rgba(255, 255, 255, 0.65); + } */ + + body, input, select, textarea { + font-family: "Source Sans Pro", Helvetica, sans-serif; + font-size: 14pt; + font-weight: 300; + line-height: 1.65; + } + + @media screen and (max-width: 1680px) { + + body, input, select, textarea { + font-size: 14pt; + } + + } + + @media screen and (max-width: 1280px) { + + body, input, select, textarea { + font-size: 12pt; + } + + } + + @media screen and (max-width: 360px) { + + body, input, select, textarea { + font-size: 11pt; + } + + } + + a { + -moz-transition: color 0.2s ease, border-bottom 0.2s ease; + -webkit-transition: color 0.2s ease, border-bottom 0.2s ease; + -ms-transition: color 0.2s ease, border-bottom 0.2s ease; + transition: color 0.2s ease, border-bottom 0.2s ease; + text-decoration: none; + border-bottom: dotted 1px; + color: inherit; + } + + a:hover { + border-bottom-color: transparent; + } + + strong, b { + font-weight: 400; + } + + em, i { + font-style: italic; + } + + + + p.content { + -moz-columns: 20em 2; + -webkit-columns: 20em 2; + -ms-columns: 20em 2; + columns: 20em 2; + -moz-column-gap: 2em; + -webkit-column-gap: 2em; + -ms-column-gap: 2em; + column-gap: 2em; + text-align: justify; + } + + h1, h2, h3, h4, h5, h6 { + font-weight: 300; + line-height: 1.5; + margin: 0 0 0.7em 0; + letter-spacing: -0.025em; + } + + h1 a, h2 a, h3 a, h4 a, h5 a, h6 a { + color: inherit; + text-decoration: none; + } + + h1 { + font-size: 2.5em; + line-height: 1.2; + } + + h2 { + font-size: 1.5em; + } + + h3 { + font-size: 1.25em; + } + + h4 { + font-size: 1.1em; + } + + h5 { + font-size: 0.9em; + } + + h6 { + font-size: 0.7em; + } + + @media screen and (max-width: 736px) { + + h1 { + font-size: 2em; + } + + } + + sub { + font-size: 0.8em; + position: relative; + top: 0.5em; + } + + sup { + font-size: 0.8em; + position: relative; + top: -0.5em; + } + + blockquote { + border-left: solid 4px; + font-style: italic; + margin: 0 0 2em 0; + padding: 0.5em 0 0.5em 2em; + } + + code { + border-radius: 8px; + border: solid 1px; + font-family: "Courier New", monospace; + font-size: 0.9em; + margin: 0 0.25em; + padding: 0.25em 0.65em; + } + + pre { + -webkit-overflow-scrolling: touch; + font-family: "Courier New", monospace; + font-size: 0.9em; + margin: 0 0 2em 0; + } + + pre code { + display: block; + line-height: 1.75; + padding: 1em 1.5em; + overflow-x: auto; + } + + hr { + border: 0; + border-bottom: solid 1px; + margin: 2em 0; + } + + hr.major { + margin: 3em 0; + } + + .align-left { + text-align: left; + } + + .align-center { + text-align: center; + } + + .align-right { + text-align: right; + } + + input, select, textarea { + color: #ffffff; + } + + a:hover { + color: #ffffff; + } + + strong, b { + color: #ffffff; + } + + h1, h2, h3, h4, h5, h6 { + color: #ffffff; + } + + blockquote { + border-left-color: rgba(255, 255, 255, 0.35); + } + + code { + background: rgba(255, 255, 255, 0.075); + border-color: rgba(255, 255, 255, 0.35); + } + + hr { + border-bottom-color: rgba(255, 255, 255, 0.35); + } + +/* Row */ + + .row { + display: flex; + flex-wrap: wrap; + box-sizing: border-box; + align-items: stretch; + } + + .row > * { + box-sizing: border-box; + } + + .row.gtr-uniform > * > :last-child { + margin-bottom: 0; + } + + .row.aln-left { + justify-content: flex-start; + } + + .row.aln-center { + justify-content: center; + } + + .row.aln-right { + justify-content: flex-end; + } + + .row.aln-top { + align-items: flex-start; + } + + .row.aln-middle { + align-items: center; + } + + .row.aln-bottom { + align-items: flex-end; + } + + .row > .imp { + order: -1; + } + + .row > .col-1 { + width: 8.33333%; + } + + .row > .off-1 { + margin-left: 8.33333%; + } + + .row > .col-2 { + width: 16.66667%; + } + + .row > .off-2 { + margin-left: 16.66667%; + } + + .row > .col-3 { + width: 25%; + } + + .row > .off-3 { + margin-left: 25%; + } + + .row > .col-4 { + width: 33.33333%; + } + + .row > .off-4 { + margin-left: 33.33333%; + } + + .row > .col-5 { + width: 41.66667%; + } + + .row > .off-5 { + margin-left: 41.66667%; + } + + .row > .col-6 { + width: 50%; + } + + .row > .off-6 { + margin-left: 50%; + } + + .row > .col-7 { + width: 58.33333%; + } + + .row > .off-7 { + margin-left: 58.33333%; + } + + .row > .col-8 { + width: 66.66667%; + } + + .row > .off-8 { + margin-left: 66.66667%; + } + + .row > .col-9 { + width: 75%; + } + + .row > .off-9 { + margin-left: 75%; + } + + .row > .col-10 { + width: 83.33333%; + } + + .row > .off-10 { + margin-left: 83.33333%; + } + + .row > .col-11 { + width: 91.66667%; + } + + .row > .off-11 { + margin-left: 91.66667%; + } + + .row > .col-12 { + width: 100%; + } + + .row > .off-12 { + margin-left: 100%; + } + + .row.gtr-0 { + margin-top: 0; + margin-left: 0em; + } + + .row.gtr-0 > * { + padding: 0 0 0 0em; + } + + .row.gtr-0.gtr-uniform { + margin-top: 0em; + } + + .row.gtr-0.gtr-uniform > * { + padding-top: 0em; + } + + .row.gtr-25 { + margin-top: 0; + margin-left: -0.375em; + } + + .row.gtr-25 > * { + padding: 0 0 0 0.375em; + } + + .row.gtr-25.gtr-uniform { + margin-top: -0.375em; + } + + .row.gtr-25.gtr-uniform > * { + padding-top: 0.375em; + } + + .row.gtr-50 { + margin-top: 0; + margin-left: -0.75em; + } + + .row.gtr-50 > * { + padding: 0 0 0 0.75em; + } + + .row.gtr-50.gtr-uniform { + margin-top: -0.75em; + } + + .row.gtr-50.gtr-uniform > * { + padding-top: 0.75em; + } + + .row { + margin-top: 0; + margin-left: -1.5em; + } + + .row > * { + padding: 0 0 0 1.5em; + } + + .row.gtr-uniform { + margin-top: -1.5em; + } + + .row.gtr-uniform > * { + padding-top: 1.5em; + } + + .row.gtr-150 { + margin-top: 0; + margin-left: -2.25em; + } + + .row.gtr-150 > * { + padding: 0 0 0 2.25em; + } + + .row.gtr-150.gtr-uniform { + margin-top: -2.25em; + } + + .row.gtr-150.gtr-uniform > * { + padding-top: 2.25em; + } + + .row.gtr-200 { + margin-top: 0; + margin-left: -3em; + } + + .row.gtr-200 > * { + padding: 0 0 0 3em; + } + + .row.gtr-200.gtr-uniform { + margin-top: -3em; + } + + .row.gtr-200.gtr-uniform > * { + padding-top: 3em; + } + + @media screen and (max-width: 1680px) { + + .row { + display: flex; + flex-wrap: wrap; + box-sizing: border-box; + align-items: stretch; + } + + .row > * { + box-sizing: border-box; + } + + .row.gtr-uniform > * > :last-child { + margin-bottom: 0; + } + + .row.aln-left { + justify-content: flex-start; + } + + .row.aln-center { + justify-content: center; + } + + .row.aln-right { + justify-content: flex-end; + } + + .row.aln-top { + align-items: flex-start; + } + + .row.aln-middle { + align-items: center; + } + + .row.aln-bottom { + align-items: flex-end; + } + + .row > .imp-xlarge { + order: -1; + } + + .row > .col-1-xlarge { + width: 8.33333%; + } + + .row > .off-1-xlarge { + margin-left: 8.33333%; + } + + .row > .col-2-xlarge { + width: 16.66667%; + } + + .row > .off-2-xlarge { + margin-left: 16.66667%; + } + + .row > .col-3-xlarge { + width: 25%; + } + + .row > .off-3-xlarge { + margin-left: 25%; + } + + .row > .col-4-xlarge { + width: 33.33333%; + } + + .row > .off-4-xlarge { + margin-left: 33.33333%; + } + + .row > .col-5-xlarge { + width: 41.66667%; + } + + .row > .off-5-xlarge { + margin-left: 41.66667%; + } + + .row > .col-6-xlarge { + width: 50%; + } + + .row > .off-6-xlarge { + margin-left: 50%; + } + + .row > .col-7-xlarge { + width: 58.33333%; + } + + .row > .off-7-xlarge { + margin-left: 58.33333%; + } + + .row > .col-8-xlarge { + width: 66.66667%; + } + + .row > .off-8-xlarge { + margin-left: 66.66667%; + } + + .row > .col-9-xlarge { + width: 75%; + } + + .row > .off-9-xlarge { + margin-left: 75%; + } + + .row > .col-10-xlarge { + width: 83.33333%; + } + + .row > .off-10-xlarge { + margin-left: 83.33333%; + } + + .row > .col-11-xlarge { + width: 91.66667%; + } + + .row > .off-11-xlarge { + margin-left: 91.66667%; + } + + .row > .col-12-xlarge { + width: 100%; + } + + .row > .off-12-xlarge { + margin-left: 100%; + } + + .row.gtr-0 { + margin-top: 0; + margin-left: 0em; + } + + .row.gtr-0 > * { + padding: 0 0 0 0em; + } + + .row.gtr-0.gtr-uniform { + margin-top: 0em; + } + + .row.gtr-0.gtr-uniform > * { + padding-top: 0em; + } + + .row.gtr-25 { + margin-top: 0; + margin-left: -0.375em; + } + + .row.gtr-25 > * { + padding: 0 0 0 0.375em; + } + + .row.gtr-25.gtr-uniform { + margin-top: -0.375em; + } + + .row.gtr-25.gtr-uniform > * { + padding-top: 0.375em; + } + + .row.gtr-50 { + margin-top: 0; + margin-left: -0.75em; + } + + .row.gtr-50 > * { + padding: 0 0 0 0.75em; + } + + .row.gtr-50.gtr-uniform { + margin-top: -0.75em; + } + + .row.gtr-50.gtr-uniform > * { + padding-top: 0.75em; + } + + .row { + margin-top: 0; + margin-left: -1.5em; + } + + .row > * { + padding: 0 0 0 1.5em; + } + + .row.gtr-uniform { + margin-top: -1.5em; + } + + .row.gtr-uniform > * { + padding-top: 1.5em; + } + + .row.gtr-150 { + margin-top: 0; + margin-left: -2.25em; + } + + .row.gtr-150 > * { + padding: 0 0 0 2.25em; + } + + .row.gtr-150.gtr-uniform { + margin-top: -2.25em; + } + + .row.gtr-150.gtr-uniform > * { + padding-top: 2.25em; + } + + .row.gtr-200 { + margin-top: 0; + margin-left: -3em; + } + + .row.gtr-200 > * { + padding: 0 0 0 3em; + } + + .row.gtr-200.gtr-uniform { + margin-top: -3em; + } + + .row.gtr-200.gtr-uniform > * { + padding-top: 3em; + } + + } + + @media screen and (max-width: 1280px) { + + .row { + display: flex; + flex-wrap: wrap; + box-sizing: border-box; + align-items: stretch; + } + + .row > * { + box-sizing: border-box; + } + + .row.gtr-uniform > * > :last-child { + margin-bottom: 0; + } + + .row.aln-left { + justify-content: flex-start; + } + + .row.aln-center { + justify-content: center; + } + + .row.aln-right { + justify-content: flex-end; + } + + .row.aln-top { + align-items: flex-start; + } + + .row.aln-middle { + align-items: center; + } + + .row.aln-bottom { + align-items: flex-end; + } + + .row > .imp-large { + order: -1; + } + + .row > .col-1-large { + width: 8.33333%; + } + + .row > .off-1-large { + margin-left: 8.33333%; + } + + .row > .col-2-large { + width: 16.66667%; + } + + .row > .off-2-large { + margin-left: 16.66667%; + } + + .row > .col-3-large { + width: 25%; + } + + .row > .off-3-large { + margin-left: 25%; + } + + .row > .col-4-large { + width: 33.33333%; + } + + .row > .off-4-large { + margin-left: 33.33333%; + } + + .row > .col-5-large { + width: 41.66667%; + } + + .row > .off-5-large { + margin-left: 41.66667%; + } + + .row > .col-6-large { + width: 50%; + } + + .row > .off-6-large { + margin-left: 50%; + } + + .row > .col-7-large { + width: 58.33333%; + } + + .row > .off-7-large { + margin-left: 58.33333%; + } + + .row > .col-8-large { + width: 66.66667%; + } + + .row > .off-8-large { + margin-left: 66.66667%; + } + + .row > .col-9-large { + width: 75%; + } + + .row > .off-9-large { + margin-left: 75%; + } + + .row > .col-10-large { + width: 83.33333%; + } + + .row > .off-10-large { + margin-left: 83.33333%; + } + + .row > .col-11-large { + width: 91.66667%; + } + + .row > .off-11-large { + margin-left: 91.66667%; + } + + .row > .col-12-large { + width: 100%; + } + + .row > .off-12-large { + margin-left: 100%; + } + + .row.gtr-0 { + margin-top: 0; + margin-left: 0em; + } + + .row.gtr-0 > * { + padding: 0 0 0 0em; + } + + .row.gtr-0.gtr-uniform { + margin-top: 0em; + } + + .row.gtr-0.gtr-uniform > * { + padding-top: 0em; + } + + .row.gtr-25 { + margin-top: 0; + margin-left: -0.375em; + } + + .row.gtr-25 > * { + padding: 0 0 0 0.375em; + } + + .row.gtr-25.gtr-uniform { + margin-top: -0.375em; + } + + .row.gtr-25.gtr-uniform > * { + padding-top: 0.375em; + } + + .row.gtr-50 { + margin-top: 0; + margin-left: -0.75em; + } + + .row.gtr-50 > * { + padding: 0 0 0 0.75em; + } + + .row.gtr-50.gtr-uniform { + margin-top: -0.75em; + } + + .row.gtr-50.gtr-uniform > * { + padding-top: 0.75em; + } + + .row { + margin-top: 0; + margin-left: -1.5em; + } + + .row > * { + padding: 0 0 0 1.5em; + } + + .row.gtr-uniform { + margin-top: -1.5em; + } + + .row.gtr-uniform > * { + padding-top: 1.5em; + } + + .row.gtr-150 { + margin-top: 0; + margin-left: -2.25em; + } + + .row.gtr-150 > * { + padding: 0 0 0 2.25em; + } + + .row.gtr-150.gtr-uniform { + margin-top: -2.25em; + } + + .row.gtr-150.gtr-uniform > * { + padding-top: 2.25em; + } + + .row.gtr-200 { + margin-top: 0; + margin-left: -3em; + } + + .row.gtr-200 > * { + padding: 0 0 0 3em; + } + + .row.gtr-200.gtr-uniform { + margin-top: -3em; + } + + .row.gtr-200.gtr-uniform > * { + padding-top: 3em; + } + + } + + @media screen and (max-width: 980px) { + + .row { + display: flex; + flex-wrap: wrap; + box-sizing: border-box; + align-items: stretch; + } + + .row > * { + box-sizing: border-box; + } + + .row.gtr-uniform > * > :last-child { + margin-bottom: 0; + } + + .row.aln-left { + justify-content: flex-start; + } + + .row.aln-center { + justify-content: center; + } + + .row.aln-right { + justify-content: flex-end; + } + + .row.aln-top { + align-items: flex-start; + } + + .row.aln-middle { + align-items: center; + } + + .row.aln-bottom { + align-items: flex-end; + } + + .row > .imp-medium { + order: -1; + } + + .row > .col-1-medium { + width: 8.33333%; + } + + .row > .off-1-medium { + margin-left: 8.33333%; + } + + .row > .col-2-medium { + width: 16.66667%; + } + + .row > .off-2-medium { + margin-left: 16.66667%; + } + + .row > .col-3-medium { + width: 25%; + } + + .row > .off-3-medium { + margin-left: 25%; + } + + .row > .col-4-medium { + width: 33.33333%; + } + + .row > .off-4-medium { + margin-left: 33.33333%; + } + + .row > .col-5-medium { + width: 41.66667%; + } + + .row > .off-5-medium { + margin-left: 41.66667%; + } + + .row > .col-6-medium { + width: 50%; + } + + .row > .off-6-medium { + margin-left: 50%; + } + + .row > .col-7-medium { + width: 58.33333%; + } + + .row > .off-7-medium { + margin-left: 58.33333%; + } + + .row > .col-8-medium { + width: 66.66667%; + } + + .row > .off-8-medium { + margin-left: 66.66667%; + } + + .row > .col-9-medium { + width: 75%; + } + + .row > .off-9-medium { + margin-left: 75%; + } + + .row > .col-10-medium { + width: 83.33333%; + } + + .row > .off-10-medium { + margin-left: 83.33333%; + } + + .row > .col-11-medium { + width: 91.66667%; + } + + .row > .off-11-medium { + margin-left: 91.66667%; + } + + .row > .col-12-medium { + width: 100%; + } + + .row > .off-12-medium { + margin-left: 100%; + } + + .row.gtr-0 { + margin-top: 0; + margin-left: 0em; + } + + .row.gtr-0 > * { + padding: 0 0 0 0em; + } + + .row.gtr-0.gtr-uniform { + margin-top: 0em; + } + + .row.gtr-0.gtr-uniform > * { + padding-top: 0em; + } + + .row.gtr-25 { + margin-top: 0; + margin-left: -0.375em; + } + + .row.gtr-25 > * { + padding: 0 0 0 0.375em; + } + + .row.gtr-25.gtr-uniform { + margin-top: -0.375em; + } + + .row.gtr-25.gtr-uniform > * { + padding-top: 0.375em; + } + + .row.gtr-50 { + margin-top: 0; + margin-left: -0.75em; + } + + .row.gtr-50 > * { + padding: 0 0 0 0.75em; + } + + .row.gtr-50.gtr-uniform { + margin-top: -0.75em; + } + + .row.gtr-50.gtr-uniform > * { + padding-top: 0.75em; + } + + .row { + margin-top: 0; + margin-left: -1.5em; + } + + .row > * { + padding: 0 0 0 1.5em; + } + + .row.gtr-uniform { + margin-top: -1.5em; + } + + .row.gtr-uniform > * { + padding-top: 1.5em; + } + + .row.gtr-150 { + margin-top: 0; + margin-left: -2.25em; + } + + .row.gtr-150 > * { + padding: 0 0 0 2.25em; + } + + .row.gtr-150.gtr-uniform { + margin-top: -2.25em; + } + + .row.gtr-150.gtr-uniform > * { + padding-top: 2.25em; + } + + .row.gtr-200 { + margin-top: 0; + margin-left: -3em; + } + + .row.gtr-200 > * { + padding: 0 0 0 3em; + } + + .row.gtr-200.gtr-uniform { + margin-top: -3em; + } + + .row.gtr-200.gtr-uniform > * { + padding-top: 3em; + } + + } + + @media screen and (max-width: 736px) { + + .row { + display: flex; + flex-wrap: wrap; + box-sizing: border-box; + align-items: stretch; + } + + .row > * { + box-sizing: border-box; + } + + .row.gtr-uniform > * > :last-child { + margin-bottom: 0; + } + + .row.aln-left { + justify-content: flex-start; + } + + .row.aln-center { + justify-content: center; + } + + .row.aln-right { + justify-content: flex-end; + } + + .row.aln-top { + align-items: flex-start; + } + + .row.aln-middle { + align-items: center; + } + + .row.aln-bottom { + align-items: flex-end; + } + + .row > .imp-small { + order: -1; + } + + .row > .col-1-small { + width: 8.33333%; + } + + .row > .off-1-small { + margin-left: 8.33333%; + } + + .row > .col-2-small { + width: 16.66667%; + } + + .row > .off-2-small { + margin-left: 16.66667%; + } + + .row > .col-3-small { + width: 25%; + } + + .row > .off-3-small { + margin-left: 25%; + } + + .row > .col-4-small { + width: 33.33333%; + } + + .row > .off-4-small { + margin-left: 33.33333%; + } + + .row > .col-5-small { + width: 41.66667%; + } + + .row > .off-5-small { + margin-left: 41.66667%; + } + + .row > .col-6-small { + width: 50%; + } + + .row > .off-6-small { + margin-left: 50%; + } + + .row > .col-7-small { + width: 58.33333%; + } + + .row > .off-7-small { + margin-left: 58.33333%; + } + + .row > .col-8-small { + width: 66.66667%; + } + + .row > .off-8-small { + margin-left: 66.66667%; + } + + .row > .col-9-small { + width: 75%; + } + + .row > .off-9-small { + margin-left: 75%; + } + + .row > .col-10-small { + width: 83.33333%; + } + + .row > .off-10-small { + margin-left: 83.33333%; + } + + .row > .col-11-small { + width: 91.66667%; + } + + .row > .off-11-small { + margin-left: 91.66667%; + } + + .row > .col-12-small { + width: 100%; + } + + .row > .off-12-small { + margin-left: 100%; + } + + .row.gtr-0 { + margin-top: 0; + margin-left: 0em; + } + + .row.gtr-0 > * { + padding: 0 0 0 0em; + } + + .row.gtr-0.gtr-uniform { + margin-top: 0em; + } + + .row.gtr-0.gtr-uniform > * { + padding-top: 0em; + } + + .row.gtr-25 { + margin-top: 0; + margin-left: -0.25em; + } + + .row.gtr-25 > * { + padding: 0 0 0 0.25em; + } + + .row.gtr-25.gtr-uniform { + margin-top: -0.25em; + } + + .row.gtr-25.gtr-uniform > * { + padding-top: 0.25em; + } + + .row.gtr-50 { + margin-top: 0; + margin-left: -0.5em; + } + + .row.gtr-50 > * { + padding: 0 0 0 0.5em; + } + + .row.gtr-50.gtr-uniform { + margin-top: -0.5em; + } + + .row.gtr-50.gtr-uniform > * { + padding-top: 0.5em; + } + + .row { + margin-top: 0; + margin-left: -1em; + } + + .row > * { + padding: 0 0 0 1em; + } + + .row.gtr-uniform { + margin-top: -1em; + } + + .row.gtr-uniform > * { + padding-top: 1em; + } + + .row.gtr-150 { + margin-top: 0; + margin-left: -1.5em; + } + + .row.gtr-150 > * { + padding: 0 0 0 1.5em; + } + + .row.gtr-150.gtr-uniform { + margin-top: -1.5em; + } + + .row.gtr-150.gtr-uniform > * { + padding-top: 1.5em; + } + + .row.gtr-200 { + margin-top: 0; + margin-left: -2em; + } + + .row.gtr-200 > * { + padding: 0 0 0 2em; + } + + .row.gtr-200.gtr-uniform { + margin-top: -2em; + } + + .row.gtr-200.gtr-uniform > * { + padding-top: 2em; + } + + } + + @media screen and (max-width: 480px) { + + .row { + display: flex; + flex-wrap: wrap; + box-sizing: border-box; + align-items: stretch; + } + + .row > * { + box-sizing: border-box; + } + + .row.gtr-uniform > * > :last-child { + margin-bottom: 0; + } + + .row.aln-left { + justify-content: flex-start; + } + + .row.aln-center { + justify-content: center; + } + + .row.aln-right { + justify-content: flex-end; + } + + .row.aln-top { + align-items: flex-start; + } + + .row.aln-middle { + align-items: center; + } + + .row.aln-bottom { + align-items: flex-end; + } + + .row > .imp-xsmall { + order: -1; + } + + .row > .col-1-xsmall { + width: 8.33333%; + } + + .row > .off-1-xsmall { + margin-left: 8.33333%; + } + + .row > .col-2-xsmall { + width: 16.66667%; + } + + .row > .off-2-xsmall { + margin-left: 16.66667%; + } + + .row > .col-3-xsmall { + width: 25%; + } + + .row > .off-3-xsmall { + margin-left: 25%; + } + + .row > .col-4-xsmall { + width: 33.33333%; + } + + .row > .off-4-xsmall { + margin-left: 33.33333%; + } + + .row > .col-5-xsmall { + width: 41.66667%; + } + + .row > .off-5-xsmall { + margin-left: 41.66667%; + } + + .row > .col-6-xsmall { + width: 50%; + } + + .row > .off-6-xsmall { + margin-left: 50%; + } + + .row > .col-7-xsmall { + width: 58.33333%; + } + + .row > .off-7-xsmall { + margin-left: 58.33333%; + } + + .row > .col-8-xsmall { + width: 66.66667%; + } + + .row > .off-8-xsmall { + margin-left: 66.66667%; + } + + .row > .col-9-xsmall { + width: 75%; + } + + .row > .off-9-xsmall { + margin-left: 75%; + } + + .row > .col-10-xsmall { + width: 83.33333%; + } + + .row > .off-10-xsmall { + margin-left: 83.33333%; + } + + .row > .col-11-xsmall { + width: 91.66667%; + } + + .row > .off-11-xsmall { + margin-left: 91.66667%; + } + + .row > .col-12-xsmall { + width: 100%; + } + + .row > .off-12-xsmall { + margin-left: 100%; + } + + .row.gtr-0 { + margin-top: 0; + margin-left: 0em; + } + + .row.gtr-0 > * { + padding: 0 0 0 0em; + } + + .row.gtr-0.gtr-uniform { + margin-top: 0em; + } + + .row.gtr-0.gtr-uniform > * { + padding-top: 0em; + } + + .row.gtr-25 { + margin-top: 0; + margin-left: -0.3125em; + } + + .row.gtr-25 > * { + padding: 0 0 0 0.3125em; + } + + .row.gtr-25.gtr-uniform { + margin-top: -0.3125em; + } + + .row.gtr-25.gtr-uniform > * { + padding-top: 0.3125em; + } + + .row.gtr-50 { + margin-top: 0; + margin-left: -0.625em; + } + + .row.gtr-50 > * { + padding: 0 0 0 0.625em; + } + + .row.gtr-50.gtr-uniform { + margin-top: -0.625em; + } + + .row.gtr-50.gtr-uniform > * { + padding-top: 0.625em; + } + + .row { + margin-top: 0; + margin-left: -1.25em; + } + + .row > * { + padding: 0 0 0 1.25em; + } + + .row.gtr-uniform { + margin-top: -1.25em; + } + + .row.gtr-uniform > * { + padding-top: 1.25em; + } + + .row.gtr-150 { + margin-top: 0; + margin-left: -1.875em; + } + + .row.gtr-150 > * { + padding: 0 0 0 1.875em; + } + + .row.gtr-150.gtr-uniform { + margin-top: -1.875em; + } + + .row.gtr-150.gtr-uniform > * { + padding-top: 1.875em; + } + + .row.gtr-200 { + margin-top: 0; + margin-left: -2.5em; + } + + .row.gtr-200 > * { + padding: 0 0 0 2.5em; + } + + .row.gtr-200.gtr-uniform { + margin-top: -2.5em; + } + + .row.gtr-200.gtr-uniform > * { + padding-top: 2.5em; + } + + } + +/* Box */ + + .box { + border-radius: 8px; + border: solid; + margin-bottom: 2em; + padding: 1.5em; + } + + .box > :last-child, + .box > :last-child > :last-child, + .box > :last-child > :last-child > :last-child { + margin-bottom: 0; + } + + .box.alt { + border: 0; + border-radius: 0; + padding: 0; + } + + .box { + border-color: rgba(255, 255, 255, 0.35); + } + +/* Button */ + + input[type="submit"], + input[type="reset"], + input[type="button"], + button, + .button { + -moz-appearance: none; + -webkit-appearance: none; + -ms-appearance: none; + appearance: none; + -moz-transition: background-color 0.2s ease-in-out, color 0.2s ease-in-out; + -webkit-transition: background-color 0.2s ease-in-out, color 0.2s ease-in-out; + -ms-transition: background-color 0.2s ease-in-out, color 0.2s ease-in-out; + transition: background-color 0.2s ease-in-out, color 0.2s ease-in-out; + border-radius: 8px; + border: 0; + cursor: pointer; + display: inline-block; + font-weight: 300; + height: 2.75em; + line-height: 2.75em; + min-width: 9.25em; + padding: 0 1.5em; + text-align: center; + text-decoration: none; + white-space: nowrap; + } + + input[type="submit"].icon, + input[type="reset"].icon, + input[type="button"].icon, + button.icon, + .button.icon { + padding-left: 1.35em; + } + + input[type="submit"].icon:before, + input[type="reset"].icon:before, + input[type="button"].icon:before, + button.icon:before, + .button.icon:before { + margin-right: 0.5em; + } + + input[type="submit"].fit, + input[type="reset"].fit, + input[type="button"].fit, + button.fit, + .button.fit { + width: 100%; + } + + input[type="submit"].small, + input[type="reset"].small, + input[type="button"].small, + button.small, + .button.small { + font-size: 0.8em; + } + + input[type="submit"].large, + input[type="reset"].large, + input[type="button"].large, + button.large, + .button.large { + font-size: 1.35em; + } + + input[type="submit"].disabled, input[type="submit"]:disabled, + input[type="reset"].disabled, + input[type="reset"]:disabled, + input[type="button"].disabled, + input[type="button"]:disabled, + button.disabled, + button:disabled, + .button.disabled, + .button:disabled { + pointer-events: none; + opacity: 0.25; + } + + @media screen and (max-width: 736px) { + + input[type="submit"], + input[type="reset"], + input[type="button"], + button, + .button { + min-width: 0; + } + + } + + input[type="submit"], + input[type="reset"], + input[type="button"], + button, + .button { + background-color: transparent; + box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.35); + color: #ffffff !important; + } + + input[type="submit"]:hover, + input[type="reset"]:hover, + input[type="button"]:hover, + button:hover, + .button:hover { + background-color: rgba(255, 255, 255, 0.075); + } + + input[type="submit"]:active, + input[type="reset"]:active, + input[type="button"]:active, + button:active, + .button:active { + background-color: rgb(255, 255, 255); + } + + input[type="submit"].icon:before, + input[type="reset"].icon:before, + input[type="button"].icon:before, + button.icon:before, + .button.icon:before { + color: rgba(255, 255, 255, 0.5); + } + + input[type="submit"].primary, + input[type="reset"].primary, + input[type="button"].primary, + button.primary, + .button.primary { + background-color: #8cc9f0; + color: #ffffff !important; + box-shadow: none; + } + + input[type="submit"].primary:hover, + input[type="reset"].primary:hover, + input[type="button"].primary:hover, + button.primary:hover, + .button.primary:hover { + background-color: #9acff2; + } + + input[type="submit"].primary:active, + input[type="reset"].primary:active, + input[type="button"].primary:active, + button.primary:active, + .button.primary:active { + background-color: #7ec3ee; + } + + input[type="submit"].primary.icon:before, + input[type="reset"].primary.icon:before, + input[type="button"].primary.icon:before, + button.primary.icon:before, + .button.primary.icon:before { + color: #ffffff !important; + } + +/* Form */ + + form { + margin: 0 0 2em 0; + } + + label { + display: block; + font-size: 0.9em; + font-weight: 400; + margin: 0 0 1em 0; + } + + input[type="text"], + input[type="password"], + input[type="email"], + select, + textarea { + -moz-appearance: none; + -webkit-appearance: none; + -ms-appearance: none; + appearance: none; + border-radius: 8px; + border: solid 1px; + color: inherit; + display: block; + outline: 0; + padding: 0 1em; + text-decoration: none; + width: 100%; + } + + input[type="text"]:invalid, + input[type="password"]:invalid, + input[type="email"]:invalid, + select:invalid, + textarea:invalid { + box-shadow: none; + } + + select { + background-size: 1.25rem; + background-repeat: no-repeat; + background-position: calc(100% - 1rem) center; + height: 2.75em; + padding-right: 2.75em; + text-overflow: ellipsis; + } + + select:focus::-ms-value { + background-color: transparent; + } + + select::-ms-expand { + display: none; + } + + input[type="text"], + input[type="password"], + input[type="email"], + select { + height: 2.75em; + } + + textarea { + padding: 0.75em 1em; + } + + input[type="checkbox"], + input[type="radio"] { + -moz-appearance: none; + -webkit-appearance: none; + -ms-appearance: none; + appearance: none; + display: block; + float: left; + margin-right: -2em; + opacity: 0; + width: 1em; + z-index: -1; + } + + input[type="checkbox"] + label, + input[type="radio"] + label { + text-decoration: none; + cursor: pointer; + display: inline-block; + font-size: 1em; + font-weight: 300; + padding-left: 2.4em; + padding-right: 0.75em; + position: relative; + } + + input[type="checkbox"] + label:before, + input[type="radio"] + label:before { + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + display: inline-block; + font-style: normal; + font-variant: normal; + text-rendering: auto; + line-height: 1; + text-transform: none !important; + font-family: 'Font Awesome 5 Free'; + font-weight: 900; + } + + input[type="checkbox"] + label:before, + input[type="radio"] + label:before { + border-radius: 8px; + border: solid 1px; + content: ''; + display: inline-block; + font-size: 0.8em; + height: 2.0625em; + left: 0; + line-height: 2.0625em; + position: absolute; + text-align: center; + top: 0; + width: 2.0625em; + } + + input[type="checkbox"]:checked + label:before, + input[type="radio"]:checked + label:before { + content: '\f00c'; + } + + input[type="checkbox"] + label:before { + border-radius: 8px; + } + + input[type="radio"] + label:before { + border-radius: 100%; + } + + ::-webkit-input-placeholder { + opacity: 1.0; + } + + :-moz-placeholder { + opacity: 1.0; + } + + ::-moz-placeholder { + opacity: 1.0; + } + + :-ms-input-placeholder { + opacity: 1.0; + } + + label { + color: #ffffff; + } + + input[type="text"], + input[type="password"], + input[type="email"], + select, + textarea { + background-color: rgba(255, 255, 255, 0.075); + border-color: rgba(255, 255, 255, 0.35); + } + + input[type="text"]:focus, + input[type="password"]:focus, + input[type="email"]:focus, + select:focus, + textarea:focus { + border-color: #8cc9f0; + box-shadow: 0 0 0 1px #8cc9f0; + } + + select { + background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='40' height='40' preserveAspectRatio='none' viewBox='0 0 40 40'%3E%3Cpath d='M9.4,12.3l10.4,10.4l10.4-10.4c0.2-0.2,0.5-0.4,0.9-0.4c0.3,0,0.6,0.1,0.9,0.4l3.3,3.3c0.2,0.2,0.4,0.5,0.4,0.9 c0,0.4-0.1,0.6-0.4,0.9L20.7,31.9c-0.2,0.2-0.5,0.4-0.9,0.4c-0.3,0-0.6-0.1-0.9-0.4L4.3,17.3c-0.2-0.2-0.4-0.5-0.4-0.9 c0-0.4,0.1-0.6,0.4-0.9l3.3-3.3c0.2-0.2,0.5-0.4,0.9-0.4S9.1,12.1,9.4,12.3z' fill='rgba(255, 255, 255, 0.35)' /%3E%3C/svg%3E"); + } + + select option { + color: #ffffff; + background: #935d8c; + } + + input[type="checkbox"] + label, + input[type="radio"] + label { + color: rgba(255, 255, 255, 0.65); + } + + input[type="checkbox"] + label:before, + input[type="radio"] + label:before { + background: rgba(255, 255, 255, 0.075); + border-color: rgba(255, 255, 255, 0.35); + } + + input[type="checkbox"]:checked + label:before, + input[type="radio"]:checked + label:before { + background-color: #ffffff; + border-color: #ffffff; + color: #935d8c; + } + + input[type="checkbox"]:focus + label:before, + input[type="radio"]:focus + label:before { + border-color: #8cc9f0; + box-shadow: 0 0 0 1px #8cc9f0; + } + + ::-webkit-input-placeholder { + color: rgba(255, 255, 255, 0.5) !important; + } + + :-moz-placeholder { + color: rgba(255, 255, 255, 0.5) !important; + } + + ::-moz-placeholder { + color: rgba(255, 255, 255, 0.5) !important; + } + + :-ms-input-placeholder { + color: rgba(255, 255, 255, 0.5) !important; + } + + .formerize-placeholder { + color: rgba(255, 255, 255, 0.5) !important; + } +/* Icon */ + +.icon { + text-decoration: none; + -moz-transition: background-color 0.2s ease-in-out, color 0.2s ease-in-out; + -webkit-transition: background-color 0.2s ease-in-out, color 0.2s ease-in-out; + -ms-transition: background-color 0.2s ease-in-out, color 0.2s ease-in-out; + transition: background-color 0.2s ease-in-out, color 0.2s ease-in-out; + border-bottom: none; + position: relative; +} + +.icon:before { + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + display: inline-block; + font-style: normal; + font-variant: normal; + text-rendering: auto; + line-height: 1; + text-transform: none !important; + font-family: 'Font Awesome 5 Free'; + font-weight: 400; +} + +.icon > .label { + display: none; +} + +.icon:before { + line-height: solid; +} + +.icon.solid:before { + font-weight: 900; +} + +.icon.brands:before { + font-family: 'Font Awesome 5 Brands'; +} + +.icon.major { + border: solid 1px; + display: inline-block; + border-radius: 100%; + padding: 0.65em; + margin: 0 0 2em 0; + cursor: default; +} + +.icon.major:before { + display: inline-block; + font-size: 6.25rem; + width: 2.25em; + height: 2.25em; + line-height: 2.2em; + border-radius: 100%; + border: solid 1px; + text-align: center; +} + +.icon.alt { + display: inline-block; + border: solid 1px; + border-radius: 100%; +} + +.icon.alt:before { + display: block; + font-size: 1.25em; + width: 2em; + height: 2em; + text-align: center; + line-height: 2em; +} + +.icon.alt img { + display: block; + width: 2.5em; + height: 2.5em; + text-align: center; + border-radius: 100%; + padding: 0.5em; +} + +.icon.style1 { + color: #efa8b0; +} + +.icon.style2 { + color: #c79cc8; +} + +.icon.style3 { + color: #a89cc8; +} + +.icon.style4 { + color: #9bb2e1; +} + +.icon.style5 { + color: #8cc9f0; +} + +@media screen and (max-width: 1680px) { + + .icon.major:before { + font-size: 5.5rem; + } + +} + +@media screen and (max-width: 1280px) { + + .icon.major:before { + font-size: 4.75rem; + } + +} + +@media screen and (max-width: 736px) { + + .icon.major { + margin: 0 0 1.5em 0; + padding: 0.35em; + } + + .icon.major:before { + font-size: 3.5rem; + } + +} + +.icon.major { + border-color: rgba(255, 255, 255, 0.35); +} + +.icon.major:before { + border-color: rgba(255, 255, 255, 0.35); +} + +.icon.alt { + border-color: rgba(255, 255, 255, 0.35); + color: #ffffff; +} + +.icon.alt:hover { + background-color: rgba(255, 255, 255, 0.075); +} + +.icon.alt:active { + background-color: rgba(255, 255, 255, 0.2); +} + + +/* Image */ + + .image { + border-radius: 8px; + border: 0; + display: inline-block; + position: relative; + } + + .image img { + border-radius: 8px; + display: block; + } + + .image.left, .image.right { + max-width: 40%; + } + + .image.left img, .image.right img { + width: 100%; + } + + .image.left { + float: left; + margin: 0 1.5em 1em 0; + top: 0.25em; + } + + .image.right { + float: right; + margin: 0 0 1em 1.5em; + top: 0.25em; + } + + .image.fit { + display: block; + margin: 0 0 2em 0; + width: 100%; + } + + .image.fit img { + width: 100%; + } + + .image.main { + display: block; + margin: 0 0 3em 0; + width: 100%; + } + + .image.main img { + width: 100%; + } + +/* List */ + + ol { + list-style: decimal; + margin: 0 0 2em 0; + padding-left: 1.25em; + } + + ol li { + padding-left: 0.25em; + } + + ul { + list-style: disc; + margin: 0 0 2em 0; + padding-left: 1em; + } + + ul li { + padding-left: 0.5em; + } + + ul.alt { + list-style: none; + padding-left: 0; + } + + ul.alt li { + border-top: solid 1px; + padding: 0.5em 0; + } + + ul.alt li:first-child { + border-top: 0; + padding-top: 0; + } + + dl { + margin: 0 0 2em 0; + } + + dl dt { + display: block; + font-weight: 400; + margin: 0 0 1em 0; + } + + dl dd { + margin-left: 2em; + } + + dl.alt dt { + display: block; + width: 3em; + margin: 0; + clear: left; + float: left; + } + + dl.alt dd { + margin: 0 0 0.85em 5.5em; + } + + dl.alt:after { + content: ''; + display: block; + clear: both; + } + + ul.alt li { + border-top-color: rgba(255, 255, 255, 0.35); + } + + dl dt { + color: #ffffff; + } + +/* Actions */ + + ul.actions { + display: -moz-flex; + display: -webkit-flex; + display: -ms-flex; + display: flex; + cursor: default; + list-style: none; + margin-left: -1em; + padding-left: 0; + } + + ul.actions li { + padding: 0 0 0 1em; + vertical-align: middle; + } + + ul.actions.special { + -moz-justify-content: center; + -webkit-justify-content: center; + -ms-justify-content: center; + justify-content: center; + width: 100%; + margin-left: 0; + } + + ul.actions.special li:first-child { + padding-left: 0; + } + + ul.actions.stacked { + -moz-flex-direction: column; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + margin-left: 0; + } + + ul.actions.stacked li { + padding: 1.3em 0 0 0; + } + + ul.actions.stacked li:first-child { + padding-top: 0; + } + + ul.actions.fit { + width: calc(100% + 1em); + } + + ul.actions.fit li { + -moz-flex-grow: 1; + -webkit-flex-grow: 1; + -ms-flex-grow: 1; + flex-grow: 1; + -moz-flex-shrink: 1; + -webkit-flex-shrink: 1; + -ms-flex-shrink: 1; + flex-shrink: 1; + width: 100%; + } + + ul.actions.fit li > * { + width: 100%; + } + + ul.actions.fit.stacked { + width: 100%; + } + + @media screen and (max-width: 480px) { + + ul.actions:not(.fixed) { + -moz-flex-direction: column; + -webkit-flex-direction: column; + -ms-flex-direction: column; + flex-direction: column; + margin-left: 0; + width: 100% !important; + } + + ul.actions:not(.fixed) li { + -moz-flex-grow: 1; + -webkit-flex-grow: 1; + -ms-flex-grow: 1; + flex-grow: 1; + -moz-flex-shrink: 1; + -webkit-flex-shrink: 1; + -ms-flex-shrink: 1; + flex-shrink: 1; + padding: 1em 0 0 0; + text-align: center; + width: 100%; + } + + ul.actions:not(.fixed) li > * { + width: 100%; + } + + ul.actions:not(.fixed) li:first-child { + padding-top: 0; + } + + ul.actions:not(.fixed) li input[type="submit"], + ul.actions:not(.fixed) li input[type="reset"], + ul.actions:not(.fixed) li input[type="button"], + ul.actions:not(.fixed) li button, + ul.actions:not(.fixed) li .button { + width: 100%; + } + + ul.actions:not(.fixed) li input[type="submit"].icon:before, + ul.actions:not(.fixed) li input[type="reset"].icon:before, + ul.actions:not(.fixed) li input[type="button"].icon:before, + ul.actions:not(.fixed) li button.icon:before, + ul.actions:not(.fixed) li .button.icon:before { + margin-left: -0.5rem; + } + + } + +/* Icons */ + + ul.icons { + cursor: default; + list-style: none; + padding-left: 0; + } + + ul.icons li { + display: inline-block; + padding: 0 0.65em 0 0; + } + + ul.icons li:last-child { + padding-right: 0 !important; + } + +/* Section/Article */ + + section.special, article.special { + text-align: center; + } + + header.major { + margin-bottom: 3em; + } + + header.major h2 { + font-size: 2em; + } + + header.major h2:after { + display: block; + content: ''; + width: 3.25em; + height: 2px; + margin: 0.7em 0 1em 0; + border-radius: 2px; + } + + section.special header.major h2:after, article.special header.major h2:after { + margin-left: auto; + margin-right: auto; + } + + header.major p { + letter-spacing: -0.025em; + } + + header.major.special { + text-align: center; + } + + header.major.special h2:after { + margin-left: auto; + margin-right: auto; + } + + footer.major { + margin-top: 3em; + } + + @media screen and (max-width: 736px) { + + header.major { + margin-bottom: 0; + } + + header.major h2 { + font-size: 1.5em; + } + + header.major p { + font-size: 1em; + letter-spacing: 0; + } + + header.major p br { + display: none; + } + + footer.major { + margin-top: 0; + } + + } + + header.major h2:after { + background-color: rgba(255, 255, 255, 0.35); + } + +/* Table */ + + .table-wrapper { + -webkit-overflow-scrolling: touch; + overflow-x: auto; + } + + table { + margin: 0 0 2em 0; + width: 100%; + } + + table tbody tr { + border: solid 1px; + border-left: 0; + border-right: 0; + } + + table td { + padding: 0.75em 0.75em; + } + + table th { + font-size: 0.9em; + font-weight: 400; + padding: 0 0.75em 0.75em 0.75em; + text-align: left; + } + + table thead { + border-bottom: solid 2px; + } + + table tfoot { + border-top: solid 2px; + } + + table.alt { + border-collapse: separate; + } + + table.alt tbody tr td { + border: solid 1px; + border-left-width: 0; + border-top-width: 0; + } + + table.alt tbody tr td:first-child { + border-left-width: 1px; + } + + table.alt tbody tr:first-child td { + border-top-width: 1px; + } + + table.alt thead { + border-bottom: 0; + } + + table.alt tfoot { + border-top: 0; + } + + table tbody tr { + border-color: rgba(255, 255, 255, 0.35); + } + + table tbody tr:nth-child(2n + 1) { + background-color: rgba(255, 255, 255, 0.075); + } + + table th { + color: #ffffff; + } + + table thead { + border-bottom-color: rgba(255, 255, 255, 0.35); + } + + table tfoot { + border-top-color: rgba(255, 255, 255, 0.35); + } + + table.alt tbody tr td { + border-color: rgba(255, 255, 255, 0.35); + } + +/* Features */ + + .features { + display: -moz-flex; + display: -webkit-flex; + display: -ms-flex; + display: flex; + -moz-flex-wrap: wrap; + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + -moz-justify-content: center; + -webkit-justify-content: center; + -ms-justify-content: center; + justify-content: center; + width: calc(100% + 2em); + margin: 0 0 3em -2em; + padding: 0; + list-style: none; + } + + .features li { + width: calc(33.33333% - 2em); + margin-left: 2em; + margin-top: 3em; + padding: 0; + } + + .features li:nth-child(1), .features li:nth-child(2), .features li:nth-child(3) { + margin-top: 0; + } + + .features li > :last-child { + margin-bottom: 0; + } + + @media screen and (max-width: 980px) { + + .features li { + width: calc(50% - 2em); + } + + .features li:nth-child(3) { + margin-top: 3em; + } + + } + + @media screen and (max-width: 736px) { + + .features { + width: 100%; + margin: 0 0 2em 0; + } + + .features li { + width: 100%; + margin-left: 0; + margin-top: 2em; + } + + .features li:nth-child(2), .features li:nth-child(3) { + margin-top: 2em; + } + + } + +/* Statistics */ + + .statistics { + display: -moz-flex; + display: -webkit-flex; + display: -ms-flex; + display: flex; + width: 100%; + margin: 0 0 3em 0; + padding: 0; + list-style: none; + cursor: default; + } + + .statistics li { + -moz-flex: 1; + -webkit-flex: 1; + -ms-flex: 1; + flex: 1; + padding: 1.5em; + color: #ffffff; + text-align: center; + } + + .statistics li.style1 { + background-color: #efa8b0; + } + + .statistics li.style2 { + background-color: #c79cc8; + } + + .statistics li.style3 { + background-color: #a89cc8; + } + + .statistics li.style4 { + background-color: #9bb2e1; + } + + .statistics li.style5 { + background-color: #8cc9f0; + } + + .statistics li strong, .statistics li b { + display: block; + font-size: 2em; + line-height: 1.1; + color: inherit !important; + font-weight: 300; + letter-spacing: -0.025em; + } + + .statistics li:first-child { + border-top-left-radius: 8px; + border-bottom-left-radius: 8px; + } + + .statistics li:last-child { + border-top-right-radius: 8px; + border-bottom-right-radius: 8px; + } + + .statistics li .icon { + display: inline-block; + } + + .statistics li .icon:before { + font-size: 2.75rem; + line-height: 1.3; + } + + @media screen and (max-width: 980px) { + + .statistics li strong, .statistics li b { + font-size: 1.5em; + } + + } + + @media screen and (max-width: 736px) { + + .statistics { + display: block; + width: 20em; + max-width: 100%; + margin: 0 auto 2em auto; + } + + .statistics li:first-child { + border-bottom-left-radius: 0; + border-top-right-radius: 8px; + } + + .statistics li:last-child { + border-top-right-radius: 0; + border-bottom-left-radius: 8px; + } + + .statistics li .icon:before { + font-size: 3.75rem; + } + + .statistics li strong, .statistics li b { + font-size: 2.5em; + } + + } + +/* Spotlight */ + + .spotlight { + display: -moz-flex; + display: -webkit-flex; + display: -ms-flex; + display: flex; + -moz-align-items: center; + -webkit-align-items: center; + -ms-align-items: center; + align-items: center; + margin: 0 0 2em 0; + } + + .spotlight .content { + -moz-flex: 1; + -webkit-flex: 1; + -ms-flex: 1; + flex: 1; + } + + .spotlight .content > :last-child { + margin-bottom: 0; + } + + .spotlight .content header.major { + margin: 0 0 2em 0; + } + + .spotlight .image { + display: inline-block; + margin-left: 4em; + padding: 0.65em; + border-radius: 100%; + border: solid 1px; + } + + .spotlight .image img { + display: block; + border-radius: 100%; + width: 16em; + } + + @media screen and (max-width: 980px) { + + .spotlight { + -moz-flex-direction: column-reverse; + -webkit-flex-direction: column-reverse; + -ms-flex-direction: column-reverse; + flex-direction: column-reverse; + text-align: center; + } + + .spotlight .content { + -moz-flex: 0 1 auto; + -webkit-flex: 0 1 auto; + -ms-flex: 0 1 auto; + flex: 0 1 auto; + width: 100%; + } + + .spotlight .content header.major h2:after { + margin-left: auto; + margin-right: auto; + } + + .spotlight .content .actions { + -moz-justify-content: center; + -webkit-justify-content: center; + -ms-justify-content: center; + justify-content: center; + width: calc(100% + 1em); + } + + .spotlight .image { + -moz-flex: 0 1 auto; + -webkit-flex: 0 1 auto; + -ms-flex: 0 1 auto; + flex: 0 1 auto; + margin-left: 0; + margin-bottom: 2em; + } + + } + + @media screen and (max-width: 736px) { + + .spotlight .image { + padding: 0.35em; + } + + .spotlight .image img { + width: 12em; + } + + } + + .spotlight .image { + border-color: rgba(255, 255, 255, 0.35); + } + +/* Header */ + + #header { + padding: 5em 5em 1em 5em ; + text-align: center; + } + + #header h1 { + margin: 0 0 0.25em 0; + } + + #header p { + font-size: 1.25em; + letter-spacing: -0.025em; + } + + #header.alt { + padding: 7em 5em 4em 5em ; + } + + #header.alt h1 { + font-size: 3.25em; + } + + #header.alt > * { + -moz-transition: opacity 3s ease; + -webkit-transition: opacity 3s ease; + -ms-transition: opacity 3s ease; + transition: opacity 3s ease; + -moz-transition-delay: 0.5s; + -webkit-transition-delay: 0.5s; + -ms-transition-delay: 0.5s; + transition-delay: 0.5s; + opacity: 1; + } + + #header.alt .logo { + -moz-transition: opacity 1.25s ease, -moz-transform 0.5s ease; + -webkit-transition: opacity 1.25s ease, -webkit-transform 0.5s ease; + -ms-transition: opacity 1.25s ease, -ms-transform 0.5s ease; + transition: opacity 1.25s ease, transform 0.5s ease; + -moz-transition-delay: 0s; + -webkit-transition-delay: 0s; + -ms-transition-delay: 0s; + transition-delay: 0s; + display: block; + margin: 0 0 1.5em 0; + } + + #header.alt .logo img { + display: block; + margin: 0 auto; + max-width: 75%; + } + + @media screen and (max-width: 1280px) { + + #header { + padding: 4em 4em 0.1em 4em ; + } + + #header.alt { + padding: 6em 4em 3em 4em ; + } + + } + + @media screen and (max-width: 980px) { + + #header { + padding: 4em 3em 0.1em 3em ; + } + + #header.alt { + padding: 5em 3em 2em 3em ; + } + + } + + @media screen and (max-width: 736px) { + + #header { + padding: 3em 2em 0.1em 2em ; + } + + #header p { + font-size: 1em; + letter-spacing: 0; + } + + #header p br { + display: none; + } + + #header.alt { + padding: 4em 2em 1em 2em ; + } + + #header.alt h1 { + font-size: 2.5em; + } + + } + + @media screen and (max-width: 480px) { + + #header { + padding: 3em 1.5em 0.1em 1.5em ; + } + + #header.alt { + padding: 4em 1.5em 1em 1.5em ; + } + + } + + @media screen and (max-width: 360px) { + + #header { + padding: 2.5em 1em 0.1em 1em ; + } + + #header.alt { + padding: 3.5em 1em 0.5em 1em ; + } + + } + + body.is-preload #header.alt > * { + opacity: 0; + } + + body.is-preload #header.alt .logo { + -moz-transform: scale(0.8) rotate(-30deg); + -webkit-transform: scale(0.8) rotate(-30deg); + -ms-transform: scale(0.8) rotate(-30deg); + transform: scale(0.8) rotate(-30deg); + } + +/* Nav */ + + #nav { + -moz-transition: background-color 0.2s ease, border-top-left-radius 0.2s ease, border-top-right-radius 0.2s ease, padding 0.2s ease; + -webkit-transition: background-color 0.2s ease, border-top-left-radius 0.2s ease, border-top-right-radius 0.2s ease, padding 0.2s ease; + -ms-transition: background-color 0.2s ease, border-top-left-radius 0.2s ease, border-top-right-radius 0.2s ease, padding 0.2s ease; + transition: background-color 0.2s ease, border-top-left-radius 0.2s ease, border-top-right-radius 0.2s ease, padding 0.2s ease; + background-color: #0a0a0a; + color: #fafafa; + position: absolute; + width: 64em; + max-width: calc(100% - 4em); + padding: 1em; + background-color: #0a0a0a; + border-top-left-radius: 0.25em; + border-top-right-radius: 0.25em; + cursor: default; + text-align: center; + } + + #nav input, #nav select, #nav textarea { + color: #fafafa; + } + + #nav a:hover { + color: #ffffff; + } + + #nav strong, #nav b { + color: #0a0a0a; + } + + #nav h1, #nav h2, #nav h3, #nav h4, #nav h5, #nav h6 { + color: #ffffff; + } + + #nav blockquote { + border-left-color: #0a0a0a; + } + + #nav code { + background: #0a0a0a; + border-color: #0a0a0a; + } + + #nav hr { + border-bottom-color: #0a0a0a; + } + + #nav + #main { + padding-top: 4.25em; + } + + #nav ul { + margin: 0; + padding: 0; + list-style: none; + } + + #nav ul li { + -moz-transition: margin 0.2s ease; + -webkit-transition: margin 0.2s ease; + -ms-transition: margin 0.2s ease; + transition: margin 0.2s ease; + display: inline-block; + margin: 0 0.35em; + padding: 0; + vertical-align: middle; + } + + #nav ul li a { + -moz-transition: font-size 0.2s ease; + -webkit-transition: font-size 0.2s ease; + -ms-transition: font-size 0.2s ease; + transition: font-size 0.2s ease; + display: inline-block; + height: 2.25em; + line-height: 2.25em; + padding: 0 1.25em; + border: 0; + border-radius: 8px; + box-shadow: inset 0 0 0 1px transparent; + } + + #nav ul li a:hover { + background-color: #080808; + } + + #nav ul li a.active { + background-color: #000000; + box-shadow: none; + } + + #nav.alt { + position: fixed; + top: 0; + padding: 0.5em 1em; + background-color: #0a0a0a; + border-top-left-radius: 0; + border-top-right-radius: 0; + z-index: 10000; + } + + #nav.alt ul li { + margin: 0 0.175em; + } + + #nav.alt ul li a { + font-size: 0.9em; + } + + @media screen and (max-width: 736px) { + + #nav { + display: none; + } + + #nav + #main { + padding-top: 0; + } + + } + +/* Main */ + + #main { + background-color: #0a0a0a; + color: #fafafa; + border-radius: 0.25em; + } + + #main input, #main select, #main textarea { + color: #ffffff; + } + + #main a:hover { + color: #ffffff; + } + + #main strong, #main b { + color: #ffffff; + } + + #main h1, #main h2, #main h3, #main h4, #main h5, #main h6 { + color: #ffffff; + } + + #main blockquote { + border-left-color: #dddddd; + } + + #main code { + background: rgba(222, 222, 222, 0.25); + border-color: #dddddd; + } + + #main hr { + border-bottom-color: #dddddd; + } + + #main a,p { + color: #fafafa; + } + + #main .box { + border-color: #dddddd; + } + + #main input[type="submit"], + #main input[type="reset"], + #main input[type="button"], + #main button, + #main .button { + background-color: transparent; + box-shadow: inset 0 0 0 1px #dddddd; + color: #ffffff !important; + } + + #main input[type="submit"]:hover, + #main input[type="reset"]:hover, + #main input[type="button"]:hover, + #main button:hover, + #main .button:hover { + background-color: rgba(222, 222, 222, 0.25); + } + + #main input[type="submit"]:active, + #main input[type="reset"]:active, + #main input[type="button"]:active, + #main button:active, + #main .button:active { + background-color: rgba(222, 222, 222, 0.5); + } + + #main input[type="submit"].icon:before, + #main input[type="reset"].icon:before, + #main input[type="button"].icon:before, + #main button.icon:before, + #main .button.icon:before { + color: rgba(99, 99, 99, 0.25); + } + + #main input[type="submit"].primary, + #main input[type="reset"].primary, + #main input[type="button"].primary, + #main button.primary, + #main .button.primary { + background-color: #1f1f1f; + color: #ffffff !important; + box-shadow: none; + } + + #main input[type="submit"].primary:hover, + #main input[type="reset"].primary:hover, + #main input[type="button"].primary:hover, + #main button.primary:hover, + #main .button.primary:hover { + background-color: #000000; + } + + #main input[type="submit"].primary:active, + #main input[type="reset"].primary:active, + #main input[type="button"].primary:active, + #main button.primary:active, + #main .button.primary:active { + background-color: #080808; + } + + #main input[type="submit"].primary.icon:before, + #main input[type="reset"].primary.icon:before, + #main input[type="button"].primary.icon:before, + #main button.primary.icon:before, + #main .button.primary.icon:before { + color: #ffffff !important; + } + + #main label { + color: #636363; + } + + #main input[type="text"], + #main input[type="password"], + #main input[type="email"], + #main select, + #main textarea { + background-color: rgba(222, 222, 222, 0.25); + border-color: #dddddd; + } + + #main input[type="text"]:focus, + #main input[type="password"]:focus, + #main input[type="email"]:focus, + #main select:focus, + #main textarea:focus { + border-color: #8cc9f0; + box-shadow: 0 0 0 1px #8cc9f0; + } + + #main select { + background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='40' height='40' preserveAspectRatio='none' viewBox='0 0 40 40'%3E%3Cpath d='M9.4,12.3l10.4,10.4l10.4-10.4c0.2-0.2,0.5-0.4,0.9-0.4c0.3,0,0.6,0.1,0.9,0.4l3.3,3.3c0.2,0.2,0.4,0.5,0.4,0.9 c0,0.4-0.1,0.6-0.4,0.9L20.7,31.9c-0.2,0.2-0.5,0.4-0.9,0.4c-0.3,0-0.6-0.1-0.9-0.4L4.3,17.3c-0.2-0.2-0.4-0.5-0.4-0.9 c0-0.4,0.1-0.6,0.4-0.9l3.3-3.3c0.2-0.2,0.5-0.4,0.9-0.4S9.1,12.1,9.4,12.3z' fill='%23dddddd' /%3E%3C/svg%3E"); + } + + #main select option { + color: #636363; + background: #ffffff; + } + + #main input[type="checkbox"] + label, + #main input[type="radio"] + label { + color: #636363; + } + + #main input[type="checkbox"] + label:before, + #main input[type="radio"] + label:before { + background: rgba(222, 222, 222, 0.25); + border-color: #dddddd; + } + + #main input[type="checkbox"]:checked + label:before, + #main input[type="radio"]:checked + label:before { + background-color: #636363; + border-color: #636363; + color: #ffffff; + } + + #main input[type="checkbox"]:focus + label:before, + #main input[type="radio"]:focus + label:before { + border-color: #8cc9f0; + box-shadow: 0 0 0 1px #8cc9f0; + } + + #main ::-webkit-input-placeholder { + color: rgba(99, 99, 99, 0.25) !important; + } + + #main :-moz-placeholder { + color: rgba(99, 99, 99, 0.25) !important; + } + + #main ::-moz-placeholder { + color: rgba(99, 99, 99, 0.25) !important; + } + + #main :-ms-input-placeholder { + color: rgba(99, 99, 99, 0.25) !important; + } + + #main .formerize-placeholder { + color: rgba(99, 99, 99, 0.25) !important; + } + + #main .icon.major { + border-color: #dddddd; + } + + #main .icon.major:before { + border-color: #dddddd; + } + + #main .icon.alt { + border-color: #dddddd; + color: #636363; + } + + #main .icon.alt:hover { + background-color: rgba(222, 222, 222, 0.25); + } + + #main .icon.alt:active { + background-color: rgba(222, 222, 222, 0.5); + } + + #main ul.alt li { + border-top-color: #dddddd; + } + + #main dl dt { + color: #636363; + } + + #main header.major h2:after { + background-color: #dddddd; + background-image: -moz-linear-gradient(90deg, #efa8b0, #a89cc8, #8cc9f0); + background-image: -webkit-linear-gradient(90deg, #efa8b0, #a89cc8, #8cc9f0); + background-image: -ms-linear-gradient(90deg, #efa8b0, #a89cc8, #8cc9f0); + background-image: linear-gradient(90deg, #efa8b0, #a89cc8, #8cc9f0); + } + + #main table tbody tr { + border-color: #dddddd; + } + + #main table tbody tr:nth-child(2n + 1) { + background-color: rgba(222, 222, 222, 0.25); + } + + #main table th { + color: #636363; + } + + #main table thead { + border-bottom-color: #dddddd; + } + + #main table tfoot { + border-top-color: #dddddd; + } + + #main table.alt tbody tr td { + border-color: #dddddd; + } + + #main .spotlight .image { + border-color: #dddddd; + } + + #main > .main { + padding: 5em 5em 3em 5em ; + border-top: solid 1px #dddddd; + } + + #main > .main:first-child { + border-top: 0; + } + + #main > .main > .image.main:first-child { + margin: -5em 0 5em -5em; + width: calc(100% + 10em); + border-top-right-radius: 0.25em; + border-top-left-radius: 0.25em; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; + } + + #main > .main > .image.main:first-child img { + border-top-right-radius: 0.25em; + border-top-left-radius: 0.25em; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; + } + + @media screen and (max-width: 1280px) { + + #main > .main { + padding: 4em 4em 2em 4em ; + } + + #main > .main > .image.main:first-child { + margin: -4em 0 4em -4em; + width: calc(100% + 8em); + } + + } + + @media screen and (max-width: 980px) { + + #main > .main { + padding: 4em 3em 2em 3em ; + } + + #main > .main > .image.main:first-child { + margin: -4em 0 4em -3em; + width: calc(100% + 6em); + } + + } + + @media screen and (max-width: 736px) { + + #main > .main { + padding: 3em 2em 1em 2em ; + } + + #main > .main > .image.main:first-child { + margin: -3em 0 2em -2em; + width: calc(100% + 4em); + } + + } + + @media screen and (max-width: 480px) { + + #main > .main { + padding: 3em 1.5em 1em 1.5em ; + } + + #main > .main > .image.main:first-child { + margin: -3em 0 1.5em -1.5em; + width: calc(100% + 3em); + } + + } + + @media screen and (max-width: 360px) { + + #main { + border-radius: 0; + } + + #main > .main { + padding: 2.5em 1em 0.5em 1em ; + } + + #main > .main > .image.main:first-child { + margin: -2.5em 0 1.5em -1em; + width: calc(100% + 2em); + border-radius: 0; + } + + #main > .main > .image.main:first-child img { + border-radius: 0; + } + + } + +/* Footer */ + + #footer { + display: -moz-flex; + display: -webkit-flex; + display: -ms-flex; + display: flex; + -moz-flex-wrap: wrap; + -webkit-flex-wrap: wrap; + -ms-flex-wrap: wrap; + flex-wrap: wrap; + padding: 5em 5em 3em 5em ; + width: calc(100% + 2em); + margin: 0 0 3em -2em; + } + + #footer > * { + width: calc(50% - 2em); + margin-left: 2em; + } + + #footer .copyright { + width: 100%; + margin: 2.5em 0 2em 0; + font-size: 0.8em; + text-align: center; + } + + @media screen and (max-width: 1280px) { + + #footer { + padding: 4em 4em 2em 4em ; + } + + } + + @media screen and (max-width: 980px) { + + #footer { + padding: 4em 3em 2em 3em ; + display: block; + margin: 0 0 3em 0; + width: 100%; + } + + #footer > * { + width: 100%; + margin-left: 0; + margin-bottom: 3em; + } + + #footer .copyright { + text-align: left; + } + + } + + @media screen and (max-width: 736px) { + + #footer { + padding: 3em 2em 1em 2em ; + } + + } + + @media screen and (max-width: 480px) { + + #footer { + padding: 3em 1.5em 1em 1.5em ; + } + + } + + @media screen and (max-width: 480px) { + + #footer { + padding: 2.5em 1em 0.5em 1em ; + } + + } + +/* Wrapper */ + + #wrapper { + width: 64em; + max-width: calc(100% - 4em); + margin: 0 auto; + } + + @media screen and (max-width: 480px) { + + #wrapper { + max-width: calc(100% - 2em); + } + + } + + @media screen and (max-width: 360px) { + + #wrapper { + max-width: 100%; + } + + } + + diff --git a/static/css/slick.min.css b/static/css/slick.min.css index 250a210..f4e79ec 100644 --- a/static/css/slick.min.css +++ b/static/css/slick.min.css @@ -1,2 +1,2 @@ -.slick-slider{position:relative;display:block;box-sizing:border-box;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-touch-callout:none;-khtml-user-select:none;-ms-touch-action:pan-y;touch-action:pan-y;-webkit-tap-highlight-color:transparent}.slick-list{position:relative;display:block;overflow:hidden;margin:0;padding:0}.slick-list:focus{outline:0}.slick-list.dragging{cursor:pointer;cursor:hand}.slick-slider .slick-list,.slick-slider .slick-track{-webkit-transform:translate3d(0,0,0);-moz-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0);-o-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.slick-track{position:relative;top:0;left:0;display:block;margin-left:auto;margin-right:auto}.slick-track:after,.slick-track:before{display:table;content:''}.slick-track:after{clear:both}.slick-loading .slick-track{visibility:hidden}.slick-slide{display:none;float:left;height:100%;min-height:1px}[dir=rtl] .slick-slide{float:right}.slick-slide img{display:block}.slick-slide.slick-loading img{display:none}.slick-slide.dragging img{pointer-events:none}.slick-initialized .slick-slide{display:block}.slick-loading .slick-slide{visibility:hidden}.slick-vertical .slick-slide{display:block;height:auto;border:1px solid transparent}.slick-arrow.slick-hidden{display:none} +.slick-slider{position:relative;display:block;box-sizing:border-box;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-touch-callout:none;-khtml-user-select:none;-ms-touch-action:pan-y;touch-action:pan-y;-webkit-tap-highlight-color:transparent}.slick-list{position:relative;display:block;overflow:hidden;margin:0;padding:0}.slick-list:focus{outline:0}.slick-list.dragging{cursor:pointer;cursor:hand}.slick-slider .slick-list,.slick-slider .slick-track{-webkit-transform:translate3d(0,0,0);-moz-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0);-o-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.slick-track{position:relative;top:0;left:0;display:block;margin-left:auto;margin-right:auto}.slick-track:after,.slick-track:before{display:table;content:''}.slick-track:after{clear:both}.slick-loading .slick-track{visibility:hidden}.slick-slide{display:none;float:left;height:100%;min-height:1px}[dir=rtl] .slick-slide{float:right}.slick-slide img{display:block}.slick-slide.slick-loading img{display:none}.slick-slide.dragging img{pointer-events:none}.slick-initialized .slick-slide{display:block}.slick-loading .slick-slide{visibility:hidden}.slick-vertical .slick-slide{display:block;height:auto;border:1px solid transparent}.slick-arrow.slick-hidden{display:none} /*# sourceMappingURL=/sm/fb3ed351cd5c0f1f30f88778ee1f9b056598e6d25ac4fdcab1eebcd8be521cd9.map */ \ No newline at end of file diff --git a/static/images/favicon.png b/static/images/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..8b7b4421479cdb353fde3599812ab69bd608d16a GIT binary patch literal 82491 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

J!Fpk>cWrg~X1-0=tM~#ig#RZk@ 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 G{(k_e@`}*_ literal 0 HcmV?d00001 diff --git a/static/js/main.js b/static/js/main.js index 86480f0..e003150 100644 --- a/static/js/main.js +++ b/static/js/main.js @@ -1,7 +1,7 @@ /* - Stellar by HTML5 UP - html5up.net | @ajlkn - Free for personal and commercial use under the CCA 3.0 license (html5up.net/license) + Spitfire Browser by Internet Addict (https://weforgecode.xyz/Spitfire/Website) + Based on Stellar by HTML5 UP | @ajlkn + Free for personal and commercial use under the CCA 3.0 license (html5up.net/license) */ (function($) { diff --git a/static/sass/components/_icons.scss b/static/sass/components/_icons.scss index 001d135..e6a771c 100644 --- a/static/sass/components/_icons.scss +++ b/static/sass/components/_icons.scss @@ -1,22 +1,22 @@ -/// -/// Stellar by HTML5 UP -/// html5up.net | @ajlkn -/// Free for personal and commercial use under the CCA 3.0 license (html5up.net/license) -/// - -/* Icons */ - - ul.icons { - cursor: default; - list-style: none; - padding-left: 0; - - li { - display: inline-block; - padding: 0 0.65em 0 0; - - &:last-child { - padding-right: 0 !important; - } - } +/// +// Spitfire Browser by Internet Addict (https://weforgecode.xyz/Spitfire/Website) +// Based on Stellar by HTML5 UP | @ajlkn +// Free for personal and commercial use under the CCA 3.0 license (html5up.net/license) +/// + +/* Icons */ + + ul.icons { + cursor: default; + list-style: none; + padding-left: 0; + + li { + display: inline-block; + padding: 0 0.65em 0 0; + + &:last-child { + padding-right: 0 !important; + } + } } \ No newline at end of file diff --git a/static/sass/libs/_breakpoints.scss b/static/sass/libs/_breakpoints.scss index c5301d8..71dc23c 100644 --- a/static/sass/libs/_breakpoints.scss +++ b/static/sass/libs/_breakpoints.scss @@ -1,223 +1,223 @@ -// breakpoints.scss v1.0 | @ajlkn | MIT licensed */ - -// Vars. - - /// Breakpoints. - /// @var {list} - $breakpoints: () !global; - -// Mixins. - - /// Sets breakpoints. - /// @param {map} $x Breakpoints. - @mixin breakpoints($x: ()) { - $breakpoints: $x !global; - } - - /// Wraps @content in a @media block targeting a specific orientation. - /// @param {string} $orientation Orientation. - @mixin orientation($orientation) { - @media screen and (orientation: #{$orientation}) { - @content; - } - } - - /// Wraps @content in a @media block using a given query. - /// @param {string} $query Query. - @mixin breakpoint($query: null) { - - $breakpoint: null; - $op: null; - $media: null; - - // Determine operator, breakpoint. - - // Greater than or equal. - @if (str-slice($query, 0, 2) == '>=') { - - $op: 'gte'; - $breakpoint: str-slice($query, 3); - - } - - // Less than or equal. - @elseif (str-slice($query, 0, 2) == '<=') { - - $op: 'lte'; - $breakpoint: str-slice($query, 3); - - } - - // Greater than. - @elseif (str-slice($query, 0, 1) == '>') { - - $op: 'gt'; - $breakpoint: str-slice($query, 2); - - } - - // Less than. - @elseif (str-slice($query, 0, 1) == '<') { - - $op: 'lt'; - $breakpoint: str-slice($query, 2); - - } - - // Not. - @elseif (str-slice($query, 0, 1) == '!') { - - $op: 'not'; - $breakpoint: str-slice($query, 2); - - } - - // Equal. - @else { - - $op: 'eq'; - $breakpoint: $query; - - } - - // Build media. - @if ($breakpoint and map-has-key($breakpoints, $breakpoint)) { - - $a: map-get($breakpoints, $breakpoint); - - // Range. - @if (type-of($a) == 'list') { - - $x: nth($a, 1); - $y: nth($a, 2); - - // Max only. - @if ($x == null) { - - // Greater than or equal (>= 0 / anything) - @if ($op == 'gte') { - $media: 'screen'; - } - - // Less than or equal (<= y) - @elseif ($op == 'lte') { - $media: 'screen and (max-width: ' + $y + ')'; - } - - // Greater than (> y) - @elseif ($op == 'gt') { - $media: 'screen and (min-width: ' + ($y + 1) + ')'; - } - - // Less than (< 0 / invalid) - @elseif ($op == 'lt') { - $media: 'screen and (max-width: -1px)'; - } - - // Not (> y) - @elseif ($op == 'not') { - $media: 'screen and (min-width: ' + ($y + 1) + ')'; - } - - // Equal (<= y) - @else { - $media: 'screen and (max-width: ' + $y + ')'; - } - - } - - // Min only. - @else if ($y == null) { - - // Greater than or equal (>= x) - @if ($op == 'gte') { - $media: 'screen and (min-width: ' + $x + ')'; - } - - // Less than or equal (<= inf / anything) - @elseif ($op == 'lte') { - $media: 'screen'; - } - - // Greater than (> inf / invalid) - @elseif ($op == 'gt') { - $media: 'screen and (max-width: -1px)'; - } - - // Less than (< x) - @elseif ($op == 'lt') { - $media: 'screen and (max-width: ' + ($x - 1) + ')'; - } - - // Not (< x) - @elseif ($op == 'not') { - $media: 'screen and (max-width: ' + ($x - 1) + ')'; - } - - // Equal (>= x) - @else { - $media: 'screen and (min-width: ' + $x + ')'; - } - - } - - // Min and max. - @else { - - // Greater than or equal (>= x) - @if ($op == 'gte') { - $media: 'screen and (min-width: ' + $x + ')'; - } - - // Less than or equal (<= y) - @elseif ($op == 'lte') { - $media: 'screen and (max-width: ' + $y + ')'; - } - - // Greater than (> y) - @elseif ($op == 'gt') { - $media: 'screen and (min-width: ' + ($y + 1) + ')'; - } - - // Less than (< x) - @elseif ($op == 'lt') { - $media: 'screen and (max-width: ' + ($x - 1) + ')'; - } - - // Not (< x and > y) - @elseif ($op == 'not') { - $media: 'screen and (max-width: ' + ($x - 1) + '), screen and (min-width: ' + ($y + 1) + ')'; - } - - // Equal (>= x and <= y) - @else { - $media: 'screen and (min-width: ' + $x + ') and (max-width: ' + $y + ')'; - } - - } - - } - - // String. - @else { - - // Missing a media type? Prefix with "screen". - @if (str-slice($a, 0, 1) == '(') { - $media: 'screen and ' + $a; - } - - // Otherwise, use as-is. - @else { - $media: $a; - } - - } - - } - - // Output. - @media #{$media} { - @content; - } - +// breakpoints.scss v1.0 | @ajlkn | MIT licensed */ + +// Vars. + + /// Breakpoints. + /// @var {list} + $breakpoints: () !global; + +// Mixins. + + /// Sets breakpoints. + /// @param {map} $x Breakpoints. + @mixin breakpoints($x: ()) { + $breakpoints: $x !global; + } + + /// Wraps @content in a @media block targeting a specific orientation. + /// @param {string} $orientation Orientation. + @mixin orientation($orientation) { + @media screen and (orientation: #{$orientation}) { + @content; + } + } + + /// Wraps @content in a @media block using a given query. + /// @param {string} $query Query. + @mixin breakpoint($query: null) { + + $breakpoint: null; + $op: null; + $media: null; + + // Determine operator, breakpoint. + + // Greater than or equal. + @if (str-slice($query, 0, 2) == '>=') { + + $op: 'gte'; + $breakpoint: str-slice($query, 3); + + } + + // Less than or equal. + @elseif (str-slice($query, 0, 2) == '<=') { + + $op: 'lte'; + $breakpoint: str-slice($query, 3); + + } + + // Greater than. + @elseif (str-slice($query, 0, 1) == '>') { + + $op: 'gt'; + $breakpoint: str-slice($query, 2); + + } + + // Less than. + @elseif (str-slice($query, 0, 1) == '<') { + + $op: 'lt'; + $breakpoint: str-slice($query, 2); + + } + + // Not. + @elseif (str-slice($query, 0, 1) == '!') { + + $op: 'not'; + $breakpoint: str-slice($query, 2); + + } + + // Equal. + @else { + + $op: 'eq'; + $breakpoint: $query; + + } + + // Build media. + @if ($breakpoint and map-has-key($breakpoints, $breakpoint)) { + + $a: map-get($breakpoints, $breakpoint); + + // Range. + @if (type-of($a) == 'list') { + + $x: nth($a, 1); + $y: nth($a, 2); + + // Max only. + @if ($x == null) { + + // Greater than or equal (>= 0 / anything) + @if ($op == 'gte') { + $media: 'screen'; + } + + // Less than or equal (<= y) + @elseif ($op == 'lte') { + $media: 'screen and (max-width: ' + $y + ')'; + } + + // Greater than (> y) + @elseif ($op == 'gt') { + $media: 'screen and (min-width: ' + ($y + 1) + ')'; + } + + // Less than (< 0 / invalid) + @elseif ($op == 'lt') { + $media: 'screen and (max-width: -1px)'; + } + + // Not (> y) + @elseif ($op == 'not') { + $media: 'screen and (min-width: ' + ($y + 1) + ')'; + } + + // Equal (<= y) + @else { + $media: 'screen and (max-width: ' + $y + ')'; + } + + } + + // Min only. + @else if ($y == null) { + + // Greater than or equal (>= x) + @if ($op == 'gte') { + $media: 'screen and (min-width: ' + $x + ')'; + } + + // Less than or equal (<= inf / anything) + @elseif ($op == 'lte') { + $media: 'screen'; + } + + // Greater than (> inf / invalid) + @elseif ($op == 'gt') { + $media: 'screen and (max-width: -1px)'; + } + + // Less than (< x) + @elseif ($op == 'lt') { + $media: 'screen and (max-width: ' + ($x - 1) + ')'; + } + + // Not (< x) + @elseif ($op == 'not') { + $media: 'screen and (max-width: ' + ($x - 1) + ')'; + } + + // Equal (>= x) + @else { + $media: 'screen and (min-width: ' + $x + ')'; + } + + } + + // Min and max. + @else { + + // Greater than or equal (>= x) + @if ($op == 'gte') { + $media: 'screen and (min-width: ' + $x + ')'; + } + + // Less than or equal (<= y) + @elseif ($op == 'lte') { + $media: 'screen and (max-width: ' + $y + ')'; + } + + // Greater than (> y) + @elseif ($op == 'gt') { + $media: 'screen and (min-width: ' + ($y + 1) + ')'; + } + + // Less than (< x) + @elseif ($op == 'lt') { + $media: 'screen and (max-width: ' + ($x - 1) + ')'; + } + + // Not (< x and > y) + @elseif ($op == 'not') { + $media: 'screen and (max-width: ' + ($x - 1) + '), screen and (min-width: ' + ($y + 1) + ')'; + } + + // Equal (>= x and <= y) + @else { + $media: 'screen and (min-width: ' + $x + ') and (max-width: ' + $y + ')'; + } + + } + + } + + // String. + @else { + + // Missing a media type? Prefix with "screen". + @if (str-slice($a, 0, 1) == '(') { + $media: 'screen and ' + $a; + } + + // Otherwise, use as-is. + @else { + $media: $a; + } + + } + + } + + // Output. + @media #{$media} { + @content; + } + } \ No newline at end of file diff --git a/static/sass/libs/_vendor.scss b/static/sass/libs/_vendor.scss index 6599a3f..ce81f97 100644 --- a/static/sass/libs/_vendor.scss +++ b/static/sass/libs/_vendor.scss @@ -1,376 +1,376 @@ -// vendor.scss v1.0 | @ajlkn | MIT licensed */ - -// Vars. - - /// Vendor prefixes. - /// @var {list} - $vendor-prefixes: ( - '-moz-', - '-webkit-', - '-ms-', - '' - ); - - /// Properties that should be vendorized. - /// Data via caniuse.com, github.com/postcss/autoprefixer, and developer.mozilla.org - /// @var {list} - $vendor-properties: ( - - // Animation. - 'animation', - 'animation-delay', - 'animation-direction', - 'animation-duration', - 'animation-fill-mode', - 'animation-iteration-count', - 'animation-name', - 'animation-play-state', - 'animation-timing-function', - - // Appearance. - 'appearance', - - // Backdrop filter. - 'backdrop-filter', - - // Background image options. - 'background-clip', - 'background-origin', - 'background-size', - - // Box sizing. - 'box-sizing', - - // Clip path. - 'clip-path', - - // Filter effects. - 'filter', - - // Flexbox. - 'align-content', - 'align-items', - 'align-self', - 'flex', - 'flex-basis', - 'flex-direction', - 'flex-flow', - 'flex-grow', - 'flex-shrink', - 'flex-wrap', - 'justify-content', - 'order', - - // Font feature. - 'font-feature-settings', - 'font-language-override', - 'font-variant-ligatures', - - // Font kerning. - 'font-kerning', - - // Fragmented borders and backgrounds. - 'box-decoration-break', - - // Grid layout. - 'grid-column', - 'grid-column-align', - 'grid-column-end', - 'grid-column-start', - 'grid-row', - 'grid-row-align', - 'grid-row-end', - 'grid-row-start', - 'grid-template-columns', - 'grid-template-rows', - - // Hyphens. - 'hyphens', - 'word-break', - - // Masks. - 'mask', - 'mask-border', - 'mask-border-outset', - 'mask-border-repeat', - 'mask-border-slice', - 'mask-border-source', - 'mask-border-width', - 'mask-clip', - 'mask-composite', - 'mask-image', - 'mask-origin', - 'mask-position', - 'mask-repeat', - 'mask-size', - - // Multicolumn. - 'break-after', - 'break-before', - 'break-inside', - 'column-count', - 'column-fill', - 'column-gap', - 'column-rule', - 'column-rule-color', - 'column-rule-style', - 'column-rule-width', - 'column-span', - 'column-width', - 'columns', - - // Object fit. - 'object-fit', - 'object-position', - - // Regions. - 'flow-from', - 'flow-into', - 'region-fragment', - - // Scroll snap points. - 'scroll-snap-coordinate', - 'scroll-snap-destination', - 'scroll-snap-points-x', - 'scroll-snap-points-y', - 'scroll-snap-type', - - // Shapes. - 'shape-image-threshold', - 'shape-margin', - 'shape-outside', - - // Tab size. - 'tab-size', - - // Text align last. - 'text-align-last', - - // Text decoration. - 'text-decoration-color', - 'text-decoration-line', - 'text-decoration-skip', - 'text-decoration-style', - - // Text emphasis. - 'text-emphasis', - 'text-emphasis-color', - 'text-emphasis-position', - 'text-emphasis-style', - - // Text size adjust. - 'text-size-adjust', - - // Text spacing. - 'text-spacing', - - // Transform. - 'transform', - 'transform-origin', - - // Transform 3D. - 'backface-visibility', - 'perspective', - 'perspective-origin', - 'transform-style', - - // Transition. - 'transition', - 'transition-delay', - 'transition-duration', - 'transition-property', - 'transition-timing-function', - - // Unicode bidi. - 'unicode-bidi', - - // User select. - 'user-select', - - // Writing mode. - 'writing-mode', - - ); - - /// Values that should be vendorized. - /// Data via caniuse.com, github.com/postcss/autoprefixer, and developer.mozilla.org - /// @var {list} - $vendor-values: ( - - // Cross fade. - 'cross-fade', - - // Element function. - 'element', - - // Filter function. - 'filter', - - // Flexbox. - 'flex', - 'inline-flex', - - // Grab cursors. - 'grab', - 'grabbing', - - // Gradients. - 'linear-gradient', - 'repeating-linear-gradient', - 'radial-gradient', - 'repeating-radial-gradient', - - // Grid layout. - 'grid', - 'inline-grid', - - // Image set. - 'image-set', - - // Intrinsic width. - 'max-content', - 'min-content', - 'fit-content', - 'fill', - 'fill-available', - 'stretch', - - // Sticky position. - 'sticky', - - // Transform. - 'transform', - - // Zoom cursors. - 'zoom-in', - 'zoom-out', - - ); - -// Functions. - - /// Removes a specific item from a list. - /// @author Hugo Giraudel - /// @param {list} $list List. - /// @param {integer} $index Index. - /// @return {list} Updated list. - @function remove-nth($list, $index) { - - $result: null; - - @if type-of($index) != number { - @warn "$index: #{quote($index)} is not a number for `remove-nth`."; - } - @else if $index == 0 { - @warn "List index 0 must be a non-zero integer for `remove-nth`."; - } - @else if abs($index) > length($list) { - @warn "List index is #{$index} but list is only #{length($list)} item long for `remove-nth`."; - } - @else { - - $result: (); - $index: if($index < 0, length($list) + $index + 1, $index); - - @for $i from 1 through length($list) { - - @if $i != $index { - $result: append($result, nth($list, $i)); - } - - } - - } - - @return $result; - - } - - /// Replaces a substring within another string. - /// @author Hugo Giraudel - /// @param {string} $string String. - /// @param {string} $search Substring. - /// @param {string} $replace Replacement. - /// @return {string} Updated string. - @function str-replace($string, $search, $replace: '') { - - $index: str-index($string, $search); - - @if $index { - @return str-slice($string, 1, $index - 1) + $replace + str-replace(str-slice($string, $index + str-length($search)), $search, $replace); - } - - @return $string; - - } - - /// Replaces a substring within each string in a list. - /// @param {list} $strings List of strings. - /// @param {string} $search Substring. - /// @param {string} $replace Replacement. - /// @return {list} Updated list of strings. - @function str-replace-all($strings, $search, $replace: '') { - - @each $string in $strings { - $strings: set-nth($strings, index($strings, $string), str-replace($string, $search, $replace)); - } - - @return $strings; - - } - -// Mixins. - - /// Wraps @content in vendorized keyframe blocks. - /// @param {string} $name Name. - @mixin keyframes($name) { - - @-moz-keyframes #{$name} { @content; } - @-webkit-keyframes #{$name} { @content; } - @-ms-keyframes #{$name} { @content; } - @keyframes #{$name} { @content; } - - } - - /// Vendorizes a declaration's property and/or value(s). - /// @param {string} $property Property. - /// @param {mixed} $value String/list of value(s). - @mixin vendor($property, $value) { - - // Determine if property should expand. - $expandProperty: index($vendor-properties, $property); - - // Determine if value should expand (and if so, add '-prefix-' placeholder). - $expandValue: false; - - @each $x in $value { - @each $y in $vendor-values { - @if $y == str-slice($x, 1, str-length($y)) { - - $value: set-nth($value, index($value, $x), '-prefix-' + $x); - $expandValue: true; - - } - } - } - - // Expand property? - @if $expandProperty { - @each $vendor in $vendor-prefixes { - #{$vendor}#{$property}: #{str-replace-all($value, '-prefix-', $vendor)}; - } - } - - // Expand just the value? - @elseif $expandValue { - @each $vendor in $vendor-prefixes { - #{$property}: #{str-replace-all($value, '-prefix-', $vendor)}; - } - } - - // Neither? Treat them as a normal declaration. - @else { - #{$property}: #{$value}; - } - +// vendor.scss v1.0 | @ajlkn | MIT licensed */ + +// Vars. + + /// Vendor prefixes. + /// @var {list} + $vendor-prefixes: ( + '-moz-', + '-webkit-', + '-ms-', + '' + ); + + /// Properties that should be vendorized. + /// Data via caniuse.com, github.com/postcss/autoprefixer, and developer.mozilla.org + /// @var {list} + $vendor-properties: ( + + // Animation. + 'animation', + 'animation-delay', + 'animation-direction', + 'animation-duration', + 'animation-fill-mode', + 'animation-iteration-count', + 'animation-name', + 'animation-play-state', + 'animation-timing-function', + + // Appearance. + 'appearance', + + // Backdrop filter. + 'backdrop-filter', + + // Background image options. + 'background-clip', + 'background-origin', + 'background-size', + + // Box sizing. + 'box-sizing', + + // Clip path. + 'clip-path', + + // Filter effects. + 'filter', + + // Flexbox. + 'align-content', + 'align-items', + 'align-self', + 'flex', + 'flex-basis', + 'flex-direction', + 'flex-flow', + 'flex-grow', + 'flex-shrink', + 'flex-wrap', + 'justify-content', + 'order', + + // Font feature. + 'font-feature-settings', + 'font-language-override', + 'font-variant-ligatures', + + // Font kerning. + 'font-kerning', + + // Fragmented borders and backgrounds. + 'box-decoration-break', + + // Grid layout. + 'grid-column', + 'grid-column-align', + 'grid-column-end', + 'grid-column-start', + 'grid-row', + 'grid-row-align', + 'grid-row-end', + 'grid-row-start', + 'grid-template-columns', + 'grid-template-rows', + + // Hyphens. + 'hyphens', + 'word-break', + + // Masks. + 'mask', + 'mask-border', + 'mask-border-outset', + 'mask-border-repeat', + 'mask-border-slice', + 'mask-border-source', + 'mask-border-width', + 'mask-clip', + 'mask-composite', + 'mask-image', + 'mask-origin', + 'mask-position', + 'mask-repeat', + 'mask-size', + + // Multicolumn. + 'break-after', + 'break-before', + 'break-inside', + 'column-count', + 'column-fill', + 'column-gap', + 'column-rule', + 'column-rule-color', + 'column-rule-style', + 'column-rule-width', + 'column-span', + 'column-width', + 'columns', + + // Object fit. + 'object-fit', + 'object-position', + + // Regions. + 'flow-from', + 'flow-into', + 'region-fragment', + + // Scroll snap points. + 'scroll-snap-coordinate', + 'scroll-snap-destination', + 'scroll-snap-points-x', + 'scroll-snap-points-y', + 'scroll-snap-type', + + // Shapes. + 'shape-image-threshold', + 'shape-margin', + 'shape-outside', + + // Tab size. + 'tab-size', + + // Text align last. + 'text-align-last', + + // Text decoration. + 'text-decoration-color', + 'text-decoration-line', + 'text-decoration-skip', + 'text-decoration-style', + + // Text emphasis. + 'text-emphasis', + 'text-emphasis-color', + 'text-emphasis-position', + 'text-emphasis-style', + + // Text size adjust. + 'text-size-adjust', + + // Text spacing. + 'text-spacing', + + // Transform. + 'transform', + 'transform-origin', + + // Transform 3D. + 'backface-visibility', + 'perspective', + 'perspective-origin', + 'transform-style', + + // Transition. + 'transition', + 'transition-delay', + 'transition-duration', + 'transition-property', + 'transition-timing-function', + + // Unicode bidi. + 'unicode-bidi', + + // User select. + 'user-select', + + // Writing mode. + 'writing-mode', + + ); + + /// Values that should be vendorized. + /// Data via caniuse.com, github.com/postcss/autoprefixer, and developer.mozilla.org + /// @var {list} + $vendor-values: ( + + // Cross fade. + 'cross-fade', + + // Element function. + 'element', + + // Filter function. + 'filter', + + // Flexbox. + 'flex', + 'inline-flex', + + // Grab cursors. + 'grab', + 'grabbing', + + // Gradients. + 'linear-gradient', + 'repeating-linear-gradient', + 'radial-gradient', + 'repeating-radial-gradient', + + // Grid layout. + 'grid', + 'inline-grid', + + // Image set. + 'image-set', + + // Intrinsic width. + 'max-content', + 'min-content', + 'fit-content', + 'fill', + 'fill-available', + 'stretch', + + // Sticky position. + 'sticky', + + // Transform. + 'transform', + + // Zoom cursors. + 'zoom-in', + 'zoom-out', + + ); + +// Functions. + + /// Removes a specific item from a list. + /// @author Hugo Giraudel + /// @param {list} $list List. + /// @param {integer} $index Index. + /// @return {list} Updated list. + @function remove-nth($list, $index) { + + $result: null; + + @if type-of($index) != number { + @warn "$index: #{quote($index)} is not a number for `remove-nth`."; + } + @else if $index == 0 { + @warn "List index 0 must be a non-zero integer for `remove-nth`."; + } + @else if abs($index) > length($list) { + @warn "List index is #{$index} but list is only #{length($list)} item long for `remove-nth`."; + } + @else { + + $result: (); + $index: if($index < 0, length($list) + $index + 1, $index); + + @for $i from 1 through length($list) { + + @if $i != $index { + $result: append($result, nth($list, $i)); + } + + } + + } + + @return $result; + + } + + /// Replaces a substring within another string. + /// @author Hugo Giraudel + /// @param {string} $string String. + /// @param {string} $search Substring. + /// @param {string} $replace Replacement. + /// @return {string} Updated string. + @function str-replace($string, $search, $replace: '') { + + $index: str-index($string, $search); + + @if $index { + @return str-slice($string, 1, $index - 1) + $replace + str-replace(str-slice($string, $index + str-length($search)), $search, $replace); + } + + @return $string; + + } + + /// Replaces a substring within each string in a list. + /// @param {list} $strings List of strings. + /// @param {string} $search Substring. + /// @param {string} $replace Replacement. + /// @return {list} Updated list of strings. + @function str-replace-all($strings, $search, $replace: '') { + + @each $string in $strings { + $strings: set-nth($strings, index($strings, $string), str-replace($string, $search, $replace)); + } + + @return $strings; + + } + +// Mixins. + + /// Wraps @content in vendorized keyframe blocks. + /// @param {string} $name Name. + @mixin keyframes($name) { + + @-moz-keyframes #{$name} { @content; } + @-webkit-keyframes #{$name} { @content; } + @-ms-keyframes #{$name} { @content; } + @keyframes #{$name} { @content; } + + } + + /// Vendorizes a declaration's property and/or value(s). + /// @param {string} $property Property. + /// @param {mixed} $value String/list of value(s). + @mixin vendor($property, $value) { + + // Determine if property should expand. + $expandProperty: index($vendor-properties, $property); + + // Determine if value should expand (and if so, add '-prefix-' placeholder). + $expandValue: false; + + @each $x in $value { + @each $y in $vendor-values { + @if $y == str-slice($x, 1, str-length($y)) { + + $value: set-nth($value, index($value, $x), '-prefix-' + $x); + $expandValue: true; + + } + } + } + + // Expand property? + @if $expandProperty { + @each $vendor in $vendor-prefixes { + #{$vendor}#{$property}: #{str-replace-all($value, '-prefix-', $vendor)}; + } + } + + // Expand just the value? + @elseif $expandValue { + @each $vendor in $vendor-prefixes { + #{$property}: #{str-replace-all($value, '-prefix-', $vendor)}; + } + } + + // Neither? Treat them as a normal declaration. + @else { + #{$property}: #{$value}; + } + } \ No newline at end of file diff --git a/templates/download-linux.html b/templates/download-linux.html index 06e4fdb..fc13e7b 100644 --- a/templates/download-linux.html +++ b/templates/download-linux.html @@ -1,17 +1,17 @@ - + Spitfire Browser - Downloads - + diff --git a/templates/download.html b/templates/download.html index 1ea2add..367f69a 100644 --- a/templates/download.html +++ b/templates/download.html @@ -1,63 +1,63 @@ - - - Spitfire Browser - Downloads - - - - - - - - - - - - - - + .download-button span { + display: block; + margin-top: 0.5em; + font-size: 1.2em; + } + + diff --git a/templates/index.html b/templates/index.html index 760a900..92eb70e 100644 --- a/templates/index.html +++ b/templates/index.html @@ -1,17 +1,17 @@ - + Spitfire Browser - Fast. Secure. Elegant. - + diff --git a/templates/news.html b/templates/news.html index 0984ac2..ede05f6 100644 --- a/templates/news.html +++ b/templates/news.html @@ -1,115 +1,115 @@ - - - - - - {{.Title}} - - - - - - - - - - - - - - - - - - -

-
-
-
-
- - -
- 🚧👷‍♂️ This site is under construction! Please check back later. 👷‍♀️🚧 -
- - -
- - - - - -
- -
-
-
-

{{.Content}}

-
-
-
    - {{if .PrevLink}} -
  • Previous
  • - {{end}} -
  • Home
  • - {{if .NextLink}} -
  • Next
  • - {{end}} -
-
-
-
-
- - - -
- - - - - - - - - - - - + + + + + + {{.Title}} + + + + + + + + + + + + + + + + + + +
+
+
+
+
+ + +
+ 🚧👷‍♂️ This site is under construction! Please check back later. 👷‍♀️🚧 +
+ + +
+ + + + + +
+ +
+
+
+

{{.Content}}

+
+
+
    + {{if .PrevLink}} +
  • Previous
  • + {{end}} +
  • Home
  • + {{if .NextLink}} +
  • Next
  • + {{end}} +
+
+
+
+
+ + + +
+ + + + + + + + + + + +