:root{color-scheme:light dark;--page: #f5f5f7;--page-glow: radial-gradient(64rem 42rem at 50% 44%, rgba(255, 255, 255, .85), transparent 72%);--ink: #1d1d1f;--muted: #86868b;--operator: #a1a1a6;--key-radius: clamp(14px, 1.9vw, 26px);--key-press-depth: clamp(4px, .5vw, 6px);--key-base-depth: clamp(5px, .6vw, 8px);--key-face: linear-gradient(180deg, #ffffff 0%, #f3f3f5 100%);--key-face-shadow: inset 0 1.5px 0 rgba(255, 255, 255, 1), inset 0 0 0 1px rgba(0, 0, 0, .05), inset 0 -2px 3px rgba(0, 0, 0, .05);--key-face-shadow-pressed: inset 0 1px 0 rgba(255, 255, 255, .9), inset 0 0 0 1px rgba(0, 0, 0, .06), inset 0 -1px 2px rgba(0, 0, 0, .07);--key-side: linear-gradient(180deg, #e4e4e7 0%, #cdcdd3 55%, #aeaeb5 100%);--key-shadow: 0 1px 2px rgba(0, 0, 0, .14), 0 10px 22px rgba(0, 0, 0, .1), 0 30px 60px rgba(0, 0, 0, .11);--key-shadow-pressed: 0 1px 1px rgba(0, 0, 0, .16), 0 5px 12px rgba(0, 0, 0, .1), 0 16px 36px rgba(0, 0, 0, .08);--key-text: #1d1d1f;--key-sheen: rgba(255, 255, 255, .55);--key-dish: radial-gradient(140% 120% at 50% -10%, rgba(0, 0, 0, .03), transparent 60%);--legend-glow: none;--contact-bg: rgba(255, 255, 255, .78);--contact-bg-hover: #ffffff;--contact-border: rgba(0, 0, 0, .08);--contact-border-hover: rgba(0, 0, 0, .14);--contact-shadow: 0 1px 2px rgba(0, 0, 0, .06), 0 8px 20px rgba(0, 0, 0, .07);--focus: #0071e3;--theme-duration: .52s;font-family:-apple-system,BlinkMacSystemFont,SF Pro Display,SF Pro Text,Segoe UI,Roboto,Helvetica Neue,system-ui,sans-serif}html[data-theme=dark]{--page: #000000;--page-glow: radial-gradient(52rem 34rem at 50% 46%, rgba(255, 255, 255, .07), transparent 70%), radial-gradient(70rem 42rem at 50% 108%, rgba(255, 214, 150, .05), transparent 72%);--ink: #f5f5f7;--muted: #86868b;--operator: #6e6e73;--key-face: linear-gradient(180deg, #292b2f 0%, #18191c 100%);--key-face-shadow: inset 0 1.5px 0 rgba(255, 255, 255, .11), inset 0 0 0 1px rgba(255, 255, 255, .04), inset 0 -2px 3px rgba(0, 0, 0, .45);--key-face-shadow-pressed: inset 0 1px 0 rgba(255, 255, 255, .08), inset 0 0 0 1px rgba(255, 255, 255, .04), inset 0 -1px 2px rgba(0, 0, 0, .5);--key-side: linear-gradient(180deg, #0f1012 0%, #060607 60%, #010102 100%);--key-shadow: 0 1px 2px rgba(0, 0, 0, .8), 0 14px 30px rgba(0, 0, 0, .55), 0 0 44px rgba(255, 241, 214, .07), 0 0 100px rgba(255, 241, 214, .045);--key-shadow-pressed: 0 1px 2px rgba(0, 0, 0, .8), 0 8px 18px rgba(0, 0, 0, .5), 0 0 52px rgba(255, 243, 218, .13), 0 0 120px rgba(255, 243, 218, .08);--key-text: #ffffff;--key-sheen: rgba(255, 255, 255, .055);--key-dish: radial-gradient(140% 120% at 50% -10%, rgba(255, 255, 255, .025), transparent 60%);--legend-glow: 0 0 6px rgba(255, 255, 255, .6), 0 0 20px rgba(255, 238, 200, .32), 0 0 44px rgba(255, 226, 170, .16);--contact-bg: rgba(255, 255, 255, .07);--contact-bg-hover: rgba(255, 255, 255, .12);--contact-border: rgba(255, 255, 255, .12);--contact-border-hover: rgba(255, 255, 255, .24);--contact-shadow: 0 1px 2px rgba(0, 0, 0, .5), 0 8px 24px rgba(0, 0, 0, .4);--focus: #f5f5f7}*{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);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;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;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(170px, 24vh, 236px);position:absolute;top:calc(50% - var(--message-offset));left:clamp(18px,6vw,72px);right:clamp(18px,6vw,72px);width:auto;max-width:52rem;min-height:1.5em;display:block;margin:0 auto;color:var(--muted);font-size:clamp(1.2rem,1.05rem + .9vw,1.6rem);font-weight:500;line-height:1.4;letter-spacing:-.015em;text-align:center;text-wrap:balance;pointer-events:none;transition:color var(--theme-duration) ease;animation:message-in .64s .12s cubic-bezier(.22,1,.36,1) both}.typewriter-message__audience{color:var(--ink);font-weight:600;transition:color var(--theme-duration) ease}.typewriter-message__cursor{width:2px;height:1.05em;display:inline-block;margin-left:.09em;border-radius:1px;background:var(--ink);opacity:1;transform:translateY(.16em);transition:background var(--theme-duration) ease;animation:cursor-blink 1.06s steps(1,end) infinite}.keyboard-logo{width:min(100%,1020px);display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:clamp(10px,2.6vw,40px)}.keyboard-logo>*{animation:key-in .76s cubic-bezier(.22,1,.36,1) both}.keyboard-logo>:nth-child(1){animation-delay:40ms}.keyboard-logo>:nth-child(2){animation-delay:.17s}.keyboard-logo>:nth-child(3){animation-delay:.21s}.keyboard-logo>:nth-child(4){animation-delay:.34s}.keyboard-logo>:nth-child(5){animation-delay:.38s}.keycap{position:relative;aspect-ratio:1.45 / 1;min-width:0;display:block;overflow:visible;border:0;border-radius:var(--key-radius);padding:0;color:var(--key-text);-webkit-appearance:none;appearance:none;background:transparent;box-shadow:none;cursor:pointer;transition: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:var(--key-side);box-shadow:var(--key-shadow);pointer-events:none;transition:background var(--theme-duration) ease,box-shadow .2s 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 var(--key-radius));background:radial-gradient(160% 130% at var(--sheen-x, 50%) var(--sheen-y, -30%),var(--key-sheen),transparent 52%),var(--key-dish),var(--key-face);box-shadow:var(--key-face-shadow);transform:translateY(0);will-change:transform;transition:background var(--theme-duration) ease,clip-path 90ms ease,box-shadow .11s ease,transform 90ms ease,filter .16s ease;pointer-events:none}.keycap:hover .keycap__surface{filter:brightness(1.03)}.keycap:focus-visible{outline:none}.keycap.is-pressed:before,.keycap:active:before{box-shadow:var(--key-shadow-pressed)}.keycap.is-pressed .keycap__surface,.keycap:active .keycap__surface{clip-path:inset(0 0 var(--key-press-depth) 0 round var(--key-radius));box-shadow:var(--key-face-shadow-pressed);transform:translateY(var(--key-press-depth))}.keycap__label{position:absolute;left:clamp(20px,2.8vw,42px);bottom:clamp(16px,2.3vw,34px);z-index:1;color:var(--key-text);font-size:clamp(1.1rem,2.3vw,2rem);font-weight:400;line-height:1;letter-spacing:.005em;text-shadow:var(--legend-glow);transition:color var(--theme-duration) ease,text-shadow var(--theme-duration) ease}.keycap__icon{position:absolute;top:clamp(18px,2.4vw,36px);right:clamp(22px,2.8vw,42px);z-index:1;width:clamp(22px,2.9vw,44px);height:clamp(22px,2.9vw,44px);color:var(--key-text);transition:color var(--theme-duration) ease,filter var(--theme-duration) ease}.keycap__icon--option{width:clamp(28px,3.9vw,58px)}html[data-theme=dark] .keycap__icon{filter:drop-shadow(0 0 5px rgba(255,255,255,.55)) drop-shadow(0 0 16px rgba(255,238,200,.3)) drop-shadow(0 0 32px rgba(255,226,170,.14))}.operator{color:var(--operator);font-size:clamp(1.7rem,4.2vw,3.9rem);font-weight:200;line-height:1;transition:color var(--theme-duration) ease,transform 90ms ease;user-select:none}.is-combo-pressed .operator{transform:translateY(4px) scale(1.08)}.bottom-actions{--bottom-actions-motion: .52s cubic-bezier(.22, 1, .36, 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:10px;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);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);box-shadow:var(--contact-shadow);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:focus-visible{outline:3px solid var(--focus);outline-offset:4px}.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(--muted);font-size:.72rem;font-weight:500;line-height:1.35;letter-spacing:.01em;opacity:.55;text-align:center;transition:color var(--theme-duration) ease,opacity var(--theme-duration) ease}.holding-credit a{font-weight:600;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}.contact-link--lang{font-size:.78rem;font-weight:600;letter-spacing:.04em}.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(.22,1,.36,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 key-in{0%{opacity:0;transform:translateY(22px) scale(.97);filter:blur(5px)}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 key-in-lite{0%{opacity:0;transform:translateY(14px) scale(.99)}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.9em;font-size:1.05rem}.keyboard-logo{gap:10px}.keycap{--key-radius: 12px;--key-press-depth: 4px;--key-base-depth: 5px}.keycap__label{left:14px;bottom:12px;font-size:clamp(.95rem,4.6vw,1.25rem)}.keycap__icon{top:12px;right:13px;width:clamp(16px,5.4vw,22px);height:clamp(16px,5.4vw,22px)}.keycap__icon--option{width:clamp(21px,6.6vw,30px)}.operator{font-size:clamp(1.5rem,7vw,2.1rem)}.contact-link{width:44px;height:44px}}@media(max-width:420px){.typewriter-message{min-height:3em;font-size:1rem}.keyboard-logo{gap:8px}.keycap__label{left:12px;bottom:11px;font-size:0}.keycap__label:before{content:attr(data-short-label);font-size:.95rem}.keycap__icon{display:none}}@media(hover:none),(pointer:coarse){.typewriter-message{animation-name:message-in-lite}.keyboard-logo>*{animation-name:key-in-lite}.keycap:hover .keycap__surface{filter:none}.keycap:before{box-shadow:var(--key-shadow-pressed)}html[data-theme=dark] .keycap__label{text-shadow:0 0 10px rgba(255,255,255,.45)}html[data-theme=dark] .keycap__icon{filter:none}}@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}}
