:root {
    --header-size: 85px;
    --footer-size: 65px;
}

html,
body {
    height: 100vh;
    overflow-y: hidden;
}

.noselect,
.main .controls summary,
.main .controls label {
    -webkit-touch-callout: none;
    -webkit-user-select: none;
    -khtml-user-select: none;
    -moz-user-select: none;
    -ms-user-select: none;
    user-select: none;
}

.main {
    width: 100%;
    max-height: 100%;
    display: grid;
    grid-template-rows: var(--header-size) auto var(--footer-size);
    grid-template-columns: 1fr 400px;
    grid-template-areas:
        "header header"
        "main controls"
        "footer footer";
}

.main header {
    grid-area: header;
    border-bottom: 2px solid rgba(0, 0, 0, .2);
    box-shadow: var(--pico-card-box-shadow);
}

.main header ul.links {
    flex: 1;
    justify-content: end;
}

.main header ul.icons::before {
    content: '';
    display: block;
    width: 2px;
    height: 50px;
    margin-inline: 0.5em;
    border-right: 1px solid rgba(128, 128, 128, 0.575);
}

.main .display {
    grid-area: main;
    max-height: calc(100vh - var(--header-size) - var(--footer-size));
}

.main .display svg {
    width: 100%;
    height: 100%;
    object-fit: contain;
}

.main .controls {
    grid-area: controls;
    padding: 1em 1em 0.5em 0.5em;
    overflow-y: auto;
}

.main .controls .content {
    padding: 0.5em;
}

.main .footer {
    grid-area: footer;
    display: flex;
    padding: 1em;
    justify-content: center;
    gap: 1em;
}

.logo img {
    max-height: 2em;
}

svg.icon-theme-toggle {
    --theme-toggle-duration: .4s
}

svg.icon-theme-toggle :first-child path {
    transition-duration: calc(var(--theme-toggle-duration) * .6);
    transition-property: transform, d;
    transition-timing-function: cubic-bezier(0, 0, .5, 1)
}

svg.icon-theme-toggle g circle,
svg.icon-theme-toggle g path {
    transform-origin: center;
    transition: transform calc(var(--theme-toggle-duration) * .65) cubic-bezier(0, 0, 0, 1.25) calc(var(--theme-toggle-duration) * .35)
}

svg.icon-theme-toggle.moon g circle {
    transform: scale(1.4);
    transition-delay: 0s
}

svg.icon-theme-toggle.moon g path {
    transform: scale(.75);
    transition-delay: 0s
}

svg.icon-theme-toggle.moon :first-child path {
    d: path("M-9 3h25a1 1 0 0017 13v30H0Z");
    transition-delay: calc(var(--theme-toggle-duration) * .4);
    transition-timing-function: cubic-bezier(0, 0, 0, 1.25)
}

@supports not (d:path("")) {
    svg.icon-theme-toggle.moon :first-child path {
        transform: translate3d(-9px, 14px, 0)
    }
}

.pointer {
    cursor: pointer;
}