button#explorer { all: unset; background-color: transparent; border: none; text-align: left; cursor: pointer; padding: 0; color: var(--dark); display: flex; align-items: center; & h1 { font-size: 1rem; display: inline-block; margin: 0; } & .fold { margin-left: 0.5rem; transition: transform 0.3s ease; opacity: 0.8; } &.collapsed .fold { transform: rotateZ(-90deg); } } .folder-outer { display: grid; grid-template-rows: 0fr; transition: grid-template-rows 0.3s ease-in-out; } .folder-outer.open { grid-template-rows: 1fr; } .folder-outer > ul { overflow: hidden; } #explorer-content { list-style: none; overflow: hidden; max-height: none; transition: max-height 0.35s ease; margin-top: 0.5rem; &.collapsed > .overflow::after { opacity: 0; } & ul { list-style: none; margin: 0.08rem 0; padding: 0; transition: max-height 0.35s ease, transform 0.35s ease, opacity 0.2s ease; & li > a { color: var(--dark); opacity: 0.75; pointer-events: all; } } } svg { pointer-events: all; & > polyline { pointer-events: none; } } .folder-container { flex-direction: row; display: flex; align-items: center; user-select: none; & div > a { color: var(--secondary); font-family: var(--headerFont); font-size: 0.95rem; font-weight: 600; line-height: 1.5rem; display: inline-block; } & div > a:hover { color: var(--tertiary); } & div > button { color: var(--dark); background-color: transparent; border: none; text-align: left; cursor: pointer; padding-left: 0; padding-right: 0; display: flex; align-items: center; font-family: var(--headerFont); & p { font-size: 0.95rem; display: inline-block; color: var(--secondary); font-weight: 600; margin: 0; line-height: 1.5rem; pointer-events: none; } } } .folder-icon { margin-right: 5px; color: var(--secondary); cursor: pointer; transition: transform 0.3s ease; backface-visibility: visible; } div:has(> .folder-outer:not(.open)) > .folder-container > svg { transform: rotate(-90deg); } .folder-icon:hover { color: var(--tertiary); } .no-background::after { background: none !important; } #explorer-end { // needs height so IntersectionObserver gets triggered height: 4px; // remove default margin from li margin: 0; }