@import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500&display=swap');
@import url("https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.min.css");

/*
  Notebook rules
  --------------
  Everything is built on one line unit (--u = 1.75rem). The ruled lines are a
  repeating background drawn 1.25rem down each 1.75rem cell; every block's height,
  margin and padding is a multiple of 1.75rem, and text is nudged so its
  baseline lands on the rule. Don't add borders/odd paddings to flow
  elements or the text will drift off the lines.
*/

:root {
    --u: 1.75rem;
    --paper: #fbf7ee;
    --rule: #d3e0ec;
    --margin: #e8877f;
    --ink: #2b2a28;
    --ink-2: #77726a;
    --link: #c85a00;
    --marker: rgba(255, 205, 70, 0.6);
    --gutter-left: 6.25rem;
    --gutter-right: 2.5rem;
}

*,
*::before,
*::after {
    box-sizing: border-box;
}

html {
    font-size: clamp(15px, 1.25vw, 22px);
    background: var(--paper);
    scroll-behavior: smooth;
}

body {
    position: relative;
    margin: 0;
    min-height: 100vh;
    font: 400 0.875rem/1.75rem Inter, sans-serif;
    color: var(--ink);
    background:
        repeating-linear-gradient(to bottom,
            transparent 0 1.25rem,
            var(--rule) 1.25rem calc(1.25rem + 1px),
            transparent calc(1.25rem + 1px) 1.75rem),
        var(--paper);
    -webkit-font-smoothing: antialiased;
}

/* red margin line */
body::before {
    content: "";
    position: fixed;
    top: 0;
    bottom: 0;
    left: 4.5rem;
    width: 1px;
    background: var(--margin);
    opacity: 0.45;
    pointer-events: none;
    z-index: 0;
}

/* punch holes */
body::after {
    content: "";
    position: absolute;
    top: 0;
    bottom: 0;
    left: 1.125rem;
    width: 1.25rem;
    background: radial-gradient(circle at 0.625rem 6.125rem, #ece5d3 0 0.4375rem, #d4ccb8 0.4375rem 0.5rem, transparent 0.5312rem) 0 0 / 1.25rem 21rem repeat-y;
    pointer-events: none;
    z-index: 0;
}

body > * {
    position: relative;
    z-index: 1;
}

/* cursor + progress bar come from their own files; keep them above the page */
body > .cursor,
body > .header {
    position: fixed;
}

.header,
.progress-container {
    background: transparent !important;
}

@media (hover: hover) and (min-width: 768px) {
    html,
    a,
    button {
        cursor: none;
    }
}

a {
    color: inherit;
    text-decoration: none;
}

p,
h1,
h2,
h3 {
    margin: 0;
}

/* ---------- shared bits ---------- */

.page {
    padding: 0 var(--gutter-right) 0 var(--gutter-left);
    max-width: 71.25rem;
}

.small-caps {
    font-size: 0.75rem;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    position: relative;
    top: 0.125rem;
}

/* highlighter-pen hover */
.hl,
.menu-button a,
.filter-button,
.p-links,
.archive-item {
    background-image: linear-gradient(transparent 40%, transparent 40%);
    background-repeat: no-repeat;
    transition: background-color 0.2s ease;
}

.menu-button a:hover,
.filter-button:hover,
.filter-button.active,
.p-links:hover,
.logo a:hover {
    background-image: linear-gradient(transparent 40%, var(--marker) 40%);
}

/* ---------- nav ---------- */

header {
    padding: var(--u) var(--gutter-right) 0 var(--gutter-left);
    max-width: 71.25rem;
}

.navbar {
    display: flex;
    justify-content: space-between;
    align-items: center;
    height: var(--u);
}

.logo a,
.menu-button a {
    font-size: 0.75rem;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    position: relative;
    top: 0.125rem;
}

.menu-button a + a {
    margin-left: 1.5rem;
}

/* ---------- sections ---------- */

.content {
    display: block;
    max-width: 71.25rem;
    padding: 3.5rem var(--gutter-right) 0 var(--gutter-left);
}

.section-title {
    display: flex;
    align-items: baseline;
    gap: 1rem;
    height: 3.5rem;
}

.section-title .num {
    font-size: 0.75rem;
    letter-spacing: 0.08em;
    color: var(--ink-2);
    position: relative;
    top: 0.4375rem;
}

.section-title h1 {
    font-size: 2.25rem;
    line-height: 3.5rem;
    font-weight: 500;
    letter-spacing: -0.02em;
    position: relative;
    top: 0.4375rem;
}

/* ---------- about ---------- */

.about-grid {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 10.5rem;
    column-gap: 3.5rem;
}

.about-text {
    max-width: 56ch;
}

.about-text h3 {
    font-size: 2rem;
    line-height: 3.5rem;
    font-weight: 500;
    letter-spacing: -0.02em;
    position: relative;
    top: 0.5rem;
    margin-bottom: 0;
}

.about-text p {
    margin-bottom: var(--u);
    font-weight: 400;
}

.location {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    height: var(--u);
    margin-bottom: var(--u);
    color: var(--link);
}

.location-text {
    font-size: 0.875rem;
}

.emitting-circle {
    flex: none;
    width: 0.625rem;
    height: 0.625rem;
    border-radius: 50%;
    background: rgb(255, 133, 3);
    animation: pulse 2.4s ease-in-out infinite;
}

@keyframes pulse {
    0%,
    100% {
        transform: scale(0.35);
        box-shadow: 0 0 0.375rem rgba(255, 133, 3, 0.7);
    }
    50% {
        transform: scale(1);
        box-shadow: 0 0 0.875rem rgba(255, 133, 3, 0.8);
    }
}

.p-links,
.about-text a.link {
    color: var(--link);
}

.about-image-wrapper {
    position: relative;
    width: 100%;
    max-width: 15rem;
    min-width: 0;
    height: 21rem;
    margin-top: var(--u);
    transform: rotate(2deg);
    background: #fff;
    padding: 0.625rem 0.625rem 2.5rem;
    box-shadow: 0 1px 0.125rem rgba(0, 0, 0, 0.15), 0 0.375rem 0.875rem rgba(0, 0, 0, 0.08);
}

.about-image-wrapper::before {
    content: "";
    position: absolute;
    top: -10px;
    left: 50%;
    width: 4.5rem;
    height: 1.375rem;
    margin-left: -36px;
    background: rgba(255, 205, 70, 0.55);
    transform: rotate(-3deg);
}

.mugshot-circle {
    display: block;
    width: 100%;
    height: 100%;
    min-width: 0;
    max-width: 100%;
    object-fit: cover;
}

/* ---------- work ---------- */

.button-container {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    column-gap: 1.25rem;
    height: var(--u);
    margin-bottom: var(--u);
}

.filter-label {
    font-size: 0.75rem;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--ink-2);
    position: relative;
    top: 0.125rem;
}

.filter-button {
    appearance: none;
    border: 0;
    margin: 0;
    padding: 0;
    background-color: transparent;
    color: var(--ink);
    font: 400 0.75rem/1.75rem Inter, sans-serif;
    letter-spacing: 0.08em;
    position: relative;
    top: 0.125rem;
}

.grid-container {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    column-gap: 1.75rem;
    row-gap: var(--u);
}

.grid-item {
    position: relative;
    display: block;
    color: var(--ink);
}

.rectangle {
    height: 10.5rem; /* 6 lines */
    background-color: #e9e3d3;
    background-size: cover;
    background-position: center;
    outline: 1px solid var(--ink);
    outline-offset: -1px;
}

.card-header {
    display: flex;
    gap: 0.75rem;
    height: var(--u);
    font-size: 0.875rem;
    white-space: nowrap;
}

.number {
    flex: none;
    color: var(--ink-2);
    font-variant-numeric: tabular-nums;
}

.card-title {
    overflow: hidden;
    text-overflow: ellipsis;
}

.overlay {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 10.5rem;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 1rem;
    text-align: center;
    background: rgba(251, 247, 238, 0.93);
    opacity: 0;
    transition: opacity 0.2s ease;
    pointer-events: none;
}

.overlay-content {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    font-size: 0.8125rem;
    line-height: 1.25rem;
}

.overlay-content.flex-column {
    flex-direction: column;
    gap: 0.375rem;
}

.grid-item:hover .overlay {
    opacity: 1;
}

/* ---------- archives ---------- */

.archive-container {
    display: block;
}

.archive-item {
    display: grid;
    grid-template-columns: 3fr 2fr 1fr;
    height: var(--u);
    font-size: 0.75rem;
    letter-spacing: 0.08em;
    transition: opacity 0.2s ease;
}

.archive-item > div {
    position: relative;
    top: 0.125rem;
}

.archive-item .year {
    text-align: right;
}

.archive-item .category {
    color: var(--ink-2);
}

.archive-item.inactive {
    opacity: 0.3;
}

/* ---------- footer ---------- */

footer {
    padding: 3.5rem var(--gutter-right) var(--u) var(--gutter-left);
    max-width: 71.25rem;
}

footer .navbar {
    height: var(--u);
    padding: 0;
    border: 0;
}

#clock {
    font-size: 0.75rem;
    letter-spacing: 0.08em;
    font-variant-numeric: tabular-nums;
    position: relative;
    top: 0.125rem;
}

footer .social-links {
    display: flex;
    gap: 1.25rem;
    align-items: center;
}

footer .social-links a {
    font-size: 1rem;
    line-height: var(--u);
    transition: color 0.2s ease;
}

footer .social-links a:hover {
    color: var(--link);
}

/* ---------- responsive ---------- */

@media (max-width: 960px) {
    .grid-container {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 760px) {
    :root {
        --gutter-left: 3.25rem;
        --gutter-right: 1rem;
    }

    body::before {
        left: 2.25rem;
    }

    body::after {
        display: none;
    }

    .about-grid {
        grid-template-columns: minmax(0, 1fr);
    }

    .about-image-wrapper {
        width: 15rem;
        margin: var(--u) auto;
    }

    .section-title h1 {
        font-size: 1.875rem;
    }

    .about-text h3 {
        font-size: 2.25rem;
    }

    .logo a {
        font-size: 0.6875rem;
    }
}

@media (max-width: 560px) {
    .grid-container {
        grid-template-columns: minmax(0, 1fr);
    }

    .archive-item {
        grid-template-columns: 2fr 1.6fr 0.6fr;
        font-size: 0.6875rem;
        letter-spacing: 0.04em;
    }
}

/* ---------- globe ---------- */

.about-aside {
    min-width: 0;
}

.globe-label {
    height: var(--u);
    margin-top: var(--u);
    color: var(--ink-2);
    white-space: nowrap;
}

.globe-wrap {
    position: relative;
    width: 100%;
    max-width: 15rem;
    height: 15.75rem; /* 9 lines */
}

.globe-wrap canvas {
    display: block;
    touch-action: pan-y;
}

.globe-tip {
    position: absolute;
    z-index: 5;
    width: 16rem;
    padding: 0.5rem 0.75rem;
    transform: translate(calc(-100% - 0.75rem), -50%);
    background: #fff;
    border: 1px solid var(--ink);
    font-size: 0.75rem;
    line-height: 1.125rem;
    opacity: 0;
    pointer-events: none;
    transition: opacity 0.15s ease;
}

.globe-tip.show {
    opacity: 1;
}

.globe-tip-name {
    font-weight: 500;
    color: var(--link);
}

@media (max-width: 760px) {
    .about-aside {
        width: 15rem;
        margin: 0 auto;
    }

    .globe-tip {
        transform: translate(-50%, calc(-100% - 0.75rem));
    }
}

/* ---------- v2: calmer layout ---------- */

/* plain square photo, no tilt or frame */
.about-image-wrapper {
    max-width: 10.5rem;
    height: 10.5rem;
    padding: 0;
    transform: none;
    background: none;
    box-shadow: none;
}

.about-image-wrapper::before {
    display: none;
}

.globe-wrap {
    max-width: 10.5rem;
    height: 10.5rem;
}

.globe-label {
    font-size: 0.6875rem;
    letter-spacing: 0.06em;
}

/* projects as an index list */
.grid-container {
    display: block;
}

.grid-item {
    display: grid;
    grid-template-columns: 2.5rem minmax(0, 1fr) minmax(0, 16.25rem) 6.875rem;
    column-gap: 1rem;
    height: var(--u);
    font-size: 0.875rem;
    white-space: nowrap;
}

.grid-item .rectangle,
.grid-item .overlay {
    display: none;
}

.grid-item .card-title {
    overflow: hidden;
    text-overflow: ellipsis;
}

.grid-item .card-cat,
.grid-item .card-kind {
    font-size: 0.75rem;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: var(--ink-2);
    position: relative;
    top: 0.125rem;
    overflow: hidden;
    text-overflow: ellipsis;
}

.grid-item .card-kind {
    text-align: right;
}

.grid-item:hover .card-title {
    background-image: linear-gradient(transparent 40%, var(--marker) 40%);
    justify-self: start;
}

.grid-container:hover .grid-item:not(:hover) {
    opacity: 0.45;
}

.project-preview {
    position: fixed;
    top: 0;
    left: 0;
    z-index: 50;
    width: 15rem;
    height: 10rem;
    background-size: cover;
    background-position: center;
    border: 1px solid var(--ink);
    opacity: 0;
    pointer-events: none;
    transition: opacity 0.15s ease;
}

.project-preview.show {
    opacity: 1;
}

@media (max-width: 760px) {
    .about-aside {
        width: 10.5rem;
    }

    .grid-item {
        grid-template-columns: 2rem minmax(0, 1fr) 5.625rem;
    }

    .grid-item .card-cat {
        display: none;
    }
}

/* ---------- v3: smaller about, globe instead of photo, fluid page ---------- */

@media (max-width: 760px) {
    html {
        font-size: 17px;
    }
}

.section-title h1 {
    font-size: 1.75rem;
    top: 0.6rem;
}

.section-title .num {
    top: 0.5rem;
}

.about-grid {
    grid-template-columns: minmax(0, 1fr) 14rem;
}

.about-text {
    max-width: 46ch;
    font-size: 0.8125rem;
}

.about-text h3 {
    font-size: 1.5rem;
    top: 0.7rem;
}

.location-text {
    font-size: 0.8125rem;
}

.about-aside {
    width: 14rem;
    min-width: 0;
}

.globe-label {
    margin-top: 0;
}

.globe-wrap {
    max-width: 14rem;
    height: 14rem; /* 8 lines */
}

@media (max-width: 760px) {
    .about-grid {
        grid-template-columns: minmax(0, 1fr);
    }

    .about-aside {
        margin: 0 auto;
    }
}

/* ---------- v4: left / right alignment only ---------- */

header,
.content,
footer,
.page {
    max-width: none;
}

.about-aside {
    justify-self: end;
}

.about-grid {
    justify-content: space-between;
}

/* work: number + title on the left, category + link type on the right */
.grid-item {
    grid-template-columns: 2.5rem minmax(0, 1fr) 16rem 7rem;
}

.grid-item .card-cat,
.grid-item .card-kind {
    text-align: right;
}

/* archives: title on the left, category + year on the right */
.archive-item {
    grid-template-columns: minmax(0, 1fr) 14rem 4rem;
}

.archive-item .category,
.archive-item .year {
    text-align: right;
}

/* footer: clock left, links + copyright right */
footer .navbar {
    justify-content: flex-start;
}

footer .social-links {
    margin-left: auto;
    margin-right: 1.5rem;
}

@media (max-width: 760px) {
    .grid-item {
        grid-template-columns: 2rem minmax(0, 1fr) 6rem;
    }

    .about-aside {
        justify-self: end;
        margin: 0;
    }
}

@media (max-width: 560px) {
    .archive-item {
        grid-template-columns: minmax(0, 1fr) 8rem 3.5rem;
    }
}

/* ---------- v5: small orange arrow cursor ---------- */

html,
body,
a,
button,
canvas,
.link,
.filter-button {
    cursor: url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='18'%20height='18'%20viewBox='0%200%2018%2018'%3E%3Cpath%20d='M2%201.5v13l3.4-3.1%202.4%205.2%202.2-1-2.3-5h4.7z'%20fill='%23ff8503'%20stroke='white'%20stroke-width='1.2'%20stroke-linejoin='round'/%3E%3C/svg%3E") 2 1, auto !important;
}

/* nav links sit on the right now that the name is gone */
.navbar {
    justify-content: flex-end;
}

/* ---------- big globe (2x wide = 4x area) ---------- */

.about-grid {
    grid-template-columns: minmax(0, 1fr) 28rem;
}

.about-aside {
    width: 28rem;
}

.globe-wrap {
    max-width: 28rem;
    height: 28rem; /* 16 lines */
}

@media (max-width: 760px) {
    .about-grid {
        grid-template-columns: minmax(0, 1fr);
    }

    .about-aside {
        width: 17.5rem;
    }

    .globe-wrap {
        max-width: 17.5rem;
        height: 17.5rem; /* 10 lines */
    }
}

.globe-label {
    text-align: right;
}

/* ---------- globe back to normal size; big "About" title ---------- */

.about-grid {
    grid-template-columns: minmax(0, 1fr) 14rem;
}

.about-aside {
    width: 14rem;
}

.globe-wrap {
    max-width: 14rem;
    height: 14rem; /* 8 lines */
}

#about .section-title {
    height: 7rem; /* 4 lines */
}

#about .section-title h1 {
    font-size: 7rem;
    line-height: 7rem;
    letter-spacing: -0.04em;
    top: 0.45rem;
}

#about .section-title .num {
    top: 0.45rem;
}

@media (max-width: 760px) {
    .about-aside {
        width: 14rem;
    }

    .globe-wrap {
        max-width: 14rem;
        height: 14rem;
    }

    #about .section-title {
        height: 5.25rem; /* 3 lines */
    }

    #about .section-title h1 {
        font-size: 4.5rem;
        line-height: 5.25rem;
        top: 0.48rem;
    }

    #about .section-title .num {
        top: 0.48rem;
    }
}

/* ---------- small section titles, globe = a third of the page width ---------- */

#about .section-title,
.section-title {
    height: 3.5rem; /* 2 lines */
}

#about .section-title h1,
.section-title h1 {
    font-size: 1.25rem;
    line-height: 3.5rem;
    letter-spacing: -0.01em;
    top: 0.8rem;
}

#about .section-title .num,
.section-title .num {
    top: 0.75rem;
}

.about-grid {
    grid-template-columns: minmax(0, 1fr) 31.25vw;
}

.about-aside {
    width: 31.25vw;
}

.globe-wrap {
    width: 100%;
    max-width: none;
    height: 31.25vw;
    height: round(up, 31.25vw, 1.75rem);
}

@media (max-width: 900px) {
    .about-grid {
        grid-template-columns: minmax(0, 1fr);
    }

    .about-aside {
        width: max(31.25vw, 13.125rem);
        justify-self: end;
    }

    .globe-wrap {
        height: max(31.25vw, 13.125rem);
        height: round(up, max(31.25vw, 13.125rem), 1.75rem);
    }
}

/* ---------- picture / experiences toggle ---------- */

[hidden] {
    display: none !important;
}

.aside-toggle {
    display: flex;
    justify-content: flex-end;
    gap: 1.25rem;
    height: var(--u);
}

.toggle-btn {
    appearance: none;
    border: 0;
    margin: 0;
    padding: 0;
    background-color: transparent;
    background-image: linear-gradient(transparent 40%, transparent 40%);
    color: var(--ink-2);
    font: inherit;
    letter-spacing: inherit;
    text-transform: inherit;
    line-height: var(--u);
}

.toggle-btn:hover,
.toggle-btn.active {
    color: var(--ink);
    background-image: linear-gradient(transparent 40%, var(--marker) 40%);
}

.photo-wrap {
    width: 100%;
    height: 31.25vw;
    height: round(up, 31.25vw, 1.75rem);
}

.photo-wrap img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
    outline: 1px solid var(--ink);
    outline-offset: -1px;
}

@media (max-width: 900px) {
    .photo-wrap {
        height: max(31.25vw, 13.125rem);
        height: round(up, max(31.25vw, 13.125rem), 1.75rem);
    }
}

/* nudge the picture/globe panel down two lines */
.about-aside {
    margin-top: 3.5rem;
}

/* one blank line between the toggle and the picture/globe */
.aside-toggle {
    margin-bottom: 1.75rem;
}

/* picture/globe sits in the middle of the right half instead of the far edge */
@media (min-width: 901px) {
    .about-grid {
        grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    }

    .about-aside {
        justify-self: center;
    }
}

/* bigger about text */
.about-text,
.location-text {
    font-size: 0.9375rem;
}

.about-text {
    max-width: 50ch;
}

.about-text h3 {
    margin-bottom: 1.75rem;
}

/* small caps and section titles: baseline right on the rules */
.logo a,
.menu-button a,
.archive-item > div,
.grid-item .card-cat,
.grid-item .card-kind,
.filter-label,
.filter-button,
#clock,
.small-caps {
    top: 0.1rem;
}

.section-title h1,
#about .section-title h1 {
    top: 0.8rem;
}

.section-title .num,
#about .section-title .num {
    top: 0.8rem;
}

/* ---------- flat world map ---------- */

.about-grid {
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
}

.about-aside {
    width: min(44vw, 100%);
    justify-self: center;
}

.globe-wrap {
    width: 100%;
    max-width: none;
    height: auto;
}

.globe-wrap canvas {
    width: 100%;
}

.photo-wrap {
    width: 31.25vw;
    max-width: 100%;
    margin: 0 auto;
}

.globe-tip {
    transform: translate(-50%, calc(-100% - 0.75rem));
}

.globe-tip.below {
    transform: translate(-50%, 0.75rem);
}

@media (max-width: 900px) {
    .about-grid {
        grid-template-columns: minmax(0, 1fr);
    }

    .about-aside {
        width: 100%;
        justify-self: stretch;
    }

    .photo-wrap {
        width: max(31.25vw, 13.125rem);
        margin: 0 0 0 auto;
    }
}

/* toggle and map/photo up one line */
.about-aside {
    margin-top: 1.75rem;
}

/* picture and map share the same box */
.photo-wrap {
    width: 100%;
    max-width: none;
    margin: 0;
}

.photo-wrap img {
    object-position: 50% 25%;
}

@media (max-width: 900px) {
    .photo-wrap {
        width: 100%;
        margin: 0;
    }
}

/* narrower picture/map box */
@media (min-width: 901px) {
    .about-aside {
        width: min(34vw, 100%);
    }
}

/* map down two lines */
.about-aside {
    margin-top: 5.25rem;
}

/* wider map */
@media (min-width: 901px) {
    .about-aside {
        width: min(42vw, 100%);
    }
}

/* breathing room at the top now that the nav is gone */
#about {
    padding-top: 1.75rem;
}

/* everything up two lines: name on the first line, no extra space above */
header {
    padding-top: 0;
}

/* name down one line, without moving the rest of the page */
header .navbar {
    position: relative;
    top: 1.75rem;
}

/* footer links as small text instead of icons */
footer .social-links a {
    font-size: 0.75rem;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    position: relative;
    top: 0.1rem;
}

.about-text h3 {
    color: var(--link);
}

/* every link highlights the same way on hover: a marker stroke behind the text */
a {
    background-image: linear-gradient(transparent 40%, transparent 40%);
    background-repeat: no-repeat;
}

a:hover,
footer .social-links a:hover {
    background-image: linear-gradient(transparent 40%, var(--marker) 40%);
}

footer .social-links a:hover {
    color: var(--ink);
}

/* project rows: the marker goes behind the title only, not the whole row */
.grid-item:hover {
    background-image: none;
}

/* keep the name above the about section so it can be hovered and clicked */
header {
    position: relative;
    z-index: 5;
}

/* "Hi, I'm Arundhati." shows the photo on hover, with the same marker as every link */
.hover-photo {
    background-image: linear-gradient(transparent 40%, transparent 40%);
    background-repeat: no-repeat;
}

.hover-photo:hover {
    background-image: linear-gradient(transparent 40%, var(--marker) 40%);
}

/* portrait preview for the photo */
.project-preview.portrait {
    width: 12rem;
    height: 16rem;
}
