@import url('https://fonts.googleapis.com/css2?family=Cormorant+Garamond:ital,wght@0,400;0,500;0,600;1,500;1,600&display=swap');

/* =========================================================
   LAB LAYER
   This file deliberately sits on top of Amelia's portfolio
   design system in base.css. The palette, Nunito body type,
   blurred header, spacing, buttons and soft shadows remain.
   The lab adds a denser, document-oriented academic grammar.
   ========================================================= */

:root {
    --font-serif: 'Cormorant Garamond', Georgia, 'Times New Roman', serif;
    --paper: #f8f8f8;
    --paper-deep: #f2f2f1;
    --ink-soft: #4d4d4d;
    --rule: rgba(31,31,31,.14);
    --rule-strong: rgba(31,31,31,.34);
}

.lab-header {
    border-bottom: 1px solid rgba(0,0,0,.035);
}

.lab-nav {
    max-width: 78rem;
}

.lab-logo {
    gap: .7rem;
}

.lab-logo span {
    font-family: var(--font-mono);
    font-size: .68rem;
    font-weight: 400;
    letter-spacing: 1.4px;
    color: var(--gray);
    text-transform: uppercase;
}

.lab-kicker,
.micro-label {
    font-family: var(--font-mono);
    font-size: .66rem;
    font-weight: 400;
    line-height: 1.5;
    letter-spacing: 1.45px;
    color: var(--gray);
    text-transform: uppercase;
}

.academic-grid {
    display: grid;
    grid-template-columns: 190px minmax(0, 1fr);
    gap: 3.5rem;
}

.lab-masthead {
    padding: 8.5rem 0 7rem;
}

.lab-index-rail,
.section-rail,
.report-citation-block,
.report-toc {
    min-width: 0;
}

.index-code,
.section-number,
.report-number {
    display: block;
    margin-bottom: 1.25rem;
    font: 400 .7rem/1.2 var(--font-mono);
    letter-spacing: 1.5px;
    color: var(--gray);
}

.index-metadata {
    display: grid;
    gap: 1rem;
}

.index-metadata div {
    padding-top: .8rem;
    border-top: 1px solid var(--rule);
}

.index-metadata dt,
.report-citation-block dt {
    margin-bottom: .2rem;
    font: 400 .62rem/1.3 var(--font-mono);
    letter-spacing: 1px;
    color: var(--gray);
    text-transform: uppercase;
}

.index-metadata dd,
.report-citation-block dd {
    margin: 0;
    font-size: .78rem;
    font-weight: 300;
    line-height: 1.55;
    color: var(--ink-soft);
}

.status-mark {
    display: inline-block;
    width: 6px;
    height: 6px;
    margin-right: .35rem;
    border-radius: 50%;
    background: #545454;
}

.masthead-copy {
    max-width: 820px;
}

.masthead-copy h1,
.document-heading h1,
.report-title-block h1 {
    font-family: var(--font-serif);
    font-weight: 500;
    letter-spacing: -.025em;
    color: var(--black);
}

.masthead-copy h1 {
    max-width: 760px;
    margin: .8rem 0 1.65rem;
    font-size: clamp(4.2rem, 8.2vw, 7.6rem);
    line-height: .82;
}

.masthead-abstract {
    max-width: 760px;
    font-size: 1.03rem;
    font-weight: 300;
    line-height: 1.92;
    color: var(--ink-soft);
}

.citation-line {
    margin-top: 2.2rem;
    padding-top: 1rem;
    border-top: 1px solid var(--rule);
    font: 400 .68rem/1.5 var(--font-mono);
    color: var(--gray);
}

.citation-line span {
    color: var(--black);
}

.academic-section {
    padding: 5.5rem 0;
    border-top: 1px solid var(--rule);
}

.compact-section {
    padding-top: 3rem;
}

.final-section {
    padding-bottom: 8rem;
}

.section-rail h3 {
    max-width: 140px;
    line-height: 1.6;
}

.rail-muted p {
    margin: .55rem 0 0;
    font-size: .72rem;
    font-weight: 300;
    line-height: 1.5;
    color: var(--gray);
}

.academic-content {
    min-width: 0;
}

/* Dense register / table language */
.register-table {
    border-top: 1px solid var(--rule-strong);
}

.register-head,
.register-row {
    display: grid;
    grid-template-columns: 86px 175px minmax(0, 1fr) 90px;
    gap: 1.2rem;
    align-items: baseline;
}

.register-head {
    padding: .7rem 0;
    border-bottom: 1px solid var(--rule);
    font: 400 .62rem/1.3 var(--font-mono);
    letter-spacing: 1px;
    color: var(--gray);
    text-transform: uppercase;
}

.register-row {
    padding: 1.35rem 0 1.45rem;
    border-bottom: 1px solid var(--rule);
}

.register-row > span,
.register-row > em {
    font: 400 .67rem/1.4 var(--font-mono);
    color: var(--gray);
    font-style: normal;
}

.register-row > strong {
    font-size: .92rem;
    font-weight: 400;
}

.register-row > p {
    font-size: .9rem;
    font-weight: 300;
    line-height: 1.7;
    color: var(--ink-soft);
}

.experiment-register-row {
    position: relative;
    display: grid;
    grid-template-columns: 90px minmax(0,1fr) 190px 28px;
    gap: 1.5rem;
    align-items: center;
    padding: 2rem 0;
    border-top: 1px solid var(--rule-strong);
    border-bottom: 1px solid var(--rule);
    transition: padding .2s ease, background .2s ease;
}

.experiment-register-row:hover {
    padding-left: .8rem;
    padding-right: .8rem;
    background: rgba(255,255,255,.42);
}

.experiment-code,
.register-arrow {
    font: 400 .68rem var(--font-mono);
    color: var(--gray);
}

.experiment-register-row h2 {
    margin: .35rem 0 .6rem;
    font-family: var(--font-serif);
    font-size: 2rem;
    font-weight: 500;
}

.experiment-register-row p {
    max-width: 640px;
    font-size: .9rem;
    font-weight: 300;
    line-height: 1.7;
    color: var(--ink-soft);
}

.experiment-register-row pre {
    justify-self: end;
    margin: 0;
    font: 400 10px/.92 var(--font-mono);
    color: #666;
}

.registry-note {
    max-width: 720px;
    margin-top: 1rem;
    font-size: .76rem;
    font-weight: 300;
    line-height: 1.65;
    color: var(--gray);
}

/* Reports */
.report-list {
    border-top: 1px solid var(--rule-strong);
}

.report-row {
    display: grid;
    grid-template-columns: 90px minmax(0,1fr) 120px;
    gap: 1.5rem;
    padding: 1.7rem 0;
    border-bottom: 1px solid var(--rule);
    transition: padding .2s ease;
}

.report-row:hover {
    padding-left: .65rem;
}

.report-id {
    font: 400 .7rem/1.5 var(--font-mono);
    color: var(--gray);
}

.report-row h2 {
    margin: .28rem 0 .48rem;
    font-family: var(--font-serif);
    font-size: 1.72rem;
    font-weight: 500;
}

.report-row p {
    max-width: 660px;
    font-size: .87rem;
    font-weight: 300;
    line-height: 1.65;
    color: var(--gray);
}

.report-meta {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: .3rem;
    font: 400 .64rem/1.5 var(--font-mono);
    color: var(--gray);
}

.academic-link,
.back-link,
.experiment-report-link {
    display: inline-block;
    margin-top: 1.4rem;
    font: 400 .73rem/1.5 var(--font-mono);
    color: var(--gray);
    transition: color .2s ease;
}

.academic-link:hover,
.back-link:hover,
.experiment-report-link:hover {
    color: var(--black);
}

.two-column-prose {
    display: grid;
    grid-template-columns: minmax(0, 1.2fr) minmax(280px, .8fr);
    gap: 3rem;
}

.two-column-prose h2 {
    margin-bottom: .8rem;
    font-family: var(--font-serif);
    font-size: 2.1rem;
    font-weight: 500;
}

.two-column-prose p {
    font-size: .94rem;
    font-weight: 300;
    line-height: 1.8;
    color: var(--ink-soft);
}

.method-note {
    padding: 1.35rem;
    border-top: 1px solid var(--rule-strong);
    border-bottom: 1px solid var(--rule);
}

.method-note p {
    margin-top: .7rem;
    font-size: .82rem;
}

/* Document index pages */
.document-masthead {
    padding: 7rem 0 4.5rem;
}

.document-heading h1 {
    margin: .6rem 0 1rem;
    font-size: clamp(3.8rem, 7vw, 6rem);
    line-height: .9;
}

.document-heading > p:last-child {
    max-width: 730px;
    font-size: 1rem;
    font-weight: 300;
    line-height: 1.8;
    color: var(--gray);
}

.rail-definition {
    margin-bottom: .85rem;
}

.rail-definition > span {
    display: block;
    font: 400 .64rem var(--font-mono);
    color: var(--black);
}

.report-table-head {
    display: grid;
    grid-template-columns: 90px minmax(0,1fr) 150px 120px;
    gap: 1.5rem;
    padding: .7rem 0;
    border-top: 1px solid var(--rule-strong);
    border-bottom: 1px solid var(--rule);
    font: 400 .62rem var(--font-mono);
    letter-spacing: 1px;
    color: var(--gray);
    text-transform: uppercase;
}

.report-list.indexed {
    border-top: 0;
}

.report-list.indexed .report-row {
    grid-template-columns: 90px minmax(0,1fr) 150px 120px;
}

.report-type {
    display: flex;
    flex-direction: column;
    gap: .25rem;
    font: 400 .64rem/1.45 var(--font-mono);
    color: var(--gray);
}

.report-type em {
    font-style: normal;
    color: var(--black);
}

.keyword-line {
    display: flex;
    flex-wrap: wrap;
    gap: .35rem;
    margin-top: .7rem;
}

.keyword-line span {
    padding: .12rem .38rem;
    border: 1px solid var(--rule);
    border-radius: 999px;
    font: 400 .58rem/1.4 var(--font-mono);
    color: var(--gray);
}

/* Research */
.question-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0,1fr));
    border-top: 1px solid var(--rule-strong);
    border-left: 1px solid var(--rule);
}

.question-grid article {
    min-height: 230px;
    padding: 1.45rem;
    border-right: 1px solid var(--rule);
    border-bottom: 1px solid var(--rule);
}

.question-grid article > span,
.method-table > div > span {
    font: 400 .64rem var(--font-mono);
    color: var(--gray);
}

.question-grid h2 {
    margin: 2.4rem 0 .7rem;
    font-family: var(--font-serif);
    font-size: 1.6rem;
    font-weight: 500;
}

.question-grid p,
.method-table p {
    font-size: .86rem;
    font-weight: 300;
    line-height: 1.7;
    color: var(--gray);
}

.method-table {
    border-top: 1px solid var(--rule-strong);
}

.method-table > div {
    display: grid;
    grid-template-columns: 75px 190px minmax(0,1fr);
    gap: 1.25rem;
    padding: 1.25rem 0;
    border-bottom: 1px solid var(--rule);
}

.method-table strong {
    font-size: .9rem;
    font-weight: 400;
}

/* Experiments index */
.experiment-catalog-row {
    display: grid;
    grid-template-columns: 90px minmax(0,1fr) 90px 70px;
    gap: 1.5rem;
    align-items: center;
    padding: 1.55rem 0;
    border-top: 1px solid var(--rule);
}

.experiment-catalog-row:last-child {
    border-bottom: 1px solid var(--rule);
}

.experiment-catalog-row > span,
.experiment-catalog-row > em,
.experiment-catalog-row > b {
    font: 400 .65rem/1.4 var(--font-mono);
    color: var(--gray);
    font-style: normal;
}

.experiment-catalog-row > b {
    color: var(--black);
    font-weight: 400;
}

.experiment-catalog-row h2 {
    margin: 0 0 .3rem;
    font-family: var(--font-serif);
    font-size: 1.55rem;
    font-weight: 500;
}

.experiment-catalog-row p {
    font-size: .84rem;
    font-weight: 300;
    color: var(--gray);
}

.disabled-row {
    opacity: .48;
}

/* Technical report reading view */
.technical-report {
    padding: 6.8rem 0 7rem;
}

.report-header {
    max-width: 78rem;
}

.report-header-grid {
    display: grid;
    grid-template-columns: 190px minmax(0,1fr);
    gap: 3.5rem;
}

.report-citation-block {
    padding-top: .3rem;
}

.report-citation-block .back-link {
    margin: 0 0 2.2rem;
}

.report-number {
    color: var(--black);
    font-size: .82rem;
}

.report-citation-block dl {
    display: grid;
    gap: .85rem;
}

.report-citation-block dl > div {
    padding-top: .65rem;
    border-top: 1px solid var(--rule);
}

.report-title-block {
    max-width: 870px;
}

.report-title-block h1 {
    margin: .7rem 0 1.4rem;
    font-size: clamp(3.5rem, 6.5vw, 6.2rem);
    line-height: .88;
}

.report-abstract {
    max-width: 790px;
    font-size: 1.08rem;
    font-weight: 300;
    line-height: 1.82;
    color: var(--ink-soft);
}

.report-keywords {
    margin-top: 1.4rem;
}

.report-reading-grid {
    max-width: 78rem;
    display: grid;
    grid-template-columns: 190px minmax(0, 760px);
    gap: 3.5rem;
    padding-top: 4.5rem;
}

.report-toc {
    position: sticky;
    top: 8.5rem;
    align-self: start;
    max-height: calc(100vh - 10rem);
    overflow: auto;
}

.report-toc .toc {
    margin-top: .8rem;
}

.report-toc ul {
    list-style: none;
    margin: 0;
    padding: 0;
}

.report-toc ul ul {
    margin-left: .7rem;
    padding-left: .7rem;
    border-left: 1px solid var(--rule);
}

.report-toc a {
    display: block;
    padding: .3rem 0;
    font-size: .68rem;
    font-weight: 300;
    line-height: 1.45;
    color: var(--gray);
}

.report-toc a:hover {
    color: var(--black);
}

.post-body {
    max-width: 760px;
}

.post-body > p:first-child {
    font-size: 1.12rem;
    line-height: 1.9;
    color: var(--black);
}

.post-body p,
.post-body li {
    font-size: .98rem;
    font-weight: 300;
    line-height: 1.95;
    color: #303030;
}

.post-body p,
.post-body ul,
.post-body ol,
.post-body pre,
.post-body table,
.post-body blockquote {
    margin-bottom: 1.55rem;
}

.post-body h2 {
    margin: 3.4rem 0 1rem;
    padding-top: .8rem;
    border-top: 1px solid var(--rule);
    font-family: var(--font-serif);
    font-size: 2.2rem;
    font-weight: 500;
}

.post-body h3 {
    margin: 2.4rem 0 .8rem;
    font-size: .73rem;
    font-weight: 400;
    letter-spacing: 1.4px;
    text-transform: uppercase;
    color: var(--gray);
}

.post-body h4 {
    margin: 1.8rem 0 .7rem;
    font-size: 1rem;
    font-weight: 400;
}

.post-body code {
    font-family: var(--font-mono);
    font-size: .88em;
}

.post-body pre {
    overflow: auto;
    padding: 1.25rem;
    border-radius: 10px;
    background: #f3f3f3;
    box-shadow: var(--neu-inset);
    font: 400 .78rem/1.55 var(--font-mono);
}

.post-body ul,
.post-body ol {
    padding-left: 1.3rem;
}

.post-body table {
    width: 100%;
    border-collapse: collapse;
    font-size: .82rem;
}

.post-body th,
.post-body td {
    padding: .7rem .65rem;
    border-top: 1px solid var(--rule);
    text-align: left;
    vertical-align: top;
}

.post-body th {
    font: 400 .65rem var(--font-mono);
    letter-spacing: .8px;
    color: var(--gray);
    text-transform: uppercase;
}

.post-body blockquote {
    margin-left: 0;
    padding: .2rem 0 .2rem 1.15rem;
    border-left: 2px solid var(--rule-strong);
    color: var(--gray);
}

/* =========================================================
   ASCII VISION
   ========================================================= */

.ascii-experiment {
    position: relative;
    min-height: calc(100vh - 94px);
    overflow: hidden;
}

.ascii-intro {
    min-height: calc(100vh - 94px);
    display: grid;
    place-items: center;
    padding: 3rem 1.5rem;
    transition: opacity .65s ease, transform .65s ease, visibility .65s ease;
}

.ascii-intro-inner {
    width: min(790px,100%);
    text-align: center;
}

.ascii-intro h1 {
    margin: .8rem 0 1rem;
    font-family: var(--font-serif);
    font-size: clamp(4.2rem, 9vw, 7.5rem);
    font-weight: 500;
    line-height: .85;
    letter-spacing: -.03em;
}

.ascii-intro p:not(.lab-kicker) {
    max-width: 650px;
    margin: 0 auto 2rem;
    color: var(--gray);
    font-weight: 300;
    font-size: .98rem;
    line-height: 1.85;
}

.ascii-upload {
    cursor: pointer;
}

.glyph-sample {
    margin-top: 2rem;
    color: #969696;
    font: 400 .9rem var(--font-mono);
    letter-spacing: .2em;
}

.experiment-report-link {
    display: block;
    margin-top: 1.3rem;
}

.ascii-result {
    position: absolute;
    inset: 0;
    opacity: 0;
    visibility: hidden;
    background: #f8f8f8;
    transition: opacity .65s ease;
    overflow: hidden;
}

.ascii-result.visible {
    opacity: 1;
    visibility: visible;
}

.ascii-experiment.has-result .ascii-intro {
    opacity: 0;
    visibility: hidden;
    transform: scale(1.01);
    pointer-events: none;
}

.ascii-frame {
    position: absolute;
    inset: 0;
    display: grid;
    place-items: center;
    overflow: hidden;
    padding: 3.4rem 2rem 2.9rem;
}

.ascii-result pre {
    margin: 0;
    width: max-content;
    max-width: none;
    white-space: pre;
    color: #151515;
    font-family: Consolas, "Courier New", monospace;
    font-variant-ligatures: none;
    letter-spacing: 0;
    text-rendering: geometricPrecision;
    transform-origin: center center;
    will-change: contents;
}

.ascii-floating-bar {
    position: fixed;
    top: .85rem;
    right: .85rem;
    z-index: 20;
    display: flex;
    gap: .48rem;
    padding: .4rem;
    border-radius: 14px;
    background: rgba(248,248,248,.80);
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);
    box-shadow: var(--neu-shadow-sm);
}

.ascii-meta {
    position: fixed;
    left: .85rem;
    bottom: .85rem;
    z-index: 20;
    max-width: calc(100vw - 1.7rem);
    padding: .48rem .68rem;
    border-radius: 10px;
    background: rgba(248,248,248,.80);
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
    color: var(--gray);
    font: 400 .62rem/1.45 var(--font-mono);
}

.ascii-loading {
    position: absolute;
    inset: 0;
    z-index: 30;
    display: grid;
    place-items: center;
    background: rgba(248,248,248,.72);
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);
    opacity: 0;
    visibility: hidden;
    transition: opacity .2s ease;
}

.ascii-loading.visible {
    opacity: 1;
    visibility: visible;
}

.ascii-loading > div {
    padding: 1.25rem 1.5rem;
    border-radius: 16px;
    box-shadow: var(--neu-shadow);
    background: #f8f8f8;
    text-align: center;
}

.ascii-loading span,
.ascii-loading small {
    display: block;
}

.ascii-loading span {
    font-weight: 300;
}

.ascii-loading small {
    margin-top: .35rem;
    color: var(--gray);
    font-size: .7rem;
}

body.ascii-mode {
    overflow: hidden;
}

body.ascii-mode .header,
body.ascii-mode .footer {
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
}

body.ascii-mode main {
    position: fixed;
    inset: 0;
    z-index: 1400;
    background: #f8f8f8;
}

body.ascii-mode .ascii-experiment {
    min-height: 100vh;
    height: 100vh;
}

body.ascii-mode .ascii-result {
    position: fixed;
    inset: 0;
    z-index: 1500;
}

/* Footer */
.lab-footer .footer-content > div:first-child {
    display: grid;
    gap: .18rem;
}

.lab-footer strong {
    font-size: .82rem;
    font-weight: 300;
    color: var(--black);
}

.lab-footer span {
    font-size: .7rem;
    color: var(--gray);
}

/* Responsive */
@media (max-width: 900px) {
    .academic-grid,
    .report-header-grid,
    .report-reading-grid {
        grid-template-columns: 145px minmax(0,1fr);
        gap: 2rem;
    }

    .register-head,
    .register-row {
        grid-template-columns: 70px 150px minmax(0,1fr) 75px;
        gap: .9rem;
    }

    .experiment-register-row {
        grid-template-columns: 75px minmax(0,1fr) 140px 24px;
        gap: 1rem;
    }
}

@media (max-width: 760px) {
    .academic-grid,
    .report-header-grid,
    .report-reading-grid {
        grid-template-columns: 1fr;
        gap: 1.5rem;
    }

    .lab-masthead {
        padding: 5.5rem 0 4rem;
    }

    .lab-index-rail,
    .section-rail,
    .report-citation-block {
        display: none;
    }

    .masthead-copy h1 {
        font-size: clamp(3.5rem, 18vw, 5.6rem);
    }

    .academic-section {
        padding: 3.8rem 0;
    }

    .register-head {
        display: none;
    }

    .register-row {
        grid-template-columns: 70px minmax(0,1fr);
    }

    .register-row > p,
    .register-row > em {
        grid-column: 2;
    }

    .experiment-register-row {
        grid-template-columns: 70px minmax(0,1fr) 24px;
    }

    .experiment-register-row pre {
        display: none;
    }

    .report-table-head {
        display: none;
    }

    .report-row,
    .report-list.indexed .report-row {
        grid-template-columns: 70px minmax(0,1fr);
    }

    .report-meta,
    .report-type {
        grid-column: 2;
        align-items: flex-start;
    }

    .two-column-prose,
    .question-grid {
        grid-template-columns: 1fr;
    }

    .question-grid {
        border-left: 0;
    }

    .question-grid article {
        border-left: 1px solid var(--rule);
    }

    .method-table > div,
    .experiment-catalog-row {
        grid-template-columns: 70px minmax(0,1fr);
    }

    .experiment-catalog-row > em,
    .experiment-catalog-row > b {
        grid-column: 2;
    }

    .report-toc {
        position: static;
        max-height: none;
        padding-bottom: 2rem;
        border-bottom: 1px solid var(--rule);
    }

    .ascii-floating-bar {
        left: .65rem;
        right: .65rem;
        top: .65rem;
        justify-content: center;
    }

    .ascii-frame {
        padding: 4.2rem .55rem 3.2rem;
    }
}


/* Linked artifacts and admin-managed catalog entries */
.report-actions{margin:1.7rem 0 1.4rem}.report-project-button{font-family:var(--font-mono);font-size:.72rem;letter-spacing:.2px}.catalog-entry{display:grid;grid-template-columns:100px minmax(0,1fr);gap:1.5rem;padding:1.8rem 0;border-top:1px solid var(--rule-strong)}.catalog-entry+.catalog-entry{border-top-color:var(--rule)}.catalog-id{font:.7rem var(--font-mono);color:var(--gray)}.catalog-entry h2{margin:.25rem 0 .55rem;font-family:var(--font-serif);font-size:1.85rem;font-weight:500}.catalog-entry p{max-width:720px;color:var(--ink-soft);line-height:1.75}.catalog-actions{display:flex;gap:.7rem;flex-wrap:wrap;margin-top:1.1rem}
