/* Tom Crombie-Evans — Ghost theme
   One typeface, two inks, one brand colour (Keswick Green).
   The brand colour comes from Ghost Admin's accent colour setting. */

:root {
    --ink: #0E0E0E;
    --quiet: #5F5F5F;
    --body-ink: #3A3A3A;
    --rule: #E4E4E4;
    --paper: #FFFFFF;
    --well: #EDEDED;
    --brand: var(--ghost-accent-color, #2D4A3A);
    --on-brand-quiet: rgba(255, 255, 255, 0.82);

    --font-body: 'Schibsted Grotesk', system-ui, -apple-system, sans-serif;
    --font-display: 'Schibsted Grotesk', system-ui, -apple-system, sans-serif;
    --display-weight: 500;
    --display-stretch: 100%;
    --display-tracking: -0.035em;
    --display-case: none;
    --title-weight: 600;

    --max: 1200px;
    --gutter: 24px;
}

.font-archivo {
    --font-body: 'Archivo', system-ui, sans-serif;
    --font-display: 'Archivo', system-ui, sans-serif;
    --display-weight: 800;
    --display-stretch: 125%;
    --display-tracking: -0.03em;
    --title-weight: 700;
}

.font-familjen {
    --font-body: 'Familjen Grotesk', system-ui, sans-serif;
    --font-display: 'Familjen Grotesk', system-ui, sans-serif;
    --display-weight: 700;
    --display-tracking: -0.045em;
}

.font-shoulders {
    --font-body: 'Hanken Grotesk', system-ui, sans-serif;
    --font-display: 'Big Shoulders', system-ui, sans-serif;
    --display-weight: 800;
    --display-tracking: -0.005em;
    --display-case: uppercase;
}

/* ---------- Base ---------- */

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

html { -webkit-text-size-adjust: 100%; }

body {
    margin: 0;
    background: var(--paper);
    color: var(--ink);
    font-family: var(--gh-font-body, var(--font-body));
    font-size: 17px;
    line-height: 1.5;
    -webkit-font-smoothing: antialiased;
}

img { max-width: 100%; height: auto; display: block; }

a { color: var(--ink); }
a:hover { color: var(--brand); }

:focus-visible { outline: 2px solid var(--brand); outline-offset: 3px; }

.skip-link {
    position: absolute;
    left: -9999px;
    top: 8px;
    background: var(--ink);
    color: var(--paper);
    padding: 10px 16px;
    z-index: 10;
}
.skip-link:focus { left: 8px; }

.site {
    max-width: var(--max);
    margin: 0 auto;
    padding: 0 var(--gutter);
    min-height: 100vh;
    display: flex;
    flex-direction: column;
}

.site-main { flex-grow: 1; }

.display {
    font-family: var(--gh-font-heading, var(--font-display));
    font-weight: var(--display-weight);
    font-stretch: var(--display-stretch);
    letter-spacing: var(--display-tracking);
    text-transform: var(--display-case);
}

/* ---------- Buttons ---------- */

.btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 44px;
    padding: 0 18px;
    border: 1px solid transparent;
    border-radius: 0;
    font: inherit;
    font-size: 16px;
    font-weight: 500;
    text-decoration: none;
    cursor: pointer;
    transition: background-color 0.15s ease, color 0.15s ease;
}
.btn-brand { background: var(--brand); border-color: var(--brand); color: #FFFFFF; }
.btn-brand:hover { background: var(--ink); border-color: var(--ink); color: #FFFFFF; }
.btn-dark { background: var(--ink); border-color: var(--ink); color: #FFFFFF; }
.btn-dark:hover { background: #000000; color: #FFFFFF; }

/* ---------- Header ---------- */

.site-header {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    align-items: center;
    gap: 16px;
    padding: 28px 0;
    border-bottom: 1px solid var(--rule);
}

.site-title {
    font-family: var(--gh-font-heading, var(--font-display));
    font-size: 24px;
    font-weight: 700;
    font-stretch: var(--display-stretch);
    letter-spacing: -0.03em;
    text-transform: var(--display-case);
    text-decoration: none;
    color: var(--ink);
}

.site-nav { display: flex; flex-wrap: wrap; align-items: center; gap: 12px 28px; }

.nav { display: flex; flex-wrap: wrap; gap: 4px 28px; margin: 0; padding: 0; list-style: none; font-size: 17px; }
.nav a { display: inline-block; padding: 10px 0; color: var(--quiet); text-decoration: none; border-bottom: 2px solid transparent; }
.nav a:hover { color: var(--ink); }
.nav .is-current a { color: var(--ink); font-weight: 500; border-bottom-color: var(--brand); }

/* ---------- Hero and page heads ---------- */

.hero { padding: 96px 0 88px; }

.hero-title {
    margin: 0;
    max-width: 1040px;
    font-family: var(--gh-font-heading, var(--font-display));
    font-size: clamp(40px, 6vw, 72px);
    font-weight: var(--display-weight);
    font-stretch: var(--display-stretch);
    letter-spacing: var(--display-tracking);
    text-transform: var(--display-case);
    line-height: 1.02;
}

.page-head { padding: 72px 0 56px; display: flex; flex-direction: column; gap: 20px; }
.page-head-split { flex-direction: row; flex-wrap: wrap; justify-content: space-between; align-items: flex-end; gap: 24px 32px; }

.page-title {
    margin: 0;
    font-family: var(--gh-font-heading, var(--font-display));
    font-size: clamp(40px, 6vw, 72px);
    font-weight: var(--display-weight);
    font-stretch: var(--display-stretch);
    letter-spacing: var(--display-tracking);
    text-transform: var(--display-case);
    line-height: 1;
}
.page-title-xl { font-size: clamp(48px, 8vw, 96px); line-height: 0.95; }

.page-intro { margin: 0; max-width: 420px; font-size: 17px; color: var(--quiet); }
.page-intro-lg { max-width: 480px; font-size: 21px; line-height: 1.45; color: var(--ink); }

/* ---------- Signup band ---------- */

.signup {
    margin: 0 0 96px;
    padding: clamp(28px, 5vw, 56px);
    background: var(--brand);
    color: #FFFFFF;
    display: flex;
    flex-wrap: wrap;
    gap: 32px 56px;
    justify-content: space-between;
    align-items: flex-end;
}
.post-template .signup, .tag-template .signup { margin-top: 96px; }

.signup-copy { flex: 1 1 380px; display: flex; flex-direction: column; gap: 14px; }

.signup-title {
    margin: 0;
    font-family: var(--gh-font-heading, var(--font-display));
    font-size: clamp(32px, 4vw, 52px);
    font-weight: var(--display-weight);
    font-stretch: var(--display-stretch);
    letter-spacing: var(--display-tracking);
    text-transform: var(--display-case);
    line-height: 1.02;
}

.signup-text { margin: 0; max-width: 440px; font-size: 17px; color: var(--on-brand-quiet); }

/* EmailOctopus inline form, restyled to sit in the green band.
   !important is needed because EmailOctopus injects its own stylesheet after ours. */
#subscribe .signup-embed { flex: 1 1 440px; min-width: 0; }

#subscribe .signup-embed [data-form],
#subscribe .signup-embed .form-container,
#subscribe .signup-embed .emailoctopus-form-wrapper {
    max-width: none !important;
    margin: 0 !important;
    padding: 0 !important;
    background: transparent !important;
    box-shadow: none !important;
    font-family: inherit !important;
}

#subscribe .signup-embed .emailoctopus-form { margin: 0 !important; }
#subscribe .signup-embed .main-form { display: flex !important; flex-wrap: wrap; align-items: stretch; row-gap: 8px; margin: 0 !important; }
#subscribe .signup-embed [eo-form-fields-container] { flex: 1 1 240px; min-width: 0; }
#subscribe .signup-embed .emailoctopus-form-row { margin: 0 !important; }
#subscribe .signup-embed .emailoctopus-form label { display: block; margin: 0 0 8px; color: #FFFFFF; font-family: inherit; font-size: 15px; font-weight: 600; }

#subscribe .signup-embed .form-control {
    width: 100% !important;
    height: 56px !important;
    margin: 0 !important;
    padding: 0 16px !important;
    border: 1px solid #FFFFFF !important;
    border-radius: 0 !important;
    background: #FFFFFF !important;
    color: var(--ink) !important;
    font-family: inherit !important;
    font-size: 17px !important;
    box-shadow: none !important;
}

#subscribe .signup-embed .btn,
#subscribe .signup-embed [type="submit"] {
    width: auto !important;
    height: 56px !important;
    margin: 0 !important;
    padding: 0 26px !important;
    border: 1px solid var(--ink) !important;
    border-radius: 0 !important;
    background: var(--ink) !important;
    color: #FFFFFF !important;
    font-family: inherit !important;
    font-size: 16px !important;
    font-weight: 500 !important;
    cursor: pointer;
}
#subscribe .signup-embed .btn:hover, #subscribe .signup-embed [type="submit"]:hover { background: #000000 !important; }

#subscribe .signup-embed .form-control:focus-visible,
#subscribe .signup-embed [type="submit"]:focus-visible { outline: 2px solid #FFFFFF !important; outline-offset: 2px; }

#subscribe .signup-embed .emailoctopus-form-row-hp { position: absolute !important; left: -9999px !important; }

#subscribe .signup-embed .emailoctopus-success-message,
#subscribe .signup-embed .emailoctopus-error-message { margin: 0 0 12px !important; color: #FFFFFF !important; font-family: inherit !important; font-size: 17px !important; }
#subscribe .signup-embed .emailoctopus-success-message:empty,
#subscribe .signup-embed .emailoctopus-error-message:empty { display: none; }

/* Hide the "Powered by EmailOctopus" badge */
#subscribe .signup-embed .mastfoot,
#subscribe .signup-embed [eo-block="powered-by"] { display: none !important; }

/* ---------- Writing index ---------- */

.index { display: flex; flex-direction: column; gap: 28px; }
.index-head { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: flex-end; gap: 20px; }
.index-title, .more-title { margin: 0; font-size: 17px; font-weight: 600; }

.filters { display: flex; flex-wrap: wrap; gap: 8px; }
.filter {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    min-height: 44px;
    padding: 0 18px;
    border: 1px solid var(--rule);
    color: var(--ink);
    font-size: 16px;
    text-decoration: none;
}
.filter:hover { border-color: var(--ink); color: var(--ink); }
.filter-count { color: var(--quiet); font-variant-numeric: tabular-nums; }
.filter.is-active { background: var(--ink); border-color: var(--ink); color: #FFFFFF; font-weight: 500; }
.filter.is-active .filter-count { color: #BDBDBD; }

.post-list { margin: 0; padding: 0; list-style: none; border-top: 1px solid var(--ink); }
.post-row { border-bottom: 1px solid var(--rule); }

.post-row-link {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    column-gap: 24px;
    row-gap: 12px;
    padding: 20px 0;
    color: var(--ink);
    text-decoration: none;
}
.post-row-link:hover { color: var(--ink); }
.post-row-link:hover .post-row-title { color: var(--brand); }

.post-row-thumb { width: 128px; height: 84px; flex-shrink: 0; background: var(--well); overflow: hidden; }
.post-row-thumb img { width: 100%; height: 100%; object-fit: cover; }

.post-row-num { width: 56px; flex-shrink: 0; font-size: 15px; color: var(--quiet); font-variant-numeric: tabular-nums; }

.post-row-main { flex: 999 1 320px; min-width: 0; display: flex; flex-direction: column; gap: 6px; }
.post-row-title { font-size: 26px; font-weight: var(--title-weight); letter-spacing: -0.015em; line-height: 1.2; transition: color 0.15s ease; }
.post-row-meta { font-size: 15px; color: var(--quiet); }
.post-row-date { flex: 1 0 120px; text-align: right; font-size: 15px; color: var(--quiet); font-variant-numeric: tabular-nums; }

.more { margin-top: 120px; display: flex; flex-direction: column; gap: 20px; }

/* Pagination */
.pagination { display: flex; justify-content: space-between; align-items: center; gap: 16px; padding: 32px 0 0; font-size: 15px; color: var(--quiet); }
.pagination a { display: inline-flex; align-items: center; min-height: 44px; color: var(--ink); text-decoration: none; }
.pagination a:hover { color: var(--brand); }

/* ---------- Article ---------- */

.article-head { padding: 72px 0 56px; display: flex; flex-direction: column; gap: 32px; border-bottom: 1px solid var(--ink); }

.article-meta { display: flex; flex-wrap: wrap; gap: 8px 20px; font-size: 15px; color: var(--quiet); font-variant-numeric: tabular-nums; }
.article-meta a { color: var(--quiet); text-decoration: none; }
.article-meta a:hover { color: var(--brand); }
.article-meta .back-link { display: inline-flex; align-items: center; gap: 6px; color: var(--ink); }

.article-title {
    margin: 0;
    max-width: 1000px;
    font-family: var(--gh-font-heading, var(--font-display));
    font-size: clamp(40px, 6vw, 76px);
    font-weight: var(--display-weight);
    font-stretch: var(--display-stretch);
    letter-spacing: var(--display-tracking);
    text-transform: var(--display-case);
    line-height: 1.02;
}

.article-standfirst { margin: 0; max-width: 760px; font-size: 24px; line-height: 1.4; color: var(--quiet); }

.article-image { margin: 56px 0 0; }
.article-image img { width: 100%; }
.article-image figcaption, .gh-content figcaption { margin-top: 12px; font-size: 15px; color: var(--quiet); }

/* ---------- Post content (Koenig editor output) ---------- */

.gh-content {
    display: grid;
    grid-template-columns:
        [full-start wide-start] minmax(0, 300px)
        [main-start] minmax(0, 680px)
        [main-end] minmax(0, 1fr)
        [wide-end full-end];
    row-gap: 24px;
    padding-top: 56px;
    font-size: 19px;
    line-height: 1.6;
}

.gh-content > * { grid-column: main; margin: 0; }
.gh-content > .kg-width-wide { grid-column: wide; }
.gh-content > .kg-width-full { grid-column: full; width: 100vw; margin-left: calc(50% - 50vw); }
.gh-content > .kg-width-full img { width: 100%; }

.gh-content > h2 { margin-top: 24px; font-size: 28px; font-weight: 600; letter-spacing: -0.02em; line-height: 1.2; }
.gh-content > h3 { margin-top: 16px; font-size: 22px; font-weight: 600; letter-spacing: -0.01em; line-height: 1.25; }
.gh-content > h2 + *, .gh-content > h3 + * { margin-top: -8px; }

.gh-content a { color: var(--brand); text-decoration-thickness: 1px; text-underline-offset: 3px; }
.gh-content a:hover { color: var(--ink); }

.gh-content ul, .gh-content ol { padding-left: 24px; }
.gh-content li + li { margin-top: 10px; }

.gh-content blockquote:not([class]) {
    margin: 16px 0;
    padding: 0;
    font-size: 30px;
    font-weight: 500;
    letter-spacing: -0.02em;
    line-height: 1.25;
}

.gh-content hr { width: 100%; height: 0; border: 0; border-top: 1px solid var(--rule); }

.gh-content code { font-size: 0.9em; background: var(--well); padding: 2px 5px; }
.gh-content pre { overflow-x: auto; padding: 20px; background: var(--ink); color: #FFFFFF; font-size: 15px; }
.gh-content pre code { background: none; padding: 0; }

.gh-content figure { margin: 16px 0; }
.gh-content .kg-image { margin: 0 auto; }

.gh-content table { display: block; overflow-x: auto; border-collapse: collapse; font-size: 16px; }
.gh-content th, .gh-content td { padding: 10px 16px 10px 0; border-bottom: 1px solid var(--rule); text-align: left; }

/* Gallery card */
.kg-gallery-container { display: flex; flex-direction: column; gap: 12px; }
.kg-gallery-row { display: flex; gap: 12px; }
.kg-gallery-image img { display: block; width: 100%; height: 100%; object-fit: cover; }

/* Photography page: everything runs wide */
.is-gallery { grid-template-columns: [full-start wide-start main-start] minmax(0, 1fr) [main-end wide-end full-end]; row-gap: 56px; border-top: 1px solid var(--ink); }
.is-gallery .kg-gallery-container, .is-gallery .kg-gallery-row { gap: 24px; }

/* Design project posts: steps as captioned gallery images */
.tag-hash-design .gh-content .kg-gallery-card figcaption,
.tag-hash-design .gh-content .kg-image-card figcaption { color: var(--body-ink); }

/* ---------- About ---------- */

.about { padding: 72px 0 0; display: flex; flex-wrap: wrap; gap: 56px; align-items: flex-start; }
.about-portrait { flex: 1 1 320px; max-width: 420px; margin: 0; }
.about-portrait img { width: 100%; aspect-ratio: 4 / 5; object-fit: cover; }
.about-portrait figcaption { margin-top: 12px; font-size: 15px; color: var(--quiet); }
.about-main { flex: 999 1 520px; min-width: 0; display: flex; flex-direction: column; gap: 28px; }
.about-lede { margin: 0; max-width: 640px; font-size: 26px; line-height: 1.4; letter-spacing: -0.01em; }
.about-content { display: block; padding-top: 0; max-width: 640px; }
.about-content > * + * { margin-top: 18px; }
.about-content > h2 { margin-top: 56px; padding-bottom: 16px; border-bottom: 1px solid var(--ink); font-size: 17px; letter-spacing: 0; }

/* ---------- Design collection ---------- */

.project-index .post-row-link { padding: 22px 0; align-items: baseline; }

.project { padding-top: 120px; display: flex; flex-direction: column; gap: 32px; }
.project-head { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: flex-end; gap: 16px; padding-bottom: 20px; border-bottom: 1px solid var(--ink); }
.project-title {
    margin: 0;
    font-family: var(--gh-font-heading, var(--font-display));
    font-size: clamp(36px, 5vw, 60px);
    font-weight: var(--display-weight);
    font-stretch: var(--display-stretch);
    letter-spacing: var(--display-tracking);
    text-transform: var(--display-case);
    line-height: 1;
}
.project-num { color: var(--brand); font-variant-numeric: tabular-nums; }
.project-meta { font-size: 15px; color: var(--quiet); }
.project-image img { width: 100%; aspect-ratio: 2 / 1; object-fit: cover; }
.project-summary { margin: 0; max-width: 760px; font-size: 22px; line-height: 1.5; }
.project-link { display: inline-flex; align-items: center; gap: 6px; min-height: 44px; align-self: flex-start; color: var(--brand); font-weight: 500; text-decoration: none; }
.project-link:hover { color: var(--ink); }

/* ---------- Error ---------- */
.error { padding-bottom: 120px; }

/* ---------- Footer ---------- */

.site-footer {
    margin-top: 120px;
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    gap: 16px;
    padding: 28px 0 40px;
    border-top: 1px solid var(--rule);
    font-size: 15px;
    color: var(--quiet);
}
.site-footer .nav { font-size: 15px; gap: 4px 24px; }
.site-footer .nav a { padding: 0; color: var(--quiet); border: 0; text-decoration: underline; text-underline-offset: 3px; }
.site-footer .nav a:hover { color: var(--brand); }
.signup + .site-footer, .site-main > .signup:last-child { margin-bottom: 0; }

/* ---------- Small screens ---------- */

@media (max-width: 900px) {
    .gh-content { grid-template-columns: [full-start wide-start main-start] minmax(0, 1fr) [main-end wide-end full-end]; }
    .hero { padding: 64px 0 56px; }
}

@media (max-width: 600px) {
    .post-row-thumb { width: 96px; height: 64px; }
    .post-row-title { font-size: 22px; }
    .post-row-date { flex-basis: 100%; text-align: left; }
    #subscribe .signup-embed .btn, #subscribe .signup-embed [type="submit"] { width: 100% !important; }
}
