diff --git a/css/custom.css b/css/custom.css index 963558a..53086f4 100644 --- a/css/custom.css +++ b/css/custom.css @@ -1,6 +1,6 @@ body { background-color: #161618; - color: white; + color: #f2f5f4; } a { @@ -11,6 +11,10 @@ a:visited { color: #5BCEFA; } +a.lightbox { + margin: 10px; +} + /* Container to hold the images */ .image-container { display: flex; @@ -26,4 +30,18 @@ a:visited { max-width: 300px; /* Max width of each image */ height: auto; /* Ensure aspect ratio is maintained */ object-fit: contain; /* Ensure images fit within the container */ +} + +:root { + --parvus-background-color: #161618; + --parvus-color: #f2f5f4; + --parvus-caption-color: #f2f5f4; + --parvus-btn-background-color: #F5A9B8; + --parvus-btn-color: #ffffff; + --parvus-btn-disabled-background-color: #5BCEFA; + --parvus-btn-disabled-color: #161618; + } + +.parvus-trigger:has(img) .parvus-zoom__indicator { + display: none; } \ No newline at end of file diff --git a/css/parvus.css b/css/parvus.css new file mode 100644 index 0000000..121fc05 --- /dev/null +++ b/css/parvus.css @@ -0,0 +1,228 @@ +:root { + --parvus-transition-duration: 300ms; + --parvus-transition-timing-function: cubic-bezier(0.62, 0.16, 0.13, 1.01); + --parvus-background-color: hsl(23deg 44% 96%); + --parvus-color: hsl(228deg 24% 23%); + --parvus-btn-background-color: hsl(228deg 24% 23%); + --parvus-btn-color: hsl(0deg 0% 100%); + --parvus-btn-hover-background-color: hsl(229deg 24% 33%); + --parvus-btn-hover-color: hsl(0deg 0% 100%); + --parvus-btn-disabled-background-color: hsla(229deg 24% 33% / 60%); + --parvus-btn-disabled-color: hsl(0deg 0% 100%); + --parvus-caption-background-color: transparent; + --parvus-caption-color: hsl(228deg 24% 23%); + --parvus-loading-error-background-color: hsl(0deg 0% 100%); + --parvus-loading-error-color: hsl(228deg 24% 23%); + --parvus-loader-background-color: hsl(23deg 40% 96%); + --parvus-loader-color: hsl(228deg 24% 23%); +} + +body:has(.parvus[aria-hidden=false]) { + touch-action: none; +} + +/** + * Parvus trigger + * + */ +.parvus-trigger:has(img) { + display: block; + position: relative; +} +.parvus-trigger:has(img) .parvus-zoom__indicator { + align-items: center; + background-color: var(--parvus-btn-background-color); + color: var(--parvus-btn-color); + display: flex; + justify-content: center; + padding: 0.5rem; + position: absolute; + inset-inline-end: 0.5rem; + inset-block-start: 0.5rem; +} +.parvus-trigger:has(img) img { + display: block; +} + +/** + * Parvus + * + */ +.parvus { + box-sizing: border-box; + contain: strict; + inset: 0; + overflow: hidden; + overscroll-behavior: contain; + position: fixed; + z-index: 1337; +} +.parvus *, .parvus *::before, .parvus *::after { + box-sizing: border-box; +} +.parvus[aria-hidden=true] { + display: none; +} +.parvus__overlay { + background-color: var(--parvus-background-color); + color: var(--parvus-color); + inset: 0; + position: absolute; +} +.parvus__slider { + inset: 0; + position: absolute; +} +.parvus__slider[aria-hidden=true] { + display: none; +} +@media screen and (prefers-reduced-motion: no-preference) { + .parvus__slider--animate:not(.parvus__slider--is-dragging) { + transition: transform var(--parvus-transition-duration) var(--parvus-transition-timing-function); + will-change: transform; + } +} +.parvus__slider--is-draggable { + cursor: grab; +} +.parvus__slider--is-dragging { + cursor: grabbing; +} +.parvus__slide { + block-size: 100%; + display: grid; + inline-size: 100%; + padding-block: 3.75rem 1rem; + padding-inline: 1rem; + place-items: center; +} +.parvus__slide img { + block-size: auto; + display: block; + inline-size: auto; + margin-inline: auto; + transform-origin: left top; +} +.parvus__content--error { + background-color: var(--parvus-loading-error-background-color); + color: var(--parvus-loading-error-color); + padding-block: 0.5rem; + padding-inline: 1rem; +} +.parvus__caption { + background-color: var(--parvus-caption-background-color); + color: var(--parvus-caption-color); + padding-block-start: 0.5rem; + text-align: start; +} +.parvus__loader { + display: inline-block; + block-size: 6.25rem; + inset-inline-start: 50%; + position: absolute; + inset-block-start: 50%; + transform: translate(-50%, -50%); + inline-size: 6.25rem; +} +.parvus__loader::before { + animation: spin 1s infinite; + border-radius: 100%; + border: 0.25rem solid var(--parvus-loader-background-color); + border-block-start-color: var(--parvus-loader-color); + content: ""; + inset: 0; + position: absolute; + z-index: 1; +} +.parvus__toolbar { + align-items: center; + display: flex; + inset-block-start: 1rem; + inset-inline: 1rem; + justify-content: space-between; + position: absolute; +} +.parvus__controls { + display: flex; + gap: 0.5rem; +} +.parvus__btn { + appearance: none; + background-color: var(--parvus-btn-background-color); + background-image: none; + border-radius: 0; + border: 0.0625rem solid transparent; + color: var(--parvus-btn-color); + cursor: pointer; + display: flex; + font: inherit; + padding: 0.3125rem; + position: relative; + touch-action: manipulation; + will-change: transform, opacity; + z-index: 7; +} +.parvus__btn:hover, .parvus__btn:focus-visible { + background-color: var(--parvus-btn-hover-background-color); + color: var(--parvus-btn-hover-color); +} +.parvus__btn--previous { + inset-inline-start: 0; + position: absolute; + inset-block-start: calc(50svh - 1rem); + transform: translateY(-50%); +} +.parvus__btn--next { + position: absolute; + inset-inline-end: 0; + inset-block-start: calc(50svh - 1rem); + transform: translateY(-50%); +} +.parvus__btn svg { + pointer-events: none; +} +.parvus__btn[aria-hidden=true] { + display: none; +} +.parvus__btn[aria-disabled=true] { + background-color: var(--parvus-btn-disabled-background-color); + color: var(--parvus-btn-disabled-color); +} +.parvus__counter { + position: relative; + z-index: 7; +} +.parvus__counter[aria-hidden=true] { + display: none; +} +@media screen and (prefers-reduced-motion: no-preference) { + .parvus__overlay, .parvus__counter, .parvus__btn--close, .parvus__btn--previous, .parvus__btn--next, .parvus__caption { + transition: transform var(--parvus-transition-duration) var(--parvus-transition-timing-function), opacity var(--parvus-transition-duration) var(--parvus-transition-timing-function); + will-change: transform, opacity; + } + .parvus--is-opening .parvus__overlay, .parvus--is-opening .parvus__counter, .parvus--is-opening .parvus__btn--close, .parvus--is-opening .parvus__btn--previous, .parvus--is-opening .parvus__btn--next, .parvus--is-opening .parvus__caption, .parvus--is-closing .parvus__overlay, .parvus--is-closing .parvus__counter, .parvus--is-closing .parvus__btn--close, .parvus--is-closing .parvus__btn--previous, .parvus--is-closing .parvus__btn--next, .parvus--is-closing .parvus__caption { + opacity: 0; + } + .parvus--is-vertical-closing .parvus__counter, .parvus--is-vertical-closing .parvus__btn--close { + transform: translateY(-100%); + opacity: 0; + } + .parvus--is-vertical-closing .parvus__btn--previous { + transform: translate(-100%, -50%); + opacity: 0; + } + .parvus--is-vertical-closing .parvus__btn--next { + transform: translate(100%, -50%); + opacity: 0; + } + .parvus--is-vertical-closing .parvus__caption { + transform: translateY(100%); + opacity: 0; + } +} + +@keyframes spin { + to { + transform: rotate(360deg); + } +} \ No newline at end of file diff --git a/index.html b/index.html index ab4bab2..32e543c 100644 --- a/index.html +++ b/index.html @@ -5,31 +5,58 @@
You want to display your Elf Twink on elftwinks.gay? Message me on Matrix @dalfuss:catgirl.cloud!
+ + + + -