:root{--ease-out: cubic-bezier(.23, 1, .32, 1);--ease-in-out: cubic-bezier(.77, 0, .175, 1);--ease-soft: cubic-bezier(.2, 0, 0, 1);--ease-drawer: cubic-bezier(.32, .72, 0, 1);--duration-press: .14s;--duration-hover: .22s;--duration-ui: .28s;--duration-section: .7s;--z-cosmic: 0;--z-content: 10;--z-header: 50;--z-grain: 60;--cream: #ebe6dc;--cream-muted: #9a9488;--ink: #0c0c0b;--primary: #7d9a68}html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;scroll-behavior:smooth}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}body{overflow-x:hidden;color:var(--cream);background-color:var(--ink)}h1,h2,h3,h4{text-wrap:balance}p{text-wrap:pretty}:focus-visible{outline:2px solid color-mix(in srgb,var(--cream) 80%,white);outline-offset:3px}.skip-link{position:absolute;left:1rem;top:-100%;z-index:100;padding:.75rem 1.25rem;border-radius:9999px;background:var(--cream);color:var(--ink);font-weight:600;font-size:.875rem;transition:top var(--duration-ui) var(--ease-out)}.skip-link:focus{top:1rem}.cosmos-grain{position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--z-grain);pointer-events:none;opacity:.045;mix-blend-mode:overlay;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");background-repeat:repeat;background-size:180px 180px}.pressable{transition:transform var(--duration-press) var(--ease-out),opacity var(--duration-hover) var(--ease-soft),border-color var(--duration-hover) var(--ease-soft),background-color var(--duration-hover) var(--ease-soft),color var(--duration-hover) var(--ease-soft),box-shadow var(--duration-hover) var(--ease-soft)}.pressable:active{transform:scale(.96)}.nav-glass{background:linear-gradient(135deg,#ebe6dc14,#ebe6dc08,#0c0c0b59);backdrop-filter:blur(18px) saturate(140%);-webkit-backdrop-filter:blur(18px) saturate(140%);border:1px solid rgba(235,230,220,.1);box-shadow:0 8px 28px #0c0c0b66,inset 0 1px #ebe6dc1a}.cosmos-vignette:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:1;background:radial-gradient(ellipse 80% 70% at 50% 40%,transparent 40%,rgba(12,12,11,.55) 100%)}.hero-enter{opacity:0;transform:translateY(20px);will-change:transform,opacity}.work-image{outline:1px solid rgba(255,255,255,.1);outline-offset:-1px}.work-index-current{color:var(--cream)}.work-copy{background:#0c0c0be0;border:1px solid rgba(235,230,220,.1);box-shadow:inset 0 1px #ebe6dc0f;backdrop-filter:blur(16px) saturate(130%);-webkit-backdrop-filter:blur(16px) saturate(130%)}@media(prefers-reduced-transparency:reduce){.work-copy{background:#161614;backdrop-filter:none;-webkit-backdrop-filter:none}}.work-image img,.work-image .work-media{transition:transform .7s var(--ease-drawer),filter .5s var(--ease-soft)}@media(prefers-reduced-motion:reduce){.work-image img,.work-image .work-media{transition-duration:.01ms!important}}@media(max-width:767px){.cosmos-grain{background-size:120px 120px;opacity:.03}.cosmos-vignette:after{background:radial-gradient(ellipse 90% 80% at 50% 45%,transparent 35%,rgba(12,12,11,.5) 100%)}.pressable{min-height:44px;min-width:44px}.nav-glass{backdrop-filter:blur(12px) saturate(120%);-webkit-backdrop-filter:blur(12px) saturate(120%)}.work-copy{backdrop-filter:blur(10px) saturate(110%);-webkit-backdrop-filter:blur(10px) saturate(110%)}}.dobby-face{--screen-black: #050505;--cyan-glow: #00ffff;--cyan-dim: #00cccc;--bezel-color: #333;--glass-reflection: rgba(255, 255, 255, .08)}.dobby-face .robot-head{position:relative;width:80px;height:56px;background:var(--bezel-color);border-radius:14px;padding:4px;box-shadow:0 4px 12px #0000004d,inset 0 1px 1px #ffffff26;transition:transform .3s cubic-bezier(.175,.885,.32,1.275);cursor:pointer}.dobby-face .robot-head:hover{transform:scale(1.08)}.dobby-face .screen{position:relative;width:100%;height:100%;background-color:var(--screen-black);border-radius:10px;overflow:hidden;display:flex;align-items:center;justify-content:center;gap:12px;box-shadow:inset 0 0 8px #000c}.dobby-face .screen:after{content:"";position:absolute;top:0;right:0;width:55%;height:100%;background:linear-gradient(135deg,transparent 0%,transparent 40%,var(--glass-reflection) 50%,transparent 60%);pointer-events:none;border-radius:0 9px 9px 0;opacity:.6;z-index:10}.dobby-face .screen:before{content:"";position:absolute;top:0;left:0;width:100%;height:100%;background:repeating-linear-gradient(0deg,rgba(0,0,0,.15),rgba(0,0,0,.15) 1px,transparent 1px,transparent 2px);pointer-events:none;z-index:5}.dobby-face .eyes-container{position:relative;display:flex;align-items:center;justify-content:center;gap:10px;width:100%;height:100%;z-index:1;transition:transform .1s ease-out}.dobby-face .eye{position:relative;background-color:var(--cyan-glow);box-shadow:0 0 6px var(--cyan-glow),0 0 12px var(--cyan-glow),0 0 20px var(--cyan-dim);transition:all .4s cubic-bezier(.68,-.55,.265,1.55);display:flex;align-items:center;justify-content:center;overflow:hidden}.dobby-face .expression-neutral .eye{width:20px;height:20px;border-radius:5px}.dobby-face .expression-focused .eye{width:22px;height:7px;border-radius:3px}.dobby-face .expression-love .eye,.dobby-face .expression-excited .eye,.dobby-face .expression-playful .eye.left{width:20px;height:20px;border-radius:5px}.dobby-face .expression-playful .eye.right{height:5px;width:16px;border-radius:50%;background-color:transparent;box-shadow:0 3px 6px var(--cyan-glow);border-top:3px solid var(--cyan-glow);transform:rotate(-5deg)}.dobby-face .expression-serious .eye{width:22px;height:14px;border-radius:4px;background-color:#00ffff26;border:2px solid var(--cyan-glow);box-shadow:0 0 6px var(--cyan-glow),inset 0 0 5px #00ffff4d}.dobby-face .eyes-container.expression-serious:after{content:"";position:absolute;width:14px;height:2px;background-color:var(--cyan-glow);top:50%;left:50%;transform:translate(-50%);box-shadow:0 0 5px var(--cyan-glow)}.dobby-face .expression-irritated .eye{width:22px;height:10px;border-radius:3px;background-color:var(--cyan-glow);box-shadow:0 0 8px var(--cyan-glow),0 0 16px var(--cyan-glow)}.dobby-face .expression-irritated .eye.left{transform:rotate(15deg) translateY(3px)}.dobby-face .expression-irritated .eye.right{transform:rotate(-15deg) translateY(3px)}.dobby-face .irritated-svg{transform:scale(.8)}.dobby-face .expression-irritated .irritated-svg{opacity:1;fill:#000000d9;filter:none;animation:dobby-jitter .2s steps(3) infinite}@keyframes dobby-jitter{0%{transform:scale(.8) translate(1px,1px)}33%{transform:scale(.8) translate(-1px,-1px)}66%{transform:scale(.8) translate(-1px,1px)}to{transform:scale(.8) translate(1px,-1px)}}.dobby-face .expression-scrollUp .eye,.dobby-face .expression-scrollDown .eye{width:22px;height:22px;border-radius:6px;background-color:var(--cyan-glow);box-shadow:0 0 10px var(--cyan-glow),0 0 20px var(--cyan-glow);overflow:hidden;transform:none}.dobby-face .expression-scrollUp .heart-svg,.dobby-face .expression-scrollDown .heart-svg,.dobby-face .expression-scrollUp .star-svg,.dobby-face .expression-scrollDown .star-svg,.dobby-face .expression-scrollUp .irritated-svg,.dobby-face .expression-scrollDown .irritated-svg{display:none!important}.dobby-face .arrow-up-svg,.dobby-face .arrow-down-svg{transform:scale(.7)}.dobby-face .expression-scrollUp .arrow-up-svg{opacity:1;fill:#000000d9;filter:none;animation:dobby-elevatorUp .5s infinite linear;display:block!important}.dobby-face .expression-scrollUp .arrow-down-svg{display:none!important}.dobby-face .expression-scrollDown .arrow-down-svg{opacity:1;fill:#000000d9;filter:none;animation:dobby-elevatorDown .5s infinite linear;display:block!important}.dobby-face .expression-scrollDown .arrow-up-svg{display:none!important}@keyframes dobby-elevatorUp{0%{transform:translateY(20px) scale(.7);opacity:0}25%{opacity:1}75%{opacity:1}to{transform:translateY(-20px) scale(.7);opacity:0}}@keyframes dobby-elevatorDown{0%{transform:translateY(-20px) scale(.7);opacity:0}25%{opacity:1}75%{opacity:1}to{transform:translateY(20px) scale(.7);opacity:0}}.dobby-face .eye-svg{width:100%;height:100%;fill:var(--cyan-glow);filter:drop-shadow(0 0 3px var(--cyan-glow));opacity:0;position:absolute;transition:opacity .2s ease;pointer-events:none}.dobby-face .heart-svg{transform:scale(.5)}.dobby-face .expression-love .heart-svg{opacity:1;transform:scale(.6);fill:#000000d9;filter:none}.dobby-face .star-svg{transform:scale(.5)}.dobby-face .expression-excited .star-svg{opacity:1;fill:#000000d9;filter:none;animation:dobby-star-spin 3s linear infinite}@keyframes dobby-star-spin{0%{transform:scale(.6) rotate(0)}50%{transform:scale(.7) rotate(180deg)}to{transform:scale(.6) rotate(360deg)}}.dobby-face .blink{animation:dobby-blink .15s ease-in-out forwards}@keyframes dobby-blink{0%{transform:scaleY(1)}50%{transform:scaleY(.1)}to{transform:scaleY(1)}}.dobby-face .floating{animation:dobby-float 6s ease-in-out infinite}@keyframes dobby-float{0%{transform:translateY(0)}50%{transform:translateY(-3px)}to{transform:translateY(0)}}.dobby-face .expression-popper .eye{width:22px;height:22px;border-radius:50%;background:radial-gradient(circle,#ff6b6b,#feca57,#48dbfb,#ff9ff3,#54a0ff);background-size:400% 400%;box-shadow:0 0 15px #ff6b6b,0 0 25px #feca57,0 0 35px #48dbfb;animation:dobby-popper-burst .6s ease-out forwards,dobby-popper-colors .3s linear infinite;overflow:visible!important}.dobby-face .expression-popper .heart-svg,.dobby-face .expression-popper .star-svg,.dobby-face .expression-popper .irritated-svg,.dobby-face .expression-popper .arrow-up-svg,.dobby-face .expression-popper .arrow-down-svg{display:none!important}.dobby-face .expression-popper .eye:before,.dobby-face .expression-popper .eye:after{content:"";position:absolute;width:6px;height:6px;border-radius:50%;pointer-events:none}.dobby-face .expression-popper .eye:before{background:#ff6b6b;animation:dobby-confetti-1 .8s ease-out forwards;box-shadow:8px -5px #feca57,-8px -8px #48dbfb,12px 4px #ff9ff3,-12px 2px #54a0ff}.dobby-face .expression-popper .eye:after{background:#1dd1a1;animation:dobby-confetti-2 .8s ease-out forwards;box-shadow:6px 8px #ff6b6b,-10px 6px #feca57,4px -10px #48dbfb,-6px -6px #ff9ff3}@keyframes dobby-popper-burst{0%{transform:scale(.5);opacity:.5}50%{transform:scale(1.5);opacity:1}to{transform:scale(1);opacity:1}}@keyframes dobby-popper-colors{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes dobby-confetti-1{0%{transform:translate(0) scale(1);opacity:1}to{transform:translate(-20px,-30px) scale(0);opacity:0}}@keyframes dobby-confetti-2{0%{transform:translate(0) scale(1);opacity:1}to{transform:translate(25px,-25px) scale(0);opacity:0}}
