@import "node_modules/ol/ol.css"; html, body { margin: 0; padding: 0; } #map { position: absolute; top: 0; bottom: 0; left: 0; right: 0; transition: 0.25s; } .nav-open #map { left: min(max(300px, 20%), 400px); } aside { width: min(max(300px, 20%), 400px); margin-left: max(min(-300px, -20%), -400px); transition: 0.25s; max-height: 100vh; overflow-y: auto; } aside > div { padding: 0 0.5em; } .nav-open aside { margin-left: 0; } aside ul { margin: 0; padding: 0; } aside ul li { list-style: none; } h1 { text-align: center; } aside .close { display: none; } aside details { margin-bottom: 2em; cursor: pointer; } aside summary { font-size: 1.3em; margin: .5em 0; font-weight: bold; } @media (max-width: 400px) { .nav-open #map { left: 100%; } aside { margin-left: calc(-100% + 2em); width: calc(100% - 2em); } aside .close { display: initial; } .nav-open aside .close { position: absolute; top: 0.5em; right: 0.5em; } }