@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:300;src:url(../media/ibm-plex-sans-latin-300-normal.37u2qe4fqntej.woff2)format("woff2"),url(../media/ibm-plex-sans-latin-300-normal.3_1e98v41mlyb.woff)format("woff")}
@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(../media/ibm-plex-sans-latin-400-normal.1-h52z97c7bce.woff2)format("woff2"),url(../media/ibm-plex-sans-latin-400-normal.0fuh4fyjfo9ap.woff)format("woff")}
@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(../media/ibm-plex-sans-latin-500-normal.2broe1i9movoa.woff2)format("woff2"),url(../media/ibm-plex-sans-latin-500-normal.0f8eq302mdpld.woff)format("woff")}
@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(../media/ibm-plex-sans-latin-600-normal.11xxlm8n0_7w8.woff2)format("woff2"),url(../media/ibm-plex-sans-latin-600-normal.0o-mv26yr1hzk.woff)format("woff")}
@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:700;src:url(../media/ibm-plex-sans-latin-700-normal.0opy23tsy2xx8.woff2)format("woff2"),url(../media/ibm-plex-sans-latin-700-normal.22xfth4l63-nz.woff)format("woff")}
@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(../media/ibm-plex-mono-latin-400-normal.19gbeb610ur4n.woff2)format("woff2"),url(../media/ibm-plex-mono-latin-400-normal.3nj-glub930lh.woff)format("woff")}
@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(../media/ibm-plex-mono-latin-500-normal.25_05y-blbp24.woff2)format("woff2"),url(../media/ibm-plex-mono-latin-500-normal.20ixcot5hpnm-.woff)format("woff")}
:root{--bg:#fff;--fg:#0b0c0f;--ink-2:#2a2d36;--body:#4a4f5c;--muted:#8e93a0;--line:#e8e9ee;--soft:#f4f5f8;--accent:#2d5bff;--font-sans:"IBM Plex Sans", system-ui, -apple-system, "Segoe UI", sans-serif;--font-mono:"IBM Plex Mono", ui-monospace, "SF Mono", Menlo, monospace;--mw:clamp(190px, 25vw, 330px);--mh:calc(var(--mw) * .8417);--tile:clamp(44px, 4.6vw, 62px);--tgap:clamp(8px, 1vw, 14px);--stage-h:max(var(--mh), calc(3 * var(--tile) + 2 * var(--tgap) + 30px));--top:84px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{background:var(--bg);color:var(--fg);font:400 16px/1.5 var(--font-sans);-webkit-font-smoothing:antialiased;margin:0;overflow-x:hidden}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit}img{max-width:100%}b{font-weight:700}.site{opacity:0;pointer-events:none;transition:opacity .5s .2s}.site[data-entered=true]{opacity:1;pointer-events:auto}.topbar{z-index:20;padding:calc(18px + env(safe-area-inset-top,0px)) max(20px, env(safe-area-inset-left,0px)) 24px;pointer-events:none;background:linear-gradient(#fff 55%,#fff0);position:fixed;top:0;left:0;right:0}.wordmark{pointer-events:auto;letter-spacing:-.01em;align-items:baseline;gap:10px;font-weight:600;display:inline-flex}.wordmark small{font:400 .8125rem var(--font-mono);color:var(--muted);letter-spacing:0}.main{min-height:100dvh;padding:var(--top) max(20px, env(safe-area-inset-left,0px)) calc(var(--stage-h) + 28px)}.site[data-entered=true] .rise{animation:.75s cubic-bezier(.2,.7,.2,1) both rise;animation-delay:var(--d,0s)}@keyframes rise{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}.hero{min-height:calc(100dvh - var(--top) - var(--stage-h) - 28px);text-align:center;flex-direction:column;justify-content:center;align-items:center;display:flex}.hero .gray{color:var(--muted);font-weight:400}.hero b{color:var(--fg)}.hero-1{letter-spacing:-.035em;margin:0;font-size:clamp(2.5rem,8.2vw,6.25rem);font-weight:700;line-height:1.05}.hero-2{letter-spacing:-.03em;text-wrap:balance;max-width:21em;margin:18px 0 0;font-size:clamp(1.5rem,4.3vw,3.25rem);font-weight:700;line-height:1.18}.hero-meta{font:400 .8125rem/1.4 var(--font-mono);color:var(--muted);letter-spacing:.02em;margin:30px 0 0}.hero-meta i{opacity:.5;margin-inline:.6em;font-style:normal}.emoji{-webkit-user-select:none;user-select:none;-webkit-user-drag:none;width:auto;display:inline-block}.emoji-hi{vertical-align:-.14em;transform-origin:70% 82%;height:1.02em;margin-left:.14em;animation:3.2s ease-in-out 1.2s infinite wave}@keyframes wave{0%,52%,to{transform:rotate(0)}8%{transform:rotate(16deg)}16%{transform:rotate(-9deg)}24%{transform:rotate(16deg)}32%{transform:rotate(-6deg)}40%{transform:rotate(12deg)}46%{transform:rotate(0)}}.emoji-cloud{vertical-align:-.1em;height:1.5em;margin-left:.26em;animation:5s ease-in-out infinite float}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-7px)}}.page{flex-direction:column;gap:34px;max-width:44rem;margin-inline:auto;padding-top:8px;display:flex}.pagehead{align-items:center;gap:18px;display:flex}.pagehead-tile{cursor:default;flex:none;width:64px;height:64px}.pagehead-tile:hover{transform:none}.pagehead-emoji{flex:none;width:auto;height:84px;animation:3s ease-in-out infinite launch}@keyframes launch{0%,to{transform:translate(0)rotate(0)}50%{transform:translate(5px,-8px)rotate(2deg)}}.kicker{font:400 .75rem/1.4 var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin:0}.pagehead-title{letter-spacing:-.035em;margin:4px 0 0;font-size:clamp(2.1rem,5.4vw,3.25rem);font-weight:700;line-height:1.05}.lead{letter-spacing:-.012em;color:var(--ink-2);text-wrap:pretty;margin:0;font-size:clamp(1.25rem,2.7vw,1.625rem);line-height:1.45}.lead--sm{letter-spacing:0;color:var(--body);font-size:1.0625rem;line-height:1.6}.body{color:var(--body);text-wrap:pretty;margin:0;line-height:1.65}.stats{border-block:1px solid var(--line);flex-wrap:wrap;gap:20px 56px;margin:0;padding-block:22px;display:flex}.stats dt{letter-spacing:-.045em;font-variant-numeric:tabular-nums;font-size:clamp(3rem,9vw,4.5rem);font-weight:700;line-height:1}.stats dd{font:400 .8125rem/1.4 var(--font-mono);color:var(--muted);margin:6px 0 0}.block h2{font:500 .75rem/1.4 var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin:0 0 14px}.groups{grid-template-columns:repeat(auto-fit,minmax(min(100%,200px),1fr));gap:24px;display:grid}.group h3{margin:0 0 10px;font-size:1rem;font-weight:600}.chips{flex-wrap:wrap;gap:8px;margin:0;padding:0;list-style:none;display:flex}.chips li{border:1px solid var(--line);background:#fafbfc;border-radius:999px;padding:7px 13px;font-size:.875rem;line-height:1.2}.timeline{border-left:1px solid var(--line);flex-direction:column;gap:34px;margin:0;padding:0 0 0 26px;list-style:none;display:flex}.tl-item{position:relative}.tl-item:before{content:"";background:var(--fg);border-radius:50%;width:7px;height:7px;position:absolute;top:11px;left:-30px;box-shadow:0 0 0 4px #fff}.tl-head{flex-wrap:wrap;align-items:baseline;gap:6px 14px;display:flex}.tl-head h2{letter-spacing:-.02em;margin:0;font-size:1.5rem;font-weight:600;line-height:1.25}.badge{font:500 .75rem/1 var(--font-mono);background:var(--soft);color:var(--ink-2);border-radius:999px;padding:5px 10px}.tl-org{font:400 .8125rem/1.4 var(--font-mono);color:var(--muted);margin:4px 0 10px}.project{border:1px solid var(--line);border-radius:22px;flex-direction:column;gap:18px;padding:clamp(20px,4vw,34px);display:flex;box-shadow:0 18px 40px -28px #0f111759}.project-top{flex-wrap:wrap;align-items:center;gap:8px 14px;display:flex}.project-top h2{letter-spacing:-.03em;margin:0;font-size:clamp(1.5rem,3.6vw,2rem);font-weight:700;line-height:1.15}.details{gap:10px;margin:0;padding:0;list-style:none;display:grid}.details li{color:var(--ink-2);padding-left:22px;line-height:1.55;position:relative}.details li:before{content:"";background:var(--fg);border-radius:50%;width:6px;height:6px;position:absolute;top:.62em;left:2px}.stage{height:var(--stage-h);z-index:30;pointer-events:none;animation:.9s cubic-bezier(.2,.8,.2,1) both stage-in;position:fixed;bottom:0;left:0;right:0}@keyframes stage-in{0%{opacity:0;transform:translateY(38%)}to{opacity:1;transform:none}}.stage-fade{background:linear-gradient(#fff0,#fff 56px);height:calc(100% + 56px);position:absolute;bottom:0;left:0;right:0}.stage-grid{grid-template-columns:1fr var(--mw) 1fr;align-items:end;height:100%;display:grid;position:relative}.mascot{width:var(--mw);height:var(--mh);pointer-events:auto;cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent;-webkit-user-select:none;user-select:none;position:relative;top:10px}.mascot:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:16px}.mascot-rig{transform-origin:50% 100%;will-change:transform;position:absolute;inset:0}.mascot-rig img{opacity:0;pointer-events:none;-webkit-user-drag:none;width:100%;height:100%;position:absolute;inset:0}.mascot-rig img.on{opacity:1}.dock{gap:var(--tgap);padding-bottom:calc(14px + env(safe-area-inset-bottom,0px));pointer-events:auto;flex-direction:column;display:flex}.dock--left{justify-self:end;align-items:flex-end;padding-right:clamp(8px,1.6vw,22px)}.dock--right{justify-self:start;align-items:flex-start;padding-left:clamp(8px,1.6vw,22px)}.tile{width:var(--tile);height:var(--tile);cursor:pointer;color:inherit;border:0;border-radius:24%;flex:none;place-items:center;padding:0;transition:transform .28s cubic-bezier(.3,1.6,.5,1),box-shadow .2s;display:grid;position:relative;box-shadow:0 0 0 1px #0f111712,0 1px 1px #0f11170f,0 10px 18px -10px #0f111773}.tile:hover{transform:translateY(-5px)scale(1.08);box-shadow:0 0 0 1px #0f111714,0 2px 3px #0f111714,0 16px 24px -12px #0f111780}.tile:active{transform:scale(.94)}.tile:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.tile--nav{background:linear-gradient(#fff,#f0f1f5)}.tile--nav[aria-current=page]{box-shadow:0 0 0 2px #fff, 0 0 0 4px var(--fg), 0 10px 18px -10px #0f111773}.glyph{width:52%;height:52%;display:block}.glyph-img{object-fit:contain;-webkit-user-select:none;user-select:none;-webkit-user-drag:none;width:66%;height:66%}@media (hover:hover) and (min-width:721px){.tile[data-label]:before{content:attr(data-label);white-space:nowrap;pointer-events:none;opacity:0;background:var(--fg);color:#fff;font:500 .8125rem/1 var(--font-sans);border-radius:8px;padding:8px 11px;transition:opacity .15s,transform .2s;position:absolute;top:50%}.tile[data-side=left]:before{right:calc(100% + 12px);transform:translateY(-50%)translate(6px)}.tile[data-side=right]:before{left:calc(100% + 12px);transform:translateY(-50%)translate(-6px)}.tile[data-label]:hover:before,.tile[data-label]:focus-visible:before{opacity:1;transform:translateY(-50%)translate(0)}}.toast{background:var(--fg);color:#fff;width:max-content;max-width:calc(100vw - 32px);font:500 .875rem/1.35 var(--font-sans);text-align:center;pointer-events:none;border-radius:12px;padding:11px 16px;animation:.25s both toast;position:absolute;bottom:calc(100% + 14px);left:50%;transform:translate(-50%)}@keyframes toast{0%{opacity:0;transform:translate(-50%)translateY(6px)}to{opacity:1;transform:translate(-50%)}}.intro{z-index:100;padding:24px max(20px, env(safe-area-inset-left,0px));background:#fff;place-items:center;transition:transform .8s cubic-bezier(.7,0,.2,1);display:grid;position:fixed;inset:0}.intro[data-leaving=true]{transform:translateY(-100%)}.intro-inner{text-align:center;flex-direction:column;align-items:center;gap:44px;max-width:60rem;display:flex}.quote{margin:0}.quote-line{color:var(--muted);letter-spacing:-.035em;text-wrap:balance;animation:.9s cubic-bezier(.2,.7,.2,1) both rise;animation-delay:calc(.25s + var(--i) * .55s);margin:0;font-size:clamp(1.9rem,6.2vw,4.25rem);font-weight:600;line-height:1.12}.quote-line:last-of-type{color:var(--fg);font-weight:700}.quote-by{font:400 .9375rem/1.4 var(--font-mono);color:var(--body);letter-spacing:.02em;margin-top:26px;animation:.9s cubic-bezier(.2,.7,.2,1) 2.1s both rise}.quote-by:before{content:"— ";color:var(--muted)}.enter{cursor:pointer;background:var(--fg);color:#fff;letter-spacing:.01em;border:0;border-radius:999px;align-items:center;gap:10px;padding:15px 28px;font-size:1rem;font-weight:500;transition:transform .2s,box-shadow .2s;animation:.9s cubic-bezier(.2,.7,.2,1) 2.7s both rise;display:inline-flex}.enter svg{transition:transform .2s}.enter:hover{transform:translateY(-2px);box-shadow:0 14px 24px -14px #0b0c0f99}.enter:hover svg{transform:translate(4px)}.enter:focus-visible{outline:2px solid var(--accent);outline-offset:3px}@media (max-width:420px){.wordmark small{display:none}.pagehead-emoji{height:68px}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}}
