@font-face{font-family:Sohne Kraftig;src:url(/fonts/sohne-font-family/TestSohne-Kraftig-BF663d89cd37e26.otf) format("opentype");font-weight:600;font-style:normal;font-display:swap}.starmap-thumb{--starmap-cycle:8s;position:relative;width:100%;height:100%;min-height:280px;overflow:hidden;flex-shrink:0;container-type:inline-size}.starmap-thumb-bg{position:absolute;inset:0;width:100%;height:100%;-o-object-fit:cover;object-fit:cover;-o-object-position:center;object-position:center;display:block}.starmap-thumb-logo{position:absolute;left:50%;top:44%;transform:translate(-50%,-50%);display:flex;align-items:center;gap:6px;white-space:nowrap}.starmap-thumb-text{font-family:Sohne Kraftig,sohne,sans-serif;font-weight:600;font-size:calc(40 / 360 * 100cqi);line-height:1;color:#fff;letter-spacing:-.03em;animation:starmap-thumb-text var(--starmap-cycle) infinite}.starmap-thumb-star-wrap{display:flex;align-items:center;justify-content:center;color:#fff;flex-shrink:0;width:calc(22 / 360 * 100cqi);height:calc(22 / 360 * 100cqi)}.starmap-thumb-star-icon{width:100%;height:100%;transform-origin:center center;animation:starmap-thumb-star var(--starmap-cycle) infinite}.starmap-thumb-constellation{position:absolute;left:50%;bottom:12%;width:calc(240 / 360 * 100cqi);max-width:240px;height:auto;transform:translateX(-50%);animation:starmap-thumb-constellation var(--starmap-cycle) infinite}.starmap-thumb-node{transform-origin:7px 7px;transform-box:fill-box;animation:starmap-thumb-twinkle 2.2s ease-in-out infinite;animation-delay:var(--twinkle-delay,0s)}.starmap-thumb-export-btn{position:absolute;right:8px;top:8px;z-index:20;padding:4px 8px;font-family:Arial,sans-serif;font-size:11px;line-height:1.2;color:#fff;background:rgba(0,0,0,.55);border:1px solid hsla(0,0%,100%,.25);border-radius:6px;cursor:pointer;opacity:0;transition:opacity .2s ease,background .2s ease}.starmap-thumb-export-btn:hover:not(:disabled){background:rgba(0,0,0,.75)}.starmap-thumb-export-btn:disabled{cursor:wait;opacity:.85}.starmap-thumb--exportable:hover .starmap-thumb-export-btn,.starmap-thumb-export-btn:focus-visible{opacity:1}@keyframes starmap-thumb-star{0%,13.125%{opacity:0;transform:translate(160px,-80px) scale(.3) rotate(0deg)}13.125%{animation-timing-function:cubic-bezier(.2,0,.8,1)}16.625%{opacity:1;transform:translate(0) scale(1) rotate(0deg);animation-timing-function:linear}24.125%,to{opacity:1;transform:translate(0) scale(1) rotate(3turn)}}@keyframes starmap-thumb-constellation{0%,23.75%{opacity:0;transform:translateX(-50%) translateY(8px);animation-timing-function:ease}31.25%,to{opacity:1;transform:translateX(-50%) translateY(0)}}@keyframes starmap-thumb-text{0%,5%{opacity:0;transform:translateY(18px);animation-timing-function:cubic-bezier(.16,1,.3,1)}13.75%,to{opacity:1;transform:translateY(0)}}@keyframes starmap-thumb-twinkle{0%,to{opacity:.3;transform:scale(.6)}50%{opacity:1;transform:scale(1)}}@media (prefers-reduced-motion:reduce){.starmap-thumb-constellation,.starmap-thumb-node,.starmap-thumb-star-icon,.starmap-thumb-text{animation:none;opacity:1;transform:none}.starmap-thumb-constellation{transform:translateX(-50%)}.starmap-thumb-text{transform:translateY(0)}.starmap-thumb-star-icon{transform:scale(1) rotate(0deg)}}.amazon-gift-thumb{--amazon-cycle:8s;position:relative;width:100%;height:100%;min-height:280px;overflow:hidden;flex-shrink:0;container-type:inline-size}.amazon-gift-thumb-bg-wrap{position:absolute;inset:0;overflow:hidden}.amazon-gift-thumb-bg{position:absolute;inset:0;width:100%;height:100%;-o-object-fit:cover;object-fit:cover;-o-object-position:center 38%;object-position:center 38%;display:block}.amazon-gift-thumb-overlay{position:absolute;inset:0;background:rgba(0,0,0,.35);pointer-events:none}.amazon-gift-logo-wrap{position:absolute;top:58%;left:50%;z-index:2;width:calc(280 / 360 * 100cqi);max-width:280px;transform:translateX(-50%);animation:amazon-gift-logo-in var(--amazon-cycle) infinite}.amazon-gift-logo{display:block;width:100%;height:auto}.amazon-gift-logo-base{clip-path:polygon(0 0,76% 0,76% 28%,88% 28%,88% 0,100% 0,100% 100%,0 100%)}.amazon-gift-logo-bow{position:absolute;inset:0;clip-path:inset(0 12% 72% 76%);transform-origin:82% 28%;animation:amazon-gift-bow-sway var(--amazon-cycle) infinite}.amazon-gift-thumb-confetti{position:absolute;inset:0;z-index:1;overflow:hidden;pointer-events:none;animation:amazon-gift-confetti-in var(--amazon-cycle) forwards}.amazon-gift-confetti{--piece-opacity:0.72;position:absolute;display:block;opacity:0;border-radius:1px;background-repeat:no-repeat;background-size:260% 260%;background-position:28% 42%;box-shadow:inset 0 .5px 0 rgba(255,252,245,.72);animation-name:amazon-gift-confetti-fall,amazon-gift-foil-shine;animation-timing-function:ease-in-out,ease-in-out;animation-iteration-count:infinite,infinite;animation-fill-mode:backwards,none;pointer-events:none}.amazon-gift-confetti--gold{background-image:linear-gradient(var(--foil-angle,118deg),#6b4e12 0,#f4e29a 18%,#fffbe4 34%,#d4ae45 50%,#fff3bc 68%,#8d671c 100%)}.amazon-gift-confetti--champagne{background-image:linear-gradient(var(--foil-angle,118deg),#a8926a 0,#fff8e8 20%,#fff 36%,#e7d7b0 52%,#fffdf6 70%,#b39a72 100%)}.amazon-gift-confetti--copper{background-image:linear-gradient(var(--foil-angle,118deg),#7a3d22 0,#f0b184 18%,#ffe7d2 34%,#c56d3e 52%,#ffd2b0 70%,#8a4424 100%)}.amazon-gift-confetti--silver{background-image:linear-gradient(var(--foil-angle,118deg),#5e6c7a 0,#e7eef4 18%,#fff 36%,#b7c3ce 52%,#f5f8fb 70%,#6d7c8a 100%)}.amazon-gift-confetti--rose{background-image:linear-gradient(var(--foil-angle,118deg),#8a4638 0,#f0b5a4 18%,#fff1ea 36%,#d48978 52%,#ffd8cc 70%,#a15a48 100%)}.amazon-gift-confetti--patina{background-image:linear-gradient(var(--foil-angle,118deg),#314433 0,#c5d4ae 18%,#f3f6ea 36%,#6f8a62 54%,#dce6cc 72%,#3d5340 100%)}.amazon-gift-confetti--circle{border-radius:50%}.portfolio-card:focus-visible .amazon-gift-confetti,.portfolio-card:focus-within .amazon-gift-confetti,.portfolio-card:hover .amazon-gift-confetti{--piece-opacity:1}.amazon-gift-glow{position:absolute;border-radius:50%;background:radial-gradient(circle,rgba(255,213,128,.15) 0,rgba(255,213,128,0) 70%);opacity:0;animation-name:amazon-gift-glow-pulse;animation-timing-function:ease-in-out;animation-iteration-count:infinite;transform:translate(-50%,-50%)}@keyframes amazon-gift-logo-in{0%,3.75%{opacity:0;transform:translateX(-50%) translateY(120%) scale(.7);animation-timing-function:cubic-bezier(.16,1,.3,1)}13.75%,to{opacity:1;transform:translateX(-50%) translateY(0) scale(1)}}@keyframes amazon-gift-bow-sway{0%,14.9%,24.1%,43.6%,50.1%,to{transform:rotate(0deg)}15.5%{transform:rotate(-8deg)}17.5%{transform:rotate(6deg)}19.5%{transform:rotate(-4deg)}21.5%{transform:rotate(3deg)}44.5%{transform:rotate(-6deg)}46.5%{transform:rotate(4deg)}48.5%{transform:rotate(-2deg)}}@keyframes amazon-gift-confetti-in{0%,24.9%{opacity:0}25%,to{opacity:1}}@keyframes amazon-gift-foil-shine{0%,to{background-position:8% 36%}50%{background-position:92% 64%}}@keyframes amazon-gift-confetti-fall{0%{top:-12%;opacity:0;transform:translateX(0) rotate(var(--rot,0deg))}14%{opacity:var(--piece-opacity,.72)}50%{transform:translateX(calc(var(--drift, 12px) * .55)) rotate(calc(var(--rot, 0deg) + 80deg))}to{top:114%;opacity:0;transform:translateX(var(--drift,12px)) rotate(calc(var(--rot, 0deg) + 170deg))}}@keyframes amazon-gift-glow-pulse{0%,to{opacity:0;transform:translate(-50%,-50%) scale(.85)}50%{opacity:1;transform:translate(-50%,-50%) scale(1.1)}}@media (prefers-reduced-motion:reduce){.amazon-gift-thumb-bg{display:none}.amazon-gift-thumb-bg-wrap{background:#2a2a2a 50%/cover no-repeat url(/images/projects/amazon-giftwrapping/birthday.jpg)}.amazon-gift-confetti,.amazon-gift-glow,.amazon-gift-logo-bow,.amazon-gift-logo-wrap,.amazon-gift-thumb-confetti{animation:none}.amazon-gift-logo-wrap{opacity:1;transform:translateX(-50%)}.amazon-gift-logo-bow,.amazon-gift-thumb-confetti{opacity:1;transform:none}.amazon-gift-confetti{opacity:0;transform:rotate(var(--rot,0deg))}.amazon-gift-confetti--still{opacity:.34}.amazon-gift-glow{opacity:.4;transform:translate(-50%,-50%)}.portfolio-card:focus-visible .amazon-gift-confetti--still,.portfolio-card:focus-within .amazon-gift-confetti--still,.portfolio-card:hover .amazon-gift-confetti--still{opacity:.55}}