/*
 * main.css — single project stylesheet
 * Base layout & components (formerly index.css), then journal homepage helpers, then repository (repo.html).
 */

html {
    -webkit-text-size-adjust: 100%;
    -ms-text-size-adjust: 100%;
    font-family: sans-serif
}

:root {
    --content-top-offset: calc(9vh + 0.8vw - 6px);
}

@media screen and (max-width: 767px) {
    :root {
        --content-top-offset: 95px;
    }
}

body {
    margin: 0;
    overflow-y: hidden;
}

article,
aside,
details,
figcaption,
figure,
footer,
header,
hgroup,
main,
menu,
nav,
section,
summary {
    display: block
}

audio,
canvas,
progress,
video {
    vertical-align: baseline;
    display: inline-block
}

audio:not([controls]) {
    height: 0;
    display: none
}

[hidden],
template {
    display: none
}

a {
    background-color: transparent
}

a:active,
a:hover {
    outline: 0
}

abbr[title] {
    border-bottom: 1px dotted
}

b,
strong {
    font-weight: 700
}

dfn {
    font-style: italic
}

h1 {
    margin: .67em 0;
    font-size: 2em
}

mark {
    color: #000;
    background: #ff0
}

small {
    font-size: 80%
}

sub,
sup {
    vertical-align: baseline;
    font-size: 75%;
    line-height: 0;
    position: relative
}

sup {
    top: -.5em
}

sub {
    bottom: -.25em
}

img {
    border: 0
}

svg:not(:root) {
    overflow: hidden
}

hr {
    box-sizing: content-box;
    height: 0
}

pre {
    overflow: auto
}

code,
kbd,
pre,
samp {
    font-family: monospace;
    font-size: 1em
}

button,
input,
optgroup,
select,
textarea {
    color: inherit;
    font: inherit;
    margin: 0
}

button {
    overflow: visible
}

button,
select {
    text-transform: none
}

button,
html input[type=button],
input[type=reset] {
    -webkit-appearance: button;
    cursor: pointer
}

button[disabled],
html input[disabled] {
    cursor: default
}

button::-moz-focus-inner,
input::-moz-focus-inner {
    border: 0;
    padding: 0
}

input {
    line-height: normal
}

input[type=checkbox],
input[type=radio] {
    box-sizing: border-box;
    padding: 0
}

input[type=number]::-webkit-inner-spin-button,
input[type=number]::-webkit-outer-spin-button {
    height: auto
}

input[type=search] {
    -webkit-appearance: none
}

input[type=search]::-webkit-search-cancel-button,
input[type=search]::-webkit-search-decoration {
    -webkit-appearance: none
}

legend {
    border: 0;
    padding: 0
}

textarea {
    overflow: auto
}

optgroup {
    font-weight: 700
}

table {
    border-collapse: collapse;
    border-spacing: 0
}

td,
th {
    padding: 0
}

[class^=w-icon-],
[class*=\ w-icon-] {
    speak: none;
    font-variant: normal;
    text-transform: none;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    font-style: normal;
    font-weight: 400;
    line-height: 1;
    font-family: webflow-icons !important
}



* {
    box-sizing: border-box
}

html {
    height: 100%
}

body {
    color: #333;
    background-color: #fff;
    min-height: 100%;
    margin: 0;
    font-family: Arial, sans-serif;
    font-size: 14px;
    line-height: 20px
}

img {
    vertical-align: middle;
    max-width: 100%;
    display: inline-block
}

html.w-mod-touch * {
    background-attachment: scroll !important
}

.w-block {
    display: block
}

.w-inline-block {
    max-width: 100%;
    display: inline-block
}

.w-clearfix:before,
.w-clearfix:after {
    content: " ";
    grid-area: 1/1/2/2;
    display: table
}

.w-clearfix:after {
    clear: both
}

.w-hidden {
    display: none
}

.w-button {
    color: #fff;
    line-height: inherit;
    cursor: pointer;
    background-color: #3898ec;
    border: 0;
    border-radius: 0;
    padding: 9px 15px;
    text-decoration: none;
    display: inline-block
}

input.w-button {
    -webkit-appearance: button
}

html[data-w-dynpage] [data-w-cloak] {
    color: transparent !important
}

.w-code-block {
    margin: unset
}

pre.w-code-block code {
    all: inherit
}


.w-webflow-badge {
    white-space: nowrap;
    cursor: pointer;
    box-shadow: 0 0 0 1px rgba(0, 0, 0, .1), 0 1px 3px rgba(0, 0, 0, .1);
    visibility: hidden !important;
    z-index: 2147483647 !important;
    color: #aaadb0 !important;
    opacity: 1 !important;
    background-color: #fff !important;
    border-radius: 3px !important;
    width: auto !important;
    height: auto !important;
    margin: 0 !important;
    padding: 6px !important;
    font-size: 12px !important;
    line-height: 14px !important;
    text-decoration: none !important;
    display: inline-block !important;
    position: fixed !important;
    top: auto !important;
    bottom: 12px !important;
    left: auto !important;
    right: 12px !important;
    overflow: visible !important;
    transform: none !important
}



h1,
h2,
h3,
h4,
h5,
h6 {
    margin-bottom: 10px;
    font-weight: 700
}

h1 {
    margin-top: 20px;
    font-size: 38px;
    line-height: 44px
}

h2 {
    margin-top: 20px;
    font-size: 32px;
    line-height: 36px
}

h3 {
    margin-top: 20px;
    font-size: 24px;
    line-height: 30px
}

h4 {
    margin-top: 10px;
    font-size: 18px;
    line-height: 24px
}

h5 {
    margin-top: 10px;
    font-size: 14px;
    line-height: 20px
}

h6 {
    margin-top: 10px;
    font-size: 12px;
    line-height: 18px
}

p {
    margin-top: 0;
    margin-bottom: 10px
}

blockquote {
    border-left: 5px solid #e2e2e2;
    margin: 0 0 10px;
    padding: 10px 20px;
    font-size: 18px;
    line-height: 22px
}

figure {
    margin: 0 0 10px
}

figcaption {
    text-align: center;
    margin-top: 5px
}

ul,
ol {
    margin-top: 0;
    margin-bottom: 10px;
    padding-left: 40px
}

.w-list-unstyled {
    padding-left: 0;
    list-style: none
}

.w-embed:before,
.w-embed:after {
    content: " ";
    grid-area: 1/1/2/2;
    display: table
}

.w-embed:after {
    clear: both
}

.w-video {
    width: 100%;
    padding: 0;
    position: relative
}

.w-video iframe,
.w-video object,
.w-video embed {
    border: none;
    width: 100%;
    height: 100%;
    position: absolute;
    top: 0;
    left: 0
}

fieldset {
    border: 0;
    margin: 0;
    padding: 0
}

button,
[type=button],
[type=reset] {
    cursor: pointer;
    -webkit-appearance: button;
    border: 0
}

.w-form {
    margin: 0 0 15px
}

.w-form-done {
    text-align: center;
    background-color: #ddd;
    padding: 20px;
    display: none
}

.w-form-fail {
    background-color: #ffdede;
    margin-top: 10px;
    padding: 10px;
    display: none
}

label {
    margin-bottom: 5px;
    font-weight: 700;
    display: block
}

.w-input,
.w-select {
    color: #333;
    vertical-align: middle;
    background-color: #fff;
    border: 1px solid #ccc;
    width: 100%;
    height: 38px;
    margin-bottom: 10px;
    padding: 8px 12px;
    font-size: 14px;
    line-height: 1.42857;
    display: block
}

.w-input:-moz-placeholder,
.w-select:-moz-placeholder {
    color: #999
}

.w-input::-moz-placeholder,
.w-select::-moz-placeholder {
    color: #999;
    opacity: 1
}

.w-input::-webkit-input-placeholder,
.w-select::-webkit-input-placeholder {
    color: #999
}

.w-input:focus,
.w-select:focus {
    border-color: #3898ec;
    outline: 0
}

.w-input[disabled],
.w-select[disabled],
.w-input[readonly],
.w-select[readonly],
fieldset[disabled] .w-input,
fieldset[disabled] .w-select {
    cursor: not-allowed
}

.w-input[disabled]:not(.w-input-disabled),
.w-select[disabled]:not(.w-input-disabled),
.w-input[readonly],
.w-select[readonly],
fieldset[disabled]:not(.w-input-disabled) .w-input,
fieldset[disabled]:not(.w-input-disabled) .w-select {
    background-color: #eee
}

textarea.w-input,
textarea.w-select {
    height: auto
}

.w-select {
    background-color: #f3f3f3
}

.w-select[multiple] {
    height: auto
}

.w-form-label {
    cursor: pointer;
    margin-bottom: 0;
    font-weight: 400;
    display: inline-block
}

.w-radio {
    margin-bottom: 5px;
    padding-left: 20px;
    display: block
}

.w-radio:before,
.w-radio:after {
    content: " ";
    grid-area: 1/1/2/2;
    display: table
}

.w-radio:after {
    clear: both
}

.w-radio-input {
    float: left;
    margin: 3px 0 0 -20px;
    line-height: normal
}

.w-file-upload {
    margin-bottom: 10px;
    display: block
}

.w-file-upload-input {
    opacity: 0;
    z-index: -100;
    width: .1px;
    height: .1px;
    position: absolute;
    overflow: hidden
}

.w-file-upload-default,
.w-file-upload-uploading,
.w-file-upload-success {
    color: #333;
    display: inline-block
}

.w-file-upload-error {
    margin-top: 10px;
    display: block
}

.w-file-upload-default.w-hidden,
.w-file-upload-uploading.w-hidden,
.w-file-upload-error.w-hidden,
.w-file-upload-success.w-hidden {
    display: none
}

.w-file-upload-uploading-btn {
    cursor: pointer;
    background-color: #fafafa;
    border: 1px solid #ccc;
    margin: 0;
    padding: 8px 12px;
    font-size: 14px;
    font-weight: 400;
    display: flex
}

.w-file-upload-file {
    background-color: #fafafa;
    border: 1px solid #ccc;
    flex-grow: 1;
    justify-content: space-between;
    margin: 0;
    padding: 8px 9px 8px 11px;
    display: flex
}

.w-file-upload-file-name {
    font-size: 14px;
    font-weight: 400;
    display: block
}

.w-file-remove-link {
    cursor: pointer;
    width: auto;
    height: auto;
    margin-top: 3px;
    margin-left: 10px;
    padding: 3px;
    display: block
}

.w-icon-file-upload-remove {
    margin: auto;
    font-size: 10px
}

.w-file-upload-error-msg {
    color: #ea384c;
    padding: 2px 0;
    display: inline-block
}

.w-file-upload-info {
    padding: 0 12px;
    line-height: 38px;
    display: inline-block
}

.w-file-upload-label {
    cursor: pointer;
    background-color: #fafafa;
    border: 1px solid #ccc;
    margin: 0;
    padding: 8px 12px;
    font-size: 14px;
    font-weight: 400;
    display: inline-block
}

.w-icon-file-upload-icon,
.w-icon-file-upload-uploading {
    width: 20px;
    margin-right: 8px;
    display: inline-block
}

.w-icon-file-upload-uploading {
    height: 20px
}

.w-container {
    max-width: 940px;
    margin-left: auto;
    margin-right: auto
}

.w-container:before,
.w-container:after {
    content: " ";
    grid-area: 1/1/2/2;
    display: table
}

.w-container:after {
    clear: both
}

.w-container .w-row {
    margin-left: -10px;
    margin-right: -10px
}

.w-row:before,
.w-row:after {
    content: " ";
    grid-area: 1/1/2/2;
    display: table
}

.w-row:after {
    clear: both
}

.w-row .w-row {
    margin-left: 0;
    margin-right: 0
}

.w-col {
    float: left;
    width: 100%;
    min-height: 1px;
    padding-left: 10px;
    padding-right: 10px;
    position: relative
}

.w-col .w-col {
    padding-left: 0;
    padding-right: 0
}

.w-col-1 {
    width: 8.33333%
}

.w-col-2 {
    width: 16.6667%
}

.w-col-3 {
    width: 25%
}

.w-col-4 {
    width: 33.3333%
}

.w-col-5 {
    width: 41.6667%
}

.w-col-6 {
    width: 50%
}

.w-col-7 {
    width: 58.3333%
}

.w-col-8 {
    width: 66.6667%
}

.w-col-9 {
    width: 75%
}

.w-col-10 {
    width: 83.3333%
}

.w-col-11 {
    width: 91.6667%
}

.w-col-12 {
    width: 100%
}

.w-hidden-main {
    display: none !important
}

@media screen and (max-width:991px) {
    .w-container {
        max-width: 728px
    }

    .w-hidden-main {
        display: inherit !important
    }

    .w-hidden-medium {
        display: none !important
    }

    .w-col-medium-1 {
        width: 8.33333%
    }

    .w-col-medium-2 {
        width: 16.6667%
    }

    .w-col-medium-3 {
        width: 25%
    }

    .w-col-medium-4 {
        width: 33.3333%
    }

    .w-col-medium-5 {
        width: 41.6667%
    }

    .w-col-medium-6 {
        width: 50%
    }

    .w-col-medium-7 {
        width: 58.3333%
    }

    .w-col-medium-8 {
        width: 66.6667%
    }

    .w-col-medium-9 {
        width: 75%
    }

    .w-col-medium-10 {
        width: 83.3333%
    }

    .w-col-medium-11 {
        width: 91.6667%
    }

    .w-col-medium-12 {
        width: 100%
    }

    .w-col-stack {
        width: 100%;
        left: auto;
        right: auto
    }
}

@media screen and (max-width:767px) {

    .w-hidden-main,
    .w-hidden-medium {
        display: inherit !important
    }

    .w-hidden-small {
        display: none !important
    }

    .w-row,
    .w-container .w-row {
        margin-left: 0;
        margin-right: 0
    }

    .w-col {
        width: 100%;
        left: auto;
        right: auto
    }

    .w-col-small-1 {
        width: 8.33333%
    }

    .w-col-small-2 {
        width: 16.6667%
    }

    .w-col-small-3 {
        width: 25%
    }

    .w-col-small-4 {
        width: 33.3333%
    }

    .w-col-small-5 {
        width: 41.6667%
    }

    .w-col-small-6 {
        width: 50%
    }

    .w-col-small-7 {
        width: 58.3333%
    }

    .w-col-small-8 {
        width: 66.6667%
    }

    .w-col-small-9 {
        width: 75%
    }

    .w-col-small-10 {
        width: 83.3333%
    }

    .w-col-small-11 {
        width: 91.6667%
    }

    .w-col-small-12 {
        width: 100%
    }
}

@media screen and (max-width:479px) {
    .w-container {
        max-width: none
    }

    .w-hidden-main,
    .w-hidden-medium,
    .w-hidden-small {
        display: inherit !important
    }

    .w-hidden-tiny {
        display: none !important
    }

    .w-col {
        width: 100%
    }

    .w-col-tiny-1 {
        width: 8.33333%
    }

    .w-col-tiny-2 {
        width: 16.6667%
    }

    .w-col-tiny-3 {
        width: 25%
    }

    .w-col-tiny-4 {
        width: 33.3333%
    }

    .w-col-tiny-5 {
        width: 41.6667%
    }

    .w-col-tiny-6 {
        width: 50%
    }

    .w-col-tiny-7 {
        width: 58.3333%
    }

    .w-col-tiny-8 {
        width: 66.6667%
    }

    .w-col-tiny-9 {
        width: 75%
    }

    .w-col-tiny-10 {
        width: 83.3333%
    }

    .w-col-tiny-11 {
        width: 91.6667%
    }

    .w-col-tiny-12 {
        width: 100%
    }
}

.w-widget {
    position: relative
}

.w-widget-map {
    width: 100%;
    height: 400px
}

.w-widget-map label {
    width: auto;
    display: inline
}

.w-widget-map img {
    max-width: inherit
}

.w-widget-map .gm-style-iw {
    text-align: center
}

.w-widget-map .gm-style-iw>button {
    display: none !important
}

.w-widget-twitter {
    overflow: hidden
}

.w-widget-twitter-count-shim {
    vertical-align: top;
    text-align: center;
    background: #fff;
    border: 1px solid #758696;
    border-radius: 3px;
    width: 28px;
    height: 20px;
    display: inline-block;
    position: relative
}

.w-widget-twitter-count-shim * {
    pointer-events: none;
    -webkit-user-select: none;
    -ms-user-select: none;
    user-select: none
}

.w-widget-twitter-count-shim .w-widget-twitter-count-inner {
    text-align: center;
    color: #999;
    font-family: serif;
    font-size: 15px;
    line-height: 12px;
    position: relative
}

.w-widget-twitter-count-shim .w-widget-twitter-count-clear {
    display: block;
    position: relative
}

.w-widget-twitter-count-shim.w--large {
    width: 36px;
    height: 28px
}

.w-widget-twitter-count-shim.w--large .w-widget-twitter-count-inner {
    font-size: 18px;
    line-height: 18px
}

.w-widget-twitter-count-shim:not(.w--vertical) {
    margin-left: 5px;
    margin-right: 8px
}

.w-widget-twitter-count-shim:not(.w--vertical).w--large {
    margin-left: 6px
}

.w-widget-twitter-count-shim:not(.w--vertical):before,
.w-widget-twitter-count-shim:not(.w--vertical):after {
    content: " ";
    pointer-events: none;
    border: solid transparent;
    width: 0;
    height: 0;
    position: absolute;
    top: 50%;
    left: 0
}

.w-widget-twitter-count-shim:not(.w--vertical):before {
    border-width: 4px;
    border-color: rgba(117, 134, 150, 0) #5d6c7b rgba(117, 134, 150, 0) rgba(117, 134, 150, 0);
    margin-top: -4px;
    margin-left: -9px
}

.w-widget-twitter-count-shim:not(.w--vertical).w--large:before {
    border-width: 5px;
    margin-top: -5px;
    margin-left: -10px
}

.w-widget-twitter-count-shim:not(.w--vertical):after {
    border-width: 4px;
    border-color: rgba(255, 255, 255, 0) #fff rgba(255, 255, 255, 0) rgba(255, 255, 255, 0);
    margin-top: -4px;
    margin-left: -8px
}

.w-widget-twitter-count-shim:not(.w--vertical).w--large:after {
    border-width: 5px;
    margin-top: -5px;
    margin-left: -9px
}

.w-widget-twitter-count-shim.w--vertical {
    width: 61px;
    height: 33px;
    margin-bottom: 8px
}

.w-widget-twitter-count-shim.w--vertical:before,
.w-widget-twitter-count-shim.w--vertical:after {
    content: " ";
    pointer-events: none;
    border: solid transparent;
    width: 0;
    height: 0;
    position: absolute;
    top: 100%;
    left: 50%
}

.w-widget-twitter-count-shim.w--vertical:before {
    border-width: 5px;
    border-color: #5d6c7b rgba(117, 134, 150, 0) rgba(117, 134, 150, 0);
    margin-left: -5px
}

.w-widget-twitter-count-shim.w--vertical:after {
    border-width: 4px;
    border-color: #fff rgba(255, 255, 255, 0) rgba(255, 255, 255, 0);
    margin-left: -4px
}

.w-widget-twitter-count-shim.w--vertical .w-widget-twitter-count-inner {
    font-size: 18px;
    line-height: 22px
}

.w-widget-twitter-count-shim.w--vertical.w--large {
    width: 76px
}

.w-background-video {
    color: #fff;
    height: 500px;
    position: relative;
    overflow: hidden
}

.w-background-video>video {
    object-fit: cover;
    z-index: -100;
    background-position: 50%;
    background-size: cover;
    width: 100%;
    height: 100%;
    margin: auto;
    position: absolute;
    top: -100%;
    bottom: -100%;
    left: -100%;
    right: -100%
}

.w-background-video>video::-webkit-media-controls-start-playback-button {
    -webkit-appearance: none;
    display: none !important
}

.w-background-video--control {
    background-color: transparent;
    padding: 0;
    position: absolute;
    bottom: 1em;
    right: 1em
}

.w-background-video--control>[hidden] {
    display: none !important
}

.w-slider {
    text-align: center;
    clear: both;
    -webkit-tap-highlight-color: transparent;
    tap-highlight-color: transparent;
    background: #ddd;
    height: 300px;
    position: relative
}

.w-slider-mask {
    z-index: 1;
    white-space: nowrap;
    height: 100%;
    display: block;
    position: relative;
    left: 0;
    right: 0;
    overflow: hidden
}

.w-slide {
    vertical-align: top;
    white-space: normal;
    text-align: left;
    width: 100%;
    height: 100%;
    display: inline-block;
    position: relative
}

.w-slider-nav {
    z-index: 2;
    text-align: center;
    -webkit-tap-highlight-color: transparent;
    tap-highlight-color: transparent;
    height: 40px;
    margin: auto;
    padding-top: 10px;
    position: absolute;
    top: auto;
    bottom: 0;
    left: 0;
    right: 0
}

.w-slider-nav.w-round>div {
    border-radius: 100%
}

.w-slider-nav.w-num>div {
    font-size: inherit;
    line-height: inherit;
    width: auto;
    height: auto;
    padding: .2em .5em
}

.w-slider-nav.w-shadow>div {
    box-shadow: 0 0 3px rgba(51, 51, 51, .4)
}

.w-slider-nav-invert {
    color: #fff
}

.w-slider-nav-invert>div {
    background-color: rgba(34, 34, 34, .4)
}

.w-slider-nav-invert>div.w-active {
    background-color: #222
}

.w-slider-dot {
    cursor: pointer;
    background-color: rgba(255, 255, 255, .4);
    width: 1em;
    height: 1em;
    margin: 0 3px .5em;
    transition: background-color .1s, color .1s;
    display: inline-block;
    position: relative
}

.w-slider-dot.w-active {
    background-color: #fff
}

.w-slider-dot:focus {
    outline: none;
    box-shadow: 0 0 0 2px #fff
}

.w-slider-dot:focus.w-active {
    box-shadow: none
}

.w-slider-arrow-left,
.w-slider-arrow-right {
    cursor: pointer;
    color: #fff;
    -webkit-tap-highlight-color: transparent;
    tap-highlight-color: transparent;
    -webkit-user-select: none;
    -ms-user-select: none;
    user-select: none;
    width: 80px;
    margin: auto;
    font-size: 40px;
    position: absolute;
    top: 0;
    bottom: 0;
    left: 0;
    right: 0;
    overflow: hidden
}

.w-slider-arrow-left [class^=w-icon-],
.w-slider-arrow-right [class^=w-icon-],
.w-slider-arrow-left [class*=\ w-icon-],
.w-slider-arrow-right [class*=\ w-icon-] {
    position: absolute
}

.w-slider-arrow-left:focus,
.w-slider-arrow-right:focus {
    outline: 0
}

.w-slider-arrow-left {
    z-index: 3;
    right: auto
}

.w-slider-arrow-right {
    z-index: 4;
    left: auto
}

.w-icon-slider-left,
.w-icon-slider-right {
    width: 1em;
    height: 1em;
    margin: auto;
    top: 0;
    bottom: 0;
    left: 0;
    right: 0
}

.w-slider-aria-label {
    clip: rect(0 0 0 0);
    border: 0;
    width: 1px;
    height: 1px;
    margin: -1px;
    padding: 0;
    position: absolute;
    overflow: hidden
}

.w-slider-force-show {
    display: block !important
}

.w-dropdown {
    text-align: left;
    z-index: 900;
    margin-left: auto;
    margin-right: auto;
    display: inline-block;
    position: relative
}

.w-dropdown-btn,
.w-dropdown-toggle,
.w-dropdown-link {
    vertical-align: top;
    color: #222;
    text-align: left;
    white-space: nowrap;
    margin-left: auto;
    margin-right: auto;
    padding: 20px;
    text-decoration: none;
    position: relative
}

.w-dropdown-toggle {
    -webkit-user-select: none;
    -ms-user-select: none;
    user-select: none;
    cursor: pointer;
    padding-right: 40px;
    display: inline-block
}

.w-dropdown-toggle:focus {
    outline: 0
}

.w-icon-dropdown-toggle {
    width: 1em;
    height: 1em;
    margin: auto 20px auto auto;
    position: absolute;
    top: 0;
    bottom: 0;
    right: 0
}

.w-dropdown-list {
    background: #ddd;
    min-width: 100%;
    display: none;
    position: absolute
}

.w-dropdown-list.w--open {
    display: block
}

.w-dropdown-link {
    color: #222;
    padding: 10px 20px;
    display: block
}

.w-dropdown-link.w--current {
    color: #0082f3
}

.w-dropdown-link:focus {
    outline: 0
}

@media screen and (max-width:767px) {
    .w-nav-brand {
        padding-left: 10px
    }
}

.w-lightbox-backdrop {
    cursor: auto;
    letter-spacing: normal;
    text-indent: 0;
    text-shadow: none;
    text-transform: none;
    visibility: visible;
    white-space: normal;
    word-break: normal;
    word-spacing: normal;
    word-wrap: normal;
    color: #fff;
    text-align: center;
    z-index: 2000;
    opacity: 0;
    -webkit-user-select: none;
    -moz-user-select: none;
    -webkit-tap-highlight-color: transparent;
    background: rgba(0, 0, 0, .9);
    outline: 0;
    font-family: Helvetica Neue, Helvetica, Ubuntu, Segoe UI, Verdana, sans-serif;
    font-size: 17px;
    font-style: normal;
    font-weight: 300;
    line-height: 1.2;
    list-style: disc;
    position: fixed;
    top: 0;
    bottom: 0;
    left: 0;
    right: 0;
    -webkit-transform: translate(0)
}

.w-lightbox-backdrop,
.w-lightbox-container {
    -webkit-overflow-scrolling: touch;
    height: 100%;
    overflow: auto
}

.w-lightbox-content {
    height: 100vh;
    position: relative;
    overflow: hidden
}

.w-lightbox-view {
    opacity: 0;
    width: 100vw;
    height: 100vh;
    position: absolute
}

.w-lightbox-view:before {
    content: "";
    height: 100vh
}

.w-lightbox-group,
.w-lightbox-group .w-lightbox-view,
.w-lightbox-group .w-lightbox-view:before {
    height: 86vh
}

.w-lightbox-frame,
.w-lightbox-view:before {
    vertical-align: middle;
    display: inline-block
}

.w-lightbox-figure {
    margin: 0;
    position: relative
}

.w-lightbox-group .w-lightbox-figure {
    cursor: pointer
}

.w-lightbox-img {
    width: auto;
    max-width: none;
    height: auto
}

.w-lightbox-image {
    float: none;
    max-width: 100vw;
    max-height: 100vh;
    display: block
}

.w-lightbox-group .w-lightbox-image {
    max-height: 86vh
}

.w-lightbox-caption {
    text-align: left;
    text-overflow: ellipsis;
    white-space: nowrap;
    background: rgba(0, 0, 0, .4);
    padding: .5em 1em;
    position: absolute;
    bottom: 0;
    left: 0;
    right: 0;
    overflow: hidden
}

.w-lightbox-embed {
    width: 100%;
    height: 100%;
    position: absolute;
    top: 0;
    bottom: 0;
    left: 0;
    right: 0
}

.w-lightbox-control {
    cursor: pointer;
    background-position: 50%;
    background-repeat: no-repeat;
    background-size: 24px;
    width: 4em;
    transition: all .3s;
    position: absolute;
    top: 0
}

.w-lightbox-left {
    background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9Ii0yMCAwIDI0IDQwIiB3aWR0aD0iMjQiIGhlaWdodD0iNDAiPjxnIHRyYW5zZm9ybT0icm90YXRlKDQ1KSI+PHBhdGggZD0ibTAgMGg1djIzaDIzdjVoLTI4eiIgb3BhY2l0eT0iLjQiLz48cGF0aCBkPSJtMSAxaDN2MjNoMjN2M2gtMjZ6IiBmaWxsPSIjZmZmIi8+PC9nPjwvc3ZnPg==);
    display: none;
    bottom: 0;
    left: 0
}

.w-lightbox-right {
    background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9Ii00IDAgMjQgNDAiIHdpZHRoPSIyNCIgaGVpZ2h0PSI0MCI+PGcgdHJhbnNmb3JtPSJyb3RhdGUoNDUpIj48cGF0aCBkPSJtMC0waDI4djI4aC01di0yM2gtMjN6IiBvcGFjaXR5PSIuNCIvPjxwYXRoIGQ9Im0xIDFoMjZ2MjZoLTN2LTIzaC0yM3oiIGZpbGw9IiNmZmYiLz48L2c+PC9zdmc+);
    display: none;
    bottom: 0;
    right: 0
}

.w-lightbox-close {
    background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9Ii00IDAgMTggMTciIHdpZHRoPSIxOCIgaGVpZ2h0PSIxNyI+PGcgdHJhbnNmb3JtPSJyb3RhdGUoNDUpIj48cGF0aCBkPSJtMCAwaDd2LTdoNXY3aDd2NWgtN3Y3aC01di03aC03eiIgb3BhY2l0eT0iLjQiLz48cGF0aCBkPSJtMSAxaDd2LTdoM3Y3aDd2M2gtN3Y3aC0zdi03aC03eiIgZmlsbD0iI2ZmZiIvPjwvZz48L3N2Zz4=);
    background-size: 18px;
    height: 2.6em;
    right: 0
}

.w-lightbox-strip {
    white-space: nowrap;
    padding: 0 1vh;
    line-height: 0;
    position: absolute;
    bottom: 0;
    left: 0;
    right: 0;
    overflow-x: auto;
    overflow-y: hidden
}

.w-lightbox-item {
    box-sizing: content-box;
    cursor: pointer;
    width: 10vh;
    padding: 2vh 1vh;
    display: inline-block;
    -webkit-transform: translate(0, 0)
}

.w-lightbox-active {
    opacity: .3
}

.w-lightbox-thumbnail {
    background: #222;
    height: 10vh;
    position: relative;
    overflow: hidden
}

.w-lightbox-thumbnail-image {
    position: absolute;
    top: 0;
    left: 0
}

.w-lightbox-thumbnail .w-lightbox-tall {
    width: 100%;
    top: 50%;
    transform: translateY(-50%)
}

.w-lightbox-thumbnail .w-lightbox-wide {
    height: 100%;
    left: 50%;
    transform: translate(-50%)
}

.w-lightbox-spinner {
    box-sizing: border-box;
    border: 5px solid rgba(0, 0, 0, .4);
    border-radius: 50%;
    width: 40px;
    height: 40px;
    margin-top: -20px;
    margin-left: -20px;
    animation: .8s linear infinite spin;
    position: absolute;
    top: 50%;
    left: 50%
}

.w-lightbox-spinner:after {
    content: "";
    border: 3px solid transparent;
    border-bottom-color: #fff;
    border-radius: 50%;
    position: absolute;
    top: -4px;
    bottom: -4px;
    left: -4px;
    right: -4px
}

.w-lightbox-hide {
    display: none
}

.w-lightbox-noscroll {
    overflow: hidden
}

@media (min-width:768px) {
    .w-lightbox-content {
        height: 96vh;
        margin-top: 2vh
    }

    .w-lightbox-view,
    .w-lightbox-view:before {
        height: 96vh
    }

    .w-lightbox-group,
    .w-lightbox-group .w-lightbox-view,
    .w-lightbox-group .w-lightbox-view:before {
        height: 84vh
    }

    .w-lightbox-image {
        max-width: 96vw;
        max-height: 96vh
    }

    .w-lightbox-group .w-lightbox-image {
        max-width: 82.3vw;
        max-height: 84vh
    }

    .w-lightbox-left,
    .w-lightbox-right {
        opacity: .5;
        display: block
    }

    .w-lightbox-close {
        opacity: .8
    }

    .w-lightbox-control:hover {
        opacity: 1
    }
}

.w-lightbox-inactive,
.w-lightbox-inactive:hover {
    opacity: 0
}

.w-richtext:before,
.w-richtext:after {
    content: " ";
    grid-area: 1/1/2/2;
    display: table
}

.w-richtext:after {
    clear: both
}

.w-richtext[contenteditable=true]:before,
.w-richtext[contenteditable=true]:after {
    white-space: initial
}

.w-richtext ol,
.w-richtext ul {
    overflow: hidden
}

.w-richtext .w-richtext-figure-selected.w-richtext-figure-type-video div:after,
.w-richtext .w-richtext-figure-selected[data-rt-type=video] div:after,
.w-richtext .w-richtext-figure-selected.w-richtext-figure-type-image div,
.w-richtext .w-richtext-figure-selected[data-rt-type=image] div {
    outline: 2px solid #2895f7
}

.w-richtext figure.w-richtext-figure-type-video>div:after,
.w-richtext figure[data-rt-type=video]>div:after {
    content: "";
    display: none;
    position: absolute;
    top: 0;
    bottom: 0;
    left: 0;
    right: 0
}

.w-richtext figure {
    max-width: 60%;
    position: relative
}

.w-richtext figure>div:before {
    cursor: default !important
}

.w-richtext figure img {
    width: 100%
}

.w-richtext figure figcaption.w-richtext-figcaption-placeholder {
    opacity: .6
}

.w-richtext figure div {
    color: transparent;
    font-size: 0
}

.w-richtext figure.w-richtext-figure-type-image,
.w-richtext figure[data-rt-type=image] {
    display: table
}

.w-richtext figure.w-richtext-figure-type-image>div,
.w-richtext figure[data-rt-type=image]>div {
    display: inline-block
}

.w-richtext figure.w-richtext-figure-type-image>figcaption,
.w-richtext figure[data-rt-type=image]>figcaption {
    caption-side: bottom;
    display: table-caption
}

.w-richtext figure.w-richtext-figure-type-video,
.w-richtext figure[data-rt-type=video] {
    width: 60%;
    height: 0
}

.w-richtext figure.w-richtext-figure-type-video iframe,
.w-richtext figure[data-rt-type=video] iframe {
    width: 100%;
    height: 100%;
    position: absolute;
    top: 0;
    left: 0
}

.w-richtext figure.w-richtext-figure-type-video>div,
.w-richtext figure[data-rt-type=video]>div {
    width: 100%
}

.w-richtext figure.w-richtext-align-center {
    clear: both;
    margin-left: auto;
    margin-right: auto
}

.w-richtext figure.w-richtext-align-center.w-richtext-figure-type-image>div,
.w-richtext figure.w-richtext-align-center[data-rt-type=image]>div {
    max-width: 100%
}

.w-richtext figure.w-richtext-align-normal {
    clear: both
}

.w-richtext figure.w-richtext-align-fullwidth {
    text-align: center;
    clear: both;
    width: 100%;
    max-width: 100%;
    margin-left: auto;
    margin-right: auto;
    display: block
}

.w-richtext figure.w-richtext-align-fullwidth>div {
    padding-bottom: inherit;
    display: inline-block
}

.w-richtext figure.w-richtext-align-fullwidth>figcaption {
    display: block
}

.w-richtext figure.w-richtext-align-floatleft {
    float: left;
    clear: none;
    margin-right: 15px
}

.w-richtext figure.w-richtext-align-floatright {
    float: right;
    clear: none;
    margin-left: 15px
}

.w-nav {
    z-index: 1000;
    background: #ddd;
    position: relative
}

.w-nav:before,
.w-nav:after {
    content: " ";
    grid-area: 1/1/2/2;
    display: table
}

.w-nav:after {
    clear: both
}

.w-nav-brand {
    float: left;
    color: #333;
    text-decoration: none;
    position: relative
}

.w-nav-link {
    vertical-align: top;
    color: #222;
    text-align: left;
    margin-left: auto;
    margin-right: auto;
    padding: 20px;
    text-decoration: none;
    display: inline-block;
    position: relative
}

.w-nav-link.w--current {
    color: #0082f3
}

.w-nav-menu {
    float: right;
    position: relative
}

[data-nav-menu-open] {
    text-align: center;
    background: #c8c8c8;
    min-width: 200px;
    position: absolute;
    top: 100%;
    left: 0;
    right: 0;
    overflow: visible;
    display: block !important
}

.w--nav-link-open {
    display: block;
    position: relative
}

.w-nav-overlay {
    width: 100%;
    display: none;
    position: absolute;
    top: 100%;
    left: 0;
    right: 0;
    overflow: hidden
}

.w-nav-overlay [data-nav-menu-open] {
    top: 0
}

.w-nav[data-animation=over-left] .w-nav-overlay {
    width: auto
}

.w-nav[data-animation=over-left] .w-nav-overlay,
.w-nav[data-animation=over-left] [data-nav-menu-open] {
    z-index: 1;
    top: 0;
    right: auto
}

.w-nav[data-animation=over-right] .w-nav-overlay {
    width: auto
}

.w-nav[data-animation=over-right] .w-nav-overlay,
.w-nav[data-animation=over-right] [data-nav-menu-open] {
    z-index: 1;
    top: 0;
    left: auto
}

.w-nav-button {
    float: right;
    cursor: pointer;
    -webkit-tap-highlight-color: transparent;
    tap-highlight-color: transparent;
    -webkit-user-select: none;
    -ms-user-select: none;
    user-select: none;
    padding: 18px;
    font-size: 24px;
    display: none;
    position: relative
}

.w-nav-button:focus {
    outline: 0
}

.w-nav-button.w--open {
    color: #fff;
    background-color: #c8c8c8
}

.w-nav[data-collapse=all] .w-nav-menu {
    display: none
}

.w-nav[data-collapse=all] .w-nav-button,
.w--nav-dropdown-open,
.w--nav-dropdown-toggle-open {
    display: block
}

.w--nav-dropdown-list-open {
    position: static
}

@media screen and (max-width:991px) {
    .w-nav[data-collapse=medium] .w-nav-menu {
        display: none
    }

    .w-nav[data-collapse=medium] .w-nav-button {
        display: block
    }
}

@media screen and (max-width:767px) {
    .w-nav[data-collapse=small] .w-nav-menu {
        display: none
    }

    .w-nav[data-collapse=small] .w-nav-button {
        display: block
    }

    .w-nav-brand {
        padding-left: 10px
    }
}

@media screen and (max-width:479px) {
    .w-nav[data-collapse=tiny] .w-nav-menu {
        display: none
    }

    .w-nav[data-collapse=tiny] .w-nav-button {
        display: block
    }
}

.w-tabs {
    position: relative
}

.w-tabs:before,
.w-tabs:after {
    content: " ";
    grid-area: 1/1/2/2;
    display: table
}

.w-tabs:after {
    clear: both
}

.w-tab-menu {
    position: relative
}

.w-tab-link {
    vertical-align: top;
    text-align: left;
    cursor: pointer;
    color: #222;
    background-color: #ddd;
    padding: 9px 30px;
    text-decoration: none;
    display: inline-block;
    position: relative
}

.w-tab-link.w--current {
    background-color: #c8c8c8
}

.w-tab-link:focus {
    outline: 0
}

.w-tab-content {
    display: block;
    position: relative;
    overflow: hidden
}

.w-tab-pane {
    display: none;
    position: relative
}

.w--tab-active {
    display: block
}

@media screen and (max-width:479px) {
    .w-tab-link {
        display: block
    }
}

.w-ix-emptyfix:after {
    content: ""
}

@keyframes spin {
    0% {
        transform: rotate(0)
    }

    to {
        transform: rotate(360deg)
    }
}

.w-dyn-empty {
    background-color: #ddd;
    padding: 10px
}

.w-dyn-hide,
.w-dyn-bind-empty,
.w-condition-invisible {
    display: none !important
}

.wf-layout-layout {
    display: grid
}

.w-code-component>* {
    width: 100%;
    height: 100%;
    position: absolute;
    top: 0;
    left: 0
}

:root {
    --black: black;
    --blue: rgb(0, 0, 0);
    --dark-grey: #727272;
    --white: white;
    --light-grey: #ebebeb;
    --green: #DEFF74
}

.w-layout-grid {
    grid-row-gap: 16px;
    grid-column-gap: 16px;
    grid-template-rows: auto auto;
    grid-template-columns: 1fr 1fr;
    grid-auto-columns: 1fr;
    display: grid
}

body {
    color: var(--black);
    cursor: none;
    background: linear-gradient(to bottom, #DEFF74 0%, #ffffff 15vh, #ffffff 100%);
    font-family: space grotesk, sans-serif;
    font-size: 18px;
    font-weight: 400;
    line-height: 1.2;
    overflow-y: hidden;
}

h1 {
    color: var(--black);
    margin-top: 0;
    margin-bottom: 0;
    font-family: space grotesk, sans-serif;
    font-size: 20px;
    font-weight: 600;
    line-height: 1.2
}

h2 {
    color: var(--black);
    margin-top: 0;
    margin-bottom: 0;
    font-family: space grotesk, sans-serif;
    font-size: 18px;
    font-weight: 600;
    line-height: 1.2
}

h3 {
    color: var(--black);
    text-align: left;
    margin-top: 0;
    margin-bottom: 0;
    font-family: space grotesk, sans-serif;
    font-size: 18px;
    font-weight: 400;
    line-height: 1.2
}

h4,
h5,
h6 {
    color: var(--black);
    margin-top: 0;
    margin-bottom: 0;
    font-family: space grotesk, sans-serif;
    font-size: 18px;
    font-weight: 400;
    line-height: 1.2
}

p {
    color: var(--black);
    margin-bottom: 0;
    font-family: space grotesk, sans-serif;
    font-size: 18px;
    line-height: 1.3
}

a {
    color: var(--black);
    cursor: none
}

a:hover {
    color: var(--blue);
    text-decoration: none
}

ul,
ol {
    margin-top: 0;
    margin-bottom: 10px;
    padding-left: 40px
}

label {
    margin-bottom: 5px;
    display: block
}

blockquote {
    border-left: 5px solid #e2e2e2;
    margin-bottom: 0;
    padding: 10px 20px;
    font-size: 18px;
    line-height: 22px
}

.columns-wrap {
    justify-content: space-between;
    align-items: flex-start;
    padding: 80px 150px 120px;
    display: flex
}

.element-wrap {
    flex-direction: column;
    display: flex
}

.element-wrap.with-spacer {
    border-bottom: 1px solid #6c6c6c;
    padding-bottom: 15px
}

.element-wrap.padding {
    margin-bottom: 40px
}

.element-label {
    color: var(--dark-grey);
    margin-bottom: 10px;
    font-family: space grotesk, sans-serif;
    font-size: 14px
}

.style-nav-links-grid {
    grid-row-gap: 20px;
    grid-template-rows: auto auto auto auto;
    grid-template-columns: 1fr
}

.left-column {
    width: 35%;
    position: -webkit-sticky;
    position: sticky;
    top: 80px
}

.right-column {
    flex: 1
}

.small-text {
    color: var(--black);
    font-family: space grotesk, sans-serif;
    font-size: 14px;
    line-height: 1.2
}

.small-text.footer {
    color: var(--dark-grey)
}

.colour {
    border-radius: 10px;
    flex: 1;
    height: 150px
}

.colour.white {
    background-color: var(--white)
}

.colour.blue {
    background-color: var(--blue)
}

.colour.light-grey {
    background-color: var(--light-grey)
}

.colour.dark-grey {
    background-color: var(--dark-grey)
}

.colour.black {
    background-color: var(--black)
}

.colour.green {
    background-color: var(--green)
}

.colours-grid {
    grid-template-rows: auto;
    grid-template-columns: 1fr 1fr
}

.style-guide-grid {
    grid-row-gap: 35px;
    grid-template-rows: auto;
    grid-template-columns: 1fr
}

.style-guide-grid.inline {
    display: inline-block
}

.rich-text-block h2 {
    color: var(--black);
    margin-top: 20px;
    margin-bottom: 10px;
    font-weight: 600
}

.rich-text-block p {
    text-align: left
}

.rich-text-block h1 {
    margin-bottom: 20px
}

.rich-text-block a {
    padding-bottom: 0;
    display: inline-block
}

.rich-text-block li {
    color: var(--black);
    margin-bottom: 5px;
    font-family: space grotesk, sans-serif;
    font-size: 18px;
    line-height: 1.2
}

.rich-text-block blockquote {
    color: var(--black);
    margin-top: 21px;
    margin-bottom: 21px;
    font-family: space grotesk, sans-serif;
    font-size: 24px;
    line-height: 1.2
}

.rich-text-block ul,
.rich-text-block ol {
    margin-top: 20px;
    margin-bottom: 20px
}

.rich-text-block h3 {
    color: var(--black);
    margin-top: 20px;
    margin-bottom: 10px;
    font-weight: 600
}

.rich-text-block h4,
.rich-text-block h5,
.rich-text-block h6 {
    margin-top: 20px;
    margin-bottom: 10px;
    font-weight: 600
}

.rich-text-block.project-page {
    width: 80%;
    max-width: 550px
}

.button {
    background-color: var(--light-grey);
    color: var(--black);
    border-radius: 20px;
    justify-content: center;
    align-items: center;
    text-decoration: none;
    display: flex
}

.button:hover {
    background-color: var(--black);
    color: var(--white)
}

.button._404 {
    margin-left: auto;
    margin-right: auto
}

.link-wrap {
    align-items: center;
    margin-bottom: -3px;
    display: flex;
    overflow: hidden
}

.utility-page-wrap {
    justify-content: center;
    align-items: center;
    width: 100vw;
    max-width: 100%;
    height: 100vh;
    max-height: 100%;
    display: flex
}

.utility-page-content {
    grid-column-gap: 30px;
    grid-row-gap: 30px;
    text-align: center;
    flex-direction: column;
    width: 260px;
    display: flex
}

.utility-page-form {
    flex-direction: column;
    align-items: stretch;
    display: flex
}

.page-wrapper {
    flex-direction: column;
    justify-content: space-between;
    width: 100%;
    height: 100vh;
    padding: 20px;
    display: flex;
    position: relative;
    overflow: hidden
}

.page-wrapper.project-page {
    height: auto;
    padding: 0
}

.page-wrapper.no-100vh {
    grid-column-gap: 10vh;
    grid-row-gap: 10vh;
    height: auto
}

.page-wrapper.project-tags {
    justify-content: flex-start
}

.menu-text-wrap {
    flex-direction: column;
    align-items: flex-start;
    margin: 10px auto;
    display: flex;
    position: relative;
    overflow: hidden
}

.menu-items-wrapper {
    flex: 1;
    justify-content: center;
    align-items: center;
    display: flex;
    overflow: hidden
}

.menu-items-wrapper.works,
.menu-items-wrapper.works.w--current,
.menu-items-wrapper.info {
    text-decoration: none
}

.menu-inner-wrapper {
    flex-direction: column;
    justify-content: center;
    align-items: center;
    width: 100%;
    height: 100vh;
    display: flex;
    position: relative
}

.menu-container {
    z-index: 100;
    justify-content: space-between;
    align-items: center;
    display: flex
}

.menu-items-wrap {
    width: 100%;
    height: 100%;
    display: flex
}

.menu-wrap.project-page {
    z-index: 1;
    padding: 20px;
    position: fixed;
    top: 0%;
    bottom: 0%;
    left: auto;
    right: 0%
}

.menu-outer-wrapper {
    z-index: 99;
    background-color: var(--white);
    flex-direction: column;
    justify-content: flex-end;
    align-items: center;
    display: none;
    position: fixed;
    top: 0%;
    bottom: 0%;
    left: 0%;
    right: 0%
}

.menu-link {
    color: var(--black);
    font-size: 140px;
    font-weight: 400;
    line-height: 1.1;
    text-decoration: none;
    display: inline-block
}

.nav-grid {
    flex: 1;
    grid-template-rows: auto;
    grid-template-columns: 1fr 1fr 1fr;
    justify-content: space-between;
    align-items: start;
    justify-items: center
}

.nav-grid.project-page {
    grid-template-columns: 1fr
}

.nav-text-wrapper {
    grid-row-gap: 3px;
    flex-direction: column;
    display: flex
}

.grey {
    color: var(--dark-grey)
}

.homepage-content {
    grid-column-gap: 0px;
    grid-row-gap: 0px;
    grid-template-rows: auto auto;
    grid-template-columns: 1fr;
    grid-auto-columns: 1fr;
    width: 100%;
    margin-bottom: 18vw;
    margin-top: 9vh;
    display: grid
}

.project-wrapper {
    grid-column-gap: 16px;
    grid-row-gap: 16px;
    border-bottom: 1px solid #000;
    flex-direction: row;
    grid-template-rows: auto;
    grid-template-columns: 5.15fr 1.2fr .55fr;
    grid-auto-columns: 1fr;
    justify-content: space-between;
    align-items: stretch;
    width: 100%;
    padding: 4px 2px;
    display: grid;
    cursor: none;
}

.project-image {
    object-fit: contain;
    width: 100%;
    height: 100%;
    display: block
}

.table-heading {
    padding-bottom: 10px
}

.semester-heading-cell {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 6px;
    width: max-content;
    margin-left: 0;
}

.semester-label {
    font-weight: 600;
    font-size: inherit;
    line-height: 1.2;
}

.semester-toggle {
    display: inline-flex;
    align-items: center;
    gap: 2px;
    border: 1px solid #000;
    border-radius: 999px;
    padding: 2px;
    width: 100%;
    position: relative;
    overflow: hidden;
}

.semester-indicator {
    position: absolute;
    top: 3px;
    left: 3px;
    height: calc(100% - 6px);
    border-radius: 999px;
    background: #000;
    z-index: 0;
    transition: left .2s ease, width .2s ease;
}

.semester-option {
    appearance: none;
    background: transparent;
    border: 0;
    color: #000;
    border-radius: 999px;
    padding: 3px 7px;
    font: inherit;
    font-size: .78em;
    line-height: 1;
    transition: color .25s ease, transform .25s ease;
    position: relative;
    z-index: 1;
}

.semester-option.is-active {
    color: #fff;
}

.year {
    font-weight: 400
}

/* Outlined pill with a small inner dot (no chevron). */
.project-paragraph-arrow-pill {
    flex-shrink: 0;
    width: 30px;
    height: 30px;
    box-sizing: border-box;
    border: 1px solid #000;
    border-radius: 999px;
    background: #fff;
    display: grid;
    place-items: center;
    margin-top: 2px;
    margin-right: 14px;
    position: relative;
}

.project-paragraph-arrow-pill::before {
    content: "";
    width: 12px;
    height: 12px;
    border-radius: 50%;
    background: #000;
    display: block;
}

.eyes-wrapper {
    align-items: center;
    width: 100px;
    height: 65px;
    display: flex
}

.eye {
    background-color: #e4e4e4;
    border: 5px solid #e4e4e4;
    border-radius: 100%;
    justify-content: center;
    align-items: center;
    width: 100%;
    height: 100%;
    display: flex;
    overflow: hidden;
    box-shadow: inset 5px -5px 0 1px rgba(166, 166, 166, .2)
}

.pupil {
    background-color: #000;
    border-radius: 100%;
    width: 50%;
    height: 50%;
    padding-top: 15px
}

.pupil-reflection {
    background-color: #fff;
    border-radius: 100%;
    width: 30%;
    height: 30%
}

.menu-divider {
    background-color: var(--black);
    width: 2px;
    height: 100%
}

.project-number {
    color: var(--black);
    width: auto;
    font-family: space grotesk, sans-serif;
    font-size: 14vw;
    line-height: .9;
    display: inline-block;
    overflow: hidden
}

.project-number-wrapper {
    position: absolute;
    top: auto;
    bottom: 0%;
    left: auto;
    right: 0%
}

.project-info-wrapper {
    grid-column-gap: 40px;
    flex-direction: row;
    justify-content: space-between;
    align-items: flex-end;
    display: none;
    position: fixed;
    bottom: 0.25vw;
    left: 20px;
    right: 20px
}

.project-paragraph-wrapper {
    align-items: flex-start;
    max-width: 650px;
    display: flex;
}

.project-info-wrapper-placeholder {
    grid-column-gap: 40px;
    justify-content: space-between;
    align-items: flex-start;
    position: fixed;
    bottom: 0.25vw;
    left: 20px;
    right: 20px
}

.project-link {
    display: none !important;
}

.project-link .project-image {
    pointer-events: none;
    border-radius: inherit;
}

.homepage-content .project-link {
    border-radius: 14px !important;
    overflow: hidden !important;
}

.homepage-content .project-link .project-image {
    border-radius: 14px !important;
}

.homepage-content .project-link.w-inline-block {
    border-radius: 28px !important;
    overflow: hidden !important;
}

.homepage-content .project-link.w-inline-block .project-image {
    border-radius: 28px !important;
}

.info-smaller-grid {
    border-top: 2px solid #000
}

.info-wrapper {
    grid-row-gap: 5px;
    border-bottom: 2px solid #000;
    flex-direction: column;
    justify-content: space-between;
    padding-top: 3px;
    padding-bottom: 3px;
    display: flex
}

.institution-date-wrapper {
    grid-column-gap: 10px;
    grid-row-gap: 10px;
    justify-content: space-between;
    display: flex
}

.projects-info-column {
    grid-row-gap: 30px;
    flex-direction: column;
    flex: 1;
    justify-content: space-between;
    align-items: flex-start;
    width: 50vw;
    height: 100vh;
    padding: 20px;
    display: flex;
    position: fixed
}

.projects-image-column {
    flex: 1;
    width: 50vw;
    margin-left: 50vw
}

.projects-page-content {
    display: flex
}

.project-info {
    grid-row-gap: 10px;
    flex-direction: column;
    justify-content: center;
    align-items: flex-start;
    display: flex
}

.tags-list {
    grid-column-gap: 20px;
    grid-row-gap: 20px;
    display: flex
}

.tag-wrapper {
    background-color: var(--light-grey);
    border-radius: 5px;
    flex-flow: row;
    justify-content: center;
    align-items: center;
    padding: 7px 10px
}

.tag-wrapper.example {
    justify-content: flex-start;
    align-items: center;
    margin-right: auto;
    display: inline-flex
}

.project-images {
    object-fit: cover;
    width: 100%;
    height: 100%
}

.project-list {
    grid-column-gap: 20px;
    grid-row-gap: 20px;
    flex-flow: column;
    grid-template-rows: auto;
    grid-template-columns: 1fr 1fr;
    grid-auto-columns: 1fr;
    justify-content: center;
    align-items: center;
    display: flex
}

.name-year-wrapper {
    grid-row-gap: 30px;
    flex-direction: column;
    justify-content: flex-start;
    align-items: flex-start;
    display: flex
}

.table-headings-wrapper {
    grid-column-gap: 16px;
    grid-row-gap: 16px;
    border-bottom: 2px solid #000;
    grid-template-rows: auto;
    grid-template-columns: 5.15fr 1.2fr .55fr;
    grid-auto-columns: 1fr;
    display: grid
}

.home-link {
    text-decoration: none
}

.nav-menu {
    z-index: 100;
    grid-column-gap: 6px;
    grid-row-gap: 6px;
    background-color: var(--light-grey);
    border-radius: 20px;
    justify-content: flex-start;
    align-items: center;
    height: 42px;
    margin-left: auto;
    padding: 10px 16px;
    text-decoration: none;
    display: flex;
    position: relative
}

.nav-menu:hover {
    background-color: var(--black);
    color: var(--white)
}

.x-menu {
    display: none
}

.project-information {
    grid-column-gap: 20px;
    grid-row-gap: 20px;
    flex-flow: column;
    display: flex
}

.link-wrapper {
    grid-column-gap: 5px;
    grid-row-gap: 5px;
    justify-content: flex-start;
    align-items: center;
    display: flex
}

.text-link {
    text-decoration: none
}

.project-image-wrapper {
    overflow: hidden
}

.about-grid {
    grid-column-gap: 10vw;
    grid-row-gap: 5vw;
    grid-template-rows: auto;
    grid-template-columns: 1fr .5fr
}

.about-page-content {
    width: 70%;
    max-width: 960px
}

.section-heading {
    grid-column-gap: 5px;
    grid-row-gap: 5px;
    justify-content: flex-start;
    align-items: center;
    display: flex
}

.info-section {
    grid-column-gap: 10px;
    grid-row-gap: 10px;
    flex-flow: column;
    display: flex
}

.info-section.contact {
    grid-column-gap: 30px;
    grid-row-gap: 30px
}

.bio {
    max-width: 822px
}

.info-date {
    white-space: nowrap
}

.main-cursor-wrapper {
    pointer-events: none;
}

/* Custom cursor */
.cursor {
    pointer-events: none;
}

.cursor__ball {
    position: fixed;
    top: 0;
    left: 0;
    mix-blend-mode: difference;
    z-index: 10000;
    line-height: 0;
}

.cursor__ball svg {
    display: block;
}

.cursor__ball--small svg {
    width: 10px;
    height: 10px;
}

.cursor__ball circle {
    fill: #f7f8fa;
}

/* Ensure native cursor never appears on interactive elements */
a,
button,
.hoverable {
    cursor: none !important;
}

.intro-max-width {
    max-width: 800px
}

.element-wrapper {
    grid-column-gap: 8px;
    grid-row-gap: 8px;
    justify-content: flex-start;
    align-items: center;
    display: flex
}

.template-info-wrap {
    border-radius: 10px;
    margin-bottom: 20px;
    padding: 20px
}

.template-info-wrap.max-width {
    grid-column-gap: 40px;
    grid-row-gap: 40px;
    background-color: #f6f6f8;
    flex-flow: column;
    max-width: 800px;
    display: flex
}

.template-content-wrap {
    padding: 80px 150px
}

.large-text {
    color: var(--black);
    font-size: 22px;
    font-weight: 400;
    line-height: 1.2
}

.template-section-intro {
    width: 82%;
    margin-top: 15px
}

.template-section-wrapper {
    grid-column-gap: 20px;
    grid-row-gap: 20px;
    flex-flow: column;
    display: flex
}

.intro-guide-wrap {
    background-color: #f7f7f7;
    flex-direction: column;
    justify-content: flex-start;
    align-items: flex-start;
    padding: 140px 150px 100px;
    display: flex
}

.template-info-grid {
    grid-column-gap: 30px;
    grid-row-gap: 30px;
    grid-template-rows: auto;
    grid-template-columns: 1fr
}

.template-element-wrapper {
    grid-column-gap: 15px;
    grid-row-gap: 15px;
    flex-flow: column;
    display: flex
}

.spacer {
    background-color: #000;
    width: 100%;
    height: 1px
}

.style-nav {
    background-color: #f7f7f7;
    border-radius: 10px;
    margin-right: 20px;
    padding: 20px
}

.style-wrap {
    background-color: #f7f7f7;
    border-radius: 10px;
    margin-bottom: 20px;
    padding: 20px
}

.style-nav-link {
    color: var(--light-grey);
    border-bottom-style: none;
    text-decoration: none
}

.style-nav-link:focus {
    color: #000
}

.style-nav-link.w--current {
    color: var(--black)
}

.style-guide-headings {
    margin-bottom: 20px;
    font-size: 22px;
    font-weight: 400
}

.body-text {
    color: var(--black);
    justify-content: flex-start;
    font-size: 18px;
    font-weight: 400;
    line-height: 1.2
}

.nav-padding {
    background-color: #f7f7f7;
    padding: 20px
}

.changelog-wrapper {
    grid-column-gap: 10px;
    grid-row-gap: 10px;
    flex-flow: column;
    display: flex
}

.about-paragraph-wrapper {
    grid-column-gap: 20px;
    grid-row-gap: 20px;
    flex-flow: column;
    display: flex
}

.info-heading {
    max-width: 822px
}

.short-about {
    color: var(--dark-grey)
}

.homepage-heading {
    font-size: 18px;
    font-weight: 400;
}

.heading-pargraph-wrapper {
    grid-column-gap: 10px;
    grid-row-gap: 10px;
    flex-flow: column;
    display: flex
}

._404-heading {
    font-size: 40px
}

.template-footer {
    position: fixed;
    top: auto;
    bottom: 0%;
    left: 0%;
    right: 0%
}

.template-footer.padding {
    padding: 20px
}

.footer-grid {
    grid-template-rows: auto;
    grid-template-columns: 1fr min-content
}

.template-links {
    grid-column-gap: 40px;
    grid-row-gap: 40px;
    justify-content: flex-end;
    display: flex
}

.footer-link {
    color: var(--dark-grey);
    white-space: nowrap;
    font-size: 14px
}

.template-credits {
    grid-column-gap: 10px;
    grid-row-gap: 10px;
    display: flex
}

.tags-wrap {
    grid-column-gap: 20px;
    grid-row-gap: 20px;
    flex-flow: column;
    margin-top: 40px;
    display: flex
}

.class {
    background-color: var(--green);
    border-radius: 6px;
    padding-left: 5px;
    padding-right: 5px
}

.template-image-wrapper {
    grid-column-gap: 10px;
    grid-row-gap: 10px;
    display: flex
}

.template-image {
    border: 1px solid var(--dark-grey);
    object-fit: contain;
    width: 180px
}

@media screen and (max-width:991px) {
    a {
        cursor: pointer
    }

    .columns-wrap {
        padding-top: 70px;
        padding-left: 50px;
        padding-right: 50px
    }

    .left-column {
        width: 30%
    }

    .colour.white {
        height: 120px
    }

    .rich-text-block.project-page {
        max-width: none
    }

    .page-wrapper {
        cursor: auto;
        height: auto;
        overflow: hidden
    }

    .page-wrapper.no-100vh {
        grid-column-gap: 8vh;
        grid-row-gap: 8vh
    }

    .menu-link {
        font-size: 100px
    }

    .nav-grid {
        grid-template-columns: 1fr 1fr 1fr
    }

    .nav-text-wrapper {
        grid-row-gap: 5px
    }

    .homepage-content {
        margin-top: 7vw;
        margin-bottom: 0
    }

    .eyes-wrapper {
        display: none
    }

    .project-info-wrapper {
        grid-column-gap: 40px;
        bottom: 10vw
    }

    .project-paragraph-wrapper {
        max-width: 70%
    }

    .project-info-wrapper-placeholder {
        grid-column-gap: 40px;
        bottom: 10vw
    }

    .project-link {
        cursor: auto;
        height: 40vw;
        top: 70%
    }

    .projects-info-column {
        grid-row-gap: 60px;
        width: auto;
        position: static
    }

    .projects-image-column {
        width: 100%;
        height: auto;
        margin-left: 0;
        padding: 20px
    }

    .projects-page-content {
        flex-flow: column
    }

    .tags-list {
        flex-flow: wrap
    }

    .project-list {
        grid-column-gap: 16px;
        grid-row-gap: 20px;
        grid-template-rows: auto;
        grid-template-columns: 1fr;
        grid-auto-columns: 1fr;
        display: grid
    }

    .nav-menu {
        cursor: pointer
    }

    .about-page-content {
        width: 100%;
        max-width: none
    }

    .cursor {
        display: none
    }

    .template-content-wrap {
        padding: 70px 50px
    }

    .intro-guide-wrap {
        padding: 100px 50px 70px
    }

    .template-links {
        grid-column-gap: 20px;
        grid-row-gap: 20px;
        align-items: flex-end
    }

    .footer-link {
        white-space: nowrap
    }

    .template-credits {
        grid-column-gap: 5px;
        grid-row-gap: 5px;
        flex-flow: column
    }
}

@media screen and (max-width:767px) {

    body,
    h2,
    h3,
    h4,
    h5,
    h6,
    p {
        font-size: 15px
    }

    .columns-wrap {
        padding-top: 50px;
        padding-left: 24px;
        padding-right: 24px
    }

    .left-column {
        display: none
    }

    .project-wrapper {
        grid-template-columns: minmax(0, 2.85fr) minmax(0, 1.08fr) minmax(0, .5fr);
        gap: 6px;
        align-items: center;
        padding: 8px 6px;
        min-height: 46px;
    }

    .project-name {
        font-size: 16px;
        line-height: 1.2;
        font-weight: 500;
        margin: 0;
    }

    .table-heading {
        font-size: 16px;
        line-height: 1.2;
    }

    .projects-item {
        margin-bottom: 1px;
    }

    .category,
    .year {
        display: block;
        font-size: 14px;
        line-height: 1.15;
    }

    .project-image {
        display: none;
    }

    .table-heading {
        display: block;
    }

    .semester-toggle {
        gap: 3px;
        padding: 2px;
        width: max-content;
        max-width: 100%;
    }

    .semester-option {
        padding: 4px 8px;
        font-size: .72em;
    }

    .table-headings-wrapper {
        display: grid;
        grid-template-columns: minmax(0, 2.85fr) minmax(0, 1.08fr) minmax(0, .5fr);
        margin-top: 14px;
        margin-bottom: 6px;
        padding-top: 6px;
    }

    .semester-heading-cell {
        width: 100%;
    }

    .nav-item {
        font-size: 16px;
        padding: 8px 0;
        width: 100%;
    }

    .rich-text-block h2,
    .rich-text-block h1 {
        font-size: 22px
    }

    .rich-text-block a,
    .rich-text-block li,
    .rich-text-block blockquote,
    .rich-text-block h3 {
        font-size: 18px
    }

    .rich-text-block.project-page {
        width: auto;
        max-width: none
    }

    .button {
        font-size: 18px
    }

    .page-wrapper.no-100vh {
        grid-column-gap: 5vh;
        grid-row-gap: 5vh
    }

    .menu-items-wrap {
        margin-bottom: 0
    }

    .menu-link {
        font-size: 60px
    }

    .nav-grid {
        grid-template-columns: 1fr 1fr
    }

    .nav-text-wrapper {
        grid-row-gap: 6px
    }

    .homepage-content {
        grid-column-gap: 5vw;
        grid-row-gap: 5vw;
        flex-flow: column;
        justify-content: space-between;
        display: flex;
        margin-top: 14vw;
    }

    .project-number-wrapper {
        display: none
    }

    .project-info-wrapper {
        bottom: 18vw
    }

    .project-paragraph-wrapper {
        max-width: 100%
    }

    .project-info-wrapper-placeholder {
        position: static;
        bottom: 18vw
    }

    .project-link {
        width: 70vw;
        height: 50vw
    }

    .projects-info-column {
        grid-row-gap: 30px
    }

    .project-information {
        margin-top: 4vh
    }

    .about-grid {
        grid-row-gap: 10vw;
        grid-template-columns: 1fr
    }

    .template-content-wrap {
        padding: 50px 20px
    }

    .large-text {
        font-size: 20px
    }

    .template-section-intro {
        width: 100%
    }

    .intro-guide-wrap {
        padding: 90px 24px 50px
    }

    .style-guide-headings {
        font-size: 24px
    }

    .body-text,
    .homepage-heading {
        font-size: 16px
    }

    .template-footer.padding {
        padding: 0;
        position: static
    }

    .footer-grid {
        grid-column-gap: 10px;
        grid-row-gap: 10px;
        grid-template-rows: auto auto;
        grid-template-columns: 1fr
    }

    .template-links {
        justify-content: flex-start
    }
}

@media screen and (max-width:479px) {
    .project-wrapper {
        grid-template-columns: minmax(0, 2.6fr) minmax(0, .9fr) minmax(0, .5fr);
        gap: 4px;
        padding: 7px 4px;
        min-height: 44px;
    }

    .table-headings-wrapper {
        grid-template-columns: minmax(0, 2.6fr) minmax(0, .9fr) minmax(0, .5fr);
    }

    .project-name {
        font-size: 17px;
        line-height: 1.2;
    }

    .table-heading {
        font-size: 17px;
        line-height: 1.2;
    }

    .semester-toggle {
        padding: 2px;
    }

    .semester-option {
        padding: 4px 7px;
        font-size: .68em;
    }

    .category,
    .year {
        font-size: 13px;
        line-height: 1.1;
    }

    .projects-item {
        margin-bottom: 1px;
    }

    .columns-wrap {
        padding-top: 30px
    }

    .colour.white {
        height: 100px
    }

    .colours-grid {
        grid-template-rows: auto auto;
        grid-template-columns: 1fr
    }

    .menu-text-wrap {
        margin-left: 0;
        margin-right: 0
    }

    .menu-items-wrap {
        grid-column-gap: 30px;
        grid-row-gap: 30px;
        flex-flow: column;
        justify-content: center;
        align-items: flex-start;
        height: auto;
        padding-left: 40px
    }

    .menu-link {
        font-size: 40px
    }

    .nav-grid {
        grid-column-gap: 0px
    }

    .nav-text-wrapper {
        grid-row-gap: 8px
    }

    .homepage-content {
        grid-column-gap: 10vw;
        grid-row-gap: 10vw
    }

    .menu-divider,
    .project-number-wrapper {
        display: none
    }

    .project-info-wrapper {
        grid-column-gap: 0px;
        flex-direction: column;
        margin-top: 20px;
        margin-bottom: 20px;
        bottom: 30vw
    }

    .project-paragraph-wrapper {
        max-width: none
    }

    .project-info-wrapper-placeholder {
        grid-column-gap: 0px;
        flex-direction: column;
        position: static;
        bottom: 30vw
    }

    .project-link {
        height: 50vw;
        top: 40%
    }

    .about-grid {
        grid-column-gap: 12vw;
        grid-row-gap: 12vw
    }

    .template-info-wrap.max-width {
        max-width: none
    }

    .template-content-wrap {
        padding-top: 40px;
        padding-bottom: 40px
    }

    .heading-pargraph-wrapper {
        justify-content: flex-end;
        align-items: stretch
    }

    .template-links {
        grid-column-gap: 10px;
        grid-row-gap: 10px;
        flex-flow: wrap
    }

    .template-image-wrapper {
        flex-flow: column
    }
}

.top-navbar {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    padding: 2vh 20px 20px;
    background: transparent;
    height: 15vh;
    box-sizing: border-box;
    z-index: 10
}

.hamburger-button {
    display: none;
    color: var(--black);
    background: transparent;
    border: 0;
    font-family: sometype mono, sans-serif;
    font-size: 18px;
    line-height: 1;
    padding: 8px 0;
    cursor: pointer;
}

.mobile-menu-links {
    display: contents;
}

.nav-item {
    color: var(--black);
    text-decoration: none;
    font-family: sometype mono, sans-serif;
    font-size: 22px;
    font-weight: 400;
    cursor: none;
    text-align: center;
    white-space: nowrap;
    display: inline-block;
}

.nav-item:hover {
    color: var(--blue)
}

/* Old cursor hover rules removed - handled by GSAP animation */

.table-headings-wrapper {
    grid-area: span 1/span 1/span 1/span 1;
}

.table-headings-wrapper>.table-heading:nth-child(1) {
    grid-area: 1/1/2/2;
}

.table-headings-wrapper>.table-heading:nth-child(2) {
    grid-area: 1/2/2/3;
}

.table-headings-wrapper>.table-heading:nth-child(3) {
    grid-area: 1/3/2/4;
    justify-self: end;
}

.project-wrapper>.category {
    grid-area: 1/2/2/3;
    justify-self: start;
}

.project-wrapper>.year {
    grid-area: 1/3/2/4;
    justify-self: end;
}

@media screen and (max-width:767px) {
    body {
        background: #fff;
        overflow-y: auto;
        overflow-x: hidden;
    }

    .page-wrapper {
        min-height: 100vh;
        height: auto;
        overflow: visible;
    }

    .top-navbar {
        align-items: center;
        justify-content: space-between;
        height: auto;
        min-height: 56px;
        padding: 10px 20px;
        padding-top: 3vh;
        background: linear-gradient(to bottom, #DEFF74 0%, #ffffff 100%);
    }

    .hamburger-button {
        display: inline-block;
        font-size: 15px;
        color: #000;
        width: auto;
        min-width: 120px;
        text-align: left;
    }

    .catalogue-link {
        margin-left: 0;
        min-width: 120px;
        text-align: right;
        white-space: nowrap;
    }

    .top-navbar .nav-item {
        color: #000;
        font-size: 15px;
        line-height: 1.2;
        padding: 10px 0;
    }

    .top-navbar .mobile-menu-links {
        position: absolute;
        top: calc(100% + 6px);
        left: 20px;
        right: 20px;
        display: none;
        background: #fff;
        border: 1px solid #000;
        border-radius: 10px;
        padding: 8px 12px;
        z-index: 20;
    }

    .top-navbar.is-menu-open .mobile-menu-links {
        display: flex;
        flex-direction: column;
        gap: 4px;
    }

    .top-navbar .mobile-menu-links .nav-item {
        display: block;
        width: 100%;
        text-align: left;
        padding: 8px 0;
    }
}

/* Project demo page */
.project-demo-page {
    --demo-box-radius: 6px;
    color: var(--black);
    background: linear-gradient(to bottom, #DEFF74 0%, #ffffff 15vh, #ffffff 100%);
    background-repeat: no-repeat;
    background-size: 100% 100vh;
    background-attachment: fixed;
    background-position: top center;
    min-height: 100vh;
    overflow-y: auto;
}

.project-demo-page::before {
    content: "";
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    height: 15vh;
    background: linear-gradient(to bottom, #DEFF74 0%, #ffffff 100%);
    pointer-events: none;
    z-index: 2;
}

.project-demo-page .page-wrapper {
    height: auto;
    min-height: 100vh;
    padding: 0;
    overflow: visible;
}

.project-demo-main {
    /* Keep journal content below the fixed navbar even when zoom/scaling changes viewport vh sizing. */
    --demo-top-offset: max(144px, calc(15vh + 24px));
    padding: var(--demo-top-offset) 0 40px;
    position: relative;
    z-index: 1;
}

.project-demo-layout {
    display: grid;
    grid-template-columns: 16% 1fr;
    gap: 24px;
    align-items: start;
    position: relative;
}

.project-demo-layout::before {
    content: "";
    position: absolute;
    top: 0;
    bottom: 0;
    left: calc(16% + 12px);
    width: 1px;
    background: #000;
    pointer-events: none;
}

.project-weeks-column {
    position: sticky;
    top: var(--demo-top-offset);
    align-self: start;
    max-height: calc(100vh - var(--demo-top-offset) - 20px);
    padding: 0 12px;
    background: transparent;
    display: flex;
    flex-direction: column;
    width: 100%;
    box-sizing: border-box;
}

.week-preview-card {
    margin: 12px 0 0;
    border: 1px solid #000;
    border-radius: var(--demo-box-radius);
    overflow: hidden;
    background: #fff;
    width: 100%;
    height: 132px;
}

.project-demo-page .week-preview-card {
    display: none;
}

.week-preview-card {
    display: none !important;
}

#weekPreviewLink {
    display: block;
    width: 100%;
    height: 100%;
}

.week-preview-card img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center;
    display: block;
    transition: opacity .2s ease;
}

.project-weeks-title {
    font-size: 14px;
    font-weight: 600;
    margin-bottom: 12px;
    text-transform: uppercase;
    letter-spacing: .04em;
}

.semester-nav-group {
    border-top: 1px solid #000;
    width: 100%;
    overflow-x: hidden;
}

.semester-dropdown {
    border-bottom: 1px solid #000;
    padding: 6px 0;
    margin-bottom: 10px;
    overflow-x: hidden;
}

.semester-dropdown:last-child {
    margin-bottom: 0;
}

.semester-dropdown summary {
    list-style: none;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: space-between;
    width: 100%;
    margin: 0;
    font-size: 17px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: .02em;
    padding: 4px 0 8px;
    box-sizing: border-box;
}

.semester-dropdown summary::-webkit-details-marker {
    display: none;
}

.semester-dropdown summary::marker {
    content: "";
}

.semester-dropdown summary::after {
    content: "";
    width: 24px;
    height: 24px;
    border: 1px solid #000;
    border-radius: 999px;
    display: grid;
    place-items: center;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath d='M4 2l4 4-4 4' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: 56% 50%;
    background-size: 12px 12px;
    margin-left: auto;
    margin-right: 0;
    transition: transform .45s cubic-bezier(.22, 1, .36, 1);
}

.semester-dropdown:not([open]) summary::after {
    transform: rotate(0deg);
}

.semester-dropdown[open] summary::after {
    transform: rotate(90deg);
}

.semester-dropdown .project-weeks-list {
    max-height: 0;
    opacity: 0;
    overflow-x: hidden;
    overflow-y: hidden;
    padding: 0;
    margin: 0;
    transition: max-height .8s ease, opacity .7s ease, padding .7s ease;
}

.semester-dropdown[open] .project-weeks-list {
    max-height: 720px;
    opacity: 1;
    padding: 0 0 4px;
}

.project-weeks-list {
    list-style: none;
    margin: 0;
    padding: 0 0 4px;
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.project-week-item {
    display: grid;
    grid-template-columns: 1fr auto;
    gap: 8px;
    align-items: baseline;
    font-size: 14px;
    color: var(--dark-grey);
    width: 100%;
    margin: -4px 0;
    padding: 4px 0;
}

.project-week-link {
    display: grid;
    grid-template-columns: 1fr auto;
    gap: 8px;
    align-items: baseline;
    color: inherit;
    text-decoration: none;
    width: 100%;
    padding: 0;
}

.project-week-link:hover {
    color: var(--black);
}

.project-week-item.is-active {
    color: var(--black);
    font-weight: 600;
}

.project-week-name {
    overflow-wrap: anywhere;
    font-family: space grotesk, sans-serif;
    font-size: 14px;
    letter-spacing: 0;
    text-transform: none;
    width: auto;
    text-align: left;
    justify-self: start;
}

.project-week-meta {
    font-family: sometype mono, sans-serif;
    font-size: 11px;
    letter-spacing: .04em;
    text-transform: uppercase;
    white-space: nowrap;
    color: var(--dark-grey);
}

.project-week-item.is-active .project-week-meta {
    color: var(--black);
}

.journal-column {
    display: flex;
    flex-direction: column;
    gap: 56px;
    padding-left: 56px;
    padding-right: 120px;
    box-sizing: border-box;
}

.journal-block {
    border-top: none;
    padding-top: 0;
    padding-bottom: 14px;
    scroll-margin-top: calc(var(--demo-top-offset, 144px) + 16px);
}

.journal-block.no-divider {
    border-top: none;
    padding-top: 0;
}

.wider-column-gap {
    column-gap: 56px;
    gap: 56px;
}

.journal-block.breathing-room .journal-subtitle {
    margin-top: 26px;
}

.journal-block.breathing-room .word-columns-2 {
    margin-top: 6px;
    margin-bottom: 20px;
}

.compact-demarcation-table {
    margin-top: 8px;
    border-top: 1px solid #000;
}

.compact-demarcation-table tr td {
    border-bottom: 1px solid #000;
}

.prolific-main-image-link {
    display: block;
    margin-top: 2lh;
    text-decoration: none;
}

.prolific-main-image-link .media-caption {
    text-decoration: none;
}

.padded-columns .word-plain {
    padding-left: 18px;
    padding-right: 18px;
}

.journal-title {
    font-family: space grotesk, sans-serif;
    font-size: 46px;
    line-height: 1.02;
    font-weight: 400;
    letter-spacing: -.01em;
    border-bottom: 1px solid #000;
    padding-bottom: 12px;
    margin-bottom: 24px;
}

.journal-title::before {
    content: attr(data-kicker);
    display: block;
    margin-bottom: 12px;
    font-family: sometype mono, sans-serif;
    font-size: 12px;
    letter-spacing: .14em;
    text-transform: uppercase;
    color: var(--dark-grey);
    font-weight: 500;
}

.journal-title:not([data-kicker])::before {
    content: none;
    display: none;
}

.journal-subtitle {
    font-family: space grotesk, sans-serif;
    font-size: 30px;
    line-height: 1.08;
    font-weight: 700;
    letter-spacing: -.005em;
    border-bottom: 1px solid #000;
    padding-bottom: 10px;
    margin: 0 0 12px;
}

.journal-subtitle::before {
    content: none !important;
    display: none !important;
}

.option-subhead-plain {
    font-size: 22px;
    line-height: 1.18;
    font-weight: 700;
    border-bottom: 0;
    padding-bottom: 0;
    margin-bottom: 14px;
}

.subsection-heading {
    font-size: 24px;
    line-height: 1.12;
    font-weight: 600;
    border-bottom: 1px solid #000;
    padding-bottom: 10px;
    margin: 0 0 14px;
}

.journal-title::before,
.start-kicker,
.reflection-kicker,
.experiment-left .experiment-kicker,
.week-hero-meta-label,
.module-subtitle {
    font-family: sometype mono, sans-serif;
    color: var(--dark-grey);
}

.journal-text {
    max-width: 900px;
    color: var(--black);
    margin-top: 14px;
    margin-bottom: 14px;
}

.journal-text,
.media-caption,
.boxed-outline-text,
.word-card,
.word-plain,
.reflection-columns p,
.experiment-left .experiment-summary,
.experiment-step-text,
.row-divider-item > div,
.journal-table td,
.text-bullet-summary li {
    font-family: space grotesk, tasa orbiter, sans-serif;
    font-size: 17px;
    line-height: 1.38;
}

/* Individual journal entry pages: increase text column spacing + heading spacing */
@media screen and (min-width: 992px) {
    .project-demo-layout:not(.repo-demo-layout) {
        gap: 34px;
    }

    .project-demo-layout:not(.repo-demo-layout) .journal-column {
        gap: 68px;
        padding-left: 56px;
        padding-right: 120px;
    }

    .project-demo-layout:not(.repo-demo-layout) .journal-block {
        padding-top: 16px;
        padding-bottom: 50px;
    }

    .project-demo-layout:not(.repo-demo-layout) .journal-title {
        margin-bottom: 30px;
    }

    .project-demo-layout:not(.repo-demo-layout) .journal-title::before {
        margin-bottom: 16px;
    }

    .project-demo-layout:not(.repo-demo-layout) .week-hero-image {
        margin-top: 26vh;
    }
}

.media-full {
    width: 100%;
    border: 1px solid #000;
    border-radius: var(--demo-box-radius);
    overflow: hidden;
    line-height: 0;
    background: #fff;
    padding-bottom: 12px;
}

.media-full img,
.media-full video {
    width: 100%;
    height: auto;
    display: block;
    margin: 0;
}

.media-grid-2,
.media-grid-3 {
    gap: 24px;
    align-items: start;
}

.media-grid-1 {
    display: grid;
    grid-template-columns: 1fr;
    gap: 24px;
    align-items: start;
}

.media-grid-2 {
    display: block;
    column-count: 2;
    column-gap: 24px;
}

.media-grid-3 {
    display: grid;
    grid-template-columns: 1fr 1fr 1fr;
}

.media-grid-2 .media-card {
    width: 100%;
    break-inside: avoid;
    -webkit-column-break-inside: avoid;
    margin: 0 0 24px;
}

.media-card {
    border: 1px solid #000;
    border-radius: var(--demo-box-radius);
    overflow: hidden;
    background: #fff;
    margin: 0;
    line-height: 0;
    display: flex;
    flex-direction: column;
    padding-bottom: 0;
}


.media-card img,
.media-card video {
    width: 100%;
    height: auto;
    display: block;
    margin: 0;
    flex: 0 0 auto;
}

.media-grid-2 .media-card img,
.media-grid-2 .media-card video {
    width: 100%;
    height: auto;
    object-fit: contain;
    object-position: top;
}

.tuister-gallery .media-card {
    padding-bottom: 0;
}

.tuister-gallery .media-card img {
    width: 100%;
    height: 320px;
    object-fit: cover;
    object-position: center;
}

.tuister-gallery .media-card.media-fit-full img {
    height: auto;
    object-fit: contain;
    object-position: center;
}

.video-card-tight {
    padding-bottom: 0;
}

.media-card-compact {
    max-width: min(100%, 760px);
    margin-left: auto;
    margin-right: auto;
}

.media-card-compact video {
    width: 100%;
    max-height: 520px;
    object-fit: contain;
    background: #000;
}

.tft-video-flex {
    display: flex;
    gap: 24px;
    margin-top: 2lh;
}

.tft-video-item {
    flex: 1 1 0;
    border: 1px solid #000;
    border-radius: var(--demo-box-radius);
    overflow: hidden;
    background: #fff;
}

.tft-video-item video {
    display: block;
    width: 100%;
    height: auto;
    border: 0;
    border-radius: 0;
    background: transparent;
}

.tft-video-flex + .journal-text {
    margin-top: 1.2lh;
}

.spi-overview-heading {
    margin-top: 1.2lh;
}

.journal-block .media-grid-2,
.journal-block .media-grid-3,
.three-para-stack .media-grid-2,
.three-para-stack .media-grid-3 {
    margin-top: 2lh;
}

.media-caption {
    padding: 8px 10px;
    color: var(--dark-grey);
    font-family: sometype mono, sans-serif;
    font-size: 12px;
    line-height: 1.3;
    border-top: 0;
    background: #fff;
    margin-top: -1px;
    text-align: center;
    text-transform: uppercase;
    max-width: 70%;
    margin-left: auto;
    margin-right: auto;
}


.media-full + .media-caption {
    border: 1px solid #000;
    border-top: 0;
    border-radius: 0 0 var(--demo-box-radius) var(--demo-box-radius);
    margin-top: -1px;
}

.clean-caption-edge {
    padding-bottom: 0;
}

.clean-caption-edge .media-caption {
    max-width: none;
    margin-top: 0;
    margin-left: 0;
    margin-right: 0;
}

.resistor-video-wrap {
    margin-top: 1.2lh;
}

.resistor-video-flip {
    padding: 0;
}

.resistor-video-flip video {
    transform: none;
    width: 100%;
    height: auto;
    object-fit: contain;
    display: block;
}

.resistor-image-flex {
    display: flex;
    gap: 16px;
    margin-top: 2lh;
}

.resistor-image-item {
    flex: 1 1 0;
    border: 1px solid #000;
    border-radius: var(--demo-box-radius);
    overflow: hidden;
    background: #fff;
}

.resistor-image-item img {
    width: 100%;
    height: auto;
    display: block;
    object-fit: contain;
    transform: rotate(180deg);
    transform-origin: center;
}

.wish-steps-flex {
    display: flex;
    gap: 16px;
    margin-top: 1.2lh;
}

.wish-steps-item {
    flex: 1 1 0;
    border: 1px solid #000;
    border-radius: var(--demo-box-radius);
    overflow: hidden;
    background: #fff;
}

.wish-steps-item img {
    width: 100%;
    height: auto;
    display: block;
    object-fit: contain;
}

.dev-concept-flex {
    display: flex;
    gap: 16px;
    margin-top: 1.2lh;
}

.dev-concept-item {
    flex: 1 1 0;
    border: 1px solid #000;
    border-radius: var(--demo-box-radius);
    overflow: hidden;
    background: #fff;
}

.dev-concept-item img {
    width: 100%;
    height: auto;
    display: block;
    object-fit: contain;
}

.media-full img,
.media-card img {
    cursor: zoom-in;
}

.image-lightbox {
    position: fixed;
    inset: 0;
    display: none;
    align-items: center;
    justify-content: center;
    padding: 28px;
    background: rgba(0, 0, 0, 0.84);
    z-index: 2000;
}

.image-lightbox.is-open {
    display: flex;
}

.image-lightbox-content {
    position: relative;
    max-width: min(92vw, 1400px);
    max-height: 88vh;
}

.image-lightbox img {
    width: 100%;
    max-width: 100%;
    max-height: 88vh;
    object-fit: contain;
    border: 1px solid #fff;
    border-radius: 6px;
    display: block;
}

.image-lightbox-close {
    position: absolute;
    top: -38px;
    right: 0;
    width: 30px;
    height: 30px;
    border: 1px solid #fff;
    border-radius: 999px;
    background: transparent;
    color: #fff;
    font-size: 18px;
    line-height: 1;
    cursor: pointer;
}

.right-edge-controls {
    position: fixed;
    right: 12px;
    bottom: 22px;
    display: flex;
    flex-direction: column;
    gap: 10px;
    z-index: 1200;
}

.edge-control-btn {
    width: 38px;
    height: 38px;
    border: 1px solid #000;
    border-radius: 999px;
    background: #fff;
    color: #000;
    font-size: 0;
    display: grid;
    place-items: center;
    padding-left: 0;
    cursor: pointer;
    position: relative;
}

#sectionPrevBtn::before,
#sectionNextBtn::before {
    content: "";
    width: 12px;
    height: 12px;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath d='M4 2l4 4-4 4' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: 62% 50%;
    background-size: 12px 12px;
    display: block;
    transform: translateX(2px);
}

#sectionPrevBtn::before {
    transform: translateX(2px) rotate(180deg);
    transform-origin: center;
}

#sectionNextBtn::before {
    transform: translateX(3px);
}

/* Scrollbar theme */
* {
    scrollbar-width: thin;
    scrollbar-color: #9a9a9a #ffffff;
}

*::-webkit-scrollbar {
    width: 10px;
    height: 10px;
}

*::-webkit-scrollbar-track {
    background: #ffffff;
}

*::-webkit-scrollbar-thumb {
    background: #9a9a9a;
    border: 1px solid #000;
    border-radius: 999px;
}

*::-webkit-scrollbar-thumb:hover {
    background: #7f7f7f;
}

.edge-control-btn.progress-btn {
    padding: 0;
    overflow: hidden;
}

.progress-ring {
    position: absolute;
    inset: 4px;
    transform: rotate(-90deg);
}

.progress-ring circle {
    fill: none;
    stroke-width: 2;
}

.progress-ring-bg {
    stroke: #d0d0d0;
}

.progress-ring-fill {
    stroke: #000;
    stroke-linecap: round;
    transition: stroke-dashoffset .15s linear;
}

.split-sticky-section {
    display: grid;
    grid-template-columns: 140px 1fr;
    gap: 20px;
    border-top: 1px solid #000;
    padding-top: 12px;
    padding-bottom: 14px;
}

.split-sticky-heading {
    position: sticky;
    top: 110px;
    align-self: start;
    font-size: 14px;
    text-transform: uppercase;
    letter-spacing: .04em;
}

.split-sticky-content {
    display: flex;
    flex-direction: column;
    gap: 14px;
    border-left: 1px solid #000;
    padding-left: 20px;
    position: sticky;
    top: var(--demo-top-offset);
    align-self: start;
}

.text-bullet-summary {
    border-top: 1px solid #000;
    padding-top: 12px;
    padding-bottom: 14px;
}

.text-bullet-summary ul {
    margin: 8px 0 0;
    padding-left: 18px;
}

.text-cards-2 {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 12px;
}

.journal-block > .journal-text + .text-cards-2 {
    margin-top: 1.5lh;
}

.text-card {
    border: 1px solid #000;
    border-radius: var(--demo-box-radius);
    padding: 10px 12px;
    background: #fff;
}

.text-card-title {
    font-size: 22px;
    line-height: 1.18;
    font-weight: 700;
    letter-spacing: -.005em;
    margin-bottom: 14px;
}

.pill-heading {
    display: inline-flex;
    align-items: center;
    gap: 8px;
}

.number-pill {
    width: 30px;
    height: 30px;
    border: 1px solid #000;
    border-radius: 999px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-family: sometype mono, sans-serif;
    font-size: 13px;
    line-height: 1;
    flex: 0 0 auto;
}

.three-para-stack {
    border-top: none;
    padding-top: 0;
    padding-bottom: 14px;
    display: grid;
    grid-template-columns: 1fr 1fr 1fr;
    gap: 12px;
}

.three-para-stack.no-divider {
    border-top: none;
    padding-top: 0;
}

.three-para-stack .journal-title {
    grid-column: 1 / -1;
    margin-bottom: 0;
}

.three-para-stack > .word-columns-2,
.three-para-stack > .word-columns-3 {
    grid-column: 1 / -1;
}

.reflection-snapshot {
    border-top: 1px solid #000;
    padding-top: 14px;
    padding-bottom: 14px;
    display: grid;
    grid-template-columns: 150px 1fr;
    gap: 24px;
}

.start-snapshot {
    border-top: 1px solid #000;
    padding-top: 14px;
    display: grid;
    grid-template-columns: 150px 1fr;
    gap: 24px;
}

.start-label {
    border-right: 1px solid #000;
    padding-right: 14px;
    font-family: sometype mono, sans-serif;
    font-size: 13px;
    letter-spacing: .02em;
    color: var(--dark-grey);
}

.start-kicker {
    font-family: sometype mono, sans-serif;
    font-size: 12px;
    letter-spacing: .06em;
    text-transform: uppercase;
    margin-bottom: 6px;
    color: var(--dark-grey);
}

.start-title {
    font-size: 30px;
    line-height: 1.08;
    font-weight: 500;
    margin-bottom: 12px;
}

.start-main .media-full {
    margin-top: 14px;
}

.week-hero {
    padding-top: 0;
    padding-bottom: 14px;
    scroll-margin-top: calc(var(--demo-top-offset, 144px) + 16px);
}

.week-hero-top {
    display: grid;
    grid-template-columns: 2fr 1fr;
    gap: 24px;
    align-items: start;
    padding-bottom: 8px;
}

.week-hero-title {
    font-family: space grotesk, sans-serif;
    font-size: clamp(48px, 7vw, 86px);
    line-height: .95;
    font-weight: 400;
    letter-spacing: .02em;
    text-transform: uppercase;
    overflow-wrap: anywhere;
    text-wrap: balance;
}

.week-hero-meta {
    display: flex;
    flex-direction: column;
    gap: 10px;
    justify-self: end;
    width: 100%;
    max-width: 380px;
    border-top: 1px solid #000;
    padding-top: 8px;
}

.week-hero-meta-row {
    display: grid;
    grid-template-columns: 86px 1fr;
    gap: 12px;
    align-items: start;
    padding-bottom: 8px;
    border-bottom: 1px solid #000;
}

.week-hero-meta-label {
    font-family: sometype mono, sans-serif;
    font-size: 12px;
    color: var(--dark-grey);
}

.week-hero-meta-value {
    font-family: space grotesk, sans-serif;
    font-size: 13px;
    justify-self: end;
}

.week-hero-tags {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    justify-content: flex-end;
}

.week-hero-tag {
    border: 1px solid #000;
    border-radius: 999px;
    padding: 3px 10px;
    font-family: sometype mono, sans-serif;
    font-size: 10px;
    text-transform: uppercase;
    line-height: 1.2;
}

.week-hero-image {
    margin-top: 18px;
}

.reflection-label {
    border-right: 1px solid #000;
    padding-right: 14px;
    font-family: sometype mono, sans-serif;
    font-size: 13px;
    letter-spacing: .02em;
    color: var(--dark-grey);
}

.reflection-main {
    max-width: none;
}

.reflection-kicker {
    font-family: sometype mono, sans-serif;
    font-size: 12px;
    letter-spacing: .06em;
    text-transform: uppercase;
    margin-bottom: 6px;
    color: var(--dark-grey);
}

.reflection-title {
    font-size: 30px;
    line-height: 1.08;
    font-weight: 500;
    margin-bottom: 12px;
}

.reflection-lead,
.reflection-body {
    font-size: 17px;
    line-height: 1.38;
    max-width: 980px;
}

.reflection-body {
    margin-top: 22px;
}

.reflection-columns {
    margin-top: 28px;
    display: grid;
    grid-template-columns: 1fr 1fr 1fr;
    gap: 20px;
}

.reflection-columns h3 {
    font-size: 17px;
    line-height: 1.22;
    font-weight: 600;
    margin-bottom: 10px;
}

.reflection-columns p {
    font-size: 14px;
    line-height: 1.4;
    font-family: space grotesk, tasa orbiter, sans-serif;
}

.reflection-under-image {
    margin-top: -34px;
}

.journal-table {
    width: 100%;
    border-collapse: separate;
    border-spacing: 0;
    border: 1px solid #000;
    border-radius: var(--demo-box-radius);
    overflow: hidden;
    margin-top: 8px;
}

.journal-table th,
.journal-table td {
    border-right: 1px solid #000;
    border-bottom: 1px solid #000;
    padding: 8px 10px;
    text-align: left;
    vertical-align: top;
}

.journal-table th:last-child,
.journal-table td:last-child {
    border-right: 0;
}

.journal-table tbody tr:last-child td {
    border-bottom: 0;
}

.journal-table th {
    font-weight: 600;
}

.para-grid-2,
.para-grid-3 {
    display: grid;
    gap: 12px;
}

.para-grid-2 {
    grid-template-columns: 1fr 1fr;
    column-gap: 36px;
    gap: 36px;
}

.para-grid-3 {
    grid-template-columns: 1fr 1fr 1fr;
}

.text-panel {
    border: 1px solid #000;
    border-radius: var(--demo-box-radius);
    background: #fff;
    padding: 10px 12px;
}

.text-panel .journal-subtitle,
.text-panel .boxed-outline-header {
    font-size: 22px;
    font-weight: 600;
    line-height: 1.15;
    border-bottom: 0;
    padding-bottom: 0;
    margin: 0 0 20px;
}

.media-text-split {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 12px;
}

.text-image-row {
    align-items: center;
    gap: 32px;
    margin-top: 24px;
}

.text-image-row + .text-image-row {
    margin-top: 36px;
}

.text-image-row .text-panel {
    min-width: 0;
}

.text-image-row-media {
    margin: 0;
    min-width: 0;
    align-self: center;
}

.text-image-row-media img,
.text-image-row-media video {
    width: 100%;
    height: auto;
    display: block;
    border-radius: var(--demo-box-radius, 6px);
}

.boxed-grid-3x2 {
    display: grid;
    grid-template-columns: 1fr 1fr 1fr;
    gap: 12px;
}

.boxed-outline-item {
    border: 1px solid #000;
    border-radius: var(--demo-box-radius);
    min-height: 150px;
    padding: 10px 12px;
    display: flex;
    flex-direction: column;
    justify-content: space-between;
}

.boxed-outline-header {
    font-size: 15px;
    font-weight: 600;
}

.boxed-outline-text {
    font-size: 17px;
    line-height: 1.3;
    font-family: space grotesk, tasa orbiter, sans-serif;
}

.module-section {
    border-top: 1px solid #000;
    padding-top: 14px;
    padding-bottom: 14px;
    display: flex;
    flex-direction: column;
    gap: 10px;
}

.module-title {
    font-size: 16px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: .03em;
    margin-bottom: 8px;
}

.module-subtitle {
    font-size: 13px;
    font-family: sometype mono, sans-serif;
    text-transform: uppercase;
    letter-spacing: .06em;
    margin-top: 10px;
}

.word-columns-2,
.word-columns-3 {
    display: grid;
    gap: 12px;
}

.word-columns-2 {
    grid-template-columns: 1fr 1fr;
    column-gap: 36px;
    gap: 36px;
}

.word-columns-3 {
    grid-template-columns: 1fr 1fr 1fr;
}

.word-card {
    border: 1px solid #000;
    border-radius: var(--demo-box-radius);
    padding: 10px 12px;
    background: #fff;
    line-height: 1.4;
    font-family: space grotesk, tasa orbiter, sans-serif;
}

.word-columns-plain {
    border-top: 0;
    padding-top: 0;
}

.word-plain {
    line-height: 1.38;
    font-size: 17px;
    font-family: space grotesk, tasa orbiter, sans-serif;
    padding-left: 34px;
    padding-right: 34px;
    margin-top: 12px;
    margin-bottom: 12px;
}

.para-grid-2 .text-panel {
    padding-left: 34px;
    padding-right: 34px;
}

.five-col-grid {
    display: grid;
    grid-template-columns: repeat(5, minmax(0, 1fr));
    gap: 18px;
}

.five-col-grid.with-column-dividers {
    gap: 0;
}

.five-col-grid.with-column-dividers .text-panel {
    border: 0;
    border-radius: 0;
    background: transparent;
    padding: 0 18px;
}

.five-col-grid.with-column-dividers .text-panel + .text-panel {
    border-left: 1px solid #000;
}

.para-grid-3.with-column-dividers {
    gap: 0;
    margin-top: 2lh;
}

.para-grid-3.with-column-dividers .text-panel {
    border: 0;
    border-radius: 0;
    background: transparent;
    padding: 0 18px;
}

.para-grid-3.with-column-dividers .text-panel + .text-panel {
    border-left: 1px solid #000;
}

.para-grid-3.with-column-dividers .word-plain {
    padding: 0 18px;
}

.para-grid-3.with-column-dividers .word-plain + .word-plain {
    border-left: 1px solid #000;
}

.para-grid-3.with-column-dividers.scope-columns .word-plain + .word-plain {
    border-left: 1px solid #000;
}

.two-col-divider-table {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 0;
    margin-top: 2lh;
}

.two-col-divider-table .word-plain {
    padding: 0 18px;
}

.two-col-divider-table .word-plain:nth-child(2n) {
    border-left: 1px solid #000;
}

.two-col-divider-table .word-plain:nth-child(n + 3) {
    border-top: 1px solid #000;
    padding-top: 1.25lh;
}

.tft-row-list {
    margin-top: 1.25lh;
    border-top: 1px solid #000;
}

.tft-row-list-header,
.tft-row-list-row {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    column-gap: 28px;
    padding: .48lh 0;
    border-bottom: 1px solid #000;
}

.tft-row-list-header .journal-text {
    margin: 0;
    font-family: sometype mono, sans-serif;
    font-size: 18px;
    font-weight: 700;
    letter-spacing: .02em;
    text-transform: uppercase;
}

.tft-row-list-row .journal-text {
    margin: 0;
}

.tft-row-list + .media-grid-1 {
    margin-top: 1.2lh;
}

.feedback-rows {
    margin-top: 2lh;
    margin-bottom: 2lh;
}

.feedback-row {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 2fr);
    gap: 36px;
    padding: 1lh 0;
}

.feedback-row + .feedback-row {
    border-top: 1px solid #000;
}

.feedback-row:last-child {
    border-bottom: 1px solid #000;
}

.feedback-row .option-subhead-plain {
    margin: 0;
}

.feedback-row .journal-text {
    margin: 0;
}

.scope-columns .option-subhead-plain {
    font-weight: 700;
}

.para-grid-2.with-column-dividers {
    gap: 0;
}

.para-grid-2.with-column-dividers .word-plain {
    padding: 0 18px;
}

.para-grid-2.with-column-dividers .word-plain + .word-plain {
    border-left: 1px solid #000;
}

.tft-intro-columns .word-plain:first-child {
    padding-left: 0;
}

.hackathon-section .option-subhead-plain {
    font-weight: 700;
}

.hackathon-section .media-card {
    padding-bottom: 0;
}

.plain-media {
    display: block;
    width: 100%;
    height: auto;
    border: 0;
    border-radius: 0;
    background: transparent;
}

.technical-constraints-section .option-subhead-plain {
    font-weight: 700;
}

.token-concept-section .media-card + .para-grid-3 {
    margin-top: 1.5lh;
}

.token-concept-section .media-card {
    padding-bottom: 0;
}

/* Unified numbered heading system for boxed paragraph cards */
.boxed-grid-3x2,
.para-grid-2:not(.with-column-dividers),
.para-grid-3:not(.with-column-dividers),
.five-col-grid:not(.with-column-dividers) {
    counter-reset: boxedHeading;
}

.boxed-grid-3x2 .boxed-outline-item,
.para-grid-2:not(.with-column-dividers) .text-panel,
.para-grid-3:not(.with-column-dividers) .text-panel,
.five-col-grid:not(.with-column-dividers) .text-panel {
    counter-increment: boxedHeading;
}

.boxed-grid-3x2 .boxed-outline-header,
.para-grid-2:not(.with-column-dividers) .text-panel .journal-subtitle,
.para-grid-3:not(.with-column-dividers) .text-panel .journal-subtitle,
.five-col-grid:not(.with-column-dividers) .text-panel .journal-subtitle {
    display: flex;
    align-items: center;
    gap: 10px;
    font-size: 15px !important;
    line-height: 1.3 !important;
    font-weight: 600 !important;
    border-bottom: 0;
    padding-bottom: 0;
    margin-bottom: 10px !important;
}

.boxed-grid-3x2 .boxed-outline-header {
    font-size: 15px !important;
    line-height: 1.3 !important;
    font-weight: 600 !important;
    margin-bottom: 10px !important;
}

.boxed-grid-3x2 .boxed-outline-header::before,
.para-grid-2:not(.with-column-dividers) .text-panel .journal-subtitle::before,
.para-grid-3:not(.with-column-dividers) .text-panel .journal-subtitle::before,
.five-col-grid:not(.with-column-dividers) .text-panel .journal-subtitle::before {
    content: counter(boxedHeading);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 24px;
    height: 24px;
    border: 1px solid #000;
    border-radius: 999px;
    font-family: sometype mono, sans-serif;
    font-size: 12px;
    line-height: 1;
    font-weight: 600;
    flex: 0 0 24px;
}

.response-grid-variable {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
    gap: 0;
    border-top: 1px solid #000;
    border-left: 1px solid #000;
    margin-top: 2lh;
}

.response-grid-item {
    border-right: 1px solid #000;
    border-bottom: 1px solid #000;
    padding: 12px 14px;
    font-family: space grotesk, tasa orbiter, sans-serif;
    font-size: 14px;
    line-height: 1.4;
}

.left-column-width {
    max-width: calc((100% - 36px) / 2);
}

/* Global vertical rhythm: minimum ~4 lines between sibling elements */
.journal-column > * + * {
    margin-top: 2lh;
}

/* Exception: do not force large gap when image elements follow images */
.journal-column .media-full + .media-full,
.journal-column .media-card + .media-card,
.journal-column figure + figure {
    margin-top: 16px;
}

.row-divider-list {
    border-top: 1px solid #000;
}

.row-divider-item {
    border-bottom: 1px solid #000;
    padding: 9px 0;
    display: grid;
    gap: 10px;
}

.row-divider-item.two-col {
    grid-template-columns: 1fr 1fr;
}

.row-divider-item.three-col {
    grid-template-columns: 1fr 1fr 1fr;
}

.experiment-split-section {
    display: grid;
    grid-template-columns: 1.5fr 1fr;
    gap: 28px;
    border-top: 1px solid #000;
    padding-top: 14px;
    padding-bottom: 14px;
}

.experiment-left .experiment-kicker {
    font-family: sometype mono, sans-serif;
    font-size: 13px;
    text-transform: uppercase;
    letter-spacing: .04em;
    margin-bottom: 8px;
}

.experiment-left .experiment-heading {
    font-size: 46px;
    line-height: 1.02;
    font-weight: 400;
    margin-bottom: 18px;
}

.experiment-left .experiment-summary {
    max-width: 92%;
    line-height: 1.35;
}

.experiment-steps {
    border-left: 1px solid #000;
    padding-left: 20px;
}

.experiment-step {
    display: grid;
    grid-template-columns: 46px 1fr;
    gap: 12px;
    padding: 12px 0;
    border-top: 1px solid #000;
}

.experiment-step:first-child {
    border-top: 0;
    padding-top: 0;
}

.experiment-step-pill {
    width: 40px;
    height: 40px;
    border: 1px solid #000;
    border-radius: 999px;
    display: flex;
    align-items: center;
    justify-content: center;
    font-family: sometype mono, sans-serif;
    font-weight: 500;
    font-size: 22px;
    line-height: 1;
}

.experiment-step-title {
    font-size: 22px;
    line-height: 1.15;
    font-weight: 600;
    margin-bottom: 8px;
}

.experiment-step-text {
    line-height: 1.35;
    font-family: space grotesk, tasa orbiter, sans-serif;
}

@media screen and (max-width:991px) {
    .project-demo-main {
        padding-left: 0;
        padding-right: 0;
    }

    .project-demo-layout {
        grid-template-columns: 1fr;
    }

    .project-weeks-column {
        position: static;
        border-bottom: 1px solid #000;
        padding-left: 0;
        padding-right: 0;
        padding-bottom: 10px;
    }

    .semester-dropdown {
        padding-left: 0;
        padding-right: 0;
    }

    .project-weeks-list {
        flex-flow: column;
        gap: 8px;
    }

    .project-demo-layout::before {
        display: none;
    }

    .split-sticky-section {
        grid-template-columns: 1fr;
    }

    .text-cards-2 {
        grid-template-columns: 1fr;
    }

    .split-sticky-heading {
        position: static;
    }

    .split-sticky-content {
        border-left: 0;
        padding-left: 0;
        position: static;
    }

    .para-grid-2,
    .para-grid-3,
    .five-col-grid,
    .media-text-split,
    .boxed-grid-3x2,
    .word-columns-2,
    .word-columns-3,
    .row-divider-item.two-col,
    .row-divider-item.three-col,
    .three-para-stack,
    .experiment-split-section,
    .start-snapshot,
    .reflection-snapshot,
    .reflection-columns {
        grid-template-columns: 1fr;
    }

    .start-label,
    .reflection-label {
        border-right: 0;
        border-bottom: 1px solid #000;
        padding-right: 0;
        padding-bottom: 8px;
        margin-bottom: 4px;
    }

    .reflection-title {
        font-size: 24px;
    }

    .reflection-lead,
    .reflection-body {
        font-size: 18px;
    }

    .reflection-columns h3 {
        font-size: 18px;
    }

    .reflection-columns p {
        font-size: 15px;
    }

    .journal-title {
        font-size: clamp(34px, 9vw, 48px);
        line-height: .98;
    }

    .journal-title::before {
        font-size: 11px;
        letter-spacing: .12em;
    }

    .week-hero-top {
        grid-template-columns: 1fr;
    }

    .week-hero-meta-row {
        grid-template-columns: 1fr;
        gap: 6px;
    }

    .week-hero-meta-value,
    .week-hero-tags {
        justify-self: start;
        justify-content: flex-start;
    }

    .experiment-steps {
        border-left: 0;
        padding-left: 0;
        border-top: 1px solid #000;
        padding-top: 10px;
    }
}

@media screen and (max-width:767px) {
    .project-demo-page::before {
        display: none;
    }

    .project-demo-page {
        background: #fff;
        background-image: none;
        background-attachment: scroll;
    }

    .project-demo-page:not(.repo-page) .project-demo-main {
        padding-top: var(--content-top-offset);
        padding-left: 20px;
        padding-right: 20px;
    }

    .project-demo-page:not(.repo-page) .project-demo-layout {
        gap: 16px;
    }

    .project-demo-page:not(.repo-page) .project-weeks-column {
        padding-left: 0;
        padding-right: 0;
    }

    .project-demo-page:not(.repo-page) .journal-column {
        padding-left: 0;
        padding-right: 0;
    }

    .homepage-content .table-headings-wrapper {
        margin-top: 0;
        padding-top: 0;
    }

    .project-demo-page:not(.repo-page) .week-hero-image {
        margin-top: clamp(36px, 28vh, 140px);
    }

    .media-grid-2,
    .media-grid-3 {
        grid-template-columns: 1fr;
    }

    .right-edge-controls {
        display: none;
    }
}

@media screen and (min-width:992px) {
    .project-demo-layout {
        display: block;
        position: relative;
    }

    .project-demo-layout::before {
        left: 280px;
        position: fixed;
        top: var(--demo-top-offset);
        bottom: 20px;
    }

    .project-weeks-column {
        position: fixed;
        top: var(--demo-top-offset);
        left: 10px;
        width: 260px;
        height: calc(100vh - var(--demo-top-offset) - 20px);
        max-height: none;
        overflow: hidden;
        padding: 0 12px;
    }

    .project-weeks-column .semester-nav-group {
        flex: 1;
        overflow-y: auto;
        overflow-x: hidden;
    }

    .journal-column {
        margin-left: 296px;
    }
}

/* =============================================================================
   Journal homepage (journal.html)
   Webflow helpers + focus
   ============================================================================= */

.wf-force-outline-none[tabindex="-1"]:focus {
    outline: none;
}

@media (min-width: 992px) {
    html.w-mod-js:not(.w-mod-ix) [data-w-id="d54b7a07-a77f-77ce-02c5-4a1dd9082f90"] {
        display: block;
    }

    html.w-mod-js:not(.w-mod-ix) [data-w-id="66fd4895-ec41-b454-3d53-b21831e06cc6"] {
        display: none;
    }
}

@media (max-width: 991px) and (min-width: 768px) {
    html.w-mod-js:not(.w-mod-ix) [data-w-id="d54b7a07-a77f-77ce-02c5-4a1dd9082f90"] {
        display: block;
    }

    html.w-mod-js:not(.w-mod-ix) [data-w-id="66fd4895-ec41-b454-3d53-b21831e06cc6"] {
        display: none;
    }
}

/* Journal fixed bottom: keep row strip aligned; no vertical transform (both paras lower / natural). */
.homepage-content .project-info-wrapper {
    align-items: flex-start;
}

.homepage-content .project-info-wrapper-placeholder .project-paragraph-wrapper,
.homepage-content .project-info-wrapper .project-paragraph-wrapper {
    transform: none !important;
    margin-bottom: clamp(12px, 2vw, 28px);
}

/* journal.html — first column title matches repo REPOSITORY (Space Grotesk + clamp size) */
.homepage-content .table-headings-wrapper {
    grid-row-gap: 8px;
}

.homepage-content .table-headings-wrapper > h2.table-heading:first-of-type {
    font-family: space grotesk, sans-serif;
    font-size: clamp(36px, 5vw, 62px);
    line-height: 1.02;
    font-weight: 400;
    letter-spacing: -0.02em;
    margin-top: 0;
    margin-bottom: 0;
    padding-bottom: 2px;
}

@media screen and (max-width: 767px) {
    .homepage-content .table-headings-wrapper > h2.table-heading:first-of-type {
        font-size: 46px;
        line-height: 1.02;
        font-weight: 400;
        padding-bottom: 2px;
    }
}

/* Journal bottom strip: description paragraphs + default placeholder text */
.homepage-content .project-info-wrapper .project-paragraph-wrapper p,
.homepage-content .project-info-wrapper-placeholder .homepage-heading {
    font-family: sometype mono, sans-serif;
    font-size: 11px;
    font-weight: 400;
    line-height: 1.35;
    text-transform: uppercase;
    letter-spacing: 0.01em;
}

/* =============================================================================
   Repository (repo.html)
   ============================================================================= */

.repo-page {
    --page-gutter: 20px;
}

.repo-journal-column .repo-intro-block {
    border-top: 0;
    padding-top: 0;
}

.repo-journal-column .repo-section-block {
    border-top: 0;
    padding-top: 0;
}

.repo-page .project-demo-main {
    --repo-col-image: clamp(140px, 18vw, 220px);
    --demo-top-offset: var(--content-top-offset);
    --repo-right-gutter: 12px;
    --repo-scroll-inner-pad: 8px;
    --repo-bottom-gap: 20px;
    position: relative;
    z-index: 3;
    padding-left: var(--page-gutter, 20px);
    padding-right: 0;
    padding-bottom: 0;
}

.repo-page .repo-journal-column {
    --repo-col-image: clamp(140px, 18vw, 220px);
    gap: clamp(28px, 4vw, 56px);
    padding-left: 0;
    padding-right: 0;
}

.repo-intro-lead {
    display: grid;
    grid-template-columns: 260px 24px 18px var(--repo-col-image) minmax(0, 1.15fr) minmax(0, 0.85fr) minmax(0, 1.35fr) minmax(0, 1fr);
    gap: 0;
    align-items: start;
    width: 100%;
    box-sizing: border-box;
    overflow: visible;
}

.repo-intro-lead .repo-title {
    grid-column: 1 / 6;
    margin: 0;
    padding: 0 12px 0 0;
    min-width: 0;
}

.repo-intro-lead .repo-description {
    grid-column: 7 / -1;
    margin: 0;
    max-width: none;
    border-left: 0;
    padding: 0.35em 0 0 0;
    min-width: 0;
    box-sizing: border-box;
}

.repo-page .project-demo-main > .repo-intro-block {
    border-top: 0;
    padding-top: 0;
    margin-bottom: clamp(20px, 2.8vw, 34px);
}

@media screen and (min-width: 992px) {
    .repo-page.project-demo-page {
        overflow: hidden;
    }

    .repo-page.project-demo-page .page-wrapper {
        height: 100vh;
        min-height: 100vh;
        overflow: hidden;
        padding-bottom: 0;
    }

    .repo-page .project-demo-main {
        height: 100vh;
        overflow: hidden;
        display: grid;
        grid-template-rows: auto minmax(0, 1fr);
        box-sizing: border-box;
        padding-top: calc(var(--demo-top-offset) + 12px);
        padding-left: var(--page-gutter, 20px);
        padding-right: var(--page-gutter, 20px);
        padding-bottom: 0px;
    }

    .repo-page .project-demo-main > .repo-intro-block {
        margin-top: 10px;
        margin-bottom: 12px;
    }

    .repo-page .repo-intro-lead .repo-description {
        margin-top: 10px;
    }

    .repo-page .project-demo-layout.repo-demo-layout {
        display: grid;
        grid-template-columns: 260px minmax(0, 1fr);
        gap: 24px;
        align-items: stretch;
        position: relative;
        height: 100%;
        min-height: 0;
    }

    .repo-page .project-demo-layout.repo-demo-layout::before {
        position: absolute;
        top: 0;
        bottom: var(--repo-bottom-gap);
        left: 280px;
    }

    .repo-page .project-demo-layout.repo-demo-layout .repo-divisions-sidebar.project-weeks-column {
        position: sticky;
        top: var(--demo-top-offset);
        left: auto;
        width: 100%;
        height: 100%;
        max-height: none;
        overflow: hidden;
        padding: 0 12px var(--repo-bottom-gap) 0;
    }

    .repo-page .project-demo-layout.repo-demo-layout .journal-column.repo-journal-column {
        margin-left: 0;
        display: flex;
        flex-direction: column;
        height: 100%;
        min-height: 0;
        overflow: hidden;
        padding-left: 24px;
    }

    .repo-page .project-demo-layout.repo-demo-layout .repo-section-block {
        display: flex;
        flex-direction: column;
        flex: 1 1 auto;
        min-height: 0;
        height: 100%;
        overflow: hidden;
        padding-bottom: var(--repo-bottom-gap);
    }

    .repo-page .project-demo-layout.repo-demo-layout .repo-matrix-wrap {
        flex: 1 1 auto;
        min-height: 0;
        height: 100%;
        overflow-y: auto;
        overflow-x: hidden;
        padding-right: var(--repo-scroll-inner-pad);
        scrollbar-gutter: stable;
    }

    .repo-page .project-demo-layout.repo-demo-layout .repo-matrix-head {
        position: sticky;
        top: 0;
        z-index: 2;
        background: #fff;
    }
}

@media screen and (max-width: 991px) {
    .repo-intro-lead {
        display: block;
        overflow-x: visible;
    }

    .repo-intro-lead .repo-title {
        grid-column: auto;
        padding: 0;
    }

    .repo-intro-lead .repo-description {
        grid-column: auto;
        padding: 0;
        margin-top: 10px;
    }

    .repo-section-active-title {
        font-size: clamp(28px, 6vw, 40px);
    }

    .repo-page.project-demo-page .repo-divisions-sidebar.project-weeks-column {
        padding-left: 0;
        padding-right: 0;
    }
}

.repo-title {
    margin: 0 0 10px;
    font-family: space grotesk, sans-serif;
    font-size: clamp(36px, 5vw, 62px);
    line-height: 1.02;
    font-weight: 400;
}

.repo-section-active-title {
    font-family: space grotesk, sans-serif;
    font-size: 46px;
    line-height: 1.02;
    font-weight: 500;
    letter-spacing: -.01em;
    margin: 0 0 16px;
}

.repo-description {
    margin: 0;
    max-width: 860px;
    font-family: tasa orbiter, sans-serif;
    font-size: 18px;
    line-height: 1.42;
}

.repo-page.project-demo-page .repo-divisions-sidebar.project-weeks-column {
    padding-left: 18px;
    padding-right: 18px;
}

.repo-nav-flat {
    width: 100%;
    box-sizing: border-box;
}

.repo-category-list {
    list-style: none;
    margin: 0;
    padding: 0;
    width: 100%;
    display: flex;
    flex-direction: column;
}

.repo-category-row:not(:last-child) {
    border-bottom: 1px solid #000;
}

.repo-category-row {
    margin: 0;
}

.repo-category-row:first-child {
    padding-top: 2px;
}

.repo-page .repo-divisions-sidebar .project-week-item {
    font-size: 17px;
}

.repo-page .repo-divisions-sidebar .project-week-name {
    font-size: 17px;
}

.repo-page .repo-divisions-sidebar .project-week-meta {
    font-size: 13px;
}

.repo-divisions-sidebar .project-week-item > .repo-division-link {
    grid-column: 1 / -1;
    min-width: 0;
    padding: 12px 0;
}

.repo-division-link {
    background: none;
    border: 0;
    padding: 0;
    margin: 0;
    width: 100%;
    cursor: none;
    font: inherit;
    color: inherit;
    text-align: left;
}

.repo-division-link:focus-visible {
    outline: 2px solid #000;
    outline-offset: 2px;
}

#repoSectionHeading {
    margin-bottom: 16px;
}

.repo-matrix-wrap {
    --repo-line-row: rgba(0, 0, 0, 0.35);
    --repo-line-col: rgba(0, 0, 0, 0.18);
    --repo-thumb-radius: 8px;
    --repo-matrix-min: 720px;
    display: grid;
    grid-template-columns: var(--repo-col-image) minmax(0, 1.15fr) minmax(0, 0.85fr) minmax(0, 1.35fr) minmax(0, 1fr);
    grid-auto-rows: auto;
    align-content: start;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    width: 100%;
    min-width: 0;
    box-sizing: border-box;
}

@media screen and (min-width: 768px) and (max-width: 991px) {
    .repo-matrix-wrap {
        min-width: var(--repo-matrix-min);
        padding-bottom: 8px;
    }
}

.repo-matrix-head,
.repo-row {
    grid-column: 1 / -1;
    display: grid;
    grid-template-columns: subgrid;
    align-items: start;
    box-sizing: border-box;
}

@supports not (grid-template-columns: subgrid) {
    .repo-matrix-head,
    .repo-row {
        grid-template-columns: var(--repo-col-image) minmax(0, 1.15fr) minmax(0, 0.85fr) minmax(0, 1.35fr) minmax(0, 1fr);
    }
}

.repo-matrix-rows {
    display: contents;
}

.repo-matrix-head {
    border-bottom: 1px solid var(--repo-line-row);
    background: transparent;
    font-family: sometype mono, monospace;
    font-size: 11px;
    letter-spacing: .08em;
    text-transform: uppercase;
    color: #000;
}

.repo-hd-cell {
    padding: 8px 12px 10px 0;
    box-sizing: border-box;
    min-width: 0;
}

.repo-hd-cell:not(:first-child) {
    border-left: 1px solid transparent;
    padding-left: 12px;
}

.repo-hd-cell:last-child {
    text-align: right;
    padding-right: 0;
}

.repo-row {
    border-bottom: 1px solid var(--repo-line-row);
    padding: 14px 0;
    margin: 0;
}

.repo-row:last-child {
    border-bottom: 0;
}

.repo-cell {
    padding: 0 12px 0 0;
    min-width: 0;
    box-sizing: border-box;
}

.repo-cell:not(:first-child) {
    border-left: 1px solid var(--repo-line-col);
    padding-left: 12px;
}

.repo-cell--ref {
    text-align: right;
    padding-right: 0;
}

.repo-cell--thumb .repo-thumb-wrap {
    position: relative;
    height: var(--repo-thumb-height, 168px);
    width: 100%;
    max-width: 100%;
    background: #fff;
    border: 1px solid var(--repo-line-row);
    border-radius: var(--repo-thumb-radius);
    overflow: hidden;
    box-sizing: border-box;
}

.repo-thumb-wrap.repo-thumb-wrap--empty {
    background: #fff;
}

.repo-thumb {
    position: absolute;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center center;
}

.repo-card-title {
    margin: 0;
    font-family: space grotesk, sans-serif;
    font-size: 18px;
    line-height: 1.2;
    font-weight: 600;
}

.repo-card-author {
    margin: 0;
    font-family: sometype mono, monospace;
    font-size: 12px;
    letter-spacing: .04em;
    text-transform: uppercase;
    color: #555;
}

.repo-card-desc {
    margin: 0;
    font-family: tasa orbiter, sans-serif;
    font-size: 14px;
    line-height: 1.35;
    color: #222;
}

.repo-card-reference {
    margin: 0 0 6px;
    font-family: tasa orbiter, sans-serif;
    font-size: 12px;
    line-height: 1.35;
    color: #666;
}

.repo-cell--ref .repo-card-link {
    margin-top: 2px;
}

.repo-card-link {
    display: inline-block;
    font-family: sometype mono, monospace;
    font-size: 12px;
    letter-spacing: .04em;
    text-transform: uppercase;
    color: #000;
    text-decoration: none;
    border-bottom: 1px solid #000;
}

.repo-card-link:hover {
    color: #1f47ff;
    border-bottom-color: #1f47ff;
}

.repo-mobile-label {
    display: none;
}

@media screen and (max-width: 767px) {
    .repo-page .project-demo-main {
        --demo-top-offset: var(--content-top-offset, 95px);
    }

    .repo-page .project-demo-main {
        padding-left: 20px;
        padding-right: 20px;
    }

    .repo-page .repo-journal-column {
        gap: 24px;
        padding-left: 0;
        padding-right: 0;
    }

    .repo-page.project-demo-page .repo-divisions-sidebar.project-weeks-column {
        padding-left: 0;
        padding-right: 0;
    }

    .repo-title {
        font-size: 46px;
    }

    .repo-description {
        font-size: 15px;
        line-height: 1.45;
    }

    .repo-section-active-title {
        font-size: clamp(24px, 8vw, 34px);
        margin-bottom: 12px;
    }

    .repo-matrix-wrap {
        display: block;
        overflow-x: visible;
        min-width: 0;
        padding-bottom: 8px;
    }

    .repo-matrix-head {
        display: none;
    }

    #repo-items.repo-matrix-rows {
        display: block;
        padding-bottom: 12px;
    }

    .repo-row {
        --repo-mobile-label-col: 92px;
        --repo-mobile-col-gap: 12px;
        --repo-mobile-divider-top: 330px;
        --repo-mobile-divider-bottom: 140px;
        display: block;
        border: 1px solid var(--repo-line-row);
        border-radius: var(--repo-thumb-radius);
        padding: 14px 14px 16px;
        margin-bottom: 12px;
        position: relative;
    }

    .repo-row:last-child {
        border-bottom: 1px solid var(--repo-line-row);
        margin-bottom: 12px;
    }

    .repo-cell {
        border-left: 0 !important;
        padding: 0 0 18px !important;
    }

    .repo-cell:last-child {
        padding-bottom: 0 !important;
    }

    .repo-cell--thumb .repo-thumb-wrap {
        height: 200px;
        max-width: none;
        width: 100%;
    }

    .repo-cell--thumb {
        padding-bottom: 24px !important;
    }

    .repo-cell--title,
    .repo-cell--author,
    .repo-cell--desc,
    .repo-cell--ref {
        display: grid;
        grid-template-columns: minmax(0, 1fr) var(--repo-mobile-label-col);
        column-gap: var(--repo-mobile-col-gap);
        align-items: start;
    }

    .repo-mobile-label {
        display: block;
        grid-column: 2;
        justify-self: start;
        text-align: left;
        font-family: sometype mono, monospace;
        font-size: 10px;
        line-height: 1;
        letter-spacing: 0.08em;
        text-transform: uppercase;
        color: #666;
        align-self: start;
        margin: 0;
        padding-top: .35em;
    }

    .repo-cell--ref {
        text-align: left;
    }

    .repo-cell--title .repo-card-title,
    .repo-cell--author .repo-card-author,
    .repo-cell--desc .repo-card-desc,
    .repo-cell--ref .repo-card-reference,
    .repo-cell--ref .repo-card-link {
        grid-column: 1;
        align-self: start;
    }

    .repo-cell--ref .repo-card-reference {
        margin-bottom: 8px;
    }

    .repo-cell--ref .repo-card-link {
        border-bottom: 0;
        text-decoration: none;
    }

}

/* ---------------------------------------------------------------------------
   Catalogue of Making
--------------------------------------------------------------------------- */

html:has(body.catalogue-page),
body.catalogue-page {
    height: 100vh;
    min-height: 100vh;
    overflow: hidden;
}

.catalogue-page .page-wrapper {
    height: 100vh;
    min-height: 100vh;
    padding: 0;
    overflow: hidden;
}

.catalogue-main {
    --demo-top-offset: max(124px, calc(13vh + 18px));
    padding: var(--demo-top-offset) 0 0;
    position: relative;
    z-index: 1;
    height: 100vh;
    box-sizing: border-box;
    overflow: hidden;
}

.catalogue-split {
    display: grid;
    grid-template-columns: minmax(220px, 0.72fr) auto minmax(0, 2.28fr);
    column-gap: 0;
    align-items: stretch;
    height: 100%;
    min-height: 0;
}

.catalogue-index,
.catalogue-panels {
    min-width: 0;
    min-height: 0;
    height: 100%;
    overflow-y: auto;
    overscroll-behavior: contain;
}

.catalogue-index {
    align-self: stretch;
    padding: 0;
    overflow: hidden;
    /* Custom scrollbar that stays unobtrusive */
    scrollbar-width: none;
}

.catalogue-panels {
    padding: 0 36px;
    scrollbar-width: thin;
}

.catalogue-entry-list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    gap: 0;
    height: 100%;
    min-height: 0;
    border-top: 1px solid rgba(0, 0, 0, 0.26);
}

.catalogue-entry {
    display: flex;
    flex: 1 1 0;
    min-height: 0;
    margin: 0;
    border-bottom: 1px solid rgba(0, 0, 0, 0.26);
}

.catalogue-entry:last-child {
    border-bottom: 0;
}

.catalogue-entry-link {
    display: flex;
    flex-direction: column;
    justify-content: center;
    gap: 2px;
    width: 100%;
    padding: clamp(5px, 0.55vh, 9px) 36px;
    background: transparent;
    border: 0;
    text-align: left;
    color: inherit;
    cursor: none;
    font-family: inherit;
    text-decoration: none;
    transition: opacity 0.2s ease, transform 0.2s ease;
}

.catalogue-entry-link:hover {
    opacity: 0.6;
}

.catalogue-entry.is-active .catalogue-entry-link {
    opacity: 1;
    background: #000;
    color: #fff;
}

.catalogue-entry.is-active .catalogue-entry-name {
    font-style: italic;
}

.catalogue-entry.is-active .catalogue-entry-meta {
    color: rgba(255, 255, 255, 0.82);
}

.catalogue-entry-name {
    font-family: "space grotesk", sans-serif;
    font-size: clamp(18px, 1.55vw, 26px);
    line-height: 1.12;
    font-weight: 500;
    display: block;
}

.catalogue-entry-meta {
    font-family: "sometype mono", monospace;
    font-size: 11px;
    letter-spacing: 0.06em;
    color: var(--dark-grey, #555);
    text-transform: uppercase;
    display: block;
}

.catalogue-divider {
    position: relative;
    width: 56px;
    background: #000;
    align-self: stretch;
    margin: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    overflow: hidden;
}

.catalogue-divider-label {
    writing-mode: vertical-rl;
    font-family: "space grotesk", sans-serif;
    font-size: 18px;
    font-weight: 500;
    letter-spacing: 0.28em;
    text-transform: uppercase;
    white-space: nowrap;
    color: #fff;
}

.catalogue-panels {
    position: relative;
    scroll-behavior: smooth;
}

.catalogue-panel {
    display: flex;
    flex-direction: column;
    gap: 20px;
    padding: 48px 0;
    border-top: 1px solid rgba(0, 0, 0, 0.15);
}

.catalogue-panel:first-child {
    border-top: 0;
    padding-top: 0;
}

.catalogue-panel:last-child {
    padding-bottom: 80px;
}

.catalogue-panel-header {
    max-width: none;
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(180px, 220px);
    column-gap: 28px;
    align-items: start;
}

.catalogue-panel-header > :not(.catalogue-panel-tools) {
    grid-column: 1;
}

.catalogue-panel-tools {
    display: none;
    grid-column: 2;
    grid-row: 1 / span 8;
    align-self: start;
    border-top: 1px solid rgba(0, 0, 0, 0.2);
    border-bottom: 1px solid rgba(0, 0, 0, 0.2);
}

.catalogue-panel-tools-title,
.catalogue-panel-tools-item {
    margin: 0;
    padding: 8px 0;
    border-bottom: 1px solid rgba(0, 0, 0, 0.18);
}

.catalogue-panel-tools-title {
    font-family: "sometype mono", monospace;
    font-size: 11px;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    font-weight: 700;
}

.catalogue-panel-tools-item {
    font-family: "space grotesk", sans-serif;
    font-size: 14px;
    line-height: 1.25;
}

.catalogue-panel-tools-item:last-child {
    border-bottom: 0;
}

.catalogue-panel-kicker {
    font-family: "sometype mono", monospace;
    font-size: 12px;
    letter-spacing: 0.16em;
    text-transform: uppercase;
    color: var(--dark-grey, #555);
    margin: 0 0 10px;
}

.catalogue-panel-title {
    font-family: "space grotesk", sans-serif;
    font-size: clamp(40px, 5.5vw, 72px);
    line-height: 1;
    font-weight: 400;
    text-transform: uppercase;
    letter-spacing: 0.02em;
    margin: 0 0 20px;
    overflow-wrap: anywhere;
    text-wrap: balance;
}

.catalogue-panel-intro {
    font-family: "space grotesk", sans-serif;
    font-size: 17px;
    line-height: 1.55;
    margin: 0;
    max-width: 68ch;
}

.catalogue-panel-intro-columns {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    column-gap: 28px;
    row-gap: 12px;
}

.catalogue-panel-intro-columns .catalogue-panel-intro {
    max-width: none;
}

.catalogue-panel-body {
    display: flex;
    flex-direction: column;
    gap: 20px;
}

.catalogue-panel-body .media-full {
    margin: 0;
    padding-bottom: 0;
}

.catalogue-panel-body .media-full img,
.catalogue-panel-body .media-full video {
    display: block;
    width: 100%;
    height: auto;
    border: 1px solid #000;
    border-radius: var(--demo-box-radius, 6px);
}

.catalogue-panel-body .media-card img,
.catalogue-panel-body .media-full img {
    filter: brightness(1.04) contrast(1.06);
}

.teleflora-zoom-card img {
    transform: scale(1.22);
    transform-origin: center;
}

.teleflora-website-row {
    display: grid;
    grid-template-columns: minmax(220px, 0.95fr) minmax(0, 2.05fr);
    gap: 26px;
    align-items: start;
}

.teleflora-website-heading {
    margin: 0;
    font-family: "space grotesk", sans-serif;
    font-size: clamp(20px, 1.9vw, 28px);
    line-height: 1.2;
    font-weight: 700;
    text-transform: uppercase;
}

.teleflora-website-heading a {
    color: #000;
    text-decoration: none;
}

.teleflora-website-heading a:hover {
    text-decoration: underline;
}

@media screen and (max-width: 900px) {
    html:has(body.catalogue-page),
    body.catalogue-page {
        height: auto;
        min-height: 100vh;
        overflow: auto;
    }

    .catalogue-page .page-wrapper {
        height: auto;
        min-height: 100vh;
        overflow: visible;
    }

    .catalogue-main {
        padding-left: 20px;
        padding-right: 20px;
        height: auto;
        overflow: visible;
    }

    .catalogue-split {
        grid-template-columns: 1fr;
        row-gap: 24px;
        height: auto;
        min-height: 0;
    }

    .catalogue-index,
    .catalogue-panels {
        padding: 0;
        height: auto;
        overflow: visible;
    }

    .catalogue-index {
        position: static;
        max-height: none;
    }

    .catalogue-divider {
        width: 100%;
        height: 48px;
        margin: 8px 0;
        border: 0;
        background: #000;
    }

    .catalogue-divider-label {
        position: static;
        transform: none;
        left: auto;
        writing-mode: horizontal-tb;
        display: block;
        padding: 8px 0;
        text-align: left;
    }

    .catalogue-panel-intro-columns {
        grid-template-columns: 1fr;
        row-gap: 14px;
    }

    .catalogue-panel-header {
        grid-template-columns: 1fr;
        column-gap: 0;
    }

    .catalogue-panel-tools {
        grid-column: 1;
        grid-row: auto;
        margin-top: 6px;
    }

    .teleflora-website-row {
        grid-template-columns: 1fr;
        gap: 10px;
    }
}

