@import url('reset.css');
@import url('default.css');


body > .background-container {
    height: 100vh;
    width: 100%;
    background: var(--color-background);
    overflow: hidden;
    transition: all 1s ease-out;
}

/* Header section */

.background-container header {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    z-index: 100;
}

header .header-container {
    width: 100%;
    height: 100%;
    padding: calc(var(--base-font-size-vertical) * 1.2) calc(var(--base-font-size) * 1);
    display: flex;
    align-items: center;
}

.header-container .logo {
    position: relative;
    display: flex;
    align-items: center;
    gap: 5px;
    font-size: calc(var(--base-font-size) * 0.9);
    color: var(--color-text-lighter);
}

/* TODO: Hover animation to be added */
.header-container .logo svg {
    height: calc(var(--base-font-size) * 1.5);
    width: calc(var(--base-font-size) * 1.5);
}
.header-container .logo svg * {
    transition: all 0.5s ease;
}
.header-container .logo svg #N {
    fill: var(--color-primary);
}
.header-container .logo svg #N_ {
    fill: none;
    animation: logo-n 3s linear 0s infinite forwards normal;
}
.header-container .logo svg #Lines {
    fill: var(--color-background-lighter);
}
.header-container .logo svg #ON {
    fill: none;
    animation: logo-on 3s linear 0s infinite forwards normal;
}

@keyframes logo-n {
    0%, 89% {
        fill: var(--color-primary);
    }
    90%, 100% {
        fill: none;
    }
}

@keyframes logo-on {
    0%, 89% {
        fill: none;
    }
    90%, 100% {
        fill: #00e913;
    }
}

.header-container .logo .text {
    font-family: var(--font-logo);
}

header .toolbar {
    display: none;
}

/* Editing area */

.background-container main {
    height: 100%;
    width: 100%;
    display: flex;
    align-items: center;
    justify-content: center;
    flex: 1;
}

main form {
    min-width: var(--minimum-width);
    width: var(--dynamic-width);
    max-width: var(--maximum-width);
    display: flex;
    flex-direction: column;
    align-items: center;
    transition: all .5s ease;
}

main form.hide {
    scale: 0.8;
}

main form.unhide {
    scale: 1;
}

/* 1. Title input */

main form input {
    width: 100%;
    text-align: center;
}

main form #noteTitle {
    padding: 5px 10px;
    font-size: calc(var(--base-font-size) * 2);
    font-weight: 200;
    border-bottom: 1px solid transparent;
    color: var(--color-text);
    /* background: linear-gradient(90deg, var(--clr-primary-a0), var(--clr-accent-a0));
    background: -webkit-linear-gradient(0deg, var(--clr-primary-a0), var(--clr-accent-a0));
    background-clip: text;
    -webkit-background-clip: text;
    -moz-background-clip: text;
    -webkit-text-fill-color: transparent; */
}

main form #noteTitle::placeholder {
    font-weight: 100;
    color: var(--color-background-lighter);
}

main form #noteTitle:hover {
    border-bottom: 1px solid var(--color-background-lighter);
}

main form #noteTitle:focus,
main form #noteTitle:active {
    border-bottom: 1px dotted var(--color-background-lighter);
}

main form #helpTitle {
    margin-top: 10px;
    font-size: calc(var(--base-font-size) * .5);
    font-style: italic;
    cursor: auto;
    color: var(--color-nutral);
    transition: opacity .5s ease .1s;
}

/* 2. Note editor */

.background-container.editor-mode {
    background: var(--color-background-light);
    animation: vertical-expansion 0.1s linear 1s 1 normal forwards;
    /* overflow-y: auto; --> later injected by CSS animation */
}

@keyframes vertical-expansion {
    to {
        overflow-y: auto;
    }
}

.background-container.editor-mode header {
    position: sticky;
}

/* Text formatting toolbar guide down arrow */
.background-container.editor-mode header .header-container .logo::after {
    content: '▼';
    position: absolute;
    top: 100%;
    left: 0;
    width: 100%;
    font-family: var(--font-ui);
    font-size: calc(var(--base-font-size) * 0.5);
    text-align: center;
    animation: slideDown .7s ease-out 3s 2 normal forwards;
    opacity: 0;
}

@keyframes slideDown {
    from {
        opacity: 1;
        transform: translateY(0);
    }
    to {
        opacity: 0;
        transform: translateY(10px);
    }
}

.background-container.editor-mode header .header-container .logo svg * {
    fill: var(--color-text);
}
.background-container.editor-mode header .header-container .logo svg #ON {
    animation: none;
    fill: none;
}
.background-container.editor-mode header .header-container .logo svg #N {
    fill: var(--color-text);
}
.background-container.editor-mode header .header-container .logo svg #N_ {
    animation: none;
    fill: var(--color-text);
}
.background-container.editor-mode header .header-container .logo .text {
    display: none;
}

.background-container.editor-mode header .header-container .logo:hover svg * {
    fill: var(--color-accent);
}

.background-container.editor-mode header .header-container .logo.active {
    transform: scale(0.95);
    opacity: 0.9;
    transition: transform 0.2s ease, opacity 0.2s ease;
}

/* Text formatting toolbar */

.background-container.editor-mode header .toolbar {
    display: initial;
    position: absolute;
    left: calc(var(--base-font-size) * 1.2);
    top: 100%;
    opacity: 0;
    visibility: hidden;
    transform: translateY(-20px);
    transition: all .5s ease;
}

.background-container.editor-mode header .toolbar.visible {
    opacity: 1;
    visibility: visible;
    transform: translateY(0);
}

.background-container.editor-mode .toolbar section {
    position: relative;
    margin-bottom: 8px;
    display: block;
}

.background-container.editor-mode .toolbar section .group {
    position: relative;
}

.background-container.editor-mode .toolbar section .group .sub-group {
    position: absolute;
    top: 0;
    right: calc(-100% - 10px);
    opacity: 0;
    visibility: hidden;
    transform: translateX(calc(-100% - 10px * 1));
    transition: all 0.3s ease-out;
}

.background-container.editor-mode .toolbar section .group .sub-group.open {
    opacity: 1;
    visibility: visible;
    transform: translateX(0);
}

.background-container.editor-mode .toolbar section,
.background-container.editor-mode .toolbar section .group .sub-group {
    border-radius: calc(var(--base-border-radius) / 2);
    background: rgba(var(--color-nutral-rgb), 0.1);
    border: 1px solid rgba(var(--color-nutral-rgb), 0.115);
    backdrop-filter: blur(5px);
    -webkit-backdrop-filter: blur(5px);
}

.background-container.editor-mode .toolbar section:hover {
    background: rgba(var(--color-nutral-rgb), 0.15);
}

.background-container.editor-mode .toolbar section:first-child {
    margin-bottom: 2px;
    border: none;
    background: none;
    display: flex;
    justify-content: center;
}

.background-container.editor-mode .toolbar section .pin {
    fill: rgba(var(--color-nutral-rgb), 0.2);
}

.background-container.editor-mode .toolbar section .tool {
    display: block;
    padding: 2px 5px;
    height: 24px;
    width: 28px;
    border-radius: calc(var(--base-border-radius) / 2);
    fill: var(--color-text);
}

.background-container.editor-mode .toolbar section .tool:hover {
    background: rgba(var(--color-nutral-rgb), 0.15);
}


.background-container.editor-mode footer {
    animation: slide-down 0.5s ease-in 0s 1 normal forwards;
}

@keyframes slide-down {
    0% {
        opacity: 1;
    }
    99% {
        opacity: 0;
    }
    100% {
        opacity: 0;
        visibility: hidden;
        display: none;
    }
}

main #noteEditor {
    display: block;
    opacity: 0;  /* initial values, later modified by class animation on submit (by JS) */
    visibility: hidden;  /* initial values, later modified by class animation on submit (by JS) */
    height: 0%;  /* initial values, later modified by class animation on submit (by JS)*/
    width: 0%;  /* initial values, later modified by class animation on submit (by JS) */
    /* min-width: var(--minimum-width); injected by class animation on submit (by JS) */
    max-width: var(--maximum-width);
}

#noteEditor .header-area {
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    margin-bottom: calc(var(--base-font-size) * 1.5);
    opacity: 1;
    /* animation-name: opacity-change; Later added by JS during fallback */
    animation-fill-mode: both;
    animation-timeline: scroll();
    animation-range: 0 100px;
    /* Fallback for browsers that don't support scroll-driven animations */
    transition: opacity 0.5s ease;
}

@keyframes opacity-change {
    from {
        opacity: 1;
    }
    to {
        opacity: 0;
    }
}

/* Add JavaScript fallback hook class */
#noteEditor .header-area.scrolled {
    opacity: 0;
}

.header-area #editorTitle {
    font-family: var(--font-title);
    text-align: center;
    width: fit-content;
    max-width: 100%;
    background: linear-gradient(90deg, var(--color-accent), var(--color-secondary));
    background: -webkit-linear-gradient(0deg, var(--color-accent), var(--color-secondary));
    background-clip: text;
    -webkit-background-clip: text;
    -moz-background-clip: text;
    -webkit-text-fill-color: transparent;
}

.header-area .metadata {
    margin-top: calc(var(--base-font-size-vertical) * 0.5);
    display: flex;
    align-items: center;
    justify-content: center;
    gap: .5rem;
    color: var(--color-nutral);
}

.header-area .metadata span {
    text-align: left;
}

#noteEditor .editor-area {
    height: max-content;
    width: 100%;
    padding: 1rem;
    background: linear-gradient(to bottom, var(--color-background) 50%, transparent);
    border-radius: var(--base-border-radius);
    /* TODO: Gradient blob behind instead of box-shadow */
}

.editor-area .additional {
    width: 100%;
    margin-bottom: 1rem;
}

.additional .category {
    display: flex;
    align-items: center;
    justify-content: left;
    gap: 10px;
}

.category .tag {
    padding: 1px 5px;
    color: var(--color-background-lighter);
    border: 1px solid var(--color-background-lighter);
    border-radius: calc(var(--base-border-radius) / 2);
    cursor: pointer;
}

.editor-area #editor {
    font-family: var(--font-content);
    line-height: 1.5;
    padding: 3rem 4rem;  /* Modified in media query */
    margin-bottom: 30vh; /* Buffer area for applying lower gradient of the 2nd ancestor element */
    height: max-content;
    width: 100%;
    outline: none;
    color: var(--color-text);
}

/* Footer section */

.background-container footer {
    position: fixed;
    left: 0;
    top: var(--existing-note-position); /* initial position (changable on scroll in JS) */
    width: 100%;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    transition: top .5s ease-out;
    overflow: hidden;
    z-index: 100;
}

footer .notes-section {
    min-width: calc(var(--minimum-width) * 0.8);
    width: calc(var(--dynamic-width) * 0.8);
    max-width: calc(var(--maximum-width) * 0.8);
}

.notes-section:hover #handle.hide {
    opacity: 1;
}

.notes-section:hover #notes-container.hide {
    opacity: 1;
    user-select: auto;
}

.notes-section #handle {
    margin: 10px auto;
    height: 5px;
    width: calc(var(--base-font-size) * 1.5);
    border-radius: var(--base-border-radius);
    background: var(--color-background-light);
    cursor: pointer;
    transition: opacity .5s ease .1s;
}

.notes-section #notes-container {
    width: 100%;
    transition: opacity .5s ease .1s;
}

#notes-container .note {
    width: 100%;
    padding: 5px 15px;
    margin-bottom: 10px;
    border: 1px solid var(--color-background-lighter);
    border-radius: var(--base-border-radius);
    display: flex;
    align-items: center;
    justify-content: flex-start;
    gap: 1rem;
    overflow: hidden;
}

#notes-container .note:hover {
    /* TODO: Glass effect to be added here */
    background: linear-gradient(55deg, transparent 30%, var(--color-background-light));
    cursor: pointer;
    opacity: 1;
}

#notes-container .note .info {
    text-align: center;
    color: var(--color-nutral);
}

#notes-container .note .info .dd {
    font-size: 1.3rem;
}

#notes-container .note .info .mmm-yy {
    font-size: .7em;
    text-transform: uppercase;
}

#notes-container .note .content h6 {
    font-size: 1rem;
    color: var(--color-primary-light);
}

#notes-container .note .content p {
    font-size: .9rem;
    color: var(--color-text-lighter);
}

.notes-section .overlay {
    position: fixed;
    bottom: 0;
    left: 0;
    right: 0;
    height: calc(100vh - var(--existing-note-position));
    background: linear-gradient(to top, var(--color-background) 0%, transparent 40%);
    pointer-events: none; /* Allow clicks to pass through */
}