:root {
    --secondary: #580180;
    --green: rgb(0, 85, 0);
    --page-gap: clamp(14px, 2.2vw, 30px);
    --sidebar-width: clamp(210px, 15vw, 320px);
    --panel-width: min(100%, 860px);
    --panel-height: clamp(330px, 90vh, 540px);
}

html {
    scroll-behavior: smooth;
    overflow-y: auto;
    overflow-x: hidden;
}

body {
    font-family: "Oswald", sans-serif;
    font-size: clamp(14px, 0.35vw + 13px, 16px);
    display: flex;
    margin: 0;
    min-height: 100vh;
}

aside {
    margin-top: var(--page-gap);
    margin-left: var(--page-gap);
    display: flex;
    flex-direction: column;
    gap: 15px;
    position: fixed;
    width: var(--sidebar-width);
    max-height: calc(100vh - (var(--page-gap) * 2));
    overflow-y: auto;
    padding: 12px;
}

main {
    margin-left: calc(var(--sidebar-width) + (var(--page-gap) * 2));
    padding: var(--page-gap);
    flex-grow: 1;
    min-height: 80vh;
}

#photo_booth {
    width: var(--panel-width);
    height: var(--panel-height);
    display: flex;
    flex-direction: column;
    position: relative;
    outline: 1px solid black;
    border-radius: 15px;
    background-color: white;
    margin-bottom: calc(var(--page-gap) * 2);
}

#header {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: clamp(10px, 1.2vw, 14px);
}

#header header {
    flex: 1;
    text-align: center;
    font-size: clamp(18px, 1.8vw, 22px);
    margin: 0;
}

#footer {
    display: flex;
    gap: 10px;
    align-items: center;
    padding: clamp(10px, 1.2vw, 14px);
}

#playback_controls {
    display: flex;
    gap: 8px;
    align-items: center;
}

#footer button {
    font-size: clamp(24px, 2vw, 30px);
    border: none;
    background: transparent;
    cursor: pointer;
    padding: 0;
    color: black;
}

#volume-slider {
    width: clamp(88px, 10vw, 128px);
}

#footer h1 {
    flex: 1;
    text-align: right;
    font-size: clamp(16px, 1.4vw, 20px);
    margin: 0;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

#photo_close {
    border: none;
    background: transparent;
    color: var(--secondary);
    font-size: clamp(22px, 2vw, 26px);
    line-height: 1;
    cursor: pointer;
}

#img_box {
    flex: 1;
    width: 100%;
    overflow: hidden;
}

#img_box img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    outline: 1px solid black;
}

#poem {
    display: none;
}

#poem header {
    margin: 0;
}

#poem p {
    margin: 0;
    color: var(--secondary);
    white-space: pre-line;
}

a:link {
    color: blue;
}

a:visited {
    color: blue;
}

a:hover {
    color: var(--secondary);
}

@media (max-width: 980px) {
    :root {
        --sidebar-width: clamp(190px, 30vw, 260px);
        --panel-height: clamp(300px, 56vh, 500px);
    }

    #footer {
        gap: 8px;
    }
}

@media (max-width: 760px) {
    body {
        display: block;
    }

    aside {
        position: static;
        width: auto;
        max-height: none;
        margin: var(--page-gap);
        padding: 0;
        overflow: visible;
    }

    main {
        margin-left: 0;
        padding: var(--page-gap);
    }

    #photo_booth {
        width: 100%;
        height: clamp(300px, 54vh, 480px);
    }

    #footer {
        flex-wrap: wrap;
    }

    #footer h1 {
        flex-basis: 100%;
        text-align: left;
    }
}