/*noinspection CssUnknownTarget*/
/* @import url('https://fonts.googleapis.com/css2?family=Comfortaa&display=swap'); */
/* When it comes down to Google Fonts, you should import, Google does some fancy google stuff there depending on the browser used,
 the warning is a bug in Intellij https://youtrack.jetbrains.com/issue/WEB-20015 */
/* latin-ext */
@font-face {
    font-family: 'Comfortaa';
    font-style: normal;
    font-weight: 400;
    font-display: swap;
    src: url(https://fonts.gstatic.com/s/comfortaa/v29/1Pt_g8LJRfWJmhDAuUsSQamb1W0lwk4S4WjMDr0fIA9c.woff2) format('woff2');
    unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
    font-family: 'Comfortaa';
    font-style: normal;
    font-weight: 400;
    font-display: swap;
    src: url(https://fonts.gstatic.com/s/comfortaa/v29/1Pt_g8LJRfWJmhDAuUsSQamb1W0lwk4S4WjMDrMfIA.woff2) format('woff2');
    unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* latin-ext */
@font-face {
    font-family: 'Comfortaa';
    font-style: normal;
    font-weight: 700;
    font-display: swap;
    src: url(https://fonts.gstatic.com/s/comfortaa/v29/1Pt_g8LJRfWJmhDAuUsSQamb1W0lwk4S4Y_LDr0fIA9c.woff2) format('woff2');
    unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
    font-family: 'Comfortaa';
    font-style: normal;
    font-weight: 700;
    font-display: swap;
    src: url(https://fonts.gstatic.com/s/comfortaa/v29/1Pt_g8LJRfWJmhDAuUsSQamb1W0lwk4S4Y_LDrMfIA.woff2) format('woff2');
    unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}


/* CSS RESETS - like to keep some control */
* {
    /* should also include block-end, etc ? */
    margin: 0;
    padding: 0;
}

a, a:any-link, a:active {
    text-decoration: none;
    color: inherit;
}

img { /* width: 100%; */
    height: auto;
    max-width: 100%;
    object-fit: scale-down;
    /* general responsive */
}

ul {
    list-style: none;
}

p {
    text-align: justify;
}

img[alt] {
    font-size: 0.5rem;
}

/* BASE STYLING ALL PAGES */
:root {
    --font: Comfortaa, Calibri, sans-serif;
    /* basic colors + gray eq. */
    --blue: rgb(0, 74, 155);
    --blueg: rgb(100, 100, 100);
    --bluegl: rgba(100, 100, 100, 0.6);
    --orange: rgb(234, 92, 19);
    --orangel: rgba(234, 92, 19, 0.6);
    --orangeg: rgb(80, 80, 80);
    --green: rgb(128, 189, 38);
    --greeng: rgb(40, 40, 40);
    --apple: rgb(118, 196, 180);
    --applel: rgba(118, 196, 180, 0.6);
    --appleg: rgb(20, 20, 20);
    /* js vars */
    --invalid: var(--orangel);
    --required: var(--applel);
    /* svg icons */
    --toggle: #646464;
    --toggle-o: transparent;
    --cart: #646464;
    --carts: #646464;
    --euro: #646464;
    --euros: #646464;
    --one: #646464;
    --ones: #646464;
    --two: #646464;
    --twos: #646464;
    --three: #646464;
    --threes: #646464;
    --four: #646464;
    --fours: #646464;
    --five: #646464;
    --fives: #646464;
    --socials: var(--blueg);
    --filter: var(--blueg);
    --filters: var(--orangeg);
    --ham: var(--blueg);
    --hams: var(--orangeg);
}

/* general base grid - added room to manoeuvre */
body {
    font-family: var(--font);
    min-height: 100vh;
    display: grid;
    grid-template:
                "hd hd hd hd" 5fr
                "nv nv nv nv" auto
                ". mn si ." minmax(20vh, auto)
                ". mo mo ." auto
                "fo fo fo fo" 2fr
                / 0 7fr 3fr 0;
    transition: all 0.5s ease-in;
}

/* BASIC ELEMENTS - recurrent */
h2, .contact main h3, .faq main h3 {
    font-size: clamp(1.2rem, 1.1065rem + 0.4156vw, 1.6rem);
    padding: 0.5em 0;
    font-weight: bolder;
    text-shadow: 1px 1px var(--greeng);
}

h3, caption {
    font-size: 1.17em;
    padding: 0.5em 0;
    text-shadow: 1px 1px var(--orangeg);
}

figure {
    position: relative;
    /* max-width: max-content; /* ff no: fit-content on height, nor figure; shame */
}

figure img {
    width: 100%;
    object-fit: contain;
}

figcaption {
    position: absolute;
    /* overflow: hidden; think I got this one covered too */
    bottom: 0.2rem;
    width: calc(100% - 2em);
    max-height: calc(100% - 1.5em);
    padding: 0.5rem 1em;
    background-color: rgba(0, 0, 0, 0.4);
    font-style: italic;
    font-size: clamp(0.7rem, 0.6299rem + 0.3117vw, 1rem);
    color: var(--apple);
}

figure.split-center {
    margin: 1em auto;
}

.breadcrumb {
    margin-bottom: 0.5rem;
}

/* js additionals */
p noscript {
    color: var(--blue);
    font-weight: bold;
    text-shadow: 1px 1px var(--orange);
    display: block;
}
span.jsTextNode {
    display: block;
    box-sizing: border-box;
    padding: 0.1rem 0.5rem;
    animation: slide-in-blurred-top 900ms cubic-bezier(0.230, 1.000, 0.320, 1.000) alternate forwards;
}
 /* .fadeIn {
    animation: blurred-in 900ms cubic-bezier(0.230, 1.000, 0.320, 1.000) alternate forwards;
}
.fadeOut {
   animation: blurred-in 900ms cubic-bezier(0.230, 1.000, 0.320, 1.000) alternate backwards;
}
@keyframes blurred-in {
    0% {
        filter: blur(40px);
        opacity: 0;
    }
    100% {
        filter: blur(0);
        opacity: 1;
    }
}
*/

/* header */
header {
    grid-area: hd;
    display: flex;
    flex-flow: column nowrap;
    align-items: center;
    background: lightcyan url(../media/banner/mainh-1440.jpg) no-repeat center/cover;
    /* font: bold 5vw/0.9em var(--font); /* refer here to handbook, css tricks, etc. This is really awesome if all would follow suite -> Even better use clamp()! */
    font-variant: all-small-caps;
    font-weight: bold;
    /* color: rgba(234, 92, 19, 0.87); */
    color: rgba(80, 80, 80, 0.8);
    text-shadow: 0 0 2px rgba(234, 92, 19, 0.87), 0 0 5px rgba(118, 196, 180, 0.60);
}

header p {
    font-size: clamp(1rem, 0.0769rem + 4.1026vw, 5rem);
    line-height: clamp(1.5rem, 0.4615rem + 4.6154vw, 5rem);
}

header p:first-child {
    align-self: flex-start;
    margin: 2vh;
}

header h1 {
    margin: auto 0 4vh 0;
    font-size: clamp(1rem, 0.9231rem + 9.2308vw, 12rem); /* so cóól */
    line-height: clamp(1rem, 0.9231rem + 5.2308vw, 12rem);
    text-align: center; /* FF */
}

header p:last-child {
    text-align: center;
    font-size: clamp(1.5rem, 0.4615rem + 4.6154vw, 6rem);
    font-variant: normal;
    margin: 0 0 8vh 0;
}

/* navigation */
body > nav {
    grid-area: nv;
    z-index: 10;
    position: sticky;
    top: 0;
}

nav ul {
    display: flex;
    flex-flow: row wrap;
    gap: 0.1rem;
    justify-content: space-evenly; /* fall-back */
    min-height: 3em;
    padding: 0.1rem;
    background-color: rgba(0, 0, 0, 0.8);
}

nav li {
    flex: 1 1 auto;
    border: 1px solid var(--orange);
    position: relative;
    cursor: pointer;
}

nav li ul {
    /* Evolutions: 3rd gen = use the original anim position to keep it out of sight and drop it like it's hot ;-) = less of a css hassle, resetting and setting the props */
    position: absolute;
    width: 100%;
    flex-flow: column;
    opacity: 0;
    transform-origin: 50% 0;
    transform: translateY(-1000px) scaleY(2.5) scaleX(0.2);
    filter: blur(40px);
}

nav li:hover {
    flex: 1.1 1 auto;
    background-color: rgba(0, 0, 0, 1);
    border: 1px solid var(--blue);
}

nav li:hover ul, nav li:active ul, nav li:focus ul {
    /* 3rd gen: another try-out blurred slide in */
    animation: slide-in-blurred-top 900ms cubic-bezier(0.230, 1.000, 0.320, 1.000) alternate forwards;
}

@keyframes slide-in-blurred-top {
    0% {
        transform: translateY(-1000px) scaleY(2.5) scaleX(0.2);
        transform-origin: 50% 0;
        filter: blur(40px);
        opacity: 0;
    }
    100% {
        transform: translateY(0) scaleY(1) scaleX(1);
        transform-origin: 50% 50%;
        filter: blur(0);
        opacity: 1;
    }
}

nav li a, nav li a:any-link {
    display: block;
    text-align: center;
    font-variant: all-small-caps;
    color: var(--orange);
    padding: 1em 0.1rem;
    overflow-wrap: break-word;
    user-select: none;
}

nav li a:hover {
    color: var(--apple);
}

nav li a.active {
    color: var(--green);
}

/* no hamburger */
nav label {
    position: absolute;
    max-height: 0;
    left: -999em;
    top: -999em;
    cursor: pointer;
}

body nav svg {
    width: 2rem;
    height: 2rem;
    margin: 0.3rem 0.5rem;
    opacity: 0.7;
}

nav label:hover svg use {
    --filter: var(--apple);
    --filters: var(--green);
    --ham: var(--apple);
    --hams: var(--green);
    --initialStroke: 1;
    --transitionDuration: 10;
    stroke-opacity: 1;
    stroke-width: 0.2rem;
    stroke-dasharray: var(--initialStroke);
    stroke-dashoffset: var(--initialStroke);
    transition: stroke-dashoffset var(--transitionDuration) ease;
    animation: dash 5s linear;
}

/* overview/product detail - aside - sub navigation */
aside nav ul {
    min-height: 1rem;
    background-color: transparent;
}

aside nav li, aside nav li:hover {
    flex-basis: 100%;
    border: none;
    background-color: transparent;
}

aside nav li a, aside nav li a:any-link {
    font-weight: bold;
    padding: 0.2rem 0;
}

/* main */
main {
    grid-area: mn;
    padding: 0.3125rem 0.5rem 0;
}

/* aside */
aside {
    grid-area: si;
    padding: 0.3125rem 0.5rem;
    display: flex;
    flex-flow: column;
    row-gap: 1rem;
    place-content: space-evenly;
}

aside h2 {
    /* font-size: 1.2em; redundant */
}

aside a:hover, aside a:active {
    color: var(--apple);
    font-style: oblique;
}

/* footer */
footer {
    grid-area: fo;
    display: flex;
    flex-flow: row wrap;
    column-gap: 1.5em;
    place-content: center;
    background-color: rgba(80, 80, 80, 0.8);
}

footer > * {
    flex: 0 1 auto;
}

footer > :first-child {
    flex: 1 1 100%;
    text-align: center;
    font: bold 5vw/0.9em var(--font); /* refer here to handbook, css tricks, etc. This is really awesome if all would follow suite */
    font-variant: all-small-caps;
    color: rgba(0, 0, 0, 1.0);
    margin-top: 0.3rem;
}

footer svg {
    fill: var(--socials);
    width: 4vw;
}

/* BASIC FORM ELEMENTS - admitted its too much in the end - rendering/use not yet optimal - but sparkling shows */
form *:focus:not([type="radio"]):not([type="checkbox"]), form *:active:not([type="radio"]):not([type="checkbox"]) {
    outline: none;
    box-shadow: 0.1rem 0.2rem 0.8rem 0.4rem var(--blueg);
}

form fieldset {
    border: double var(--blueg);
    border-width: 0.3rem 0;
    padding: 0.5rem 0;
}

form fieldset > *:invalid, form fieldset > *[required]:invalid:not(:placeholder-shown), form fieldset > *[required]:invalid:focus {
    background-color: var(--invalid);
}
form fieldset > *[required] {
    background-color: var(--required);
}
form legend {
    font-size: 1.17em;
    font-weight: bold;
}

form label {
    background-color: var(--blueg);
    color: var(--appleg);
    border-radius: 0.2rem;
    display: inline-block;
    line-height: 2rem;
    padding: 0 0.5rem;
    box-sizing: border-box;
    user-select: none;
    cursor: pointer;
}

form textarea {
    min-height: 5rem;
    resize: vertical;
}

form select, form input[type="color"] {
    appearance: none; /* Form controls are not made to look like native controls of the host operating system. */
    cursor: pointer;
    line-height: 2rem;
    font-size: 1.2rem;
    padding-left: 0.3rem;
    border: none;
    border-radius: 0.5rem;
    color: var(--green);
    background-color: rgba(0, 0, 0, 0.1);
    transition: all 0.3s ease-in-out;
}

form input[type="color"] {
    /* a sketchy one, FF has a bug going miles back, chrome based even take on a list to choose from */
    padding: 0.4rem;
    z-index: 9;
}

form select:active, form select:focus {
    border-radius: 0.5rem 0.5rem 0 0;
}

form select option {
    text-align: center;
}

form select > option:hover {
    box-shadow: 0 0 0.7rem 0.5rem var(--green) inset;
}

form select option:last-child {
    border-radius: 0.5rem 0.5rem 0 0;
}

form select option:checked { /* no FF */
    color: var(--apple);
    background-color: var(--bluegl);
}

form input[type="email"] {
    text-transform: lowercase;
}

form input:not([type="color"]) {
    padding: 0.3rem;
}

/* form interactive - as far as plain and simple css allows */
input[type="radio"], input[type="checkbox"] {
    opacity: 0;
    outline: none;
}

form input[type="radio"] + label:before, form input[type="checkbox"] + label:before {
    display: inline-block;
    content: '';
    background: transparent center/cover url("../media/icon/radio.svg#norm");
    vertical-align: middle;
    width: 2em;
    height: 2em;
    box-sizing: border-box;
    padding-right: 0.5rem;
}

form input[type="radio"]:hover + label:before, form input[type="checkbox"]:hover + label:before {
    background-image: url("../media/icon/radio.svg#hov");
}

form input[type="radio"]:checked + label:before, form input[type="checkbox"]:checked + label:before {
    background-image: url("../media/icon/radio.svg#sel");
}

form input[type="submit"], form input[type="reset"], .personalize form label[for="f-a_del-add"], .personalize form input[type="file"], .personalize form input[type="file"] * {
    cursor: pointer;
    background-color: var(--orange);
    padding: 0.5rem;
    border-radius: 2rem;
    border: 0.1rem solid var(--orangeg);
    box-shadow: 0.2rem 0.5rem 0.5rem 0.1rem var(--greeng);
    font-variant: all-small-caps;
    text-align: center;
    font-weight: bolder;
    white-space: normal;
    overflow-wrap: break-word;
}
form input[type="reset"] {
    background-color: var(--blue);
    color: var(--apple);
}


form input[type="submit"]:active, form input[type="submit"]:focus, form input[type="submit"]:hover,
form input[type="reset"]:active, form input[type="reset"]:focus, form input[type="reset"]:hover,
.personalize form label[for="f-a_del-add"]:hover, .personalize form label[for="f-a_del-add"]:focus, .personalize form #f-a_del-add:checked + label,
.personalize form input[type="file"]:active, .personalize form input[type="file"]:focus, .personalize form input[type="file"]:hover {
    color: var(--orangeg);
    border: 0.1rem solid var(--orange);
    box-shadow: 0.2rem 0.3rem 0.4rem 0.2rem var(--blueg);
}
form input[type="reset"]:active, form input[type="reset"]:focus, form input[type="reset"]:hover {
    color: var(--applel);
}

/* general flexbox implementation any .art-w-side */
/* This should be improved!! multiple p would demand an extensive grid and querie solution: If only I had the time. */
.art-w-side {
    display: flex;
    flex-flow: row wrap;
    column-gap: 0.5rem;
}

.art-w-side > * {
    flex: 1 1 0;
}

main article.art-w-side p {
    min-width: 60%;
    flex: 100 0 60%;
}

main article.art-w-side p:last-of-type {
    margin-bottom: 1em;
}

main article.art-w-side figure {
    flex-basis: 265px;
    margin: 0 auto 1em;
    place-self: center;
}

article.art-w-side > :first-child {
    flex-basis: 100%;
}

/* PAGE SPECIFIC */
/* Product detail, any aside - building forward from a general flexbox implementation */
aside article.art-w-side {
    align-items: center;
    margin: 0 auto 1em;
}

aside article.art-w-side figure, aside article.art-w-side a {
    flex-basis: calc(50% - 2em);
    margin: 0 auto 0 0;
}

aside article.art-w-side figure figcaption {
    visibility: hidden;
}

aside article.art-w-side:hover figcaption {
    visibility: visible;
}

aside article.art-w-side ul {
    flex: 1 0 50%;
    font-size: clamp(0.8rem, 0.3846rem + 0.5128vw, 1rem);
    min-width: min(139px, 100%);
}

/* Product detail - main flexible text implementation */
body.product section.art-w-side :first-child {
    width: min(130px, 100%);
    flex: 0 0 min(130px, 100%);
    padding: 0;
}

body.product section.art-w-side :last-child {
    min-width: min(250px, 100%);
    flex: 1 0 calc(100% - 130px - 0.5rem);
}

/* Product detail - transforming blocked content into inline lists of reading text */
aside article.art-w-side ul li, dt, dd {
    display: inline;
}

dt:after {
    content: ": ";
}

aside article.art-w-side ul li:after, dd:after {
    content: ", ";
}

aside article.art-w-side ul li:last-child:after, dd:last-child:after {
    content: "";
}

/* Product detail - main */
body.product main article {
    display: flex;
    flex-flow: column;
    min-height: calc(100% - 1.5em);
    justify-content: space-around;
}

body.product article section {
    flex: 0 0 auto;
    margin-bottom: 0.5rem;
}

body.product main article section:first-of-type {
    box-sizing: border-box;
    padding: 0.5rem 0.5rem 1rem;
    background-color: var(--bluegl);
}

/* Product detail - Image gallery */
body.product main article section:nth-of-type(2) {
    display: grid;
    grid-auto-flow: row;
    grid-template-columns: repeat(auto-fill, minmax(100px, 1fr));
    justify-items: flex-end;
    width: min(800px, 100%);
    margin: 0 auto;
}

body.product main article section:nth-of-type(2) img {
    grid-row-start: 1;
    grid-column: 1 / -1;
    justify-self: center;
}

body.product main article section:nth-of-type(2) label {
    cursor: pointer;
}

body.product main article section:nth-of-type(2) > img {
    max-height: 50vh;
    visibility: hidden;
    opacity: 0;
    transition: opacity 1s linear;
}

body.product main article section:nth-of-type(2) > img[id="f1"] {
    opacity: 1;
    visibility: visible;
}

input#i1:checked ~ img:not(#f1), input#i2:checked ~ img:not(#f2), input#i3:checked ~ img:not(#f3), input#i4:checked ~ img:not(#f4), input#i5:checked ~ img:not(#f5) {
    opacity: 0;
    visibility: visible;
}

input#i1:checked ~ img[id="f1"], input#i2:checked ~ img[id="f2"], input#i3:checked ~ img[id="f3"], input#i4:checked ~ img[id="f4"], input#i5:checked ~ img[id="f5"] {
    opacity: 1;
    visibility: visible;
}

/* Product detail - aside */
body.product aside {
    place-content: space-between;
    font-size: 0.8em;
}

body.product aside h3 {
    font-size: 1.2em;
}

body.product aside > :nth-child(2) {
    color: var(--orange);
    text-align: center;
}

body.product aside > :nth-child(2) a {
    /* remember all your a inherit color */
    display: block;
    margin: 1rem auto;
    font-weight: bolder;
}

body.product aside > :nth-child(2) a:hover {
    text-shadow: 0.5rem -0.3rem 1rem var(--green);
    transform: scale(0.9, 0.8);
}

/* Product detail - aside: the reason why I had to have a (xlink) element in use - needed to try this out - use doesn't even need to be the target */
body.product aside > :nth-child(3) svg {
    box-sizing: border-box;
    width: 100%;
    max-height: 4rem;
    height: 100%;
}

body.product aside > :nth-child(3) svg.five use {
    --five: var(--green);
    --fives: var(--apple);
    --four: var(--green);
    --fours: var(--apple);
    --three: var(--green);
    --threes: var(--apple);
    --two: var(--green);
    --twos: var(--apple);
    --one: var(--green);
    --ones: var(--apple);
}

body.product aside > :nth-child(3) svg.three use {
    --three: var(--green);
    --threes: var(--apple);
    --two: var(--green);
    --twos: var(--apple);
    --one: var(--green);
    --ones: var(--apple);
}

body.product aside > :nth-child(3) svg.two {
    --two: var(--green);
    --twos: var(--apple);
    --one: var(--green);
    --ones: var(--apple);
}

body.product aside > :nth-child(5) blockquote {
    background-color: var(--appleg);
    color: var(--green);
    font: bold 1.2em var(--font);
    font-stretch: extra-expanded;
    padding: max(3vh, 2rem) 1rem;
    text-align: center;
}

body.product aside > :nth-child(5) blockquote p {
    text-align: center;
}

body.product aside > :nth-child(5) blockquote p::before {
    content: open-quote;
}

body.product aside > :nth-child(5) blockquote p::after {
    content: close-quote;
}

body.product aside > :nth-child(5) cite {
    display: block;
    font-size: 0.8em;
    margin: 0.5rem auto;
}

/* Product detail - aside: the last showcase using xlink - YES i know html5 dictates putting it inline */
body.product aside > :nth-child(6) ul {
    font: bold 1.2em var(--font);
}

body.product aside > :nth-child(6) ul li {
    display: flex;
    flex-flow: row wrap;
    align-items: center;
    margin: 0.3rem 0;
}

body.product aside > :nth-child(6) ul li > * {
    flex: 0 1 80%;
    text-align: left;
}

body.product aside > :nth-child(6) ul li:hover {
    --euro: var(--blue);
}

body.product aside > :nth-child(6) li svg {
    flex: 0 1 20%;
}

body.product aside > :nth-child(6) a {
    padding: 0.5rem 0.5rem 1rem calc(100% - 20% - 0.5rem);
}

body.product aside > :nth-child(6) a svg {
    width: 20%;
}

body.product aside > :nth-child(6) a:hover svg use {
    --cart: var(--apple);
    --carts: var(--green);
    --initialStroke: 1;
    --transitionDuration: 10;
    stroke-opacity: 1;
    stroke-dasharray: var(--initialStroke);
    stroke-dashoffset: var(--initialStroke);
    transition: stroke-dashoffset var(--transitionDuration) ease;
    animation: dash 5s linear;
}

@keyframes dash {
    to {
        stroke-dashoffset: 50;
    }
}

/* overview - main */
main section[id^="group"] {
    position: relative;
    display: grid;
    grid-auto-flow: row;
    grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
    gap: 1em;
    padding: 0.5rem;
    margin-bottom: 0.5rem;
    box-shadow: 0.1rem 0.1rem 0.5rem 0.1rem rgba(80, 80, 80, 0.8);
    perspective: 40rem;
    transition: all ease;
}

main section[id^="group"] > :first-child {
    /* grid-column: 1 / span all; doesn't fly everytime */
    grid-column-start: 1;
    grid-column-end: -1;
    text-align: right;
    padding: 0.5rem 5vw 0.5rem 0.5rem;
    box-sizing: border-box;
}

main section[id^="group"] > a {
    position: absolute;
    top: -0.3rem;
    right: 0.5rem;
}

/* Overview - Up arrow */
main section[id^="group"] > a img {
    width: auto;
    height: clamp(2rem, 1.3077rem + 3.0769vw, 5rem);
}

/* Overview - product cards */
main section[id^="group"] > article {
    transition: all 0.7s ease-in-out;
    box-shadow: 0 1.1rem 2rem var(--bluegl);
    margin: 0 auto;
}

main section[id^="group"] article a {
    display: flex;
    flex-flow: column;
    height: 100%;
}

/* those a elements that are just placeholders at the moment, will not have the animation */
main section[id^="group"] article a[href]:hover {
    animation: heartbeat 1.5s ease-in-out 3 both;
}

@keyframes heartbeat {
    from {
        transform: scale(1);
        transform-origin: center center;
        animation-timing-function: ease-out;
    }
    10% {
        transform: scale(0.91);
        animation-timing-function: ease-in;
    }
    17% {
        transform: scale(0.98);
        animation-timing-function: ease-out;
    }
    33% {
        transform: scale(0.87);
        animation-timing-function: ease-in;
    }
    45% {
        transform: scale(1);
        animation-timing-function: ease-out;
    }
}

main section[id^="group"] article a > * {
    flex: auto;
    text-align: center;
    font-size: 0.8em;
}

main section[id^="group"] article a > :not(img) {
    background-color: rgba(100, 100, 100, 0.4);
    margin: auto 0 0;
}

main section[id^="group"] article img {
    margin: 0 auto auto;
    padding: 0 0 0.5em;
}

main section[id^="group"] article h3 {
    font-variant: all-small-caps;
    padding: 1em 0 0.5em;
}

main section[id^="group"] article ul {
    padding: 0 0.2em;
}

main section[id^="group"] article p {
    padding: 1em 0 1.5em;
}

/* Overview: aside - avoiding div use */
body.overview aside {
    place-content: flex-start;
}

/* Unfortunately sticky isn't really fully supported e.g FF & Samsung Internet browser - otherwise a charm */
body.overview aside > *:not(:first-child) {
    position: sticky;
    top: 3rem;
    z-index: 0;
    background-color: white;
    padding: 0.5rem 0 0;
}

body.overview aside nav {
    z-index: -1;
}
body.overview aside article.art-w-side figure, body.overview aside article.art-w-side a {
    flex-basis: calc(40% - 2em);
}


/* Overview - Filter Magic: css radio:checked hack = break a bit your normal html structure */
body.overview input[type="radio"], body.overview input[type="checkbox"], body.product input[type="radio"], body.faq input[type="radio"] {
    display: none; /* display none is to be preferred - else pages can get jumpy */
}

input#top6:checked ~ main section article:not(.t6),
input#stars1:checked ~ main section article:not(.s1), input#stars2:checked ~ main section article:not(.s2), input#stars3:checked ~ main section article:not(.s3),
input#col-l:checked ~ main section article:not(.cl), input#col-m:checked ~ main section article:not(.cm), input#col-d:checked ~ main section article:not(.cd),
input#inch13:checked ~ main section article:not(.i13), input#inch14:checked ~ main section article:not(.i14), input#inch15:checked ~ main section article:not(.i15),
input#inch17:checked ~ main section article:not(.i17) {
    opacity: 0.1;
    transform: translateY(-10px) rotateX(60deg) scale(0, 0);
    max-height: 0;
    font-size: 0;
    animation: change-position-afterwards 0.1ms ease-in-out 0.6s both;
}

/* This was a tremendous work-around to get position toggled at the right time - also fun exploring the possibilities with grid dens en auto-flow */
@keyframes change-position-afterwards {
    0% {
        position: static;
    }
    100% {
        position: fixed;
    }
}

input#view-all:checked ~ main section article[class*="s"] {
    transform: translateY(0) rotateX(0deg) scale(1, 1);
    opacity: 1;
    height: auto;
    position: static;
}

/* and this is a pain! Samsung internet browser's bug keeps cropping up, doesn't accept a slightly more complex flex in fieldset, flex thingy */
body.overview aside fieldset {
    display: flex;
    flex-wrap: wrap;
    flex-flow: column;
    border: none;
    transition: all 0.5s ease-in-out;
}

body.overview aside section:first-of-type fieldset:first-of-type {
    flex-flow: row;
    justify-content: space-between;
}

body.overview aside fieldset > * {
    flex: 1 1 auto;
    padding: 0.5rem;
}

body.overview aside section:first-of-type fieldset:first-of-type label {
    flex: 0 1 auto;
    font-weight: bold;
    font-variant: all-small-caps;
    font-stretch: extra-expanded;
}

body.overview aside label {
    cursor: pointer;
    line-height: 1rem;
}

body.overview aside label:hover {
    font-style: oblique;
    color: var(--apple);
}

body.overview aside legend ~ label {
    background: transparent padding-box no-repeat left 0.2rem center/2rem url("../media/icon/radio.svg#norm");
    padding-left: 2.5rem;
}

body.overview aside legend ~ label:hover {
    background-image: url('../media/icon/radio.svg#hov');
}

input#top6:checked ~ aside section label[for="top6"],
input#stars1:checked ~ aside section fieldset label[for="stars1"], input#stars2:checked ~ aside section fieldset label[for="stars2"], input#stars3:checked ~ aside section fieldset label[for="stars3"],
input#col-l:checked ~ aside section fieldset label[for="col-l"], input#col-m:checked ~ aside section fieldset label[for="col-m"], input#col-d:checked ~ aside section fieldset label[for="col-d"],
input#inch13:checked ~ aside section fieldset label[for="inch13"], input#inch14:checked ~ aside section fieldset label[for="inch14"], input#inch15:checked ~ aside section fieldset label[for="inch15"],
input#inch17:checked ~ aside section fieldset label[for="inch17"] {
    background-image: url('../media/icon/radio.svg#sel');
    color: var(--green);
}

input#top6:checked ~ aside section label[for="top6"],
input#view-all:checked ~ aside section label[for="view-all"] {
    background: none;
}

/* faq, personalize BASE STYLING */
body.personalize, body.faq, body.confirmation {
    grid-template-columns: 1fr minmax(120px, 1024px) 0 1fr;
    grid-template-rows: 3fr auto minmax(30vh, auto) auto 2fr;
}

.personalize main, .faq main {
    grid-area: mn / mo;
    margin: 1rem 0;
}

.personalize form, .faq main article, .blog main section.construction {
    display: grid;
    grid-auto-flow: row;
    grid-template-columns: repeat(8, 1fr);
}

/* faq header */
.faq header {
    background: none;
    color: var(--blue);
    font-weight: bolder;
    position: relative;
    /* overflow: hidden; strange I didn't I worked around this - probably z-index play w nav? */
}

.faq header:before {
    content: ' ';
    display: block;
    position: absolute;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    z-index: -1;
    opacity: 0.6;
    background: lightcyan url(../media/banner/faqh-1440.jpg) no-repeat center/cover;
}

/* Faq - basic sectioning */
.faq main article > p, .personalize main form > p, .confirmation main > article > p, .construction > p:first-of-type  {
    grid-column: 3 / -3;
    text-align: center;
    color: var(--orange);
    text-shadow: 1px 1px var(--bluegl);
    margin-bottom: 1em;
}

.faq main article section {
    grid-column: 1 / -1;
    display: grid;
    grid-auto-flow: row;
    grid-template-columns: repeat(8, 1fr);
    overflow: hidden; /* Sorry second time, but with the animation, horizontal scroll appears in-and-out during when translateX goes off screen */
    position: relative;
}

.faq main article section h3 {
    grid-column: 3 / -1;
    border-radius: 1rem;
    background: var(--orangeg);
    padding: 1em;
    transform: scale(0.9);
    user-select: none;
}

.faq main article section h3 label {
    display: flow-root;
    position: relative;
    cursor: pointer;
    padding-right: 4%;
}

.faq main article section h3 svg {
    --toggle: var(--apple);
    --toggle-o: transparent;
    width: 5%;
    height: 100%;
    position: absolute;
    right: 3%;
    top: 0;
    margin: 0 -4% 0 0;
}

.faq main article #q1:checked ~ section h3 label[for="q1"] svg, .faq main article #q2:checked ~ section h3 label[for="q2"] svg, .faq main article #q3:checked ~ section h3 label[for="q3"] svg, .faq main article #q4:checked ~ section h3 label[for="q4"] svg, .faq main article #q5:checked ~ section h3 label[for="q5"] svg, .faq main article #q6:checked ~ section h3 label[for="q6"] svg {
    --toggle-o: var(--apple);
    --toggle: transparent;
}

.faq main article #q1:checked ~ section h3 label:not([for="q1"]) svg, .faq main article #q2:checked ~ section h3 label:not([for="q2"]) svg, .faq main article #q3:checked ~ section h3 label:not([for="q3"]) svg, .faq main article #q4:checked ~ section h3 label:not([for="q4"]) svg, .faq main article #q5:checked ~ section h3 label:not([for="q5"]) svg, .faq main article #q6:checked ~ section h3 label:not([for="q6"]) svg {
    --toggle: var(--apple);
    --toggle-o: transparent;
}

.faq main article section h3 label:hover svg use {
    --toggle-o: var(--apple);
    --toggle: transparent;
}

.faq main article section:nth-child(2n) h3 {
    /* grid-column: 2 / -2; */
}

.faq main article section > :not(h3) {
    grid-area: unset; /* reset possible interference */
    grid-column: 1 / -1;
    max-height: 0;
    max-width: 0;
    width: 100%;
    opacity: 0;
    padding: 0;
    transform-origin: 150% -5rem;
    transform: translate3d(0, -800px, -300px) scaleX(2) scaleY(0.2) rotate(-720deg);
    filter: blur(50px);
    box-sizing: border-box;
    /* transition: all .5s ease; */
}

.faq main article section > aside {
    grid-column: 5 / -2;
    background: var(--green);
    color: var(--greeng);
    border-radius: 0.5rem;
    row-gap: 0;
    font-size: 0.8em;
    text-align: center;
    place-content: flex-end;
}

.faq main article section > aside li {
    border-bottom: 0.1rem dotted var(--bluegl);
}

.faq main article section > aside li:first-child {
    border-top: 0.1rem dotted var(--bluegl);
}

body.faq main article section h3 ~ figure { /* use carefully placement within html flow and number of p distorts */
    grid-column: 2 / 4;
    grid-row: 3 / span all;
    place-self: center;
}

body.faq main article section:nth-of-type(6):after {
    content: ' ';
    display: none;
    position: absolute;
    right: -2em;
    bottom: 0;
    width: 100%;
    height: calc(100% - 2em - 2.3em);
    z-index: -1;
    opacity: 0.4;
    background: transparent no-repeat top 80% right -30% / 75vw url("../media/banner/faqh2-400.jpg");
}
body.faq main article #q6:checked ~ section:nth-of-type(6):after {
    display: block;
}

body.faq main article section > figure figcaption {
    border-radius: 0 0 0.5rem 0.5rem;
    display: none;
}

body.faq main article section > figure:hover figcaption {
    display: block;
}

body.faq main article section > figure img {
    border-radius: 0.5rem;
}

/* once again - I need the javascript - to co-ordinate these animations if we were to use keyframes - adding/removing class names - now partially solved by sequencing transitions */
.faq main article #q1:checked ~ section:first-of-type > h3, .faq main article #q2:checked ~ section:nth-of-type(2) > h3, .faq main article #q3:checked ~ section:nth-of-type(3) > h3, .faq main article #q4:checked ~ section:nth-of-type(4) > h3, .faq main article #q5:checked ~ section:nth-of-type(5) > h3, .faq main article #q6:checked ~ section:nth-of-type(6) > h3 {
    grid-column: 1 / -1;
    transform: scale(1.0);
    transition: all 1s ease-in-out;
}

.faq main article #q1:checked ~ section:first-of-type > *:not(h3), .faq main article #q2:checked ~ section:nth-of-type(2) > *:not(h3), .faq main article #q3:checked ~ section:nth-of-type(3) > *:not(h3), .faq main article #q4:checked ~ section:nth-of-type(4) > *:not(h3), .faq main article #q5:checked ~ section:nth-of-type(5) > *:not(h3), .faq main article #q6:checked ~ section:nth-of-type(6) > *:not(h3) {
    transition: all 1s cubic-bezier(0.230, 1.000, 0.320, 1.000), opacity 2s;
    max-height: 999em;
    max-width: 999em;
    opacity: 1;
    padding: 0.5rem;
    transform-origin: bottom right -2rem;
    transform: translate3d(0, 0, 0) scaleY(1) scaleX(1) rotate(0deg);
    filter: blur(0);
}

.faq main article #q1:checked ~ section:first-of-type > figure, .faq main article #q2:checked ~ section:nth-of-type(2) > figure, .faq main article #q3:checked ~ section:nth-of-type(3) > figure, .faq main article #q4:checked ~ section:nth-of-type(4) > figure, .faq main article #q5:checked ~ section:nth-of-type(5) > figure, .faq main article #q6:checked ~ section:nth-of-type(6) > figure {
    padding: 0; /* need to overwrite previous */
}

.faq main article #q1:checked ~ section:first-of-type > aside, .faq main article #q2:checked ~ section:nth-of-type(2) > aside, .faq main article #q3:checked ~ section:nth-of-type(3) > aside, .faq main article #q4:checked ~ section:nth-of-type(4) > aside, .faq main article #q5:checked ~ section:nth-of-type(5) > aside, .faq main article #q6:checked ~ section:nth-of-type(6) > aside {
    /* grid-column: 5 / -2;
     font-size: 0.8em; */
}

.faq main article #q1:checked ~ section:not(:first-of-type) > *:not(h3),
.faq main article #q2:checked ~ section:not(:nth-of-type(2)) > *:not(h3),
.faq main article #q3:checked ~ section:not(:nth-of-type(3)) > *:not(h3),
.faq main article #q4:checked ~ section:not(:nth-of-type(4)) > *:not(h3),
.faq main article #q5:checked ~ section:not(:nth-of-type(5)) > *:not(h3),
.faq main article #q5:checked ~ section:not(:nth-of-type(6)) > *:not(h3) {
    transition: all 0.50s cubic-bezier(0.755, 0.050, 0.855, 0.060), opacity 0.40s;
}

/* Personalize - form play: must say, I'm disappointed, several years have passed and still form elements escape the designers grasp */
.personalize form {
    display: grid;
    grid-auto-flow: row;
    grid-template-columns: repeat(8, 1fr);
}

.personalize main form > :nth-child(2) {
    grid-column: 3 / -3;
    text-align: left;
    color: var(--orangeg);
    text-shadow: 1px 1px var(--orange);
    margin-bottom: 1em;
}
.personalize main form > :nth-child(2) tr:first-of-type th {
    background-color: var(--applel);
    border-radius: 1rem 1rem 1rem 0;
}
.personalize main form > :nth-child(2) tr:nth-of-type(2) th {
    background-color: var(--orangel);
    border-radius: 0 1rem 1rem 0;
}
.personalize main form > :nth-child(2) th:after, .personalize main form > :nth-child(2) td:after {
    display: none;
}
.personalize main form > :nth-child(2) tr:last-of-type td {
    padding: 0.3rem;
}


.personalize form fieldset {
    display: flex;
    flex-flow: row wrap;
    gap: 0.5rem;
    padding: 0.5rem 0.5rem 1rem;
    margin-bottom: 1rem;
    grid-column: 1 / -1;
    align-items: center;
    transition: all 1.2s ease-out;
}

.personalize form fieldset:nth-of-type(2) {
    grid-column: 1 / 5;
    align-content: flex-start;
}

.personalize form fieldset:nth-of-type(3) {
    grid-column: 5 / -1;
    align-content: flex-start;
}

.personalize form fieldset:last-of-type {
    align-content: space-evenly;
    border: none;
    /* overflow: hidden; /* animations and form functionality on smaller screens - the fixed blocks some of the select/input elements - font-size-adjust in FF not chrome, font-size: 0 in chrome not FF - FUN! */
}

.personalize form > fieldset > :not(fieldset):not(p) {
    min-height: 2rem;
}

.personalize main form fieldset > input, .personalize form fieldset > select, .personalize form fieldset > select option {
    max-width: 100%; /* FF needs to understand this */
    width: 100%;
}

.personalize form fieldset > :not(fieldset) {
    flex: 1 1 0;
    box-sizing: border-box;
}

.personalize form fieldset legend, .personalize form fieldset p, .personalize form fieldset:nth-last-of-type(3) label {
    flex-basis: 100%;
    margin: 0.3rem 0 0;
}

.personalize form fieldset label {
    flex-basis: 30%;
    min-width: min(120px, 100%);
}

.personalize form fieldset input, .personalize form fieldset select {
    flex-basis: calc(70% - 1em);
}

.personalize form label[for="f-a_del-add"] {
    flex-basis: 90%;
    max-width: 90%;
    margin: 0 auto;
}

.personalize form > fieldset:nth-last-of-type(1) input {
    flex-basis: calc(50% - 1em);
}

.personalize form > fieldset:last-of-type input {
    flex-basis: 0;
}

/* Personalize */
.personalize form #f-a_del-add + label + fieldset, .personalize form #f-p_prn + label + fieldset {
    z-index: -5;
    opacity: 0;
    transform-origin: top;
    transform: rotateX(-100deg);
    max-height: 0;
    padding: 0;
    margin: 0;
    flex: 0 0 0;
    box-sizing: border-box;
    transition: none;
    position: fixed;
}

.personalize form fieldset #f-a_del-add:checked ~ fieldset, .personalize form fieldset #f-p_pry:checked ~ fieldset {
    position: static;
    animation: swing-in-top-fwd 2s cubic-bezier(0.175, 0.885, 0.320, 1.275) 0.3s both;
}

.personalize form fieldset label[for="f-p_pr-fn"] + img {
    display: block;
    margin: 1rem auto;
    border-radius: 2rem;
    opacity: 0;
}

@keyframes swing-in-top-fwd {
    0% {
        z-index: -5;
        opacity: 0;
        transform-origin: top;
        transform: rotateX(-100deg);
        max-height: 0;
        padding: 0;
        margin: 0;
    }
    100% {
        z-index: 0;
        opacity: 1;
        transform-origin: top;
        transform: rotateX(0deg);
        max-height: 999em;
        padding: 0.5rem 0.5rem 1rem;
        margin-bottom: 1rem;
        flex: 1 1 100%;
        position: static;
    }
}
/* Personalize - validation and price guidance */
.personalize form fieldset > p {
    transform: translateY(-500px);
    height: 0;
    opacity: 0;
    z-index: -10;
    position: fixed;
}

.personalize form fieldset:nth-of-type(2) > .jsNode, .personalize form fieldset:nth-of-type(3) > .jsNode span {
    color: var(--blue);
    font-weight: bolder;
}
.personalize form fieldset > .jsNode span {
 /*   display: block;*/
}
.personalize form fieldset:nth-of-type(2) > img.jsNode {
    flex-basis: 45%; width: 45%;  }
.personalize form fieldset > *[id^="f-"]:invalid + p, .personalize form fieldset > p.jsNode.error {
    color: red;
}
.personalize form fieldset > p.jsNode.error {
    animation: bounce-in-top 1.1s forwards;
    position: static;
}
.personalize form fieldset > p.jsNode.priceEstimate, .personalize form fieldset > aside.jsNode.priceEstimate {
    opacity: 0.8;
    font-size: 0.7rem;
    margin: 0 auto;
    flex-basis: 50%;
    /* for a p */
    transform: none;
    height: auto;
    position: static;
    /* for an aside */
    display: block;
    padding: 0;
}
.personalize form fieldset > p.jsNode.priceEstimate > span, .personalize form fieldset > aside.jsNode.priceEstimate > span {
    animation: none;
    box-sizing: border-box;
    padding: 0.2rem 0 0.2rem 0.5rem;
    white-space: nowrap;
}
.personalize form > fieldset > input:focus + p, .personalize form > fieldset > input:active + p,
.personalize form > fieldset > select:focus + p, .personalize form > fieldset > select:active + p,
/* .personalize form fieldset:nth-of-type(2) > input:focus + p, .personalize form fieldset:nth-of-type(2) > input:active + p,
.personalize form fieldset:nth-of-type(2) > select:focus + p, .personalize form fieldset:nth-of-type(2) > select:active + p,
.personalize form fieldset:nth-last-of-type(2) > input:focus + p, .personalize form fieldset:nth-last-of-type(2) > input:active + p,
.personalize form fieldset:nth-last-of-type(2) > select:focus + p, .personalize form fieldset:nth-last-of-type(2) > select:active + p,*/
.personalize form fieldset:nth-of-type(3) > input:first-of-type:focus ~ p:first-of-type, .personalize form fieldset:nth-of-type(3) > input:first-of-type:active ~ p:first-of-type,
.personalize form fieldset:nth-of-type(3) > fieldset:first-of-type:focus ~ p:first-of-type, .personalize form fieldset:nth-of-type(3) > fieldset:first-of-type:active ~ p:first-of-type,
.personalize form fieldset:nth-of-type(3) > fieldset:first-of-type:hover ~ p:first-of-type, .personalize form fieldset:nth-of-type(3) > fieldset:first-of-type:focus-within ~ p:first-of-type,
.personalize form fieldset:nth-of-type(3) > input:nth-of-type(2):focus ~ p:last-of-type, .personalize form fieldset:nth-of-type(3) > input:nth-of-type(2):active ~ p:last-of-type {
    animation: bounce-in-top 1.1s both;
    position: static;
}

@keyframes bounce-in-top {
    0% {
        transform: translateY(-500px);
        animation-timing-function: ease-in;
        opacity: 0;
        height: 0;

    }
    38% {
        transform: translateY(0);
        animation-timing-function: ease-out;
        opacity: 1;
        height: auto;
    }
    55% {
        transform: translateY(-65px);
        animation-timing-function: ease-in;
    }
    72% {
        transform: translateY(0);
        animation-timing-function: ease-out;
    }
    81% {
        transform: translateY(-28px);
        animation-timing-function: ease-in;
    }
    90% {
        transform: translateY(0);
        animation-timing-function: ease-out;
    }
    95% {
        transform: translateY(-8px);
        animation-timing-function: ease-in;
    }
    100% {
        transform: translateY(0);
        animation-timing-function: ease-out;
        height: auto;

        opacity: 1;
    }
}
/* Blog */
.blog main > section {
    margin-top: 5rem;
}
.blog section button, .overview aside button {
    grid-area: 2 / 3 / 2 / -3;
    transition: 0.4s all ease-in-out;
    padding: 1rem;
    margin: 0.5rem auto 2rem;
    box-shadow: 0 0.5rem 1rem 0 var(--blue), 0 0.4rem 1.2rem 0 var(--apple);
    background-color: var(--green);
    border-radius: 1rem;
    color: var(--orange);
    font: opaque bold clamp(1.5rem, 0.6923rem + 3.5897vw, 5rem)/clamp(1.2rem, 0.6923rem + 3.5897vw, 4.5rem) var(--font);
    outline: none;
    text-decoration: none;
    cursor: pointer;
}
.overview aside button {
    grid-area: unset;
    margin: 0 3rem 0.5rem;
    box-sizing: border-box;
}
.blog section button:hover, .overview aside button:hover {
    box-shadow: 0 0.75rem 1rem 0 var(--blue), 0 1rem 3.1rem 0 var(--apple);
    transform: scale(1.1);
    font-weight: bolder;
    outline: none;
}
.blog section button:active, .overview aside button:active {
    transform: translateY(0.4rem) scale(1.1);
    font-weight: bolder;
    outline: none;
    border-style: none;
}

/* Confirmation */
.confirmation > aside {
    grid-area: mo;
    display: grid;
    grid-auto-flow: row;
    grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
    max-width: 80%;
    margin: 0 auto;
}

.confirmation > aside :first-child {
    grid-column: 1 / -1;
}

.confirmation > aside .art-w-side {
    align-items: flex-start;
}

.confirmation main h2, .confirmation article > h3 {
    text-align: center;
}

.confirmation article aside {
    grid-area: unset;
    background: var(--green);
    color: var(--greeng);
    border-radius: 0.5rem;
    font-size: 1em;
    text-align: center;
    margin: 1rem auto;
    padding: 1rem;
    max-width: 80%;
    box-sizing: border-box;
}

.confirmation article aside :last-child {
    text-align: right;
    font-weight: bolder;
    font-size: 1.1em;
}

.confirmation article article > address {
    max-width: max-content;
    margin: 0 auto;
}
.confirmation span.jsTextNode {
    animation: slide-in-blurred-top 900ms cubic-bezier(0.230, 1.000, 0.320, 1.000) alternate forwards;
}


/* Confirmation: table, tr, td, th - Just testing on responsiveness tables - We hardly ever use them any more on webpages */
table {
    border-collapse: collapse;
    border-radius: 1rem;
    background: var(--bluegl);
    margin: 0 auto;
    max-width: 80%;
}

th, td {
    padding: 0.5rem;
    position: relative;
}

td {
    padding-left: 1.7rem;
}

th {
    white-space: nowrap;
    vertical-align: top;
}

th:before {
    content: "";
    display: block;
    position: absolute;
    right: -1.5rem;
    top: calc(50% - 1rem);
    width: 0;
    height: 0;
    border-style: solid;
    border-width: 1rem 0 1rem 1.3rem;
    border-color: transparent transparent transparent var(--green);
}

th:after {
    content: "";
    display: block;
    position: absolute;
    left: calc(50% - 2.2rem);
    top: 2rem;
    width: 0;
    height: 0;
    border-style: solid;
    border-width: 2rem 2.2rem 0 2.2rem;
    border-color: var(--orange) transparent transparent transparent;
}

/* contact: main */
.contact main {
    padding: 0;
}

.contact main article {
    background-color: var(--appleg);
    color: var(--blueg);
    display: grid;
    grid-auto-flow: column;
    grid-template-rows: 3fr 8fr 3fr;
    height: 100%;
}

.contact main article section {
    display: flex;
    flex-flow: column;
    align-items: center;
}

.contact main article section address p {
    text-align: center;
    font-style: normal;
    font-size: clamp(1rem, 0.7000rem + 1.3333vw, 2.5rem);
    line-height: 1.4em;
    margin: auto 1rem 1rem;
    overflow-wrap: anywhere;
}

.contact main article section > * {
    flex: 1 1 auto;
}

.contact main article section:nth-of-type(2) {
    background-color: rgba(100, 100, 100, 1);
    color: rgba(20, 20, 20, 1);
}

/* contact: responsive iframe */
.contact main article section:nth-of-type(2) iframe {
    width: 100%;
    height: 100%;
    border: none;
    flex-basis: 100%;
    margin: 0;
}

/* contact: simple responsive form */
.contact main article section:nth-of-type(3) form {
    width: 90%;
    margin: 0 auto 1rem;
    display: grid;
    grid-auto-flow: row;
    grid-template-columns: 1fr minmax(auto, 5fr) 1fr;
    gap: 0.3rem;
    align-items: center;
}

.contact form > * {
    padding: 0 0.5rem;
    box-sizing: border-box;
}

.contact form label {
    grid-column-start: 1;
}

.contact form label:first-of-type {
    place-self: center stretch;
}

.contact form label:last-of-type {
    place-self: start stretch;
}

.contact form input[type="submit"] {
    grid-column-start: 3;
    place-self: self-end stretch;
}

.contact form input {
    place-self: center stretch;
    line-height: 2em;
}

.contact form textarea {
    place-self: stretch;
}

/* TWEAKS */
/* screen reader friendly styling - could use a transform, but this one's a classic - mindful of your specificity here */
.visually-hidden {
    position: absolute;
    left: -10000px;
    width: 1px;
    height: 1px;
    overflow: hidden;
}

/* e-mail obscurity - never thought I would be doing this client side */
.contact main a:after {
    content: attr(data-website) "\0040" attr(data-user);
    unicode-bidi: bidi-override;
    direction: rtl;
}

/* MEDIA QUERIES - or where they'll end up */
/* Queries added to the top of css at beginning of development, to force augmented specificity */
/* not entirely mobile first design (cf ass.) */
@media only screen and (max-width: 1024px) {
    body header h1 {
        margin: auto 0 1vh 0;
    }

    body main article.art-w-side figure {
        max-width: 250px;
    }

    body.overview aside {
        font-size: 0.7em;
    }

    body.faq main article section:nth-of-type(6):after {
        background: transparent no-repeat top 80% right -22% / 80vw url("../media/banner/faqh2-400.jpg");
    }

    body.faq main article section > aside {
        grid-column: 6 / -1;
    }

    body.faq main article section h3 ~ figure { /* use carefully placement within html flow and number of p distorts */
        grid-column: 1 / 5;
    }
}

@media only screen and (max-width: 800px) {
    html body.overview aside aside {
        display: none;
    }

    /* First nav switch - keeping the products central */
    body header + nav > ul > li, body header + nav > ul > li:hover {
        flex-basis: calc(16.66% - 0.2rem);
    }

    body nav ul > li:nth-of-type(2) {
        order: 6;
    }

    body.overview aside > *:not(:first-child) {
        top: 6rem;
    }
}

@media only screen and (max-width: 640px) {
    body {
        /* redundant? grid-template-rows: 15fr auto 20fr 1fr; */
    }

    /* First nav switch - nicer as a smaller block? - this was the first approach */
    body nav ul > li:first-of-type {
        order: 1;
    }

    body nav ul > li:nth-of-type(2) {
        order: 5;
    }

    body nav ul > li:nth-of-type(3) {
        order: 3;
    }

    body nav ul > li:nth-of-type(4) {
        order: 2;
    }

    body nav ul > li:nth-of-type(5) {
        order: 4;
    }

    body nav ul > li:nth-of-type(6) {
        order: 6;
    }

    body header + nav > ul > li, body header + nav > ul > li:hover {
        flex-basis: calc(50% - 0.2rem);
        display: flow-root;
    }

    body nav li a, body nav li a:any-link, body nav ul a {
        padding: 0.5em 0.1rem;
    }

    nav li:hover ul, nav li:active ul, nav li:focus ul {
        width: calc(100% - 0.2rem);
        position: static;
    }

    /* Contact */
    body.contact main article section:nth-of-type(3) form {
        grid-template-columns: 1fr;
    }

    body.contact main article section:nth-of-type(3) form > * {
        grid-column-start: 1;
        width: 100%;
    }

    /* Personalize */
    body.personalize form fieldset:nth-of-type(2), .personalize form fieldset:nth-of-type(3) {
        grid-column: 1 / -1;
    }
    body.personalize main form > :nth-child(2) {
        grid-column: 2 / -2;
        font-size: 0.9rem;
        text-align: center;
    }
    body.personalize main form > :nth-child(2) tr th:first-of-type {
        border-radius: 0.5rem 0.5rem 0 0;
    }

    /* Overview */
    body.overview aside > *:not(:first-child) {
        top: 6.2rem;
    }

    body.overview aside aside {
        display: none;
    }

    /* Faq */
    body.faq main article section > aside {
        grid-column: 6 / -1;
        align-self: center;
    }

    body.faq main article section h3 ~ figure { /* use carefully placement within html flow and number of p distorts */
        grid-column: 1 / 5;
    }

    /* Confirmation: table, tr, td, th - Just testing on responsiveness tables */
    table, tbody, tr, td, th, caption {
        display: block;
        padding: 0.5rem;
        vertical-align: middle;
    }

    tr {
        margin: 0;
        border: dotted var(--blue);
        border-width: 0.1rem 0 0.1rem 0;
        border-radius: 0.5rem;
    }

    tr:nth-child(odd) {
        background: var(--orangeg);
    }

    tr:last-child {
        border: none;
    }

    th {
        white-space: pre-wrap;
        text-align: center;
        padding-top: 0.5rem;
    }

    th:after {
        opacity: 0.4;
        left: calc(50% - 1.3rem);
        top: 1.5rem;
        border-width: 1.2rem 1.3rem 0 1.3rem;
        border-color: var(--green) transparent transparent transparent;
    }

    th:before {
        display: none;
    }

    td:after {
        content: "";
        display: block;
        opacity: 0.6;
        position: absolute;
        left: calc(50% - 4.2rem);
        top: 100%;
        width: 0;
        height: 0;
        border-style: solid;
        border-width: 1.4rem 4.2rem 0 4.2rem;
        border-color: var(--orange) transparent transparent transparent;
    }

    tr:last-child td:after {
        display: none;
    }
}

@media only screen and (max-height: 640px) {
    /* faq */
    .faq main article > p, .personalize main form > p, .confirmation main article > p:first-of-type {
        grid-column: 2 / -2;
    }
}

/* used to be "@media only screen and (max-width: 480px)", but then you miss out on tilted smartphones */
@media only screen and (max-width: 480px), (orientation: landscape) and (max-height: 360px) {
    /* Smartphones and touchscreens - augment specificity! */
    body {
        grid-template-rows: 2fr auto auto auto 1fr;

    }

    /* Second nav switch - mobile version ? a bit too soon, No, we have tilted screens smartphone and tablets */
    /*, but yes FF dares to show this too soon ;-), and why not in this stage of production */
    body nav li a, body nav li a:any-link, body nav ul a {
        padding: 0.5em 0.1rem;
    }

    body header + nav {
        background: white;
    }

    body header + nav > ul {
        flex-flow: column;
        max-height: 0;
        min-height: 2.8rem;
        transform: translate(-1000px, -1000px) skew(80deg, 10deg);
        transform-origin: 100% 0;
        filter: blur(40px);
        opacity: 0;
    }

    body nav label[for="menu_toggle"] {
        top: 0;
        left: 0;
        position: absolute;
        display: inline-block;
        max-height: 2.7rem;
        width: 80%;
        z-index: 20;
        box-sizing: border-box;

    }
    body nav #menu_toggle:checked ~ label[for="menu_toggle"] {
        width: 0;
    }

    body nav #menu_toggle:checked ~ label[for="menu_toggle"] svg {
        animation: roll-out-right-drop-down 1s ease-in both;
    }

    body nav #menu_toggle:checked + ul {
        animation: slide-in-blurred-tl 0.6s cubic-bezier(0.230, 1.000, 0.320, 1.000) 0.7s both;
    }

    @keyframes roll-out-right-drop-down {
        0% {
            transform: translateX(0) rotate(0deg) scale(0, 0);
            margin: 0;
            opacity: 0.7;
        }
        70% {
            transform: translateX(calc(100vw - 5rem)) rotate(540deg);
            opacity: 1;
        }
        100% {
            transform: translateX(calc(100vw - 5rem)) translateY(11rem) scale(1.2, 1.2) rotate(360deg);
            opacity: 0.7;
        }
    }
    @keyframes slide-in-blurred-tl {
        0% {
            transform: translate(-1000px, -1000px) skew(80deg, 10deg);
            transform-origin: 100% 0;
            filter: blur(40px);
            opacity: 0;
            max-height: 0;
        }
        100% {
            transform: translate(0, 0) skew(0deg, 0deg);
            transform-origin: 50% 50%;
            filter: blur(0);
            opacity: 1;
            max-height: 999em;
        }
    }
    nav li:hover ul, nav li:active ul, nav li:focus ul {
        width: calc(100% - 0.2rem);
        position: static;
    }

    /* Overview */
    body.overview aside > *:not(:first-child) {
        top: 0;
    }

    body.overview aside aside {
        display: none;
    }

    body footer svg {
        width: 10vw;
    }

    /* Faq */
    body.faq main article h3 {
        grid-column: 2 / -1;
        font-size: 1.3em;
    }

    body.faq main article section > aside {
        grid-column: 3 / -2;
        margin: 0 0 0.5rem 0;
    }

    body.faq main article section h3 ~ figure { /* use carefully placement within html flow and number of p distorts */
        grid-column: 2 / -2;
        grid-row: auto;
    }

    body.personalize main, body.faq main {
        margin: 0 0 1rem;
        padding: 0 0.5rem 0.3125rem;
    }

    /* Confirmation: table, tr, td, th - Just testing on responsiveness tables */
    table, .confirmation > aside {
        max-width: 90vw;
    }

    table, tr, tbody {
        padding: 0;
    }

    td:after {
        top: 98%;
    }

    th:after {
        top: calc(100% - 0.5rem);
    }

    /* General grid sorting */
    .faq main article > p, .personalize main form > p, .confirmation main article > p:first-of-type {
        grid-column: 2 / -2;
    }
}

/* used to be "@media only screen and (max-width: 420px)", but then you miss out on tilted smartphones  */
@media only screen and (max-width: 420px), (orientation: landscape) and (max-height: 360px) {
    /* Smartphones and touchscreens - augment specificity! */
    body header {
        background: lightcyan url(../media/banner/mainh-640.jpg) no-repeat center/cover;
    }

    body.faq header:before {
        background: lightcyan url(../media/banner/faqh-640.jpg) no-repeat 22%/cover;
    }

    body {
        grid-template-rows: 2fr auto auto auto 1fr;
        grid-template-columns: 0 1fr 0 0;
        overflow-wrap: break-word;
    }

    /* One column */
    body aside {
        grid-area: mo;
        padding: 0 0.5rem 0.3125rem;
    }
    html body.overview aside nav li {
        flex-basis: 40%;
    }
    html body header + nav ul > li:nth-of-type(2) {
        order: 2;
    }
    html body main article.art-w-side figure {
        max-width: 280px;
    }

    /* Product */
    html body.product main article section:nth-of-type(2) > img {
        max-width: 100%; /* smaller than a thumb? */
    }

    /* Overview */
    html body.overview nav label[for="filters_toggle"] {
        right: 0.5rem;
        top: 0;
        z-index: 20;
    }

    html body.overview nav label[for="filters_toggle"] svg {
        float: right;
    }

    html body.overview nav #menu_toggle:checked ~ label[for="filters_toggle"] {
        position: static;
    }

    html body.overview aside {
        grid-area: mn;
        padding: 0.1rem 0.5rem 0.3125rem;
        z-index: 5;
        row-gap: 0;
        background-color: white;
        position: sticky;
        top: 2.7rem;
        transition: all 0.4s ease-in-out;
        transform: translateY(-500px);
        height: 0;
        width: 100%;
        box-sizing: border-box;
        opacity: 0;
    }

    body.overview #filters_toggle:checked ~ nav label[for="filters_toggle"] svg {
        animation: roll-out-blurred-left 1s cubic-bezier(0.755, 0.050, 0.855, 0.060) both;
    }

    @keyframes roll-out-blurred-left {
        0% {
            transform: translateX(0) rotate(0deg);
            filter: blur(0);
            opacity: 1;
        }
        100% {
            transform: translateX(-1000px) rotate(-720deg);
            filter: blur(50px);
            opacity: 0;
            height: 0;
            width: 0;
        }
    }

    body.overview #filters_toggle:checked ~ aside {
        animation: bounce-in-top 1.1s both 0.95s;
    }

    body.overview #filters_toggle:checked ~ nav #menu_toggle:checked + ul:before {
        content: "Some layers don't go well together!";
        font-size: 0.6rem;
        text-align: center;
        place-self: center;
        padding: 0.3rem 0;
        color: var(--apple);
    }
    html body.overview main p.breadcrumb {
        position: sticky;
        top: 3rem;
        left: 0;
        width: 100%;
        padding: 0 0.2rem;
        box-sizing: border-box;
        background: white;
        z-index: 4;
    }

    html body.overview main p.breadcrumb:after {
        color: var(--apple);
        font-weight: bolder;
    }
    html body.overview input#top6:checked ~ main p.breadcrumb:after {
        content: ' > Top Selection';
    }
    html body.overview input#stars1:checked ~ main p.breadcrumb:after {
        content: ' > 5 Star Quality';
    }
    html body.overview input#stars2:checked ~ main p.breadcrumb:after {
        content: ' > 3 Star Quality';
    }
    html body.overview input#stars3:checked ~ main p.breadcrumb:after {
        content: ' > 2 Star Quality';
    }
    html body.overview input#col-l:checked ~ main p.breadcrumb:after {
        content: ' > Light Colored';
    }
    html body.overview input#col-m:checked ~ main p.breadcrumb:after {
        content: ' > Multiple Colors available';
    }
    html body.overview input#col-d:checked ~ main p.breadcrumb:after {
        content: ' > Dark Colored';
    }
    html body.overview input#inch13:checked ~ main p.breadcrumb:after {
        content: ' > 13" laptops';
    }
    html body.overview input#inch14:checked ~ main p.breadcrumb:after {
        content: ' > 14" laptops';
    }
    html body.overview input#inch15:checked ~ main p.breadcrumb:after {
        content: ' > 15" laptops';
    }
    html body.overview input#inch17:checked ~ main p.breadcrumb:after {
        content: ' > 17" laptops';
    }
    html body.overview aside nav {
        margin: 0;
    }

    html body.overview aside nav h3 {
        position: absolute;
        left: -9999em;
        font-size: 0;
        max-height: 0;
        max-width: 0;
    }

    html body.overview main {
        grid-area: mo;
        padding: 0.3125rem 0.5rem 0.3125rem;
    }

    html body.overview main section[id^="group"] > :first-child {
        font-size: 0.8rem;
    }

    html body.overview aside > *:not(:first-child) {
        position: static;
        padding: 0.2rem 0 0;
        line-height: 0.9rem;
    }

    html body.overview aside aside {
        display: none;
    }

    html body.overview aside fieldset {
        display: flex;
        flex-flow: row wrap;
        justify-content: space-evenly;
        /* -webkit-flex-flow: row wrap; /* added for samsung browser : no go */
        /* flex-direction: row; /* added for samsung browser  : no go  */
        /* display: inherit; This is the only way samsung plays ball Fu***ckers, and no decent device/user agent selector NEED javascripting here */
    }
    html body.overview aside section:first-of-type fieldset:first-of-type {
        justify-content: space-around;
    }
    html body.overview aside section:first-of-type fieldset:first-of-type label {
        padding: 0.1rem 0.5rem 0.3rem;
    }
    html body.overview aside section:first-of-type fieldset:first-of-type label[for="view-all"]:after {
        content: ' / off';
    }
    html body.overview aside fieldset legend {
        font-size: inherit;
        padding: 0;
    }
    html body.overview aside fieldset legend ~ label {
        /* all: unset; testing - not a user agent stylesheet thing */
        background-size: 0.5rem;
        padding: 0 0 0 0.8rem;
        font-size: 0.8em;
        flex-grow: 0; /* originally only this was needed - FF Edge Chrome */
        text-align: center;
        line-height: 0.9rem;
        max-width: fit-content;
    }

        /* Faq - re-position */
    html body.faq main article > p {
        grid-column: 1 / -1;
    }

    html body.faq main article section h3 {
        grid-column: 2 / -1;
        font-size: 0.9em;
    }

    html body.faq main article section > aside, body.faq main article section h3 ~ figure {
        grid-column: 1 / -1;
    }

    html body.faq main article section:nth-of-type(6):after {
        background: transparent no-repeat bottom 0 right -5% / 85vw url("../media/banner/faqh2-400.jpg");
    }

    /* Personalize */
    html body.personalize form label {
        text-align: center;
    }
    .personalize form fieldset > aside.jsNode.priceEstimate {
        flex-basis: 100%;

    }
    .personalize form fieldset > aside.jsNode.priceEstimate > span {
        white-space: normal;
        font-size: 0.6rem;
    }
    /* Confirmation: table, tr, td, th - Just testing on responsiveness tables */
    table, tr, tbody {
        padding: 0;
        max-width: 95vw;
    }

    th:after {
        opacity: 0.6;
        border-width: 0.5rem 1rem 0 1rem;
        left: calc(50% - 1rem);
    }

    td:after {
        left: calc(50% - 2.2rem);
        top: 95%;
        border-width: 1.4rem 2.2rem 0 2.2rem;
    }

    .faq main article > p, .personalize main form > p, .confirmation main article > p:first-of-type {
        grid-column: 1 / -1;
    }

    /* footer */
    html body footer svg {
        width: 10vw;
    }
}

@media only screen and (orientation: landscape) and (max-height: 360px) {
    /* landscape and small device only - still its own tweak needed */
    html body nav {
        max-height: calc(100vh - 3rem);
        overflow-y: auto;
    }

    html body nav ul > li:nth-of-type(2) {
        order: inherit;
    }

    /* added for samsung browser: who don't respect block and inline elements w flex-basis:auto
    - update S just can't handle flex in flex and sticky (adding below made labels smaller, but still getting column flow)
    - setting flex basis should work, but no float is safer, they actually keep the block-level on flex-items
    - further update: this is an old sore for samsung, a flex in a fieldset? */
    html body.overview aside fieldset {
        display: flow-root;
    }

    html body.overview aside fieldset > * {
        float: left;
    }

    html body.overview aside fieldset label {
        /* i can do this - previous sibling selector prevails */
        width: 45%;
        text-align: center;
    }

    html body.overview aside fieldset legend + label {
        clear: left;
    }

    html body.overview aside fieldset legend ~ label {
        margin: 0.3rem 10%;
    }
}

@media only screen and (max-width: 240px) {
    /* ridiculously small - like one is playing with chrome's devtools */
    body {
        overflow-wrap: anywhere;
    }

    html body figcaption {
        display: none;
    }

    html body main section[id^="group"], body.product main article section:nth-of-type(2), .confirmation > aside {
        grid-template-columns: repeat(auto-fill, minmax(100px, 1fr));
    }

    html body.personalize form input[type="date"] {
        font-size: smaller; /* the only way to make it fit the smallest possible screen */
        /* funny thing about date, again samsung doesn't respect interval settings */
    }

    html body.personalize form fieldset {
        padding: 0.5rem 0;
    }

}

@media screen and (min-width: 1900px) {
    /* going to slip a bit of 4K, just for you */
    body {
        grid-template-columns: 1fr 1320px 560px 1fr;
    }

    body.personalize, body.faq, body.confirmation {
        grid-template-columns: 1fr 1440px 0 1fr;
    }

    body.overview > nav {
        grid-area: 2 / 2 / 2 / -2;
        animation: scale-up-hor-center 1s cubic-bezier(0.390, 0.575, 0.565, 1.000) 0.6s forwards;
    }

    @keyframes scale-up-hor-center {
        0% {
            transform: scale(1, 1);
            filter: blur(0);
        }
        50% {
            transform: scale(1.3, 2);
            filter: blur(50px);
        }
        100% {
            transform: scale(1, 1);
            filter: blur(0);
            grid-column: 1 / -1;
        }
    }
}

@media screen and (min-width: 2000px) {
    /* 4K = add some outer banners */
    body {
        grid-template-columns: 1fr minmax(max-content, 1330px) minmax(0, 570px) 1fr;
    }
    nav, header, footer {
        /* the culprit ;-) grid-area: 2 / 2 / 2 / -2; */
        grid-column: 2 / -2;
    }
}