/* Shared Research / Papers / Patents layout. Uses the existing site palette and fonts. */
.lab-outline { border-left: 1px solid var(--stroke); border-right: 1px solid var(--stroke); }
.lab-page { --lab-inset: max(40px, calc((100% - 1168px) / 2)); margin: auto; padding: 140px 0 64px; overflow-wrap: anywhere; }
/* Full-width section edges meet the outer rails; content keeps its reading width. */
.lab-page > .lab-hero, .lab-page > .lab-section, .lab-page > .lab-contact { padding-left: var(--lab-inset); padding-right: var(--lab-inset); }
.lab-page * { box-sizing: border-box; }
.lab-page [hidden], .lab-page a[data-optional-link]:not([href]), .lab-page a[data-optional-link][href=""] { display: none !important; }
.lab-page h1 { font-size: clamp(44px, 6vw, 76px); line-height: 1.1; margin: 24px 0; }
.lab-page h2 { font-size: clamp(28px, 3.5vw, 42px); line-height: 1.2; margin: 0 0 24px; }
.lab-page h3 { font-size: 24px; line-height: 1.35; margin: 14px 0; }
.lab-page p { color: var(--paragraph-gray); line-height: 1.75; margin: 0 0 20px; }
.lab-page a, .lab-page button, .lab-page summary { transition: color 160ms ease, border-color 160ms ease, background-color 160ms ease; }
.lab-page a:focus-visible, .lab-page button:focus-visible, .lab-page summary:focus-visible { outline: 2px solid var(--primary); outline-offset: 5px; }
.lab-hero { padding-bottom: 48px; }
.lab-label { display: inline-block; margin-top: 32px; }
.lab-page .lab-intro { max-width: 760px; font-size: 20px; }
.lab-section { padding: 56px 0; border-top: 1px solid var(--stroke); }
.lab-grid { display: grid; gap: 24px; }
.lab-areas { grid-template-columns: repeat(3, minmax(0,1fr)); }
.lab-projects { grid-template-columns: repeat(2,minmax(0,1fr)); }
.lab-card { min-width: 0; border: 1px solid var(--stroke); border-radius: 4px; overflow: hidden; }
.lab-areas .lab-card, .lab-card-body { padding: 28px; }
.lab-card:hover { border-color: var(--primary); }
.lab-kicker { font-size: 12px; letter-spacing: .07em; color: var(--primary); text-transform: uppercase; }
.lab-image-placeholder { aspect-ratio: 16/9; display: grid; place-items: center; color: var(--paragraph-gray); font-size: 13px; background: linear-gradient(135deg,#ffffff08,#ffffff02); border-bottom: 1px solid var(--stroke); }
.lab-card > img { display: block; width: 100%; aspect-ratio: 16/9; object-fit: cover; }
.lab-tags { display: flex; flex-wrap: wrap; gap: 8px; list-style: none; padding: 0; margin: 20px 0; }
.lab-tags li { padding: 5px 10px; border: 1px solid var(--stroke); border-radius: 2px; font-size: 12px; color: var(--paragraph-gray); }
.lab-page .lab-text-link { display: inline-block; color: var(--white); font-size: 15px; padding: 8px 0; }
.lab-page a:hover { color: var(--primary); }
.lab-page .primary-button { color: var(--white); text-align: center; flex-shrink: 0; }
.lab-page .primary-button:hover { color: var(--white); }
.lab-selected { padding: 28px; border-left: 2px solid var(--primary); background: #ffffff04; }
.lab-related { display: grid; grid-template-columns: 1fr 1fr; gap: 24px; }
.lab-related a { display: flex; justify-content: space-between; gap: 20px; padding: 24px; border: 1px solid var(--stroke); color: var(--white); font-size: 24px; }
.lab-contact, .lab-licensing { display: flex; gap: 32px; justify-content: space-between; align-items: center; }
.lab-contact h2 { margin: 0; }
.lab-licensing p { max-width: 640px; margin-bottom: 0; }
.lab-page .lab-note { font-size: 14px; }
.lab-filters { display: flex; flex-wrap: wrap; gap: 10px; margin: 28px 0 20px; }
.lab-filters button { padding: 12px 18px; background: transparent; color: var(--white); border: 1px solid var(--stroke); border-radius: 3px; font: inherit; font-size: 14px; cursor: pointer; }
.lab-filters button:hover { border-color: var(--primary); }
.lab-filters button[aria-pressed="true"] { background: var(--primary); border-color: var(--primary); color: white; }
.lab-publication { display: flex; align-items: flex-start; gap: 32px; padding: 32px 0; border-top: 1px solid var(--stroke); }
.lab-publication-content { min-width: 0; flex: 1; }
.lab-publication-cover { width: 136px; aspect-ratio: 3/4; object-fit: cover; border: 1px solid var(--stroke); }
.lab-metadata { display: flex; flex-wrap: wrap; gap: 12px 28px; margin: 18px 0; font-size: 13px; }
.lab-metadata div { display: flex; gap: 8px; }
.lab-page dt { color: var(--paragraph-gray); font-weight: 400; }
.lab-page dd { margin: 0; color: var(--white); }
.lab-page dd:empty::after { content: 'Not provided'; color: var(--paragraph-gray); }
.lab-resource-links { display: flex; flex-wrap: wrap; gap: 24px; }
.lab-resource-links a { color: var(--white); text-decoration: underline; text-underline-offset: 4px; }
.lab-empty { padding: 40px 24px; border: 1px solid var(--stroke); text-align: center; }
.lab-patent-details { border-top: 1px solid var(--stroke); margin-top: 24px; }
.lab-patent-details summary { padding: 20px 0; cursor: pointer; color: var(--white); }
.lab-patent-details summary:hover { color: var(--primary); }
.lab-patent-fields { display: grid; gap: 16px; font-size: 14px; margin: 0 0 20px; }
.lab-patent-fields div { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.lab-sr-only { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
@media (max-width: 991px) { .lab-page { --lab-inset: 30px; padding: 120px 0 56px; } .lab-areas { grid-template-columns: 1fr 1fr; } .lab-card-body, .lab-areas .lab-card { padding: 24px; } }
@media (max-width: 767px) { .lab-page { --lab-inset: 20px; padding: 110px 0 48px; } .lab-section { padding: 40px 0; } .lab-grid, .lab-related { grid-template-columns: 1fr; } .lab-contact, .lab-licensing { flex-direction: column; align-items: flex-start; } .lab-publication { flex-direction: column; gap: 20px; } .lab-publication-cover { width: 100px; } .lab-page .lab-intro { font-size: 18px; } }
@media (prefers-reduced-motion: reduce) { .lab-page * { transition: none !important; } }

/* A narrow aperture onto a viewport-sized backdrop, not an inline photograph. */
.lab-image-window { position: relative; height: var(--window-height, 336px); overflow: hidden; isolation: isolate; border-top: 1px solid var(--stroke); background: var(--primary-dark); }
.lab-window-image { display: block; position: absolute; top: 0; left: 0; width: 100%; height: var(--window-image-height, 100vh); object-fit: cover; object-position: center bottom; transform: translateY(var(--window-offset, 0px)); }
.lab-image-window::after { content: ''; position: absolute; inset: 0; pointer-events: none; background: #ffffff05; box-shadow: inset 0 1px 0 #ffffff26; }
@media (prefers-reduced-motion: reduce) { .lab-window-image { height: 100%; transform: none; } }
