body { height: 100vh; display: grid; grid-template-columns: 11fr 1fr; grid-template-rows: auto 1fr auto; margin: 0; background-color: #acf; } header.banner { grid-column: 1 / -1; display: grid; grid-template-columns: 3fr 8fr 1fr; align-items: center; } header.banner .brand { grid-column: 1; padding-left: 2vw; padding-right: 2vw; } header.banner .brand a { display: flex; align-items: center; text-decoration: none; } header.banner .brand img { transition: filter 1s; } header.banner .brand h1 { transition: color 1s; } header.banner .brand:hover img { filter: brightness(100%) sepia(100%); } header.banner .brand:hover h1 { color: #d82; } .brand h1 { margin: 0; } .brand img { height: 3em; filter: brightness(0%); } nav { grid-column: 2; padding-right: 2vw; } nav > ol { display: flex; align-items: center; align-content: stretch; flex-wrap: wrap; padding-left: 0; text-align: center; list-style-type: none; } nav > ol > li { flex: 1; padding: 0.5em 0.1em; } nav li.dropdown { position: relative; } nav li.dropdown ul { display: none; position: absolute; left: 0; /* Offset nav > ol > li padding. */ padding-left: 0; width: 100%; text-align: left; background: lightgrey; z-index: 1; /* TODO: transition? ⚠ display: block */ /* overflow: hidden; */ /* max-height: 0; */ /* transition: max-height 0.5s; */ /* transform: scaleY(0); */ /* transform-origin: top; */ /* transition: transform 0.5s; */ } nav li.dropdown:hover ul { display: block; /* TODO: transition? ⚠ redundant display: block */ /* max-height: 100vh; */ /* transform: scaleY(1); */ } nav li.dropdown > ul > li { list-style-type: none; } nav li.dropdown > ul > li:hover { background: white; } nav li.dropdown > ul > li a { display: block; /* Make link span whole containing block. */ padding-inline-start: 10%; } nav li.dropdown > ul > li a img { width: 32px; height: 32px; } .current { background-color: white; } nav ol li a { text-decoration: none; } .lang { grid-column: 3; background-color: black; border-radius: 50% 50% 50% 0; color: white; padding: 0.5em; margin: auto; } main { grid-row: 2; grid-column: 1; padding-left: 4%; overflow: auto; } footer.social { grid-row: 2; grid-column: 2; display: flex; flex-direction: column; align-items: center; position: sticky; top: 0; } .social img { width: 2em; margin-top: 0.5em; margin-bottom: 0.5em; } .contact { /* Ideally should be just: */ /* writing-mode: sideways-lr; */ /* but of course We Can't Have Nice Things. */ writing-mode: vertical-rl; transform: rotate(180deg); margin: 0; padding: 1em 0.5em; } .contact a { text-decoration: none; } footer.legal { grid-column: 1 / -1; width: 100%; text-align: center; margin: auto; font-size: 75%; } header a, footer a { color: inherit; }