Reset project
2
.gitignore
vendored
@ -21,3 +21,5 @@
|
||||
# Go workspace file
|
||||
go.work
|
||||
|
||||
tmp
|
||||
web/static/css/.DS_Store
|
||||
|
18
Dockerfile
Normal file
@ -0,0 +1,18 @@
|
||||
FROM golang:1.23 AS builder
|
||||
|
||||
WORKDIR /app
|
||||
COPY go.mod ./
|
||||
|
||||
ENV CGO_ENABLED=0
|
||||
RUN go mod download
|
||||
|
||||
COPY . .
|
||||
RUN go build -o server main.go
|
||||
|
||||
# Copy the server binary into a distroless container
|
||||
FROM gcr.io/distroless/static-debian12:nonroot
|
||||
COPY --from=builder /app/server /
|
||||
|
||||
CMD ["/server"]
|
||||
|
||||
USER nonroot
|
41
Makefile
@ -1,18 +1,27 @@
|
||||
TARGET = ./site
|
||||
.PHONY: dev build
|
||||
|
||||
.PHONY: clean distclean test components $(TARGET)
|
||||
dev:
|
||||
@if command -v $(HOME)/go/bin/air > /dev/null; then \
|
||||
AIR_CMD="$(HOME)/go/bin/air"; \
|
||||
elif command -v air > /dev/null; then \
|
||||
AIR_CMD="air"; \
|
||||
else \
|
||||
read -p "air is not installed. Install it? [Y/n] " choice; \
|
||||
if [ "$$choice" != "n" ] && [ "$$choice" != "N" ]; then \
|
||||
echo "Installing..."; \
|
||||
go install github.com/air-verse/air@latest; \
|
||||
AIR_CMD="$(HOME)/go/bin/air"; \
|
||||
else \
|
||||
echo "Exiting..."; \
|
||||
exit 1; \
|
||||
fi; \
|
||||
fi; \
|
||||
echo "Starting Air..."; \
|
||||
$$AIR_CMD
|
||||
|
||||
.NOTPARALLEL:
|
||||
|
||||
$(TARGET): components
|
||||
$(info ===> BUILD site)
|
||||
@go build ./cmd/site
|
||||
|
||||
components:
|
||||
$(info ===> BUILD templates)
|
||||
cd web/components && templ generate
|
||||
|
||||
clean:
|
||||
$(info ===> CLEAN)
|
||||
@go clean
|
||||
@rm -f $(TARGET)
|
||||
build:
|
||||
@echo "Generate Tailwind CSS..."
|
||||
go generate
|
||||
@echo "Building Go server..."
|
||||
go build -o tmp/server main.go
|
||||
@echo "Build complete."
|
||||
|
@ -1,41 +0,0 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"log/slog"
|
||||
"os"
|
||||
"os/signal"
|
||||
|
||||
"git.clustercockpit.org/moebiusband/go-http-skeleton/internal/util"
|
||||
"git.clustercockpit.org/moebiusband/go-http-skeleton/web"
|
||||
"github.com/joho/godotenv"
|
||||
)
|
||||
|
||||
func main() {
|
||||
godotenv.Load()
|
||||
|
||||
logger := slog.New(slog.NewJSONHandler(os.Stdout, nil))
|
||||
logger.Info("Starting http server")
|
||||
defer logger.Info("Stopping http server")
|
||||
|
||||
ctx, stop := signal.NotifyContext(context.Background(), os.Interrupt)
|
||||
defer stop()
|
||||
|
||||
if err := run(ctx); err != nil {
|
||||
logger.Error("Error running http server", slog.Any("err", err))
|
||||
os.Exit(1)
|
||||
}
|
||||
}
|
||||
|
||||
func run(ctx context.Context) error {
|
||||
eg := util.NewErrGroupSharedCtx(
|
||||
ctx,
|
||||
web.RunBlocking(8080),
|
||||
)
|
||||
if err := eg.Wait(); err != nil {
|
||||
return fmt.Errorf("error running http server: %w", err)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
@ -14,19 +14,26 @@ type PageData struct {
|
||||
|
||||
func RootHandler() http.HandlerFunc {
|
||||
return func(w http.ResponseWriter, r *http.Request) {
|
||||
file, err := web.Templates.ReadFile("templates/index.html")
|
||||
if err != nil {
|
||||
http.Error(w, "Internal Server Error", http.StatusInternalServerError)
|
||||
slog.Error("Error reading template", "error", err)
|
||||
return
|
||||
}
|
||||
slog.Info("Render root handler")
|
||||
tpl := template.Must(template.ParseFS(web.Templates, "templates/index.html", "templates/base.html"))
|
||||
|
||||
tmpl := template.Must(template.New("index.html").Parse(string(file)))
|
||||
// basefile, err := web.Templates.ReadFile("templates/base.html")
|
||||
// if err != nil {
|
||||
// http.Error(w, "Internal Server Error", http.StatusInternalServerError)
|
||||
// slog.Error("Error reading template", "error", err)
|
||||
// return
|
||||
// }
|
||||
// file, err := web.Templates.ReadFile("templates/index.html")
|
||||
// if err != nil {
|
||||
// http.Error(w, "Internal Server Error", http.StatusInternalServerError)
|
||||
// slog.Error("Error reading template", "error", err)
|
||||
// return
|
||||
// }
|
||||
|
||||
data := PageData{
|
||||
Title: "Home",
|
||||
Title: "DyeForYarn",
|
||||
}
|
||||
if err := tmpl.Execute(w, data); err != nil {
|
||||
if err := tpl.ExecuteTemplate(w, "base", data); err != nil {
|
||||
http.Error(w, "Internal Server Error", http.StatusInternalServerError)
|
||||
slog.Error("Error executing template", "error", err)
|
||||
}
|
||||
|
3
main.go
@ -24,6 +24,7 @@ func init() {
|
||||
if debug {
|
||||
programLevel = slog.LevelDebug
|
||||
}
|
||||
programLevel = slog.LevelDebug
|
||||
|
||||
if jsonLogger {
|
||||
jsonHandler := slog.NewJSONHandler(os.Stdout, &slog.HandlerOptions{
|
||||
@ -60,7 +61,7 @@ func main() {
|
||||
mux.Handle("GET /static/", http.StripPrefix("/static/", fileServer))
|
||||
|
||||
mux.HandleFunc("GET /favicon.ico", func(w http.ResponseWriter, r *http.Request) {
|
||||
data, err := static.ReadFile("web/static/img/favicon.ico")
|
||||
data, err := static.ReadFile("web/static/favicon.ico")
|
||||
if err != nil {
|
||||
http.NotFound(w, r)
|
||||
return
|
||||
|
Before Width: | Height: | Size: 12 KiB |
258
web/static/css/app.css
Normal file
@ -0,0 +1,258 @@
|
||||
body {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
font-family: "Palatino Linotype", "Book Antiqua", Palatino, serif;
|
||||
color: #000;
|
||||
background-color: #fff;
|
||||
}
|
||||
|
||||
html {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
h1,
|
||||
h2,
|
||||
h3,
|
||||
h4,
|
||||
h5,
|
||||
h6 {
|
||||
font-family: "Palatino Linotype", "Book Antiqua", Palatino, serif;
|
||||
/* font-weight: 700; */
|
||||
/* letter-spacing: 1px; */
|
||||
}
|
||||
|
||||
.newsitem h4 {
|
||||
margin: 0 0 15px;
|
||||
}
|
||||
|
||||
.newsitem p {
|
||||
margin: 0 0 5px;
|
||||
}
|
||||
|
||||
.newsfooter {
|
||||
margin: 0 0 30px;
|
||||
}
|
||||
|
||||
p {
|
||||
font-size: 20px;
|
||||
line-height: 1.5em;
|
||||
}
|
||||
|
||||
.modal {
|
||||
overflow: auto;
|
||||
color: #333;
|
||||
}
|
||||
|
||||
@media (min-width: 1200px) {
|
||||
.navbar {
|
||||
font-size: 20px;
|
||||
}
|
||||
}
|
||||
|
||||
.navbar-brand img {
|
||||
height: 30px;
|
||||
}
|
||||
|
||||
#langSelect {
|
||||
min-width: 40px;
|
||||
}
|
||||
|
||||
#impressum {
|
||||
padding-top: 100px;
|
||||
}
|
||||
|
||||
.featurette {
|
||||
text-align: justify;
|
||||
}
|
||||
|
||||
.featurette-heading {
|
||||
padding: 20px 0 0 0;
|
||||
}
|
||||
|
||||
.stockist-tile {
|
||||
width: 95%;
|
||||
font-size: 18px;
|
||||
}
|
||||
|
||||
.intro {
|
||||
display: table;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
padding: 100px 0;
|
||||
text-align: center;
|
||||
color: #000;
|
||||
background: url(../img/montage.jpg) no-repeat bottom center scroll;
|
||||
background-color: #fff;
|
||||
-webkit-background-size: cover;
|
||||
-moz-background-size: cover;
|
||||
background-size: cover;
|
||||
-o-background-size: cover;
|
||||
}
|
||||
|
||||
.intro .intro-body {
|
||||
display: table-cell;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.center-block {
|
||||
display: block;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
.btn-circle {
|
||||
width: 70px;
|
||||
height: 70px;
|
||||
margin-top: 15px;
|
||||
padding: 7px 16px;
|
||||
border-radius: 100% !important;
|
||||
font-size: 40px;
|
||||
color: #000;
|
||||
background: #fff;
|
||||
-webkit-transition: background 0.3s ease-in-out;
|
||||
-moz-transition: background 0.3s ease-in-out;
|
||||
transition: background 0.3s ease-in-out;
|
||||
}
|
||||
|
||||
.content-section {
|
||||
padding-top: 200px;
|
||||
}
|
||||
|
||||
footer {
|
||||
padding: 50px 0;
|
||||
}
|
||||
|
||||
footer p {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
#shop ul {
|
||||
list-style: disc;
|
||||
}
|
||||
|
||||
#shop li {
|
||||
text-align: left;
|
||||
font-size: 18px;
|
||||
}
|
||||
|
||||
address {
|
||||
font-size: 18px;
|
||||
}
|
||||
|
||||
body {
|
||||
webkit-tap-highlight-color: rgba(255, 255, 255, 0.2);
|
||||
}
|
||||
|
||||
footer {
|
||||
padding: 50px 0;
|
||||
}
|
||||
|
||||
footer p {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
#tagsselect {
|
||||
height: 250px;
|
||||
}
|
||||
|
||||
legend {
|
||||
color: #fff;
|
||||
background: #b8b8b8;
|
||||
padding: 2px 6px;
|
||||
}
|
||||
|
||||
legend {
|
||||
color: #fff;
|
||||
background: #b8b8b8;
|
||||
padding: 2px 6px;
|
||||
}
|
||||
|
||||
.imagewrapper {
|
||||
position: relative;
|
||||
height: 600px;
|
||||
width: 600px;
|
||||
}
|
||||
|
||||
.listbox {
|
||||
width: 50px;
|
||||
color: #fff;
|
||||
position: relative;
|
||||
float: left;
|
||||
}
|
||||
|
||||
.listbox img {
|
||||
width: 90%;
|
||||
height: auto;
|
||||
overflow: hidden;
|
||||
display: block;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
.box {
|
||||
width: 300px;
|
||||
height: 600px;
|
||||
color: #fff;
|
||||
position: relative;
|
||||
float: left;
|
||||
padding-top: 20px;
|
||||
}
|
||||
|
||||
.box img {
|
||||
width: 90%;
|
||||
height: auto;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.innerContent {
|
||||
position: absolute;
|
||||
left: 1px;
|
||||
right: 1px;
|
||||
top: 1px;
|
||||
bottom: 1px;
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
#listing ul li {
|
||||
list-style-type: none;
|
||||
display: block;
|
||||
}
|
||||
|
||||
table {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
th {
|
||||
background: #b8b8b8;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.content-admin {
|
||||
padding-top: 90px;
|
||||
}
|
||||
|
||||
.site-footer {
|
||||
flex: none;
|
||||
}
|
||||
|
||||
footer {
|
||||
width: 100%;
|
||||
padding: 0.1rem 1rem;
|
||||
line-height: 1.5;
|
||||
}
|
||||
|
||||
.footer-list {
|
||||
list-style-type: none;
|
||||
padding-left: 0;
|
||||
width: 100%;
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
justify-content: center;
|
||||
margin-top: 5px;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
|
||||
.footer-list-item {
|
||||
margin: 0rem 0.8rem;
|
||||
white-space: nowrap;
|
||||
}
|
4085
web/static/css/bootstrap-grid.css
vendored
Normal file
1
web/static/css/bootstrap-grid.css.map
Normal file
6
web/static/css/bootstrap-grid.min.css
vendored
Normal file
1
web/static/css/bootstrap-grid.min.css.map
Normal file
4084
web/static/css/bootstrap-grid.rtl.css
vendored
Normal file
1
web/static/css/bootstrap-grid.rtl.css.map
Normal file
6
web/static/css/bootstrap-grid.rtl.min.css
vendored
Normal file
1
web/static/css/bootstrap-grid.rtl.min.css.map
Normal file
2106
web/static/css/bootstrap-icons.css
vendored
Normal file
2080
web/static/css/bootstrap-icons.json
Normal file
5
web/static/css/bootstrap-icons.min.css
vendored
Normal file
597
web/static/css/bootstrap-reboot.css
vendored
Normal file
@ -0,0 +1,597 @@
|
||||
/*!
|
||||
* Bootstrap Reboot v5.3.6 (https://getbootstrap.com/)
|
||||
* Copyright 2011-2025 The Bootstrap Authors
|
||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
||||
*/
|
||||
:root,
|
||||
[data-bs-theme=light] {
|
||||
--bs-blue: #0d6efd;
|
||||
--bs-indigo: #6610f2;
|
||||
--bs-purple: #6f42c1;
|
||||
--bs-pink: #d63384;
|
||||
--bs-red: #dc3545;
|
||||
--bs-orange: #fd7e14;
|
||||
--bs-yellow: #ffc107;
|
||||
--bs-green: #198754;
|
||||
--bs-teal: #20c997;
|
||||
--bs-cyan: #0dcaf0;
|
||||
--bs-black: #000;
|
||||
--bs-white: #fff;
|
||||
--bs-gray: #6c757d;
|
||||
--bs-gray-dark: #343a40;
|
||||
--bs-gray-100: #f8f9fa;
|
||||
--bs-gray-200: #e9ecef;
|
||||
--bs-gray-300: #dee2e6;
|
||||
--bs-gray-400: #ced4da;
|
||||
--bs-gray-500: #adb5bd;
|
||||
--bs-gray-600: #6c757d;
|
||||
--bs-gray-700: #495057;
|
||||
--bs-gray-800: #343a40;
|
||||
--bs-gray-900: #212529;
|
||||
--bs-primary: #0d6efd;
|
||||
--bs-secondary: #6c757d;
|
||||
--bs-success: #198754;
|
||||
--bs-info: #0dcaf0;
|
||||
--bs-warning: #ffc107;
|
||||
--bs-danger: #dc3545;
|
||||
--bs-light: #f8f9fa;
|
||||
--bs-dark: #212529;
|
||||
--bs-primary-rgb: 13, 110, 253;
|
||||
--bs-secondary-rgb: 108, 117, 125;
|
||||
--bs-success-rgb: 25, 135, 84;
|
||||
--bs-info-rgb: 13, 202, 240;
|
||||
--bs-warning-rgb: 255, 193, 7;
|
||||
--bs-danger-rgb: 220, 53, 69;
|
||||
--bs-light-rgb: 248, 249, 250;
|
||||
--bs-dark-rgb: 33, 37, 41;
|
||||
--bs-primary-text-emphasis: #052c65;
|
||||
--bs-secondary-text-emphasis: #2b2f32;
|
||||
--bs-success-text-emphasis: #0a3622;
|
||||
--bs-info-text-emphasis: #055160;
|
||||
--bs-warning-text-emphasis: #664d03;
|
||||
--bs-danger-text-emphasis: #58151c;
|
||||
--bs-light-text-emphasis: #495057;
|
||||
--bs-dark-text-emphasis: #495057;
|
||||
--bs-primary-bg-subtle: #cfe2ff;
|
||||
--bs-secondary-bg-subtle: #e2e3e5;
|
||||
--bs-success-bg-subtle: #d1e7dd;
|
||||
--bs-info-bg-subtle: #cff4fc;
|
||||
--bs-warning-bg-subtle: #fff3cd;
|
||||
--bs-danger-bg-subtle: #f8d7da;
|
||||
--bs-light-bg-subtle: #fcfcfd;
|
||||
--bs-dark-bg-subtle: #ced4da;
|
||||
--bs-primary-border-subtle: #9ec5fe;
|
||||
--bs-secondary-border-subtle: #c4c8cb;
|
||||
--bs-success-border-subtle: #a3cfbb;
|
||||
--bs-info-border-subtle: #9eeaf9;
|
||||
--bs-warning-border-subtle: #ffe69c;
|
||||
--bs-danger-border-subtle: #f1aeb5;
|
||||
--bs-light-border-subtle: #e9ecef;
|
||||
--bs-dark-border-subtle: #adb5bd;
|
||||
--bs-white-rgb: 255, 255, 255;
|
||||
--bs-black-rgb: 0, 0, 0;
|
||||
--bs-font-sans-serif: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", "Liberation Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
|
||||
--bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
|
||||
--bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));
|
||||
--bs-body-font-family: var(--bs-font-sans-serif);
|
||||
--bs-body-font-size: 1rem;
|
||||
--bs-body-font-weight: 400;
|
||||
--bs-body-line-height: 1.5;
|
||||
--bs-body-color: #212529;
|
||||
--bs-body-color-rgb: 33, 37, 41;
|
||||
--bs-body-bg: #fff;
|
||||
--bs-body-bg-rgb: 255, 255, 255;
|
||||
--bs-emphasis-color: #000;
|
||||
--bs-emphasis-color-rgb: 0, 0, 0;
|
||||
--bs-secondary-color: rgba(33, 37, 41, 0.75);
|
||||
--bs-secondary-color-rgb: 33, 37, 41;
|
||||
--bs-secondary-bg: #e9ecef;
|
||||
--bs-secondary-bg-rgb: 233, 236, 239;
|
||||
--bs-tertiary-color: rgba(33, 37, 41, 0.5);
|
||||
--bs-tertiary-color-rgb: 33, 37, 41;
|
||||
--bs-tertiary-bg: #f8f9fa;
|
||||
--bs-tertiary-bg-rgb: 248, 249, 250;
|
||||
--bs-heading-color: inherit;
|
||||
--bs-link-color: #0d6efd;
|
||||
--bs-link-color-rgb: 13, 110, 253;
|
||||
--bs-link-decoration: underline;
|
||||
--bs-link-hover-color: #0a58ca;
|
||||
--bs-link-hover-color-rgb: 10, 88, 202;
|
||||
--bs-code-color: #d63384;
|
||||
--bs-highlight-color: #212529;
|
||||
--bs-highlight-bg: #fff3cd;
|
||||
--bs-border-width: 1px;
|
||||
--bs-border-style: solid;
|
||||
--bs-border-color: #dee2e6;
|
||||
--bs-border-color-translucent: rgba(0, 0, 0, 0.175);
|
||||
--bs-border-radius: 0.375rem;
|
||||
--bs-border-radius-sm: 0.25rem;
|
||||
--bs-border-radius-lg: 0.5rem;
|
||||
--bs-border-radius-xl: 1rem;
|
||||
--bs-border-radius-xxl: 2rem;
|
||||
--bs-border-radius-2xl: var(--bs-border-radius-xxl);
|
||||
--bs-border-radius-pill: 50rem;
|
||||
--bs-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);
|
||||
--bs-box-shadow-sm: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);
|
||||
--bs-box-shadow-lg: 0 1rem 3rem rgba(0, 0, 0, 0.175);
|
||||
--bs-box-shadow-inset: inset 0 1px 2px rgba(0, 0, 0, 0.075);
|
||||
--bs-focus-ring-width: 0.25rem;
|
||||
--bs-focus-ring-opacity: 0.25;
|
||||
--bs-focus-ring-color: rgba(13, 110, 253, 0.25);
|
||||
--bs-form-valid-color: #198754;
|
||||
--bs-form-valid-border-color: #198754;
|
||||
--bs-form-invalid-color: #dc3545;
|
||||
--bs-form-invalid-border-color: #dc3545;
|
||||
}
|
||||
|
||||
[data-bs-theme=dark] {
|
||||
color-scheme: dark;
|
||||
--bs-body-color: #dee2e6;
|
||||
--bs-body-color-rgb: 222, 226, 230;
|
||||
--bs-body-bg: #212529;
|
||||
--bs-body-bg-rgb: 33, 37, 41;
|
||||
--bs-emphasis-color: #fff;
|
||||
--bs-emphasis-color-rgb: 255, 255, 255;
|
||||
--bs-secondary-color: rgba(222, 226, 230, 0.75);
|
||||
--bs-secondary-color-rgb: 222, 226, 230;
|
||||
--bs-secondary-bg: #343a40;
|
||||
--bs-secondary-bg-rgb: 52, 58, 64;
|
||||
--bs-tertiary-color: rgba(222, 226, 230, 0.5);
|
||||
--bs-tertiary-color-rgb: 222, 226, 230;
|
||||
--bs-tertiary-bg: #2b3035;
|
||||
--bs-tertiary-bg-rgb: 43, 48, 53;
|
||||
--bs-primary-text-emphasis: #6ea8fe;
|
||||
--bs-secondary-text-emphasis: #a7acb1;
|
||||
--bs-success-text-emphasis: #75b798;
|
||||
--bs-info-text-emphasis: #6edff6;
|
||||
--bs-warning-text-emphasis: #ffda6a;
|
||||
--bs-danger-text-emphasis: #ea868f;
|
||||
--bs-light-text-emphasis: #f8f9fa;
|
||||
--bs-dark-text-emphasis: #dee2e6;
|
||||
--bs-primary-bg-subtle: #031633;
|
||||
--bs-secondary-bg-subtle: #161719;
|
||||
--bs-success-bg-subtle: #051b11;
|
||||
--bs-info-bg-subtle: #032830;
|
||||
--bs-warning-bg-subtle: #332701;
|
||||
--bs-danger-bg-subtle: #2c0b0e;
|
||||
--bs-light-bg-subtle: #343a40;
|
||||
--bs-dark-bg-subtle: #1a1d20;
|
||||
--bs-primary-border-subtle: #084298;
|
||||
--bs-secondary-border-subtle: #41464b;
|
||||
--bs-success-border-subtle: #0f5132;
|
||||
--bs-info-border-subtle: #087990;
|
||||
--bs-warning-border-subtle: #997404;
|
||||
--bs-danger-border-subtle: #842029;
|
||||
--bs-light-border-subtle: #495057;
|
||||
--bs-dark-border-subtle: #343a40;
|
||||
--bs-heading-color: inherit;
|
||||
--bs-link-color: #6ea8fe;
|
||||
--bs-link-hover-color: #8bb9fe;
|
||||
--bs-link-color-rgb: 110, 168, 254;
|
||||
--bs-link-hover-color-rgb: 139, 185, 254;
|
||||
--bs-code-color: #e685b5;
|
||||
--bs-highlight-color: #dee2e6;
|
||||
--bs-highlight-bg: #664d03;
|
||||
--bs-border-color: #495057;
|
||||
--bs-border-color-translucent: rgba(255, 255, 255, 0.15);
|
||||
--bs-form-valid-color: #75b798;
|
||||
--bs-form-valid-border-color: #75b798;
|
||||
--bs-form-invalid-color: #ea868f;
|
||||
--bs-form-invalid-border-color: #ea868f;
|
||||
}
|
||||
|
||||
*,
|
||||
*::before,
|
||||
*::after {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
@media (prefers-reduced-motion: no-preference) {
|
||||
:root {
|
||||
scroll-behavior: smooth;
|
||||
}
|
||||
}
|
||||
|
||||
body {
|
||||
margin: 0;
|
||||
font-family: var(--bs-body-font-family);
|
||||
font-size: var(--bs-body-font-size);
|
||||
font-weight: var(--bs-body-font-weight);
|
||||
line-height: var(--bs-body-line-height);
|
||||
color: var(--bs-body-color);
|
||||
text-align: var(--bs-body-text-align);
|
||||
background-color: var(--bs-body-bg);
|
||||
-webkit-text-size-adjust: 100%;
|
||||
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
|
||||
}
|
||||
|
||||
hr {
|
||||
margin: 1rem 0;
|
||||
color: inherit;
|
||||
border: 0;
|
||||
border-top: var(--bs-border-width) solid;
|
||||
opacity: 0.25;
|
||||
}
|
||||
|
||||
h6, h5, h4, h3, h2, h1 {
|
||||
margin-top: 0;
|
||||
margin-bottom: 0.5rem;
|
||||
font-weight: 500;
|
||||
line-height: 1.2;
|
||||
color: var(--bs-heading-color);
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-size: calc(1.375rem + 1.5vw);
|
||||
}
|
||||
@media (min-width: 1200px) {
|
||||
h1 {
|
||||
font-size: 2.5rem;
|
||||
}
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: calc(1.325rem + 0.9vw);
|
||||
}
|
||||
@media (min-width: 1200px) {
|
||||
h2 {
|
||||
font-size: 2rem;
|
||||
}
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-size: calc(1.3rem + 0.6vw);
|
||||
}
|
||||
@media (min-width: 1200px) {
|
||||
h3 {
|
||||
font-size: 1.75rem;
|
||||
}
|
||||
}
|
||||
|
||||
h4 {
|
||||
font-size: calc(1.275rem + 0.3vw);
|
||||
}
|
||||
@media (min-width: 1200px) {
|
||||
h4 {
|
||||
font-size: 1.5rem;
|
||||
}
|
||||
}
|
||||
|
||||
h5 {
|
||||
font-size: 1.25rem;
|
||||
}
|
||||
|
||||
h6 {
|
||||
font-size: 1rem;
|
||||
}
|
||||
|
||||
p {
|
||||
margin-top: 0;
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
|
||||
abbr[title] {
|
||||
-webkit-text-decoration: underline dotted;
|
||||
text-decoration: underline dotted;
|
||||
cursor: help;
|
||||
-webkit-text-decoration-skip-ink: none;
|
||||
text-decoration-skip-ink: none;
|
||||
}
|
||||
|
||||
address {
|
||||
margin-bottom: 1rem;
|
||||
font-style: normal;
|
||||
line-height: inherit;
|
||||
}
|
||||
|
||||
ol,
|
||||
ul {
|
||||
padding-left: 2rem;
|
||||
}
|
||||
|
||||
ol,
|
||||
ul,
|
||||
dl {
|
||||
margin-top: 0;
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
|
||||
ol ol,
|
||||
ul ul,
|
||||
ol ul,
|
||||
ul ol {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
dt {
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
dd {
|
||||
margin-bottom: 0.5rem;
|
||||
margin-left: 0;
|
||||
}
|
||||
|
||||
blockquote {
|
||||
margin: 0 0 1rem;
|
||||
}
|
||||
|
||||
b,
|
||||
strong {
|
||||
font-weight: bolder;
|
||||
}
|
||||
|
||||
small {
|
||||
font-size: 0.875em;
|
||||
}
|
||||
|
||||
mark {
|
||||
padding: 0.1875em;
|
||||
color: var(--bs-highlight-color);
|
||||
background-color: var(--bs-highlight-bg);
|
||||
}
|
||||
|
||||
sub,
|
||||
sup {
|
||||
position: relative;
|
||||
font-size: 0.75em;
|
||||
line-height: 0;
|
||||
vertical-align: baseline;
|
||||
}
|
||||
|
||||
sub {
|
||||
bottom: -0.25em;
|
||||
}
|
||||
|
||||
sup {
|
||||
top: -0.5em;
|
||||
}
|
||||
|
||||
a {
|
||||
color: rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, 1));
|
||||
text-decoration: underline;
|
||||
}
|
||||
a:hover {
|
||||
--bs-link-color-rgb: var(--bs-link-hover-color-rgb);
|
||||
}
|
||||
|
||||
a:not([href]):not([class]), a:not([href]):not([class]):hover {
|
||||
color: inherit;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
pre,
|
||||
code,
|
||||
kbd,
|
||||
samp {
|
||||
font-family: var(--bs-font-monospace);
|
||||
font-size: 1em;
|
||||
}
|
||||
|
||||
pre {
|
||||
display: block;
|
||||
margin-top: 0;
|
||||
margin-bottom: 1rem;
|
||||
overflow: auto;
|
||||
font-size: 0.875em;
|
||||
}
|
||||
pre code {
|
||||
font-size: inherit;
|
||||
color: inherit;
|
||||
word-break: normal;
|
||||
}
|
||||
|
||||
code {
|
||||
font-size: 0.875em;
|
||||
color: var(--bs-code-color);
|
||||
word-wrap: break-word;
|
||||
}
|
||||
a > code {
|
||||
color: inherit;
|
||||
}
|
||||
|
||||
kbd {
|
||||
padding: 0.1875rem 0.375rem;
|
||||
font-size: 0.875em;
|
||||
color: var(--bs-body-bg);
|
||||
background-color: var(--bs-body-color);
|
||||
border-radius: 0.25rem;
|
||||
}
|
||||
kbd kbd {
|
||||
padding: 0;
|
||||
font-size: 1em;
|
||||
}
|
||||
|
||||
figure {
|
||||
margin: 0 0 1rem;
|
||||
}
|
||||
|
||||
img,
|
||||
svg {
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
table {
|
||||
caption-side: bottom;
|
||||
border-collapse: collapse;
|
||||
}
|
||||
|
||||
caption {
|
||||
padding-top: 0.5rem;
|
||||
padding-bottom: 0.5rem;
|
||||
color: var(--bs-secondary-color);
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
th {
|
||||
text-align: inherit;
|
||||
text-align: -webkit-match-parent;
|
||||
}
|
||||
|
||||
thead,
|
||||
tbody,
|
||||
tfoot,
|
||||
tr,
|
||||
td,
|
||||
th {
|
||||
border-color: inherit;
|
||||
border-style: solid;
|
||||
border-width: 0;
|
||||
}
|
||||
|
||||
label {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
button {
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
button:focus:not(:focus-visible) {
|
||||
outline: 0;
|
||||
}
|
||||
|
||||
input,
|
||||
button,
|
||||
select,
|
||||
optgroup,
|
||||
textarea {
|
||||
margin: 0;
|
||||
font-family: inherit;
|
||||
font-size: inherit;
|
||||
line-height: inherit;
|
||||
}
|
||||
|
||||
button,
|
||||
select {
|
||||
text-transform: none;
|
||||
}
|
||||
|
||||
[role=button] {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
select {
|
||||
word-wrap: normal;
|
||||
}
|
||||
select:disabled {
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
button,
|
||||
[type=button],
|
||||
[type=reset],
|
||||
[type=submit] {
|
||||
-webkit-appearance: button;
|
||||
}
|
||||
button:not(:disabled),
|
||||
[type=button]:not(:disabled),
|
||||
[type=reset]:not(:disabled),
|
||||
[type=submit]:not(:disabled) {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
::-moz-focus-inner {
|
||||
padding: 0;
|
||||
border-style: none;
|
||||
}
|
||||
|
||||
textarea {
|
||||
resize: vertical;
|
||||
}
|
||||
|
||||
fieldset {
|
||||
min-width: 0;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
border: 0;
|
||||
}
|
||||
|
||||
legend {
|
||||
float: left;
|
||||
width: 100%;
|
||||
padding: 0;
|
||||
margin-bottom: 0.5rem;
|
||||
line-height: inherit;
|
||||
font-size: calc(1.275rem + 0.3vw);
|
||||
}
|
||||
@media (min-width: 1200px) {
|
||||
legend {
|
||||
font-size: 1.5rem;
|
||||
}
|
||||
}
|
||||
legend + * {
|
||||
clear: left;
|
||||
}
|
||||
|
||||
::-webkit-datetime-edit-fields-wrapper,
|
||||
::-webkit-datetime-edit-text,
|
||||
::-webkit-datetime-edit-minute,
|
||||
::-webkit-datetime-edit-hour-field,
|
||||
::-webkit-datetime-edit-day-field,
|
||||
::-webkit-datetime-edit-month-field,
|
||||
::-webkit-datetime-edit-year-field {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
::-webkit-inner-spin-button {
|
||||
height: auto;
|
||||
}
|
||||
|
||||
[type=search] {
|
||||
-webkit-appearance: textfield;
|
||||
outline-offset: -2px;
|
||||
}
|
||||
|
||||
/* rtl:raw:
|
||||
[type="tel"],
|
||||
[type="url"],
|
||||
[type="email"],
|
||||
[type="number"] {
|
||||
direction: ltr;
|
||||
}
|
||||
*/
|
||||
::-webkit-search-decoration {
|
||||
-webkit-appearance: none;
|
||||
}
|
||||
|
||||
::-webkit-color-swatch-wrapper {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
::-webkit-file-upload-button {
|
||||
font: inherit;
|
||||
-webkit-appearance: button;
|
||||
}
|
||||
|
||||
::file-selector-button {
|
||||
font: inherit;
|
||||
-webkit-appearance: button;
|
||||
}
|
||||
|
||||
output {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
iframe {
|
||||
border: 0;
|
||||
}
|
||||
|
||||
summary {
|
||||
display: list-item;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
progress {
|
||||
vertical-align: baseline;
|
||||
}
|
||||
|
||||
[hidden] {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
/*# sourceMappingURL=bootstrap-reboot.css.map */
|
1
web/static/css/bootstrap-reboot.css.map
Normal file
6
web/static/css/bootstrap-reboot.min.css
vendored
Normal file
1
web/static/css/bootstrap-reboot.min.css.map
Normal file
594
web/static/css/bootstrap-reboot.rtl.css
vendored
Normal file
@ -0,0 +1,594 @@
|
||||
/*!
|
||||
* Bootstrap Reboot v5.3.6 (https://getbootstrap.com/)
|
||||
* Copyright 2011-2025 The Bootstrap Authors
|
||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
|
||||
*/
|
||||
:root,
|
||||
[data-bs-theme=light] {
|
||||
--bs-blue: #0d6efd;
|
||||
--bs-indigo: #6610f2;
|
||||
--bs-purple: #6f42c1;
|
||||
--bs-pink: #d63384;
|
||||
--bs-red: #dc3545;
|
||||
--bs-orange: #fd7e14;
|
||||
--bs-yellow: #ffc107;
|
||||
--bs-green: #198754;
|
||||
--bs-teal: #20c997;
|
||||
--bs-cyan: #0dcaf0;
|
||||
--bs-black: #000;
|
||||
--bs-white: #fff;
|
||||
--bs-gray: #6c757d;
|
||||
--bs-gray-dark: #343a40;
|
||||
--bs-gray-100: #f8f9fa;
|
||||
--bs-gray-200: #e9ecef;
|
||||
--bs-gray-300: #dee2e6;
|
||||
--bs-gray-400: #ced4da;
|
||||
--bs-gray-500: #adb5bd;
|
||||
--bs-gray-600: #6c757d;
|
||||
--bs-gray-700: #495057;
|
||||
--bs-gray-800: #343a40;
|
||||
--bs-gray-900: #212529;
|
||||
--bs-primary: #0d6efd;
|
||||
--bs-secondary: #6c757d;
|
||||
--bs-success: #198754;
|
||||
--bs-info: #0dcaf0;
|
||||
--bs-warning: #ffc107;
|
||||
--bs-danger: #dc3545;
|
||||
--bs-light: #f8f9fa;
|
||||
--bs-dark: #212529;
|
||||
--bs-primary-rgb: 13, 110, 253;
|
||||
--bs-secondary-rgb: 108, 117, 125;
|
||||
--bs-success-rgb: 25, 135, 84;
|
||||
--bs-info-rgb: 13, 202, 240;
|
||||
--bs-warning-rgb: 255, 193, 7;
|
||||
--bs-danger-rgb: 220, 53, 69;
|
||||
--bs-light-rgb: 248, 249, 250;
|
||||
--bs-dark-rgb: 33, 37, 41;
|
||||
--bs-primary-text-emphasis: #052c65;
|
||||
--bs-secondary-text-emphasis: #2b2f32;
|
||||
--bs-success-text-emphasis: #0a3622;
|
||||
--bs-info-text-emphasis: #055160;
|
||||
--bs-warning-text-emphasis: #664d03;
|
||||
--bs-danger-text-emphasis: #58151c;
|
||||
--bs-light-text-emphasis: #495057;
|
||||
--bs-dark-text-emphasis: #495057;
|
||||
--bs-primary-bg-subtle: #cfe2ff;
|
||||
--bs-secondary-bg-subtle: #e2e3e5;
|
||||
--bs-success-bg-subtle: #d1e7dd;
|
||||
--bs-info-bg-subtle: #cff4fc;
|
||||
--bs-warning-bg-subtle: #fff3cd;
|
||||
--bs-danger-bg-subtle: #f8d7da;
|
||||
--bs-light-bg-subtle: #fcfcfd;
|
||||
--bs-dark-bg-subtle: #ced4da;
|
||||
--bs-primary-border-subtle: #9ec5fe;
|
||||
--bs-secondary-border-subtle: #c4c8cb;
|
||||
--bs-success-border-subtle: #a3cfbb;
|
||||
--bs-info-border-subtle: #9eeaf9;
|
||||
--bs-warning-border-subtle: #ffe69c;
|
||||
--bs-danger-border-subtle: #f1aeb5;
|
||||
--bs-light-border-subtle: #e9ecef;
|
||||
--bs-dark-border-subtle: #adb5bd;
|
||||
--bs-white-rgb: 255, 255, 255;
|
||||
--bs-black-rgb: 0, 0, 0;
|
||||
--bs-font-sans-serif: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", "Liberation Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
|
||||
--bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
|
||||
--bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));
|
||||
--bs-body-font-family: var(--bs-font-sans-serif);
|
||||
--bs-body-font-size: 1rem;
|
||||
--bs-body-font-weight: 400;
|
||||
--bs-body-line-height: 1.5;
|
||||
--bs-body-color: #212529;
|
||||
--bs-body-color-rgb: 33, 37, 41;
|
||||
--bs-body-bg: #fff;
|
||||
--bs-body-bg-rgb: 255, 255, 255;
|
||||
--bs-emphasis-color: #000;
|
||||
--bs-emphasis-color-rgb: 0, 0, 0;
|
||||
--bs-secondary-color: rgba(33, 37, 41, 0.75);
|
||||
--bs-secondary-color-rgb: 33, 37, 41;
|
||||
--bs-secondary-bg: #e9ecef;
|
||||
--bs-secondary-bg-rgb: 233, 236, 239;
|
||||
--bs-tertiary-color: rgba(33, 37, 41, 0.5);
|
||||
--bs-tertiary-color-rgb: 33, 37, 41;
|
||||
--bs-tertiary-bg: #f8f9fa;
|
||||
--bs-tertiary-bg-rgb: 248, 249, 250;
|
||||
--bs-heading-color: inherit;
|
||||
--bs-link-color: #0d6efd;
|
||||
--bs-link-color-rgb: 13, 110, 253;
|
||||
--bs-link-decoration: underline;
|
||||
--bs-link-hover-color: #0a58ca;
|
||||
--bs-link-hover-color-rgb: 10, 88, 202;
|
||||
--bs-code-color: #d63384;
|
||||
--bs-highlight-color: #212529;
|
||||
--bs-highlight-bg: #fff3cd;
|
||||
--bs-border-width: 1px;
|
||||
--bs-border-style: solid;
|
||||
--bs-border-color: #dee2e6;
|
||||
--bs-border-color-translucent: rgba(0, 0, 0, 0.175);
|
||||
--bs-border-radius: 0.375rem;
|
||||
--bs-border-radius-sm: 0.25rem;
|
||||
--bs-border-radius-lg: 0.5rem;
|
||||
--bs-border-radius-xl: 1rem;
|
||||
--bs-border-radius-xxl: 2rem;
|
||||
--bs-border-radius-2xl: var(--bs-border-radius-xxl);
|
||||
--bs-border-radius-pill: 50rem;
|
||||
--bs-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);
|
||||
--bs-box-shadow-sm: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);
|
||||
--bs-box-shadow-lg: 0 1rem 3rem rgba(0, 0, 0, 0.175);
|
||||
--bs-box-shadow-inset: inset 0 1px 2px rgba(0, 0, 0, 0.075);
|
||||
--bs-focus-ring-width: 0.25rem;
|
||||
--bs-focus-ring-opacity: 0.25;
|
||||
--bs-focus-ring-color: rgba(13, 110, 253, 0.25);
|
||||
--bs-form-valid-color: #198754;
|
||||
--bs-form-valid-border-color: #198754;
|
||||
--bs-form-invalid-color: #dc3545;
|
||||
--bs-form-invalid-border-color: #dc3545;
|
||||
}
|
||||
|
||||
[data-bs-theme=dark] {
|
||||
color-scheme: dark;
|
||||
--bs-body-color: #dee2e6;
|
||||
--bs-body-color-rgb: 222, 226, 230;
|
||||
--bs-body-bg: #212529;
|
||||
--bs-body-bg-rgb: 33, 37, 41;
|
||||
--bs-emphasis-color: #fff;
|
||||
--bs-emphasis-color-rgb: 255, 255, 255;
|
||||
--bs-secondary-color: rgba(222, 226, 230, 0.75);
|
||||
--bs-secondary-color-rgb: 222, 226, 230;
|
||||
--bs-secondary-bg: #343a40;
|
||||
--bs-secondary-bg-rgb: 52, 58, 64;
|
||||
--bs-tertiary-color: rgba(222, 226, 230, 0.5);
|
||||
--bs-tertiary-color-rgb: 222, 226, 230;
|
||||
--bs-tertiary-bg: #2b3035;
|
||||
--bs-tertiary-bg-rgb: 43, 48, 53;
|
||||
--bs-primary-text-emphasis: #6ea8fe;
|
||||
--bs-secondary-text-emphasis: #a7acb1;
|
||||
--bs-success-text-emphasis: #75b798;
|
||||
--bs-info-text-emphasis: #6edff6;
|
||||
--bs-warning-text-emphasis: #ffda6a;
|
||||
--bs-danger-text-emphasis: #ea868f;
|
||||
--bs-light-text-emphasis: #f8f9fa;
|
||||
--bs-dark-text-emphasis: #dee2e6;
|
||||
--bs-primary-bg-subtle: #031633;
|
||||
--bs-secondary-bg-subtle: #161719;
|
||||
--bs-success-bg-subtle: #051b11;
|
||||
--bs-info-bg-subtle: #032830;
|
||||
--bs-warning-bg-subtle: #332701;
|
||||
--bs-danger-bg-subtle: #2c0b0e;
|
||||
--bs-light-bg-subtle: #343a40;
|
||||
--bs-dark-bg-subtle: #1a1d20;
|
||||
--bs-primary-border-subtle: #084298;
|
||||
--bs-secondary-border-subtle: #41464b;
|
||||
--bs-success-border-subtle: #0f5132;
|
||||
--bs-info-border-subtle: #087990;
|
||||
--bs-warning-border-subtle: #997404;
|
||||
--bs-danger-border-subtle: #842029;
|
||||
--bs-light-border-subtle: #495057;
|
||||
--bs-dark-border-subtle: #343a40;
|
||||
--bs-heading-color: inherit;
|
||||
--bs-link-color: #6ea8fe;
|
||||
--bs-link-hover-color: #8bb9fe;
|
||||
--bs-link-color-rgb: 110, 168, 254;
|
||||
--bs-link-hover-color-rgb: 139, 185, 254;
|
||||
--bs-code-color: #e685b5;
|
||||
--bs-highlight-color: #dee2e6;
|
||||
--bs-highlight-bg: #664d03;
|
||||
--bs-border-color: #495057;
|
||||
--bs-border-color-translucent: rgba(255, 255, 255, 0.15);
|
||||
--bs-form-valid-color: #75b798;
|
||||
--bs-form-valid-border-color: #75b798;
|
||||
--bs-form-invalid-color: #ea868f;
|
||||
--bs-form-invalid-border-color: #ea868f;
|
||||
}
|
||||
|
||||
*,
|
||||
*::before,
|
||||
*::after {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
@media (prefers-reduced-motion: no-preference) {
|
||||
:root {
|
||||
scroll-behavior: smooth;
|
||||
}
|
||||
}
|
||||
|
||||
body {
|
||||
margin: 0;
|
||||
font-family: var(--bs-body-font-family);
|
||||
font-size: var(--bs-body-font-size);
|
||||
font-weight: var(--bs-body-font-weight);
|
||||
line-height: var(--bs-body-line-height);
|
||||
color: var(--bs-body-color);
|
||||
text-align: var(--bs-body-text-align);
|
||||
background-color: var(--bs-body-bg);
|
||||
-webkit-text-size-adjust: 100%;
|
||||
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
|
||||
}
|
||||
|
||||
hr {
|
||||
margin: 1rem 0;
|
||||
color: inherit;
|
||||
border: 0;
|
||||
border-top: var(--bs-border-width) solid;
|
||||
opacity: 0.25;
|
||||
}
|
||||
|
||||
h6, h5, h4, h3, h2, h1 {
|
||||
margin-top: 0;
|
||||
margin-bottom: 0.5rem;
|
||||
font-weight: 500;
|
||||
line-height: 1.2;
|
||||
color: var(--bs-heading-color);
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-size: calc(1.375rem + 1.5vw);
|
||||
}
|
||||
@media (min-width: 1200px) {
|
||||
h1 {
|
||||
font-size: 2.5rem;
|
||||
}
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: calc(1.325rem + 0.9vw);
|
||||
}
|
||||
@media (min-width: 1200px) {
|
||||
h2 {
|
||||
font-size: 2rem;
|
||||
}
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-size: calc(1.3rem + 0.6vw);
|
||||
}
|
||||
@media (min-width: 1200px) {
|
||||
h3 {
|
||||
font-size: 1.75rem;
|
||||
}
|
||||
}
|
||||
|
||||
h4 {
|
||||
font-size: calc(1.275rem + 0.3vw);
|
||||
}
|
||||
@media (min-width: 1200px) {
|
||||
h4 {
|
||||
font-size: 1.5rem;
|
||||
}
|
||||
}
|
||||
|
||||
h5 {
|
||||
font-size: 1.25rem;
|
||||
}
|
||||
|
||||
h6 {
|
||||
font-size: 1rem;
|
||||
}
|
||||
|
||||
p {
|
||||
margin-top: 0;
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
|
||||
abbr[title] {
|
||||
-webkit-text-decoration: underline dotted;
|
||||
text-decoration: underline dotted;
|
||||
cursor: help;
|
||||
-webkit-text-decoration-skip-ink: none;
|
||||
text-decoration-skip-ink: none;
|
||||
}
|
||||
|
||||
address {
|
||||
margin-bottom: 1rem;
|
||||
font-style: normal;
|
||||
line-height: inherit;
|
||||
}
|
||||
|
||||
ol,
|
||||
ul {
|
||||
padding-right: 2rem;
|
||||
}
|
||||
|
||||
ol,
|
||||
ul,
|
||||
dl {
|
||||
margin-top: 0;
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
|
||||
ol ol,
|
||||
ul ul,
|
||||
ol ul,
|
||||
ul ol {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
dt {
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
dd {
|
||||
margin-bottom: 0.5rem;
|
||||
margin-right: 0;
|
||||
}
|
||||
|
||||
blockquote {
|
||||
margin: 0 0 1rem;
|
||||
}
|
||||
|
||||
b,
|
||||
strong {
|
||||
font-weight: bolder;
|
||||
}
|
||||
|
||||
small {
|
||||
font-size: 0.875em;
|
||||
}
|
||||
|
||||
mark {
|
||||
padding: 0.1875em;
|
||||
color: var(--bs-highlight-color);
|
||||
background-color: var(--bs-highlight-bg);
|
||||
}
|
||||
|
||||
sub,
|
||||
sup {
|
||||
position: relative;
|
||||
font-size: 0.75em;
|
||||
line-height: 0;
|
||||
vertical-align: baseline;
|
||||
}
|
||||
|
||||
sub {
|
||||
bottom: -0.25em;
|
||||
}
|
||||
|
||||
sup {
|
||||
top: -0.5em;
|
||||
}
|
||||
|
||||
a {
|
||||
color: rgba(var(--bs-link-color-rgb), var(--bs-link-opacity, 1));
|
||||
text-decoration: underline;
|
||||
}
|
||||
a:hover {
|
||||
--bs-link-color-rgb: var(--bs-link-hover-color-rgb);
|
||||
}
|
||||
|
||||
a:not([href]):not([class]), a:not([href]):not([class]):hover {
|
||||
color: inherit;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
pre,
|
||||
code,
|
||||
kbd,
|
||||
samp {
|
||||
font-family: var(--bs-font-monospace);
|
||||
font-size: 1em;
|
||||
}
|
||||
|
||||
pre {
|
||||
display: block;
|
||||
margin-top: 0;
|
||||
margin-bottom: 1rem;
|
||||
overflow: auto;
|
||||
font-size: 0.875em;
|
||||
}
|
||||
pre code {
|
||||
font-size: inherit;
|
||||
color: inherit;
|
||||
word-break: normal;
|
||||
}
|
||||
|
||||
code {
|
||||
font-size: 0.875em;
|
||||
color: var(--bs-code-color);
|
||||
word-wrap: break-word;
|
||||
}
|
||||
a > code {
|
||||
color: inherit;
|
||||
}
|
||||
|
||||
kbd {
|
||||
padding: 0.1875rem 0.375rem;
|
||||
font-size: 0.875em;
|
||||
color: var(--bs-body-bg);
|
||||
background-color: var(--bs-body-color);
|
||||
border-radius: 0.25rem;
|
||||
}
|
||||
kbd kbd {
|
||||
padding: 0;
|
||||
font-size: 1em;
|
||||
}
|
||||
|
||||
figure {
|
||||
margin: 0 0 1rem;
|
||||
}
|
||||
|
||||
img,
|
||||
svg {
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
table {
|
||||
caption-side: bottom;
|
||||
border-collapse: collapse;
|
||||
}
|
||||
|
||||
caption {
|
||||
padding-top: 0.5rem;
|
||||
padding-bottom: 0.5rem;
|
||||
color: var(--bs-secondary-color);
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
th {
|
||||
text-align: inherit;
|
||||
text-align: -webkit-match-parent;
|
||||
}
|
||||
|
||||
thead,
|
||||
tbody,
|
||||
tfoot,
|
||||
tr,
|
||||
td,
|
||||
th {
|
||||
border-color: inherit;
|
||||
border-style: solid;
|
||||
border-width: 0;
|
||||
}
|
||||
|
||||
label {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
button {
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
button:focus:not(:focus-visible) {
|
||||
outline: 0;
|
||||
}
|
||||
|
||||
input,
|
||||
button,
|
||||
select,
|
||||
optgroup,
|
||||
textarea {
|
||||
margin: 0;
|
||||
font-family: inherit;
|
||||
font-size: inherit;
|
||||
line-height: inherit;
|
||||
}
|
||||
|
||||
button,
|
||||
select {
|
||||
text-transform: none;
|
||||
}
|
||||
|
||||
[role=button] {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
select {
|
||||
word-wrap: normal;
|
||||
}
|
||||
select:disabled {
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
[list]:not([type=date]):not([type=datetime-local]):not([type=month]):not([type=week]):not([type=time])::-webkit-calendar-picker-indicator {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
button,
|
||||
[type=button],
|
||||
[type=reset],
|
||||
[type=submit] {
|
||||
-webkit-appearance: button;
|
||||
}
|
||||
button:not(:disabled),
|
||||
[type=button]:not(:disabled),
|
||||
[type=reset]:not(:disabled),
|
||||
[type=submit]:not(:disabled) {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
::-moz-focus-inner {
|
||||
padding: 0;
|
||||
border-style: none;
|
||||
}
|
||||
|
||||
textarea {
|
||||
resize: vertical;
|
||||
}
|
||||
|
||||
fieldset {
|
||||
min-width: 0;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
border: 0;
|
||||
}
|
||||
|
||||
legend {
|
||||
float: right;
|
||||
width: 100%;
|
||||
padding: 0;
|
||||
margin-bottom: 0.5rem;
|
||||
line-height: inherit;
|
||||
font-size: calc(1.275rem + 0.3vw);
|
||||
}
|
||||
@media (min-width: 1200px) {
|
||||
legend {
|
||||
font-size: 1.5rem;
|
||||
}
|
||||
}
|
||||
legend + * {
|
||||
clear: right;
|
||||
}
|
||||
|
||||
::-webkit-datetime-edit-fields-wrapper,
|
||||
::-webkit-datetime-edit-text,
|
||||
::-webkit-datetime-edit-minute,
|
||||
::-webkit-datetime-edit-hour-field,
|
||||
::-webkit-datetime-edit-day-field,
|
||||
::-webkit-datetime-edit-month-field,
|
||||
::-webkit-datetime-edit-year-field {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
::-webkit-inner-spin-button {
|
||||
height: auto;
|
||||
}
|
||||
|
||||
[type=search] {
|
||||
-webkit-appearance: textfield;
|
||||
outline-offset: -2px;
|
||||
}
|
||||
|
||||
[type="tel"],
|
||||
[type="url"],
|
||||
[type="email"],
|
||||
[type="number"] {
|
||||
direction: ltr;
|
||||
}
|
||||
::-webkit-search-decoration {
|
||||
-webkit-appearance: none;
|
||||
}
|
||||
|
||||
::-webkit-color-swatch-wrapper {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
::-webkit-file-upload-button {
|
||||
font: inherit;
|
||||
-webkit-appearance: button;
|
||||
}
|
||||
|
||||
::file-selector-button {
|
||||
font: inherit;
|
||||
-webkit-appearance: button;
|
||||
}
|
||||
|
||||
output {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
iframe {
|
||||
border: 0;
|
||||
}
|
||||
|
||||
summary {
|
||||
display: list-item;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
progress {
|
||||
vertical-align: baseline;
|
||||
}
|
||||
|
||||
[hidden] {
|
||||
display: none !important;
|
||||
}
|
||||
/*# sourceMappingURL=bootstrap-reboot.rtl.css.map */
|
1
web/static/css/bootstrap-reboot.rtl.css.map
Normal file
6
web/static/css/bootstrap-reboot.rtl.min.css
vendored
Normal file
1
web/static/css/bootstrap-reboot.rtl.min.css.map
Normal file
5406
web/static/css/bootstrap-utilities.css
vendored
Normal file
1
web/static/css/bootstrap-utilities.css.map
Normal file
6
web/static/css/bootstrap-utilities.min.css
vendored
Normal file
1
web/static/css/bootstrap-utilities.min.css.map
Normal file
5397
web/static/css/bootstrap-utilities.rtl.css
vendored
Normal file
1
web/static/css/bootstrap-utilities.rtl.css.map
Normal file
6
web/static/css/bootstrap-utilities.rtl.min.css
vendored
Normal file
1
web/static/css/bootstrap-utilities.rtl.min.css.map
Normal file
12043
web/static/css/bootstrap.css
vendored
Normal file
1
web/static/css/bootstrap.css.map
Normal file
6
web/static/css/bootstrap.min.css
vendored
Normal file
1
web/static/css/bootstrap.min.css.map
Normal file
12016
web/static/css/bootstrap.rtl.css
vendored
Normal file
1
web/static/css/bootstrap.rtl.css.map
Normal file
6
web/static/css/bootstrap.rtl.min.css
vendored
Normal file
1
web/static/css/bootstrap.rtl.min.css.map
Normal file
@ -1,51 +0,0 @@
|
||||
@font-face {
|
||||
font-display:swap;
|
||||
font-family:"flowtext";
|
||||
font-style:normal;
|
||||
font-weight:normal;
|
||||
src:
|
||||
url("fonts/poppins-western.woff2") format("woff2"),
|
||||
url("fonts/poppins-western.woff") format("woff");
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-display:swap;
|
||||
font-family:"flowtext";
|
||||
font-style:normal;
|
||||
font-weight:bold;
|
||||
src:
|
||||
url("fonts/poppins-western-bold.woff2") format("woff2"),
|
||||
url("fonts/poppins-western-bold.woff") format("woff");
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-display:swap;
|
||||
font-family:interface;
|
||||
font-style:normal;
|
||||
font-weight:normal;
|
||||
src:
|
||||
url("fonts/interface-Regular.woff2") format("woff2"),
|
||||
url("fonts/interface-Regular.woff") format("woff");
|
||||
}
|
||||
|
||||
[class*="icon_"]:not(.iconAfter):before,
|
||||
[class*="icon_"].iconAfter:after {
|
||||
content:var(--iconChar);
|
||||
display:inline-block;
|
||||
vertical-align:middle;
|
||||
position:relative;
|
||||
font-family:interface;
|
||||
font-weight:normal;
|
||||
line-height:1;
|
||||
}
|
||||
|
||||
.icon_x { --iconChar:"\E61B"; }
|
||||
.icon_close { --iconChar:"\F00D"; }
|
||||
.icon_linkedIn { --iconChar:"\F08C"; }
|
||||
.icon_facebook { --iconChar:"\F09A"; }
|
||||
.icon_medium { --iconChar:"\F23A"; }
|
||||
.icon_accessibility { --iconChar:"\F368"; }
|
||||
.icon_web { --iconChar:"\F57D"; }
|
||||
.icon_efficiency { --iconChar:"\F625"; }
|
||||
.icon_workplace { --iconChar:"\F7D9"; }
|
||||
.icon_caratUp { --iconChar:"\F102"; }
|
BIN
web/static/css/fonts/bootstrap-icons.woff
Normal file
BIN
web/static/css/fonts/bootstrap-icons.woff2
Normal file
@ -1,138 +0,0 @@
|
||||
.action,
|
||||
#backToTop,
|
||||
#mainMenu,
|
||||
.modal,
|
||||
.optional,
|
||||
#socialMedia {
|
||||
display:none;
|
||||
}
|
||||
|
||||
figure, blockquote {
|
||||
padding:0;
|
||||
margin:0;
|
||||
}
|
||||
|
||||
body, button, input, table, textarea, select {
|
||||
font-size:12pt;
|
||||
line-height:1.75;
|
||||
font-family:flowtext,sans-serif;
|
||||
}
|
||||
|
||||
body {
|
||||
max-width:7.5in;
|
||||
margin:0 auto;
|
||||
}
|
||||
|
||||
a {
|
||||
color:#000;
|
||||
text-decoration:none;
|
||||
}
|
||||
|
||||
header {
|
||||
margin-bottom:1rem;
|
||||
}
|
||||
|
||||
p {
|
||||
margin:0 0 1rem;
|
||||
}
|
||||
|
||||
li {
|
||||
margin-bottom:0.5rem;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size:24pt;
|
||||
font-weight:normal;
|
||||
margin:0 0 0.5rem;
|
||||
}
|
||||
|
||||
h1,
|
||||
.hero h2 {
|
||||
margin:0;
|
||||
line-height:1.2;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-size:16pt;
|
||||
font-weight:normal;
|
||||
margin:0;
|
||||
}
|
||||
|
||||
main > section {
|
||||
padding-bottom:1.75rem;
|
||||
}
|
||||
|
||||
main > section header p {
|
||||
font-size:14pt;
|
||||
}
|
||||
|
||||
.hero header p {
|
||||
margin-top:0;
|
||||
}
|
||||
|
||||
.hasPlate,
|
||||
.cards {
|
||||
display:flex;
|
||||
flex-wrap:wrap;
|
||||
justify-content:center;
|
||||
gap:1rem 2rem;
|
||||
}
|
||||
|
||||
.hasPlate > figure {
|
||||
flex-grow:0;
|
||||
width:min(12rem, 100%);
|
||||
text-align:center;
|
||||
}
|
||||
|
||||
.hasPlate > figure img {
|
||||
width:100%;
|
||||
height:auto;
|
||||
border-radius:1rem;
|
||||
}
|
||||
|
||||
.hasPlate > div {
|
||||
width:1%;
|
||||
flex-grow:1;
|
||||
}
|
||||
|
||||
.cards > * {
|
||||
width:calc(50% - 1rem);
|
||||
break-inside:avoid;
|
||||
}
|
||||
|
||||
.cards > * > *:last-child {
|
||||
margin-bottom:0;
|
||||
padding-bottom:0;
|
||||
}
|
||||
|
||||
#whatIDo h3[class*="icon_"]:before {
|
||||
font-size:36pt;
|
||||
margin-right:0.5rem;
|
||||
}
|
||||
|
||||
#testimonials figcaption {
|
||||
font-size:14pt;
|
||||
margin-bottom:0.5rem;
|
||||
}
|
||||
|
||||
#testimonials figcaption img {
|
||||
display:inline-block;
|
||||
vertical-align:middle;
|
||||
width:3rem;
|
||||
height:3rem;
|
||||
margin-right:0.25rem;
|
||||
border-radius:50%;
|
||||
}
|
||||
|
||||
#whatIDo ul,
|
||||
#testimonials blockquote {
|
||||
font-size:10pt;
|
||||
}
|
||||
|
||||
.note {
|
||||
text-align:center;
|
||||
}
|
||||
|
||||
#fauxBody > footer {
|
||||
text-align:center;
|
||||
}
|
@ -1,763 +0,0 @@
|
||||
:root {
|
||||
|
||||
--flowColor:#024;
|
||||
--flowBg:#FFF;
|
||||
--flowAltBg:#CDF;
|
||||
--flowAltBorder:0.0625rem solid #04F;
|
||||
--flowAnchorNormal:#04F;
|
||||
--flowAnchorVisited:#000;
|
||||
--flowAnchorHover:#069;
|
||||
--flowMarker:#080;
|
||||
|
||||
--flyoutColor:#36C;
|
||||
--flyoutBgColor:#ACE;
|
||||
|
||||
--chromeColor:#000;
|
||||
--chromeBg:var(--flowBg);
|
||||
--chromeAnchorNormal:var(--chromeColor);
|
||||
--chromeAnchorVisited:var(--chromeColor);
|
||||
--chromeAnchorHover:#369;
|
||||
|
||||
--mainHeadingColor:#356;
|
||||
|
||||
--modalOuterBg:#ACEC;
|
||||
--modalOuterShadow:inset 0 0 16em #68A;
|
||||
--modalInnerBg:#DEF;
|
||||
--modalInputBg:#FFF;
|
||||
--modalInputBorder:0.125rem solid #048;
|
||||
--modalHeadingBg:#ACE;
|
||||
--modalButtonColor:#FFF;
|
||||
--modalButtonBg:#048;
|
||||
--modalShadow:0.5rem 0.5rem 2rem #0247;
|
||||
|
||||
--actionColor:#039;
|
||||
--actionBg:#FFF;
|
||||
--actionBorder:0.125rem solid var(--actionColor);
|
||||
--actionHoverColor:#FFF;
|
||||
--actionHoverBg:#05A;
|
||||
|
||||
--heroColor:#FFF;
|
||||
--heroBgColor:#05A;
|
||||
--heroBg:linear-gradient(20deg, #05A, #012);
|
||||
--heroTextShadow:
|
||||
0 0 2rem #000,
|
||||
0.25rem 0.25rem 1rem #000;
|
||||
|
||||
--heroActionColor:#FFF;
|
||||
--heroActionBg:transparent;
|
||||
--heroActionHoverColor:#036;
|
||||
--heroActionHoverBg:#8CF;
|
||||
|
||||
--borderColor:#048;
|
||||
--standardBorder:0.125rem solid var(--borderColor);
|
||||
|
||||
|
||||
--horzPad:clamp(0.5rem, 4vw, 2rem);
|
||||
--vertPad:clamp(1rem, min(8vw, 10vh), 4rem);
|
||||
--standardPad:var(--vertPad) var(--horzPad);
|
||||
--chromePad:1rem var(--horzPad);
|
||||
--heroPad:clamp(1rem, 3vh, 6rem) var(--horzPad);
|
||||
|
||||
}
|
||||
|
||||
html,body,div,p,h1,h2,h3,h4,h5,h6,figure,
|
||||
ul,ol,li,dl,dt,dd,form,fieldset,caption,legend,
|
||||
table,tr,td,th,address,blockquote,img {
|
||||
margin:0;
|
||||
padding:0;
|
||||
}
|
||||
|
||||
img, fieldset {
|
||||
border:none;
|
||||
}
|
||||
|
||||
blockquote, q {
|
||||
quotes:none;
|
||||
}
|
||||
|
||||
body *, *:after, *:before {
|
||||
box-sizing:border-box;
|
||||
}
|
||||
|
||||
legend {
|
||||
-webkit-appearance: none;
|
||||
-moz-appearance: none;
|
||||
appearance: none;
|
||||
display:block;
|
||||
}
|
||||
|
||||
button, label, summary {
|
||||
cursor:pointer;
|
||||
}
|
||||
|
||||
html, body {
|
||||
height:100%;
|
||||
}
|
||||
|
||||
body, button, input, table, textarea, select {
|
||||
font-size:1rem;
|
||||
line-height:1.75;
|
||||
font-family:flowtext,sans-serif;
|
||||
color:var(--flowColor);
|
||||
background:var(--flowBg);
|
||||
}
|
||||
|
||||
a {
|
||||
color:var(--flowAnchorNormal);
|
||||
transition:color 0.3s, background 0.3s, scale 0.3s;
|
||||
}
|
||||
|
||||
a:visited {
|
||||
color:var(--flowAnchorVisited);
|
||||
}
|
||||
|
||||
a:active,
|
||||
a:focus,
|
||||
a:hover {
|
||||
color:var(--flowAnchorHover);
|
||||
}
|
||||
|
||||
input,
|
||||
select,
|
||||
textarea {
|
||||
padding:0.25rem 0.5rem;
|
||||
}
|
||||
|
||||
#fauxBody,
|
||||
.modal,
|
||||
.modal > .modalClose {
|
||||
position:fixed;
|
||||
top:0;
|
||||
left:0;
|
||||
width:100%;
|
||||
height:100%;
|
||||
overflow:auto;
|
||||
scroll-behavior:smooth;
|
||||
}
|
||||
|
||||
.modal,
|
||||
#top,
|
||||
.cards,
|
||||
.hasPlate,
|
||||
#fauxBody > footer {
|
||||
position:relative;
|
||||
display:flex;
|
||||
flex-wrap:wrap;
|
||||
align-items:center;
|
||||
justify-content:center;
|
||||
}
|
||||
|
||||
.modalClose span,
|
||||
.mainMenuOpen span,
|
||||
#fauxBody > footer h2.optional {
|
||||
position:fixed;
|
||||
right:999em;
|
||||
top:0;
|
||||
opacity:0;
|
||||
}
|
||||
|
||||
.modal {
|
||||
left:-200vw;
|
||||
background:var(--modalOuterBg);
|
||||
box-shadow:var(--modalOuterShadow);
|
||||
opacity:0;
|
||||
transition:left 0s 0.5s, opacity 0.5s;
|
||||
}
|
||||
|
||||
.modal:target {
|
||||
left:0;
|
||||
opacity:1;
|
||||
transition:opacity 0.5s;
|
||||
}
|
||||
|
||||
.modal > div {
|
||||
/*
|
||||
depth sort over outer .modalClose
|
||||
*/
|
||||
position:relative;
|
||||
/*
|
||||
if you don't auto margin, scrolling at small screen heights is messed.
|
||||
*/
|
||||
margin:auto 1rem;
|
||||
overflow:hidden;
|
||||
background:var(--modalInnerBg);
|
||||
color:var(--flowColor);
|
||||
box-shadow:var(--modalShadow);
|
||||
border:var(--standardBorder);
|
||||
border-radius:1rem;
|
||||
scale:0;
|
||||
transition:scale 0.5s;
|
||||
}
|
||||
|
||||
.modal:target > div {
|
||||
scale:1;
|
||||
}
|
||||
|
||||
.modal .modalClose,
|
||||
#mainMenu .modalClose {
|
||||
position:absolute;
|
||||
text-decoration:none;
|
||||
}
|
||||
|
||||
.modal:target .modalClose {
|
||||
display:block;
|
||||
}
|
||||
|
||||
.modal > * > .modalClose,
|
||||
#mainMenu > * > .modalClose {
|
||||
top:0.5rem;
|
||||
right:1rem;
|
||||
font-size:2rem;
|
||||
line-height:1;
|
||||
color:var(--flowColor);
|
||||
}
|
||||
|
||||
.modal > * > .modalClose:focus,
|
||||
.modal > * > .modalClose:hover {
|
||||
scale:1.2;
|
||||
}
|
||||
|
||||
.modal h2 {
|
||||
font-size:1.25rem;
|
||||
padding:0.5rem 4rem 0.5rem 1rem;
|
||||
margin-bottom:1rem;
|
||||
background:var(--modalHeadingBg);
|
||||
border-bottom:var(--standardBorder);
|
||||
}
|
||||
|
||||
.modal h2 ~ * {
|
||||
margin:1rem;
|
||||
}
|
||||
|
||||
#top,
|
||||
#fauxBody > footer {
|
||||
max-width:72rem;
|
||||
margin:0 auto;
|
||||
padding:var(--chromePad);
|
||||
background:var(--chromeBgColor);
|
||||
color:var(--chromeColor);
|
||||
}
|
||||
|
||||
#fauxBody > footer {
|
||||
z-index:800;
|
||||
}
|
||||
|
||||
#fauxBody > footer p span {
|
||||
display:inline-block;
|
||||
}
|
||||
|
||||
#top {
|
||||
justify-content:space-between;
|
||||
gap:2rem;
|
||||
z-index:900;
|
||||
}
|
||||
|
||||
#top a,
|
||||
#fauxBody > footer a {
|
||||
color:var(--chromeAnchorNormal);
|
||||
text-decoration:none;
|
||||
}
|
||||
|
||||
#top > a:first-child {
|
||||
display:block;
|
||||
overflow:hidden;
|
||||
flex-grow:0;
|
||||
font-size:0.875rem;
|
||||
line-height:1.1;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-size:2rem;
|
||||
text-transform:uppercase;
|
||||
transform-origin:center left;
|
||||
letter-spacing:0.125rem;
|
||||
scale:1.15 1;
|
||||
color:var(--mainHeadingColor);
|
||||
}
|
||||
|
||||
#mainMenu {
|
||||
flex-grow:1;
|
||||
text-align:right;
|
||||
}
|
||||
|
||||
#mainMenu li {
|
||||
list-style:none;
|
||||
display:inline;
|
||||
margin-right:1.5rem;
|
||||
}
|
||||
|
||||
#mainMenu li a {
|
||||
display:inline-block;
|
||||
font-size:1.125rem;
|
||||
}
|
||||
|
||||
#mainMenu li a:focus,
|
||||
#mainMenu li a:hover,
|
||||
.socialMenu a:focus,
|
||||
.socialMenu a:hover,
|
||||
.mainMenuOpen:focus,
|
||||
.mainMenuOpen:hover {
|
||||
color:var(--chromeAnchorHover);
|
||||
scale:1.2;
|
||||
}
|
||||
|
||||
#fauxBody > footer > section:first-child {
|
||||
width:1%;
|
||||
flex-grow:1;
|
||||
}
|
||||
|
||||
.socialMenu {
|
||||
list-style:none;
|
||||
display:flex;
|
||||
gap:1.5rem;
|
||||
}
|
||||
|
||||
.socialMenu a {
|
||||
position:relative;
|
||||
display:block;
|
||||
}
|
||||
|
||||
.socialMenu a:before {
|
||||
font-size:2.5rem;
|
||||
transition:color 0.3s, scale 0.3s;
|
||||
}
|
||||
|
||||
.socialMenu a:focus:before,
|
||||
.socialMenu a:hover:before {
|
||||
scale:1.375;
|
||||
}
|
||||
|
||||
.socialMenu a span,
|
||||
#backToTop span {
|
||||
position:absolute;
|
||||
font-size:0.875rem;
|
||||
color:var(--flyoutColor);
|
||||
background:var(--flyoutBgColor);
|
||||
border:0.125rem solid var(--flyoutColor);
|
||||
}
|
||||
|
||||
.socialMenu a span {
|
||||
bottom:3.5rem;
|
||||
right:999em;
|
||||
padding:0.25rem 0.75rem;
|
||||
white-space:nowrap;
|
||||
border-radius:1rem;
|
||||
transition:right 0s 0.3s, opacity 0.3s;
|
||||
opacity:0;
|
||||
}
|
||||
|
||||
.socialMenu a span:after {
|
||||
content:"";
|
||||
position:absolute;
|
||||
bottom:-0.5625rem;
|
||||
right:1rem;
|
||||
width:1rem;
|
||||
height:1rem;
|
||||
background:var(--flyoutBgColor);
|
||||
border:solid var(--flyoutColor);
|
||||
border-width:0 0.125rem 0.125rem 0;
|
||||
rotate:45deg;
|
||||
}
|
||||
|
||||
.socialMenu a:focus span,
|
||||
.socialMenu a:hover span {
|
||||
right:-0.5rem;
|
||||
opacity:1;
|
||||
transition:opacity 0.3s;
|
||||
}
|
||||
|
||||
main > section:not(.hero),
|
||||
.hero > div,
|
||||
.hasCards > header,
|
||||
.hasPlate {
|
||||
max-width:56rem;
|
||||
margin:0 auto;
|
||||
}
|
||||
|
||||
main > section:not(.hero),
|
||||
.hero > div,
|
||||
.hasPlate {
|
||||
padding:var(--standardPad);
|
||||
}
|
||||
|
||||
.hasPlate {
|
||||
padding-top:0;
|
||||
}
|
||||
|
||||
main > section:not(.hero) {
|
||||
border-bottom:var(--flowAltBorder);
|
||||
}
|
||||
|
||||
main > section > header:not(.hasPlate) {
|
||||
text-align:center;
|
||||
}
|
||||
|
||||
main > section:not(.hero):nth-child(odd) {
|
||||
background:var(--flowAltBg);
|
||||
}
|
||||
|
||||
main h2 {
|
||||
font-size:clamp(1.75rem, 5vw, 2.5rem);
|
||||
font-weight:normal;
|
||||
}
|
||||
|
||||
main h2 span {
|
||||
display:inline-block; /* soft keep-together */
|
||||
}
|
||||
|
||||
main h3 {
|
||||
font-size:clamp(1.25rem, 3vw, 2rem);
|
||||
font-weight:normal;
|
||||
}
|
||||
|
||||
main p {
|
||||
max-width:40em;
|
||||
margin:1em 0;
|
||||
}
|
||||
|
||||
main section > header p {
|
||||
font-size:1.125rem;
|
||||
}
|
||||
|
||||
main > section > header:not(.hasPlate) p {
|
||||
margin:1em auto;
|
||||
}
|
||||
|
||||
main > section.hasCards {
|
||||
max-width:100%;
|
||||
}
|
||||
|
||||
.cards,
|
||||
.hasPlate {
|
||||
gap:2rem;
|
||||
}
|
||||
|
||||
.cards {
|
||||
margin:2rem auto 0;
|
||||
align-items:stretch;
|
||||
gap:2rem 4rem;
|
||||
}
|
||||
|
||||
#whatIDo .cards {
|
||||
max-width:68em;
|
||||
}
|
||||
|
||||
.cards > * {
|
||||
flex-grow:1;
|
||||
width:1%;
|
||||
min-width:min(20rem, 100%);
|
||||
max-width:24rem;
|
||||
}
|
||||
|
||||
#whatIDo .cards > * {
|
||||
min-width:min(24rem, 100%);
|
||||
max-width:40rem;
|
||||
}
|
||||
|
||||
.cards h3[class*="icon_"]:before {
|
||||
font-size:4rem;
|
||||
margin-right:1rem;
|
||||
}
|
||||
|
||||
.cards li {
|
||||
list-style:none;
|
||||
position:Relative;
|
||||
margin-bottom:0.5rem;
|
||||
padding-left:2rem;
|
||||
}
|
||||
|
||||
.cards li:before {
|
||||
content:"\F058";
|
||||
position:absolute;
|
||||
top:0;
|
||||
left:0.5rem;
|
||||
color:var(--flowMarker);
|
||||
font-family:interface;
|
||||
}
|
||||
|
||||
.hasPlate > div {
|
||||
flex-grow:1;
|
||||
width:1%;
|
||||
min-width:min(20rem, 100%);
|
||||
}
|
||||
|
||||
.hasPlate.trailing > figure,
|
||||
.hasPlate.trailing > picture {
|
||||
position:relative;
|
||||
flex-grow:0;
|
||||
width:30%;
|
||||
max-width:16rem;
|
||||
text-align:center;
|
||||
}
|
||||
|
||||
figure img,
|
||||
figure picture {
|
||||
width:100%;
|
||||
height:auto;
|
||||
border-radius:1rem;
|
||||
}
|
||||
|
||||
.note {
|
||||
text-align:center;
|
||||
}
|
||||
|
||||
.action {
|
||||
display:inline-block;
|
||||
position:relative;
|
||||
overflow:hidden;
|
||||
margin-top:1rem;
|
||||
z-index:1;
|
||||
text-decoration:none;
|
||||
padding:0.75rem 1.5rem;
|
||||
color:var(--actionColor);
|
||||
background:var(--actionBg);
|
||||
border:var(--actionBorder);
|
||||
border-radius:0.5em;
|
||||
transition:color 0.3s, text-shadow 0.3s;
|
||||
}
|
||||
|
||||
.action:focus,
|
||||
.action:hover {
|
||||
color:var(--actionHoverColor);
|
||||
text-shadow:none;
|
||||
}
|
||||
|
||||
.action:after {
|
||||
content:"";
|
||||
position:absolute;
|
||||
z-index:-1;
|
||||
top:50%;
|
||||
left:50%;
|
||||
width:100%;
|
||||
height:100%;
|
||||
border-radius:0.5rem;
|
||||
translate:-50% -50%;
|
||||
scale:0;
|
||||
opacity:0;
|
||||
background:var(--actionHoverBg);
|
||||
transition:scale 0.3s, opacity 0.3s;
|
||||
}
|
||||
|
||||
.action:focus:after,
|
||||
.action:hover:after {
|
||||
scale:1.1;
|
||||
opacity:1;
|
||||
}
|
||||
|
||||
.hero {
|
||||
padding:var(--heroPad);
|
||||
background-color:var(--heroBgColor);
|
||||
color:var(--heroColor);
|
||||
text-shadow:var(--heroTextShadow);
|
||||
}
|
||||
|
||||
.hero .action {
|
||||
color:var(--heroActionColor);
|
||||
background:var(--heroActionBg);
|
||||
border-color:var(--heroActionColor);
|
||||
}
|
||||
|
||||
.hero .action:focus,
|
||||
.hero .action:hover {
|
||||
color:var(--heroActionHoverColor);
|
||||
}
|
||||
|
||||
.hero .action:after {
|
||||
background:var(--heroActionHoverBg);
|
||||
}
|
||||
|
||||
.hero header {
|
||||
margin-bottom:1.5rem;
|
||||
line-height:1.2;
|
||||
}
|
||||
|
||||
.hero header p {
|
||||
margin:0.25rem 0 1.5rem;
|
||||
font-size:1.5rem;
|
||||
}
|
||||
|
||||
#semanticEasy {
|
||||
background-image:url(images/heroBg.avif), var(--heroBg);
|
||||
background-position:center;
|
||||
background-size:cover;
|
||||
}
|
||||
|
||||
section:not(.hero) h2,
|
||||
section:not(.hero) h3 {
|
||||
color:var(--mainHeadingColor);
|
||||
}
|
||||
|
||||
#testimonials > header {
|
||||
margin-bottom:var(--vertPad);
|
||||
}
|
||||
|
||||
#testimonials > .cards {
|
||||
max-width:76rem;
|
||||
margin:0 auto;
|
||||
}
|
||||
|
||||
#testimonials figcaption {
|
||||
font-size:1.25rem;
|
||||
font-style:italic;
|
||||
}
|
||||
|
||||
#testimonials figcaption img {
|
||||
display:inline-block;
|
||||
vertical-align:middle;
|
||||
width:4rem;
|
||||
height:4rem;
|
||||
margin-right:0.5rem;
|
||||
border-radius:50%;
|
||||
}
|
||||
|
||||
#backToTop {
|
||||
display:block;
|
||||
position:sticky;
|
||||
z-index:600;
|
||||
bottom:0;
|
||||
width:2.5rem;
|
||||
height:3.5rem;
|
||||
padding-bottom:1rem;
|
||||
margin:-3.5rem 1rem 0 auto;
|
||||
opacity:0.6;
|
||||
transition:opacity 0.3s;
|
||||
}
|
||||
|
||||
#backToTop.hide {
|
||||
opacity:0;
|
||||
}
|
||||
|
||||
#backToTop:not(.hide):focus,
|
||||
#backToTop:not(.hide):hover {
|
||||
opacity:1;
|
||||
}
|
||||
|
||||
#backToTop span {
|
||||
right:1.5rem;
|
||||
top:0.25rem;
|
||||
padding:0.125rem 2rem 0.125rem 1rem;
|
||||
white-space:nowrap;
|
||||
border-radius:1.5rem 0 0 1.5rem;
|
||||
transform-origin:center right;
|
||||
transition:scale 0.3s;
|
||||
scale:0 1;
|
||||
}
|
||||
|
||||
#backToTop:focus span,
|
||||
#backToTop:hover span {
|
||||
scale:1;
|
||||
}
|
||||
|
||||
#backToTop:after {
|
||||
content:"\F102";
|
||||
position:relative;
|
||||
display:block;
|
||||
width:2.5rem;
|
||||
height:2.5rem;
|
||||
text-align:center;
|
||||
font-family:interface;
|
||||
font-size:1.5rem;
|
||||
line-height:2rem;
|
||||
border:0.25rem solid var(--flyoutColor);
|
||||
border-radius:50%;
|
||||
background:var(--heroBgColor);
|
||||
color:var(--heroColor);
|
||||
}
|
||||
|
||||
@media (max-width:56rem) {
|
||||
|
||||
/*
|
||||
It sucks to have to repeat all this,
|
||||
one of the few cases where native mixins
|
||||
would be a godsend.
|
||||
*/
|
||||
|
||||
#mainMenu,
|
||||
#mainMenu > .modalClose {
|
||||
top:0;
|
||||
left:0;
|
||||
width:100%;
|
||||
height:100%;
|
||||
overflow:auto;
|
||||
scroll-behavior:smooth;
|
||||
}
|
||||
|
||||
#mainMenu {
|
||||
position:fixed;
|
||||
display:flex;
|
||||
flex-wrap:wrap;
|
||||
align-items:center;
|
||||
justify-content:center;
|
||||
left:-200vw;
|
||||
background:var(--modalOuterBg);
|
||||
box-shadow:var(--modalOuterShadow);
|
||||
opacity:0;
|
||||
transition:left 0s 0.5s, opacity 0.5s;
|
||||
}
|
||||
|
||||
#mainMenu:target {
|
||||
left:0;
|
||||
opacity:1;
|
||||
transition:opacity 0.5s;
|
||||
}
|
||||
|
||||
#mainMenu > div {
|
||||
position:relative;
|
||||
margin:auto 1rem;
|
||||
overflow:hidden;
|
||||
background:var(--modalInnerBg);
|
||||
color:var(--flowColor);
|
||||
box-shadow:var(--modalShadow);
|
||||
border:var(--standardBorder);
|
||||
border-radius:1rem;
|
||||
scale:0;
|
||||
transition:scale 0.5s;
|
||||
}
|
||||
|
||||
#mainMenu:target > div {
|
||||
scale:1;
|
||||
}
|
||||
|
||||
#mainMenu:target .modalClose {
|
||||
display:block;
|
||||
}
|
||||
|
||||
#mainMenu > * > .modalClose:focus,
|
||||
#mainMenu > * > .modalClose:hover {
|
||||
scale:1.2;
|
||||
}
|
||||
|
||||
#mainMenu > div:before {
|
||||
content:attr(data-modalTitle);
|
||||
display:block;
|
||||
font-size:1.25rem;
|
||||
padding:0.5rem 4rem 0.5rem 1rem;
|
||||
margin-bottom:1rem;
|
||||
background:var(--modalHeadingBg);
|
||||
border-bottom:var(--standardBorder);
|
||||
}
|
||||
|
||||
#mainMenu ul {
|
||||
margin:1rem;
|
||||
}
|
||||
|
||||
#mainMenu li {
|
||||
display:block;
|
||||
text-align:center;
|
||||
margin:0.5rem 0;
|
||||
}
|
||||
|
||||
.mainMenuOpen {
|
||||
display:block;
|
||||
width:2.5rem;
|
||||
height:2rem;
|
||||
background:linear-gradient(
|
||||
#000 20%,
|
||||
transparent 20% 40%,
|
||||
#000 40% 60%,
|
||||
transparent 60% 80%,
|
||||
#000 80%
|
||||
);
|
||||
}
|
||||
|
||||
} /* max-width:56rem */
|
@ -1 +0,0 @@
|
||||
<svg width="16em" height="16em" viewBox="0 0 203.2 203.2" xmlns="http://www.w3.org/2000/svg"><g transform="matrix(.20387 .2137 -.20387 .2137 128.46 -10.68)"><path d="m271.76 703.73-211.3-314.83 276.27-58.724-64.977 373.55" fill="#d5b360"/><path d="m271.76 703.73-211.3-314.83 276.27-58.724z" fill-opacity="0" stroke="#3e3632" stroke-linecap="round" stroke-linejoin="round" stroke-width="11"/><path d="m215.67 405.24 65.519 63.54m-76.56 6.867 63.54-65.519m-45.433 88.23 63.54-65.519m-84.739 15.245 65.519 63.541" fill-opacity="0" stroke="#3e3632" stroke-linecap="round" stroke-linejoin="round" stroke-width="8"/><path d="m328.56 236.75c3.897-10.97 5.02-23.007 2.554-34.554-4.783-22.409-21.817-36.657-41.676-37.89 1.346-7.609 1.314-15.557-0.369-23.415-5.828-27.213-28.979-44.343-53.839-40.513-6.532-24.271-27.356-39.494-49.689-38.994-3.032-7.637-17.489-39.799-49.025-49.658-22.371-6.975-82.684 7.057-82.687 7.05-3e-3 -0.012 25.332 8.591 40.719 33.116 4.867 7.753 7.006 17.012 7.502 26.468-1.321 0.266-2.643 0.532-3.964 0.797-25.644 5.213-42.087 30.802-37.683 58.993-24.66 6.33-39.817 31.39-34.022 58.86 1.657 7.863 4.834 15.002 9.158 21.406-17.641 9.202-27.421 29.078-22.676 51.496 2.444 11.551 8.358 22.059 16.38 30.495-14.956 8.922-22.819 26.303-18.529 46.499 5.914 27.873 37.743 48.009 60.763 52.573 22.953 4.707 75.488 4.761 133.59-7.818 58.266-11.895 111.3-34.354 125.22-47.197 14.132-12.498 40.091-44.813 34.124-72.753-4.295-20.195-18.551-32.893-35.844-34.961" fill="#fffffe"/><path d="m328.56 236.75c3.897-10.97 5.02-23.007 2.554-34.554-4.783-22.409-21.817-36.657-41.676-37.89 1.346-7.609 1.314-15.557-0.369-23.415-5.828-27.213-28.979-44.343-53.839-40.513-6.532-24.271-27.356-39.494-49.689-38.994-3.032-7.637-17.489-39.799-49.025-49.658-22.371-6.975-82.684 7.057-82.687 7.05-3e-3 -0.012 25.332 8.591 40.719 33.116 4.867 7.753 7.006 17.012 7.502 26.468-1.321 0.266-2.643 0.532-3.964 0.797-25.644 5.213-42.087 30.802-37.683 58.993-24.66 6.33-39.817 31.39-34.022 58.86 1.657 7.863 4.834 15.002 9.158 21.406-17.641 9.202-27.421 29.078-22.676 51.496 2.444 11.551 8.358 22.059 16.38 30.495-14.956 8.922-22.819 26.303-18.529 46.499 5.914 27.873 37.743 48.009 60.763 52.573 22.953 4.707 75.488 4.761 133.59-7.818 58.266-11.895 111.3-34.354 125.22-47.197 14.132-12.498 40.091-44.813 34.124-72.753-4.295-20.195-18.551-32.893-35.844-34.961z" fill-opacity="0" stroke="#3e3632" stroke-linecap="round" stroke-linejoin="round" stroke-width="11"/><path d="m184.49 72.517c-0.108-0.604-13.1 42.635-107.01 66.574m149.56-23.297c-0.017 0.146-5.601 15.147-29.231 36.635-23.687 21.079-65.42 48.646-139.02 64.457m222.03-37.656c-0.109 0.174-8.437 23.849-40.838 53.951-32.5 29.173-89.075 64.773-187.98 67.361m265.38-48.424c-0.048-0.057-11.438 19.506-34.151 44.665-22.74 24.947-56.804 55.49-102.83 72.474m-84.823-340.9c0 3e-3 26.33 1.97 34.616 40.955" fill-opacity="0" stroke="#3e3632" stroke-linecap="round" stroke-linejoin="round" stroke-width="9"/></g></svg>
|
Before Width: | Height: | Size: 2.9 KiB |
BIN
web/static/img/Bromeliad.jpg
Normal file
After Width: | Height: | Size: 151 KiB |
BIN
web/static/img/RookieStripes.jpg
Normal file
After Width: | Height: | Size: 84 KiB |
BIN
web/static/img/TreeOfLight.jpg
Normal file
After Width: | Height: | Size: 180 KiB |
BIN
web/static/img/action.jpg
Executable file
After Width: | Height: | Size: 107 KiB |
BIN
web/static/img/anniversary/image-1.jpg
Normal file
After Width: | Height: | Size: 487 KiB |
BIN
web/static/img/anniversary/image-10.jpg
Normal file
After Width: | Height: | Size: 288 KiB |
BIN
web/static/img/anniversary/image-11.jpg
Normal file
After Width: | Height: | Size: 380 KiB |
BIN
web/static/img/anniversary/image-12.png
Normal file
After Width: | Height: | Size: 450 KiB |
BIN
web/static/img/anniversary/image-13.jpg
Normal file
After Width: | Height: | Size: 65 KiB |
BIN
web/static/img/anniversary/image-14.jpg
Normal file
After Width: | Height: | Size: 63 KiB |
BIN
web/static/img/anniversary/image-15.png
Normal file
After Width: | Height: | Size: 451 KiB |
BIN
web/static/img/anniversary/image-16.jpg
Normal file
After Width: | Height: | Size: 462 KiB |
BIN
web/static/img/anniversary/image-17.png
Normal file
After Width: | Height: | Size: 268 KiB |
BIN
web/static/img/anniversary/image-18.jpg
Normal file
After Width: | Height: | Size: 540 KiB |
BIN
web/static/img/anniversary/image-19.jpg
Normal file
After Width: | Height: | Size: 411 KiB |
BIN
web/static/img/anniversary/image-2.jpg
Normal file
After Width: | Height: | Size: 368 KiB |
BIN
web/static/img/anniversary/image-20.jpg
Normal file
After Width: | Height: | Size: 460 KiB |
BIN
web/static/img/anniversary/image-21.jpg
Normal file
After Width: | Height: | Size: 320 KiB |
BIN
web/static/img/anniversary/image-22.jpg
Normal file
After Width: | Height: | Size: 286 KiB |
BIN
web/static/img/anniversary/image-23.jpg
Normal file
After Width: | Height: | Size: 458 KiB |
BIN
web/static/img/anniversary/image-24.jpg
Normal file
After Width: | Height: | Size: 443 KiB |
BIN
web/static/img/anniversary/image-25.jpg
Normal file
After Width: | Height: | Size: 571 KiB |
BIN
web/static/img/anniversary/image-26.jpg
Normal file
After Width: | Height: | Size: 420 KiB |
BIN
web/static/img/anniversary/image-27.jpg
Normal file
After Width: | Height: | Size: 424 KiB |
BIN
web/static/img/anniversary/image-28.jpg
Normal file
After Width: | Height: | Size: 498 KiB |
BIN
web/static/img/anniversary/image-29.jpg
Normal file
After Width: | Height: | Size: 480 KiB |
BIN
web/static/img/anniversary/image-3.jpg
Normal file
After Width: | Height: | Size: 345 KiB |
BIN
web/static/img/anniversary/image-30.jpg
Normal file
After Width: | Height: | Size: 568 KiB |
BIN
web/static/img/anniversary/image-31.jpg
Normal file
After Width: | Height: | Size: 417 KiB |
BIN
web/static/img/anniversary/image-32.jpg
Normal file
After Width: | Height: | Size: 201 KiB |
BIN
web/static/img/anniversary/image-33.jpg
Normal file
After Width: | Height: | Size: 310 KiB |
BIN
web/static/img/anniversary/image-34.jpg
Normal file
After Width: | Height: | Size: 520 KiB |
BIN
web/static/img/anniversary/image-35.jpg
Normal file
After Width: | Height: | Size: 366 KiB |
BIN
web/static/img/anniversary/image-36.jpg
Normal file
After Width: | Height: | Size: 279 KiB |
BIN
web/static/img/anniversary/image-37.jpg
Normal file
After Width: | Height: | Size: 331 KiB |
BIN
web/static/img/anniversary/image-38.jpg
Normal file
After Width: | Height: | Size: 270 KiB |
BIN
web/static/img/anniversary/image-39.jpg
Normal file
After Width: | Height: | Size: 411 KiB |
BIN
web/static/img/anniversary/image-4.jpg
Normal file
After Width: | Height: | Size: 228 KiB |
BIN
web/static/img/anniversary/image-40.jpg
Normal file
After Width: | Height: | Size: 569 KiB |
BIN
web/static/img/anniversary/image-41.jpg
Normal file
After Width: | Height: | Size: 572 KiB |
BIN
web/static/img/anniversary/image-42.jpg
Normal file
After Width: | Height: | Size: 524 KiB |
BIN
web/static/img/anniversary/image-43.jpg
Normal file
After Width: | Height: | Size: 600 KiB |
BIN
web/static/img/anniversary/image-44.jpg
Normal file
After Width: | Height: | Size: 485 KiB |
BIN
web/static/img/anniversary/image-45.jpg
Normal file
After Width: | Height: | Size: 512 KiB |
BIN
web/static/img/anniversary/image-46.jpg
Normal file
After Width: | Height: | Size: 461 KiB |