/*! Theme Name: Jake Van Base Theme Theme URI: https://jakevan.ca Author: Jake Vanderwerf Author URI: https://jakevan.ca Description: A base theme for Jake Van clients Requires at least: 6.4 Tested up to: 6.4 Requires PHP: 7.0 Version: 1.279 License: GNU General Public License v2 or later License URI: http://www.gnu.org/licenses/gpl-2.0.html Text Domain: jv */ /************************************************************* VARIABLES *************************************************************/ :root{ /* Layout */ --narrow: min(500px, 50vw); --maxWidth: min(768px, 65vw); --alignWide: min(1024px, 90vw); --alignMed: min(962px, 82.5vw); --full: 100vw; /* Margin */ --mr: auto; --ml: auto; --mt: 1rem; --mb: 1rem; --p-x: 1.5rem; --p-y: .5rem; --setMargin: var(--mt) var(--mr) var(--mb) var(--ml); --insetMargin: var(--mt) calc((var(--maxWidth) - var(--narrow)) / 2 + var(--mr)) var(--mb) var(--ml); --height: 4rem; --doubleHeight: 8rem; --offHeight: 5rem; --maxHeight: calc(100vh - var(--height) - var(--height)); --gap: .5rem; --wrap: wrap; --justify: center; --align: center; --dir: row; /* Typography */ --w: 1.2em; /** Icon **/ --filter: grayscale(.3) sepia(.4); --dashed: url("data:image/svg+xml,%3csvg width='100%25' height='100%25' xmlns='http://www.w3.org/2000/svg'%3e%3crect width='100%25' height='100%25' fill='none' stroke='%23151515' stroke-width='1' stroke-dasharray='12%2c18%2c36' stroke-dashoffset='0' stroke-linecap='square'/%3e%3c/svg%3e"); --dashed-action: url("data:image/svg+xml,%3csvg width='100%25' height='100%25' xmlns='http://www.w3.org/2000/svg'%3e%3crect width='100%25' height='100%25' fill='none' stroke='%23B7332E' stroke-width='1' stroke-dasharray='12%2c18%2c36' stroke-dashoffset='0' stroke-linecap='square'/%3e%3c/svg%3e"); --font-base: -apple-system, BlinkMacSystemFont, avenir next, avenir, segoe ui, helvetica neue, helvetica, Cantarell, Ubuntu, roboto, noto, arial, sans-serif; --heading: 'Aleo', var(--font-base); --body: 'Josefin Slab', var(--font-base); --hWeight: 900; --hlight: 400; --bWeight: 400; --bBold: 700; --bLight: 200; /* Font sizes */ --enormous: calc(26vh - 4rem); --xxxlarge: clamp(2.5rem, 1.429rem + 2.857vw, 4rem); --xxlarge: clamp(2rem, 1.286rem + 1.905vw, 3rem); --xlarge: clamp(1.6rem, .957rem + 1.714vw, 2.5rem); --large: clamp(1.3rem, .6rem + 1.867vw, 2rem); --xmedium: clamp(1.4rem, .971rem + 1.143vw, 2rem); --medium: clamp(1.1rem, .993rem + .286vw, 1.25rem); --small: clamp(.95rem, .879rem + .19vw, 1.05rem); --extra-small: clamp(.75rem, 1.1337rem + -1.2278vw, .059375rem); /* Colours For best results, generate colours from base colours using: https://uicolors.app/generate/ or sass darken/lighten by 5%: http://scg.ar-ch.org/ For DUOTONE: https://cssduotone.com/ */ --mixBlendMode: darken; --coverBlend: overlay; --coverIndex: 2; --light-0: #fafafa; --light-50: #fcfbfb; --light-100: #f1eded; --light-200: #e6dfdf; --dark-0: #201313; --dark-50: #261717; --dark-100: #2d1b1b; --dark-200: #331e1e; --action-0: #B7332E; --action-50: #a32d29; --action-100: #8e2824; --action-200: #7a221f; --secondary-0: #E8A737; --secondary-50: #e59d20; --secondary-100: #d48f18; --secondary-200: #bd7f16; --success: #22C55E; --successBack: #d4edda; --successText:#155724; --warning: #E8A737; --error: #EF4444; --errorBack: #f8d7da; --errorText: #721c24; --action-contrast: var(--light-0); --secondary-contrast: var(--light-0); --light-rgb: 250,250,250; --dark-rgb: 16,4,4; --action-rgb: 183,51,46; --secondary-rgb: 232,167,55; --rgba-subtle: rgba(var(--c),.05); --rgba-subtle-hover: rgba(var(--c),.1); --base: var(--light-0); --base-50: var(--light-50); --base-100: var(--light-100); --base-200: var(--light-200); --contrast: var(--dark-0); --contrast-50: var(--dark-50); --contrast-100: var(--dark-100); --contrast-200: var(--dark-200); --c: var(--light-rgb); --base-rgb: var(--light-rgb); --contrast-rgb: var(--dark-rgb); /* Stacking */ --z-1: 5; --z-2: 10; --z-3: 15; --z-4: 20; --z-5: 50; --z-6: 100; --z-top: 999; --z-topper: 1000; --zz-top: 999999; --z-above: 9999999; /* Overlays */ --rgb-subtle: .05; --rgb-subtle-hover: .15; --rgb-light: .25; --rgb-medium: .66; --rgb-heavy: .85; --overlay-light: rgba(var(--c), .25); --overlay-medium: rgba(var(--c), .66); --overlay-heavy: rgba(var(--c), .85); --shimmer: rgba(var(--dark-rgb),0) 0%, rgba(var(--dark-rgb),.05) 50%, rgba(var(--dark-rgb),0) 100%; /* Shadows */ --shadow: rgba(var(--dark-rgb),.45) 0px 0px 4px; --shadow-down: rgba(var(--dark-rgb),.45) 0 6px 5px -5px; /* Bottom */ --shadow-right: rgba(var(--dark-rgb),.45) 6px 0 5px -5px; /* Right */ --shadow-left: rgba(var(--dark-rgb), .45) -6px 0 5px -5px; /* Left */ --shadow-up: rgba(var(--dark-rgb), .45) 0 -6px 5px -5px; /* Up */ --subtle: rgba(var(--dark-rgb), .45) 0px 25px 20px -20px; --subtleRight: rgba(var(--dark-rgb), .45) 10px 0 20px -20px; --shadow-none: transparent 0px 0px 0px; /* Rounding */ --innerRadius: 4px; --outerPadding: 1rem; --outerRadius: calc(var(--innerRadius) + var(--outerPadding)); /* Transitions */ --function:cubic-bezier(.47,.24,.07,.47); --timing: .25s; --transition-base: var(--timing) var(--function); --transition-color: background-color var(--transition-base), color var(--transition-base), border var(--transition-base); --transition-transform: transform var(--transition-base); --transition-size: width var(--transition-base), height var(--transition-base),max-width var(--transition-base), max-height var(--transition-base); /**** SPACING ****/ --sp1: clamp(0.5rem, 0.714vw + 0.321rem, 1rem); /* 8px → 16px */ --sp2: clamp(0.75rem, 1.071vw + 0.482rem, 1.5rem); /* 12px → 24px */ --sp3: clamp(1rem, 1.429vw + 0.643rem, 2rem); /* 16px → 32px */ --sp4: clamp(1.5rem, 2.143vw + 0.964rem, 3rem); /* 24px → 48px */ --sp5: clamp(2rem, 2.857vw + 1.286rem, 4rem); /* 32px → 64px */ --sp6: clamp(3rem, 4.286vw + 1.929rem, 6rem); /* 48px → 96px */ --sp7: clamp(4rem, 5.714vw + 2.571rem, 8rem); /* 64px → 128px */ --offScreen: -200vw; /*!** Icons **!*/ /*--quote: url('data:image/svg+xml,');*/ /*--minus: url('data:image/svg+xml,');*/ /*--plus: url('data:image/svg+xml,');*/ /*--close: url('data:image/svg+xml,');*/ /*--chevron: url('data:image/svg+xml,');*/ /*--details: url('data:image/svg+xml,');*/ /*--shop: url('data:image/svg+xml,');*/ /*--style: url('data:image/svg+xml,');*/ /*--map: url('data:image/svg+xml,');*/ /*--theme: url('data:image/svg+xml,');*/ /*--arrow-up: url('data:image/svg+xml,');*/ /*--colour: url('data:image/svg+xml,');*/ /*--linkIcon:url('data:image/svg+xml,');*/ /*--swipeRight: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiIgZmlsbD0iIzAwMDAwMCIgdmlld0JveD0iMCAwIDI1NiAyNTYiPjxwYXRoIGQ9Ik0yMTIsMTQwdjM2YzAsMjQuNjYtOC4wOCw0MS4xLTguNDIsNDEuNzlhNCw0LDAsMSwxLTcuMTYtMy41OGMuMDctLjE1LDcuNTgtMTUuNTUsNy41OC0zOC4yMVYxNDBhMTYsMTYsMCwwLDAtMzIsMHY0YTQsNCwwLDAsMS04LDBWMTI0YTE2LDE2LDAsMCwwLTMyLDB2MTJhNCw0LDAsMCwxLTgsMFY2OGExNiwxNiwwLDAsMC0zMiwwVjE3NmE0LDQsMCwwLDEtNy4zOSwyLjExbC0xOC42OC0zMGEuNzUuNzUsMCwwLDEtLjA3LS4xMiwxNiwxNiwwLDAsMC0yNy43MiwxNmwyOS4zMSw1MGE0LDQsMCwwLDEtNi45LDRMMzEuMjIsMTY4YTI0LDI0LDAsMCwxLDQxLjUyLTI0LjA5TDg0LDE2MlY2OGEyNCwyNCwwLDAsMSw0OCwwdjM4LjEzYTI0LDI0LDAsMCwxLDM5Ljk0LDE2LjA2QTI0LDI0LDAsMCwxLDIxMiwxNDBabTM4LjgzLTg2LjgzLTMyLTMyYTQsNCwwLDAsMC01LjY2LDUuNjZMMjM4LjM0LDUySDE3NmE0LDQsMCwwLDAsMCw4aDYyLjM0TDIxMy4xNyw4NS4xN2E0LDQsMCwwLDAsNS42Niw1LjY2bDMyLTMyQTQsNCwwLDAsMCwyNTAuODMsNTMuMTdaIj48L3BhdGg+PC9zdmc+');*/ --scrollbar-width: 8px; --scrollbar-track-color: var(--base-100); --scrollbar-thumb-color: var(--action-0); --scrollbar-thumb-hover-color: var(--action-50); --scrollbar-thumb-border: 2px solid var(--base-50); --scrollbar-border-radius: 4px; --can-scroll: 0; } body:has(#theme-switcher:checked){ --action-50: #cb3933; --action-100: #d14c47; --action-200: #d6605c; --secondary-50: #ebb14e; --secondary-100: #edbb65; --secondary-200: #f0c57c; --mixBlendMode: lighten; --coverBlend: multiply; --coverIndex: 0; --contrast: var(--light-0); --contrast-50: var(--light-50); --contrast-100: var(--light-100); --contrast-200: var(--light-200); --base: var(--dark-0); --base-50: var(--dark-50); --base-100: var(--dark-100); --base-200: var(--dark-200); --c: var(--dark-rgb); --base-rgb: var(--dark-rgb); --contrast-rgb: var(--light-rgb); --overlay-light: rgba(var(--c), .25); --overlay-medium: rgba(var(--c), .5); --overlay-heavy: rgba(var(--c), .85); --shimmer: rgba(var(--c),0) 0%, rgba(var(--c),.05) 50%, rgba(var(--c),0) 100%; --shadow: rgba(var(--light-rgb),.45) 0px 0px 4px; --shadow-down: rgba(var(--light-rgb),.45) 0 6px 5px -5px; /* Bottom */ --shadow-right: rgba(var(--light-rgb),.45) 6px 0 5px -5px; /* Right */ --shadow-left: rgba(var(--light-rgb), .45) -6px 0 5px -5px; /* Left */ --shadow-up: rgba(var(--light-rgb), .45) 0 -6px 5px -5px; /* Up */ --subtle: rgba(var(--light-rgb), .45) 0px 25px 20px -20px; --subtleRight: rgba(var(--light-rgb), .45) 10px 0 20px -20px; --successBack: #155724; --successText:#d4edda; --errorBack: #721c24; --errorText: #f8d7da; /*--dashed: url("data:image/svg+xml,%3csvg width='100%25' height='100%25' xmlns='http://www.w3.org/2000/svg'%3e%3crect width='100%25' height='100%25' fill='none' stroke='%23fafafa' stroke-width='1' stroke-dasharray='12%2c18%2c36' stroke-dashoffset='0' stroke-linecap='square'/%3e%3c/svg%3e");*/ /*--minus: url('data:image/svg+xml,');*/ /*--plus: url('data:image/svg+xml,');*/ /*--close: url('data:image/svg+xml,');*/ /*--chevron: url('data:image/svg+xml,');*/ /*--details: url('data:image/svg+xml,');*/ /*--shop: url('data:image/svg+xml,');*/ /*--style: url('data:image/svg+xml,');*/ /*--map: url('data:image/svg+xml,');*/ /*--theme: url('data:image/svg+xml,');*/ /*--arrow-up: url('data:image/svg+xml,');*/ /*--colour: url('data:image/svg+xml,');*/ /*--linkIcon: url('data:image/svg+xml,');*/ } /* https://frontendmasters.com/blog/the-coyier-css-starter/ */ @layer reset { html { color-scheme: light dark; font: clamp(1rem, 1rem + 0.5vw, 2rem) / 1.4 system-ui, sans-serif; tab-size: 2; hanging-punctuation: first allow-end last; word-break: break-word; } body { margin: 0; /*padding: 2rem;*/ /*@media (width < 500px) {*/ /* padding: 1rem;*/ /*}*/ } *, *::before, *::after { box-sizing: border-box; } h1, h2 { font-weight: 900; letter-spacing: -0.02rem; } h1, h2, h3 { line-height: 1.1; } h1, h2, h3, h4, h5, h6 /* FUTURE :heading */ { text-wrap: balance; margin-block-start: 0; } p, li, dd { text-wrap: pretty; max-inline-size: 88ch; } a { color: oklch(0.68 0.17 228); text-underline-offset: 2px; &:not(:is(:hover, :focus)) { text-decoration-color: color-mix(in srgb, currentColor, transparent 50%); } } sub, sup { font-size: 75%; line-height: 0; position: relative; vertical-align: baseline; } sub { inset-block-end: -0.25em; } sup { inset-block-start: -0.5em; } ul, ol, dl { margin: 0; padding: 0; list-style: inside; ul, ol, dl { padding-inline-start: 2ch; } } li { padding-bottom: .5rem; } img, video, iframe { display: block; max-inline-size: 100%; block-size: auto; border-style: none; } figure { inline-size: fit-content; margin-inline: auto; } figcaption { contain: inline-size; font-size: 90%; } input, select, textarea, button { font: inherit; /* FUTURE: appearance: base; */ } label { display: block; } input:not( :where( [type="submit"], [type="checkbox"], [type="radio"], [type="button"], [type="reset"] ) ) { inline-size: 100%; } button, input:where( [type="submit"], [type="reset"], [type="button"] ) { background: CanvasText; color: Canvas; border: 1px solid transparent; } textarea { field-sizing: content; min-block-size: 5lh; inline-size: 100%; max-inline-size: 100%; } pre, code, kbd, samp { font-family: ui-monospace, SFMono-Regular, monospace; } svg { fill: currentColor; } [aria-disabled="true" i], [disabled] { cursor: not-allowed; } [hidden] { display: none !important; } [disabled], label:has(input[disabled]) { opacity: 0.5; [disabled] { opacity: 1; } } pre { white-space: pre-wrap; background: CanvasText; color: Canvas; padding: 1.5rem; } hr { border-style: solid; border-width: 1px 0 0; color: inherit; height: 0; overflow: visible; margin-block: 2.5rem; } :target { scroll-margin: 3rlh; } table { caption-side: bottom; border-collapse: collapse; td { font-size: 90%; } td, th { word-break: normal; border: 1px solid gray; padding: 0.5rem; } } [role="region"][aria-labelledby][tabindex] { overflow: auto; } caption { font-size: 90%; } .screen-reader-text:not(:focus):not(:active) { clip: rect(0 0 0 0); clip-path: inset(50%); height: 1px; overflow: hidden; position: absolute; white-space: nowrap; width: 1px; } :focus-visible { outline-offset: 2px; } @media (prefers-reduced-motion: no-preference) { @view-transition { navigation: auto; } html { interpolate-size: allow-keywords; &:focus-within { scroll-behavior: smooth; } } } } /*************************************************************** SCROLLBAR ***************************************************************/ * { scrollbar-width: thin; scrollbar-color: var(--scrollbar-thumb-color) var(--scrollbar-track-color); } /* For WebKit browsers (Chrome, Safari, etc.) */ ::-webkit-scrollbar { width: var(--scrollbar-width); height: var(--scrollbar-width); } ::-webkit-scrollbar-track { background: var(--scrollbar-track-color); } ::-webkit-scrollbar-thumb { background-color: var(--scrollbar-thumb-color); border-radius: var(--scrollbar-border-radius); border: var(--scrollbar-thumb-border); } ::-webkit-scrollbar-thumb:hover { background-color: var(--scrollbar-thumb-hover-color); } body{ background-color: var(--base-50); color: var(--contrast); max-width: 100vw; overflow-x: hidden; margin: 0; font-family: var(--body); font-weight: var(--bWeight); font-size: var(--medium); line-height: 1.4; position: relative; } body b, body strong { font-weight: var(--bBold); } *:target { scroll-snap-margin-top: max(6rem, 20vh); scroll-margin-top: max(6rem, 20vh); outline: double var(--action-0); border-radius: var(--outerRadius); padding: var(--outerPadding); } body.menu_item *:target h2 { background-color: var(--action-0); color: var(--action-contrast); } body, body * { transition: background-color var(--transition-base); transition-property: background-color, border; } .home > section:first-of-type, .home main { margin-top: 0; } /************************************************************** UTILITY CLASSES **************************************************************/ body:has(aside.expanded), body:has(nav.open), body:has(dialog[open]), body.loading { overflow: hidden; } /** PADDING **/ .p-1 {padding: var(--sp1);} .p-2 {padding: var(--sp2);} .p-3 {padding: var(--sp3);} .p-4 {padding: var(--sp4);} .p-5 {padding: var(--sp5);} .p-6 {padding: var(--sp6);} .p-7 {padding: var(--sp7);} .px-1 {padding-left: var(--sp1);padding-right: var(--sp1);} .px-2 {padding-left: var(--sp2);padding-right: var(--sp2);} .px-3 {padding-left: var(--sp3);padding-right: var(--sp3);} .px-4 {padding-left: var(--sp4);padding-right: var(--sp4);} .px-5 {padding-left: var(--sp5);padding-right: var(--sp5);} .px-6 {padding-left: var(--sp6);padding-right: var(--sp6);} .px-7 {padding-left: var(--sp7);padding-right: var(--sp7);} .py-1 {padding-top: var(--sp1);padding-bottom: var(--sp1);} .py-2 {padding-top: var(--sp2);padding-bottom: var(--sp2);} .py-3 {padding-top: var(--sp3);padding-bottom: var(--sp3);} .py-4 {padding-top: var(--sp4);padding-bottom: var(--sp4);} .py-5 {padding-top: var(--sp5);padding-bottom: var(--sp5);} .py-6 {padding-top: var(--sp6);padding-bottom: var(--sp6);} .py-7 {padding-top: var(--sp7);padding-bottom: var(--sp7);} .pt-1 { padding-top: var(--sp1); } .pr-1 { padding-right: var(--sp1); } .pl-1 { padding-left: var(--sp1); } .pb-1 { padding-bottom: var(--sp1); } .pt-2 { padding-top: var(--sp2); } .pr-2 { padding-right: var(--sp2); } .pl-2 { padding-left: var(--sp2); } .pb-2 { padding-bottom: var(--sp2); } .pt-3 { padding-top: var(--sp3); } .pr-3 { padding-right: var(--sp3); } .pl-3 { padding-left: var(--sp3); } .pb-3 { padding-bottom: var(--sp3); } .pt-4 { padding-top: var(--sp4); } .pr-4 { padding-right: var(--sp4); } .pl-4 { padding-left: var(--sp4); } .pb-4 { padding-bottom: var(--sp4); } .pt-5 { padding-top: var(--sp5); } .pr-5 { padding-right: var(--sp5); } .pl-5 { padding-left: var(--sp5); } .pb-5 { padding-bottom: var(--sp5); } .pt-6 { padding-top: var(--sp6); } .pr-6 { padding-right: var(--sp6); } .pl-6 { padding-left: var(--sp6); } .pb-6 { padding-bottom: var(--sp6); } .pt-7 { padding-top: var(--sp7); } .pr-7 { padding-right: var(--sp7); } .pl-7 { padding-left: var(--sp7); } .pb-7 { padding-bottom: var(--sp7); } /** MARGIN **/ .m-1 {margin: var(--sp1);} .m-2 {margin: var(--sp2);} .m-3 {margin: var(--sp3);} .m-4 {margin: var(--sp4);} .m-5 {margin: var(--sp5);} .m-6 {margin: var(--sp6);} .m-7 {margin: var(--sp7);} .mx-1 {margin-left: var(--sp1);margin-right: var(--sp1);} .mx-2 {margin-left: var(--sp2);margin-right: var(--sp2);} .mx-3 {margin-left: var(--sp3);margin-right: var(--sp3);} .mx-4 {margin-left: var(--sp4);margin-right: var(--sp4);} .mx-5 {margin-left: var(--sp5);margin-right: var(--sp5);} .mx-6 {margin-left: var(--sp6);margin-right: var(--sp6);} .mx-7 {margin-left: var(--sp7);margin-right: var(--sp7);} .my-1 {margin-top: var(--sp1);margin-bottom: var(--sp1);} .my-2 {margin-top: var(--sp2);margin-bottom: var(--sp2);} .my-3 {margin-top: var(--sp3);margin-bottom: var(--sp3);} .my-4 {margin-top: var(--sp4);margin-bottom: var(--sp4);} .my-5 {margin-top: var(--sp5);margin-bottom: var(--sp5);} .my-6 {margin-top: var(--sp6);margin-bottom: var(--sp6);} .my-7 {margin-top: var(--sp7);margin-bottom: var(--sp7);} .mt-1 { margin-top: var(--sp1); } .mr-1 { margin-right: var(--sp1); } .ml-1 { margin-left: var(--sp1); } .mb-1 { margin-bottom: var(--sp1); } .mt-2 { margin-top: var(--sp2); } .mr-2 { margin-right: var(--sp2); } .ml-2 { margin-left: var(--sp2); } .mb-2 { margin-bottom: var(--sp2); } .mt-3 { margin-top: var(--sp3); } .mr-3 { margin-right: var(--sp3); } .ml-3 { margin-left: var(--sp3); } .mb-3 { margin-bottom: var(--sp3); } .mt-4 { margin-top: var(--sp4); } .mr-4 { margin-right: var(--sp4); } .ml-4 { margin-left: var(--sp4); } .mb-4 { margin-bottom: var(--sp4); } .mt-5 { margin-top: var(--sp5); } .mr-5 { margin-right: var(--sp5); } .ml-5 { margin-left: var(--sp5); } .mb-5 { margin-bottom: var(--sp5); } .mt-6 { margin-top: var(--sp6); } .mr-6 { margin-right: var(--sp6); } .ml-6 { margin-left: var(--sp6); } .mb-6 { margin-bottom: var(--sp6); } .mt-7 { margin-top: var(--sp7); } .mr-7 { margin-right: var(--sp7); } .ml-7 { margin-left: var(--sp7); } .mb-7 { margin-bottom: var(--sp7); } .text-center { text-align: center; } .text-left { text-align: left; } .text-right { text-align: right; } *[hidden] { display: none!important; } @media (max-width: 767px){ .hide-small { display: none; } } .width-50 { width: 100%; } .width-25 { width: 50%; } .width-75 { width: 100%; } .w-full, .width-full { width: 100%; } @media (min-width: 768px){ .buttons li.width-50, .width-50 { width: calc(50% - .3em); } .width-25 { width: calc(25% - .3em); } .width-75 { width: calc(75% - .3em); } } .row:not(.icon), .col { --align: center; --justify: center; display: flex; justify-content: var(--justify); align-items: var(--align); gap: var(--gap); flex-wrap: var(--wrap); flex-direction: var(--dir); } .col { --dir: column; } .row:not(.icon) { --dir: row; } .col.rev { --dir: column-reverse; } .row.rev { --dir: row-reverse; } .nowrap { --wrap: nowrap; } .col.a-start, .row.start { --justify: flex-start; } .col.a-end, .row.end { --justify: flex-end; } .col.btw, .row.btw { --justify: space-between; width: 100%; } .col.even, .row.even { --justify: space-evenly; } .col.start, .row.a-start { --align: flex-start; } .col.end, .row.a-end { --align: flex-end; } .abs { position: absolute; } *:has(>.abs) { position: relative; } .hidden { transform: scale(0); max-width: 0; max-height: 0; overflow: hidden; transition: var(--transition-transform), var(--transition-size); } .visible { transform: scale(1); max-width: 100%; max-height: 100%; transition: var(--transition-transform), var(--transition-size); } /****************************************************************** THEME SWITCHER & TOGGLE ******************************************************************/ .toggle-switch input { opacity: 0; width: 0; height: 0; position: absolute; left: var(--offScreen); } .toggle-switch .slider { position: relative; width: 2rem; height: 1rem; background-color: var(--base-200); border-radius: .75rem; overflow: hidden; display: flex; justify-content: space-evenly; align-items: center; border: 4px solid transparent; transition: .3s; box-shadow: 0 0 .25rem 0 rgba(var(--contrast-rgb), .125) inset; cursor: pointer; margin: 5px; } .toggle-switch .slider::before { content: ''; display: block; width: 100%; height: 100%; position: absolute; top:0; left: 0; background-color: var(--base); transform: translateX(-1rem); border-radius: .75rem; transition: .3s; box-shadow: 0 0 .25rem 3px rgba(var(--contrast-rgb), .125); } .toggle-switch input:checked ~ .slider::before { transform: translateX(1rem); box-shadow: 0 0 .25rem 3px rgb(0, 0, 0, 0.25); } .toggle-switch input:checked ~ .slider { background-color: var(--action-0); } .toggle-switch input:active ~ .slider::before { transform: translate(0); } /*.theme-switcher {*/ /* position: absolute;*/ /* opacity: 0;*/ /* width: 0;*/ /* height: 0;*/ /*}*/ #theme-switch { z-index: 99; margin: 0; --wrap: nowrap; --gap: 1rem; } #theme-switch .slider { width: 3rem; height: 1.5rem; } #theme-switch .slider::before { transform: translateX(-1.5rem); } #theme-switch input:checked ~ .slider::before { transform: translateX(1.5rem); } /*#theme-switch,*/ /*.toggle-switch {*/ /* --wrap: nowrap;*/ /* cursor: pointer;*/ /*}*/ /*#theme-switch,*/ /*.toggle-switch input[type=checkbox] {*/ /* --h: 2rem;*/ /* width: calc(var(--h) * 2);*/ /* height: var(--h);*/ /* margin: 0 2rem 0 0;*/ /* left: 0;*/ /* appearance:none;*/ /* background: var(--base-200);*/ /* border: 1px solid var(--base-50);*/ /* border-radius: var(--h);*/ /* cursor: pointer;*/ /* transition: all .3s ease;*/ /* opacity: 1;*/ /*}*/ /*.toggle-switch input[type=checkbox] {*/ /* position: relative;*/ /*}*/ /*.toggle-switch {*/ /* position: relative;*/ /*}*/ @media (max-width: 600px) { #theme-switch { left: 1rem; } .wp-site-blocks > header { padding: 0!important; } } /* Icon wrapper styling */ /*#theme-switch .icon {*/ /* --w: 1em;*/ /* position: relative;*/ /* top: 0;*/ /* margin: 0 .25em;*/ /* color: var(--contrast-200);*/ /* z-index: 2;*/ /* transform: translateX(0);*/ /*}*/ /*#theme-switcher:not(:checked) ~ .sun-dim,*/ /*#theme-switcher:checked ~ .moon {*/ /* --w: 1.5em;*/ /* color: var(--contrast);*/ /*}*/ /*#theme-switcher:not(:checked) ~ .moon,*/ /*#theme-switcher:checked ~ .sun-dim {*/ /* top: -.17rem;*/ /*}*/ /* #theme-switcher:not(:checked) ~ .sun-dim {*/ /* color: var(--secondary-0);*/ /* transform: translate(-2px, 2px);*/ /* }*/ /* #theme-switcher:checked ~ .moon {*/ /* transform: translate(4px, 4px);*/ /* }*/ /*#theme-switch span,*/ /*.toggle-switch input[type=checkbox]::before {*/ /* --m: 2px;*/ /* content: "";*/ /* position: absolute;*/ /* top: var(--m);*/ /* left: var(--m);*/ /* width: calc(var(--h) - (var(--m) * 2));*/ /* height: calc(var(--h) - var(--m) * 2);*/ /* border: 1px solid rgba(var(--contrast-rgb), .2);*/ /* border-bottom: 3px solid var(--contrast-200);*/ /* background: var(--base-50);*/ /* border-radius: 50%;*/ /* z-index: 1;*/ /* transform: rotate(360deg);*/ /* transition: transform var(--transition-base),*/ /* left var(--transition-base),*/ /* top var(--transition-base),*/ /* height var(--transition-base);*/ /*}*/ /* #theme-switch input:checked ~ span,*/ /* .toggle-switch input[type=checkbox]:checked::before {*/ /* left: calc(100% - (var(--h) - var(--m)));*/ /* transform: rotate(-180deg);*/ /* transition: transform var(--transition-base), left var(--transition-base);*/ /* }*/ /* .toggle-switch input[type=checkbox]:checked {*/ /* background: var(--action-0);*/ /* }*/ /*!* Focus States *!*/ /*.theme-switch:focus-visible + label {*/ /* outline: 2px solid var(--action-0);*/ /* outline-offset: 2px;*/ /*}*/ /*!* Icon Animations *!*/ /*#theme-switch .icon {*/ /* transition:*/ /* transform var(--transition-base),*/ /* width var(--transition-base),*/ /* height var(--transition-base),*/ /* top var(--transition-base),*/ /* color var(--transition-base);*/ /*}*/ /*#theme-switcher:not(:checked) ~ .icon.dark,*/ /*#theme-switcher:checked ~ .icon.light {*/ /* transform: rotate(360deg);*/ /* color: var(--contrast-200);*/ /*}*/ /*#theme-switcher:not(:checked) ~ .icon.light,*/ /*#theme-switcher:checked ~ .icon.dark {*/ /* transform: rotate(-360deg);*/ /* color: var(--contrast);*/ /*}*/ /*!* Hover Effects *!*/ /*#theme-switch:hover span {*/ /* background-color: var(--base-100);*/ /*}*/ /*#theme-switch:hover .icon {*/ /* color: var(--action-50);*/ /*}*/ /*!* Active State *!*/ /*#theme-switch:active span {*/ /* transform: scale(.97);*/ /*}*/ /*********************************************************** SMOOTH SCROLLING ***********************************************************/ html { scroll-behavior: smooth; } @media(prefers-reduced-motion){ html { scroll-behavior: unset; } * { transition: none!important; animation: none!important; } } /********************************************************* SPACING *********************************************************/ main { min-height: 90vh; --justify: flex-start; } main > * { width: 100%; max-width: var(--maxWidth); margin: var(--setMargin); } main > .align-wide { max-width: var(--alignWide); } main > .align-full { --ml: 0; --mr: 0; max-width: var(--full); } main > section { --mt: 6rem; } main > *:first-child { margin-top: 0; } footer { padding: 1rem; background-color: var(--base-200); color: var(--contrast-200); text-align: center; margin: 4rem 0 0; position: relative; z-index: var(--z-top); } body:has(nav.fixed.bottom,nav.on-this-page) footer { padding-bottom: var(--offHeight); } footer p, footer p + p { margin: .5rem auto; } @media (min-width:768px) { footer { padding: 1rem 2rem var(--offHeight); } } /********************************************************* GRIDS *********************************************************/ .grid-view, .item-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; } .grid-view .item, .item-grid .item { border-radius: var(--outerRadius); aspect-ratio: 1; display:flex; filter: none; transition: filter var(--transition-base), padding var(--transition-base), background-color var(--transition-base); } .item-grid button { --height: max-content; aspect-ratio: 1; } .grid-view img, .item-grid img { border-radius: var(--innerRadius); } .item-grid.list-view { display: flex; flex-direction: column; gap: 2rem; --gap: 2rem; } .item-grid.list-view .item .col { --gap: .5rem; } .item-grid.list-view img { width: 20%; } @media (min-width: 768px) { .item-grid, .grid-view { grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); } } /********************************************************* TYPOGRAPHY *********************************************************/ h1 b, h1 strong, h2 b, h2 strong, h3 b, h3 strong, h4 b, h4 strong, h5 b, h5 strong, h6 b, h6 strong { font-weight: var(--hBold); letter-spacing: 2px; } h1, h2, h3, h4, h5, h6 { --mt: 1.5em; --mb: .25em; font-family: var(--heading); text-transform: uppercase; font-weight: var(--hWeight); line-height: 1.3; margin: var(--mt) var(--mr) var(--mb) var(--ml); } h1.inline, h2.inline, h3.inline, h4.inline, h5.inline, h6.inline { font-size: 1.2rem; font-weight: 600; display: inline-block; margin: 0 2rem 0 0; letter-spacing: .05em; } h1 small, h2 small, h3 small, h4 small, h5 small, h6 small { display: block; line-height: .8; font-family: var(--body); font-size: .5em; } h1.inline + *, h2.inline + *, h3.inline + *, h4.inline + *, h5.inline + *, h6.inline + * { display: inline-block; margin: .5rem 0; } h1.inline + .term-list, h2.inline + .term-list, h3.inline + .term-list, h4.inline + .term-list, h5.inline + .term-list, h6.inline + .term-list { display: inline-flex; margin: .5rem 0; } h1 { font-size: var(--xxxlarge); font-weight: var(--hWeight); line-height: 1; margin: 0 var(--mr) .25em var(--ml); } h1:first-of-type { margin-top: 20vh; } h1 small { display: block; font-size: var(--small); font-weight: var(--bWeight); line-height: 1; font-family: var(--body); } h2 { font-size: var(--xxlarge); } h3 { font-size: var(--xlarge); } h4 { /*font-family: var(--body);*/ font-weight: 400; font-size: var(--large); } h5, h6 { /*font-family: var(--body);*/ font-weight: 400; font-size: var(--medium); } p { line-height: 1.6; } main > * h1, main > * h2, main > * h3, main > * h4, main > * h5, main > * h6, main > * p { width: 100%; } main > * p { margin: .5rem 0; } /*p + p {*/ /* margin-top: 2.5rem;*/ /*}*/ a { color: var(--action-0); text-decoration: none; } ul a { display: inline-flex; text-decoration: none; } a:visited { color: var(--action-100); } a:hover { color: var(--action-50); text-decoration: underline; } ol { list-style-type:decimal; } /****************************************************************** BUTTONS ******************************************************************/ .buttons { --wrap: wrap; --justify: flex-start; margin: 1rem var(--mr) 1rem var(--ml); width: 100%; padding: 0; } .buttons.fit { width: fit-content; margin: 1rem 2rem; } .buttons li { --justify: stretch; --align: stretch; padding: 0; list-style: none; overflow:hidden; width: 100%; } .list-none { list-style: none; } @media (min-width: 768px){ .buttons { max-width: var(--maxWidth); margin: 3rem var(--mr) 3rem var(--ml); } } ul.socials a, .buttons a, .btn + label, [type=submit], a.button, a.wp-block-button__link, button { --justify: center; --align: center; --dir: row; width: fit-content; text-transform: uppercase; text-decoration: none; text-align: center; background-color: var(--base-100); color: var(--contrast-50); border: 1px solid var(--base-200); border-radius: var(--innerRadius); padding: .25rem 1rem; font-family: var(--heading); cursor: pointer; outline: inherit; height: var(--height); display: inline-flex; justify-content: var(--justify); align-items: var(--align); gap: var(--gap); flex-wrap: var(--wrap); flex-direction: var(--dir); transition: color var(--transition-base); transition-property: color, border,background-color; position: relative; } a.button:hover, a.button:focus, ul.socials a:hover, ul.socials a:focus, .buttons a:hover, .buttons a:focus, .btn + label:hover, .btn + label:focus, [type=submit]:hover, [type=submit]:focus, button:hover, button:focus { background-color: var(--action-0); color: var(--action-contrast); } .buttons .outline a { background-color: transparent; color: var(--action-0); border: 2px solid var(--action-0); } .buttons .outline a:hover, .buttons .outline a:focus { background-color: var(--action-0); color: var(--action-contrast); border-color: var(--action-0); } .buttons a { width: 100%; } ul.socials a:disabled, ul.socials a:disabled:hover, .btn:disabled + label, .btn:disabled + label:hover, [type=submit]:disabled, [type=submit]:disabled:hover, [type=submit]:disabled:focus, a.button:disabled, a.wp-block-button__link:disabled, button:disabled, a.button:disabled:hover, a.wp-block-button__link:disabled:hover, button:disabled:hover, a.button:disabled:focus, a.wp-block-button__link:disabled:focus, button:disabled:focus { opacity: .5; background-color: var(--base-200)!important; color: var(--contrast-200)!important; } details .icon { --w: 1.5em; } button.voted .icon, button.favourite.favourited { animation: favourite-pop .4s cubic-bezier(.25, .46, .45, .94); } @keyframes favourite-pop { 0% { transform: scale(1); } 50% { transform: scale(1.3); } 75% { transform: scale(.9); } 100% { transform: scale(1); } } button.filter-toggle { border: 1px solid var(--base-200); background-color: transparent; white-space: nowrap; font-size: 1rem; padding: .35em; --w: 1.2em; } .filter-toggle:hover { border-color: var(--action-50); color: var(--action-50); } .filter-toggle:focus { background-color: var(--action-50); color: var(--action-contrast); } button.favourite:not(.favourited) .heart-fill, button.favourite.favourited .heart, .toggle.notifications:not(.has) .bell-ringing, .toggle.notifications.has .bell, .vote button:not(.voted) .upvoted, .vote button:not(.voted) .downvoted, .vote .voted .upvote, .vote .voted .downvote { display: none; } button.favourite:not(.favourited) .heart, button.favourite.favourited .heart-fill, .toggle.notifications:not(.has) .bell, .toggle.notifications.has .bell-ringing, .vote button:not(.voted) .upvote, .vote button:not(.voted) .downvote, .vote .voted .upvoted, .vote .voted .downvoted { display: block; } /****************************************************************** ICONS ******************************************************************/ i.icon { width: var(--w); height: var(--w); display: inline-block; background-color: currentColor; mask-image: var(--icon); -webkit-mask-image: var(--icon); mask-size: contain; -webkit-mask-size: contain; mask-repeat: no-repeat; -webkit-mask-repeat: no-repeat; mask-position: center; -webkit-mask-position: center; vertical-align: middle; transition: var(--transition-size), var(--transition-color); } .icon.small, nav ul .icon { --w: 24px; } .icon-colour { background: rgb(183, 51, 46); background: linear-gradient(180deg, rgba(255,0,128,1) 0%, rgba(250,71,101,1) 14%, rgba(251,121,35,1) 28%, rgba(176,190,19,1) 42%, rgba(14,204,0,1) 56%, rgba(14,225,166,1) 70%, rgba(63,152,253,1) 84%, rgba(166,90,196,1) 100%); } .icon.logo-basic svg path { transition: fill var(--timing) var(--function); } .icon.logo-basic svg path#innerCircle, .icon.logo-basic svg path#outerSkull { fill: var(--base); } a .icon.logo-basic:hover svg path { fill: var(--base); } a .icon.logo-basic:hover svg path#innerCircle, a .icon.logo-basic:hover svg path#outerSkull { fill: var(--action-0); } .icon.grab { cursor: grab; } main a .icon { margin-right: .5em; } body:has(#theme-switcher:not(:checked)) .icon.logo-split-color { position: relative; } body:has(#theme-switcher:not(:checked)) .icon.logo-split-color::before{ content: ''; display: block; width:60%; height:60%; border-radius: 50%; background-color: var(--dark-200); position: absolute; left: 18%; top: 22%; z-index:-1; } path#refresh { transform-origin: center; transform-box: fill-box; animation: spin 1s var(--function) infinite; } /****************************************************************** ACCESSIBILITY ******************************************************************/ .screen-reader-text { border: 0; clip: rect(1px, 1px, 1px, 1px); clip-path: inset(50%); height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute !important; width: 1px; word-wrap: normal !important; } input[type=checkbox] + label:focus, input[type=checkbox] + label:focus-visible, input[type=radio] + label:focus, input[type=radio] + label:focus-visible, input:focus, input:focus-within { outline: 2px solid var(--action-0) !important; outline-offset: 2px !important; box-shadow: 0 0 0 4px rgba(var(--action-rgb), var(--rgb-light))!important; } [aria-busy="true"] { cursor: progress; } /* Disabled states */ [aria-disabled="true"], [disabled] { cursor: not-allowed; opacity: .7; } /****************************************************************** DETAILS ******************************************************************/ details { padding: .25rem 0; border-top: 1px solid var(--base-200); border-bottom: 1px solid var(--base-200); } details[open] { background-color: var(--base-50); } details summary { --wrap: nowrap; list-style: none; text-transform: uppercase; cursor: pointer; border: 0; transition: background-color var(--transition-base); transition-property: background-color, border; position: relative; padding: .5rem 2.5rem .5rem .5rem; gap: .5rem; } details summary:hover { background-color: var(--base-100); border-color: var(--base-100); color: var(--contrast); transition: background-color var(--transition-base); transition-property: background-color, border,color; } details[open] > summary { background-color: var(--base-50); } details summary::after { content: ""; background-color: var(--contrast-100); -webkit-mask-repeat: no-repeat; -webkit-mask-size: contain; -webkit-mask-image: var(--details); mask-image: var(--details); mask-repeat: no-repeat; mask-size: contain; width: 1.25rem; height: 1.25rem; margin-left: auto; transition: background-color var(--transition-base); transition-property: background-color, transform; } details summary:hover::after, details[open] > summary::after { background-color: var(--contrast); } details[open] > summary::after { transform: rotate(-540deg); transition: background-color var(--transition-base); transition-property: background-color, transform; } details::details-content { opacity: 0; block-size: 0; overflow-y: clip; transition: content-visibility var(--timing) allow-discrete, opacity var(--timing), block-size var(--timing); } details[open]::details-content { opacity: 1; block-size: auto; } @media (prefers-reduced-motion: no-preference){ details { interpolate-size: allow-keywords; } } /****************************************************************** FORMS & FIELDS ******************************************************************/ textarea, input[type=date], input[type=number], input[type=text], input[type=url], input[type=email], input[type=textarea], input[type=tel], input[type=password], input[type=search] { font-family: var(--body); font-size: var(--medium); color: var(--contrast); padding: var(--p-y) var(--p-x); border-radius: var(--innerRadius); background-color: var(--base); outline: 0; border: 1px solid var(--base-100); border-bottom: 2px solid var(--contrast-200); width: 100%; max-width: 100%; margin: 0 4px; transition: background-color var(--transition-base); transition-property: background-color, border; } textarea:focus, input[type=number]:focus, input[type=text]:focus, input[type=url]:focus, input[type=email]:focus, input[type=textarea]:focus, input[type=tel]:focus, input[type=password]:focus, input[type=search]:focus { outline: var(--action-50); background-color: var(--base-100); color: var(--contrast); } textarea::placeholder, input::placeholder { font-family: var(--body); color: var(--base-200); } @media (min-width: 768px) { :root { --p-y: 1rem; } } select { /*appearance: none;*/ /*-webkit-appearance: none;*/ /*-moz-appearance: none;*/ background: var(--base); border: 2px solid var(--base-100); border-radius: var(--innerRadius); color: var(--contrast); cursor: pointer; font-family: var(--body); font-size: var(--small); padding: .5rem 1rem; width: 100%; transition: var(--transition-color); } select:disabled { background-color: var(--base-50); border-color: var(--base-100); color: var(--base-200); cursor: not-allowed; } select option { background: var(--base); color: var(--contrast); padding: .5rem; } select option:hover, select option:focus, select option:active, select option:checked { background: var(--action-0); color: var(--base); box-shadow: 0 0 0 100px var(--action-0) inset; } select option:checked { background: var(--action-0) linear-gradient(0deg, var(--action-0) 0%, var(--action-0) 100%); color: var(--base); } select:hover { border-color: var(--action-0); } select:focus { border-color: var(--action-0); } input[type=search]:focus + .clear-search { opacity: 1; cursor: pointer; transition: opacity var(--transition-base); } .search-container .clear-search { opacity: 0; cursor: default; transition: opacity var(--transition-base); } .search-container .icon.search { padding: 4px 8px; color: var(--contrast-200); --w: 3rem; } input[type="search"]::-moz-search-clear-button, input[type="search"]::-ms-clear, input[type="search"]::-ms-reveal, input[type="search"]::search-cancel-button { -webkit-appearance: none; -moz-appearance: none; appearance: none; display: none; visibility: hidden; } input[type="search"]::-webkit-search-decoration, input[type="search"]::-webkit-search-cancel-button, input[type="search"]::-webkit-search-results-button, input[type="search"]::-webkit-search-results-decoration { -webkit-appearance:none; } .integration .label, label { text-transform: uppercase; font-weight: bold; margin-bottom: .5rem; display: block; } /********************** SPECIAL FIELDS **********************/ .selected-items { --justify: flex-start; --gap: .5rem; margin-bottom: .5rem; } .selected-item { padding: .25rem .5rem; margin: .125em; background: var(--base-100); border-radius: .25rem; font-size: var(--medium); border: 1px solid var(--base-200); position: relative; } .remove-item { background: none; border: none; padding: .25rem; cursor: pointer; color: #666; border-radius: var(--innerRadius); width: 1.5em; height: 1.5em; } .remove-item .close { width: .5em; height: .5em; } .remove-item:hover { color: var(--action-0); background: #fee; } .clear-filters { margin-left: auto; border: 1px solid var(--base-200); } [type=radio], [type=checkbox], input.ch { position: absolute; opacity: 0; left: -200vw; } /* Pseudo checkbox */ [type=radio] + label, [type=checkbox] + label, input.ch + label { position: relative; cursor: pointer; } [type=radio] + label:hover, [type=checkbox] + label:hover { color: var(--action-0); } [type=radio] + label::before, [type=checkbox] + label::before, input.ch + label::before, [type=radio] + label::after, [type=checkbox] + label::after, input.ch + label::after { content: ''; position: absolute; top: 50%; } [type=radio] + label::after, [type=checkbox] + label::after, input.ch + label::after { left: 5px; transform: translateY(-70%) rotate(45deg); width: 5px; height: 10px; border: solid var(--light-0); border-width: 0 2px 2px 0; display: none; } [type=radio] + label::before, [type=checkbox] + label::before, input.ch + label::before { left: 0; transform: translateY(-50%); width: 1rem; height: 1rem; border: 2px solid var(--contrast-200); background-color: var(--base); border-radius: var(--innerRadius); transition: background-color var(--transition-base), border-color var(--transition-base); } [type=radio]:hover + label::before, [type=checkbox]:hover + label::before, input.ch:hover + label::before { border-color: var(--action-200); } [type=radio]:checked + label::before, [type=checkbox]:checked + label::before, input.ch:checked + label::before { background-color: var(--action-0); border-color: var(--action-100); } [type=radio]:checked + label::before { border-radius: 50%; } [type=checkbox]:checked + label::after, input.ch:checked + label::after { display: block; left: 5px; top: 50%; transform: translateY(-70%) rotate(45deg); width: .35rem; height: .66rem; border: solid var(--light-0); border-width: 0 2px 2px 0; } [type=radio]:disabled + label, [type=checkbox]:disabled + label, input.ch:disabled + label { cursor: not-allowed; background-color: var(--base-50); color: var(--base-200); border-color: var(--base-200); } [type=radio]:disabled + label:hover, [type=checkbox]:disabled + label:hover, input.ch:disabled + label:hover { background-color: var(--base-50); color: var(--base-200); border-color: var(--base-200); } [type=radio]:disabled + label::before, [type=checkbox]:disabled + label::before, input.ch:disabled + label::before { border-color: var(--base-200); } [type=radio]:not(.btn) + label, [type=checkbox]:not(.btn) + label, input.ch + label { flex: 1; padding-left: 2rem; transform-origin: top center; transition: transform .3s ease; will-change: transform; } /* Non-pseudo checkbox, that acts more like a button/pill style */ .btn + label::before, .btn + label::after { display: none; } .btn + label { --w: 1.2em; /* For icons */ border: 1px solid var(--base-200); border-radius: var(--innerRadius); min-width: 2rem; min-height: 2rem; margin: 0; display: flex; justify-content: center; align-items: center; flex-wrap: nowrap; gap: .5rem; color: var(--contrast-200); opacity: .8; } .radio-options.status label { padding: 0 .5rem; } .btn:checked + label { border-color: var(--contrast); color: var(--contrast); opacity: 1; } .btn + label:hover { color: var(--action-50); border-color: var(--action-50); } .btn[hidden] + label { display: none; } /* DATE */ .date-wrapper { position: relative; display: inline-block; } input[type=date] { padding: 8px 36px 8px 8px; /*border: 1px solid #ccc;*/ border-radius: 4px; } input[type=date]::-webkit-calendar-picker-indicator { opacity: 0; width: 100%; height: 100%; position: absolute; top: 0; left: 0; cursor: pointer; } input[type=date] + .icon { --w: 20px; position: absolute; right: 10px; top: 50%; transform: translateY(-50%); pointer-events: none; /* This allows clicks to pass through to the input below */ } /** TIME **/ input[type=url] { background: var(--linkIcon); background-position: .5em; background-size: 1em; background-repeat: no-repeat; padding-left: 2em; } .field { margin: 2rem 0; position: relative; } .field:has(.has-tooltip) label { margin-left: 2rem; } /*************** TOGGLE TEXT ***************/ .toggle-text input { display: none; } .toggle-text input + label { font-weight: normal; color: var(--contrast)!important; text-transform: none; cursor: pointer; position: relative; -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; } .toggle-text label::before, .toggle-text label::after { display: none; } .toggle-text label { padding-left: 0!important; } .toggle-text input + label .text { position: relative; margin: 0 .5rem; font-weight: bold; width: fit-content; padding: 2px 4px; border: 1px solid var(--action-50); border-radius: 4px; color: var(--action-50)!important; } table .toggle-text input+label .text { color: var(--contrast)!important; border-color: var(--contrast); } .toggle-text:hover .text, table .toggle-text:hover .text { background-color: var(--action-50); color: var(--light-0)!important; border-color: var(--action-50); } .toggle-text input + label .off, .toggle-text input + label .on { /*left: 0;*/ /*position: absolute;*/ /*top: 0;*/ -webkit-transition: opacity .125s ease-out, -webkit-transform .125s ease-out; transition: opacity .125s ease-out, -webkit-transform .125s ease-out; transition: transform .125s ease-out, opacity .125s ease-out; transition: transform .125s ease-out, opacity .125s ease-out, -webkit-transform .125s ease-out; } .toggle-text input + label .off { opacity: 1; max-width: 100%; -webkit-transform: none; transform: none; } .toggle-text input + label .on { opacity: 0; max-width: 0; -webkit-transform: translate3d(0, 100%, 0); transform: translate3d(0, 100%, 0); } .toggle-text input:checked + label .off { opacity: 0; max-width: 0; -webkit-transform: translate3d(0, -100%, 0); transform: translate3d(0, -100%, 0); } .toggle-text input:checked + label .on { max-width: 100%; opacity: 1; -webkit-transform: none; transform: none; } /****************************************************************** TAXONOMY SELECTOR ******************************************************************/ .items-container { margin: 0; padding: 0; width: 100%; } .create-new-term { margin-top: 1rem; width: 100%; } .create-new-term .field, .create-new-term[open] summary { margin-bottom: 1rem; } .create-new-term .field { max-width: 100%; } #jvb-selector > .wrap { --gap: nowrap; } /****************************************************************** QUANTITY FIELD ******************************************************************/ .quantity { margin: 0; } .quantity label { margin: 0; font-size: var(--small); } .quantity { display: inline-flex; width: fit-content; align-items: center; justify-content: center; border: 1px solid transparent; border-radius: 4px; position: relative; } .quantity:focus-within { border-color: var(--action-0); } .quantity button { background: var(--base); padding: 0; width: 38px; height: 38px; z-index: 0; position: relative; border: 1px solid var(--base-200); color: var(--contrast-200); } .quantity button:hover:not(:disabled) { color: var(--action-0); border-color: var(--action-0); background-color: var(--base); } .quantity button:active:not(:disabled) { background-color: var(--action-0); color: var(--light-0); transform: scale(.95); } .quantity button:disabled { opacity: .5; cursor: not-allowed; } .quantity input[type=number] { z-index: 1; border: 1px solid var(--base-200); background: var(--base); text-align: center; font-size: 1.1rem; width: 60px; height: 48px; margin: 0; padding: 0!important; appearance: textfield; } .quantity input[type=number]::-webkit-outer-spin-button, .quantity input[type=number]::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; } .quantity input[type=number]:focus { background-color: var(--base-50); } .quantity button.increase { left: -2px; border-radius: 0 4px 4px 0; } .quantity button.decrease { right: -2px; border-radius: 4px 0 0 4px; } /************************************************** LIST OVERRIDES **************************************************/ .term-list { --justify: flex-start; --align: center; --wrap: nowrap; --gap: 1.5rem; --dir: row; --w: 1em; list-style: none; padding: 0; height: var(--height); display: flex; justify-content: var(--justify); align-items: var(--align); gap: var(--gap); flex-wrap: var(--wrap); flex-direction: var(--dir); position: relative; overflow: auto hidden; touch-action: pan-x; text-transform: lowercase; } /*.term-list a {*/ /* color: var(--contrast);*/ /* text-decoration: none;*/ /* font-size: var(--small);*/ /* }*/ /* .term-list a:hover {*/ /* color: var(--action-0);*/ /* }*/ /*.term-list.shop a::before,*/ /*.term-list.style a::before,*/ /*.term-list.theme a::before,*/ /*.term-list.city a::before,*/ /*#by-city::before,*/ /*#by-style::before,*/ /*#by-theme::before,*/ /*.term-list.all a::before{*/ /* content:"";*/ /* display:inline-block;*/ /* mask-repeat: no-repeat;*/ /* mask-size: contain;*/ /* width: 1.2em;*/ /* height: 1.2em;*/ /* margin-right: .5rem;*/ /* vertical-align: middle;*/ /* background-color: currentColor;*/ /*}*/ /*.term-list a::after {*/ /* display: none;*/ /*}*/ /*.term-list.shop a::before {*/ /* mask-image: var(--shop);*/ /*}*/ /*.term-list.city a::before,*/ /*#by-city::before {*/ /* mask-image: var(--map);*/ /*}*/ /*.term-list.style a::before,*/ /*#by-style::before,*/ /*.term-list.all.styles a::before {*/ /* mask-image: var(--style);*/ /*}*/ /*.term-list.theme a::before,*/ /*#by-theme::before {*/ /* mask-image: var(--theme);*/ /*}*/ /************************************************** COVER BLOCK **************************************************/ .cover { position: relative; overflow: hidden; min-height: 60vh; padding: var(--height); } .cover::before { z-index: var(--coverIndex); background-color: var(--action-0); mix-blend-mode: var(--coverBlend); background-position: center; background-repeat: no-repeat; background-size: cover; content: ''; /*filter: brightness(.25);*/ } .cover::before, .cover > video, .cover > img { position: absolute; inset: 0; width: 100%; height: 100%; } .cover .content { z-index: 5; overflow: hidden auto; width: max-content; height: max-content; max-width:100%; max-height: 100%; } /** A second image that overlays the first one **/ .cover > img { z-index: 1; opacity: .5; mix-blend-mode: luminosity; object-fit: cover; } @media (min-width: 768px) { .cover > img { opacity: .33; } } /* Have the h1 have a background image. cool! */ /*.cover h1 {*/ /* -webkit-background-clip: text;*/ /* -webkit-box-decoration-break: clone;*/ /* -webkit-text-fill-color: rgba(0, 0, 0, 0);*/ /* background-image: var(--bg-2);*/ /* background-position: center 75%;*/ /* background-repeat: no-repeat;*/ /* background-size: cover;*/ /* display: inline;*/ /* font-size: clamp(6.5rem, 15vw, 30rem);*/ /* font-variation-settings: "wght" 900;*/ /* order: 2;*/ /* overflow: hidden;*/ /* user-select: none;*/ /*}*/ /************************************************** BLOCKQUOTE **************************************************/ blockquote { --background: var(--base-100); --border: var(--action-0); line-height: 1.2; padding: var(--height); border-radius: 4rem; background-color: var(--background); } blockquote .content { margin: 12px auto; max-width: min(680px, 80vw); position: relative; font-family: var(--heading); font-weight: var(--hBold); padding: 25px; border-radius: var(--outerRadius); border: 2px solid var(--border); } blockquote .content::before, blockquote .content::after { position: absolute; content: ''; left: 50px; } blockquote .content::before { width: 80px; border: 6px solid var(--background); bottom: -3px; z-index: 2; } blockquote .content::after { border: 2px solid var(--border); border-radius: 0 100% 0 0; width: 60px; height: 60px; bottom: -60px; border-bottom: 0; border-left: 0; z-index: 3; } blockquote cite { padding: 15px 0 0 12px; margin: 0 0 0 150px; z-index: 1; } blockquote.pull { background-color: unset; border-radius: 0; margin: 4rem auto; padding: 3rem; box-shadow: var(--shadow-down), var(--shadow-up); } blockquote.pull cite { margin: 0; } /************************************************** MODALS DIALOGUE **************************************************/ dialog::backdrop { backdrop-filter: blur(5px); background-color: var(--overlay-medium); } dialog[open] { z-index:999; --padding: 0; top: 5vh; width: min(500px, 95vw); border-radius: 1rem; height: fit-content; overflow: hidden; max-height: 90vh; padding: var(--padding); background-color: var(--base-50); color: var(--contrast); border: 1px solid var(--base-200); box-shadow: var(--shadow); } dialog > .wrap, dialog > form { max-height: 100%; overflow: hidden auto; margin: 0 0 0 1.5rem; padding-right: 1.2rem; width: calc(100% - 1.5rem); } dialog label { font-weight: normal; } dialog h2, dialog h3 { margin: 0 0 .5rem 0; font-size: var(--large); } dialog:has(.m-actions){ padding-bottom: var(--height); } .m-actions { --w: 1.15em; --justify: flex-end; --wrap: nowrap; --gap: 0; position: absolute; bottom: 0; left: 0; right: 0; width: 100%; z-index: var(--z-6); background-color: var(--action-100); box-shadow: var(--shadow-up); } .m-actions button { width: 100%; height: 3rem; border-radius: 0; color: var(--action-contrast); background-color: var(--action-50); border: 2px solid var(--action-50); } .m-actions button:hover, .m-actions button:focus { background-color: var(--base); color: var(--contrast); } .m-actions button:first-of-type { border-bottom-left-radius: 1rem; } .m-actions button:last-of-type { border-bottom-right-radius: 1rem; } dialog ul { list-style: none; } dialog .search-container { padding-top: 1rem; width: 100%; gap: .5rem; } /**************** GALLERY ****************/ dialog[open].gallery { width: calc(100vw - var(--padding) * 2); height: 99vh; background: var(--overlay-heavy); } .gallery .content { position: relative; max-width: 100%; max-height: 100%; padding: 2rem; } .gallery .favourite button.favourite { top: unset; bottom: 1rem; right: 1rem; } .gallery .image { max-width: 100%; max-height: calc(100vh - 4rem); object-fit: contain; } .gallery .cancel { position: absolute; top: 1rem; right: 1rem; background: none; border: none; color: white; cursor: pointer; padding: .5rem; z-index: 10; transition: color .3s ease; } .gallery .cancel:hover { color: var(--action-0); } .gallery .nav { position: absolute; top: 50%; height: 50%; z-index: 5; transform: translateY(-50%); border: none; color: var(--contrast); cursor: pointer; padding: 1rem; transition: color .3s ease; } .gallery .nav:hover { background-color: var(--overlay-heavy); } .gallery .nav:hover { color: var(--action-0); } .gallery .prev { left: 1rem; } .gallery .next { right: 1rem; } .gallery .counter { position: absolute; top: 1rem; left: 1rem; color: white; font-size: .875rem; } .gallery .content details { position:absolute; bottom: 1rem; left: 2rem; width: calc(100% - 4rem); background-color: var(--overlay-light); padding: 0; } .gallery .content details:hover, .gallery .content details[open] { background-color: var(--overlay-heavy); backdrop-filter: blur(5px); } .gallery .content details[open] summary { background-color: transparent; } /************************************************** TABLES **************************************************/ table { white-space: nowrap; width: 100%; display: block; margin: 0 0 2rem; border-radius: 4px; height: var(--maxHeight); overflow: auto; position: relative; } thead,tfoot { position: sticky; z-index: 10; background-color: var(--base); text-transform: uppercase; padding: .5rem 0; line-height: 2; font-weight: normal; } tr:nth-of-type(even){ background-color: var(--base-200); } tfoot th { vertical-align: middle; } tfoot th:first-of-type { text-align: right; } tbody { } thead tr, tfoot tr { background-color: var(--overlay-heavy); box-shadow: var(--shadow); } thead tr { border-bottom: 1px solid var(--contrast-200); } tfoot tr { border-top: 1px solid var(--contrast-200); } thead { top: 0; } tfoot { bottom: 0; } thead th { width: max-content; } th p { margin: 0!important; } td { width: max-content; padding: .5rem 1rem; } td .toggle input[type=checkbox] { margin: 0; } td .field { margin: .25rem 0; } td[data-id="actions"] label { margin: 0; padding: 0; } td .description { display: none; } td input[type=text] { width: fit-content; max-width: 40vw; padding: .25em!important; font-size: var(--small)!important; } tbody tr { border: 2px solid transparent; } tbody tr:focus-within { background-color: var(--base-100); border-color: var(--action-50) } [data-stuck] { background-color: var(--overlay-medium); position: sticky; left: -1rem; z-index: 15; box-shadow: var(--subtleRight); } tbody [data-stuck] { z-index: 5; } thead [data-stuck], tfoot [data-stuck] { background: var(--base); } /************************************************** TOOLTIP **************************************************/ [role=tooltip], .hide-tooltip.hide-tooltip.hide-tooltip + [role="tooltip"] { visibility: hidden; position: absolute; bottom: 2rem; left: 1rem; width: max-content; height:fit-content; max-width: 50vw; padding: .5rem; border-radius: var(--innerRadius); box-shadow: var(--shadow); background: var(--action-0); color: var(--action-contrast); } body.menu_item [role=tooltip] { left: auto; right: 100%; top: -200%; z-index: var(--z-4); } [role=tooltip] p { margin: 0; } [role=tooltip] p + p { margin-top: .5rem; } /*.field:has([aria-describedby]:hover) [role=tooltip],*/ .field:has([aria-describedby]:focus) [role=tooltip], [aria-describedby]:hover ~ .has-tooltip [role="tooltip"], [aria-describedby]:focus ~ .has-tooltip[role="tooltip"] { visibility: visible; display: block; } .has-tooltip { display: inline-flex; justify-content: flex-end; position: absolute; top: 0; left: 0; --w: 1.5rem } .tt-toggle { cursor: pointer; display: flex; border-radius: 50%; background-color: transparent; } .tt-toggle:hover, .tt-toggle:focus { background-color: var(--action-0); color: var(--action-contrast); } .tt-toggle:hover + [role=tooltip], .tt-toggle:focus + [role=tooltip] { visibility: visible; } /************************************************************ SELECTOR ************************************************************/ dialog[open]#jvb-selector { height: 70vh; top: 15vh; display: flex; } #jvb-selector > .wrap { flex: 1; } /****************************************************************** LOADING ******************************************************************/ dialog.loading { opacity: 0; transition: opacity var(--transition-base); } dialog.loading[open] { opacity: 1; transition: opacity var(--transition-base); width: 100vw; height: 100vh; display: flex; max-width: 100%; max-height: 100%; border-radius: 0; border: none; background-color: transparent; box-shadow: none; --w: 3em; justify-content: center; align-items: center; } dialog.loading[open]@starting-style { opacity: 0; } dialog.loading[open] > .col { height: fit-content; width: min(400px, 60vw); border-radius: var(--outerRadius); background-color: var(--overlay-medium); padding: 2rem; box-shadow: var(--shadow); position: relative; } dialog.loading[open] .spinner { position: absolute; top: 1rem; width: 5rem; height: 5rem; border-width: 0; border-top-width: 4px; animation: spin 1s var(--function) infinite; } .loading[open] .icon { background-color: var(--action-0); } dialog.loading[open] .icon { animation: dance 2s ease-in-out infinite; transition: color .3s ease; } dialog.loading[open] h3 { color: var(--contrast); margin: 2rem 1rem auto !important; font-size: var(--large); width: -moz-fit-content; width: fit-content; /*-webkit-text-stroke: 1px var(--contrast);*/ /*--g: conic-gradient(var(--action-0) 0 0) no-repeat text;*/ /*animation: letterOutline 1s linear infinite alternate, letterInside 2s linear infinite;*/ /*background: var(--g) 0, var(--g) 1ch, var(--g) 2ch, var(--g) 3ch, var(--g) 4ch, var(--g) 5ch, var(--g) 6ch;*/ } dialog.loading[open] p { margin: .5rem auto; } dialog.loading[open]::after { animation: shimmer 3s ease-in-out infinite; background: linear-gradient(90deg, var(--shimmer)); content: ""; inset: 0; position: absolute; z-index: -1; } .spinner { width: 12px; height: 12px; border: 2px solid transparent; border-top: 2px solid var(--action-50); border-radius: 50%; animation: spin 1s var(--function) infinite; } @keyframes spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } @keyframes shimmer { 0% { left: -50%; } 50% { left: 150%; } 100% { left: -50%; } } @keyframes dance { 0%, 100% { transform: rotate(-5deg) scale(1); } 50% { transform: rotate(5deg) scale(1.1); } } @keyframes letterOutline { 0% { background-size: 1ch 0; } 100% { background-size: 1ch 100%; } } @keyframes letterInside { 0%, 50% { background-position-y: 100%,0; } 50.01%, 100% { background-position-y: 0, 100%; } } /****************************** TABS ******************************/ .tab-content[hidden] { display: block!important; transform: scaleY(0); height: 0; overflow: hidden; } .tab-content[hidden]:focus-within { transform: scaleY(1); height:auto; } nav.tabs h2 { margin: 0!important; line-height: 1; font-size: var(--medium); display: flex; color: var(--contrast); white-space: nowrap; gap: 1rem; } nav.tabs .active h2 { color: var(--action-contrast); } nav.tabs button { padding: .75rem 1.5rem; border-radius: 0; position: relative; border: 2px solid var(--action-0); } nav.tabs > button:first-of-type { border-top-left-radius: var(--innerRadius); } nav.tabs > button:last-of-type { border-top-right-radius: var(--innerRadius); } .tabs > button:hover, .tabs > button:focus { background-color: var(--base-200); } .tabs > button::after { content: ''; position: absolute; bottom: -2px; left: 0; width: 0; height: 3px; background-color: var(--action-50); transition: width .3s; } .tabs > button:hover::after, .tabs > button.active::after { width: 100%; } .tabs > button.active::after { background-color: var(--action-200); } .tabs > button.active { background-color: var(--action-0); color: var(--action-contrast); } .tabs > button.active:hover, .tabs > button.active:focus { background-color: var(--action-100); } .tab-content h2 { display: none; } /***************************************************************************** MENU *****************************************************************************/ .toggle-details { gap: 2px; } body.menu_item #top { z-index: var(--z-4); position: relative; } section .toggle-details { position: absolute; right: 0; top: 5rem; } [data-toggle=all] { position: fixed; bottom: calc(var(--offHeight) + var(--height) + .5rem); right: 0; z-index: var(--z-4); background-color: var(--action-0); color: var(--action-contrast); } [data-toggle] { z-index: var(--z-1); } body:has(#queue[hidden]) [data-toggle=all] { left: 1rem; } dialog:not([open]).col, dialog:not([open]).row { display: none; } @media (min-width:768px) { section .toggle-details { right: -10%; } } /******************************************** TYPE TEXT ********************************************/ /* Cursor, for typing messages */ .typeText::after { content: '|'; display: inline-block; margin-left: 0; animation: blink .75s step-end infinite; } @keyframes blink { from, to { opacity: 1; } 50% { opacity: 0; } } /************************************************** POPUPS: - toast container - cart - queue **************************************************/ aside { position: fixed; top: var(--doubleHeight); bottom: var(--offHeight); width: min(500px, calc(100vw - 2rem)); background-color: var(--base); z-index: var(--z-5); box-shadow: var(--shadow); padding-bottom: var(--height); overflow: visible; } .qtoggle /*.toggle-cart,*/ /*.create-item */ { z-index: var(--z-6); position: fixed; bottom: var(--offHeight); width: var(--height); height: var(--height); background-color: var(--overlay-medium); color: var(--contrast); transition: width var(--transition-base), background-color var(--transition-base), color var(--transition-base), left var(--transition-base); box-shadow: var(--shadow); } /*.toggle-cart:hover,*/ .qtoggle:hover, /*.create-item:hover,*/ /*.toggle-cart:focus,*/ .qtoggle:focus /*.create-item:focus */ { background-color: rgba(var(--action-rgb),var(--rgb-heavy)); color: var(--action-contrast); } /*.toggle-cart:disabled,*/ .qtoggle:disabled, /*.create-item:disabled,*/ /*.toggle-cart:disabled:hover,*/ .qtoggle:disabled:hover, /*.create-item:disabled:hover,*/ /*.toggle-cart:disabled:focus,*/ .qtoggle:disabled:focus /*.create-item:disabled:focus */ { opacity: .5; background-color: var(--overlay-light); color: var(--contrast); } /****************** CART ******************/ /*.create-item,*/ .toggle-cart { right: 0; border-radius: 4px 4px 4px var(--outerRadius); } body:has(#cart.expanded) .toggle-cart .icon { display: none; } aside#cart { padding-bottom: 6rem; } #cart form { max-height: 100%; overflow: hidden auto; } #cart nav.tabs { z-index: var(--z-6); top: 0; } #cart table { height: auto; } #cart th { padding: 0 1.5rem; } #cart table th:first-of-type { width: 100%; } #cart nav.tabs { position: sticky; box-shadow: var(--shadow); } #cart button[data-tab] { flex: 1; border-radius: 0; } #cart form > *:not(.tabs) { max-width: 90%; margin: 0 auto; } #cart form .empty p { margin: .5rem 0!important; } #cart .cart-total.cart-total { --gap: 0 1rem; padding-right: 1rem; position: absolute; bottom: var(--height); width: 100%; max-width: 100%; background-color: var(--overlay-heavy); z-index: var(--z-6); box-shadow: var(--shadow-up); } .cart-total p { --gap: 2rem; max-width: 100%; margin: 0; } .cart-total p span { width: 6rem; display: inline-block; text-align: right; } .cart-total p + p { font-weight: bold; } .cart-items .total { font-weight: bold; } #cart .restored { background-color: rgba(var(--action-rgb), var(--rgb-light)); border-radius: var(--outerRadius); padding: 1rem; } .restored h3 { font-size: var(--medium); margin: 0; } .restored p { margin: 0; } .restored .row { --gap: 0; --wrap:nowrap; --w: 1em; } /****************** TOAST ******************/ .toasts { position: fixed; top: 4rem; right: -350px; z-index: 1000; width: 350px; } .toast { background-color: var(--overlay-heavy); border-left: 4px solid var(--action-0); padding: 1rem; box-shadow: var(--shadow); left: 0; position: relative; opacity: 0; transition: left .3s, opacity .3s; } .toast.success { border-left-color: var(--success); } .toast.error { border-left-color: var(--error); } .toast.info { border-left-color: var(--warning); } .toast.show { left: calc(-350px - 1rem); opacity: 1; } .toast.hiding { left: 0; opacity: 0; } .toast-content p { margin: 0; } .close-toast { background: none; border: none; font-size: 1.25rem; cursor: pointer; opacity: .5; transition: opacity .2s; color: inherit; } .close-toast:hover { opacity: 1; } /****************** QUEUE ******************/ .qtoggle { left: 0; border-radius: 4px 4px var(--outerRadius) 4px; } .qtoggle.expanded { left: var(--height); width: min(calc(500px - var(--height)), calc(100vw - 2rem - var(--height))); } .qtoggle.saving .icon { background-color: var(--action-0); animation: spin .87s var(--function) infinite; } #queue .status-actions { position: absolute; bottom: 0; left: 0; right: 0; z-index: var(--z-2); } #queue .status-actions .popup { position: absolute; z-index: -1; width: max-content; max-width: 300px; background-color: var(--action-50); color: var(--action-contrast); border-radius: var(--innerRadius); padding: .25em .75em; top: 1rem; left: -100vw; transition: left var(--transition-base); } aside#queue .popup::before{ content: ''; width: 10px; height: 10px; transform: rotate(-45deg); background-color: var(--action-50); z-index: -1; left: -5px; position: absolute; top: calc(50% - 5px); } .expanded#queue .status-actions .popup.showing { left: calc(100% + 1em); } #queue .status-actions .popup.showing { left: calc(200vw + var(--offHeight)); max-width: 75vw; } /** BADGES **/ .refresh .countdown, #queue .item .status, .filter .count, .qtoggle .count, .qtoggle .indicator { z-index: var(--z-3); --offset: 0; position: absolute; top: var(--offset); background-color: var(--overlay-light); } .expanded + .qtoggle .indicator, .expanded + .qtoggle .count { --offset: .25rem; } /* Status indicator */ .qtoggle .indicator { right: var(--offset); width: .75rem; height: .75rem; border-radius: 50%; } aside#queue.synced + .qtoggle .indicator { background-color: var(--success); } aside#queue.pending + .qtoggle .indicator { background-color: var(--warning); animation: pulse 2s infinite; } aside#queue.pending:not(.expanded) + .qtoggle .icon { background-color: var(--error); animation: spin 1s var(--function) infinite; } /* Status count badge */ .qtoggle .count { --align: center; --justify: center; left: var(--offset); min-width: 1.25rem; height: 1.25rem; padding: 0 4px; color: var(--contrast); border-radius: var(--innerRadius); font-size: var(--extra-small); } #queue:has(.empty-queue) + .qtoggle .count { display: none; } aside#queue .header { padding: 15px; border-bottom: 1px solid var(--base-200); flex-shrink: 0; } .qitems { flex: 1; overflow: hidden auto; padding: .5rem 2rem; --gap: .5rem; } aside#queue h3 { margin: 0 0 12px 0; font-size: 16px; color: var(--contrast); } #queue .filters .filter { background-color: transparent; white-space: nowrap; font-size: var(--small); } #queue .filters .filter.active { background: var(--base-200); border-color: transparent; } #queue .filter:hover, #queue .filter:focus { background-color: var(--action-0); color: var(--action-contrast); } /* Filter count badge */ .filter .count { --offset: -8px; right: var(--offset); background: var(--base-200); color: var(--contrast-200); border-radius: 10px; min-width: 18px; height: 18px; font-size: 10px; } .filter .count:empty { display: none; } /* Empty state */ .empty-queue { height: 100px; color: var(--contrast-200); font-size: var(--small); font-style: italic; } .refresh .countdown:not(.counting), aside#queue:has(.empty-queue) .refresh .count { display: none; } /* Queue items */ #queue .item { padding: 15px; background: var(--base-100); border-radius: var(--innerRadius); transition: all .2s ease; box-shadow: var(--shadow-none); } #queue .item:hover { box-shadow: var(--shadow); } #queue .item .header { position: relative; } #queue .item .type { font-size: var(--small); } #queue .item .status { --w: 1em; --gap: 0; --justify:center; --align: center; --offset: -1.2rem; aspect-ratio: 1; right: var(--offset); border-radius: 50%; color: var(--contrast-200); background-color: var(--base-50); border: 1px solid var(--base-200); width: 1.25em; height: 1.25em; } #queue .item .status.pending { background: var(--base-100); color: var(--contrast-200); } #queue .item .status.processing { background: var(--base-200); color: var(--contrast-100); animation: pulse-color 2s infinite; } #queue .item .status.completed { background: var(--base-50); color: var(--base-200); } #queue .item .status.completed:hover { color: var(--contrast-200); } #queue .item .status.failed { background: var(--base); color: var(--error); } #queue .item button { font-size: 16px; padding: 0; line-height: 1; opacity: .5; transition: opacity .2s; } #queue .item button:hover { opacity: 1; } /* Item details */ #queue .item .info { margin-top: 8px; font-size: var(--small); } #queue .item .info .time { --gap: 7px; font-size: 10px; } /* Item actions */ #queue .item .actions { margin-top: 12px; --gap: 8px; } #queue .item .actions button { padding: 6px 12px; font-size: 12px; background: var(--base-200); border: none; border-radius: 4px; cursor: pointer; transition: all .2s; color: var(--contrast); } #queue .item .actions .retry { background-color: var(--secondary-200); color: var(--secondary-contrast); } #queue .item .actions button:hover { opacity: .9; } /* Queue actions footer */ .queue-actions { padding: 15px; border-top: 1px solid var(--base-200); flex-shrink: 0; } .queue-actions button { padding: 8px 12px; font-size: var(--small); transition: all .2s; } /* Refresh area */ .status-actions > .refresh { position: relative; font-size: var(--small); } .refresh .countdown { --justify:center; --align: center; --offset: 0; right: var(--offset); margin: 0 3px; border-radius: 50%; border: 1px solid var(--base-200); } .refreshNow { width: var(--height); height: var(--height); } .refreshNow:hover { background: var(--base-200); color: var(--contrast-200); } .icon.refresh { --w: 18px; } /* Refreshing animation */ #queue.pending.expanded .refreshNow .icon { animation: spin 1.5s var(--function) infinite; } /************************************************** DELAY **************************************************/ /* Initialize counter on the parent container */ .item-grid, #queue { counter-reset: delay-counter; } /* Increment counter for each item */ .item { counter-increment: delay-counter; } /* Use counter value to calculate delay */ .item .progress .fill::after { --delay: calc(counter(delay-counter) * .1s); } /************************************************** PROGRESS **************************************************/ .progress .bar { height: 6px; display: block; border-radius: 6px; overflow: hidden; background: var(--base-200); position: relative; } .progress .fill { height: 100%; background: var(--action-0); border-radius: 6px; width: 0; transition: width .3s ease; } .progress .details { margin-top: 5px; font-size: var(--small); color: var(--contrast); text-align: center; padding: .25rem 0; } .progress .details:empty { display: none; } .queued .fill::after, .pending .fill::after, .processing .fill::after, .uploading .fill::after { --delay: 0s; content: ''; position: absolute; top: 0; left: -50%; width: 30%; height: 100%; background: linear-gradient( 90deg, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, .225) 50%, rgba(255, 255, 255, 0) 100% ); animation: shimmer 2.5s infinite linear var(--delay); } /************************************************** ACTIONS **************************************************/ .additional-actions.additional-actions { padding: 0; background-color: transparent; } .additional-actions .buttons { position: fixed; bottom: var(--offHeight); right: 1rem; margin: 0; --gap: 1rem; z-index: var(--z-6); width: fit-content; } .additional-actions .buttons button { height: var(--height); width: var(--height); background-color: var(--overlay-medium); color: var(--contrast); transition: width var(--transition-base), background-color var(--transition-base), color var(--transition-base), left var(--transition-base); box-shadow: var(--shadow); } .additional-actions .buttons button:hover { background-color: var(--action-0); color: var(--action-contrast); } .additional-actions .buttons button:disabled, .additional-actions .buttons button:disabled:hover, .additional-actions .buttons button:disabled:focus { opacity: .5; background-color: var(--overlay-light); color: var(--contrast); } .additional-actions .buttons button:last-of-type { border-radius: 4px 4px 4px var(--outerRadius); } aside { position: fixed; top: var(--doubleHeight); bottom: var(--offHeight); width: min(500px, calc(100vw - 2rem)); background-color: var(--base); z-index: var(--z-5); box-shadow: var(--shadow); --wrap: nowrap; --align: stretch; overflow: hidden auto; padding: 1rem 1rem var(--height); } aside.left { left: var(--offScreen); transition: left var(--transition-base); border-radius: 0 var(--outerRadius) var(--outerRadius) 0; } aside.left.expanded { left: 0; } aside.right { right: var(--offScreen); border-radius: var(--outerRadius) 0 0 var(--outerRadius); transition: right var(--transition-base); } aside.right.expanded { right: 0; } aside.right.expanded button.close { position: sticky; bottom: calc(var(--height) * -1); left: 0; border-bottom-left-radius: var(--outerRadius); width: var(--height); height: var(--height); } .additional-actions .buttons:has(.expanded) button:not(.expanded) { display: none; } .additional-actions .buttons:has(.expanded){ right: 0; } .additional-actions .buttons .expanded { width: calc(min(500px, calc(100vw - 2rem))); background-color: var(--base); } .additional-actions .buttons button:hover, .additional-actions .buttons .expanded:hover { background-color: var(--action-0); color: var(--action-contrast); } [type=submit] { width: 100%; height: var(--height); background-color: var(--action-0); color: var(--action-contrast); box-shadow: var(--shadow-none); font-weight: bold; } [type=submit]:hover { box-shadow: var(--shadow); border: 2px solid var(--action-0); color: var(--action-0); background-color: var(--action-contrast); } aside nav.tabs { position: sticky; bottom: unset; top: 0; left: 0; right: 0; } .jvb-referral nav.tabs button { width: 50%; } aside .tab-content.active { padding: 1rem; min-height: 100%; } aside header h3 { font-size: var(--medium); margin: 1rem 0; text-align: center; } aside header p { margin: .25rem 0; text-align: center; } aside h4 { font-size: var(--small); margin: 1rem 0 0 0; } code { width: 100%; margin: .5rem; padding: .5rem; user-select: all; text-align: center; border-radius: 4px; background-color: var(--base-200); border: 1px solid var(--contrast-200); } .restore-form { background-color: rgba(var(--action-rgb), var(--rgb-light)); border: 1px solid var(--action-200); padding: .5rem; border-radius: var(--outerRadius); margin: 1rem 2rem; } .restore-form h3 { text-align: center; margin: 1rem 0 0; font-size: var(--medium); } .restore-form p { margin: .5rem 0; } .fstatus { z-index: var(--z-5); background-color: rgba(var(--base-rgb),var(--rgb-heavy)); border-radius: 4px; padding: 0 .5rem; position: fixed; bottom: var(--offHeight); right: calc(var(--offHeight) + 1rem); --w: 1em; box-shadow:var(--shadow); } .fstatus .spinner { display: none; } .fstatus.loading .spinner { display: inline-block; } .fstatus p { margin: 0; padding: .25rem; } /************************************************** ASIDE EXCEPTIONS **************************************************/ aside.pre-header, aside.sub-header { left: 0; right: 0; width: 100vw; display: flex; justify-content: space-between; height: 2rem; bottom: unset; padding: 0 .5rem; font-size: var(--small); flex-wrap: nowrap; align-items: center; max-width: 100vw; } @media (min-width: 768px) { aside.pre-header, aside.sub-header { padding: 0 2rem; font-size: var(--medium); } } .pre-header p, .pre-header p + p, .sub-header p, .sub-header p + p { margin: 0; } .pre-header { top: 0; z-index: 1001; } .wp-site-blocks > .pre-header ~ header { top: 2.05rem; } .sub-header { top: var(--height); box-shadow: var(--shadow); } .pre-header ~ .sub-header { top: calc(var(--height) + 1.5rem); } /************************************************** RESPONSES **************************************************/ /*dialog.create-response {*/ /* width: min(650px, calc(95vw - (var(--padding) * 2)));*/ /*}*/ /*dialog.create-response .original {*/ /* height: 20vh;*/ /* overflow-y: scroll;*/ /* padding: 1rem;*/ /* background-color: var(--base-100);*/ /* border-radius: var(--innerRadius);*/ /*}*/ /*dialog.create-response .editor-container .ql-container {*/ /* height: 30vh;*/ /*}*/ /*.responses summary {*/ /* text-transform: none;*/ /* display: block;*/ /*}*/ /*.news .header {*/ /* margin-right: 2rem;*/ /*}*/ /*.news > summary::after,*/ /*.responses summary::after {*/ /* display: block;*/ /* position: absolute;*/ /* top: 0;*/ /* right: 0;*/ /* mask-image: var(--chevron);*/ /*}*/ /*.responses[open] > summary {*/ /* background-color: inherit;*/ /*}*/ /*.responses[open] {*/ /* background-color: var(--base-200);*/ /*}*/ /*.responses {*/ /* margin: 1rem 0;*/ /*}*/ /*.response {*/ /* background-color: inherit;*/ /*}*/ /*.response[open] {*/ /* background-color: var(--base-100);*/ /*}*/ /*.response[open] > summary {*/ /* background-color: inherit;*/ /*}*/ /*.news[open] > summary::after,*/ /*.responses[open] > summary::after,*/ /*.response[open] > summary::after {*/ /* mask-image: var(--chevron);*/ /*}*/ /*.response > summary::after {*/ /* display: none;*/ /*}*/ /*.response:has(.response) > summary::after {*/ /* display: block;*/ /*}*/ /*.response:nth-of-type(even) {*/ /* background-color: var(--base-50);*/ /*}*/ /*button.reply {*/ /* margin-left: auto;*/ /*}*/ /************************************************** ANIMATIONS **************************************************/ /** Used for Loading **/ @keyframes shimmer { 0% { left: -50%; } 50% { left: 150%; } 100% { left: -50%; } } @keyframes pulse-color { 0% { box-shadow: 0 0 0 0 rgba(var(--action-rgb), .4); } 30% { box-shadow: 0 0 0 .75rem rgba(var(--action-rgb), 0); } 100% { box-shadow: 0 0 0 0 rgba(var(--action-rgb), 0); } } /** fadeIn & fadeOut, for adding/removing items **/ @keyframes fadeIn { from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: translateY(0); } } @keyframes fadeOut { from { opacity: 1; transform: translateY(0); } to { opacity: 0; transform: translateY(20px); } } /****************************************** OVERFLOW DETECTION Include this in items to detect: // Scroll detection animation animation: detect-scroll linear; animation-timeline: scroll(self inline); ******************************************/ /* Scroll detection keyframe */ @keyframes detect-scroll { from, to { --can-scroll: 1; } } /****************************************************************** DIRECTORY ******************************************************************/ /*.directory-list {*/ /* max-width: var(--alignWide);*/ /*}*/ /*.directory-list ul {*/ /* gap: 0;*/ /*}*/ /* .directory-list li.title {*/ /* margin-left: -1rem;*/ /* }*/ /*.is-directory section {*/ /* max-width: var(--full);*/ /* width: calc(var(--full) - 1rem);*/ /* padding: 0 .5rem;*/ /*}*/ /* .is-directory .list-none ul,*/ /* .is-directory .list-none {*/ /* margin: 0;*/ /* padding: 0;*/ /* list-style: none;*/ /* }*/ /* .is-directory .list-none ul {*/ /* width: 80%;*/ /* }*/ /* .is-directory .list-none > li + li {*/ /* border-top: 1px solid var(--base-100);*/ /* padding-top: 2rem;*/ /* margin-top: 2rem;*/ /* }*/ /* .is-directory .list-none ul li {*/ /* background-color: var(--base-50);*/ /* padding: .5rem .25rem;*/ /* }*/ /* .is-directory .list-none ul li:nth-of-type(even){*/ /* background-color: var(--base-100);*/ /* }*/ /* .is-directory .list-none h3 {*/ /* margin: .5rem auto!important;*/ /* position: sticky;*/ /* text-align: center;*/ /* top: 4rem;*/ /* font-size: 20vw;*/ /* color: var(--base-200);*/ /* background-color: var(--base);*/ /* width: 20%;*/ /* }*/ /* @media (min-width:768px){*/ /* .is-directory section {*/ /* max-width: var(--alignWide);*/ /* }*/ /* .is-directory .list-none,*/ /* .is-directory .list-none ul {*/ /* padding-left: 2rem;*/ /* }*/ /* .is-directory .list-none h3 {*/ /* text-align: left;*/ /* top: 8rem;*/ /* position: sticky;*/ /* background-color: transparent;*/ /* }*/ /* }*/ /*.directories > .directory {*/ /* border-radius: 1rem;*/ /* background-color: var(--base-100);*/ /* text-align: center;*/ /* padding: .5rem;*/ /*}*/ /*.directories > .directory a .icon {*/ /* --w: 3rem;*/ /* margin: 0;*/ /*}*/ /*.directory h2 {*/ /* font-size: var(--large);*/ /* margin: .5rem 0!important;*/ /* width: 100%;*/ /*}*/ /*@media (min-width: 768px) {*/ /* .directories {*/ /* display: grid;*/ /* grid-template-columns: repeat(3, 1fr);*/ /* gap: 1rem;*/ /* }*/ /*}*/ /*nav.directory li {*/ /* list-style: none;*/ /* display: inline-flex;*/ /*}*/ /*.grouped-directory {*/ /* margin: 0;*/ /* padding: 0;*/ /* list-style: none;*/ /*}*/ /* .grouped-directory .grouped-directory {*/ /* padding-left: 2rem;*/ /* }*/ /*.grouped-directory li:not(:has(details)) {*/ /* padding: .625rem;*/ /*}*/ /*.grouped-directory summary a {*/ /* order: 1;*/ /* text-transform: none;*/ /*}*/ /*.grouped-directory summary::after {*/ /* order: 2;*/ /*}*/ /*.grouped-directory li details[open] > summary,*/ /*.grouped-directory li details[open] {*/ /* background-color: var(--base-100);*/ /*}*/ /*.grouped-directory details[open] details[open] > summary,*/ /*.grouped-directory details[open] details[open] {*/ /* background-color: var(--overlay-light);*/ /*}*/ /*.is-directory h1 {*/ /* margin-top: 3rem!important;*/ /*}*/ /****************************************************************** NORTHEH ******************************************************************/ .menu-items .menu-item { display: grid; grid-template-columns: repeat(3, 1fr); gap: 0 1rem; } .menu-items .menu-item:not(.variable) label { display: none; } .menu-items .menu-item .field { margin: 0; --wrap: nowrap; } .menu-items .menu-item .has-tooltip { position: absolute; right: -2.5rem; } .menu-items .menu-item + .menu-item { border-top: 1px solid var(--base-200); margin-top: 2rem; padding-top: 1rem; } .menu-items .menu-item .header { grid-column: 1/-1; } .menu-items .menu-item .description { grid-column: 1/3; } .menu-items .menu-item .info { grid-column: 3/3; } .menu-items .menu-item h3 { font-size: var(--medium); font-weight: normal; margin: 0 0 .5rem 0!important; } .menu-items .menu-item .info { --gap: 1rem; } .price > span { vertical-align: super; font-size: 12px; } body.menu_item section > h2 { display: inline-block; max-width: var(--maxWidth); width: max-content; background-color: var(--base-50); color: var(--action-0); position: relative; z-index: 5; padding: 0 1rem; margin: var(--mt) auto var(--mb) auto; } .menu-section { position: relative; } .menu-section hr { position: absolute; width: 100%; left: -5%; top: 3.5rem; border: none; background-color: var(--action-100); height: 2px; } details.menu-item summary.row { flex-direction: column; align-items: flex-start; } details.menu-item summary .row { width: 100%; } .menu_item h1:first-of-type { margin-top: 10vh!important; } @media (min-width: 768px) { .menu-section hr { width: 120%; left: -10%; top: 4.25rem; } .menu_item section { max-width: var(--maxWidth); } /*details.menu-item summary.row {*/ /* flex-direction: var(--dir);*/ /* align-items: var(--justify);*/ /*}*/ } /** TODO: For Legacy Triangles Loader .loading-wrapper { display: flex; flex-direction: column; align-items: center; padding: 2rem 1rem 1rem; } .loader-wrap { height: 75px; width: 75px; } .new-term-toggle:disabled + .loader, .loading .loader { width: 50px; aspect-ratio: 1.154; display: grid; color: var(--action-0); background: linear-gradient(to bottom left ,#0000 calc(50% - 1px),currentColor 0 calc(50% + 1px),#0000 0) right/50% 100%, linear-gradient(to bottom right,#0000 calc(50% - 1px),currentColor 0 calc(50% + 1px),#0000 0) left /50% 100%, linear-gradient(currentColor 0 0) bottom/100% 2px; background-repeat: no-repeat; transform-origin: 50% 66%; animation: l5 4s infinite linear; } .new-term-toggle:disabled + .loader::before, .new-term-toggle:disabled + .loader::after, .loading .loader::before, .loading .loader::after { content: ""; grid-area: 1/1; background: inherit; transform-origin: inherit; animation: inherit; } .new-term-toggle:disabled + .loader::after, .loading .loader::after { animation-duration: 2s; } @keyframes l5{ 100% {transform:rotate(1turn)} } */ /* DONE TO HERE */ /*dialog .search-wrapper {*/ /* padding: .5rem;*/ /*}*/ /*.favourite-terms ul {*/ /* gap: .25rem 1rem;*/ /* padding: 0;*/ /*}*/ /* .favourite-terms label::before,*/ /* .favourite-terms label::after {*/ /* display: none;*/ /* }*/ /* .favourite-terms label {*/ /* padding: .25rem .5rem!important;*/ /* border: 1px solid var(--base-200);*/ /* color: var(--contrast-200);*/ /* border-radius: var(--innerRadius);*/ /* }*/ /* .favourite-terms :checked + label,*/ /* .favourite-terms label:hover {*/ /* border-color: var(--action-0);*/ /* color: var(--action-0);*/ /* }*/ /*.items-container {*/ /* padding: 0;*/ /*}*/ /* .items-container li .children {*/ /* width: 100%;*/ /* padding-left: 1rem;*/ /* }*/ /*.path button+button::before {*/ /* content: ' > ';*/ /* display: inline-block;*/ /* margin: 0 .5rem;*/ /*}*/ /*!** Forms **!*/ /*!*.field.time_open,*!*/ /*!*.field.time_closes,*!*/ /*!*.field.date_start,*!*/ /*!*.field.time_start,*!*/ /*!*.field.time_end {*!*/ /*!* margin-bottom: 0;*!*/ /*!*}*!*/ /*!*.field.time_open,*!*/ /*!*.field.time_closes,*!*/ /*!*.field.time_start,*!*/ /*!*.field.time_end {*!*/ /*!* width: 49%;*!*/ /*!* display: inline-block;*!*/ /*!* margin-top: 1rem;*!*/ /*!*}*!*/ /*[data-h] {*/ /* border: 0;*/ /* clip: rect(1px, 1px, 1px, 1px);*/ /* clip-path: inset(50%);*/ /* height: 1px;*/ /* margin: -1px;*/ /* overflow: hidden;*/ /* padding: 0;*/ /* position: absolute !important;*/ /* width: 1px;*/ /* word-wrap: normal !important;*/ /*}*/ /*.checkbox-options {*/ /* --gap: .5rem 2rem;*/ /*}*/ /*.checkbox-options label {*/ /* flex: unset!important;*/ /*}*/ /*.radio-options {*/ /* --gap: .125rem .5rem;*/ /*}*/ /*.radio-options input:not(.ch) + label::before {*/ /* display: none!important;*/ /*}*/ /*.radio-options input:not(.ch) + label {*/ /* flex: unset!important;*/ /* padding: .25rem!important;*/ /* border-radius: 4px;*/ /* border: 1px solid var(--base-100);*/ /* color: var(--contrast-200);*/ /* transition: var(--transition-color)!important;*/ /* font-weight: normal;*/ /* !*width: 40%;*!*/ /* text-align: center;*/ /*}*/ /*.radio-options input:not(.ch) + label:hover,*/ /*.radio-options input:not(.ch):checked + label {*/ /* border-color: var(--action-0);*/ /* color: var(--action-0);*/ /* transition: var(--transition-color);*/ /*}*/ /*!* Style for disabled state *!*/ /*.date-range {*/ /* padding: 2rem;*/ /* border: none;*/ /* border-radius: var(--innerRadius);*/ /* background: var(--base);*/ /* box-shadow: var(--shadow);*/ /*}*/ /*.date-range::backdrop {*/ /* backdrop-filter: blur(5px);*/ /* background: var(--overlay-medium);*/ /*}*/ /*.custom-range,*/ /*.month-picker {*/ /* --gap: 1rem;*/ /* margin-bottom: 1rem;*/ /*}*/ /*.custom-range input,*/ /*.month-picker select {*/ /* padding: .5rem;*/ /* border: 1px solid var(--base-100);*/ /* border-radius: var(--innerRadius);*/ /* background: var(--base-200);*/ /* color: var(--contrast);*/ /* font: inherit;*/ /*}*/ /*.custom-range input:focus,*/ /*.month-picker select:focus {*/ /* outline: none;*/ /* border-color: var(--action-0);*/ /*}*/ /*!** Shop Page **!*/ /*.shop header {*/ /* max-width: var(--full);*/ /*}*/ /*.shop header img {*/ /* width: 100%;*/ /* height: auto;*/ /*}*/ /*.shop header h1 {*/ /* margin-bottom: .5em;*/ /*}*/ /*.ratings {*/ /* margin: 0;*/ /*}*/ /*!** Bio Sections **!*/ /*.bio-info {*/ /* max-width: var(--alignWide);*/ /* padding: .25em;*/ /* border-radius: var(--outerRadius);*/ /* font-size: var(--medium);*/ /* line-height: 1.5;*/ /*}*/ /*.bio-info section {*/ /* margin: 4rem 0;*/ /*}*/ /*.shop .column,*/ /*.bio-info .column {*/ /* --justify: center;*/ /*}*/ /*.bio-info[open] {*/ /* background-color: var(--base-100);*/ /*}*/ /*.bio-info summary {*/ /* padding: .25rem;*/ /* position: relative;*/ /* border-radius: var(--innerRadius);*/ /*}*/ /*.bio-info[open] summary {*/ /* background-color: var(--base-50);*/ /* margin-bottom: 1rem;*/ /*}*/ /*.bio-info > div:not(.columns) {*/ /* margin: 4rem 0;*/ /* padding: 0 1rem;*/ /*}*/ /*.bio-info h2 {*/ /* margin: 0!important;*/ /* font-size: var(--medium);*/ /* font-family: var(--body);*/ /* font-weight: var(--bWeight);*/ /*}*/ /*.bio-info h3 {*/ /* margin: 1em 0!important;*/ /* font-size: var(--medium);*/ /*}*/ /*.bio-info figure {*/ /* margin: 0;*/ /* padding: 0;*/ /*}*/ /*.bio-info img {*/ /* width: 100%;*/ /* height: auto;*/ /* aspect-ratio: 5/4;*/ /* object-fit: cover;*/ /*}*/ /* #contact {*/ /* max-width: var(--alignWide);*/ /* }*/ /* #contact h2,*/ /* section.inline h2 {*/ /* font-size: var(--medium);*/ /* font-weight: var(--bWeight);*/ /* margin: 0 0 .5em 0!important;*/ /* white-space: nowrap;*/ /* }*/ /*ul.contact {*/ /* list-style: none;*/ /* display: inline-flex;*/ /* justify-content: flex-start;*/ /* flex-wrap: wrap;*/ /* align-items: center;*/ /* gap: 1rem;*/ /* margin: 0;*/ /* padding: 0;*/ /*}*/ /* ul.contact + ul.contact {*/ /* margin-left: 1rem;*/ /* }*/ /* ul.contact a{*/ /* color: var(--contrast);*/ /* }*/ /* ul.contact a:hover {*/ /* color: var(--action-0);*/ /* }*/ /*.term-list {*/ /* display: inline-flex;*/ /* flex-wrap: wrap;*/ /* list-style: none;*/ /* text-transform: lowercase;*/ /* margin: 0;*/ /* padding: 0;*/ /* gap: 0 .5em;*/ /*}*/ /*p.loading {*/ /* text-align: center;*/ /* margin: 3rem 0;*/ /*}*/ /* /*.term-list li {*/ /* padding: 2px 6px;*/ /*}*/ /*ul.simple-list {*/ /* margin: 0;*/ /* padding: 0;*/ /* list-style: none;*/ /*}*/ /*ul.reviews li + li{*/ /* margin-top: 2rem;*/ /*}*/ /*!*!* Status notification *!*/ /*!*.status-notification {*!*/ /*!* position: fixed;*!*/ /*!* bottom: 20px;*!*/ /*!* left: 80px; !* Position to the right of the panel *!*!*/ /*!* width: 300px;*!*/ /*!* max-width: calc(100vw - 100px);*!*/ /*!* border-radius: 8px;*!*/ /*!* padding: 15px;*!*/ /*!* background: #323232;*!*/ /*!* color: white;*!*/ /*!* transform: translateY(20px);*!*/ /*!* opacity: 0;*!*/ /*!* transition: transform .3s, opacity .3s;*!*/ /*!* z-index: 10000;*!*/ /*!* box-shadow: 0 4px 20px rgba(0, 0, 0, .2);*!*/ /*!* pointer-events: none;*!*/ /*!*}*!*/ /*!*.status-notification.active {*!*/ /*!* transform: translateY(0);*!*/ /*!* opacity: 1;*!*/ /*!* pointer-events: auto;*!*/ /*!*}*!*/ /*!*.status-notification .title {*!*/ /*!* font-weight: 600;*!*/ /*!* margin-bottom: 5px;*!*/ /*!* font-size: 15px;*!*/ /*!*}*!*/ /*!*.status-notification .message {*!*/ /*!* margin-bottom: 10px;*!*/ /*!* font-size: 14px;*!*/ /*!*}*!*/ /*!*.status-notification .actions {*!*/ /*!* display: flex;*!*/ /*!* justify-content: flex-end;*!*/ /*!*}*!*/ /*!*.status-notification .actions button {*!*/ /*!* padding: 6px 12px;*!*/ /*!* background: rgba(255, 255, 255, .2);*!*/ /*!* border: none;*!*/ /*!* border-radius: 4px;*!*/ /*!* color: white;*!*/ /*!* cursor: pointer;*!*/ /*!* font-size: 13px;*!*/ /*!* transition: background .2s;*!*/ /*!*}*!*/ /*!*.status-notification .actions button:hover {*!*/ /*!* background: rgba(255, 255, 255, .3);*!*/ /*!*}*!*/ /*!* Progress containers in notifications *!*/ /*.progress-container {*/ /* margin-top: 15px;*/ /* background: rgba(255, 255, 255, .1);*/ /* border-radius: 4px;*/ /* padding: 10px;*/ /* transition: all .3s;*/ /*}*/ /*.progress-container.complete {*/ /* opacity: .5;*/ /*}*/ /*!* Collapsed state - just show the toggle button *!*/ /*!***/ /*Response stuff*/ /* *!*/ /*.columns {*/ /* --wrap: nowrap;*/ /*}*/ /* .columns.stack-small {*/ /* --wrap: wrap;*/ /* }*/ /* @media (min-width: 768px){*/ /* .columns.stack-small {*/ /* --wrap: nowrap;*/ /* }*/ /* }*/ /*.column {*/ /* width: 100%;*/ /* padding: 1rem 0;*/ /*}*/ /*.width-300 {*/ /* width: 300px!important;*/ /* height: auto!important;*/ /*}*/ .stack-small.stack-small { --wrap: wrap; } @media (min-width: 768px){ .stack-small.stack-small { --wrap: nowrap; } } .font-small { font-size: var(--small); } .font-medium { font-size: var(--medium); } .font-large { font-size: var(--large); } /*!***/ /*Circular Loader*/ /* *!*/ /*!*.new-term-toggle:disabled + .loader,*!*/ /*!*.loading .loader {*!*/ /*!* width: 50px;*!*/ /*!* aspect-ratio: 1;*!*/ /*!* display: grid;*!*/ /*!* border: 4px solid #0000;*!*/ /*!* border-radius: 50%;*!*/ /*!* border-right-color: var(--action-0);*!*/ /*!* animation: l15 1s infinite linear;*!*/ /*!*}*!*/ /*!*.new-term-toggle:disabled + .loader::before,*!*/ /*!*.new-term-toggle:disabled + .loader::after,*!*/ /*!*.loading .loader::before,*!*/ /*!*.loading .loader::after {*!*/ /*!* content: "";*!*/ /*!* grid-area: 1/1;*!*/ /*!* margin: 2px;*!*/ /*!* border: inherit;*!*/ /*!* border-radius: 50%;*!*/ /*!* animation: l15 2s infinite;*!*/ /*!*}*!*/ /*!*.new-term-toggle:disabled + .loader::after,*!*/ /*!*.loading .loader::after {*!*/ /*!* margin: 8px;*!*/ /*!* animation-duration: 3s;*!*/ /*!*}*!*/ /*!*@keyframes l15{*!*/ /*!* 100%{transform: rotate(1turn)}*!*/ /*!*}*!*/ /*!* High contrast mode support *!*/ /*@media (forced-colors: active) {*/ /* .feed-item {*/ /* border: 1px solid CanvasText;*/ /* }*/ /* button,*/ /* [role="button"] {*/ /* border: 1px solid ButtonText;*/ /* }*/ /* button.favourite.favourited {*/ /* background-color: Highlight;*/ /* color: HighlightText;*/ /* }*/ /*}*/ /*!** TODO: Verify **!*/ input[type=time], input[type=datetime-local], input[type=date] { padding: .5rem; border: 1px solid var(--contrast-200); border-radius: 4px; font-size: 14px; min-width: 180px; background: var(--base); color: var(--contrast); cursor: pointer; transition: border-color .2s ease; } .field-input-wrapper input[type=time]:focus, .field-input-wrapper input[type=datetime-local]:focus, .field-input-wrapper input[type=date]:focus, .time-wrapper input[type=time]:focus, .datetime-wrapper input[type=datetime-local]:focus, .date-wrapper input[type=date]:focus { border-color: var(--action-0); box-shadow: 0 0 0 2px rgba(var(--action-rgb), .1); } /* Icon styling in form fields */ .field-input-wrapper .icon, .time-wrapper .icon, .datetime-wrapper .icon, .date-wrapper .icon { width: 18px; height: 18px; background-color: var(--contrast); opacity: .7; } /*!* Required field asterisk *!*/ /*.time-wrapper input[required],*/ /*.datetime-wrapper input[required],*/ /*.date-wrapper input[required] {*/ /* border-left: 3px solid #dc3232;*/ /*}*/ /*!* Invalid field styling *!*/ /*.time-wrapper input:invalid,*/ /*.datetime-wrapper input:invalid,*/ /*.date-wrapper input:invalid {*/ /* border-color: #dc3232;*/ /* background-color: #fef7f7;*/ /*}*/ /*!* Frontend Display *!*/ /*.time-field-display,*/ /*.datetime-field-display,*/ /*.date-field-display {*/ /* display: inline-flex;*/ /* align-items: center;*/ /* gap: .5rem;*/ /* padding: .25rem 0;*/ /*}*/ /*.time-field-display svg,*/ /*.datetime-field-display svg,*/ /*.date-field-display svg {*/ /* width: 16px;*/ /* height: 16px;*/ /* color: #0073aa;*/ /* flex-shrink: 0;*/ /*}*/ /*.time-value,*/ /*.datetime-value,*/ /*.date-value {*/ /* font-weight: 500;*/ /* color: #333;*/ /*}*/ /*!* Set and Checkbox Field Display *!*/ /*.set-field-display {*/ /* --wrap: wrap;*/ /*}*/ /*.set-label,*/ /*.checkbox-label {*/ /* font-weight: 600;*/ /* color: #555;*/ /*}*/ /*.set-item {*/ /* background: #f0f0f1;*/ /* padding: .25rem .5rem;*/ /* border-radius: 3px;*/ /* font-size: .9em;*/ /* border: 1px solid #ddd;*/ /*}*/ /*!* Radio and Select Field Display *!*/ /*.radio-field-display,*/ /*.select-field-display {*/ /* display: inline-flex;*/ /* align-items: center;*/ /* gap: .5rem;*/ /*}*/ /*.radio-label,*/ /*.select-label {*/ /* font-weight: 600;*/ /* color: #555;*/ /*}*/ /*.radio-value,*/ /*.select-value {*/ /* background: #f8f9fa;*/ /* padding: .25rem .5rem;*/ /* border-radius: 3px;*/ /* border: 1px solid #dee2e6;*/ /*}*/ /*!* True/False Field Display *!*/ /*.true-false-display {*/ /* display: inline-flex;*/ /* align-items: center;*/ /* gap: .5rem;*/ /*}*/ /*.true-false-label {*/ /* font-weight: 600;*/ /* color: #555;*/ /*}*/ /*.true-value {*/ /* color: var(--success);*/ /* font-weight: 600;*/ /*}*/ /*.false-value {*/ /* color: var(--error);*/ /* font-weight: 600;*/ /*}*/ /*!* Group Field Styling *!*/ /*.group-field {*/ /* border: 1px solid #e0e0e0;*/ /* border-radius: 6px;*/ /* padding: 1rem;*/ /* margin: 1rem 0;*/ /* background: #fafafa;*/ /*}*/ /*.group-label {*/ /* font-size: 1.1em;*/ /* font-weight: 600;*/ /* color: #333;*/ /* margin: 0 0 1rem 0;*/ /* padding-bottom: .5rem;*/ /* border-bottom: 1px solid #e0e0e0;*/ /*}*/ /*.group-content {*/ /* --gap: .75rem;*/ /*}*/ /*.group-item {*/ /* padding: .5rem 0;*/ /* border-bottom: 1px solid #f0f0f0;*/ /*}*/ /*.group-item:last-child {*/ /* border-bottom: none;*/ /*}*/ /*.subfield-label {*/ /* font-weight: 600;*/ /* color: #555;*/ /* margin-right: .5rem;*/ /*}*/ /*!* Responsive Design *!*/ /*@media (max-width: 768px) {*/ /* .time-wrapper input[type="time"],*/ /* .datetime-wrapper input[type="datetime-local"],*/ /* .date-wrapper input[type="date"] {*/ /* min-width: 150px;*/ /* font-size: 16px; !* Prevents zoom on iOS *!*/ /* }*/ /* .set-field-display,*/ /* .checkbox-field-display {*/ /* flex-direction: column;*/ /* align-items: flex-start;*/ /* }*/ /* .group-content {*/ /* gap: .5rem;*/ /* }*/ /*}*/ legend { padding: 0 1rem; } .abs { position: absolute; } .top { top: 0; right: 0; left: 0; } .top-right { top: 0; right: 0; } .top-left { top: 0; left: 0; } .btm { bottom: 0; left: 0; right: 0; } .btm-right { bottom: 0; right: 0; } .btm-left { bottom: 0; left: 0; } .edges { top: 0; right: 0; left: 0; bottom: 0; } /*********************** REFERRAL SYSTEM ***********************/ .referral-widget { background: #fff; border: 1px solid #ddd; border-radius: 8px; padding: 24px; margin: 20px 0; box-shadow: 0 2px 4px rgba(0,0,0,0.05); } .referral-header { text-align: center; margin-bottom: 20px; } .referral-header h3 { margin: 0 0 8px 0; color: #2271b1; } .referral-header p { margin: 0; color: #666; font-size: 14px; } /* Share Widget Styles */ .referral-link-section { margin-bottom: 20px; } .referral-link-section label { display: block; font-weight: 600; margin-bottom: 8px; color: #333; } .link-copy-wrapper { display: flex; gap: 8px; } .link-copy-wrapper input { flex: 1; padding: 10px 12px; border: 1px solid #ddd; border-radius: 4px; font-family: monospace; font-size: 13px; background: #f9f9f9; } .copy-link-btn { padding: 10px 20px; background: #2271b1; color: #fff; border: none; border-radius: 4px; cursor: pointer; font-weight: 600; white-space: nowrap; transition: background 0.2s; } .copy-link-btn:hover { background: #135e96; } .referral-code-display { margin: 8px 0 0 0; font-size: 13px; color: #666; } .referral-stats { display: grid; grid-template-columns: repeat(auto-fit, minmax(100px, 1fr)); gap: 16px; margin-bottom: 20px; padding: 16px; background: #f8f9fa; border-radius: 6px; } .stat-item { text-align: center; } .stat-value { display: block; font-size: 24px; font-weight: bold; color: #2271b1; } .stat-label { display: block; font-size: 12px; color: #666; margin-top: 4px; } .share-buttons { display: flex; gap: 10px; justify-content: center; flex-wrap: wrap; } .share-btn { display: inline-flex; align-items: center; gap: 6px; padding: 10px 16px; border: 1px solid #ddd; border-radius: 4px; text-decoration: none; color: #333; font-size: 14px; font-weight: 500; transition: all 0.2s; } .share-btn:hover { background: #f5f5f5; border-color: #999; } /* Validation Widget Styles */ .form-group { margin-bottom: 16px; } .form-group label { display: block; font-weight: 600; margin-bottom: 8px; color: #333; } .input-button-wrapper { display: flex; gap: 8px; } .input-button-wrapper input { flex: 1; padding: 12px 16px; border: 2px solid #ddd; border-radius: 4px; font-size: 16px; font-family: monospace; font-weight: 600; text-transform: uppercase; transition: border-color 0.2s; } .input-button-wrapper input:focus { outline: none; border-color: #2271b1; } .validate-btn { padding: 12px 24px; background: #2271b1; color: #fff; border: none; border-radius: 4px; cursor: pointer; font-weight: 600; white-space: nowrap; transition: background 0.2s; } .validate-btn:hover { background: #135e96; } .validate-btn:disabled { background: #ccc; cursor: not-allowed; } .helper-text { margin: 8px 0 0 0; font-size: 13px; color: #666; } .helper-text a { color: #2271b1; text-decoration: none; } .helper-text a:hover { text-decoration: underline; } .message { padding: 12px 16px; border-radius: 4px; margin-top: 16px; font-size: 14px; } .message.success { background: #d4edda; color: #155724; border: 1px solid #c3e6cb; } .message.error { background: #f8d7da; color: #721c24; border: 1px solid #f5c6cb; } /* Success State Styles */ .referral-success-state { text-align: center; } .success-icon { width: 80px; height: 80px; margin: 0 auto 20px; background: #28a745; border-radius: 50%; display: flex; align-items: center; justify-content: center; color: #fff; font-size: 40px; } .success-content h3 { color: #28a745; margin: 0 0 12px 0; } .reward-highlight { background: #e7f5ff; padding: 20px; border-radius: 6px; margin: 20px 0; border-left: 4px solid #2271b1; } .reward-highlight strong { color: #2271b1; font-size: 18px; } .cta-button { display: inline-block; padding: 14px 32px; background: #2271b1; color: #fff; text-decoration: none; border-radius: 4px; font-weight: 600; margin-top: 16px; transition: background 0.2s; } .cta-button:hover { background: #135e96; } .referred-by { margin-top: 16px; padding-top: 16px; border-top: 1px solid #ddd; font-size: 13px; color: #666; } .loading-spinner { display: inline-block; width: 16px; height: 16px; border: 2px solid #f3f3f3; border-top: 2px solid #2271b1; border-radius: 50%; animation: spin 1s linear infinite; margin-left: 8px; vertical-align: middle; } @keyframes spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } /* Responsive */ @media (max-width: 600px) { .input-button-wrapper { flex-direction: column; } .validate-btn { width: 100%; } .link-copy-wrapper { flex-direction: column; } .copy-link-btn { width: 100%; } } .callalt.callalt, .callout.callout { padding: 2rem; margin: 2rem 0; max-width: none; } @media (min-width: 768px){ .callout.callout { padding: 2rem 20vw; } } .callout.callout { background-color: var(--action-0); color: var(--action-contrast); } .callalt.callalt { background-color: var(--secondary-0); color: var(--secondary-contrast); } .callalt h1, .callalt h2, .callalt h3, .callalt h4, .callalt h5, .callalt h6, .callout h1, .callout h2, .callout h3, .callout h4, .callout h5, .callout h6 { font-family: var(--body); font-weight: var(--bBold); margin: 1rem 0 0; width: 100%; } .callout a { background-color: var(--action-contrast); padding: 0 .125rem; border-radius: 4px; } .attn { animation: pulse-color 5s infinite; animation-delay: 1s; } @media (min-width:768px ){ .media-text { --wrap: nowrap; } } .media-text > div, .media-text figure { width: 100%; margin: 0; } .media-text > div { max-width: var(--maxWidth); margin: 0 auto; padding: 2rem; }