:root{color-scheme:light dark;--page: #f7f5f1;--page-glow: radial-gradient(circle at 50% 41%, rgba(0, 0, 0, .07), transparent 29rem);--ink: #202020;--operator: #292929;--key-top: #3b3b3b;--key-bottom: #222222;--key-base-top: #202020;--key-edge: #0d0d0d;--key-line: rgba(255, 255, 255, .16);--key-text: #ededed;--key-highlight: rgba(255, 255, 255, .12);--key-sheen: rgba(255, 255, 255, .08);--key-glow: rgba(0, 0, 0, 0);--key-glow-strong: rgba(0, 0, 0, 0);--contact-bg: rgba(255, 255, 255, .48);--contact-bg-hover: rgba(255, 255, 255, .82);--contact-border: rgba(0, 0, 0, .17);--contact-border-hover: rgba(0, 0, 0, .34);--contact-shadow: rgba(0, 0, 0, .08);--message: rgba(32, 32, 32, .78);--message-shadow: rgba(255, 255, 255, .4);--focus: #4e80ff;--theme-duration: .52s;--key-press-depth: clamp(4px, .6vw, 6px);--key-base-depth: 7px;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}html[data-theme=dark]{--page: #08090c;--page-glow: radial-gradient(circle at 50% 47%, rgba(247, 245, 241, .15), transparent 22rem), radial-gradient(circle at 50% 115%, rgba(255, 236, 190, .1), transparent 32rem);--ink: #f7f5f1;--operator: rgba(247, 245, 241, .86);--key-top: #171c22;--key-bottom: #07090d;--key-base-top: #080b10;--key-edge: #010203;--key-line: rgba(247, 245, 241, .32);--key-text: #f7f5f1;--key-highlight: rgba(247, 245, 241, .18);--key-sheen: rgba(247, 245, 241, .14);--key-glow: rgba(247, 245, 241, .24);--key-glow-strong: rgba(255, 241, 207, .46);--contact-bg: rgba(14, 19, 26, .7);--contact-bg-hover: rgba(24, 35, 47, .92);--contact-border: rgba(247, 245, 241, .22);--contact-border-hover: rgba(247, 245, 241, .46);--contact-shadow: rgba(247, 245, 241, .1);--message: rgba(247, 245, 241, .88);--message-shadow: rgba(255, 226, 170, .18);--focus: #f7f5f1}*{box-sizing:border-box}html{min-width:320px;background-color:var(--page);overscroll-behavior:none;transition:background-color var(--theme-duration) ease}body{min-width:320px;margin:0;color:var(--ink);background-color:var(--page);background-image:var(--page-glow);text-rendering:geometricPrecision;overscroll-behavior:none;-webkit-user-select:none;user-select:none;transition:background-color var(--theme-duration) ease,color var(--theme-duration) ease}button,a{touch-action:manipulation;-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none}button{font:inherit}a{color:inherit;text-decoration:none}.site-shell{position:relative;min-height:100svh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:clamp(24px,4.8vh,46px);padding:clamp(28px,6vw,72px)}h1{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}.typewriter-message{--message-offset: clamp(164px, 23vh, 220px);position:absolute;top:calc(50% - var(--message-offset));left:clamp(18px,6vw,72px);right:clamp(18px,6vw,72px);width:auto;max-width:50rem;min-height:1.55em;display:block;margin:0 auto;color:var(--message);font-size:1.36rem;font-weight:420;line-height:1.35;letter-spacing:0;text-align:center;text-shadow:0 0 18px var(--message-shadow);text-wrap:balance;pointer-events:none;transition:color var(--theme-duration) ease,text-shadow var(--theme-duration) ease;animation:message-in .52s 80ms cubic-bezier(.2,.8,.2,1) both}.typewriter-message__cursor{width:.08em;height:1.08em;display:inline-block;margin-left:.06em;background:currentColor;opacity:1;transform:translateY(.15em);animation:cursor-blink .92s steps(1,end) infinite}.keyboard-logo{width:min(100%,1280px);display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:clamp(8px,2.4vw,34px);animation:keyboard-in .52s cubic-bezier(.2,.8,.2,1) both}.keycap{position:relative;aspect-ratio:1.43 / 1;min-width:0;display:block;overflow:visible;border:0;border-radius:clamp(13px,1.9vw,28px);padding:0;color:var(--key-text);-webkit-appearance:none;appearance:none;background:transparent;box-shadow:none;cursor:pointer;transform:translateY(0);transform-origin:center bottom;will-change:transform;transition:box-shadow var(--theme-duration) ease,filter .16s ease,color var(--theme-duration) ease}.keycap:before{position:absolute;z-index:0;inset:var(--key-press-depth) 0 calc(var(--key-base-depth) * -1);content:"";border-radius:inherit;background:linear-gradient(180deg,var(--key-base-top),var(--key-edge));box-shadow:0 0 24px var(--key-glow),0 0 54px var(--key-glow),0 18px 24px #00000038,0 32px 52px #00000024;pointer-events:none;transition:background var(--theme-duration) ease,box-shadow var(--theme-duration) ease}.keycap__surface{position:absolute;inset:0;z-index:1;display:block;overflow:hidden;border-radius:inherit;clip-path:inset(0 0 0 0 round clamp(13px,1.9vw,28px));background:linear-gradient(145deg,var(--key-highlight),transparent 44%),radial-gradient(circle at 26% 22%,var(--key-highlight),transparent 36%),linear-gradient(180deg,var(--key-top),var(--key-bottom));box-shadow:inset 0 0 0 2px #ffffff14,inset 0 0 0 7px #00000057,inset 0 -7px #00000061;transform:translateY(0);will-change:transform;transition:background var(--theme-duration) ease,clip-path .1s ease,box-shadow .12s ease,transform .1s ease;pointer-events:none}.keycap__surface:before{position:absolute;inset:clamp(7px,.85vw,12px);content:"";border:1px solid var(--key-line);border-radius:calc(clamp(13px,1.9vw,28px) - 5px);box-shadow:inset 0 1px #ffffff1f,inset 0 -1px #00000075;pointer-events:none}.keycap__surface:after{position:absolute;inset:12% 10% auto 8%;height:43%;content:"";border-radius:999px;background:linear-gradient(180deg,var(--key-sheen),transparent);filter:blur(.2px);pointer-events:none}.keycap:hover{filter:brightness(1.06)}.contact-link:focus-visible{outline:3px solid var(--focus);outline-offset:6px}.keycap:focus-visible{outline:none}.keycap.is-pressed:before,.keycap:active:before{box-shadow:0 0 32px var(--key-glow-strong),0 0 70px var(--key-glow),0 10px 16px #0003,0 18px 34px #0000001f}.keycap.is-pressed .keycap__surface,.keycap:active .keycap__surface{clip-path:inset(0 0 var(--key-press-depth) 0 round clamp(13px,1.9vw,28px));box-shadow:inset 0 0 0 2px #ffffff12,inset 0 0 0 7px #0006,inset 0 -3px #0000006b;transform:translateY(var(--key-press-depth))}.is-combo-pressed .operator{transform:translateY(4px) scale(1.08)}.keycap__label{position:absolute;left:clamp(22px,3.2vw,48px);bottom:clamp(18px,2.55vw,36px);z-index:1;color:var(--key-text);font-size:clamp(1.35rem,3vw,2.7rem);font-weight:300;line-height:1;letter-spacing:0;transition:color var(--theme-duration) ease,text-shadow var(--theme-duration) ease}.keycap__icon{position:absolute;top:clamp(22px,2.9vw,42px);right:clamp(25px,3.2vw,48px);z-index:1;width:clamp(25px,3.6vw,54px);height:clamp(25px,3.6vw,54px);color:var(--key-text);filter:drop-shadow(0 1px 0 rgba(0,0,0,.3));transition:color var(--theme-duration) ease,filter var(--theme-duration) ease}html[data-theme=dark] .keycap__label{text-shadow:0 0 7px rgba(247,245,241,.7),0 0 18px rgba(255,241,207,.44),0 0 34px rgba(255,226,170,.24)}html[data-theme=dark] .keycap__icon{filter:drop-shadow(0 0 5px rgba(247,245,241,.72)) drop-shadow(0 0 16px rgba(255,241,207,.42)) drop-shadow(0 0 30px rgba(255,226,170,.22))}.keycap__icon--option{width:clamp(34px,4.8vw,72px)}.operator{color:var(--operator);font-size:clamp(2.15rem,5.2vw,5rem);font-weight:400;line-height:1;transition:color var(--theme-duration) ease,text-shadow var(--theme-duration) ease,transform 90ms ease;user-select:none}html[data-theme=dark] .operator{text-shadow:0 0 18px rgba(247,245,241,.34),0 0 42px rgba(255,226,170,.14)}.bottom-actions{--bottom-actions-motion: .52s cubic-bezier(.2, .8, .2, 1);position:fixed;left:50%;bottom:max(24px,calc(env(safe-area-inset-bottom) + 18px));z-index:10;transform:translate(-50%);width:min(calc(100% - 32px),24rem);display:flex;flex-direction:column;gap:8px;align-items:center;visibility:visible;opacity:1;filter:blur(0);pointer-events:auto;will-change:opacity,filter,transform;transition:opacity var(--bottom-actions-motion),filter var(--bottom-actions-motion),transform var(--bottom-actions-motion),visibility 0s linear}.is-bottom-actions-hidden .bottom-actions{visibility:hidden;opacity:0;filter:blur(6px);pointer-events:none;transform:translate(-50%,10px);transition:opacity var(--bottom-actions-motion),filter var(--bottom-actions-motion),transform var(--bottom-actions-motion),visibility 0s linear .52s}.contact-links{display:flex;flex-wrap:wrap;justify-content:center;gap:12px}.contact-link{width:46px;height:46px;display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--contact-border);border-radius:999px;padding:0;color:var(--ink);background:var(--contact-bg);box-shadow:0 0 22px var(--contact-shadow),0 14px 30px #00000014;cursor:pointer;transition:transform .16s ease,color var(--theme-duration) ease,background var(--theme-duration) ease,border-color var(--theme-duration) ease,box-shadow var(--theme-duration) ease}.contact-link:hover{border-color:var(--contact-border-hover);background:var(--contact-bg-hover);transform:translateY(-2px)}.contact-link__icon{width:19px;height:19px;flex:0 0 auto}.contact-link__icon--brand{fill:currentColor}svg.contact-link__icon{display:block}.holding-credit{margin:0;color:var(--message);font-size:.7rem;font-weight:500;line-height:1.35;letter-spacing:0;opacity:.3;text-align:center;transition:color var(--theme-duration) ease,opacity var(--theme-duration) ease}.holding-credit a{font-weight:560;text-decoration:none}.holding-credit a:hover{opacity:.74}.holding-credit a:focus-visible{border-radius:4px;outline:3px solid var(--focus);outline-offset:4px}.contact-link--theme{position:relative}.theme-icon{position:absolute;inset:50% auto auto 50%;transform:translate(-50%,-50%) rotate(0) scale(1);transition:opacity .26s ease,transform .36s cubic-bezier(.2,.8,.2,1)}.theme-icon--sun{opacity:0;transform:translate(-50%,-50%) rotate(-70deg) scale(.72)}.theme-icon--moon{opacity:1}html[data-theme=dark] .theme-icon--sun{opacity:1;transform:translate(-50%,-50%) rotate(0) scale(1)}html[data-theme=dark] .theme-icon--moon{opacity:0;transform:translate(-50%,-50%) rotate(70deg) scale(.72)}@keyframes keyboard-in{0%{opacity:0;transform:translateY(18px) scale(.985);filter:blur(6px)}to{opacity:1;transform:translateY(0) scale(1);filter:blur(0)}}@keyframes message-in{0%{opacity:0;transform:translateY(8px);filter:blur(4px)}to{opacity:1;transform:translateY(0);filter:blur(0)}}@keyframes cursor-blink{0%,46%{opacity:1}47%,to{opacity:0}}@keyframes keyboard-in-lite{0%{opacity:0;transform:translateY(12px) scale(.992)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes message-in-lite{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}@media(max-width:720px){.site-shell{padding-inline:18px}.typewriter-message{min-height:2.75em;font-size:1.08rem}.keyboard-logo{gap:8px}.keycap{--key-press-depth: 4px;--key-base-depth: 5px;border-radius:13px;box-shadow:none}.keycap:before{box-shadow:0 0 22px var(--key-glow),0 14px 22px #0003}.keycap__surface{clip-path:inset(0 0 0 0 round 13px);box-shadow:inset 0 0 0 1px #ffffff14,inset 0 0 0 4px #00000057,inset 0 -4px #00000061}.keycap.is-pressed .keycap__surface,.keycap:active .keycap__surface{clip-path:inset(0 0 var(--key-press-depth) 0 round 13px);box-shadow:inset 0 0 0 1px #ffffff12,inset 0 0 0 4px #0006,inset 0 -2px #0000006b;transform:translateY(var(--key-press-depth))}.keycap__surface:before{inset:6px;border-radius:9px}.keycap__label{left:14px;bottom:12px;font-size:clamp(1rem,5.2vw,1.35rem)}.keycap__icon{top:12px;right:13px;width:clamp(17px,6vw,24px);height:clamp(17px,6vw,24px)}.keycap__icon--option{width:clamp(22px,7vw,32px)}.operator{font-size:clamp(1.6rem,8vw,2.2rem)}.contact-link{width:44px;height:44px}}@media(max-width:420px){.site-shell{gap:24px}.typewriter-message{min-height:3em;font-size:1rem}.keyboard-logo{gap:6px}.keycap__label{left:12px;bottom:12px;font-size:0}.keycap__label:before{content:attr(data-short-label);font-size:.98rem}.keycap__icon{display:none}}@media(hover:none),(pointer:coarse){body{text-rendering:optimizeLegibility}.typewriter-message{animation-name:message-in-lite}.keyboard-logo{animation-name:keyboard-in-lite}.keycap:hover{filter:none}.keycap:before{box-shadow:0 0 18px var(--key-glow),0 14px 20px #0000002e}.keycap.is-pressed:before,.keycap:active:before{box-shadow:0 0 18px var(--key-glow-strong),0 8px 14px #0000002e}.keycap__surface{transition:background var(--theme-duration) ease,box-shadow .12s ease,transform 90ms ease}.keycap.is-pressed .keycap__surface,.keycap:active .keycap__surface{clip-path:inset(0 0 0 0 round clamp(13px,1.9vw,28px))}html[data-theme=dark] .keycap__label{text-shadow:0 0 10px rgba(247,245,241,.46)}html[data-theme=dark] .keycap__icon{filter:none}.contact-link{box-shadow:0 0 14px var(--contact-shadow),0 8px 18px #00000014}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:1ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important;transition-duration:1ms!important}.typewriter-message__cursor{animation:none!important}}
