/*
Responsive web design layout for 6502bench site.

All pages define elements with these IDs:
  masthead (site logo / title)
  topnav (top items, menu button) (consider "sticky" navbar?); contents
    reduce to home/menu for XS
  sidenav (large: float on left; medium/small: "collapsed sidepanel" or toggle)
  main (80% for large, 100% for medium/small)
  footer (with prev/next)

"main" section of tutorial pages:
  2-column grid for large/medium, 1-column grid for small/XS
*/

* {
    box-sizing: border-box;
}

/*
 * Overall look and feel.
 */
html {
    /* always show scrollbar, so centered masthead doesn't shift */
    overflow-y: scroll;
}
body {
    font-family: "Segoe UI", Arial, Helvetica, sans-serif;
    padding: 0px;
    margin: 0px;
    background-color: #ffffff;
}
/*code {
    font-size: 125%;
}*/

/*
 * Display of keyboard shortcuts in the <kbd> element.
 */
kbd.key {
    border-radius: 5px;
    padding: 0px 2px 0;
    border: 1px solid black;
    background-color: #f7f7f7;
}

/*
 * ==========================================================================
 * Extra small devices (phones) - DEFAULT:
 * - Main content grid is single-column.
 * - For top nav, show only the first link and menu icon.
 */

/*
 * Masthead.
 */
#masthead {
    /* background-color: #202020;
    color: #ffffff; */
    background-color: #e0e0e0;
    color: #101010;
    position: relative;
}
#masthead .masthead-title {
    text-align: center;
    font-size: 4em;
    font-weight: bolder;
    padding: 10px;
    margin: 0px;
}
#masthead .masthead-titleZZZ {
    /* place text */
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);

    bottom: 0;
    background: rgb(0, 0, 0);   /* fallback color */
    background: rgba(0, 0, 0, 0.5); /* black, 50% opacity */
    color: #f1f1f1;
    width: 100%;
    padding: 20px;
}
#masthead img {
    /* fill space with image */
    background-position: center;
    background-repeat: no-repeat;
    background-size: cover;
    background-attachment: fixed;
    width: 100%;
    height: auto;
}

/*
 * Top navigation bar.  Home on the left, primary links next to it,
 * sidenav menu icon on the right for smaller screens.
 */
#topnav {
    border-style: none;
    border-width: thin;
    padding: 10px;
    background-color: #5f5f5f;
}

/*
 * Show nothing but HOME initially.  Expand the set as the screen widens.
 * inline-block seems to help keep the text and icon consistent when
 * expanding and collapsing (vs. inline).
 *
 * DISABLED -- we don't have all that many items, so it's just annoying.
 */
#topnav a {display:inline-block;}
/*#topnav a:not(:first-child) {display:none;}*/
#topnav a.icon {
    float: right;
    display: block;
}
.no-sidenav #topnav a.icon {
    display: none;      /* no sidenav, no icon */
}
#topnav button {
    float: right;
    display: block;
    color: #ffffff;
    background-color: #5f5f5f;
    text-decoration: none;
    padding: .2em 1em .2em 1em;
}

#topnav nav {
    text-align: left;
    padding: 0px;
}
#topnav nav a {
    color: #ffffff;
    background-color: #5f5f5f;
    padding: .2em 1em .2em 1em;
    text-decoration: none;
}
#topnav nav a:hover {
    border-style: none;
    color: #ffffff;
    background-color: #000000;
}

#topnav nav a.active {
    color: #8bc349;
}

/*
 * Side navigation bar.  Always visible on large screens, pops out when
 * the hamburger icon is clicked on smaller screens.
 */
#sidenav {
    display: none;
    width: 180px;
    margin: 0 8px 0 0;
    padding: 5px;
}
#sidenav ul {
    list-style-type: none;
    padding: 0;
    margin: 0;
}
#sidenav li {
    padding: 0 0 1px 0;      /* top right bottom left */
}
#sidenav ul ul li {
    padding: 1px 0 0 10px;      /* top right bottom left */
}
#sidenav a {
    color: #ffffff;
    display: block;
    background-color: #5f5f5f;
    padding: 5px 5px 5px 8px;   /* top right bottom left */
    text-decoration: none;
}
#sidenav a:hover {
    color: #ffffff;
    background-color: #000000;
}
#sidenav li.active > a {
    color: #8bc349;
}

/*
 * Main content area.
 */
#main {
    margin: 8px;
    display: block;
}

/*
 * Grid layout for tutorial.  Each grid has two items, forming a {text,image}
 * pair, either of which may be absent.  The document is a series of grids.
 *
 * We can have images come before or after the related text by adjusting
 * the grid-row values.
 */
.grid-container {
    display: grid;
    grid-template-rows: auto auto;
    /*margin-bottom: 4px;*/
}

.grid-item-text {
    /* background-color: #e0e0ff; */
    grid-row: 1;
}
.grid-item-text p {
    /* items in grids don't collapse margins */
    /* cf. https://stackoverflow.com/q/18963421/294248 */
    margin-block-start: 0;
}

.grid-item-image {
    /* background-color: #ffe0e0; */
    grid-row: 2;
    justify-self: center;   /* center narrow images, mostly for 1-col layout */
}
.grid-item-image img {
    width: 100%;
    height: auto;
    /* don't expand image beyond original size */
    max-height: max-content;
    max-width: max-content;
    border: 1px solid #e0e0e0;
    margin-top: 5px;    /* align closer to top of text */
}

/*
 * Previous/next buttons.
 */
#prevnext {
    /* clear: both; */
    margin: 8px;
    margin-top: 30px;
    text-align: center;
}

#prevnext a {
    text-decoration: none;
    display: inline-block;
    padding: 8px 16px;
    border-radius: 5px;
    background-color: #f1f1f1;
    color: black;
}
#prevnext a:hover {
    background-color: #ddd;
}

/*
 * Footer.
 */
#footer {
    /* top margin gets eaten up by sidenav on short pages */
    clear: both;
    margin: 8px;
}

/*
 * ==========================================================================
 * Small devices (portrait tablets, large phones):
 * - For top nav, want to show all links in the top nav bar, as well
 *   as the menu icon.
 */
@media only screen and (min-width: 600px) {
    #topnav a:not(:first-child) {display:inline-block;}
}

/*
 * ==========================================================================
 * Medium devices (landscape tablets):
 * - Switch to two-column layout, text on the left, image on the right.
 */
@media only screen and (min-width: 768px) {
    .grid-container {
        grid-template-columns: 50% 50%;
        grid-template-rows: initial;
        grid-column-gap: 8px;
    }
    .grid-item-text {
        grid-row: 1;
        grid-column: 1;
    }
    .grid-item-image {
        grid-row: 1;
        grid-column: 2;
    }
}

/*
 * ==========================================================================
 * Large devices (laptops/desktops):
 * - Show sidenav on the side.
 * - Don't show menu icon in the topnav bar.
 */
 @media only screen and (min-width: 992px) {
    #sidenav {
        display: block;
        float: left;
    }

    #main {
        /* make room for sidenav */
        margin-left: 188px;
    }
    .no-sidenav #main {
        /* ...or not */
        margin-left: 8px;
    }

    #topnav a.icon {
        display: none;
    }
}
