.enhanced-force-graph{position:relative;height:100%;width:100%}.enhanced-force-graph .loading-indicator{display:flex;flex-direction:column;height:100%;width:100%;align-items:center;justify-content:center}.enhanced-force-graph .loading-indicator .loading-text{color:#fff;font-size:1rem;font-weight:500}@media(max-width:640px){.enhanced-force-graph .loading-indicator .loading-text{font-size:.875rem}}.enhanced-force-graph.active .auto-zoom-button-container{opacity:1;right:1rem}.force-graph-overlay{position:absolute;top:0;left:0;right:0;bottom:0;pointer-events:none;z-index:10}.force-graph-overlay *{pointer-events:auto}.force-graph-tooltip{max-width:20rem;padding:.75rem}.force-graph-tooltip .tooltip-title{margin-bottom:.5rem;font-size:.875rem;font-weight:600;color:#fff}.force-graph-tooltip .tooltip-type{margin-bottom:.5rem;font-size:.75rem;text-transform:capitalize;color:var(--color-neutral-300)}.force-graph-tooltip .tooltip-tags{display:flex;flex-wrap:wrap;gap:.25rem}.force-graph-tooltip .tooltip-tags .tooltip-tag{border-radius:.25rem;background-color:var(--color-primary-500);padding:.125rem .5rem;font-size:.75rem;color:#fff}.force-graph-tooltip .tooltip-years{margin-top:.5rem;font-size:.75rem;color:var(--color-neutral-400)}@media(max-width:640px){.force-graph-tooltip{max-width:16rem;padding:.625rem}.force-graph-tooltip .tooltip-title{font-size:.8125rem}.force-graph-tooltip .tooltip-type{font-size:.6875rem}.force-graph-tooltip .tooltip-tag{font-size:.6875rem;padding:.125rem .375rem}.force-graph-tooltip .tooltip-years{font-size:.6875rem}}.projects-grid-view{position:absolute;top:0;left:0;right:0;bottom:0;padding-block:3.5rem var(--page-view-bottom-padding);padding-inline:2rem;overflow-y:auto;-webkit-overflow-scrolling:touch}.projects-grid-view__container{max-width:1200px;margin:0 auto}.projects-grid-view__header{margin-bottom:2rem}.projects-grid-view__title{font-size:var(--text-display-lg);font-weight:var(--font-weight-semibold);letter-spacing:var(--tracking-display);color:var(--color-neutral-900);margin:0;line-height:1.2}.projects-grid-view__pinned-section{margin-bottom:3rem}.projects-grid-view__section-title{font-size:var(--text-title-md);font-weight:var(--font-weight-semibold);letter-spacing:var(--tracking-heading);color:var(--color-neutral-900);margin:0 0 1.5rem;display:flex;align-items:center;gap:.5rem}.projects-grid-view__section-title:after{content:"";flex:1 1;height:1px;background:var(--color-neutral-200);margin-left:1rem}.projects-grid-view__grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));grid-gap:1.5rem;gap:1.5rem;margin-bottom:2rem}.projects-grid-view__grid--pinned{grid-template-columns:repeat(auto-fill,minmax(360px,1fr))}@media(max-width:768px){.projects-grid-view{-webkit-padding-before:4rem;padding-block-start:4rem;padding-inline:1rem}.projects-grid-view__container{width:100%;max-width:100%;margin:0}.projects-grid-view__title{font-size:2rem}.projects-grid-view__grid{grid-template-columns:1fr;gap:1rem;width:100%}.projects-grid-view__grid--pinned{grid-template-columns:1fr}.projects-grid-view .project-card__tech{gap:.375rem}.projects-grid-view .project-card__tech .project-card__tech-chip{font-size:.7rem;padding:.2rem .6rem}.projects-grid-view .project-card{padding:1rem}}@media(max-width:480px){.projects-grid-view{-webkit-padding-before:5rem;padding-block-start:5rem;padding-inline:.75rem}.projects-grid-view__title{font-size:1.75rem}.projects-grid-view__grid{gap:.75rem}.projects-grid-view .project-card{padding:.75rem}}.project-card{background:#fff;border:1px solid var(--color-neutral-200);border-radius:12px;padding:1.5rem;cursor:pointer;transition:all .2s ease;position:relative;display:flex;flex-direction:column;gap:1rem}.project-card:hover{transform:translateY(-2px);box-shadow:0 8px 24px rgba(0,0,0,.12);border-color:var(--color-primary-300)}.project-card--pinned{border-color:var(--color-primary-500);background:linear-gradient(135deg,#fff 0,var(--color-primary-50) 100%)}.project-card--pinned:before{content:"";position:absolute;top:0;left:0;right:0;height:3px;background:linear-gradient(90deg,var(--color-primary-500),var(--color-secondary-500));border-radius:12px 12px 0 0}.project-card--highlighted{border-color:var(--color-secondary-500);box-shadow:0 0 0 2px var(--color-secondary-200)}.project-card__header{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem}.project-card__title{font-size:1.1875rem;font-weight:var(--font-weight-semibold);letter-spacing:var(--tracking-heading);color:var(--color-neutral-900);margin:0;line-height:1.25;flex:1 1}.project-card__pin-badge{color:var(--color-primary-500);font-size:1.2rem;line-height:1;flex-shrink:0}.project-card__period{font-size:var(--text-sm);color:var(--color-neutral-600);font-weight:var(--font-weight-medium);line-height:1.35;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.project-card__duration{color:var(--color-neutral-500);font-weight:400}.project-card__summary{font-size:var(--text-body);color:var(--color-neutral-600);line-height:var(--leading-copy);margin:0;display:-webkit-box;-webkit-line-clamp:3;line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.project-card__tech{display:flex;flex-wrap:wrap;gap:.5rem}.project-card__tech-chip{background:var(--color-primary-50);color:var(--color-primary-700);padding:.25rem .75rem;border-radius:16px;font-size:.75rem;font-weight:500;line-height:1;border:1px solid var(--color-primary-200)}.project-card__tech-chip--more{background:var(--color-neutral-50);color:var(--color-neutral-500);border-color:var(--color-neutral-200)}.project-card__footer{margin-top:auto;display:flex;justify-content:space-between;align-items:flex-end;gap:1rem;flex-wrap:wrap}.project-card__stats{display:flex;gap:1rem;flex:1 1;flex-wrap:wrap}.project-card__stat{font-size:var(--text-label);color:var(--color-neutral-500);font-weight:var(--font-weight-medium);white-space:nowrap;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.project-card__links{display:flex;gap:.75rem;flex-shrink:0}.project-card__link{font-size:.75rem;color:var(--color-primary-500);text-decoration:none;font-weight:500;padding:.25rem .5rem;border-radius:6px;background:var(--color-primary-50);border:1px solid var(--color-primary-200);transition:all .15s ease;white-space:nowrap}.project-card__link:hover{background:var(--color-primary-100);color:var(--color-primary-700);transform:translateY(-1px)}.projects-grid-view--entering{opacity:0;transform:translateY(20px)}.projects-grid-view--stable{opacity:1;transform:translateY(0)}.projects-grid-view--exiting{opacity:0;transform:translateY(-20px)}.project-card{animation:slideInUp .6s ease-out;animation-fill-mode:both}@keyframes slideInUp{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}.projects-grid-view__grid .project-card:first-child{animation-delay:.2s}.projects-grid-view__grid .project-card:nth-child(2){animation-delay:.35s}.projects-grid-view__grid .project-card:nth-child(3){animation-delay:.5s}.projects-grid-view__grid .project-card:nth-child(4){animation-delay:.65s}.projects-grid-view__grid .project-card:nth-child(5){animation-delay:.8s}.projects-grid-view__grid .project-card:nth-child(6){animation-delay:.95s}.projects-grid-view__grid .project-card:nth-child(7){animation-delay:1.1s}.projects-grid-view__grid .project-card:nth-child(8){animation-delay:1.25s}.projects-grid-view__grid .project-card:nth-child(9){animation-delay:1.4s}.projects-grid-view__grid .project-card:nth-child(n+10){animation-delay:1.55s}.projects-grid-view__grid--pinned .project-card:first-child{animation-delay:.1s}.projects-grid-view__grid--pinned .project-card:nth-child(2){animation-delay:.25s}.projects-grid-view__grid--pinned .project-card:nth-child(3){animation-delay:.4s}.projects-grid-view__grid--pinned .project-card:nth-child(4){animation-delay:.55s}.projects-grid-view__grid--pinned .project-card:nth-child(n+5){animation-delay:.7s}.ui-tag{display:inline-flex;align-items:center;gap:.25rem;white-space:nowrap;font-weight:var(--font-weight-medium);line-height:1.2;letter-spacing:.01em;-webkit-user-select:none;-moz-user-select:none;user-select:none;cursor:default;transition:all .2s ease-in-out}.ui-tag--size-sm{font-size:.8125rem;padding:.25rem .5rem}.ui-tag--size-md{font-size:.875rem;padding:.375rem .625rem}.ui-tag--shape-rounded{border-radius:4px}.ui-tag--shape-pill{border-radius:999px}.ui-tag--shape-rounded.ui-tag--size-sm{padding:.2rem .45rem}.ui-tag--shape-rounded.ui-tag--size-md{padding:.3rem .55rem}.ui-tag--shape-pill.ui-tag--size-sm{padding:.28rem .65rem}.ui-tag--shape-pill.ui-tag--size-md{padding:.4rem .8rem}.ui-tag--variant-subtle{background-color:var(--color-tag-bg-100);color:var(--color-tag-700);font-weight:var(--font-weight-medium)}.ui-tag--variant-subtle.ui-tag--darker,.ui-tag--variant-subtle:hover{background-color:var(--color-tag-bg-200)}.ui-tag--variant-subtle.ui-tag--darker:hover{background-color:var(--color-tag-bg-300)}.ui-tag--variant-solid{background-color:var(--color-tag-600);color:#fff;font-weight:var(--font-weight-semibold)}.ui-tag--variant-solid:hover{filter:brightness(1.05)}.ui-tag--variant-outline{background-color:transparent;color:var(--color-tag-700);border:1px solid var(--color-tag-bg-200);font-weight:var(--font-weight-semibold)}.ui-tag--variant-outline:hover{background-color:var(--color-tag-bg-50)}.ui-tag--tone-accent{--color-tag-bg-50:var(--color-accent-50,#f0f9ff);--color-tag-bg-100:var(--color-accent-100,#e0f7fa);--color-tag-bg-200:var(--color-accent-200,#bae6fd);--color-tag-bg-300:var(--color-accent-300,#7dd3fc);--color-tag-600:var(--color-accent-600,#0284c7);--color-tag-700:var(--color-accent-700,#0369a1)}.ui-tag--tone-primary{--color-tag-bg-50:var(--color-primary-50,#eff6ff);--color-tag-bg-100:var(--color-primary-100,#dbeafe);--color-tag-bg-200:var(--color-primary-200,#bfdbfe);--color-tag-bg-300:var(--color-primary-300,#9cbcfb);--color-tag-600:var(--color-primary-600,#2563eb);--color-tag-700:var(--color-primary-700,#1d4ed8)}.ui-tag--tone-secondary{--color-tag-bg-50:var(--color-secondary-50,#f5f9fb);--color-tag-bg-100:var(--color-secondary-100,#ebf4f7);--color-tag-bg-200:var(--color-secondary-200,#cee3eb);--color-tag-bg-300:var(--color-secondary-300,#b0d2e0);--color-tag-600:var(--color-secondary-600,#18728c);--color-tag-700:var(--color-secondary-700,#1b5567)}.ui-tag--tone-neutral{--color-tag-bg-50:var(--color-neutral-50,#f9fafb);--color-tag-bg-100:var(--color-neutral-100,#f3f4f6);--color-tag-bg-200:var(--color-neutral-200,#e5e7eb);--color-tag-bg-300:var(--color-neutral-300,#d1d5db);--color-tag-600:var(--color-neutral-600,#4b5563);--color-tag-700:var(--color-neutral-700,#374151)}.ui-tag--tone-success{--color-tag-bg-50:var(--color-success-50,#ecfdf5);--color-tag-bg-100:var(--color-success-100,#dcfce7);--color-tag-bg-200:var(--color-success-200,#bbf7d0);--color-tag-bg-300:var(--color-success-300,#86efac);--color-tag-600:var(--color-success-600,#16a34a);--color-tag-700:var(--color-success-700,#15803d)}.ui-tag--tone-warning{--color-tag-bg-50:var(--color-warning-50,#fffbeb);--color-tag-bg-100:var(--color-warning-100,#fef3c7);--color-tag-bg-200:var(--color-warning-200,#fde68a);--color-tag-bg-300:var(--color-warning-300,#facc15);--color-tag-600:var(--color-warning-600,#d97706);--color-tag-700:var(--color-warning-700,#b45309)}.ui-tag--tone-danger{--color-tag-bg-50:var(--color-danger-50,#fef2f2);--color-tag-bg-100:var(--color-danger-100,#fee2e2);--color-tag-bg-200:var(--color-danger-200,#fecaca);--color-tag-bg-300:var(--color-danger-300,#fca5a5);--color-tag-600:var(--color-danger-600,#dc2626);--color-tag-700:var(--color-danger-700,#b91c1c)}.ui-tag--selected{outline:0;box-shadow:0 0 0 2px var(--color-tag-bg-200) inset}.ui-tag--disabled{opacity:.6;cursor:not-allowed}.ui-tag--bordered:not(.ui-tag--variant-outline){border:1px solid var(--color-tag-bg-200)}.ui-tag:where(a),.ui-tag:where(button){text-decoration:none;cursor:pointer}.projects-case-study{--pcs-gap:1rem;--pcs-gap-lg:1.5rem;--pcs-card-radius:12px;--pcs-card-pad:20px;--pcs-tile-radius:10px;--pcs-tile-minh:88px;position:absolute;top:0;left:0;right:0;bottom:0;overflow-y:auto;-webkit-overflow-scrolling:touch;display:block;color:var(--color-neutral-900);padding-block:3.5rem var(--page-view-bottom-padding);padding-inline:2rem}.projects-case-study .pcs-container{max-width:1200px;margin:0 auto}.projects-case-study .pcs-media__loader{position:absolute;inset:0;display:grid;place-items:center;background:var(--surface-a,rgba(0,0,0,.04));pointer-events:none}.projects-case-study .pcs-spinner{width:28px;height:28px;border:3px solid rgba(0,0,0,.2);border-top-color:rgba(0,0,0,.6);border-radius:50%;animation:pcs-spin .9s linear infinite}@keyframes pcs-spin{to{transform:rotate(1turn)}}.projects-case-study .pcs-header{display:grid;grid-gap:var(--pcs-gap);gap:var(--pcs-gap);margin-bottom:var(--pcs-gap-lg)}.projects-case-study .pcs-title{font-size:var(--text-display-lg);font-weight:var(--font-weight-semibold);letter-spacing:var(--tracking-display);line-height:1.2;margin:0}.projects-case-study .pcs-period{color:var(--color-neutral-600);font-size:var(--text-sm);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.projects-case-study .pcs-tech{list-style:none;padding:0;margin:0;display:flex;flex-wrap:wrap;gap:.5rem}.projects-case-study .pcs-tech .pcs-chip{background:var(--color-primary-50);color:var(--color-primary-700);border:1px solid var(--color-primary-200);padding:.25rem .75rem;border-radius:16px;font-size:.75rem;font-weight:500}.projects-case-study .pcs-card{background:#fff;border:1px solid var(--color-neutral-200);border-radius:var(--pcs-card-radius);padding:var(--pcs-card-pad)}.projects-case-study .pcs-card h2{font-size:1.375rem;font-weight:var(--font-weight-semibold);letter-spacing:var(--tracking-heading);color:var(--color-neutral-900);margin:0 0 .75rem}.projects-case-study .pcs-card p{color:var(--color-neutral-650,var(--color-neutral-600));font-size:var(--text-body);line-height:var(--leading-copy);margin:0}.projects-case-study .pcs-card__grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));grid-gap:14px;gap:14px}.projects-case-study .pcs-tile{background:#fff;border:1px solid var(--color-neutral-200);border-radius:var(--pcs-tile-radius);padding:14px;min-height:var(--pcs-tile-minh);transition:transform .15s ease,box-shadow .15s ease,border-color .15s ease,background .15s ease;outline:none;cursor:default}.projects-case-study .pcs-tile:hover{transform:translateY(-2px);box-shadow:0 8px 24px rgba(0,0,0,.12);border-color:var(--color-primary-300)}.projects-case-study .pcs-tile:focus-visible{box-shadow:0 0 0 2px var(--color-primary-300)}.projects-case-study .pcs-tile--bullet{border-left:3px solid var(--color-primary-200)}.projects-case-study .pcs-tile--image{padding:0;overflow:hidden}.projects-case-study .pcs-tile-title{font-size:1.0625rem;font-weight:var(--font-weight-semibold);letter-spacing:var(--tracking-heading);color:var(--color-neutral-900);margin:0 0 4px;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:1;line-clamp:1;-webkit-box-orient:vertical}.projects-case-study .pcs-tile-text{font-size:var(--text-body);color:var(--color-neutral-700);margin:0;line-height:1.55;display:-webkit-box;-webkit-line-clamp:3;line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.projects-case-study .pcs-hero{position:relative;padding:0;border-radius:var(--pcs-card-radius);overflow:hidden;background:var(--color-neutral-100);border:1px solid var(--color-neutral-200);margin-bottom:var(--pcs-gap-lg);opacity:0;transform:translateY(12px);transition:opacity .28s ease,transform .32s ease}.projects-case-study .pcs-hero.is-visible{opacity:1;transform:translateY(0)}.projects-case-study .pcs-hero span{display:block!important;width:100%!important;height:auto!important}.projects-case-study .pcs-hero img{width:100%;height:auto;display:block}.projects-case-study .pcs-hero .pcs-hero-video{display:block;width:100%;height:auto;object-fit:cover}.projects-case-study .pcs-card.pcs-image,.projects-case-study .pcs-tile--image{position:relative}.projects-case-study .pcs-sections{display:grid;grid-gap:var(--pcs-gap-lg);gap:var(--pcs-gap-lg)}.projects-case-study .pcs-section h2{font-size:1.25rem;font-weight:600;color:var(--color-neutral-900);margin:0 0 .75rem}.projects-case-study .pcs-section p{color:var(--color-neutral-600);line-height:1.6;margin:0}.projects-case-study .pcs-summary{position:relative;max-width:70ch}.projects-case-study .pcs-summary p{margin:0;font-size:var(--text-body);line-height:var(--leading-copy-loose);display:-webkit-box;-webkit-line-clamp:3;line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.projects-case-study .pcs-summary.is-expanded p{-webkit-line-clamp:unset;line-clamp:unset}.projects-case-study .pcs-read-more{background:none;border:none;color:var(--color-primary-600);font-size:var(--text-sm);font-weight:var(--font-weight-semibold);padding:0;margin-top:6px;cursor:pointer}.projects-case-study .pcs-image figure{margin:0}.projects-case-study .pcs-image img{width:100%;height:auto;display:block;border-radius:8px}.projects-case-study .pcs-image figcaption{color:var(--color-neutral-600);font-size:var(--text-sm);line-height:1.5;margin-top:.5rem}.projects-case-study .pcs-gallery .pcs-gallery-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:var(--pcs-gap);gap:var(--pcs-gap)}.projects-case-study .pcs-gallery img{width:100%;height:auto;border-radius:8px;display:block}@media(max-width:720px){.projects-case-study .pcs-gallery .pcs-gallery-grid{grid-template-columns:1fr}}.projects-case-study .pcs-bullets ul{margin:0;padding-left:1.25rem}.projects-case-study .pcs-bullets ul li{margin:.25rem 0;color:var(--color-neutral-600);font-size:var(--text-body);line-height:var(--leading-copy)}.projects-case-study .pcs-quote{background:var(--color-neutral-100);border-left:4px solid var(--color-primary-500)}.projects-case-study .pcs-quote p{font-size:1.1rem;font-style:italic;color:var(--color-neutral-700);line-height:1.6;margin:0}.projects-case-study .pcs-quote footer{margin-top:.5rem;color:var(--color-neutral-500);font-size:var(--text-sm);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.projects-case-study .pcs-metrics .pcs-metrics-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-gap:var(--pcs-gap);gap:var(--pcs-gap)}@media(max-width:900px){.projects-case-study .pcs-metrics .pcs-metrics-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:600px){.projects-case-study .pcs-metrics .pcs-metrics-grid{grid-template-columns:1fr}}.projects-case-study .pcs-metrics .pcs-metric-label{color:var(--color-neutral-500);font-size:var(--text-label);font-weight:var(--font-weight-semibold);letter-spacing:var(--tracking-label);text-transform:uppercase}.projects-case-study .pcs-metrics .pcs-metric-value{color:var(--color-neutral-900);font-size:1.25rem;font-weight:var(--font-weight-semibold);line-height:1.2;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}@media(max-width:768px){.projects-case-study{-webkit-padding-before:4rem;padding-block-start:4rem;padding-inline:1rem}.projects-case-study .pcs-tile{min-height:72px}.projects-case-study .pcs-title{font-size:1.75rem}.projects-case-study .pcs-section{padding:1rem}.projects-case-study .pcs-tech{gap:.375rem}.projects-case-study .pcs-tech .pcs-chip{font-size:.7rem;padding:.2rem .6rem}.projects-case-study .pcs-gallery .pcs-gallery-grid,.projects-case-study .pcs-metrics .pcs-metrics-grid{grid-template-columns:1fr;gap:.75rem}}@media(max-width:480px){.projects-case-study{-webkit-padding-before:5rem;padding-block-start:5rem;padding-inline:.75rem}.projects-case-study .pcs-section{padding:.75rem}}@media(prefers-reduced-motion:reduce){.projects-case-study .pcs-hero{transform:none!important;transition:opacity .2s ease!important}.projects-case-study .pcs-tile{transition:none!important}.projects-case-study .pcs-tile:hover{transform:none!important;box-shadow:none!important}}