/* Public routes share the home's editorial palette, with a quieter reading scale. */
.public-page {
    --canvas: #090a0c;
    --canvas-raised: #111318;
    --panel: #171a20;
    --panel-raised: #1c2027;
    --ink: #f4f0e8;
    --ink-soft: #d0cbc1;
    --muted: #a0a2a7;
    --line: rgba(244, 240, 232, .15);
    --line-strong: rgba(244, 240, 232, .34);
    --page-control-line: #71747d;
    --gutter: clamp(1.2rem, 5vw, 5rem);
    background: var(--canvas);
}

.public-page .container { width: min(100%, 1600px); }
.public-page .header-inner { min-height: 4.5rem; }
.public-page main { background: var(--canvas); }
.public-page .button { border-radius: 0; min-height: 3.35rem; font-size: .81rem; }
.public-page .button--ink { color: #090a0c; }
.public-page .button--ink:hover { color: var(--accent-ink); }
.public-page .text-link { font-size: .82rem; }
.public-page .eyebrow { font-size: .65rem; }
.public-page .section { padding-block: clamp(3.5rem, 6vw, 6rem); border-bottom: 1px solid var(--line); }
.public-page .section--compact { padding-block: clamp(2.5rem, 4.5vw, 4.5rem); }
.public-page .section-heading { margin-bottom: clamp(2rem, 3.5vw, 3rem); }
.public-page .section-heading h2 { max-width: 23ch; font-size: clamp(1.9rem, 3.3vw, 3rem); line-height: 1.08; }
.public-page h1[id], .public-page form[id], .public-reading[id] { scroll-margin-top: 7rem; }

/* A small route index gives the opening a frame without overwhelming the content. */
.public-intro { padding-block: 0; }
.public-intro__topline { display: flex; align-items: center; justify-content: space-between; gap: 1rem; min-height: 4.3rem; padding-block: .85rem; border-bottom: 1px solid var(--line); }
.public-intro__topline .eyebrow { color: var(--accent); }
.public-index-link { display: inline-flex; align-items: center; gap: .65rem; min-height: 2.75rem; color: var(--ink-soft); font-family: var(--mono); font-size: .64rem; line-height: 1.6; letter-spacing: .025em; }
.public-index-link > span, .public-index-link .icon { flex: 0 0 auto; color: var(--blue); }
.public-index-link > span { font-family: var(--sans); font-size: 1.15rem; }
.public-index-link:hover { color: var(--ink); text-decoration: underline; text-decoration-color: var(--accent); text-underline-offset: 5px; }
.public-intro .page-intro-grid { grid-template-columns: minmax(0, 1.3fr) minmax(0, .7fr); gap: 2rem clamp(2rem, 7vw, 7rem); padding-block: clamp(2.8rem, 5vw, 5rem); }
.public-intro h1 { max-width: 15ch; font-size: clamp(3rem, 5.6vw, 5.75rem); line-height: .99; letter-spacing: -.07em; overflow-wrap: anywhere; }
.public-intro h1 .type-serif { color: var(--accent); }
.public-intro .title-dot { color: var(--blue); }
.page-about .public-intro h1 { max-width: 19ch; font-size: clamp(2.55rem, 4.5vw, 4.5rem); line-height: 1.08; }
.public-intro .page-intro-side { max-width: 30rem; padding-bottom: .15rem; }
.public-intro .page-intro-side > p { color: var(--ink-soft); font-size: .96rem; line-height: 1.8; }
.public-intro .page-intro-side > .eyebrow { color: var(--blue); font-size: .65rem; }
.public-intro .page-intro-side .text-link { margin-top: 1.15rem; }
.public-section-index { display: flex; flex-wrap: wrap; align-items: stretch; gap: 0 1.75rem; padding-block: .5rem; border-top: 1px solid var(--line); }
.public-section-index a { display: inline-flex; align-items: center; gap: .6rem; min-height: 2.9rem; color: var(--ink-soft); font-size: .79rem; }
.public-section-index a > span { color: var(--blue); font-family: var(--mono); font-size: .6rem; }
.public-section-index a:hover { color: var(--accent); }
.public-list-heading { display: flex; align-items: flex-end; justify-content: space-between; gap: 1rem 2rem; margin-bottom: 1.4rem; }
.public-list-heading > .eyebrow { align-self: center; color: var(--blue); }
.public-list-heading h2 { margin-top: .45rem; font-size: clamp(1.3rem, 2vw, 1.75rem); letter-spacing: -.035em; }
.public-list-heading .eyebrow { color: var(--blue); }

/* Profile: CMS prose and actual profile details each have their own reading rhythm. */
.public-intro .public-profile-intro .intro-name { color: var(--ink); font-size: 1.35rem; }
.public-intro .public-profile-intro .intro-location { color: var(--muted); font-size: .84rem; }
.public-intro .public-profile-intro .availability { margin-block: 1rem .5rem; font-size: .65rem; }
.public-profile .about-detail-grid { grid-template-columns: minmax(0, .65fr) minmax(0, 1.35fr); gap: 2.5rem clamp(2rem, 7vw, 7rem); }
.public-profile .about-detail-grid--links-only { grid-template-columns: minmax(0, 1fr); }
.public-profile-sidebar { min-width: 0; padding-top: .2rem; }
.public-profile-sidebar > .eyebrow, .public-profile-copy > .eyebrow { color: var(--blue); }
.public-profile-sidebar .stats { width: 100%; gap: 1.35rem; margin-bottom: .3rem; }
.public-profile-sidebar .stat { padding-bottom: 1.2rem; border-bottom: 1px solid var(--line); }
.public-profile-sidebar .stat dd { font-size: clamp(1.65rem, 3vw, 2.5rem); letter-spacing: -.065em; }
.public-profile-sidebar .stat dt { max-width: 30ch; color: var(--muted); font-size: .64rem; }
.public-profile-copy { min-width: 0; max-width: 48rem; }
.public-profile-copy > .eyebrow { margin-bottom: 1.25rem; }
.public-profile-copy .prose--lead { font-size: clamp(1.03rem, 1.55vw, 1.2rem); line-height: 1.9; }
.public-profile-copy .prose h2 { font-size: 1.5em; }
.public-profile-copy .prose h3 { font-size: 1.2em; }
.public-page .experience-item { grid-template-columns: minmax(0, .65fr) minmax(0, 1.35fr); gap: 2rem clamp(2rem, 7vw, 7rem); padding-block: 2rem; }
.public-page .experience-content h3 { font-size: clamp(1.35rem, 2.2vw, 2rem); }
.public-page .experience-content > p, .public-page .experience-content .prose { max-width: 48rem; color: var(--ink-soft); font-size: .92rem; }
.public-page .experience-period { font-size: .73rem; }
.public-page .experience-kind, .public-page .experience-organization { font-size: .66rem; }

/* Explicit stacks are readable lists, not a measurement of proficiency. */
.tech-stack { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); border-top: 1px solid var(--line); border-left: 1px solid var(--line); }
.tech-stack__group { position: relative; min-width: 0; padding: clamp(1.3rem, 2.6vw, 2.4rem); border-right: 1px solid var(--line); border-bottom: 1px solid var(--line); background: var(--canvas-raised); }
.tech-stack__group::before { position: absolute; top: -1px; left: -1px; width: 2.5rem; height: 2px; background: var(--accent); content: ""; }
.tech-stack__group:nth-child(2)::before { background: var(--blue); }
.tech-stack__group:nth-child(3)::before { background: var(--yellow); }
.tech-stack__topline { display: flex; align-items: baseline; justify-content: space-between; gap: .8rem; }
.tech-stack__topline .eyebrow { color: var(--muted); font-size: .61rem; letter-spacing: .065em; }
.tech-stack__number { color: var(--blue); font-family: var(--serif); font-size: 1.6rem; font-style: italic; line-height: 1; }
.tech-stack__group h3 { margin-top: 2rem; color: var(--ink); font-size: clamp(1.6rem, 2.3vw, 2.1rem); letter-spacing: -.05em; }
.tech-stack__list { display: grid; gap: 0; margin: 1.5rem 0 0; padding: 0; list-style: none; }
.tech-stack__list li { display: flex; align-items: baseline; gap: .75rem; padding-block: .6rem; border-top: 1px solid var(--line); color: var(--ink-soft); font-size: .88rem; line-height: 1.55; }
.tech-stack__list li::before { flex: 0 0 auto; color: var(--accent); font-family: var(--mono); font-size: .68rem; content: "+"; }
.tech-stack__group:nth-child(2) .tech-stack__list li::before { color: var(--blue); }
.tech-stack__group:nth-child(3) .tech-stack__list li::before { color: var(--yellow); }
.toolkit-notes { margin-top: 3rem; }
.toolkit-notes__heading { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: .7rem 2rem; padding-bottom: 1.1rem; }
.toolkit-notes__heading .eyebrow { color: var(--blue); }
.toolkit-notes__heading h3 { font-size: 1.05rem; letter-spacing: -.025em; }
.toolkit-notes__list { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0 2rem; margin: 0; padding: 0; list-style: none; }
.toolkit-note { display: grid; grid-template-columns: 2.1rem minmax(0, 1fr); align-items: start; gap: .9rem; min-width: 0; padding-block: 1.1rem; border-top: 1px solid var(--line); }
.toolkit-note__icon, .toolkit-note__initial { width: 2.1rem; height: 2.1rem; }
.toolkit-note__icon { object-fit: contain; }
.toolkit-note__initial { display: grid; place-items: center; border: 1px solid var(--line); color: var(--blue); font-family: var(--mono); font-size: .8rem; }
.toolkit-note h4 { margin: 0; color: var(--ink); font-size: .91rem; font-weight: 500; line-height: 1.5; }
.toolkit-note p { margin-top: .4rem; color: var(--ink-soft); font-size: .78rem; line-height: 1.75; }
.toolkit-note .toolkit-note__category { color: var(--muted); font-family: var(--mono); font-size: .6rem; }

/* Services use a paired editorial grid, with deliverables kept close to the offer. */
.public-services .service-list--detailed { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1px; border: 1px solid var(--line); background: var(--line); }
.public-services .service-card { grid-template-columns: 2rem minmax(0, 1fr); gap: .75rem; min-width: 0; padding: clamp(1.3rem, 2.6vw, 2.5rem); border: 0; background: var(--canvas-raised); }
.public-services .service-number { justify-content: flex-start; width: auto; min-height: 1.8rem; padding-top: .25rem; border: 0; color: var(--blue); font-size: .67rem; }
.public-services .service-card-main { grid-template-columns: minmax(0, 1fr); align-content: start; gap: 1rem; }
.public-services .service-card h3 { font-size: clamp(1.4rem, 2.1vw, 1.9rem); line-height: 1.15; }
.public-services .service-card h3 a { display: flex; justify-content: space-between; gap: 1rem; }
.public-services .service-card h3 .icon { margin-top: .2rem; }
.public-services .service-summary, .public-services .service-card--detailed .prose { color: var(--ink-soft); font-size: .92rem; line-height: 1.8; }
.public-services .service-card--detailed .prose, .public-services .service-card--detailed .deliverables, .public-services .service-price { grid-column: 1; }
.public-services .service-card .prose h2 { font-size: 1.4em; }
.public-services .service-card .prose h3 { font-size: 1.2em; }
.public-services .deliverables { gap: .55rem; margin-top: .1rem; color: var(--ink-soft); font-size: .86rem; }
.public-services .service-price { margin-top: .3rem; padding-top: 1rem; border-top: 1px solid var(--line); color: var(--ink); font-size: .72rem; }

/* Project discovery works as an ordinary GET form at every screen size. */
.public-work-filters { display: grid; grid-template-columns: minmax(0, 1.3fr) minmax(12rem, .8fr) auto; align-items: start; gap: 1rem; padding: 1.35rem; border: 1px solid var(--line); background: var(--canvas-raised); }
.public-page .filter-field { min-width: 0; }
.public-page .filter-field label { color: var(--ink-soft); font-size: .68rem; }
.public-search-control { position: relative; }
.public-search-control > .icon { position: absolute; top: 1.05rem; left: .9rem; z-index: 1; color: var(--blue); pointer-events: none; }
.public-page .public-search-control input { padding-left: 2.65rem; }
.public-filter-actions { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem .8rem; padding-top: 1.55rem; }
.public-filter-actions .button { white-space: nowrap; }
.public-page .filter-clear { min-height: 3.35rem; color: var(--ink-soft); font-size: .79rem; }
.public-page .filter-clear:hover { color: var(--accent); }
.public-page .results-bar { align-items: baseline; gap: .65rem 1.5rem; padding-block: 1.2rem 2rem; color: var(--muted); font-size: .66rem; line-height: 1.8; overflow-wrap: anywhere; }
.public-page .results-category { color: var(--blue); }
.public-work-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: clamp(2.5rem, 4vw, 4rem) clamp(1.25rem, 3vw, 3rem); }
.public-work-grid .project-card { padding-bottom: 1.4rem; border-bottom: 1px solid var(--line); }
.public-work-grid .project-image-link { aspect-ratio: 16 / 11; transition: border-color 180ms ease; }
.public-work-grid .project-image-grid { inset: .7rem; }
.public-work-grid .project-card:focus-within .project-image-link, .public-work-grid .project-image-link:hover { border-color: var(--accent); }
.public-work-grid .project-card-content { padding-top: 1.15rem; }
.public-work-grid .project-card h3 { font-size: clamp(1.45rem, 2.4vw, 2.1rem); line-height: 1.15; }
.public-work-grid .project-card-content > p { max-width: 52ch; color: var(--ink-soft); font-size: .9rem; line-height: 1.8; }
.public-page .card-meta { font-size: .63rem; }
.public-page .tag-list { gap: .4rem; margin-top: 1.1rem; }
.public-page .tag-list li { padding: .25rem .5rem; font-size: .6rem; }
.public-page .pagination { margin-top: 2.5rem; }
.public-page .pagination-page { min-width: 2.8rem; min-height: 2.8rem; font-size: .7rem; }
.public-page .pagination-direction { min-height: 2.8rem; font-size: .8rem; }
.public-page .pagination-page.is-current { background: var(--blue); color: var(--canvas); }
.public-empty { display: grid; grid-template-columns: 5rem minmax(0, 1fr); align-items: start; gap: 2rem; padding: clamp(2rem, 4vw, 4rem); border: 1px solid var(--line); background: var(--canvas-raised); text-align: left; }
.public-empty .empty-symbol { display: grid; place-items: center; min-height: 5rem; border: 1px solid var(--line-strong); color: var(--blue); font-size: 1.4rem; }
.public-empty .eyebrow { color: var(--accent); }
.public-empty h2 { max-width: 24ch; margin-block: .8rem; font-size: clamp(1.6rem, 2.7vw, 2.35rem); line-height: 1.15; }
.public-empty p:not(.eyebrow) { max-width: 46ch; color: var(--ink-soft); font-size: .94rem; line-height: 1.8; }

/* Enquiries remain native forms; the surrounding frame makes each step legible. */
.public-contact .contact-grid { grid-template-columns: minmax(0, .7fr) minmax(0, 1.3fr); gap: 2.5rem clamp(2rem, 6vw, 6rem); }
.public-contact-sidebar { min-width: 0; margin-top: 1rem; padding-left: 1.35rem; border-left: 1px solid var(--line-strong); }
.public-contact-sidebar::before { position: absolute; top: 0; left: -1px; width: 2px; height: 2rem; background: var(--accent); content: ""; }
.public-contact-sidebar > h2 { max-width: 20ch; font-size: clamp(1.6rem, 2.35vw, 2.2rem); line-height: 1.15; }
.public-contact-sidebar .contact-details { display: grid; gap: 1.3rem; }
.public-contact-sidebar .contact-detail { min-width: 0; padding-top: .85rem; border-top: 1px solid var(--line); }
.public-contact-sidebar .contact-detail > .eyebrow { color: var(--blue); font-size: .64rem; }
.public-contact-sidebar .contact-email { min-height: 2.75rem; font-size: clamp(.97rem, 1.4vw, 1.2rem); }
.public-contact-sidebar .contact-detail > p { color: var(--ink-soft); }
.public-contact-sidebar .availability { font-size: .65rem; }
.public-brief-guide { margin-top: 1.8rem; }
.public-brief-guide h3 { color: var(--ink); font-size: .89rem; letter-spacing: 0; }
.public-brief-guide ul { display: grid; gap: .55rem; margin: .8rem 0 0; padding: 0; list-style: none; }
.public-brief-guide li { display: flex; align-items: baseline; gap: .75rem; color: var(--ink-soft); font-size: .83rem; }
.public-brief-guide li > span { color: var(--blue); font-family: var(--mono); font-size: .6rem; }
.public-form-panel { padding: clamp(1.3rem, 3vw, 2.6rem); border: 1px solid var(--line-strong); background: var(--canvas-raised); }
.public-form-heading { display: flex; align-items: center; justify-content: space-between; gap: 1rem; margin-bottom: 1.3rem; padding-bottom: 1rem; border-bottom: 1px solid var(--line); }
.public-form-heading .eyebrow { color: var(--blue); }
.public-form-heading .icon { color: var(--accent); }
.public-page .form-required-note { margin-bottom: 1.5rem; font-size: .77rem; }
.public-page .enquiry-form fieldset { margin-bottom: 2rem; }
.public-page .enquiry-form legend { margin-bottom: 1.1rem; padding-bottom: .8rem; font-size: 1.03rem; }
.public-page .form-step { color: var(--blue); font-size: .66rem; }
.public-page .form-grid { gap: 1.15rem 1rem; }
.public-page .form-field label { color: var(--ink); font-size: .81rem; }
.public-page .optional-label { color: var(--muted); font-size: .7rem; }
.public-page .form-field input, .public-page .form-field textarea, .public-page .filter-field input, .public-page .filter-field select { min-height: 3.35rem; border: 1px solid var(--page-control-line); border-radius: 0; background: var(--panel); color: var(--ink); font-size: 1rem; line-height: 1.55; color-scheme: dark; }
.public-page .form-field textarea { min-height: 10rem; }
.public-page .form-field input::placeholder, .public-page .form-field textarea::placeholder, .public-page .filter-field input::placeholder { color: #a5a6aa; }
.public-page .form-field input:hover, .public-page .form-field textarea:hover, .public-page .filter-field input:hover, .public-page .filter-field select:hover { border-color: var(--ink-soft); }
.public-page .form-field input:focus, .public-page .form-field textarea:focus, .public-page .filter-field input:focus, .public-page .filter-field select:focus { border-color: var(--blue); background: var(--panel-raised); outline: 2px solid var(--blue); outline-offset: 3px; }
.public-page .form-field input:-webkit-autofill { -webkit-box-shadow: 0 0 0 1000px var(--panel) inset; -webkit-text-fill-color: var(--ink); caret-color: var(--ink); }
.public-page .form-field [aria-invalid="true"], .public-page .filter-field [aria-invalid="true"] { border-color: var(--error); }
.public-page .form-field [aria-invalid="true"]:focus, .public-page .filter-field [aria-invalid="true"]:focus { outline-color: var(--error); }
.public-page .field-hint { color: var(--muted); font-size: .77rem; line-height: 1.75; }
.public-page .field-error { color: #ffb4b4; font-size: .81rem; }
.public-page .checkbox-label { gap: .8rem; min-height: 2.75rem; color: var(--ink-soft); font-size: .8rem; }
.public-page .checkbox-label input { width: 1.25rem; height: 1.25rem; margin-top: .08rem; }
.public-page .checkbox-label input[aria-invalid="true"] { outline: 2px solid var(--error); outline-offset: 3px; }
.public-page .checkbox-label a { color: var(--ink); text-decoration-color: var(--accent); }
.public-page .form-submit-row { padding-top: 1.3rem; border-top: 1px solid var(--line); }
.public-page .form-submit-note { max-width: 29ch; font-size: .77rem; }
.public-page .form-status { padding: 1rem 1.1rem; font-size: .88rem; overflow-wrap: anywhere; }
.public-page .form-status--error { color: #ffd0d0; }
.public-page .form-status--success { color: var(--ink); }

/* Journal: one opening note, then a compact index. Image-free entries stay complete. */
.public-reading-pick { display: flex; align-items: flex-start; justify-content: space-between; gap: 1rem; margin-top: .7rem; padding-block: .2rem 1rem; border-bottom: 1px solid var(--line-strong); color: var(--ink); font-size: clamp(1.15rem, 1.65vw, 1.5rem); line-height: 1.4; letter-spacing: -.03em; }
.public-reading-pick .icon { margin-top: .25rem; color: var(--accent); }
.public-reading-pick:hover { border-color: var(--accent); color: var(--accent); }
.public-intro-note { max-width: 34rem; margin-top: 1.2rem; color: var(--muted); font-size: .78rem; line-height: 1.75; }
.public-journal .results-bar { padding-top: 0; }
.public-journal-grid { gap: 2.5rem 1.6rem; }
.public-journal-grid .post-card:first-child { grid-column: 1 / -1; padding-bottom: 1.5rem; }
.public-journal-grid .post-card:first-child:has(.post-image-link) { display: grid; grid-template-columns: minmax(0, 1.15fr) minmax(0, .85fr); gap: clamp(1.5rem, 3.5vw, 3.5rem); }
.public-journal-grid .post-card:first-child .post-card-content { max-width: 55rem; padding-block: .5rem 1rem; }
.public-journal-grid .post-card:first-child .post-image-link { aspect-ratio: 16 / 10; }
.public-journal-grid .post-card:first-child h3 { font-size: clamp(1.6rem, 2.8vw, 2.65rem); line-height: 1.15; }
.public-page .post-card h3 { font-size: clamp(1.25rem, 1.8vw, 1.6rem); line-height: 1.2; }
.public-page .post-card-content > p { color: var(--ink-soft); font-size: .9rem; line-height: 1.8; }
.public-page .post-date { font-size: .66rem; }
.public-page .post-card:focus-within .post-image-link { border-color: var(--accent); }
.public-related-posts { gap: 2rem; }

/* Article headers can breathe; the body stays at a comfortable, bounded measure. */
.public-article-header { padding-block: 1.5rem clamp(2.5rem, 4vw, 4rem); border-bottom: 0; }
.public-article-header .breadcrumbs { margin-bottom: clamp(2rem, 4vw, 3.5rem); padding-bottom: 1rem; border-bottom: 1px solid var(--line); font-size: .65rem; }
.public-article-heading { display: grid; grid-template-columns: minmax(0, 1.4fr) minmax(0, .6fr); align-items: end; gap: 2rem clamp(2rem, 6vw, 6rem); }
.public-article-heading > div { min-width: 0; }
.public-article-heading .eyebrow { margin-bottom: 1rem; color: var(--accent); }
.public-page .public-article-heading .entry-title { max-width: 22ch; font-size: clamp(2.3rem, 4.5vw, 4.65rem); line-height: 1.08; letter-spacing: -.055em; overflow-wrap: anywhere; }
.public-article-heading .entry-summary { max-width: 55ch; margin-top: 1.3rem; color: var(--ink-soft); font-size: clamp(1rem, 1.4vw, 1.13rem); line-height: 1.85; }
.public-article-heading__side { padding-left: 1.35rem; border-left: 1px solid var(--line-strong); }
.public-article-heading__side:empty { display: none; }
.public-article-heading__side .article-meta { display: grid; gap: .65rem; margin-top: 0; color: var(--ink-soft); font-size: .68rem; }
.public-article-heading__side .public-index-link { margin-top: 1rem; }
.public-article-heading__side .article-share { margin-top: 1rem; }
.public-entry-cover { max-width: none; aspect-ratio: 16 / 9; border-color: var(--line-strong); }
.public-entry-cover img { transform: none; }
.public-reading-grid { display: grid; grid-template-columns: minmax(0, .55fr) minmax(0, 1.45fr); align-items: start; gap: 2rem clamp(2rem, 6vw, 6rem); }
.public-reading-rail { position: sticky; top: 7rem; padding-top: .3rem; }
.public-reading-rail .eyebrow { margin-bottom: .7rem; color: var(--blue); }
.public-reading-copy { min-width: 0; width: min(100%, 48rem); }
.public-reading-copy .prose--article { color: var(--ink-soft); font-size: clamp(1rem, 1.35vw, 1.125rem); line-height: 1.95; }
.public-reading-copy .prose h2 { font-size: 1.6em; line-height: 1.25; }
.public-reading-copy .prose h3 { font-size: 1.3em; line-height: 1.3; }
.public-reading-copy .prose li::marker { color: var(--blue); }
.public-reading-copy .prose blockquote { padding-block: .3rem; color: var(--ink-soft); font-size: 1.15em; line-height: 1.7; }
.public-reading-copy .prose pre { border: 1px solid var(--line); }
.public-reading-copy .prose pre, .public-reading-copy .prose table { overscroll-behavior-inline: contain; }
.public-article-end { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 1rem 2rem; padding-block: 1.3rem 2rem; }

/* Shared closing sections keep the same hierarchy as the rest of the public routes. */
.public-page .testimonial { padding: clamp(1.3rem, 2.5vw, 2.2rem); background: var(--canvas); }
.public-page .testimonial blockquote { color: var(--ink-soft); font-size: clamp(1rem, 1.4vw, 1.2rem); line-height: 1.8; }
.public-page .testimonial blockquote .prose { font-size: inherit; line-height: inherit; }
.public-page .testimonial figcaption span { font-size: .65rem; }
.public-page .faq-split { grid-template-columns: minmax(0, .7fr) minmax(0, 1.3fr); gap: 2rem clamp(2rem, 6vw, 6rem); }
.public-page .faq-item summary { min-height: 4.5rem; padding-block: 1.25rem; color: var(--ink); font-size: .96rem; }
.public-page .faq-answer { color: var(--ink-soft); font-size: .91rem; }
.public-page .faq-answer .prose { color: inherit; font-size: inherit; }
.public-page .project-cta { padding-block: clamp(3rem, 5.5vw, 5rem); border-top: 0; }
.public-page .cta-inner { grid-template-columns: minmax(0, 1.3fr) minmax(0, .7fr); gap: 2rem clamp(2rem, 6vw, 6rem); }
.public-page .cta-inner h2 { max-width: 18ch; font-size: clamp(2.2rem, 3.9vw, 3.8rem); line-height: 1.05; }
.public-page .cta-inner h2 .type-serif { color: var(--accent); }
.public-page .cta-side { justify-self: start; max-width: 30rem; }
.public-page .cta-side p { color: var(--ink-soft); font-size: .92rem; line-height: 1.8; }

@media (max-width: 1120px) {
    .public-intro .page-intro-grid { grid-template-columns: minmax(0, 1.2fr) minmax(0, .8fr); column-gap: 3rem; }
    .public-work-filters { grid-template-columns: minmax(0, 1.3fr) minmax(0, 1fr); }
    .public-filter-actions { grid-column: 1 / -1; padding-top: 0; }
    .toolkit-notes__list, .public-journal-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .public-article-heading { grid-template-columns: minmax(0, 1.4fr) minmax(0, .6fr); gap: 2rem; }
}

@media (max-width: 900px) {
    .public-intro .page-intro-grid { grid-template-columns: minmax(0, 1fr); gap: 1.8rem; }
    .public-intro h1 { max-width: 17ch; font-size: clamp(3rem, 7.5vw, 4.5rem); }
    .public-intro .page-intro-side { max-width: 40rem; }
    .public-profile .about-detail-grid, .public-page .experience-item { grid-template-columns: minmax(0, .7fr) minmax(0, 1.3fr); column-gap: 2rem; }
    .public-profile .about-detail-grid--links-only { grid-template-columns: minmax(0, 1fr); }
    .tech-stack { grid-template-columns: minmax(0, 1fr); }
    .tech-stack__group { display: grid; grid-template-columns: minmax(0, .65fr) minmax(0, 1.35fr); gap: 0 2rem; }
    .tech-stack__topline { grid-column: 1; align-self: start; }
    .tech-stack__group h3 { grid-column: 1; align-self: start; margin-top: 1rem; }
    .tech-stack__list { grid-column: 2; grid-row: 1 / 3; margin-top: 0; }
    .public-services .service-card { grid-template-columns: minmax(0, 1fr); gap: .75rem; }
    .public-contact .contact-grid { grid-template-columns: minmax(0, 1fr); gap: 2rem; }
    .public-contact-sidebar { position: relative; top: auto; margin-top: 0; }
    .public-contact-sidebar .contact-details { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1.2rem 2rem; }
    .public-contact-sidebar .contact-details > .availability { grid-column: 1 / -1; }
    .public-page .faq-split, .public-page .cta-inner { grid-template-columns: minmax(0, 1fr); gap: 2rem; }
    .public-page .cta-side { max-width: 38rem; }
    .public-article-heading { grid-template-columns: minmax(0, 1fr); gap: 1.5rem; }
    .public-article-heading__side { padding: .8rem 0 0; border-left: 0; border-top: 1px solid var(--line); }
    .public-article-heading__side .article-meta { display: flex; flex-wrap: wrap; gap: .6rem 1.5rem; }
    .public-article-heading__side .public-index-link { margin-top: .5rem; }
    .public-reading-grid { grid-template-columns: minmax(0, 1fr); }
    .public-reading-rail { display: none; }
    .public-reading-copy { margin-inline: auto; }
}

@media (max-width: 820px) {
    .public-journal-grid .post-card:first-child:has(.post-image-link) { grid-template-columns: minmax(0, 1fr); gap: 1rem; }
    .public-page .public-related-posts { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 620px) {
    .public-page { --gutter: 1.15rem; }
    .public-page .section { padding-block: 3rem; }
    .public-page .section--compact { padding-block: 2.25rem; }
    .public-intro__topline { align-items: flex-start; flex-direction: column; justify-content: center; gap: .2rem; min-height: 5.5rem; }
    .public-intro__topline .public-index-link { min-height: 2.3rem; }
    .public-intro .page-intro-grid { padding-block: 2.5rem; }
    .public-intro h1 { max-width: 100%; font-size: clamp(2.55rem, 11vw, 3.65rem); line-height: 1.03; }
    .page-about .public-intro h1 { max-width: 100%; font-size: clamp(2.3rem, 9vw, 3.4rem); }
    .public-intro .page-intro-side > p { font-size: .94rem; }
    .public-section-index { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 .75rem; }
    .public-section-index a { font-size: .75rem; }
    .public-list-heading { align-items: flex-start; flex-direction: column; gap: .5rem; }
    .public-list-heading > .eyebrow { align-self: flex-start; }
    .public-profile .about-detail-grid { grid-template-columns: minmax(0, 1fr); gap: 2.5rem; }
    .public-profile-sidebar .stats { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem; }
    .public-profile-sidebar .button { width: 100%; }
    .public-page .experience-item { grid-template-columns: minmax(0, 1fr); gap: 1rem; padding-block: 1.6rem; }
    .tech-stack__group { display: block; padding: 1.35rem; }
    .tech-stack__group h3 { margin-top: 1.5rem; }
    .tech-stack__list { margin-top: 1.3rem; }
    .toolkit-notes { margin-top: 2rem; }
    .toolkit-notes__list { grid-template-columns: minmax(0, 1fr); }
    .public-services .service-list--detailed { grid-template-columns: minmax(0, 1fr); }
    .public-services .service-card { grid-template-columns: 1.7rem minmax(0, 1fr); gap: .6rem; padding: 1.25rem; }
    .public-work-filters { grid-template-columns: minmax(0, 1fr); padding: 1.1rem; }
    .public-filter-actions { grid-column: auto; gap: .4rem .75rem; }
    .public-filter-actions .button { flex: 1 1 auto; }
    .public-work-grid, .public-journal-grid, .public-page .public-related-posts { grid-template-columns: minmax(0, 1fr); gap: 2.2rem; }
    .public-work-grid .project-image-link { aspect-ratio: 16 / 11; }
    .public-work-grid .project-card h3 { font-size: 1.5rem; }
    .public-page .results-bar { padding-bottom: 1.5rem; }
    .public-empty { grid-template-columns: minmax(0, 1fr); gap: 1.25rem; padding: 1.5rem; }
    .public-empty .empty-symbol { width: 3.7rem; min-height: 3.7rem; font-size: 1.1rem; }
    .public-empty h2 { font-size: 1.65rem; }
    .public-empty .button { width: 100%; }
    .public-contact-sidebar { padding-left: 1rem; }
    .public-contact-sidebar .contact-details { grid-template-columns: minmax(0, 1fr); gap: 1.1rem; }
    .public-form-panel { padding: 1.15rem; }
    .public-page .form-grid { grid-template-columns: minmax(0, 1fr); }
    .public-page .form-submit-row { align-items: stretch; gap: .8rem; }
    .public-page .form-submit-note { max-width: none; }
    .public-page .checkbox-label { font-size: .79rem; }
    .public-journal-grid .post-card:first-child { padding-bottom: .5rem; }
    .public-journal-grid .post-card:first-child h3 { font-size: 1.65rem; }
    .public-article-header { padding-block: 1rem 2rem; }
    .public-article-header .breadcrumbs { gap: .4rem; font-size: .61rem; }
    .public-page .public-article-heading .entry-title { max-width: 100%; font-size: clamp(2.05rem, 8.5vw, 3rem); line-height: 1.12; }
    .public-entry-cover { aspect-ratio: 3 / 2; }
    .public-reading-copy .prose--article { font-size: 1rem; line-height: 1.9; }
    .public-reading-copy .prose pre { padding: 1rem; }
    .public-page .project-cta { padding-block: 3rem; }
    .public-page .cta-side .button { width: 100%; }
}

@media (prefers-reduced-motion: reduce) {
    .public-page .reveal-pending, .tech-stack .reveal-pending, .toolkit-notes .reveal-pending { opacity: 1; transform: none; }
    .public-work-grid .project-image-link { transition: none; }
}

@media print {
    .public-page { --canvas: #fff; --canvas-raised: #fff; --panel: #fff; --ink: #111; --ink-soft: #222; --muted: #444; --line: #ccc; --line-strong: #999; --blue: #222; --accent: #222; }
    .public-page .container { width: 100%; padding-inline: 0; }
    .public-intro__topline .public-index-link, .public-section-index, .public-work-filters, .public-contact-sidebar, .public-form-panel, .public-reading-rail, .public-article-heading__side .public-index-link, .public-article-end { display: none; }
    .public-page .section, .public-page .page-intro { padding-block: 1.5rem; }
    .public-intro .page-intro-grid { padding-block: 1rem; }
    .public-page .reveal-pending { opacity: 1; transform: none; }
    .public-reading-grid { display: block; }
    .public-reading-copy { width: 100%; }
    .tech-stack__group, .toolkit-note, .public-services .service-card, .public-page .post-card, .public-page .experience-item { break-inside: avoid; }
}
