@turnipxenon/pineapple 2.4.5 → 2.4.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/.idea/workspace.xml +15 -14
  2. package/.svelte-kit/__package__/app.postcss +4 -0
  3. package/.svelte-kit/__package__/postcss.d.ts +3 -0
  4. package/.svelte-kit/generated/server/internal.js +1 -1
  5. package/.svelte-kit/output/client/.vite/manifest.json +26 -26
  6. package/.svelte-kit/output/client/_app/immutable/assets/{0.BIZ0IPOt.css → 0.CIpy7FrR.css} +1 -1
  7. package/.svelte-kit/output/client/_app/immutable/assets/SeaweedTemplate.BH7AvcuU.css +1 -0
  8. package/.svelte-kit/output/client/_app/immutable/assets/{_layout.m4xJvVt-.css → _layout.h10Yaexo.css} +1 -1
  9. package/.svelte-kit/output/client/_app/immutable/chunks/{PineappleBaseLayout.SSm4gITf.js → PineappleBaseLayout.DLo8Eik6.js} +1 -1
  10. package/.svelte-kit/output/client/_app/immutable/chunks/SeaweedTemplate.CZ9ITcQ_.js +98 -0
  11. package/.svelte-kit/output/client/_app/immutable/chunks/{entry.CQQG-dzn.js → entry.D3rPVCbo.js} +2 -2
  12. package/.svelte-kit/output/client/_app/immutable/chunks/{store.CzGlMZaJ.js → store.BIqnj0vd.js} +1 -1
  13. package/.svelte-kit/output/client/_app/immutable/entry/{app.oi3PnWPJ.js → app.D9IQm5uC.js} +2 -2
  14. package/.svelte-kit/output/client/_app/immutable/entry/start.VRG2KCMZ.js +1 -0
  15. package/.svelte-kit/output/client/_app/immutable/nodes/{2.B9XiR3AU.js → 2.DnP1Yfj1.js} +1 -1
  16. package/.svelte-kit/output/client/_app/immutable/nodes/{3.DFl_-mE9.js → 3.BPIP4PcD.js} +1 -1
  17. package/.svelte-kit/output/client/_app/immutable/nodes/5.PabxfGcD.js +1 -0
  18. package/.svelte-kit/output/client/_app/immutable/nodes/{6.drIpFDQq.js → 6.D3Ze_9sQ.js} +1 -1
  19. package/.svelte-kit/output/client/_app/version.json +1 -1
  20. package/.svelte-kit/output/prerendered/pages/portfolio.html +76 -76
  21. package/.svelte-kit/output/server/.vite/manifest.json +2 -2
  22. package/.svelte-kit/output/server/_app/immutable/assets/SeaweedTemplate.BH7AvcuU.css +1 -0
  23. package/.svelte-kit/output/server/_app/immutable/assets/{_layout.m4xJvVt-.css → _layout.h10Yaexo.css} +1 -1
  24. package/.svelte-kit/output/server/chunks/SeaweedTemplate.js +74 -81
  25. package/.svelte-kit/output/server/chunks/internal.js +1 -1
  26. package/.svelte-kit/output/server/entries/pages/portfolio/_page.svelte.js +1 -1
  27. package/.svelte-kit/output/server/manifest-full.js +1 -1
  28. package/.svelte-kit/output/server/manifest.js +1 -1
  29. package/.svelte-kit/output/server/nodes/0.js +2 -2
  30. package/.svelte-kit/output/server/nodes/2.js +1 -1
  31. package/.svelte-kit/output/server/nodes/3.js +1 -1
  32. package/.svelte-kit/output/server/nodes/5.js +2 -2
  33. package/.svelte-kit/output/server/nodes/6.js +2 -2
  34. package/dist/app.postcss +4 -0
  35. package/dist/postcss.d.ts +3 -0
  36. package/package.json +1 -1
  37. package/src/lib/app.postcss +4 -0
  38. package/src/lib/postcss.d.ts +3 -0
  39. package/.svelte-kit/output/client/_app/immutable/assets/SeaweedTemplate.pOPCzkb2.css +0 -1
  40. package/.svelte-kit/output/client/_app/immutable/chunks/SeaweedTemplate.BmvpbSLb.js +0 -98
  41. package/.svelte-kit/output/client/_app/immutable/entry/start.Dazgoa1N.js +0 -1
  42. package/.svelte-kit/output/client/_app/immutable/nodes/5.YVruzYx6.js +0 -1
  43. package/.svelte-kit/output/server/_app/immutable/assets/SeaweedTemplate.pOPCzkb2.css +0 -1
  44. /package/.svelte-kit/output/client/_app/immutable/nodes/{0.Bay8_8oq.js → 0.5ibwyEBM.js} +0 -0
@@ -303,7 +303,7 @@ const WeaverFootage = "/_app/immutable/assets/weaver-footage.sjDEbkrX.gif";
303
303
  const WindowSetGraph = "/_app/immutable/assets/window-set.IpgsYUna.png";
304
304
  const ThisWebsiteFootage = "/_app/immutable/assets/seaweed-showcase.TTVTTC5m.mp4";
305
305
  const css = {
306
- code: "main.svelte-1olxn2g.svelte-1olxn2g.svelte-1olxn2g{width:100%;overflow:visible;display:flex;flex-direction:column;justify-content:center;align-items:center}h1.svelte-1olxn2g.svelte-1olxn2g.svelte-1olxn2g{font-size:2em}h2.svelte-1olxn2g.svelte-1olxn2g.svelte-1olxn2g{font-size:1.5em}.section-card.svelte-1olxn2g.svelte-1olxn2g.svelte-1olxn2g{padding:3em;max-width:800px}.game-card.svelte-1olxn2g.svelte-1olxn2g.svelte-1olxn2g,.project-card.svelte-1olxn2g.svelte-1olxn2g.svelte-1olxn2g{width:100vw;max-width:36em;margin-bottom:3em}.game-card.svelte-1olxn2g>video.svelte-1olxn2g.svelte-1olxn2g{border-top-left-radius:1em;border-top-right-radius:1em;max-height:24em;width:100%;-o-object-fit:cover;object-fit:cover}#migrante-alberta.svelte-1olxn2g.svelte-1olxn2g.svelte-1olxn2g,.game-card.svelte-1olxn2g>img.svelte-1olxn2g.svelte-1olxn2g,.project-card.svelte-1olxn2g>img.svelte-1olxn2g.svelte-1olxn2g{border-top-left-radius:1em;border-top-right-radius:1em}#migrante-alberta.svelte-1olxn2g.svelte-1olxn2g.svelte-1olxn2g{width:100%;-o-object-fit:cover;object-fit:cover}.svelte-1olxn2g.svelte-1olxn2g.svelte-1olxn2g:is(.dark .game-button){--tw-bg-opacity:1;background-color:rgb(var(--color-primary-500) / var(--tw-bg-opacity));color:rgb(var(--on-primary))}.game-button.svelte-1olxn2g.svelte-1olxn2g.svelte-1olxn2g:disabled{cursor:not-allowed;opacity:0.5}.game-button.svelte-1olxn2g.svelte-1olxn2g.svelte-1olxn2g:disabled:hover{--tw-brightness:brightness(1);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.game-button.svelte-1olxn2g.svelte-1olxn2g.svelte-1olxn2g:disabled:active{--tw-scale-x:1;--tw-scale-y:1;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.game-button.svelte-1olxn2g.svelte-1olxn2g.svelte-1olxn2g{font-size:1rem;line-height:1.5rem;padding-left:1.25rem;padding-right:1.25rem;padding-top:9px;padding-bottom:9px;white-space:nowrap;text-align:center;display:inline-flex;align-items:center;justify-content:center;transition-property:all;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms;border-radius:var(--theme-rounded-base)}.game-button.svelte-1olxn2g>.svelte-1olxn2g:not([hidden])~.svelte-1olxn2g:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(0.5rem * var(--tw-space-x-reverse));margin-left:calc(0.5rem * calc(1 - var(--tw-space-x-reverse)))}.game-button.svelte-1olxn2g.svelte-1olxn2g.svelte-1olxn2g:hover{--tw-brightness:brightness(1.15);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.game-button.svelte-1olxn2g.svelte-1olxn2g.svelte-1olxn2g:active{--tw-scale-x:95%;--tw-scale-y:95%;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));--tw-brightness:brightness(.9);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.game-button.svelte-1olxn2g.svelte-1olxn2g.svelte-1olxn2g{--tw-bg-opacity:1;background-color:rgb(var(--color-primary-500) / var(--tw-bg-opacity));color:rgb(var(--on-primary))}.svelte-1olxn2g.svelte-1olxn2g.svelte-1olxn2g:is(.dark .game-button){--tw-bg-opacity:1;background-color:rgb(var(--color-primary-500) / var(--tw-bg-opacity));color:rgb(var(--on-primary))}.game-button.svelte-1olxn2g>img.svelte-1olxn2g.svelte-1olxn2g{max-height:1lh}.two-column-separated.svelte-1olxn2g.svelte-1olxn2g.svelte-1olxn2g{display:flex;justify-content:space-between}.more-section.svelte-1olxn2g.svelte-1olxn2g.svelte-1olxn2g{padding:1em}.greater-about-div.svelte-1olxn2g.svelte-1olxn2g.svelte-1olxn2g{display:flex;flex-direction:column;max-width:36em}.experience-and-about-div.svelte-1olxn2g.svelte-1olxn2g.svelte-1olxn2g{display:flex;gap:2em;flex-wrap:wrap;justify-content:center;align-items:flex-start}.game-card-body.svelte-1olxn2g.svelte-1olxn2g.svelte-1olxn2g,.project-card-body.svelte-1olxn2g.svelte-1olxn2g.svelte-1olxn2g{padding:1em}.game-card-body.svelte-1olxn2g>blockquote.svelte-1olxn2g.svelte-1olxn2g{margin-bottom:0.7lh}.game-card-body.svelte-1olxn2g>h1.svelte-1olxn2g.svelte-1olxn2g,.project-card-body.svelte-1olxn2g>h2.svelte-1olxn2g.svelte-1olxn2g{text-align:center}.game-link-section.svelte-1olxn2g.svelte-1olxn2g.svelte-1olxn2g{display:flex;flex-direction:row;justify-content:center;gap:1em;margin-top:1em}.games-section.svelte-1olxn2g.svelte-1olxn2g.svelte-1olxn2g,.projects-section.svelte-1olxn2g.svelte-1olxn2g.svelte-1olxn2g{display:flex;flex-wrap:wrap;gap:2em;justify-content:center}.projects-section.svelte-1olxn2g.svelte-1olxn2g.svelte-1olxn2g{align-items:flex-start}.long-btn-image.svelte-1olxn2g.svelte-1olxn2g.svelte-1olxn2g{max-height:1lh}.itch-promo.svelte-1olxn2g.svelte-1olxn2g.svelte-1olxn2g{padding:4em}#hepcat-video.svelte-1olxn2g.svelte-1olxn2g.svelte-1olxn2g{-o-object-position:0 0;object-position:0 0}.title-card.svelte-1olxn2g.svelte-1olxn2g.svelte-1olxn2g{width:clamp(360px, 80vw, 800px)}[class*='qt-'].svelte-1olxn2g.svelte-1olxn2g.svelte-1olxn2g{font-weight:var(--qt-font-weight)}",
306
+ code: "main.svelte-f3i6qg.svelte-f3i6qg.svelte-f3i6qg{width:100%;overflow:visible;display:flex;flex-direction:column;justify-content:center;align-items:center}h1.svelte-f3i6qg.svelte-f3i6qg.svelte-f3i6qg{font-size:2em}h2.svelte-f3i6qg.svelte-f3i6qg.svelte-f3i6qg{font-size:1.5em}.section-card.svelte-f3i6qg.svelte-f3i6qg.svelte-f3i6qg{padding:3em;max-width:800px}.game-card.svelte-f3i6qg.svelte-f3i6qg.svelte-f3i6qg,.project-card.svelte-f3i6qg.svelte-f3i6qg.svelte-f3i6qg{width:100vw;max-width:36em;margin-bottom:3em}.game-card.svelte-f3i6qg>video.svelte-f3i6qg.svelte-f3i6qg{border-top-left-radius:1em;border-top-right-radius:1em;max-height:24em;width:100%;-o-object-fit:cover;object-fit:cover}#migrante-alberta.svelte-f3i6qg.svelte-f3i6qg.svelte-f3i6qg,.game-card.svelte-f3i6qg>img.svelte-f3i6qg.svelte-f3i6qg,.project-card.svelte-f3i6qg>img.svelte-f3i6qg.svelte-f3i6qg{border-top-left-radius:1em;border-top-right-radius:1em}#migrante-alberta.svelte-f3i6qg.svelte-f3i6qg.svelte-f3i6qg{width:100%;-o-object-fit:cover;object-fit:cover}.svelte-f3i6qg.svelte-f3i6qg.svelte-f3i6qg:is(.dark .game-button){--tw-bg-opacity:1;background-color:rgb(var(--color-primary-500) / var(--tw-bg-opacity));color:rgb(var(--on-primary))}.game-button.svelte-f3i6qg.svelte-f3i6qg.svelte-f3i6qg:disabled{cursor:not-allowed;opacity:0.5}.game-button.svelte-f3i6qg.svelte-f3i6qg.svelte-f3i6qg:disabled:hover{--tw-brightness:brightness(1);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.game-button.svelte-f3i6qg.svelte-f3i6qg.svelte-f3i6qg:disabled:active{--tw-scale-x:1;--tw-scale-y:1;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.game-button.svelte-f3i6qg.svelte-f3i6qg.svelte-f3i6qg{font-size:1rem;line-height:1.5rem;padding-left:1.25rem;padding-right:1.25rem;padding-top:9px;padding-bottom:9px;white-space:nowrap;text-align:center;display:inline-flex;align-items:center;justify-content:center;transition-property:all;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms;border-radius:var(--theme-rounded-base)}.game-button.svelte-f3i6qg>.svelte-f3i6qg:not([hidden])~.svelte-f3i6qg:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(0.5rem * var(--tw-space-x-reverse));margin-left:calc(0.5rem * calc(1 - var(--tw-space-x-reverse)))}.game-button.svelte-f3i6qg.svelte-f3i6qg.svelte-f3i6qg:hover{--tw-brightness:brightness(1.15);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.game-button.svelte-f3i6qg.svelte-f3i6qg.svelte-f3i6qg:active{--tw-scale-x:95%;--tw-scale-y:95%;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));--tw-brightness:brightness(.9);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.game-button.svelte-f3i6qg.svelte-f3i6qg.svelte-f3i6qg{--tw-bg-opacity:1;background-color:rgb(var(--color-primary-500) / var(--tw-bg-opacity));color:rgb(var(--on-primary))}.svelte-f3i6qg.svelte-f3i6qg.svelte-f3i6qg:is(.dark .game-button){--tw-bg-opacity:1;background-color:rgb(var(--color-primary-500) / var(--tw-bg-opacity));color:rgb(var(--on-primary))}.game-button.svelte-f3i6qg>img.svelte-f3i6qg.svelte-f3i6qg{max-height:1lh}.two-column-separated.svelte-f3i6qg.svelte-f3i6qg.svelte-f3i6qg{display:flex;justify-content:space-between}.more-section.svelte-f3i6qg.svelte-f3i6qg.svelte-f3i6qg{padding:1em}.greater-about-div.svelte-f3i6qg.svelte-f3i6qg.svelte-f3i6qg{display:flex;flex-direction:column;max-width:36em}.experience-and-about-div.svelte-f3i6qg.svelte-f3i6qg.svelte-f3i6qg{display:flex;gap:2em;flex-wrap:wrap;justify-content:center;align-items:flex-start}.game-card-body.svelte-f3i6qg.svelte-f3i6qg.svelte-f3i6qg,.project-card-body.svelte-f3i6qg.svelte-f3i6qg.svelte-f3i6qg{padding:1em}.game-card-body.svelte-f3i6qg>blockquote.svelte-f3i6qg.svelte-f3i6qg{margin-bottom:0.7lh}.game-card-body.svelte-f3i6qg>h1.svelte-f3i6qg.svelte-f3i6qg,.project-card-body.svelte-f3i6qg>h2.svelte-f3i6qg.svelte-f3i6qg{text-align:center}.game-link-section.svelte-f3i6qg.svelte-f3i6qg.svelte-f3i6qg{display:flex;flex-direction:row;justify-content:center;gap:1em;margin-top:1em}.games-section.svelte-f3i6qg.svelte-f3i6qg.svelte-f3i6qg,.projects-section.svelte-f3i6qg.svelte-f3i6qg.svelte-f3i6qg{display:flex;flex-wrap:wrap;gap:2em;justify-content:center}.projects-section.svelte-f3i6qg.svelte-f3i6qg.svelte-f3i6qg{align-items:flex-start}.long-btn-image.svelte-f3i6qg.svelte-f3i6qg.svelte-f3i6qg{max-height:1lh}.itch-promo.svelte-f3i6qg.svelte-f3i6qg.svelte-f3i6qg{padding:4em}#hepcat-video.svelte-f3i6qg.svelte-f3i6qg.svelte-f3i6qg{-o-object-position:0 0;object-position:0 0}.title-card.svelte-f3i6qg.svelte-f3i6qg.svelte-f3i6qg{width:clamp(360px, 80vw, 800px)}[class*='qt-'].svelte-f3i6qg.svelte-f3i6qg.svelte-f3i6qg{font-weight:var(--qt-font-weight)}.accordion-header.svelte-f3i6qg.svelte-f3i6qg.svelte-f3i6qg{margin-top:0.25em}",
307
307
  map: null
308
308
  };
309
309
  let additionalFontWeight = "";
@@ -369,17 +369,17 @@ const SeaweedTemplate = create_ssr_component(($$result, $$props, $$bindings, slo
369
369
  visibility: ${mainVisibility};
370
370
  `,
371
371
  0
372
- )} class="svelte-1olxn2g"><div class="experience-and-about-div svelte-1olxn2g"><div class="greater-about-div svelte-1olxn2g">${validate_component(Card, "Card").$$render($$result, {}, {}, {
372
+ )} class="svelte-f3i6qg"><div class="experience-and-about-div svelte-f3i6qg"><div class="greater-about-div svelte-f3i6qg">${validate_component(Card, "Card").$$render($$result, {}, {}, {
373
373
  content: () => {
374
- return `<section class="section-card svelte-1olxn2g" slot="content"> <h1 class="svelte-1olxn2g" data-svelte-h="svelte-soqi9t">About</h1> <p class="svelte-1olxn2g">Hi! My name is ${escape(name)}! I work as a software developer. Outside of that, I like making games, and
374
+ return `<section class="section-card svelte-f3i6qg" slot="content"> <h1 class="svelte-f3i6qg" data-svelte-h="svelte-soqi9t">About</h1> <p class="svelte-f3i6qg">Hi! My name is ${escape(name)}! I work as a software developer. Outside of that, I like making games, and
375
375
  trying to do everything in between required to make one. I have some showcased below, our visit
376
- my itch.io page for more of them.</p> <p class="svelte-1olxn2g" data-svelte-h="svelte-1htq5b8">I also graduated with BS Computing Science, Specializing in Software Practice, and a
377
- certificate in Computer Game Development at University of Alberta.</p> <p class="svelte-1olxn2g" data-svelte-h="svelte-1tjf6ho">I&#39;m inspired by games like Harvest Moon: Friends of Mineral Town, Rune Factory 4, Theatrhythm,
376
+ my itch.io page for more of them.</p> <p class="svelte-f3i6qg" data-svelte-h="svelte-1htq5b8">I also graduated with BS Computing Science, Specializing in Software Practice, and a
377
+ certificate in Computer Game Development at University of Alberta.</p> <p class="svelte-f3i6qg" data-svelte-h="svelte-1tjf6ho">I&#39;m inspired by games like Harvest Moon: Friends of Mineral Town, Rune Factory 4, Theatrhythm,
378
378
  Bravely Default: Flying Fairy, Boku no Natsuyasumi 2, and A Short Hike.</p> </section>`;
379
379
  }
380
380
  })} ${validate_component(Card, "Card").$$render($$result, {}, {}, {
381
381
  content: () => {
382
- return `<section class="section-card svelte-1olxn2g" slot="content">${validate_component(SocialSection, "SocialSection").$$render($$result, { email, linkedinSlug }, {}, {})} ${validate_component(ElementVisbilityDetector, "ElementVisbilityDetector").$$render(
382
+ return `<section class="section-card svelte-f3i6qg" slot="content">${validate_component(SocialSection, "SocialSection").$$render($$result, { email, linkedinSlug }, {}, {})} ${validate_component(ElementVisbilityDetector, "ElementVisbilityDetector").$$render(
383
383
  $$result,
384
384
  { isVisible },
385
385
  {
@@ -393,90 +393,83 @@ const SeaweedTemplate = create_ssr_component(($$result, $$props, $$bindings, slo
393
393
  }
394
394
  })}</div> ${validate_component(Card, "Card").$$render($$result, {}, {}, {
395
395
  content: () => {
396
- return `<section class="section-card svelte-1olxn2g" slot="content"><h1 class="svelte-1olxn2g" data-svelte-h="svelte-1r6ig88">Experience</h1> <h2 class="svelte-1olxn2g" data-svelte-h="svelte-a3jo9c">Software Engineer</h2> <div class="two-column-separated svelte-1olxn2g" data-svelte-h="svelte-psdxr0"><div class="svelte-1olxn2g">July 2023 – January 2024</div> <div style="text-align: end" class="svelte-1olxn2g">Twitch, Remote</div></div> <ul class="svelte-1olxn2g" data-svelte-h="svelte-1k94u2s"><li class="svelte-1olxn2g">Contributed to <span class="qt-go svelte-1olxn2g">Golang</span> and <span class="qt-ts svelte-1olxn2g">Typescript</span> codebases,
396
+ return `<section class="section-card svelte-f3i6qg" slot="content"><h1 class="svelte-f3i6qg" data-svelte-h="svelte-1r6ig88">Experience</h1> <h2 class="svelte-f3i6qg" data-svelte-h="svelte-a3jo9c">Software Engineer</h2> <div class="two-column-separated svelte-f3i6qg" data-svelte-h="svelte-psdxr0"><div class="svelte-f3i6qg">July 2023 – January 2024</div> <div style="text-align: end" class="svelte-f3i6qg">Twitch, Remote</div></div> <ul class="svelte-f3i6qg" data-svelte-h="svelte-1k94u2s"><li class="svelte-f3i6qg">Contributed to <span class="qt-go svelte-f3i6qg">Golang</span> and <span class="qt-ts svelte-f3i6qg">Typescript</span> codebases,
397
397
  across several teams, to accommodate adjustments for public-facing user safety related features, to better
398
- comply with EU’s <a target="_blank" href="https://commission.europa.eu/strategy-and-policy/priorities-2019-2024/europe-fit-digital-age/digital-services-act/europe-fit-digital-age-new-online-rules-platforms_en" class="svelte-1olxn2g">Digital Services Act</a>, also including feature flags, alarms, unit tests, end-to-end testing, and
399
- documentation</li> <li class="svelte-1olxn2g">Improved observability for upcoming features by setting up new <span class="qt-aws qt-infra svelte-1olxn2g">AWS</span>
398
+ comply with EU’s <a target="_blank" href="https://commission.europa.eu/strategy-and-policy/priorities-2019-2024/europe-fit-digital-age/digital-services-act/europe-fit-digital-age-new-online-rules-platforms_en" class="svelte-f3i6qg">Digital Services Act</a>, also including feature flags, alarms, unit tests, end-to-end testing, and
399
+ documentation</li> <li class="svelte-f3i6qg">Improved observability for upcoming features by setting up new <span class="qt-aws qt-infra svelte-f3i6qg">AWS</span>
400
400
  resources to integrate internal data platform tools with existing alarms in our team’s microservice,
401
- utilizing <span class="qt-aws qt-infra svelte-1olxn2g">Cloudwatch</span> and <span class="qt-aws qt-infra svelte-1olxn2g">Kinesis Data Stream</span>,
402
- while adhering to best practices for <span class="qt-aws qt-infra svelte-1olxn2g">AWS CDK</span> (infrastructure as code)</li></ul> <br class="svelte-1olxn2g"> <h2 class="svelte-1olxn2g" data-svelte-h="svelte-wd964g">Software Engineer Intern</h2> <div class="two-column-separated svelte-1olxn2g" data-svelte-h="svelte-cx1fi3"><div class="svelte-1olxn2g">May 2022 – Aug 2022</div> <div style="text-align: end" class="svelte-1olxn2g">Twitch, San Francisco</div></div> <ul class="svelte-1olxn2g" data-svelte-h="svelte-1coh9hk"><li class="svelte-1olxn2g">Built a <span class="qt-infra svelte-1olxn2g">load testing service</span> that can be configured to generate different
403
- message types at different volumes that can be easily extended to target different chat services</li> <li class="svelte-1olxn2g">Used Twitch’s set of custom tools, including Twitch’s custom RPC protocol, to create a backend
404
- service with business logic written in <span class="qt-go svelte-1olxn2g">Go</span> and cloud infrastructure utilizing
405
- <span class="qt-infra qt-aws svelte-1olxn2g">ECS on Fargate, Cloudwatch, and DynamoDB</span>
406
- , defined in <span class="qt-ts svelte-1olxn2g">Typescript</span>-flavored CDK</li> <li class="svelte-1olxn2g">Wrote a technical specification document for the service’s MVP and possible future features, and
401
+ utilizing <span class="qt-aws qt-infra svelte-f3i6qg">Cloudwatch</span> and <span class="qt-aws qt-infra svelte-f3i6qg">Kinesis Data Stream</span>,
402
+ while adhering to best practices for <span class="qt-aws qt-infra svelte-f3i6qg">AWS CDK</span> (infrastructure as code)</li></ul> <br class="svelte-f3i6qg"> <h2 class="svelte-f3i6qg" data-svelte-h="svelte-wd964g">Software Engineer Intern</h2> <div class="two-column-separated svelte-f3i6qg" data-svelte-h="svelte-cx1fi3"><div class="svelte-f3i6qg">May 2022 – Aug 2022</div> <div style="text-align: end" class="svelte-f3i6qg">Twitch, San Francisco</div></div> <ul class="svelte-f3i6qg" data-svelte-h="svelte-1coh9hk"><li class="svelte-f3i6qg">Built a <span class="qt-infra svelte-f3i6qg">load testing service</span> that can be configured to generate different
403
+ message types at different volumes that can be easily extended to target different chat services</li> <li class="svelte-f3i6qg">Used Twitch’s set of custom tools, including Twitch’s custom RPC protocol, to create a backend
404
+ service with business logic written in <span class="qt-go svelte-f3i6qg">Go</span> and cloud infrastructure utilizing
405
+ <span class="qt-infra qt-aws svelte-f3i6qg">ECS on Fargate, Cloudwatch, and DynamoDB</span>
406
+ , defined in <span class="qt-ts svelte-f3i6qg">Typescript</span>-flavored CDK</li> <li class="svelte-f3i6qg">Wrote a technical specification document for the service’s MVP and possible future features, and
407
407
  additional documentation on how to use the service and how to extend the load testing service to include
408
- new services to test</li></ul> <br class="svelte-1olxn2g"> ${validate_component(Accordion, "Accordion").$$render($$result, { hover: "hover:bg-surface-hover-token" }, {}, {
408
+ new services to test</li></ul> <br class="svelte-f3i6qg"> ${validate_component(Accordion, "Accordion").$$render($$result, {}, {}, {
409
409
  default: () => {
410
- return `${validate_component(AccordionItem, "AccordionItem").$$render(
411
- $$result,
412
- {
413
- class: "variant-filled-primary rounded-md"
414
- },
415
- {},
416
- {
417
- content: () => {
418
- return `<section class="more-section svelte-1olxn2g">${!letChaos ? `<h2 class="svelte-1olxn2g" data-svelte-h="svelte-wd964g">Software Engineer Intern</h2> <div class="two-column-separated svelte-1olxn2g" data-svelte-h="svelte-b9eewq"><div class="svelte-1olxn2g">May 2021 – Dec 2021</div> <div style="text-align: end" class="svelte-1olxn2g">Twitch / Amazon Web Services Canada, Remote</div></div> <ul class="svelte-1olxn2g" data-svelte-h="svelte-oswc7z"><li class="svelte-1olxn2g">Implemented and wrote tests for a feature in Twitch’s backend authentication
410
+ return `${validate_component(AccordionItem, "AccordionItem").$$render($$result, {}, {}, {
411
+ content: () => {
412
+ return `<section class="more-section svelte-f3i6qg">${!letChaos ? `<h2 class="svelte-f3i6qg" data-svelte-h="svelte-wd964g">Software Engineer Intern</h2> <div class="two-column-separated svelte-f3i6qg" data-svelte-h="svelte-b9eewq"><div class="svelte-f3i6qg">May 2021 – Dec 2021</div> <div style="text-align: end" class="svelte-f3i6qg">Twitch / Amazon Web Services Canada, Remote</div></div> <ul class="svelte-f3i6qg" data-svelte-h="svelte-oswc7z"><li class="svelte-f3i6qg">Implemented and wrote tests for a feature in Twitch’s backend authentication
419
413
  systems and frontend web application that will help suggest security improvements to
420
- over hundreds of thousands of users daily</li> <li class="svelte-1olxn2g">Learned <span class="qt-go svelte-1olxn2g">Go</span>, <span class="qt-ts svelte-1olxn2g">Typescript</span>, <span class="qt-react svelte-1olxn2g">React</span>, and other new technologies on the go to contribute to
421
- the codebase</li></ul>` : `niko baikal seal from toba aquarium`} <br class="svelte-1olxn2g"></section> `;
422
- },
423
- summary: () => {
424
- return `<div slot="summary" class="svelte-1olxn2g" data-svelte-h="svelte-wjbz6x"><h2 class="mt-2 svelte-1olxn2g">More experience</h2></div>`;
425
- }
414
+ over hundreds of thousands of users daily</li> <li class="svelte-f3i6qg">Learned <span class="qt-go svelte-f3i6qg">Go</span>, <span class="qt-ts svelte-f3i6qg">Typescript</span>, <span class="qt-react svelte-f3i6qg">React</span>, and other new technologies on the go to contribute to
415
+ the codebase</li></ul>` : `niko baikal seal from toba aquarium`} <br class="svelte-f3i6qg"></section> `;
416
+ },
417
+ summary: () => {
418
+ return `<div slot="summary" class="svelte-f3i6qg" data-svelte-h="svelte-jx0pzv"><h2 class="accordion-header svelte-f3i6qg">More experience</h2></div>`;
426
419
  }
427
- )}`;
420
+ })}`;
428
421
  }
429
422
  })}</section>`;
430
423
  }
431
424
  })}</div> ${validate_component(Card, "Card").$$render($$result, {}, {}, {
432
425
  content: () => {
433
- return `<div class="section-card title-card svelte-1olxn2g" slot="content" data-svelte-h="svelte-o20xib"><h1 class="text-center svelte-1olxn2g">Games</h1></div>`;
426
+ return `<div class="section-card title-card svelte-f3i6qg" slot="content" data-svelte-h="svelte-o20xib"><h1 class="text-center svelte-f3i6qg">Games</h1></div>`;
434
427
  }
435
- })} <section class="games-section svelte-1olxn2g">${validate_component(Card, "Card").$$render($$result, {}, {}, {
428
+ })} <section class="games-section svelte-f3i6qg">${validate_component(Card, "Card").$$render($$result, {}, {}, {
436
429
  content: () => {
437
- return `<section class="game-card svelte-1olxn2g" slot="content"><video playsinline autoplay muted loop preload="none" class="svelte-1olxn2g" data-svelte-h="svelte-18m3p75">video unavailable. original video contains pengi gameplay showing the dynamic dialog
430
+ return `<section class="game-card svelte-f3i6qg" slot="content"><video playsinline autoplay muted loop preload="none" class="svelte-f3i6qg" data-svelte-h="svelte-18m3p75">video unavailable. original video contains pengi gameplay showing the dynamic dialog
438
431
  layout and character animation.
439
- <source${add_attribute("src", HeaderPengi, 0)} type="video/mp4" class="svelte-1olxn2g"></video> <section class="game-card-body svelte-1olxn2g"><h1 class="svelte-1olxn2g" data-svelte-h="svelte-kn1e7n">Pengi</h1> <blockquote class="svelte-1olxn2g" data-svelte-h="svelte-l5674o">Well well, quite the dreamer, aren’t you? Might be hard to get in... costs a lot of
440
- money...</blockquote> <p class="svelte-1olxn2g" data-svelte-h="svelte-1wwm72v">Pengi is a text-based adventure made in <span class="qt-unity svelte-1olxn2g">Unity</span>. I acted as the sole
441
- programmer for the team. Most of the work revolves around UI and creating <a href="https://yarnspinner.dev/" target="_blank" class="svelte-1olxn2g">YarnSpinner</a> commands for writers
442
- to use to create expressive stage directions in the script.</p> <section class="game-link-section svelte-1olxn2g"><button type="button" class="game-button turnip-button svelte-1olxn2g" role="link" title="https://github.com/GreenTea-M/ProjectPengi" data-svelte-h="svelte-y5jd5x"><img alt="github icon"${add_attribute("src", GithubIcon, 0)} class="svelte-1olxn2g"></button> <button type="button" class="game-button turnip-button svelte-1olxn2g" role="link" title="https://turnipxenon.itch.io/pengi" data-svelte-h="svelte-18q5lws"><img alt="itch.io icon"${add_attribute("src", ItchLogoHotLink, 0)} class="svelte-1olxn2g"></button></section></section></section>`;
432
+ <source${add_attribute("src", HeaderPengi, 0)} type="video/mp4" class="svelte-f3i6qg"></video> <section class="game-card-body svelte-f3i6qg"><h1 class="svelte-f3i6qg" data-svelte-h="svelte-kn1e7n">Pengi</h1> <blockquote class="svelte-f3i6qg" data-svelte-h="svelte-l5674o">Well well, quite the dreamer, aren’t you? Might be hard to get in... costs a lot of
433
+ money...</blockquote> <p class="svelte-f3i6qg" data-svelte-h="svelte-1wwm72v">Pengi is a text-based adventure made in <span class="qt-unity svelte-f3i6qg">Unity</span>. I acted as the sole
434
+ programmer for the team. Most of the work revolves around UI and creating <a href="https://yarnspinner.dev/" target="_blank" class="svelte-f3i6qg">YarnSpinner</a> commands for writers
435
+ to use to create expressive stage directions in the script.</p> <section class="game-link-section svelte-f3i6qg"><button type="button" class="game-button turnip-button svelte-f3i6qg" role="link" title="https://github.com/GreenTea-M/ProjectPengi" data-svelte-h="svelte-y5jd5x"><img alt="github icon"${add_attribute("src", GithubIcon, 0)} class="svelte-f3i6qg"></button> <button type="button" class="game-button turnip-button svelte-f3i6qg" role="link" title="https://turnipxenon.itch.io/pengi" data-svelte-h="svelte-18q5lws"><img alt="itch.io icon"${add_attribute("src", ItchLogoHotLink, 0)} class="svelte-f3i6qg"></button></section></section></section>`;
443
436
  }
444
437
  })} ${validate_component(Card, "Card").$$render($$result, {}, {}, {
445
438
  content: () => {
446
- return `<section class="game-card svelte-1olxn2g" slot="content"> <video playsinline autoplay muted loop preload="none" id="hepcat-video" class="svelte-1olxn2g" data-svelte-h="svelte-11xid74"><source${add_attribute("src", HeaderHepCat, 0)} type="video/mp4" class="svelte-1olxn2g"></video> <section class="game-card-body svelte-1olxn2g"><h1 class="svelte-1olxn2g" data-svelte-h="svelte-1iabfbj">Hepcat</h1> <blockquote class="svelte-1olxn2g" data-svelte-h="svelte-1sm2zx2">&quot;Cats, Jazz, and a little bit of Death. What more could anyone ask for?&quot;</blockquote> <p class="svelte-1olxn2g" data-svelte-h="svelte-hwmnnf">This is a course project made by a team of six for <a href="https://sites.google.com/ualberta.ca/cmput250/" class="svelte-1olxn2g">CMPUT 250</a>, and it won <a href="https://webdocs.cs.ualberta.ca/~nathanst/certificate/" class="svelte-1olxn2g">Game of the year.</a></p> <p class="svelte-1olxn2g" data-svelte-h="svelte-1k65o8o">Hep Cat is a rhythm game made in <a href="https://www.rpgmakerweb.com/products/programs/rpg-maker-mv" target="_blank" class="qt-rpgmaker svelte-1olxn2g">RPG Maker MV</a> with the help of additional custom-made <span class="qt-js svelte-1olxn2g">Javascript</span> plugins. I
439
+ return `<section class="game-card svelte-f3i6qg" slot="content"> <video playsinline autoplay muted loop preload="none" id="hepcat-video" class="svelte-f3i6qg" data-svelte-h="svelte-11xid74"><source${add_attribute("src", HeaderHepCat, 0)} type="video/mp4" class="svelte-f3i6qg"></video> <section class="game-card-body svelte-f3i6qg"><h1 class="svelte-f3i6qg" data-svelte-h="svelte-1iabfbj">Hepcat</h1> <blockquote class="svelte-f3i6qg" data-svelte-h="svelte-1sm2zx2">&quot;Cats, Jazz, and a little bit of Death. What more could anyone ask for?&quot;</blockquote> <p class="svelte-f3i6qg" data-svelte-h="svelte-hwmnnf">This is a course project made by a team of six for <a href="https://sites.google.com/ualberta.ca/cmput250/" class="svelte-f3i6qg">CMPUT 250</a>, and it won <a href="https://webdocs.cs.ualberta.ca/~nathanst/certificate/" class="svelte-f3i6qg">Game of the year.</a></p> <p class="svelte-f3i6qg" data-svelte-h="svelte-1k65o8o">Hep Cat is a rhythm game made in <a href="https://www.rpgmakerweb.com/products/programs/rpg-maker-mv" target="_blank" class="qt-rpgmaker svelte-f3i6qg">RPG Maker MV</a> with the help of additional custom-made <span class="qt-js svelte-f3i6qg">Javascript</span> plugins. I
447
440
  wrote the rhythm game plugin&#39;s framework. For this plugin to work, I
448
- had to write a <span class="qt-python svelte-1olxn2g">Python</span> script that parses osu! files into readable JSON
449
- files.</p> <section class="game-link-section svelte-1olxn2g"><button type="button" class="game-button turnip-button svelte-1olxn2g" role="link" title="https://bitbucket.org/egginchicken/hep-cat/src/master/" data-svelte-h="svelte-kqolxp"><img alt="bitbucket icon"${add_attribute("src", BitbucketIcon, 0)} class="svelte-1olxn2g"></button> <button type="button" class="game-button turnip-button svelte-1olxn2g" role="link" title="https://just-a-phantom.itch.io/hep-cat" data-svelte-h="svelte-85ytls"><img alt="itch.io icon"${add_attribute("src", ItchLogoHotLink, 0)} class="svelte-1olxn2g"></button></section></section></section>`;
441
+ had to write a <span class="qt-python svelte-f3i6qg">Python</span> script that parses osu! files into readable JSON
442
+ files.</p> <section class="game-link-section svelte-f3i6qg"><button type="button" class="game-button turnip-button svelte-f3i6qg" role="link" title="https://bitbucket.org/egginchicken/hep-cat/src/master/" data-svelte-h="svelte-kqolxp"><img alt="bitbucket icon"${add_attribute("src", BitbucketIcon, 0)} class="svelte-f3i6qg"></button> <button type="button" class="game-button turnip-button svelte-f3i6qg" role="link" title="https://just-a-phantom.itch.io/hep-cat" data-svelte-h="svelte-85ytls"><img alt="itch.io icon"${add_attribute("src", ItchLogoHotLink, 0)} class="svelte-f3i6qg"></button></section></section></section>`;
450
443
  }
451
444
  })} ${validate_component(Card, "Card").$$render($$result, {}, {}, {
452
445
  content: () => {
453
- return `<section class="game-card svelte-1olxn2g" slot="content"><img${add_attribute("src", HeaderChefWings, 0)} alt="todo" loading="lazy" class="svelte-1olxn2g"> <section class="game-card-body svelte-1olxn2g"><h1 class="svelte-1olxn2g" data-svelte-h="svelte-u3x25k">Chef Wings</h1> <p class="svelte-1olxn2g" data-svelte-h="svelte-1gm838l">A “roguelite-lite” where you gather ingredients in a procedurally-generated dungeon and use
454
- them to cook for customers and then critics!</p> <p class="svelte-1olxn2g" data-svelte-h="svelte-1vp4je5">I built and documented several of the game’s systems including the game state management
455
- system that extends <span class="qt-unity svelte-1olxn2g">Unity’s</span> existing Monobehavior lifecycle with new events,
446
+ return `<section class="game-card svelte-f3i6qg" slot="content"><img${add_attribute("src", HeaderChefWings, 0)} alt="todo" loading="lazy" class="svelte-f3i6qg"> <section class="game-card-body svelte-f3i6qg"><h1 class="svelte-f3i6qg" data-svelte-h="svelte-u3x25k">Chef Wings</h1> <p class="svelte-f3i6qg" data-svelte-h="svelte-1gm838l">A “roguelite-lite” where you gather ingredients in a procedurally-generated dungeon and use
447
+ them to cook for customers and then critics!</p> <p class="svelte-f3i6qg" data-svelte-h="svelte-1vp4je5">I built and documented several of the game’s systems including the game state management
448
+ system that extends <span class="qt-unity svelte-f3i6qg">Unity’s</span> existing Monobehavior lifecycle with new events,
456
449
  and the dialogue, event, and level systems that coordinate the game flow using the interactive
457
- dialogue tool YarnSpinner</p> <section class="game-link-section svelte-1olxn2g"><button type="button" class="game-button turnip-button svelte-1olxn2g" title="https://selk.io/birb-project/trunk/" data-svelte-h="svelte-1sy1yh1"><img alt="itch.io icon"${add_attribute("src", LinkIcon, 0)} class="svelte-1olxn2g"> <span class="svelte-1olxn2g">selk.io/birb-project/trunk/</span></button></section></section></section>`;
450
+ dialogue tool YarnSpinner</p> <section class="game-link-section svelte-f3i6qg"><button type="button" class="game-button turnip-button svelte-f3i6qg" title="https://selk.io/birb-project/trunk/" data-svelte-h="svelte-1sy1yh1"><img alt="itch.io icon"${add_attribute("src", LinkIcon, 0)} class="svelte-f3i6qg"> <span class="svelte-f3i6qg">selk.io/birb-project/trunk/</span></button></section></section></section>`;
458
451
  }
459
452
  })} ${validate_component(Card, "Card").$$render($$result, {}, {}, {
460
453
  content: () => {
461
- return `<section class="game-card svelte-1olxn2g" slot="content"><video playsinline autoplay muted loop preload="none" class="svelte-1olxn2g" data-svelte-h="svelte-1k9edyw"><source${add_attribute("src", HeaderSoulwork, 0)} type="video/mp4" class="svelte-1olxn2g"></video> <section class="game-card-body svelte-1olxn2g"><h1 class="svelte-1olxn2g" data-svelte-h="svelte-2ce69i">Soulwork</h1> <p class="svelte-1olxn2g" data-svelte-h="svelte-v85h17">Soulwork is a 2D platforming game that uses unique physics to solve puzzle-based levels.
454
+ return `<section class="game-card svelte-f3i6qg" slot="content"><video playsinline autoplay muted loop preload="none" class="svelte-f3i6qg" data-svelte-h="svelte-1k9edyw"><source${add_attribute("src", HeaderSoulwork, 0)} type="video/mp4" class="svelte-f3i6qg"></video> <section class="game-card-body svelte-f3i6qg"><h1 class="svelte-f3i6qg" data-svelte-h="svelte-2ce69i">Soulwork</h1> <p class="svelte-f3i6qg" data-svelte-h="svelte-v85h17">Soulwork is a 2D platforming game that uses unique physics to solve puzzle-based levels.
462
455
  This project is a Time to Game Jam entry, restricting game development to be under 48
463
- hours.</p> <p class="svelte-1olxn2g" data-svelte-h="svelte-1ulwzoi">I helped make the level designing tools used by the designers to drag-and-drop objects
456
+ hours.</p> <p class="svelte-f3i6qg" data-svelte-h="svelte-1ulwzoi">I helped make the level designing tools used by the designers to drag-and-drop objects
464
457
  on the stage. I also helped program the unique physics-based gameplay mechanic. This was
465
- was made in <span class="qt-unity svelte-1olxn2g">Unity</span> written using <span class="qt-cs svelte-1olxn2g">C#</span>.</p> <section class="game-link-section svelte-1olxn2g"><button type="button" class="game-button turnip-button svelte-1olxn2g" role="link" title="https://github.com/Zeyu-Li/Clockwork" data-svelte-h="svelte-pzpykb"><img alt="github icon"${add_attribute("src", GithubIcon, 0)} class="svelte-1olxn2g"></button> <button type="button" class="game-button turnip-button svelte-1olxn2g" role="link" title="https://itch.io/jam/time-to-game-jam-gadec-fall-game-jam/rate/514331" data-svelte-h="svelte-bvl96c"><img alt="itch.io icon"${add_attribute("src", ItchLogoHotLink, 0)} class="svelte-1olxn2g"></button></section></section></section>`;
458
+ was made in <span class="qt-unity svelte-f3i6qg">Unity</span> written using <span class="qt-cs svelte-f3i6qg">C#</span>.</p> <section class="game-link-section svelte-f3i6qg"><button type="button" class="game-button turnip-button svelte-f3i6qg" role="link" title="https://github.com/Zeyu-Li/Clockwork" data-svelte-h="svelte-pzpykb"><img alt="github icon"${add_attribute("src", GithubIcon, 0)} class="svelte-f3i6qg"></button> <button type="button" class="game-button turnip-button svelte-f3i6qg" role="link" title="https://itch.io/jam/time-to-game-jam-gadec-fall-game-jam/rate/514331" data-svelte-h="svelte-bvl96c"><img alt="itch.io icon"${add_attribute("src", ItchLogoHotLink, 0)} class="svelte-f3i6qg"></button></section></section></section>`;
466
459
  }
467
460
  })} ${validate_component(Card, "Card").$$render($$result, { overrideStyle: "align-self: flex-start;" }, {}, {
468
461
  content: () => {
469
- return `<section class="game-card itch-promo svelte-1olxn2g" slot="content"><h1 class="mb-12 text-center svelte-1olxn2g" data-svelte-h="svelte-10vk3r5">Check out my itch.io page for more games</h1> <section class="game-link-section svelte-1olxn2g"><button type="button" class="btn variant-filled-primary turnip-button svelte-1olxn2g" role="link" title="https://turnipxenon.itch.io/" data-svelte-h="svelte-mamccr"><img${add_attribute("src", ItchLogoHotLink, 0)} class="long-btn-image svelte-1olxn2g" alt="itch icon"> <span class="svelte-1olxn2g">TurnipXenon</span></button></section></section>`;
462
+ return `<section class="game-card itch-promo svelte-f3i6qg" slot="content"><h1 class="mb-12 text-center svelte-f3i6qg" data-svelte-h="svelte-10vk3r5">Check out my itch.io page for more games</h1> <section class="game-link-section svelte-f3i6qg"><button type="button" class="btn variant-filled-primary turnip-button svelte-f3i6qg" role="link" title="https://turnipxenon.itch.io/" data-svelte-h="svelte-mamccr"><img${add_attribute("src", ItchLogoHotLink, 0)} class="long-btn-image svelte-f3i6qg" alt="itch icon"> <span class="svelte-f3i6qg">TurnipXenon</span></button></section></section>`;
470
463
  }
471
464
  })}</section> ${validate_component(Card, "Card").$$render($$result, {}, {}, {
472
465
  content: () => {
473
- return `<section class="section-card title-card svelte-1olxn2g" slot="content" data-svelte-h="svelte-49ylrm"><h1 class="text-center svelte-1olxn2g">Projects</h1></section>`;
466
+ return `<section class="section-card title-card svelte-f3i6qg" slot="content" data-svelte-h="svelte-49ylrm"><h1 class="text-center svelte-f3i6qg">Projects</h1></section>`;
474
467
  }
475
- })} <section class="projects-section svelte-1olxn2g">${validate_component(Card, "Card").$$render($$result, {}, {}, {
468
+ })} <section class="projects-section svelte-f3i6qg">${validate_component(Card, "Card").$$render($$result, {}, {}, {
476
469
  content: () => {
477
- return `<section class="project-card svelte-1olxn2g" slot="content"><iframe id="migrante-alberta" width="560" height="315" src="https://www.youtube.com/embed/ZemWwf8jh8E?si=RZwSfYHI-0Ael-RE" title="YouTube video player" style="border: none" allowfullscreen class="svelte-1olxn2g"></iframe> <div class="project-card-body svelte-1olxn2g"> <h2 class="svelte-1olxn2g" data-svelte-h="svelte-1eni4fk">Migrante Alberta</h2> <p class="svelte-1olxn2g" data-svelte-h="svelte-1smwex7">We developed a mobile-first cross-platform application to be used by the Canadian-based
470
+ return `<section class="project-card svelte-f3i6qg" slot="content"><iframe id="migrante-alberta" width="560" height="315" src="https://www.youtube.com/embed/ZemWwf8jh8E?si=RZwSfYHI-0Ael-RE" title="YouTube video player" style="border: none" allowfullscreen class="svelte-f3i6qg"></iframe> <div class="project-card-body svelte-f3i6qg"> <h2 class="svelte-f3i6qg" data-svelte-h="svelte-1eni4fk">Migrante Alberta</h2> <p class="svelte-f3i6qg" data-svelte-h="svelte-1smwex7">We developed a mobile-first cross-platform application to be used by the Canadian-based
478
471
  Filipino non-profit advocacy group, Migrante Alberta, to help new immigrants navigate
479
- through local services and events</p> <p class="svelte-1olxn2g">${validate_component(Chip, "Chip").$$render($$result, {}, {}, {
472
+ through local services and events</p> <p class="svelte-f3i6qg">${validate_component(Chip, "Chip").$$render($$result, {}, {}, {
480
473
  default: () => {
481
474
  return `Flutter`;
482
475
  }
@@ -504,60 +497,60 @@ const SeaweedTemplate = create_ssr_component(($$result, $$props, $$bindings, slo
504
497
  default: () => {
505
498
  return `Postgresql`;
506
499
  }
507
- })}</p> <section class="game-link-section svelte-1olxn2g"><button type="button" class="btn variant-filled-primary turnip-button svelte-1olxn2g" title="https://selk.io/birb-project/trunk/" data-svelte-h="svelte-121dvtq"><img${add_attribute("src", LinkIcon, 0)} class="long-btn-image svelte-1olxn2g" alt="itch icon"> <span class="svelte-1olxn2g">cmput401.ca</span></button></section></div></section>`;
500
+ })}</p> <section class="game-link-section svelte-f3i6qg"><button type="button" class="btn variant-filled-primary turnip-button svelte-f3i6qg" title="https://selk.io/birb-project/trunk/" data-svelte-h="svelte-121dvtq"><img${add_attribute("src", LinkIcon, 0)} class="long-btn-image svelte-f3i6qg" alt="itch icon"> <span class="svelte-f3i6qg">cmput401.ca</span></button></section></div></section>`;
508
501
  }
509
502
  })} ${validate_component(Card, "Card").$$render($$result, {}, {}, {
510
503
  content: () => {
511
- return `<section class="project-card svelte-1olxn2g" slot="content"><div class="project-card-body svelte-1olxn2g"><h2 class="svelte-1olxn2g" data-svelte-h="svelte-1ir48d3">Decentralized social media</h2> <p class="svelte-1olxn2g" data-svelte-h="svelte-bywg41">We made a full stack decentralized social media app made with <span class="qt-react svelte-1olxn2g">React</span> +
512
- <span class="qt-js svelte-1olxn2g">Javascript</span> for the client code, <span class="qt-django svelte-1olxn2g">Django</span> + <span class="qt-python svelte-1olxn2g">Python</span> for the backend code, and <span class="qt-heroku svelte-1olxn2g">Heroku</span> for
504
+ return `<section class="project-card svelte-f3i6qg" slot="content"><div class="project-card-body svelte-f3i6qg"><h2 class="svelte-f3i6qg" data-svelte-h="svelte-1ir48d3">Decentralized social media</h2> <p class="svelte-f3i6qg" data-svelte-h="svelte-bywg41">We made a full stack decentralized social media app made with <span class="qt-react svelte-f3i6qg">React</span> +
505
+ <span class="qt-js svelte-f3i6qg">Javascript</span> for the client code, <span class="qt-django svelte-f3i6qg">Django</span> + <span class="qt-python svelte-f3i6qg">Python</span> for the backend code, and <span class="qt-heroku svelte-f3i6qg">Heroku</span> for
513
506
  deployment. This project was made
514
507
  for
515
- our Web Applications and Architecture class.</p> <p class="svelte-1olxn2g" data-svelte-h="svelte-1mg86zd">The application can connect with three other decentralized social media app in the same class:</p> <ul class="svelte-1olxn2g" data-svelte-h="svelte-1ltib2n"><li class="svelte-1olxn2g"><a href="https://github.com/hgshah/cmput404-project/blob/main/docs/testing_other_teams.md#team-14" target="_blank" class="svelte-1olxn2g">Also
508
+ our Web Applications and Architecture class.</p> <p class="svelte-f3i6qg" data-svelte-h="svelte-1mg86zd">The application can connect with three other decentralized social media app in the same class:</p> <ul class="svelte-f3i6qg" data-svelte-h="svelte-1ltib2n"><li class="svelte-f3i6qg"><a href="https://github.com/hgshah/cmput404-project/blob/main/docs/testing_other_teams.md#team-14" target="_blank" class="svelte-f3i6qg">Also
516
509
  a social media with the same Django + Python backend server where they act on behalf of
517
- our users interacting with theirs</a></li> <li class="svelte-1olxn2g"><a href="https://github.com/hgshah/cmput404-project/blob/main/docs/testing_other_teams.md#team-7" target="_blank" class="svelte-1olxn2g">A
518
- social media that uses Fast API + Python for their backend server</a></li> <li class="svelte-1olxn2g"><a href="https://github.com/hgshah/cmput404-project/blob/main/docs/testing_other_teams.md#team-12" target="_blank" class="svelte-1olxn2g">Another
510
+ our users interacting with theirs</a></li> <li class="svelte-f3i6qg"><a href="https://github.com/hgshah/cmput404-project/blob/main/docs/testing_other_teams.md#team-7" target="_blank" class="svelte-f3i6qg">A
511
+ social media that uses Fast API + Python for their backend server</a></li> <li class="svelte-f3i6qg"><a href="https://github.com/hgshah/cmput404-project/blob/main/docs/testing_other_teams.md#team-12" target="_blank" class="svelte-f3i6qg">Another
519
512
  social media that has Django + Python for their backend but we have to act on behalf of
520
513
  our
521
- users interacting with their users</a></li></ul> <section class="game-link-section svelte-1olxn2g"><button type="button" class="game-button turnip-button svelte-1olxn2g" role="link" title="https://github.com/hgshah/cmput404-project" data-svelte-h="svelte-cv2gah"><img${add_attribute("src", GithubIcon, 0)} alt="github icon" class="svelte-1olxn2g"></button></section></div></section>`;
514
+ users interacting with their users</a></li></ul> <section class="game-link-section svelte-f3i6qg"><button type="button" class="game-button turnip-button svelte-f3i6qg" role="link" title="https://github.com/hgshah/cmput404-project" data-svelte-h="svelte-cv2gah"><img${add_attribute("src", GithubIcon, 0)} alt="github icon" class="svelte-f3i6qg"></button></section></div></section>`;
522
515
  }
523
516
  })} ${validate_component(Card, "Card").$$render($$result, {}, {}, {
524
517
  content: () => {
525
- return `<section class="project-card svelte-1olxn2g" slot="content"><img alt="Footage of a visual novel-like dynamic dialog interaction happening on the same page we are on"${add_attribute("src", WeaverFootage, 0)} class="svelte-1olxn2g"> <div class="project-card-body svelte-1olxn2g"><h2 class="svelte-1olxn2g" data-svelte-h="svelte-1tprdy5">Customized Yarnspinner interpreter and dialog runner</h2>
518
+ return `<section class="project-card svelte-f3i6qg" slot="content"><img alt="Footage of a visual novel-like dynamic dialog interaction happening on the same page we are on"${add_attribute("src", WeaverFootage, 0)} class="svelte-f3i6qg"> <div class="project-card-body svelte-f3i6qg"><h2 class="svelte-f3i6qg" data-svelte-h="svelte-1tprdy5">Customized Yarnspinner interpreter and dialog runner</h2>
526
519
 
527
- A custom dialog interpreter, written in <span class="qt-ts svelte-1olxn2g" data-svelte-h="svelte-o30c37">Typescript</span>, that tokenizes then
528
- transpiles custom Yarnspinner dialog into a <span class="qt-ts svelte-1olxn2g" data-svelte-h="svelte-o30c37">Typescript</span> file. The said files can
520
+ A custom dialog interpreter, written in <span class="qt-ts svelte-f3i6qg" data-svelte-h="svelte-o30c37">Typescript</span>, that tokenizes then
521
+ transpiles custom Yarnspinner dialog into a <span class="qt-ts svelte-f3i6qg" data-svelte-h="svelte-o30c37">Typescript</span> file. The said files can
529
522
  be used on a corresponding runner or library, also implemented alongside it, allowing the ability to play a
530
- custom-flavor of YarnSpinner dialogs on <span class="qt-svelte svelte-1olxn2g" data-svelte-h="svelte-19momqd">Svelte</span>.
523
+ custom-flavor of YarnSpinner dialogs on <span class="qt-svelte svelte-f3i6qg" data-svelte-h="svelte-19momqd">Svelte</span>.
531
524
 
532
- <section class="game-link-section svelte-1olxn2g"><button type="button" class="game-button turnip-button svelte-1olxn2g" role="link" title="https://github.com/TurnipXenon/pineapple/blob/main/docs/PineappleFiberSpec.md" data-svelte-h="svelte-7o1iz5"><img${add_attribute("src", GithubIcon, 0)} alt="github icon" class="svelte-1olxn2g"></button></section></div></section>`;
525
+ <section class="game-link-section svelte-f3i6qg"><button type="button" class="game-button turnip-button svelte-f3i6qg" role="link" title="https://github.com/TurnipXenon/pineapple/blob/main/docs/PineappleFiberSpec.md" data-svelte-h="svelte-7o1iz5"><img${add_attribute("src", GithubIcon, 0)} alt="github icon" class="svelte-f3i6qg"></button></section></div></section>`;
533
526
  }
534
527
  })} ${validate_component(Card, "Card").$$render($$result, {}, {}, {
535
528
  content: () => {
536
- return `<section class="project-card svelte-1olxn2g" slot="content"><div class="project-card-body svelte-1olxn2g"><h2 class="svelte-1olxn2g" data-svelte-h="svelte-1g6x1gh">Full-stack <span class="qt-c svelte-1olxn2g">C</span> app</h2> <p class="svelte-1olxn2g" data-svelte-h="svelte-1m2910f">A terminal-based app consisting of a server observing several terminal apps all concurrently
529
+ return `<section class="project-card svelte-f3i6qg" slot="content"><div class="project-card-body svelte-f3i6qg"><h2 class="svelte-f3i6qg" data-svelte-h="svelte-1g6x1gh">Full-stack <span class="qt-c svelte-f3i6qg">C</span> app</h2> <p class="svelte-f3i6qg" data-svelte-h="svelte-1m2910f">A terminal-based app consisting of a server observing several terminal apps all concurrently
537
530
  sending updates to the server, which then broadcasts these information concurrently to all the
538
- other terminal apps connected.</p> <p class="svelte-1olxn2g" data-svelte-h="svelte-2glnqi">The project involves <span class="qt-foundation svelte-1olxn2g">multiprocessing</span> programming featuring pthreads and
539
- mutexes, and <span class="qt-foundation svelte-1olxn2g">networking</span> via sockets.</p> <section class="game-link-section svelte-1olxn2g"><button type="button" class="game-button turnip-button svelte-1olxn2g" role="link" title="https://github.com/TurnipXenon/C380-1Code/blob/main/Assignment02/DESIGN.md" data-svelte-h="svelte-ytnfwd"><img${add_attribute("src", GithubIcon, 0)} class="long-btn-image svelte-1olxn2g" alt="github icon"></button></section></div></section>`;
531
+ other terminal apps connected.</p> <p class="svelte-f3i6qg" data-svelte-h="svelte-2glnqi">The project involves <span class="qt-foundation svelte-f3i6qg">multiprocessing</span> programming featuring pthreads and
532
+ mutexes, and <span class="qt-foundation svelte-f3i6qg">networking</span> via sockets.</p> <section class="game-link-section svelte-f3i6qg"><button type="button" class="game-button turnip-button svelte-f3i6qg" role="link" title="https://github.com/TurnipXenon/C380-1Code/blob/main/Assignment02/DESIGN.md" data-svelte-h="svelte-ytnfwd"><img${add_attribute("src", GithubIcon, 0)} class="long-btn-image svelte-f3i6qg" alt="github icon"></button></section></div></section>`;
540
533
  }
541
534
  })} ${validate_component(Card, "Card").$$render($$result, {}, {}, {
542
535
  content: () => {
543
- return `<section class="project-card svelte-1olxn2g" slot="content"><img alt="A graph that visualizes the number of memory pages made by Quicksort cached within the window set as
536
+ return `<section class="project-card svelte-f3i6qg" slot="content"><img alt="A graph that visualizes the number of memory pages made by Quicksort cached within the window set as
544
537
  time goes by. The trend appears to look like a damping harmonic motion that does not go below the zero line. More
545
538
  details include the data size being 200000 entries, each data point skips 1060174 data points, with a
546
- page size of 4096 bytes, and window size of 100000 bytes."${add_attribute("src", WindowSetGraph, 0)} class="svelte-1olxn2g"> <div class="project-card-body svelte-1olxn2g"><h2 class="svelte-1olxn2g" data-svelte-h="svelte-1owlizc">Working set simulation</h2> <p class="svelte-1olxn2g" data-svelte-h="svelte-h0uhw2">A <span class="qt-c svelte-1olxn2g">C</span> program that simulates the working set model based on the output of memory
539
+ page size of 4096 bytes, and window size of 100000 bytes."${add_attribute("src", WindowSetGraph, 0)} class="svelte-f3i6qg"> <div class="project-card-body svelte-f3i6qg"><h2 class="svelte-f3i6qg" data-svelte-h="svelte-1owlizc">Working set simulation</h2> <p class="svelte-f3i6qg" data-svelte-h="svelte-h0uhw2">A <span class="qt-c svelte-f3i6qg">C</span> program that simulates the working set model based on the output of memory
547
540
  addresses
548
- <span class="qt-valgrind svelte-1olxn2g">valgrind</span> detects as being accessed by a program being ran. It&#39;s
549
- implemented using a nested hashmap <span class="qt-foundation svelte-1olxn2g">data structure</span> implemented from
541
+ <span class="qt-valgrind svelte-f3i6qg">valgrind</span> detects as being accessed by a program being ran. It&#39;s
542
+ implemented using a nested hashmap <span class="qt-foundation svelte-f3i6qg">data structure</span> implemented from
550
543
  scratch. The working set is the collection of memory pages referenced by a program within a certain time
551
- frame. It comes with a report analyzing and benchmarking how memory allocation, between sorting <span class="qt-foundation svelte-1olxn2g">algorithms</span> heapsort, quicksort, and radixsort, is affected by the window set
552
- size, page size, and their input size.</p> <section class="game-link-section svelte-1olxn2g"><button type="button" class="game-button turnip-button svelte-1olxn2g" role="link" title="https://github.com/TurnipXenon/C380-1Code/blob/main/Assignment03/REPORT.pdf" data-svelte-h="svelte-5rpf8h"><img${add_attribute("src", GithubIcon, 0)} class="long-btn-image svelte-1olxn2g" alt="github icon"> <span class="svelte-1olxn2g">Benchmark report</span></button> <button type="button" class="game-button turnip-button svelte-1olxn2g" role="link" title="https://github.com/TurnipXenon/C380-1Code/blob/main/Assignment03/DESIGN.md" data-svelte-h="svelte-1vbe2nk"><img${add_attribute("src", GithubIcon, 0)} class="long-btn-image svelte-1olxn2g" alt="github icon"> <span class="svelte-1olxn2g">Design</span></button></section></div></section>`;
544
+ frame. It comes with a report analyzing and benchmarking how memory allocation, between sorting <span class="qt-foundation svelte-f3i6qg">algorithms</span> heapsort, quicksort, and radixsort, is affected by the window set
545
+ size, page size, and their input size.</p> <section class="game-link-section svelte-f3i6qg"><button type="button" class="game-button turnip-button svelte-f3i6qg" role="link" title="https://github.com/TurnipXenon/C380-1Code/blob/main/Assignment03/REPORT.pdf" data-svelte-h="svelte-5rpf8h"><img${add_attribute("src", GithubIcon, 0)} class="long-btn-image svelte-f3i6qg" alt="github icon"> <span class="svelte-f3i6qg">Benchmark report</span></button> <button type="button" class="game-button turnip-button svelte-f3i6qg" role="link" title="https://github.com/TurnipXenon/C380-1Code/blob/main/Assignment03/DESIGN.md" data-svelte-h="svelte-1vbe2nk"><img${add_attribute("src", GithubIcon, 0)} class="long-btn-image svelte-f3i6qg" alt="github icon"> <span class="svelte-f3i6qg">Design</span></button></section></div></section>`;
553
546
  }
554
547
  })} ${validate_component(Card, "Card").$$render($$result, {}, {}, {
555
548
  content: () => {
556
- return `<section class="project-card svelte-1olxn2g" slot="content"><video playsinline autoplay muted loop preload="none" class="svelte-1olxn2g" data-svelte-h="svelte-m5p9b7"><source${add_attribute("src", ThisWebsiteFootage, 0)} type="video/mp4" class="svelte-1olxn2g">
549
+ return `<section class="project-card svelte-f3i6qg" slot="content"><video playsinline autoplay muted loop preload="none" class="svelte-f3i6qg" data-svelte-h="svelte-m5p9b7"><source${add_attribute("src", ThisWebsiteFootage, 0)} type="video/mp4" class="svelte-f3i6qg">
557
550
  video unavailable. original video contains clips of this website being resized and light-dark mode being
558
- toggled.</video> <div class="project-card-body svelte-1olxn2g"><h2 class="svelte-1olxn2g" data-svelte-h="svelte-5puumm">This webpage!</h2> <p class="svelte-1olxn2g" data-svelte-h="svelte-1te9sdx">The webpage is made of two parts. The webpage that has the content for everything here, I&#39;ve
551
+ toggled.</video> <div class="project-card-body svelte-f3i6qg"><h2 class="svelte-f3i6qg" data-svelte-h="svelte-5puumm">This webpage!</h2> <p class="svelte-f3i6qg" data-svelte-h="svelte-1te9sdx">The webpage is made of two parts. The webpage that has the content for everything here, I&#39;ve
559
552
  lovingly called Seaweed. I kept seaweed as a private package. On the other hand, the base package which I
560
- want to use for all spin offs of my websites is called Pineapple and have kept that codebase public.</p> <p class="svelte-1olxn2g">${validate_component(Chip, "Chip").$$render($$result, {}, {}, {
553
+ want to use for all spin offs of my websites is called Pineapple and have kept that codebase public.</p> <p class="svelte-f3i6qg">${validate_component(Chip, "Chip").$$render($$result, {}, {}, {
561
554
  default: () => {
562
555
  return `Svelte`;
563
556
  }
@@ -577,12 +570,12 @@ const SeaweedTemplate = create_ssr_component(($$result, $$props, $$bindings, slo
577
570
  default: () => {
578
571
  return `YarnSpinner`;
579
572
  }
580
- })}</p> <section class="game-link-section svelte-1olxn2g"><button type="button" class="btn variant-filled-primary turnip-button svelte-1olxn2g" role="link" title="https://github.com/TurnipXenon/pineapple" data-svelte-h="svelte-4dm4xx"><img${add_attribute("src", GithubIcon, 0)} class="long-btn-image svelte-1olxn2g" alt="github icon"></button></section></div></section>`;
573
+ })}</p> <section class="game-link-section svelte-f3i6qg"><button type="button" class="btn variant-filled-primary turnip-button svelte-f3i6qg" role="link" title="https://github.com/TurnipXenon/pineapple" data-svelte-h="svelte-4dm4xx"><img${add_attribute("src", GithubIcon, 0)} class="long-btn-image svelte-f3i6qg" alt="github icon"></button></section></div></section>`;
581
574
  }
582
575
  })} ${validate_component(Card, "Card").$$render($$result, {}, {}, {
583
576
  content: () => {
584
- return `<section class="project-card svelte-1olxn2g" slot="content"><div class="project-card-body svelte-1olxn2g"><h2 class="svelte-1olxn2g" data-svelte-h="svelte-1vw6xk1">Mock Uber App</h2> <p class="svelte-1olxn2g" data-svelte-h="svelte-1n8bpk7">A course project app meant to emulate how Uber works by playing with <span class="qt-google svelte-1olxn2g">Google Maps API</span>.</p> <p class="svelte-1olxn2g" data-svelte-h="svelte-1ob0wfp">I implemented all interfaces related to the NoSQL cloud database <span class="qt-firebase qt-google qt-infra svelte-1olxn2g">Firebase</span>, making writing code easier for other programmers (<span class="qt-android svelte-1olxn2g">Android</span> / <span class="qt-java svelte-1olxn2g">Java</span>). I also wrote documentation to said
585
- code and added instrumented tests that are tested by the continuous integration tool <span class="qt-infra svelte-1olxn2g">Travis CI</span>, ensuring that our code is tested</p> <section class="game-link-section svelte-1olxn2g"> <button type="button" class="game-button turnip-button svelte-1olxn2g" role="link" title="https://github.com/CMPUT301W20T10/UberApp" data-svelte-h="svelte-9lexjr"><img${add_attribute("src", GithubIcon, 0)} class="long-btn-image svelte-1olxn2g" alt="github icon"></button></section></div></section>`;
577
+ return `<section class="project-card svelte-f3i6qg" slot="content"><div class="project-card-body svelte-f3i6qg"><h2 class="svelte-f3i6qg" data-svelte-h="svelte-1vw6xk1">Mock Uber App</h2> <p class="svelte-f3i6qg" data-svelte-h="svelte-1n8bpk7">A course project app meant to emulate how Uber works by playing with <span class="qt-google svelte-f3i6qg">Google Maps API</span>.</p> <p class="svelte-f3i6qg" data-svelte-h="svelte-1ob0wfp">I implemented all interfaces related to the NoSQL cloud database <span class="qt-firebase qt-google qt-infra svelte-f3i6qg">Firebase</span>, making writing code easier for other programmers (<span class="qt-android svelte-f3i6qg">Android</span> / <span class="qt-java svelte-f3i6qg">Java</span>). I also wrote documentation to said
578
+ code and added instrumented tests that are tested by the continuous integration tool <span class="qt-infra svelte-f3i6qg">Travis CI</span>, ensuring that our code is tested</p> <section class="game-link-section svelte-f3i6qg"> <button type="button" class="game-button turnip-button svelte-f3i6qg" role="link" title="https://github.com/CMPUT301W20T10/UberApp" data-svelte-h="svelte-9lexjr"><img${add_attribute("src", GithubIcon, 0)} class="long-btn-image svelte-f3i6qg" alt="github icon"></button></section></div></section>`;
586
579
  }
587
580
  })}</section></main>`;
588
581
  }
@@ -221,7 +221,7 @@ const options = {
221
221
  <div class="error">
222
222
  <span class="status">` + status + '</span>\n <div class="message">\n <h1>' + message + "</h1>\n </div>\n </div>\n </body>\n</html>\n"
223
223
  },
224
- version_hash: "1kx6zbw"
224
+ version_hash: "1fsx49j"
225
225
  };
226
226
  async function get_hooks() {
227
227
  return {};
@@ -5,7 +5,7 @@ const Page = create_ssr_component(($$result, $$props, $$bindings, slots) => {
5
5
  let { metaWebsite = "https://www.crouton.com/test/portfolio-base-layout" } = $$props;
6
6
  if ($$props.metaWebsite === void 0 && $$bindings.metaWebsite && metaWebsite !== void 0)
7
7
  $$bindings.metaWebsite(metaWebsite);
8
- return `${$$result.head += `<!-- HEAD_svelte-9y1u9g_START --><meta charset="utf-8">${$$result.title = `<title>Welcome to my portfolio</title>`, ""}<meta name="twitter:card" content="summary"><meta property="og:url"${add_attribute("content", metaWebsite, 0)}><meta property="og:title" content="Turnip"><meta property="og:description" content="Welcome to Turnip's test portfolio website"><meta property="og:image"${add_attribute("content", WebThumbnailImage, 0)}><!-- HEAD_svelte-9y1u9g_END -->`, ""} ${validate_component(SeaweedTemplate, "SeaweedTemplate").$$render($$result, {}, {}, {})}`;
8
+ return `${$$result.head += `<!-- HEAD_svelte-9y1u9g_START --><meta charset="utf-8">${$$result.title = `<title>Welcome to my portfolio</title>`, ""}<meta name="twitter:card" content="summary"><meta property="og:url"${add_attribute("content", metaWebsite, 0)}><meta property="og:title" content="Turnip"><meta property="og:description" content="Welcome to Turnip's test portfolio website"><meta property="og:image"${add_attribute("content", WebThumbnailImage, 0)}><!-- HEAD_svelte-9y1u9g_END -->`, ""} ${validate_component(SeaweedTemplate, "SeaweedTemplate").$$render($$result, { letChaos: false }, {}, {})}`;
9
9
  });
10
10
  export {
11
11
  Page as default
@@ -10,7 +10,7 @@ return {
10
10
  assets: new Set(["default-card.png","favicon.png","robots.txt"]),
11
11
  mimeTypes: {".png":"image/png",".txt":"text/plain"},
12
12
  _: {
13
- client: {"start":"_app/immutable/entry/start.Dazgoa1N.js","app":"_app/immutable/entry/app.oi3PnWPJ.js","imports":["_app/immutable/entry/start.Dazgoa1N.js","_app/immutable/chunks/entry.CQQG-dzn.js","_app/immutable/chunks/scheduler.DJdG0Qxb.js","_app/immutable/chunks/index.DM9YwQfI.js","_app/immutable/entry/app.oi3PnWPJ.js","_app/immutable/chunks/scheduler.DJdG0Qxb.js","_app/immutable/chunks/index.BgUXYai5.js"],"stylesheets":[],"fonts":[],"uses_env_dynamic_public":false},
13
+ client: {"start":"_app/immutable/entry/start.VRG2KCMZ.js","app":"_app/immutable/entry/app.D9IQm5uC.js","imports":["_app/immutable/entry/start.VRG2KCMZ.js","_app/immutable/chunks/entry.D3rPVCbo.js","_app/immutable/chunks/scheduler.DJdG0Qxb.js","_app/immutable/chunks/index.DM9YwQfI.js","_app/immutable/entry/app.D9IQm5uC.js","_app/immutable/chunks/scheduler.DJdG0Qxb.js","_app/immutable/chunks/index.BgUXYai5.js"],"stylesheets":[],"fonts":[],"uses_env_dynamic_public":false},
14
14
  nodes: [
15
15
  __memo(() => import('./nodes/0.js')),
16
16
  __memo(() => import('./nodes/1.js')),
@@ -10,7 +10,7 @@ return {
10
10
  assets: new Set(["default-card.png","favicon.png","robots.txt"]),
11
11
  mimeTypes: {".png":"image/png",".txt":"text/plain"},
12
12
  _: {
13
- client: {"start":"_app/immutable/entry/start.Dazgoa1N.js","app":"_app/immutable/entry/app.oi3PnWPJ.js","imports":["_app/immutable/entry/start.Dazgoa1N.js","_app/immutable/chunks/entry.CQQG-dzn.js","_app/immutable/chunks/scheduler.DJdG0Qxb.js","_app/immutable/chunks/index.DM9YwQfI.js","_app/immutable/entry/app.oi3PnWPJ.js","_app/immutable/chunks/scheduler.DJdG0Qxb.js","_app/immutable/chunks/index.BgUXYai5.js"],"stylesheets":[],"fonts":[],"uses_env_dynamic_public":false},
13
+ client: {"start":"_app/immutable/entry/start.VRG2KCMZ.js","app":"_app/immutable/entry/app.D9IQm5uC.js","imports":["_app/immutable/entry/start.VRG2KCMZ.js","_app/immutable/chunks/entry.D3rPVCbo.js","_app/immutable/chunks/scheduler.DJdG0Qxb.js","_app/immutable/chunks/index.DM9YwQfI.js","_app/immutable/entry/app.D9IQm5uC.js","_app/immutable/chunks/scheduler.DJdG0Qxb.js","_app/immutable/chunks/index.BgUXYai5.js"],"stylesheets":[],"fonts":[],"uses_env_dynamic_public":false},
14
14
  nodes: [
15
15
  __memo(() => import('./nodes/0.js')),
16
16
  __memo(() => import('./nodes/1.js')),
@@ -3,6 +3,6 @@
3
3
  export const index = 0;
4
4
  let component_cache;
5
5
  export const component = async () => component_cache ??= (await import('../entries/pages/_layout.svelte.js')).default;
6
- export const imports = ["_app/immutable/nodes/0.Bay8_8oq.js","_app/immutable/chunks/scheduler.DJdG0Qxb.js","_app/immutable/chunks/index.BgUXYai5.js","_app/immutable/chunks/transitions.DM45rqx4.js","_app/immutable/chunks/index.DM9YwQfI.js","_app/immutable/chunks/index.CvmYViMX.js","_app/immutable/chunks/ProgressBar.svelte_svelte_type_style_lang.sh-s555A.js"];
7
- export const stylesheets = ["_app/immutable/assets/0.BIZ0IPOt.css","_app/immutable/assets/ProgressBar.Cirlo5Z8.css"];
6
+ export const imports = ["_app/immutable/nodes/0.5ibwyEBM.js","_app/immutable/chunks/scheduler.DJdG0Qxb.js","_app/immutable/chunks/index.BgUXYai5.js","_app/immutable/chunks/transitions.DM45rqx4.js","_app/immutable/chunks/index.DM9YwQfI.js","_app/immutable/chunks/index.CvmYViMX.js","_app/immutable/chunks/ProgressBar.svelte_svelte_type_style_lang.sh-s555A.js"];
7
+ export const stylesheets = ["_app/immutable/assets/0.CIpy7FrR.css","_app/immutable/assets/ProgressBar.Cirlo5Z8.css"];
8
8
  export const fonts = [];
@@ -3,6 +3,6 @@
3
3
  export const index = 2;
4
4
  let component_cache;
5
5
  export const component = async () => component_cache ??= (await import('../entries/pages/personal/_layout.svelte.js')).default;
6
- export const imports = ["_app/immutable/nodes/2.B9XiR3AU.js","_app/immutable/chunks/scheduler.DJdG0Qxb.js","_app/immutable/chunks/index.BgUXYai5.js","_app/immutable/chunks/PineappleBaseLayout.SSm4gITf.js","_app/immutable/chunks/store.CzGlMZaJ.js","_app/immutable/chunks/ProgressBar.svelte_svelte_type_style_lang.sh-s555A.js","_app/immutable/chunks/index.DM9YwQfI.js","_app/immutable/chunks/entry.CQQG-dzn.js","_app/immutable/chunks/DialogManagerStore.CauD3dIa.js","_app/immutable/chunks/index.CvmYViMX.js","_app/immutable/chunks/public.kPGcNb8-.js"];
6
+ export const imports = ["_app/immutable/nodes/2.DnP1Yfj1.js","_app/immutable/chunks/scheduler.DJdG0Qxb.js","_app/immutable/chunks/index.BgUXYai5.js","_app/immutable/chunks/PineappleBaseLayout.DLo8Eik6.js","_app/immutable/chunks/store.BIqnj0vd.js","_app/immutable/chunks/ProgressBar.svelte_svelte_type_style_lang.sh-s555A.js","_app/immutable/chunks/index.DM9YwQfI.js","_app/immutable/chunks/entry.D3rPVCbo.js","_app/immutable/chunks/DialogManagerStore.CauD3dIa.js","_app/immutable/chunks/index.CvmYViMX.js","_app/immutable/chunks/public.kPGcNb8-.js"];
7
7
  export const stylesheets = ["_app/immutable/assets/PineappleBaseLayout.zNkuL9Xf.css","_app/immutable/assets/store.y2fRW0z7.css","_app/immutable/assets/ProgressBar.Cirlo5Z8.css"];
8
8
  export const fonts = [];
@@ -3,6 +3,6 @@
3
3
  export const index = 3;
4
4
  let component_cache;
5
5
  export const component = async () => component_cache ??= (await import('../entries/pages/_page.svelte.js')).default;
6
- export const imports = ["_app/immutable/nodes/3.DFl_-mE9.js","_app/immutable/chunks/scheduler.DJdG0Qxb.js","_app/immutable/chunks/index.BgUXYai5.js","_app/immutable/chunks/public.kPGcNb8-.js","_app/immutable/chunks/PineappleBaseLayout.SSm4gITf.js","_app/immutable/chunks/store.CzGlMZaJ.js","_app/immutable/chunks/ProgressBar.svelte_svelte_type_style_lang.sh-s555A.js","_app/immutable/chunks/index.DM9YwQfI.js","_app/immutable/chunks/entry.CQQG-dzn.js","_app/immutable/chunks/DialogManagerStore.CauD3dIa.js","_app/immutable/chunks/index.CvmYViMX.js"];
6
+ export const imports = ["_app/immutable/nodes/3.BPIP4PcD.js","_app/immutable/chunks/scheduler.DJdG0Qxb.js","_app/immutable/chunks/index.BgUXYai5.js","_app/immutable/chunks/public.kPGcNb8-.js","_app/immutable/chunks/PineappleBaseLayout.DLo8Eik6.js","_app/immutable/chunks/store.BIqnj0vd.js","_app/immutable/chunks/ProgressBar.svelte_svelte_type_style_lang.sh-s555A.js","_app/immutable/chunks/index.DM9YwQfI.js","_app/immutable/chunks/entry.D3rPVCbo.js","_app/immutable/chunks/DialogManagerStore.CauD3dIa.js","_app/immutable/chunks/index.CvmYViMX.js"];
7
7
  export const stylesheets = ["_app/immutable/assets/4.B8rxJaIe.css","_app/immutable/assets/PineappleBaseLayout.zNkuL9Xf.css","_app/immutable/assets/store.y2fRW0z7.css","_app/immutable/assets/ProgressBar.Cirlo5Z8.css"];
8
8
  export const fonts = [];
@@ -5,6 +5,6 @@ let component_cache;
5
5
  export const component = async () => component_cache ??= (await import('../entries/pages/portfolio/_page.svelte.js')).default;
6
6
  export { server };
7
7
  export const server_id = "src/routes/portfolio/+page.server.ts";
8
- export const imports = ["_app/immutable/nodes/5.YVruzYx6.js","_app/immutable/chunks/scheduler.DJdG0Qxb.js","_app/immutable/chunks/index.BgUXYai5.js","_app/immutable/chunks/SeaweedTemplate.BmvpbSLb.js","_app/immutable/chunks/index.DM9YwQfI.js","_app/immutable/chunks/ProgressBar.svelte_svelte_type_style_lang.sh-s555A.js","_app/immutable/chunks/transitions.DM45rqx4.js","_app/immutable/chunks/index.CvmYViMX.js","_app/immutable/chunks/store.CzGlMZaJ.js","_app/immutable/chunks/entry.CQQG-dzn.js","_app/immutable/chunks/DialogManagerStore.CauD3dIa.js"];
9
- export const stylesheets = ["_app/immutable/assets/SeaweedTemplate.pOPCzkb2.css","_app/immutable/assets/ProgressBar.Cirlo5Z8.css","_app/immutable/assets/store.y2fRW0z7.css"];
8
+ export const imports = ["_app/immutable/nodes/5.PabxfGcD.js","_app/immutable/chunks/scheduler.DJdG0Qxb.js","_app/immutable/chunks/index.BgUXYai5.js","_app/immutable/chunks/SeaweedTemplate.CZ9ITcQ_.js","_app/immutable/chunks/index.DM9YwQfI.js","_app/immutable/chunks/ProgressBar.svelte_svelte_type_style_lang.sh-s555A.js","_app/immutable/chunks/transitions.DM45rqx4.js","_app/immutable/chunks/index.CvmYViMX.js","_app/immutable/chunks/store.BIqnj0vd.js","_app/immutable/chunks/entry.D3rPVCbo.js","_app/immutable/chunks/DialogManagerStore.CauD3dIa.js"];
9
+ export const stylesheets = ["_app/immutable/assets/SeaweedTemplate.BH7AvcuU.css","_app/immutable/assets/ProgressBar.Cirlo5Z8.css","_app/immutable/assets/store.y2fRW0z7.css"];
10
10
  export const fonts = [];
@@ -3,6 +3,6 @@
3
3
  export const index = 6;
4
4
  let component_cache;
5
5
  export const component = async () => component_cache ??= (await import('../entries/pages/portfolio/actual/_page.svelte.js')).default;
6
- export const imports = ["_app/immutable/nodes/6.drIpFDQq.js","_app/immutable/chunks/scheduler.DJdG0Qxb.js","_app/immutable/chunks/index.BgUXYai5.js","_app/immutable/chunks/SeaweedTemplate.BmvpbSLb.js","_app/immutable/chunks/index.DM9YwQfI.js","_app/immutable/chunks/ProgressBar.svelte_svelte_type_style_lang.sh-s555A.js","_app/immutable/chunks/transitions.DM45rqx4.js","_app/immutable/chunks/index.CvmYViMX.js","_app/immutable/chunks/store.CzGlMZaJ.js","_app/immutable/chunks/entry.CQQG-dzn.js","_app/immutable/chunks/DialogManagerStore.CauD3dIa.js"];
7
- export const stylesheets = ["_app/immutable/assets/SeaweedTemplate.pOPCzkb2.css","_app/immutable/assets/ProgressBar.Cirlo5Z8.css","_app/immutable/assets/store.y2fRW0z7.css"];
6
+ export const imports = ["_app/immutable/nodes/6.D3Ze_9sQ.js","_app/immutable/chunks/scheduler.DJdG0Qxb.js","_app/immutable/chunks/index.BgUXYai5.js","_app/immutable/chunks/SeaweedTemplate.CZ9ITcQ_.js","_app/immutable/chunks/index.DM9YwQfI.js","_app/immutable/chunks/ProgressBar.svelte_svelte_type_style_lang.sh-s555A.js","_app/immutable/chunks/transitions.DM45rqx4.js","_app/immutable/chunks/index.CvmYViMX.js","_app/immutable/chunks/store.BIqnj0vd.js","_app/immutable/chunks/entry.D3rPVCbo.js","_app/immutable/chunks/DialogManagerStore.CauD3dIa.js"];
7
+ export const stylesheets = ["_app/immutable/assets/SeaweedTemplate.BH7AvcuU.css","_app/immutable/assets/ProgressBar.Cirlo5Z8.css","_app/immutable/assets/store.y2fRW0z7.css"];
8
8
  export const fonts = [];
package/dist/app.postcss CHANGED
@@ -153,6 +153,10 @@ a:active {
153
153
  }
154
154
 
155
155
  /* region Accordion css for handling missing styles in package */
156
+ .accordion {
157
+ @apply variant-filled-primary rounded-md;
158
+ }
159
+
156
160
  .accordion-control {
157
161
  @apply hover:bg-surface-hover-token;
158
162
  }
@@ -0,0 +1,3 @@
1
+ // from https://stackoverflow.com/a/63885623/17836168
2
+ declare module "./app.postcss";
3
+ declare module "./theme.postcss";
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@turnipxenon/pineapple",
3
3
  "description": "personal package for base styling for other personal projects",
4
- "version": "2.4.5",
4
+ "version": "2.4.7",
5
5
  "scripts": {
6
6
  "dev": "vite dev",
7
7
  "build": "npm run check-requirements && vite build && yarn package",
@@ -153,6 +153,10 @@ a:active {
153
153
  }
154
154
 
155
155
  /* region Accordion css for handling missing styles in package */
156
+ .accordion {
157
+ @apply variant-filled-primary rounded-md;
158
+ }
159
+
156
160
  .accordion-control {
157
161
  @apply hover:bg-surface-hover-token;
158
162
  }
@@ -0,0 +1,3 @@
1
+ // from https://stackoverflow.com/a/63885623/17836168
2
+ declare module "./app.postcss";
3
+ declare module "./theme.postcss";
@@ -1 +0,0 @@
1
- .social-button.svelte-urhqdc.svelte-urhqdc.svelte-urhqdc:disabled{cursor:not-allowed;opacity:.5}.social-button.svelte-urhqdc.svelte-urhqdc.svelte-urhqdc:disabled:hover{--tw-brightness:brightness(1);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.social-button.svelte-urhqdc.svelte-urhqdc.svelte-urhqdc:disabled:active{--tw-scale-x:1;--tw-scale-y:1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.social-button.svelte-urhqdc.svelte-urhqdc.svelte-urhqdc{font-size:1rem;line-height:1.5rem;padding-left:1.25rem;padding-right:1.25rem;padding-top:9px;padding-bottom:9px;white-space:nowrap;text-align:center;display:inline-flex;align-items:center;justify-content:center;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;border-radius:var(--theme-rounded-base)}.social-button.svelte-urhqdc>.svelte-urhqdc:not([hidden])~.svelte-urhqdc:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.social-button.svelte-urhqdc.svelte-urhqdc.svelte-urhqdc:hover{--tw-brightness:brightness(1.15);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.social-button.svelte-urhqdc.svelte-urhqdc.svelte-urhqdc:active{--tw-scale-x:95%;--tw-scale-y:95%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));--tw-brightness:brightness(.9);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.social-button.svelte-urhqdc.svelte-urhqdc.svelte-urhqdc{--tw-bg-opacity:1;background-color:rgb(var(--color-primary-500) / var(--tw-bg-opacity));color:rgb(var(--on-primary))}.svelte-urhqdc.svelte-urhqdc.svelte-urhqdc:is(.dark .social-button){--tw-bg-opacity:1;background-color:rgb(var(--color-primary-500) / var(--tw-bg-opacity));color:rgb(var(--on-primary))}button.svelte-urhqdc>img.svelte-urhqdc.svelte-urhqdc{max-height:1lh}button.svelte-urhqdc.svelte-urhqdc.svelte-urhqdc{min-width:0;min-height:0}.socials.svelte-urhqdc.svelte-urhqdc.svelte-urhqdc{display:flex;flex-wrap:wrap;justify-content:var(--preferred-justify-content)}.socials.svelte-urhqdc>button.svelte-urhqdc.svelte-urhqdc{margin:0 .5em var(--preferred-overall-margin-bottom)}.socials.isSmall.svelte-urhqdc>button.svelte-urhqdc.svelte-urhqdc{margin-left:.25em;margin-right:.25em}:root{--dialog-left-pad:clamp(0em, 5vw, 2em);--dialog-box-width:min( 54em , calc(100vw - var(--dialog-left-pad) - var(--theme-border-base)));--dialog-box-height:clamp(15em, 50vw, 18em)}.default-page-container.svelte-12byvuz{max-width:2100px;margin:4em auto;flex-direction:column;z-index:0}.lead-slot-placeholder.svelte-12byvuz{height:3em;margin-inline-end:.5em}.turnip-card.svelte-gptm5s{--tw-bg-opacity:1;background-color:rgb(var(--color-surface-100) / var(--tw-bg-opacity))}.svelte-gptm5s:is(.dark .turnip-card){--tw-bg-opacity:1;background-color:rgb(var(--color-surface-900) / var(--tw-bg-opacity))}.turnip-card.svelte-gptm5s{margin:var(--turnip-card-margin);margin-bottom:var(--turnip-card-margin-bottom);border-radius:var(--theme-rounded-container)}.chip.svelte-1usmrsu{border-radius:1em;margin:.25em;font-weight:700;pointer-events:none}main.svelte-1olxn2g.svelte-1olxn2g.svelte-1olxn2g{width:100%;overflow:visible;display:flex;flex-direction:column;justify-content:center;align-items:center}h1.svelte-1olxn2g.svelte-1olxn2g.svelte-1olxn2g{font-size:2em}h2.svelte-1olxn2g.svelte-1olxn2g.svelte-1olxn2g{font-size:1.5em}.section-card.svelte-1olxn2g.svelte-1olxn2g.svelte-1olxn2g{padding:3em;max-width:800px}.game-card.svelte-1olxn2g.svelte-1olxn2g.svelte-1olxn2g,.project-card.svelte-1olxn2g.svelte-1olxn2g.svelte-1olxn2g{width:100vw;max-width:36em;margin-bottom:3em}.game-card.svelte-1olxn2g>video.svelte-1olxn2g.svelte-1olxn2g{border-top-left-radius:1em;border-top-right-radius:1em;max-height:24em;width:100%;-o-object-fit:cover;object-fit:cover}#migrante-alberta.svelte-1olxn2g.svelte-1olxn2g.svelte-1olxn2g,.game-card.svelte-1olxn2g>img.svelte-1olxn2g.svelte-1olxn2g,.project-card.svelte-1olxn2g>img.svelte-1olxn2g.svelte-1olxn2g{border-top-left-radius:1em;border-top-right-radius:1em}#migrante-alberta.svelte-1olxn2g.svelte-1olxn2g.svelte-1olxn2g{width:100%;-o-object-fit:cover;object-fit:cover}.game-button.svelte-1olxn2g.svelte-1olxn2g.svelte-1olxn2g:disabled{cursor:not-allowed;opacity:.5}.game-button.svelte-1olxn2g.svelte-1olxn2g.svelte-1olxn2g:disabled:hover{--tw-brightness:brightness(1);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.game-button.svelte-1olxn2g.svelte-1olxn2g.svelte-1olxn2g:disabled:active{--tw-scale-x:1;--tw-scale-y:1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.game-button.svelte-1olxn2g.svelte-1olxn2g.svelte-1olxn2g{font-size:1rem;line-height:1.5rem;padding-left:1.25rem;padding-right:1.25rem;padding-top:9px;padding-bottom:9px;white-space:nowrap;text-align:center;display:inline-flex;align-items:center;justify-content:center;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;border-radius:var(--theme-rounded-base)}.game-button.svelte-1olxn2g>.svelte-1olxn2g:not([hidden])~.svelte-1olxn2g:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.game-button.svelte-1olxn2g.svelte-1olxn2g.svelte-1olxn2g:hover{--tw-brightness:brightness(1.15);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.game-button.svelte-1olxn2g.svelte-1olxn2g.svelte-1olxn2g:active{--tw-scale-x:95%;--tw-scale-y:95%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));--tw-brightness:brightness(.9);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.game-button.svelte-1olxn2g.svelte-1olxn2g.svelte-1olxn2g{--tw-bg-opacity:1;background-color:rgb(var(--color-primary-500) / var(--tw-bg-opacity));color:rgb(var(--on-primary))}.svelte-1olxn2g.svelte-1olxn2g.svelte-1olxn2g:is(.dark .game-button){--tw-bg-opacity:1;background-color:rgb(var(--color-primary-500) / var(--tw-bg-opacity));color:rgb(var(--on-primary))}.game-button.svelte-1olxn2g>img.svelte-1olxn2g.svelte-1olxn2g{max-height:1lh}.two-column-separated.svelte-1olxn2g.svelte-1olxn2g.svelte-1olxn2g{display:flex;justify-content:space-between}.more-section.svelte-1olxn2g.svelte-1olxn2g.svelte-1olxn2g{padding:1em}.greater-about-div.svelte-1olxn2g.svelte-1olxn2g.svelte-1olxn2g{display:flex;flex-direction:column;max-width:36em}.experience-and-about-div.svelte-1olxn2g.svelte-1olxn2g.svelte-1olxn2g{display:flex;gap:2em;flex-wrap:wrap;justify-content:center;align-items:flex-start}.game-card-body.svelte-1olxn2g.svelte-1olxn2g.svelte-1olxn2g,.project-card-body.svelte-1olxn2g.svelte-1olxn2g.svelte-1olxn2g{padding:1em}.game-card-body.svelte-1olxn2g>blockquote.svelte-1olxn2g.svelte-1olxn2g{margin-bottom:.7lh}.game-card-body.svelte-1olxn2g>h1.svelte-1olxn2g.svelte-1olxn2g,.project-card-body.svelte-1olxn2g>h2.svelte-1olxn2g.svelte-1olxn2g{text-align:center}.game-link-section.svelte-1olxn2g.svelte-1olxn2g.svelte-1olxn2g{display:flex;flex-direction:row;justify-content:center;gap:1em;margin-top:1em}.games-section.svelte-1olxn2g.svelte-1olxn2g.svelte-1olxn2g,.projects-section.svelte-1olxn2g.svelte-1olxn2g.svelte-1olxn2g{display:flex;flex-wrap:wrap;gap:2em;justify-content:center}.projects-section.svelte-1olxn2g.svelte-1olxn2g.svelte-1olxn2g{align-items:flex-start}.long-btn-image.svelte-1olxn2g.svelte-1olxn2g.svelte-1olxn2g{max-height:1lh}.itch-promo.svelte-1olxn2g.svelte-1olxn2g.svelte-1olxn2g{padding:4em}#hepcat-video.svelte-1olxn2g.svelte-1olxn2g.svelte-1olxn2g{-o-object-position:0 0;object-position:0 0}.title-card.svelte-1olxn2g.svelte-1olxn2g.svelte-1olxn2g{width:clamp(360px,80vw,800px)}[class*=qt-].svelte-1olxn2g.svelte-1olxn2g.svelte-1olxn2g{font-weight:var(--qt-font-weight)}