@charset "UTF-8";.modal-backdrop.svelte-dvioei{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000bd;z-index:1000;display:flex;align-items:center;justify-content:center;padding:1rem}.dark .modal-backdrop.svelte-dvioei{background:#000000e6}.modal-content.svelte-dvioei{position:relative;display:flex;flex-direction:column;align-items:center;gap:.5rem;width:100%;height:100%;max-width:min(1400px,95vw);max-height:95vh}.close-button.svelte-dvioei{position:fixed;top:1rem;right:1rem;background:transparent;border:none;width:2.5rem;height:2.5rem;display:flex;align-items:center;justify-content:center;cursor:pointer;z-index:10;font-size:2rem;line-height:1;color:#fff;font-weight:200;padding:0;opacity:.7;transition:opacity .2s}.close-button.svelte-dvioei:hover{opacity:1}.image-container.svelte-dvioei{position:relative;display:flex;align-items:center;justify-content:center;flex:1;width:100%;min-height:0}.image-container.svelte-dvioei img:where(.svelte-dvioei){max-width:100%;max-height:100%;width:auto;height:auto;-o-object-fit:contain;object-fit:contain;border-radius:.5rem;box-shadow:0 20px 60px #000c}.nav-button.svelte-dvioei{position:absolute;top:50%;transform:translateY(-50%);background:transparent;border:none;width:3rem;height:6rem;display:flex;align-items:center;justify-content:center;cursor:pointer;color:#fff;z-index:2;font-size:3rem;line-height:1;font-weight:100;padding:0;opacity:.5;transition:opacity .2s}.nav-button.svelte-dvioei:hover:not(:disabled){opacity:1}.nav-button.svelte-dvioei:disabled{display:none}.nav-button.prev.svelte-dvioei{left:0;padding-right:1rem}.nav-button.next.svelte-dvioei{right:0;padding-left:1rem}.image-counter.svelte-dvioei{color:#fff;font-size:.75rem;font-weight:500;background:#000000b3;padding:.375rem .75rem;border-radius:1rem;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.thumbnails.svelte-dvioei{display:flex;gap:.375rem;overflow-x:auto;max-width:100%;padding:.25rem;scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.3) rgba(255,255,255,.1)}.thumbnails.svelte-dvioei::-webkit-scrollbar{height:4px}.thumbnails.svelte-dvioei::-webkit-scrollbar-track{background:#ffffff1a;border-radius:2px}.thumbnails.svelte-dvioei::-webkit-scrollbar-thumb{background:#ffffff4d;border-radius:2px}.thumbnails.svelte-dvioei::-webkit-scrollbar-thumb:hover{background:#ffffff80}.thumbnail.svelte-dvioei{flex-shrink:0;width:3rem;height:3rem;padding:0;border-radius:.25rem;overflow:hidden;cursor:pointer;border:2px solid transparent;transition:all .2s ease;background:#ffffff0d}.thumbnail.svelte-dvioei:hover{border-color:#ffffff80}.thumbnail.active.svelte-dvioei{border-color:var(--yellow)}.thumbnail.svelte-dvioei img:where(.svelte-dvioei){width:100%;height:100%;-o-object-fit:cover;object-fit:cover;display:block}@media(max-width:768px){.modal-backdrop.svelte-dvioei{padding:.5rem}.modal-content.svelte-dvioei{max-width:100%;max-height:100%}.close-button.svelte-dvioei{top:.5rem;right:.5rem;width:2rem;height:2rem;font-size:1.75rem}.nav-button.svelte-dvioei{width:2.5rem;height:5rem;font-size:2.5rem}.thumbnail.svelte-dvioei{width:2.75rem;height:2.75rem}}@media(max-width:480px){.modal-backdrop.svelte-dvioei{padding:.25rem}.close-button.svelte-dvioei{font-size:1.5rem;width:1.75rem;height:1.75rem}.nav-button.svelte-dvioei{width:2rem;height:4rem;font-size:2rem}.thumbnail.svelte-dvioei{width:2.5rem;height:2.5rem}.image-counter.svelte-dvioei{font-size:.625rem;padding:.25rem .5rem}}.external-links-section.svelte-fp107g{margin-bottom:var(--whole-note)}.external-links-section.svelte-fp107g h2:where(.svelte-fp107g):before{display:none}.external-links-section.svelte-fp107g .external-description:where(.svelte-fp107g){font-size:1.0625rem;line-height:1.6;margin-bottom:var(--half-note);color:var(--ink)}.external-links-section.svelte-fp107g .links-container:where(.svelte-fp107g){display:flex;flex-direction:column;gap:var(--quarter-note)}@media(min-width:56rem){.external-links-section.svelte-fp107g .links-container:where(.svelte-fp107g){flex-direction:row;gap:var(--half-note)}}.external-links-section.svelte-fp107g .external-link:where(.svelte-fp107g){display:flex;align-items:center;justify-content:center;gap:.75rem;padding:.5rem 1rem;background:var(--blue-lighter);border:1px solid var(--ink);border-right-width:2px;border-bottom-width:2px;text-decoration:none;color:var(--ink);font-family:var(--heading-font);font-size:1rem;font-weight:500;transition:background .15s;flex:1}.dark .external-links-section.svelte-fp107g .external-link:where(.svelte-fp107g){background:var(--blue-dark)}.external-links-section.svelte-fp107g .external-link:where(.svelte-fp107g):hover{background:var(--blue-100)}.dark .external-links-section.svelte-fp107g .external-link:where(.svelte-fp107g):hover{background:var(--blue-800)}.external-links-section.svelte-fp107g .external-link:where(.svelte-fp107g) .link-icon:where(.svelte-fp107g){flex-shrink:0;width:18px;height:18px;color:var(--ink)}.external-links-section.svelte-fp107g .external-link:where(.svelte-fp107g) .link-label:where(.svelte-fp107g){flex:1}.external-links-section.svelte-fp107g .external-link:where(.svelte-fp107g) .link-arrow:where(.svelte-fp107g){flex-shrink:0;width:16px;height:16px;color:var(--yellow);transition:transform .15s}.external-links-section.svelte-fp107g .external-link:where(.svelte-fp107g):hover .link-arrow:where(.svelte-fp107g){transform:translate(3px)}:root{--true-white: #ffffff;--true-black: #000000;--yellow-50: #ffffe7;--yellow-100: #ffffc1;--yellow-200: #fffb86;--yellow-300: #fff041;--yellow-400: #ffe00d;--yellow-500: #ffd100;--yellow-600: #d19900;--yellow-700: #a66d02;--yellow-800: #89550a;--yellow-900: #74450f;--yellow-950: #442404;--yellow: var(--yellow-500);--blue-50: #f1f8fa;--blue-100: #dcecf1;--blue-200: #bddae4;--blue-300: #8fc0d1;--blue-400: #599cb7;--blue-500: #3e809c;--blue-600: #34657f;--blue-700: #31576d;--blue-800: #2f495b;--blue-900: #2b404e;--blue-950: #182834;--blue-lightest: var(--blue-100);--blue-light: var(--blue-400);--blue-lighter: var(--blue-200);--blue-dark: var(--blue-600);--blue-darker: var(--blue-950);--neutral-50: #fcfcfc;--neutral-100: #ececec;--neutral-200: #dedede;--neutral-300: #d1d2d3;--neutral-400: #a7a8aa;--neutral-500: #8f9092;--neutral-600: #787a7d;--neutral-700: #5f6164;--neutral-800: #474a4d;--neutral-900: #2e3236;--neutral-950: #101820;--neutral-white: var(--neutral-50);--neutral-lightest: var(--neutral-100);--neutral-lighter: var(--neutral-300);--neutral-light: var(--neutral-400);--neutral-mid: var(--neutral-500);--neutral-dark: var(--neutral-700);--neutral-darker: var(--neutral-900);--neutral-black: var(--neutral-950);--orange-50: #fff6ed;--orange-100: #ffebd4;--orange-200: #ffd3a8;--orange-300: #ffb470;--orange-400: #ff8937;--orange-500: #ff6a13;--orange-600: #f04c06;--orange-700: #c73707;--orange-800: #9e2c0e;--orange-900: #7f270f;--orange-950: #451005;--orange: var(--orange-500);--red: var(--orange-700);--heading-font: "Averta-Std", -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--body-font: "Alkes", Georgia, serif;--code-font: "MonoLisa", Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace;--body-font-weight: normal;--body-font-size: 1.1875rem;--body-line-height: 1.5}@media(min-width:42rem){:root{--body-font-size: 1.1875rem}}@media(min-width:82rem){:root{--body-font-size: 1.25rem}}:root{--blue-to-yellow: #7ba7bc, #75b1bf, #66c6b6, #4fd27b, #56e035, #acef1b, #faf008, #ffd100;--accent-gradient: linear-gradient(to right, var(--blue-to-yellow))}@supports (background: linear-gradient(in oklab,white,black)){:root{--accent-gradient: linear-gradient(to right in oklab, var(--blue-light) 10%, var(--yellow) 90%)}}:root{--ink: var(--neutral-800);--paper: var(--neutral-white);--heading-color: var(--neutral-800);--accent-color: var(--blue-dark);--link-color: var(--blue-dark);--highlight-color: var(--neutral-dark);--max-width: 34rem;--sidebar-width: 15rem;--margin: var(--quarter-note);--sixteenth-note: calc(var(--quarter-note) / 4);--eighth-note: calc(var(--quarter-note) / 2);--quarter-note: 1.25rem;--dotted-quarter-note: calc(var(--quarter-note) * 1.5);--half-note: calc(var(--quarter-note) * 2);--dotted-half-note: calc(var(--quarter-note) * 3);--whole-note: calc(var(--quarter-note) * 4);--tied-whole-note: calc(var(--quarter-note) * 5);--dotted-whole-note: calc(var(--quarter-note) * 6);--button-size: 2.2rem;--button-background: var(--paper)}@media(min-width:42rem){:root{--margin: var(--half-note)}}@media(min-width:56rem){:root{--margin: var(--dotted-half-note)}}@media(min-width:108rem){:root{--margin: var(--whole-note)}}@media(min-width:122rem){:root{--margin: var(--dotted-whole-note)}}:root.dark{--paper: var(--neutral-black);--ink: var(--neutral-100);--heading-color: var(--neutral-white);--accent-color: var(--blue-light);--link-color: var(--blue-light);--neutral-lightest: var(--neutral-900);--neutral-lighter: var(--neutral-700);--highlight-color: var(--neutral-darker);--neutral-mid: var(--neutral-400)}@media(prefers-color-scheme:dark){:root:not(.light){--paper: var(--neutral-black);--ink: var(--neutral-100);--heading-color: var(--neutral-white);--accent-color: var(--blue-light);--link-color: var(--blue-light);--highlight-color: var(--neutral-darker)}}:root{font-size:var(--body-font-size)}.project-detail.svelte-1ge98uo{max-width:48rem}.back-link.svelte-1ge98uo{margin-bottom:var(--half-note)}.back-link.svelte-1ge98uo a:where(.svelte-1ge98uo){font-family:var(--heading-font);font-size:.875rem;text-transform:uppercase;font-weight:700;text-decoration:none;color:var(--neutral-mid);transition:color .15s}.back-link.svelte-1ge98uo a:where(.svelte-1ge98uo):hover{color:var(--blue-light)}.project-header.svelte-1ge98uo{margin-bottom:var(--whole-note)}.project-header.svelte-1ge98uo .role:where(.svelte-1ge98uo){display:inline-block;font-family:var(--heading-font);font-size:.75rem;text-transform:uppercase;font-weight:700;color:var(--blue-dark);margin-bottom:var(--eighth-note)}.dark .project-header.svelte-1ge98uo .role:where(.svelte-1ge98uo){color:var(--blue-light)}.project-header.svelte-1ge98uo h1:where(.svelte-1ge98uo){margin:0 0 var(--eighth-note);font-size:2.5rem;line-height:1.1;color:var(--heading-color)}@media(min-width:42rem){.project-header.svelte-1ge98uo h1:where(.svelte-1ge98uo){font-size:3rem}}.project-header.svelte-1ge98uo .subtitle:where(.svelte-1ge98uo){font-size:1.125rem;color:var(--ink);margin:0 0 var(--quarter-note);line-height:1.4}.project-header.svelte-1ge98uo .meta-info:where(.svelte-1ge98uo){font-family:var(--heading-font);font-size:.875rem;color:var(--ink);opacity:.8}.project-header.svelte-1ge98uo .meta-info:where(.svelte-1ge98uo) .separator:where(.svelte-1ge98uo){margin:0 .5rem}.technologies-section.svelte-1ge98uo{margin-bottom:var(--dotted-half-note)}.technologies-section.svelte-1ge98uo h2:where(.svelte-1ge98uo):before{display:none}.technologies-section.svelte-1ge98uo .tech-stack:where(.svelte-1ge98uo){display:flex;flex-wrap:wrap;gap:.5rem;list-style:none;padding:0;margin:0;align-items:stretch}.technologies-section.svelte-1ge98uo .tech-stack:where(.svelte-1ge98uo) .tech-tag:where(.svelte-1ge98uo){display:inline-flex;align-items:center;justify-content:center;padding:.375rem .75rem;margin:0;background:var(--neutral-lightest);border:1px solid var(--blue-300);border-radius:.25rem;font-family:var(--heading-font);font-size:.8125rem;font-weight:500;color:var(--ink);min-width:-moz-fit-content;min-width:fit-content;white-space:nowrap;height:auto}.dark .technologies-section.svelte-1ge98uo .tech-stack:where(.svelte-1ge98uo) .tech-tag:where(.svelte-1ge98uo){background:var(--neutral-darker);border-color:var(--blue-300)}.description-section.svelte-1ge98uo{margin-bottom:var(--dotted-half-note)}.description-section.svelte-1ge98uo h2:where(.svelte-1ge98uo):before{display:none}.description-section.svelte-1ge98uo .description:where(.svelte-1ge98uo){font-size:1.0625rem;line-height:1.6;color:var(--ink)}.gallery-section.svelte-1ge98uo{margin-bottom:var(--dotted-half-note)}.gallery-section.svelte-1ge98uo h2:where(.svelte-1ge98uo){margin-bottom:var(--half-note)}.gallery-section.svelte-1ge98uo h2:where(.svelte-1ge98uo):before{display:none}.gallery-section.svelte-1ge98uo .image-gallery:where(.svelte-1ge98uo){display:grid;grid-template-columns:1fr;gap:var(--half-note)}@media(min-width:56rem){.gallery-section.svelte-1ge98uo .image-gallery:where(.svelte-1ge98uo){grid-template-columns:repeat(2,1fr)}}@media(min-width:66rem){.gallery-section.svelte-1ge98uo .image-gallery:where(.svelte-1ge98uo){grid-template-columns:repeat(3,1fr)}}.gallery-section.svelte-1ge98uo .image-gallery:where(.svelte-1ge98uo) .gallery-item:where(.svelte-1ge98uo){margin:0;padding:0;overflow:hidden;border-radius:.5rem;border:1px solid var(--neutral-200);background:var(--neutral-lightest);transition:all .3s cubic-bezier(.165,.84,.44,1);cursor:pointer;width:100%;box-shadow:0 1px 3px #0000000d}.dark .gallery-section.svelte-1ge98uo .image-gallery:where(.svelte-1ge98uo) .gallery-item:where(.svelte-1ge98uo){background:var(--neutral-darker);border-color:var(--blue-300);box-shadow:0 2px 8px #0003}.gallery-section.svelte-1ge98uo .image-gallery:where(.svelte-1ge98uo) .gallery-item:where(.svelte-1ge98uo):hover{transform:translateY(-2px);box-shadow:0 4px 12px #0000000f;border-color:var(--blue-400)}.dark .gallery-section.svelte-1ge98uo .image-gallery:where(.svelte-1ge98uo) .gallery-item:where(.svelte-1ge98uo):hover{box-shadow:0 4px 12px #00000040;border-color:var(--blue-400)}.gallery-section.svelte-1ge98uo .image-gallery:where(.svelte-1ge98uo) .gallery-item:where(.svelte-1ge98uo) img:where(.svelte-1ge98uo){width:100%;height:auto;display:block;aspect-ratio:16/10;-o-object-fit:cover;object-fit:cover}.highlights-section.svelte-1ge98uo{margin-bottom:var(--whole-note)}.highlights-section.svelte-1ge98uo h2:where(.svelte-1ge98uo):before{display:none}.highlights-section.svelte-1ge98uo .highlights-list:where(.svelte-1ge98uo){list-style-type:none;padding:0;margin:0}.highlights-section.svelte-1ge98uo .highlights-list:where(.svelte-1ge98uo) li:where(.svelte-1ge98uo){position:relative;padding-left:1.5rem;margin-bottom:var(--half-note);line-height:1.6}.highlights-section.svelte-1ge98uo .highlights-list:where(.svelte-1ge98uo) li:where(.svelte-1ge98uo):before{content:"→";position:absolute;left:0;color:var(--yellow);font-weight:700}.highlights-section.svelte-1ge98uo .highlights-list:where(.svelte-1ge98uo) li:where(.svelte-1ge98uo):last-child{margin-bottom:0}.project-footer.svelte-1ge98uo{margin-top:var(--half-note);padding-top:var(--half-note)}.project-footer.svelte-1ge98uo .back-button:where(.svelte-1ge98uo){font-family:var(--heading-font);font-size:.875rem;text-transform:uppercase;font-weight:700;text-decoration:none;color:var(--neutral-mid);transition:color .15s}.project-footer.svelte-1ge98uo .back-button:where(.svelte-1ge98uo):hover{color:var(--blue-light)}
