.project-page__preview-banner{background-color:#854d0e;color:#fef9c3;text-align:center;padding:.5rem 1rem;font-size:var(--text-sm)}.project-page__preview-banner a{color:#fef9c3;text-decoration:underline}.portfolio-page{max-width:1200px;margin:0 auto;padding:3rem 1.5rem 5rem}.portfolio-hero{display:flex;flex-direction:column;align-items:center;text-align:center;margin-bottom:3rem}.portfolio-hero__title{font-size:clamp(3rem,8vw,5.5rem);font-weight:800;line-height:1.1;color:#f5f0e8;margin-bottom:1.25rem}.portfolio-hero__subtitle{font-size:1.25rem;color:rgba(240,236,227,.55);line-height:1.6;margin-top:1rem}.featured-project{display:grid;grid-template-columns:1fr;background-color:var(--grey);border-radius:.5rem;overflow:hidden;text-decoration:none;margin-bottom:2.5rem;transition:transform .2s ease,box-shadow .2s ease}@media(min-width:768px){.featured-project{grid-template-columns:1fr 1fr;min-height:22rem}}.featured-project:hover{transform:translateY(-4px);box-shadow:0 12px 32px rgba(0,0,0,.4)}.featured-project__image-wrapper{position:relative;min-height:16rem}@media(min-width:768px){.featured-project__image-wrapper{min-height:unset}}.featured-project__image{object-fit:cover}.featured-project__content{padding:2rem;display:flex;flex-direction:column;gap:.5rem;color:#fff}.featured-project__eyebrow{font-size:var(--text-xs);font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:rgba(240,236,227,.55)}.featured-project__category{font-size:var(--text-xs);font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:#9a9a9a}.featured-project__title{font-size:clamp(1.2rem,2.5vw,1.6rem);font-weight:700;line-height:1.3;margin-top:.25rem}.featured-project__description{font-size:var(--text-md);line-height:1.65;color:rgba(240,236,227,.55);display:-webkit-box;-webkit-line-clamp:4;line-clamp:4;-webkit-box-orient:vertical;overflow:hidden}.featured-project__meta{font-size:var(--text-xs);color:rgba(240,236,227,.55);margin-top:auto;padding-top:.75rem}.featured-project__cta{font-size:var(--text-sm);font-weight:600;color:#9a9a9a;margin-top:auto;padding-top:.75rem}.project-grid{display:grid;grid-template-columns:1fr;grid-gap:2.5rem 1.25rem;gap:2.5rem 1.25rem}@media(min-width:640px){.project-grid{grid-template-columns:repeat(2,1fr)}}@media(min-width:1024px){.project-grid{grid-template-columns:repeat(3,1fr)}}.project-card{display:block;text-decoration:none}.project-card__media{position:relative;aspect-ratio:4/3;overflow:hidden;border-radius:.5rem;border:1px solid rgba(255,255,255,.12);transition:border-color .6s cubic-bezier(.22,1,.36,1)}.project-card__image-bg{position:absolute;inset:0}.project-card__image{object-fit:cover;object-position:top;transform-origin:top;opacity:0;transition:opacity .4s ease,transform .8s cubic-bezier(.22,1,.36,1);will-change:transform}.project-card__image--loaded{opacity:1}.project-card:hover .project-card__media{border-color:rgba(255,255,255,.24)}.project-card:hover .project-card__image{transform:scale(1.03)}@media(prefers-reduced-motion:reduce){.project-card__image{transition:opacity .4s ease}.project-card:hover .project-card__image{transform:none}}.project-card__info{padding-top:1rem}.project-card__title{font-size:var(--text-xl);font-weight:700;color:#fff;line-height:1.3;margin:0 0 .35rem}.project-card__meta{display:block;font-size:var(--text-xs);letter-spacing:.12em;text-transform:uppercase;color:rgba(240,236,227,.55)}.project-page{width:100%}.project-page__inner{max-width:1200px;margin:0 auto;padding:3rem 1.5rem 6rem}.project-page__back{display:inline-flex;align-items:center;gap:.4rem;font-size:var(--text-sm);color:rgba(240,236,227,.55);text-decoration:none;margin-bottom:2.5rem;transition:color .15s ease}.project-page__back:hover{color:#fff}.project-page__back svg{width:1rem;height:1rem;flex-shrink:0}.project-page__hero{margin-bottom:4rem}.project-page__category{display:inline-block;font-size:var(--text-xs);font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:#9a9a9a;margin-bottom:.75rem}.project-page__title{font-size:clamp(2rem,5vw,3rem);font-weight:700;color:#fff;line-height:1.2;margin:0 0 1.25rem}.project-page__summary{font-size:1.2rem;color:rgba(240,236,227,.55);line-height:1.65;max-width:720px;margin:0 0 2.5rem}.project-page__hero-image-wrapper{width:100%;aspect-ratio:16/9;max-height:60vh;overflow:hidden;border-radius:.5rem}.project-page__hero-image-wrapper img{display:block;width:100%;height:100%;object-fit:cover;object-position:top center}.project-page__content{display:grid;grid-template-columns:1fr;grid-gap:3rem;gap:3rem;align-items:start}@media(min-width:1024px){.project-page__content{grid-template-columns:300px 1fr;gap:4rem}.project-page__sidebar{position:-webkit-sticky;position:sticky;top:2rem}}.project-page__sidebar-heading{font-size:var(--text-xs);font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:rgba(240,236,227,.55);margin:0 0 1.5rem;padding-bottom:.75rem;border-bottom:1px solid var(--grey-hover)}.project-page__build{display:flex;flex-wrap:wrap;gap:.5rem;list-style:none;margin:.4rem 0 0;padding:0}.project-page__build li{font-size:var(--text-xs);color:#fff;background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.12);border-radius:.2rem;padding:.35rem .7rem}.project-page__details{display:grid;grid-template-columns:1fr;margin:0 0 2rem}.project-page__details dt{font-size:var(--text-xs);font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:rgba(240,236,227,.4);margin:0;padding-top:1rem}.project-page__details dd{font-size:var(--text-md);color:#fff;margin:.25rem 0 0;padding-bottom:1rem;border-bottom:1px solid var(--grey-hover)}.project-page__details dd a{color:#9a9a9a;text-decoration:none;word-break:break-all;transition:color .15s ease}.project-page__details dd a:hover{color:#3d9e9e}.project-page__details dd:last-child{border-bottom:none}.project-page__cta{display:flex;align-items:center;justify-content:center;gap:.5rem;width:100%;padding:.75rem 1.25rem;border:1px solid #9a9a9a;color:#9a9a9a;font-size:var(--text-sm);font-weight:600;text-decoration:none;border-radius:.375rem;transition:background-color .15s ease,color .15s ease}.project-page__cta:hover{background-color:#9a9a9a;color:#fff}.project-page__body{min-width:0}.project-section{margin-bottom:3rem}.project-section:last-child{margin-bottom:0}.project-section__heading{display:flex;align-items:baseline;gap:.75rem;margin:0 0 1rem;padding-bottom:.75rem;border-bottom:1px solid var(--grey-hover)}.project-section__number{font-size:var(--text-xs);font-weight:700;color:#9a9a9a;letter-spacing:.05em;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.project-section__title{font-size:var(--text-xl);font-weight:700;color:#fff}.project-section__content{font-size:1.0625rem;line-height:1.75;color:rgba(240,236,227,.72)}.project-section__content>*+*{margin-top:1.5rem}.project-section__content h2{font-size:1.625rem;font-weight:700;color:#fff;margin-top:2.5rem;margin-bottom:.75rem}.project-section__content h3{font-size:1.25rem;font-weight:700;color:#fff;margin-top:2rem;margin-bottom:.5rem}.project-section__content h4{font-size:1.0625rem;font-weight:700;color:#e5e7eb;margin-top:1.75rem;margin-bottom:.5rem}.project-section__content p{margin-top:1.25rem}.project-section__content a{color:#9a9a9a;text-decoration:underline;text-underline-offset:3px}.project-section__content a:hover{color:#3d9e9e}.project-section__content strong{color:#fff;font-weight:700}.project-section__content em{font-style:italic}.project-section__content ol,.project-section__content ul{padding-left:1.5rem;margin-top:1.25rem}.project-section__content ol li,.project-section__content ul li{margin-top:.4rem}.project-section__content ol li p,.project-section__content ul li p{margin-top:0}.project-section__content ul{list-style:disc}.project-section__content ol{list-style:decimal}.project-section__content blockquote{margin:1.75rem 0;padding:1rem 1.5rem;background-color:var(--grey);color:rgba(240,236,227,.55);font-style:italic;border-radius:.375rem}.project-section__content blockquote p{margin-top:0}.project-section__content code:not(pre code){background-color:var(--grey-hover);color:#9a9a9a;padding:.15em .4em;border-radius:.25rem;font-size:.875em;font-family:var(--font-mono)}.project-section__content hr{border:none;border-top:1px solid var(--grey-hover);margin:2.5rem 0}.project-section__content img{height:auto;border-radius:.5rem;box-shadow:0 4px 24px rgba(0,0,0,.4);border:1px solid var(--grey-hover)}.project-section__content figure,.project-section__content img{display:block;max-width:100%;margin:1.5rem auto}.project-section__content figure img{margin:0 auto}.project-section__content figure figcaption{text-align:center;font-size:var(--text-sm);font-style:italic;color:rgba(240,236,227,.6);padding:.5rem 0}.project-section__content .table-wrapper{width:100%;overflow-x:auto;margin:1.5rem 0}.project-section__content table{width:100%;border-collapse:collapse;font-size:var(--text-md);margin:0}.project-section__content table tbody tr:first-child td,.project-section__content table tbody tr:first-child th,.project-section__content table thead tr td,.project-section__content table thead tr th{background-color:#3f3f46;font-weight:700;color:#fff}.project-section__content table th{color:#fff;padding:.5rem .75rem;border:1px solid var(--grey-hover);text-align:left;font-weight:600;background-color:#3f3f46}.project-section__content table tbody tr{border-bottom:1px solid var(--grey-hover)}.project-section__content table tbody tr td{color:rgba(240,236,227,.72);padding:.5rem .75rem;border:1px solid var(--grey-hover);vertical-align:top}.project-section__content table tbody tr td p{margin-top:0}.project-section__content .callout{display:flex;gap:.875rem;padding:1rem 1.25rem;border-radius:.375rem;border-left:4px solid;margin:1.5rem 0}.project-section__content .callout__icon{flex-shrink:0;width:1.5rem;height:1.5rem;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:var(--text-xs);font-weight:700;line-height:1;margin-top:.125rem}.project-section__content .callout__body{flex:1 1;min-width:0}.project-section__content .callout__body>*+*{margin-top:.75rem}.project-section__content .callout__body>:first-child{margin-top:0}.project-section__content .callout__title{font-weight:700;font-size:var(--text-md);margin-top:0!important}.project-section__content .callout--info{background-color:rgba(59,130,246,.08);border-color:#3b82f6}.project-section__content .callout--info .callout__icon{background-color:#3b82f6;color:#fff}.project-section__content .callout--info .callout__title{color:#93c5fd}.project-section__content .callout--tip{background-color:rgba(34,197,94,.08);border-color:#22c55e}.project-section__content .callout--tip .callout__icon{background-color:#22c55e;color:#fff}.project-section__content .callout--tip .callout__title{color:#86efac}.project-section__content .callout--warning{background-color:rgba(154,154,154,.08);border-color:#9a9a9a}.project-section__content .callout--warning .callout__icon{background-color:#9a9a9a;color:#1a1a1a}.project-section__content .callout--warning .callout__title{color:#9a9a9a}.project-section__content .callout--danger{background-color:rgba(239,68,68,.08);border-color:#ef4444}.project-section__content .callout--danger .callout__icon{background-color:#ef4444;color:#fff}.project-section__content .callout--danger .callout__title{color:#fca5a5}.project-section__content .callout--question{background-color:rgba(61,158,158,.08);border-color:#3d9e9e}.project-section__content .callout--question .callout__icon{background-color:#3d9e9e;color:#fff}.project-section__content .callout--question .callout__title{color:#7dd3d0}.project-section__content .callout--note{background-color:rgba(139,92,246,.08);border-color:#8b5cf6}.project-section__content .callout--note .callout__icon{background-color:#8b5cf6;color:#fff}.project-section__content .callout--note .callout__title{color:#c4b5fd}.project-section__content .footnote-ref{font-size:.7em;vertical-align:super;line-height:1;color:#9a9a9a;text-decoration:none;font-weight:600;padding:0 .1em;transition:color .15s ease}.project-section__content .footnote-ref:hover{color:#3d9e9e}.project-section__content .footnotes{margin-top:3rem;padding-top:1.5rem;border-top:1px solid var(--grey-hover)}.project-section__content .footnotes h2{font-size:1rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:rgba(240,236,227,.55);margin-top:0;margin-bottom:1rem}.project-section__content .footnotes ol{padding-left:1.5rem;margin-top:0}.project-section__content .footnotes ol li{font-size:var(--text-sm);color:rgba(240,236,227,.55);line-height:1.65;margin-top:.5rem}.project-section__content .footnotes ol li a:not(.footnote-back){color:#9a9a9a;text-decoration:underline;text-underline-offset:3px}.project-section__content .footnotes ol li a:not(.footnote-back):hover{color:#3d9e9e}.project-section__content .footnotes .footnote-back{font-size:.85em;color:rgba(240,236,227,.4);text-decoration:none;margin-left:.35em;transition:color .15s ease}.project-section__content .footnotes .footnote-back:hover{color:#fff}.project-features{display:grid;grid-template-columns:repeat(auto-fill,minmax(14rem,1fr));list-style:none;margin:0;padding:0;border-top:1px solid var(--grey-hover);border-left:1px solid var(--grey-hover)}.project-features__item{padding:1.5rem;border-right:1px solid var(--grey-hover);border-bottom:1px solid var(--grey-hover)}.project-features__title{font-size:1rem;font-weight:700;color:#fff;margin:0 0 .5rem}.project-features__summary{font-size:var(--text-md);line-height:1.6;color:#9a9a9a;margin:0}.project-gallery{margin-top:3rem;padding-top:2rem;border-top:1px solid var(--grey-hover)}.project-gallery__heading{font-size:var(--text-xs);font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:rgba(240,236,227,.55);margin:0 0 1.5rem}.project-gallery__grid{display:grid;grid-template-columns:1fr;grid-gap:1rem;gap:1rem}@media(min-width:640px){.project-gallery__grid{grid-template-columns:repeat(2,1fr)}}@media(min-width:900px){.project-gallery__grid{grid-template-columns:repeat(3,1fr)}}.project-gallery__item{position:relative;aspect-ratio:4/3;overflow:hidden;border-radius:.375rem;border:1px solid rgba(255,255,255,.12);background:rgba(255,255,255,.04);padding:0;cursor:pointer}.project-gallery__item img{width:100%;height:100%;object-fit:cover;object-position:top;transform-origin:top;display:block;transition:transform .3s ease}.project-gallery__item:hover img{transform:scale(1.04)}