/* ============================================================
   THE MODERN AGE CODERS GAZETTE
   Standalone newspaper stylesheet. No imports. No dependencies.
   Everything below is unique to /gazette and uses the gz-* prefix.
   ============================================================ */

/* ---------- Reset (scoped to the gazette body) ---------- */
body.gazette,
body.gazette *,
body.gazette *::before,
body.gazette *::after {
    box-sizing: border-box;
}

body.gazette {
    margin: 0;
    padding: 0;
}

body.gazette img {
    max-width: 100%;
    display: block;
}

:where(body.gazette) a {
    color: inherit;
    text-decoration: none;
}

body.gazette button {
    font: inherit;
    cursor: pointer;
    background: none;
    border: none;
    padding: 0;
    color: inherit;
}

body.gazette ul,
body.gazette ol {
    list-style: none;
    margin: 0;
    padding: 0;
}

body.gazette h1,
body.gazette h2,
body.gazette h3,
body.gazette h4,
body.gazette h5,
body.gazette p {
    margin: 0;
}

/* ---------- Tokens ---------- */
:root {
    --gz-paper:        #f3ebd9;
    --gz-paper-2:      #ece2c8;
    --gz-paper-3:      #e2d4b0;
    --gz-ink:          #111111;
    --gz-ink-soft:     #2a2a2a;
    --gz-ink-mute:     #555555;
    --gz-byline:       #5b3a1a;
    --gz-red:          #9a1d1d;
    --gz-red-deep:     #6b1212;
    --gz-rule-soft:    #999999;
    --gz-max:          1240px;
}

/* ---------- Page surface ---------- */
body.gazette {
    background-color: var(--gz-paper);
    color: var(--gz-ink);
    font-family: 'Old Standard TT', 'Times New Roman', Georgia, serif;
    font-size: 17px;
    line-height: 1.55;
    min-height: 100vh;
    /* Newsprint grain — two stacked dot patterns */
    background-image:
        radial-gradient(rgba(0, 0, 0, 0.045) 1px, transparent 1.4px),
        radial-gradient(rgba(0, 0, 0, 0.025) 1px, transparent 1.4px);
    background-size: 4px 4px, 9px 9px;
    background-position: 0 0, 2px 3px;
}

/* ---------- Top "page nav" (mini, on-paper) ---------- */
.gz-nav {
    background: var(--gz-paper);
    border-bottom: 1px solid var(--gz-ink);
    position: sticky;
    top: 0;
    z-index: 80;
}

.gz-nav__inner {
    max-width: var(--gz-max);
    margin: 0 auto;
    padding: 12px 24px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 20px;
}

.gz-nav__logo {
    font-family: 'Playfair Display', 'Old Standard TT', serif;
    font-weight: 900;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    font-size: 15px;
}

.gz-nav__logo span {
    color: var(--gz-red);
}

.gz-nav__menu {
    display: flex;
    gap: 26px;
    flex-wrap: wrap;
}

.gz-nav__menu a {
    font-family: 'Playfair Display', serif;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    font-weight: 700;
    font-size: 12.5px;
    border-bottom: 1px solid transparent;
    padding-bottom: 2px;
    transition: border-color 0.2s ease;
}

.gz-nav__menu a:hover {
    border-color: var(--gz-ink);
}

.gz-nav__cta {
    font-family: 'Playfair Display', serif;
    font-weight: 900;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    font-size: 12px;
    background: var(--gz-ink);
    color: var(--gz-paper);
    padding: 9px 16px;
    border: 2px solid var(--gz-ink);
    transition: background 0.2s, color 0.2s;
    white-space: nowrap;
}

.gz-nav__cta:hover {
    background: var(--gz-paper);
    color: var(--gz-ink);
}

/* ---------- Top strip ---------- */
.gz-topstrip {
    border-top: 4px solid var(--gz-ink);
    border-bottom: 1px solid var(--gz-ink);
    padding: 8px 0;
    font-family: 'Playfair Display', serif;
    font-size: 11.5px;
    letter-spacing: 0.14em;
    text-transform: uppercase;
}

.gz-topstrip__inner {
    max-width: var(--gz-max);
    margin: 0 auto;
    padding: 0 24px;
    display: flex;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 6px 22px;
}

.gz-topstrip span + span::before {
    content: '·';
    padding: 0 12px 0 0;
    opacity: 0.5;
}

/* ---------- Masthead ---------- */
.gz-masthead {
    text-align: center;
    padding: 36px 24px 14px;
    max-width: var(--gz-max);
    margin: 0 auto;
}

.gz-masthead__title {
    font-family: 'UnifrakturCook', 'Playfair Display', serif;
    font-weight: 700;
    font-size: clamp(46px, 9vw, 116px);
    line-height: 0.95;
    letter-spacing: 0.005em;
    color: var(--gz-ink);
    margin-bottom: 8px;
    text-shadow: 1px 1px 0 rgba(0, 0, 0, 0.05);
}

.gz-masthead__subtitle {
    font-family: 'Playfair Display', serif;
    font-style: italic;
    font-size: clamp(13px, 1.5vw, 17px);
    color: var(--gz-ink-soft);
    letter-spacing: 0.05em;
}

.gz-masthead__rule {
    border-top: 4px solid var(--gz-ink);
    border-bottom: 1px solid var(--gz-ink);
    height: 8px;
    margin: 18px 0 0;
}

/* ---------- Today's lesson strip ---------- */
.gz-todaystrip {
    max-width: var(--gz-max);
    margin: 0 auto;
    padding: 10px 24px;
    border-bottom: 3px solid var(--gz-ink);
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    gap: 6px 16px;
    font-family: 'Playfair Display', serif;
    font-size: 11.5px;
    letter-spacing: 0.14em;
    text-transform: uppercase;
}

.gz-todaystrip strong {
    font-weight: 900;
    color: var(--gz-red);
    margin-right: 4px;
}

/* ---------- Page wrap ---------- */
.gz-page {
    max-width: var(--gz-max);
    margin: 0 auto;
    padding: 0 24px 60px;
}

/* ---------- Section header bar ---------- */
.gz-sec-head {
    background: var(--gz-ink);
    color: var(--gz-paper);
    padding: 11px 18px;
    font-family: 'Playfair Display', serif;
    font-weight: 900;
    letter-spacing: 0.2em;
    text-transform: uppercase;
    font-size: 13.5px;
    margin: 44px 0 24px;
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 12px;
}

.gz-sec-head .gz-sec-num {
    font-weight: 400;
    font-style: italic;
    opacity: 0.7;
    letter-spacing: 0.08em;
    font-size: 12px;
}

/* =========================================================
   SECTION: LEAD STORY
   ========================================================= */
.gz-lead {
    padding-top: 30px;
}

.gz-lead__grid {
    display: grid;
    grid-template-columns: minmax(0, 3.1fr) minmax(0, 1.2fr);
    gap: 36px;
}

.gz-lead__main { min-width: 0; }

.gz-lead__kicker {
    font-family: 'Playfair Display', serif;
    font-style: italic;
    color: var(--gz-red);
    letter-spacing: 0.16em;
    text-transform: uppercase;
    font-size: 13px;
    margin-bottom: 8px;
}

.gz-lead__headline {
    font-family: 'Playfair Display', serif;
    font-weight: 900;
    font-size: clamp(34px, 5.4vw, 70px);
    line-height: 1.02;
    letter-spacing: -0.005em;
    text-transform: uppercase;
    margin-bottom: 16px;
}

.gz-lead__deck {
    font-family: 'Old Standard TT', serif;
    font-style: italic;
    font-size: 19px;
    line-height: 1.4;
    margin-bottom: 16px;
    color: var(--gz-ink-soft);
    border-bottom: 1px solid var(--gz-ink);
    padding-bottom: 14px;
}

.gz-lead__byline {
    font-family: 'Playfair Display', serif;
    font-style: italic;
    font-size: 14px;
    margin-bottom: 14px;
    color: var(--gz-byline);
}

.gz-lead__byline strong {
    font-weight: 700;
    font-style: normal;
    text-transform: uppercase;
    letter-spacing: 0.09em;
    color: var(--gz-ink);
}

/* Photo placeholder with halftone dot pattern */
.gz-lead__photo {
    width: 100%;
    height: 320px;
    margin-bottom: 6px;
    border: 1px solid var(--gz-ink);
    background:
        radial-gradient(rgba(0, 0, 0, 0.7) 1.1px, transparent 1.6px) 0 0 / 4px 4px,
        linear-gradient(135deg, #1f1f1f 25%, #4a4a4a 60%, #2a2a2a 100%);
    position: relative;
}

.gz-lead__photo::after {
    content: 'EXCLUSIVE';
    position: absolute;
    top: 14px;
    left: 14px;
    background: var(--gz-red);
    color: var(--gz-paper);
    font-family: 'Playfair Display', serif;
    font-weight: 900;
    letter-spacing: 0.18em;
    font-size: 12px;
    padding: 5px 10px;
    border: 2px solid var(--gz-paper);
}

.gz-lead__cutline {
    font-family: 'Playfair Display', serif;
    font-style: italic;
    font-size: 13px;
    color: var(--gz-ink-soft);
    border-top: 1px solid var(--gz-ink);
    padding-top: 6px;
    margin-bottom: 22px;
}

.gz-lead__body {
    column-count: 3;
    column-gap: 28px;
    column-rule: 1px solid var(--gz-rule-soft);
    font-size: 16.2px;
    line-height: 1.62;
    text-align: justify;
    hyphens: auto;
}

.gz-lead__body p {
    margin-bottom: 12px;
}

.gz-lead__body p:first-of-type::first-letter {
    font-family: 'Playfair Display', serif;
    font-weight: 900;
    float: left;
    font-size: 68px;
    line-height: 0.85;
    margin: 6px 8px -2px 0;
    color: var(--gz-ink);
}

.gz-lead__pullquote {
    font-family: 'Playfair Display', serif;
    font-style: italic;
    font-weight: 700;
    font-size: 26px;
    line-height: 1.25;
    text-align: center;
    border-top: 3px solid var(--gz-ink);
    border-bottom: 3px solid var(--gz-ink);
    padding: 22px 12px;
    margin: 24px 0;
    break-inside: avoid;
}

.gz-lead__pullquote::before,
.gz-lead__pullquote::after {
    content: '"';
    color: var(--gz-red);
    font-size: 32px;
    line-height: 0;
    vertical-align: -10px;
    padding: 0 4px;
}

.gz-lead__continued {
    font-family: 'Playfair Display', serif;
    font-style: italic;
    font-size: 14px;
    text-align: right;
    margin-top: 10px;
    color: var(--gz-red);
}

/* Sidebar */
.gz-sidebar {
    border: 3px double var(--gz-ink);
    padding: 18px;
    background: var(--gz-paper-2);
    align-self: start;
    position: sticky;
    top: 76px;
}

.gz-sidebar__title {
    font-family: 'Playfair Display', serif;
    font-weight: 900;
    text-transform: uppercase;
    letter-spacing: 0.2em;
    font-size: 12.5px;
    text-align: center;
    border-bottom: 2px solid var(--gz-ink);
    padding-bottom: 8px;
    margin-bottom: 14px;
}

.gz-sidebar__stat {
    text-align: center;
    border-bottom: 1px dashed var(--gz-ink-mute);
    padding: 12px 0;
}

.gz-sidebar__stat:last-child { border-bottom: none; }

.gz-sidebar__num {
    font-family: 'Playfair Display', serif;
    font-weight: 900;
    font-size: 38px;
    line-height: 1;
    color: var(--gz-red);
}

.gz-sidebar__label {
    font-size: 11.5px;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: var(--gz-ink-soft);
    margin-top: 4px;
    font-family: 'Playfair Display', serif;
    font-weight: 700;
}

.gz-sidebar__list {
    margin: 0;
    padding: 0;
    list-style: none;
    border-bottom: 1px dashed var(--gz-ink-mute);
}

.gz-sidebar__list li {
    font-family: 'Old Standard TT', serif;
    font-size: 15px;
    line-height: 1.45;
    padding: 9px 4px;
    border-bottom: 1px dashed var(--gz-ink-mute);
    position: relative;
    padding-left: 20px;
}

.gz-sidebar__list li:last-child {
    border-bottom: none;
}

.gz-sidebar__list li::before {
    content: '§';
    position: absolute;
    left: 4px;
    top: 9px;
    color: var(--gz-red);
    font-weight: 700;
    font-family: 'Playfair Display', serif;
}

.gz-sidebar__foot {
    font-family: 'Playfair Display', serif;
    font-style: italic;
    font-size: 13px;
    text-align: center;
    color: var(--gz-byline);
    margin-top: 14px;
    padding-top: 10px;
    line-height: 1.5;
}

/* =========================================================
   SECTION: ROLL OF HONOUR
   ========================================================= */
.gz-roll__grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 18px;
}

.gz-roll__category {
    border-top: 3px solid var(--gz-ink);
}

.gz-roll__cat-title {
    font-family: 'Playfair Display', serif;
    font-weight: 900;
    text-transform: uppercase;
    letter-spacing: 0.16em;
    font-size: 12.5px;
    text-align: center;
    background: var(--gz-ink);
    color: var(--gz-paper);
    padding: 8px 6px;
    margin-bottom: 12px;
}

.gz-roll__person {
    display: flex;
    gap: 12px;
    padding: 10px 4px;
    border-bottom: 1px dashed var(--gz-ink-mute);
    align-items: center;
}

.gz-roll__person:last-child { border-bottom: none; }

.gz-roll__avatar {
    flex-shrink: 0;
    width: 50px;
    height: 50px;
    background: var(--gz-paper-3);
    color: var(--gz-ink);
    display: grid;
    place-items: center;
    font-family: 'Playfair Display', serif;
    font-weight: 900;
    font-size: 19px;
    border: 2px solid var(--gz-ink);
    letter-spacing: 0.04em;
    overflow: hidden;
    position: relative;
}

.gz-roll__avatar img {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    filter: grayscale(100%) contrast(1.15);
}

/* Real MAC students get a small red ribbon and accent border */
.gz-roll__person--mac {
    background: rgba(154, 29, 29, 0.05);
    margin: 0 -4px;
    padding-left: 8px;
    padding-right: 8px;
    border-left: 3px solid var(--gz-red);
}

.gz-roll__person--mac .gz-roll__avatar {
    border-color: var(--gz-red);
    box-shadow: 0 0 0 1px var(--gz-paper), 0 0 0 3px var(--gz-red);
}

.gz-roll__person--mac .gz-roll__school {
    color: var(--gz-red);
    font-weight: 700;
    font-style: normal;
    letter-spacing: 0.02em;
}

/* ---------- FEATURED toppers (only the two real MAC students) ---------- */
.gz-roll__deck {
    font-family: 'Old Standard TT', serif;
    font-style: italic;
    font-size: 18px;
    line-height: 1.5;
    text-align: center;
    color: var(--gz-ink-soft);
    max-width: 760px;
    margin: 0 auto 28px;
    padding: 0 12px;
}

.gz-roll__grid--featured {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 32px;
}

.gz-roll__category--featured {
    border-top: 4px solid var(--gz-ink);
    padding-bottom: 24px;
    background: rgba(154, 29, 29, 0.04);
}

.gz-roll__category--featured .gz-roll__cat-title {
    margin-bottom: 0;
    font-size: 13px;
    letter-spacing: 0.2em;
}

.gz-roll__person--featured {
    flex-direction: column;
    text-align: center;
    align-items: center;
    padding: 28px 24px 8px;
    gap: 18px;
    border-bottom: none !important;
    border-left: none !important;
    background: transparent;
    margin: 0;
}

.gz-roll__avatar--large {
    width: 160px;
    height: 160px;
    border-radius: 50%;
    border-width: 4px;
    font-size: 56px;
}

.gz-roll__person--mac.gz-roll__person--featured .gz-roll__avatar {
    border-color: var(--gz-ink);
    box-shadow: 0 0 0 3px var(--gz-paper), 0 0 0 6px var(--gz-red);
}

.gz-roll__person--featured .gz-roll__meta {
    text-align: center;
}

.gz-roll__person--featured .gz-roll__name {
    font-size: 30px;
    line-height: 1.1;
    margin-bottom: 10px;
    font-weight: 900;
    letter-spacing: -0.01em;
}

.gz-roll__score--big {
    display: inline-block;
    font-family: 'Playfair Display', serif;
    font-weight: 900;
    font-size: 56px;
    line-height: 1;
    color: var(--gz-red);
    margin: 4px 0 14px;
    letter-spacing: -0.02em;
    border-bottom: 3px solid var(--gz-red);
    padding-bottom: 6px;
}

.gz-roll__person--featured .gz-roll__school {
    font-size: 14px;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    font-style: normal;
    font-weight: 700;
    color: var(--gz-byline);
}

@media (max-width: 1024px) {
    .gz-roll__grid--featured { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 540px) {
    .gz-roll__grid--featured { grid-template-columns: 1fr; }

    .gz-roll__avatar--large { width: 130px; height: 130px; }

    .gz-roll__person--featured .gz-roll__name { font-size: 24px; }

    .gz-roll__score--big { font-size: 44px; }
}

.gz-roll__meta { min-width: 0; }

.gz-roll__name {
    font-family: 'Playfair Display', serif;
    font-weight: 700;
    font-size: 15px;
    line-height: 1.15;
    margin-bottom: 3px;
}

.gz-roll__score {
    color: var(--gz-red);
    font-weight: 900;
    font-family: 'Playfair Display', serif;
    font-size: 16px;
    margin-right: 4px;
}

.gz-roll__school {
    font-style: italic;
    font-size: 12.5px;
    color: var(--gz-ink-soft);
    line-height: 1.3;
}

/* =========================================================
   SECTION: CERTIFICATES — Earned, Not Given
   ========================================================= */
.gz-certs__grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 22px;
    margin-bottom: 16px;
}

.gz-cert {
    margin: 0;
    background: var(--gz-paper);
    border: 1px solid var(--gz-ink);
    padding: 14px 14px 12px;
    text-align: center;
}

.gz-cert__frame {
    border: 3px double var(--gz-ink);
    padding: 6px;
    background: var(--gz-paper-2);
    position: relative;
    overflow: hidden;
    aspect-ratio: 1 / 1;
    display: grid;
    place-items: center;
}

.gz-cert__frame img {
    width: 100%;
    height: 100%;
    object-fit: contain;
    filter: grayscale(100%) contrast(1.1);
    transition: filter 0.25s ease;
    display: block;
}

.gz-cert:hover .gz-cert__frame img {
    filter: grayscale(0%) contrast(1);
}

.gz-cert__cap {
    margin-top: 12px;
    padding-top: 10px;
    border-top: 1px solid var(--gz-ink);
}

.gz-cert__name {
    display: block;
    font-family: 'Playfair Display', serif;
    font-weight: 900;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    font-size: 16px;
    color: var(--gz-ink);
}

.gz-cert__sub {
    display: block;
    font-family: 'Playfair Display', serif;
    font-style: italic;
    font-size: 12px;
    color: var(--gz-byline);
    letter-spacing: 0.04em;
    margin-top: 2px;
}

.gz-certs__foot {
    text-align: center;
    margin-top: 18px;
    padding-top: 14px;
    border-top: 1px dashed var(--gz-ink-mute);
    font-family: 'Playfair Display', serif;
    font-style: italic;
    font-size: 14.5px;
}

.gz-certs__foot a {
    border-bottom: 1px solid var(--gz-red);
    color: var(--gz-red);
    padding-bottom: 1px;
    font-weight: 700;
}

.gz-certs__foot a:hover {
    background: var(--gz-red);
    color: var(--gz-paper);
}

/* =========================================================
   SECTION: READING ROOM — blog teasers
   ========================================================= */
.gz-reading__grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 0;
    border-top: 3px solid var(--gz-ink);
    border-bottom: 3px solid var(--gz-ink);
}

.gz-reading__post {
    padding: 22px 24px;
    border-right: 1px solid var(--gz-ink-mute);
    border-bottom: 1px solid var(--gz-ink-mute);
}

.gz-reading__post:nth-child(2n) {
    border-right: none;
}

.gz-reading__post:nth-last-child(-n+2) {
    border-bottom: none;
}

.gz-reading__kicker {
    font-family: 'Playfair Display', serif;
    font-style: italic;
    color: var(--gz-red);
    letter-spacing: 0.14em;
    text-transform: uppercase;
    font-size: 11.5px;
    margin-bottom: 6px;
}

.gz-reading__title {
    font-family: 'Playfair Display', serif;
    font-weight: 900;
    text-transform: uppercase;
    font-size: 24px;
    line-height: 1.1;
    margin-bottom: 10px;
    letter-spacing: -0.005em;
}

.gz-reading__title a {
    border-bottom: 2px solid transparent;
    transition: border-color 0.2s;
}

.gz-reading__title a:hover {
    border-bottom-color: var(--gz-ink);
}

.gz-reading__excerpt {
    font-size: 15.5px;
    line-height: 1.55;
    margin-bottom: 12px;
    color: var(--gz-ink-soft);
}

.gz-reading__more {
    font-family: 'Playfair Display', serif;
    font-style: italic;
    font-size: 14px;
    color: var(--gz-red);
    border-bottom: 1px solid var(--gz-red);
    padding-bottom: 1px;
    font-weight: 700;
}

.gz-reading__more:hover {
    background: var(--gz-red);
    color: var(--gz-paper);
}

/* =========================================================
   SECTION: LOVE WALL
   ========================================================= */
.gz-love {
    border: 4px double var(--gz-ink);
    background: var(--gz-paper-2);
    padding: 40px 32px;
    text-align: center;
    position: relative;
}

.gz-love__inner {
    max-width: 720px;
    margin: 0 auto;
    position: relative;
}

.gz-love__big {
    font-family: 'Playfair Display', serif;
    font-weight: 900;
    font-size: 96px;
    line-height: 0.8;
    color: var(--gz-red);
    margin-bottom: 4px;
}

.gz-love__lede {
    font-family: 'Old Standard TT', serif;
    font-size: clamp(20px, 2.4vw, 26px);
    line-height: 1.4;
    font-style: italic;
    margin-bottom: 14px;
    color: var(--gz-ink);
}

.gz-love__sub {
    font-family: 'Old Standard TT', serif;
    font-size: 15px;
    color: var(--gz-ink-soft);
    margin-bottom: 22px;
    line-height: 1.5;
}

.gz-love__cta {
    display: inline-block;
    background: var(--gz-ink);
    color: var(--gz-paper);
    padding: 14px 28px;
    font-family: 'Playfair Display', serif;
    font-weight: 900;
    text-transform: uppercase;
    letter-spacing: 0.16em;
    font-size: 14px;
    border: 3px solid var(--gz-ink);
    transition: background 0.2s, color 0.2s;
}

.gz-love__cta:hover {
    background: var(--gz-paper);
    color: var(--gz-ink);
}

/* =========================================================
   SECTION: HACKATHON DISPATCH
   ========================================================= */
.gz-hack__grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 30px;
    border-top: 1px solid var(--gz-ink-mute);
    padding-top: 18px;
}

.gz-hack__story h3 {
    font-family: 'Playfair Display', serif;
    font-weight: 900;
    text-transform: uppercase;
    font-size: 22px;
    line-height: 1.1;
    margin-bottom: 8px;
}

.gz-hack__photo {
    height: 150px;
    margin-bottom: 10px;
    border: 1px solid var(--gz-ink);
    background:
        radial-gradient(rgba(0, 0, 0, 0.7) 1.1px, transparent 1.6px) 0 0 / 4px 4px,
        linear-gradient(135deg, #2a2a2a, #555);
}

.gz-hack__story:nth-child(2) .gz-hack__photo {
    background:
        radial-gradient(rgba(0, 0, 0, 0.7) 1.1px, transparent 1.6px) 0 0 / 4px 4px,
        linear-gradient(45deg, #1c1c1c 30%, #5e5e5e 70%);
}

.gz-hack__story:nth-child(3) .gz-hack__photo {
    background:
        radial-gradient(rgba(0, 0, 0, 0.7) 1.1px, transparent 1.6px) 0 0 / 4px 4px,
        linear-gradient(225deg, #2a2a2a 30%, #6e6e6e 70%);
}

.gz-hack__byline {
    font-family: 'Playfair Display', serif;
    font-style: italic;
    font-size: 12px;
    color: var(--gz-byline);
    margin-bottom: 8px;
}

.gz-hack__story p {
    font-size: 15px;
    line-height: 1.55;
}

.gz-hack__story p + p { margin-top: 8px; }

/* =========================================================
   SECTION: EDITORIAL
   ========================================================= */
.gz-editorial {
    border: 4px double var(--gz-ink);
    padding: 28px 32px;
    background: var(--gz-paper-2);
}

.gz-editorial__label {
    font-family: 'Playfair Display', serif;
    font-weight: 900;
    letter-spacing: 0.24em;
    text-transform: uppercase;
    text-align: center;
    font-size: 12px;
    border-bottom: 2px solid var(--gz-ink);
    padding-bottom: 8px;
    margin-bottom: 18px;
}

.gz-editorial__headline {
    font-family: 'Playfair Display', serif;
    font-weight: 900;
    text-transform: uppercase;
    font-size: clamp(24px, 3.4vw, 36px);
    line-height: 1.08;
    text-align: center;
    margin-bottom: 10px;
    max-width: 900px;
    margin-left: auto;
    margin-right: auto;
}

.gz-editorial__deck {
    font-family: 'Old Standard TT', serif;
    font-style: italic;
    font-size: 17px;
    text-align: center;
    margin: 0 auto 18px;
    color: var(--gz-ink-soft);
    max-width: 720px;
}

.gz-editorial__body {
    column-count: 2;
    column-gap: 32px;
    column-rule: 1px solid var(--gz-rule-soft);
    font-size: 16px;
    text-align: justify;
    hyphens: auto;
}

.gz-editorial__body p + p { margin-top: 10px; }

.gz-editorial__signoff {
    text-align: right;
    font-style: italic;
    font-family: 'Playfair Display', serif;
    margin-top: 18px;
    font-size: 15px;
}

.gz-editorial__signoff strong {
    font-style: normal;
    font-weight: 900;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    font-size: 13px;
    display: block;
    margin-top: 2px;
}

/* =========================================================
   SECTION: ALUMNI
   ========================================================= */
.gz-alumni__grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 28px;
}

.gz-alumni__card {
    border: 1px solid var(--gz-ink);
    padding: 22px 18px;
    background: var(--gz-paper);
    text-align: center;
    position: relative;
}

.gz-alumni__photo {
    width: 96px;
    height: 96px;
    border-radius: 50%;
    margin: 0 auto 14px;
    border: 3px solid var(--gz-ink);
    background:
        radial-gradient(rgba(0, 0, 0, 0.7) 1px, transparent 1.5px) 0 0 / 3px 3px,
        linear-gradient(135deg, #444, #777);
}

.gz-alumni__card:nth-child(2) .gz-alumni__photo {
    background:
        radial-gradient(rgba(0, 0, 0, 0.7) 1px, transparent 1.5px) 0 0 / 3px 3px,
        linear-gradient(45deg, #2a2a2a, #6a6a6a);
}

.gz-alumni__card:nth-child(3) .gz-alumni__photo {
    background:
        radial-gradient(rgba(0, 0, 0, 0.7) 1px, transparent 1.5px) 0 0 / 3px 3px,
        linear-gradient(225deg, #1f1f1f, #777);
}

.gz-alumni__name {
    font-family: 'Playfair Display', serif;
    font-weight: 900;
    font-size: 19px;
    margin-bottom: 4px;
}

.gz-alumni__role {
    font-style: italic;
    font-size: 13px;
    color: var(--gz-byline);
    margin-bottom: 12px;
    font-family: 'Playfair Display', serif;
}

.gz-alumni__quote {
    font-size: 14.5px;
    font-style: italic;
    border-top: 1px dashed var(--gz-ink-mute);
    padding-top: 10px;
    line-height: 1.5;
}

/* =========================================================
   SECTION: EVENTS
   ========================================================= */
.gz-events__list {
    border-top: 3px solid var(--gz-ink);
    border-bottom: 3px solid var(--gz-ink);
}

.gz-events__list li {
    display: grid;
    grid-template-columns: 130px 1fr auto;
    gap: 18px;
    padding: 16px 14px;
    border-bottom: 1px dashed var(--gz-ink-mute);
    align-items: center;
}

.gz-events__list li:last-child { border-bottom: none; }

.gz-events__date {
    font-family: 'Playfair Display', serif;
    font-weight: 900;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    font-size: 14px;
    color: var(--gz-red);
}

.gz-events__title {
    font-family: 'Playfair Display', serif;
    font-weight: 700;
    font-size: 17px;
    line-height: 1.3;
}

.gz-events__title em {
    font-weight: 400;
    font-style: italic;
    color: var(--gz-ink-soft);
    font-size: 14px;
    display: block;
    margin-top: 2px;
}

.gz-events__cta {
    display: inline-block;
    font-family: 'Playfair Display', serif;
    font-weight: 700;
    font-size: 11.5px;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    border: 2px solid var(--gz-ink);
    padding: 7px 14px;
    background: var(--gz-paper);
    color: var(--gz-ink);
    transition: background 0.2s, color 0.2s;
    white-space: nowrap;
}

.gz-events__cta:hover {
    background: var(--gz-ink);
    color: var(--gz-paper);
}

/* =========================================================
   SECTION: LETTERS
   ========================================================= */
.gz-letters__grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 28px;
}

.gz-letter {
    background: var(--gz-paper);
    border: 1px solid var(--gz-ink);
    padding: 22px 22px 18px;
    position: relative;
}

.gz-letter::before {
    content: '"';
    font-family: 'Playfair Display', serif;
    font-size: 78px;
    position: absolute;
    top: -2px;
    left: 12px;
    color: var(--gz-red);
    line-height: 1;
    font-weight: 900;
}

.gz-letter__body {
    font-style: italic;
    margin-top: 28px;
    margin-left: 20px;
    font-size: 14.5px;
    line-height: 1.6;
}

.gz-letter__sign {
    margin-top: 14px;
    font-family: 'Playfair Display', serif;
    font-weight: 900;
    font-size: 13.5px;
    letter-spacing: 0.06em;
    text-transform: uppercase;
}

.gz-letter__locality {
    display: block;
    font-style: italic;
    font-size: 12px;
    color: var(--gz-byline);
    font-weight: 400;
    text-transform: none;
    letter-spacing: 0;
    margin-top: 2px;
}

/* =========================================================
   SECTION: PHOTOS
   ========================================================= */
.gz-photos__grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 18px;
}

.gz-photo__img {
    height: 190px;
    background:
        radial-gradient(rgba(0, 0, 0, 0.7) 1px, transparent 1.5px) 0 0 / 3px 3px,
        linear-gradient(135deg, #222 30%, #666 70%);
    border: 1px solid var(--gz-ink);
    margin-bottom: 6px;
    position: relative;
}

.gz-photos__grid > .gz-photo:nth-child(2) .gz-photo__img {
    background:
        radial-gradient(rgba(0, 0, 0, 0.7) 1px, transparent 1.5px) 0 0 / 3px 3px,
        linear-gradient(45deg, #1c1c1c 30%, #5a5a5a 70%);
}

.gz-photos__grid > .gz-photo:nth-child(3) .gz-photo__img {
    background:
        radial-gradient(rgba(0, 0, 0, 0.7) 1px, transparent 1.5px) 0 0 / 3px 3px,
        linear-gradient(225deg, #1a1a1a 30%, #777 70%);
}

.gz-photos__grid > .gz-photo:nth-child(4) .gz-photo__img {
    background:
        radial-gradient(rgba(0, 0, 0, 0.7) 1px, transparent 1.5px) 0 0 / 3px 3px,
        linear-gradient(315deg, #2a2a2a 25%, #6c6c6c 75%);
}

.gz-photos__grid > .gz-photo:nth-child(5) .gz-photo__img {
    background:
        radial-gradient(rgba(0, 0, 0, 0.7) 1px, transparent 1.5px) 0 0 / 3px 3px,
        linear-gradient(180deg, #1a1a1a 30%, #5e5e5e 70%);
}

.gz-photos__grid > .gz-photo:nth-child(6) .gz-photo__img {
    background:
        radial-gradient(rgba(0, 0, 0, 0.7) 1px, transparent 1.5px) 0 0 / 3px 3px,
        linear-gradient(90deg, #222 30%, #6a6a6a 70%);
}

.gz-photo__cap {
    font-family: 'Playfair Display', serif;
    font-style: italic;
    font-size: 13px;
    color: var(--gz-ink-soft);
    border-top: 1px solid var(--gz-ink);
    padding-top: 5px;
    line-height: 1.4;
}

/* =========================================================
   SECTION: PUZZLE / CROSSWORD
   ========================================================= */
.gz-puzzle {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr);
    gap: 40px;
    align-items: start;
    border-top: 3px solid var(--gz-ink);
    border-bottom: 3px solid var(--gz-ink);
    padding: 24px 0;
}

.gz-crossword {
    display: grid;
    grid-template-columns: repeat(5, 52px);
    grid-template-rows: repeat(5, 52px);
    border: 3px solid var(--gz-ink);
    background: var(--gz-paper);
}

.gz-crossword__cell {
    border: 1px solid var(--gz-ink);
    background: var(--gz-paper);
    position: relative;
    display: grid;
    place-items: center;
    font-family: 'Playfair Display', serif;
    font-weight: 700;
    font-size: 22px;
    color: var(--gz-ink);
    letter-spacing: 0;
}

.gz-crossword__cell.is-solved {
    color: var(--gz-ink);
}

.gz-crossword__cell .gz-num {
    position: absolute;
    top: 2px;
    left: 4px;
    font-size: 9.5px;
    font-family: 'Old Standard TT', serif;
    font-weight: 700;
    color: var(--gz-red);
    line-height: 1;
}

.gz-clues h4 {
    font-family: 'Playfair Display', serif;
    font-weight: 900;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    font-size: 13px;
    border-bottom: 2px solid var(--gz-ink);
    margin: 0 0 10px;
    padding-bottom: 5px;
}

.gz-clues ol {
    padding-left: 20px;
    font-size: 14.5px;
    line-height: 1.65;
    margin-bottom: 16px;
    list-style: decimal;
}

.gz-clues li::marker {
    font-family: 'Playfair Display', serif;
    font-weight: 900;
    color: var(--gz-red);
}

.gz-clues__solution {
    font-size: 12px;
    font-style: italic;
    color: var(--gz-ink-mute);
    margin-top: 4px;
}

/* =========================================================
   SECTION: COMIC
   ========================================================= */
.gz-comic {
    border: 3px solid var(--gz-ink);
    background: var(--gz-paper);
    padding: 18px;
}

.gz-comic__title {
    font-family: 'Playfair Display', serif;
    font-weight: 900;
    text-transform: uppercase;
    letter-spacing: 0.18em;
    font-size: 14px;
    text-align: center;
    border-bottom: 2px solid var(--gz-ink);
    padding-bottom: 9px;
    margin-bottom: 14px;
}

.gz-comic__title em {
    font-style: italic;
    color: var(--gz-red);
    font-weight: 700;
    font-size: 12px;
    display: block;
    letter-spacing: 0.12em;
    margin-top: 3px;
}

.gz-comic__strip {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 10px;
}

.gz-comic__panel {
    border: 2px solid var(--gz-ink);
    background: var(--gz-paper-2);
    padding: 12px;
    position: relative;
    aspect-ratio: 1.05;
    overflow: hidden;
}

.gz-comic__panel-num {
    position: absolute;
    top: 6px;
    left: 8px;
    font-family: 'Playfair Display', serif;
    font-weight: 900;
    font-size: 11px;
    background: var(--gz-ink);
    color: var(--gz-paper);
    padding: 2px 7px;
    letter-spacing: 0.1em;
    z-index: 2;
}

.gz-comic__svg {
    width: 100%;
    height: calc(100% - 56px);
    display: block;
}

.gz-comic__caption {
    margin-top: 8px;
    background: var(--gz-paper);
    border: 1px solid var(--gz-ink);
    padding: 6px 8px;
    font-family: 'Old Standard TT', serif;
    font-size: 12px;
    line-height: 1.3;
    text-align: center;
}

/* =========================================================
   SECTION: CLASSIFIEDS
   ========================================================= */
.gz-classifieds {
    border-top: 3px solid var(--gz-ink);
    border-bottom: 3px solid var(--gz-ink);
    padding: 22px 4px;
    column-count: 4;
    column-gap: 26px;
    column-rule: 1px solid var(--gz-ink-mute);
    font-size: 13px;
    line-height: 1.5;
}

.gz-classifieds__ad {
    break-inside: avoid;
    margin-bottom: 14px;
    padding-bottom: 10px;
    border-bottom: 1px dashed var(--gz-ink-mute);
}

.gz-classifieds__ad:last-child { border-bottom: none; }

.gz-classifieds__ad strong {
    font-family: 'Playfair Display', serif;
    font-weight: 900;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    display: block;
    margin-bottom: 3px;
    font-size: 14.5px;
    line-height: 1.1;
}

.gz-classifieds__ad em {
    color: var(--gz-red);
    font-style: normal;
    font-weight: 700;
}

.gz-classifieds__ad a {
    border-bottom: 1px solid var(--gz-ink);
}

/* =========================================================
   SECTION: SUBSCRIBE
   ========================================================= */
.gz-subscribe {
    border: 3px dashed var(--gz-ink);
    background: var(--gz-paper);
    padding: 36px 28px;
    text-align: center;
    position: relative;
    margin-top: 40px;
}

.gz-subscribe::before {
    content: '✂';
    position: absolute;
    top: -18px;
    left: 28px;
    background: var(--gz-paper);
    padding: 0 10px;
    font-size: 28px;
    color: var(--gz-ink);
}

.gz-subscribe__kicker {
    font-family: 'Playfair Display', serif;
    font-weight: 900;
    letter-spacing: 0.22em;
    text-transform: uppercase;
    font-size: 12px;
    color: var(--gz-red);
    margin-bottom: 10px;
}

.gz-subscribe__title {
    font-family: 'Playfair Display', serif;
    font-weight: 900;
    font-size: clamp(28px, 4vw, 44px);
    text-transform: uppercase;
    margin-bottom: 14px;
    line-height: 1.05;
}

.gz-subscribe__deck {
    font-family: 'Old Standard TT', serif;
    font-style: italic;
    font-size: 17px;
    margin: 0 auto 22px;
    color: var(--gz-ink-soft);
    max-width: 600px;
}

.gz-subscribe__buttons {
    display: flex;
    justify-content: center;
    flex-wrap: wrap;
    gap: 12px;
}

.gz-subscribe__cta {
    display: inline-block;
    background: var(--gz-ink);
    color: var(--gz-paper);
    padding: 14px 26px;
    font-family: 'Playfair Display', serif;
    font-weight: 900;
    text-transform: uppercase;
    letter-spacing: 0.16em;
    font-size: 14px;
    border: 3px solid var(--gz-ink);
    transition: background 0.2s, color 0.2s;
}

.gz-subscribe__cta:hover {
    background: var(--gz-paper);
    color: var(--gz-ink);
}

.gz-subscribe__cta--ghost {
    background: var(--gz-paper);
    color: var(--gz-ink);
}

.gz-subscribe__cta--ghost:hover {
    background: var(--gz-ink);
    color: var(--gz-paper);
}

.gz-subscribe__small {
    font-size: 12px;
    color: var(--gz-ink-mute);
    margin-top: 16px;
    font-style: italic;
    font-family: 'Playfair Display', serif;
}

/* =========================================================
   COLOPHON
   ========================================================= */
.gz-colophon {
    text-align: center;
    font-size: 12px;
    font-family: 'Playfair Display', serif;
    font-style: italic;
    color: var(--gz-ink-mute);
    margin-top: 44px;
    padding-top: 16px;
    border-top: 4px double var(--gz-ink);
    line-height: 1.7;
}

.gz-colophon strong {
    font-style: normal;
    font-weight: 900;
    color: var(--gz-ink);
    text-transform: uppercase;
    letter-spacing: 0.1em;
}

/* =========================================================
   FOOTER
   ========================================================= */
.gz-footer {
    background: var(--gz-ink);
    color: var(--gz-paper);
    padding: 36px 24px;
    text-align: center;
    font-family: 'Playfair Display', serif;
    font-size: 14px;
    letter-spacing: 0.06em;
    margin-top: 44px;
}

.gz-footer__masthead {
    font-family: 'UnifrakturCook', 'Playfair Display', serif;
    font-size: 28px;
    margin-bottom: 8px;
    letter-spacing: 0.02em;
}

.gz-footer__tag {
    font-style: italic;
    font-size: 13px;
    opacity: 0.75;
    margin-bottom: 18px;
    font-family: 'Old Standard TT', serif;
    letter-spacing: 0.04em;
}

.gz-footer__links {
    display: flex;
    justify-content: center;
    gap: 26px;
    margin-bottom: 16px;
    flex-wrap: wrap;
    text-transform: uppercase;
    font-size: 12px;
    letter-spacing: 0.14em;
    font-weight: 700;
}

.gz-footer__links a {
    border-bottom: 1px solid transparent;
    padding-bottom: 2px;
    transition: border-color 0.2s, color 0.2s;
}

.gz-footer__links a:hover {
    color: var(--gz-red);
    border-color: var(--gz-red);
}

.gz-footer__copy {
    font-size: 12px;
    opacity: 0.6;
    font-style: italic;
}

/* =========================================================
   RESPONSIVE
   ========================================================= */
@media (max-width: 1024px) {
    .gz-roll__grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .gz-classifieds {
        column-count: 3;
    }

    .gz-certs__grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 880px) {
    .gz-lead__grid {
        grid-template-columns: 1fr;
    }

    .gz-sidebar {
        position: static;
    }

    .gz-lead__body {
        column-count: 2;
    }

    .gz-hack__grid {
        grid-template-columns: 1fr;
    }

    .gz-alumni__grid {
        grid-template-columns: 1fr;
    }

    .gz-letters__grid {
        grid-template-columns: 1fr;
    }

    .gz-photos__grid {
        grid-template-columns: repeat(2, 1fr);
    }

    .gz-puzzle {
        grid-template-columns: 1fr;
        gap: 24px;
    }

    .gz-comic__strip {
        grid-template-columns: 1fr;
    }

    .gz-classifieds {
        column-count: 2;
    }

    .gz-editorial__body {
        column-count: 1;
    }

    .gz-events__list li {
        grid-template-columns: 1fr;
        gap: 6px;
    }

    .gz-nav__menu {
        display: none;
    }

    .gz-editorial {
        padding: 22px 20px;
    }

    .gz-reading__grid {
        grid-template-columns: 1fr;
    }

    .gz-reading__post {
        border-right: none;
        border-bottom: 1px solid var(--gz-ink-mute);
    }

    .gz-reading__post:nth-last-child(-n+2) {
        border-bottom: 1px solid var(--gz-ink-mute);
    }

    .gz-reading__post:last-child {
        border-bottom: none;
    }

    .gz-love {
        padding: 30px 22px;
    }

    .gz-love__big {
        font-size: 76px;
    }
}

@media (max-width: 540px) {
    body.gazette { font-size: 16px; }

    .gz-lead__body {
        column-count: 1;
    }

    .gz-roll__grid {
        grid-template-columns: 1fr;
    }

    .gz-photos__grid {
        grid-template-columns: 1fr;
    }

    .gz-classifieds {
        column-count: 1;
    }

    .gz-crossword {
        grid-template-columns: repeat(5, 44px);
        grid-template-rows: repeat(5, 44px);
    }

    .gz-crossword__cell {
        font-size: 18px;
    }

    .gz-lead__headline {
        font-size: 32px;
    }

    .gz-masthead {
        padding: 28px 18px 10px;
    }

    .gz-masthead__title {
        font-size: 44px;
        letter-spacing: 0;
    }

    .gz-sec-head {
        font-size: 12px;
        letter-spacing: 0.16em;
        padding: 9px 12px;
    }

    .gz-page {
        padding: 0 16px 40px;
    }

    .gz-lead__photo {
        height: 220px;
    }

    .gz-subscribe {
        padding: 28px 18px;
    }

    .gz-subscribe__cta {
        padding: 12px 18px;
        font-size: 12.5px;
    }

    .gz-certs__grid {
        grid-template-columns: 1fr;
    }

    .gz-reading__title {
        font-size: 20px;
    }

    .gz-love__big {
        font-size: 64px;
    }
}

/* =========================================================
   PRINT — actually look like newspaper print on paper
   ========================================================= */
@media print {
    .gz-nav,
    .gz-subscribe,
    .gz-footer,
    .gz-events__cta { display: none; }

    body.gazette {
        background: #fff;
        color: #000;
        font-size: 11pt;
    }

    .gz-lead__photo,
    .gz-hack__photo,
    .gz-photo__img,
    .gz-alumni__photo {
        filter: grayscale(100%) contrast(1.2);
    }
}
