.hub{--ink:#23251d;--muted:#6b6d63;--win:#fdfcf7;--line:#d9d6c8;--soft:#f1efe6;--bar:#f4f3ecd1;--acc:#f2a630;--acc-edge:#b97812;--blue:#3d6bff;--green:#25a26a;--orange:#f06a35;--violet:#8a5cf5;--sky1:#a9d6ee;--sky2:#eef3dc;--sun:#ffd25e;--g1:#a7cf8d;--g2:#86bd74;--g3:#6aa85d;color:var(--ink);-webkit-font-smoothing:antialiased;font:15px/1.5 system-ui,-apple-system,Segoe UI,sans-serif;position:fixed;inset:0;overflow:hidden}@media (prefers-color-scheme:dark){.hub{--ink:#eeefe9;--muted:#a3a59b;--win:#1f201b;--line:#3b3c34;--soft:#2a2b25;--bar:#1f201bcc}}.hub *,.hub :before,.hub :after{box-sizing:border-box}.hub button{font:inherit;color:inherit}.hub a{color:inherit}.hub[data-scene=sunset]{--sky1:#f3a07a;--sky2:#ffe1b0;--sun:#fff0c4;--g1:#c99a6b;--g2:#a7795a;--g3:#7f5a47}.hub[data-scene=night]{--sky1:#141b3a;--sky2:#3b3f6b;--sun:#f3f0d8;--g1:#2e3d4a;--g2:#24323d;--g3:#1a252e}.hub .wall{z-index:0;background:linear-gradient(var(--sky1), var(--sky2) 70%);transition:background .6s;position:absolute;inset:0;overflow:hidden}.hub .wall>*{will-change:transform;transition:background .6s;position:absolute}.hub .wall .sun{background:var(--sun);width:150px;height:150px;box-shadow:0 0 80px 10px color-mix(in srgb, var(--sun) 60%, transparent);border-radius:50%;top:12%;right:16%}.hub .wall .h1{background:var(--g1);border-radius:50% 50% 0 0;height:52%;bottom:-14%;left:-25%;right:35%}.hub .wall .h2{background:var(--g2);border-radius:50% 50% 0 0;height:46%;bottom:-18%;left:30%;right:-25%}.hub .wall .h3{background:var(--g3);border-radius:50% 50% 0 0;height:24%;bottom:-10%;left:-10%;right:-10%}.hub .wall .peek{pointer-events:none;width:44px;height:40px;position:absolute;bottom:100%;overflow:hidden}.hub .wall .peek.back{bottom:calc(100% - 1px);left:calc(50% - 22px)}.hub .wall .peek.front{width:52px;height:48px;bottom:calc(100% - 4px);left:calc(37.5% - 22px)}.hub .wall .peek .bot{width:100%;height:auto;image-rendering:pixelated;position:absolute;bottom:0;left:0;translate:0 105%}.hub .wall .peek.back .bot{filter:brightness(.82);animation:22s cubic-bezier(.3,1.4,.5,1) infinite hub-peek-back}.hub .wall .peek.front .bot{animation:22s cubic-bezier(.3,1.4,.5,1) infinite hub-peek-front}.hub .wall .peek .eyes{transform-box:fill-box;transform-origin:50%;animation:22s step-end infinite hub-blink}.hub .wall .peek.front .arm-r{transform-box:fill-box;transform-origin:0 100%;animation:22s ease-in-out infinite hub-wave}@keyframes hub-peek-back{0%,6%{translate:0 105%}10%,26%{translate:0 18%}30%,to{translate:0 105%}}@keyframes hub-peek-front{0%,46%{translate:0 105%}50%,70%{translate:0 12%}74%,to{translate:0 105%}}@keyframes hub-blink{0%,17%{transform:none}17.4%{transform:scaleY(.15)}17.8%,60%{transform:none}60.4%{transform:scaleY(.15)}60.8%,to{transform:none}}@keyframes hub-wave{0%,54%{transform:none}56%,60%{transform:rotate(-35deg)translateY(-1px)}58%,62%{transform:rotate(-10deg)}64%,to{transform:none}}@media (prefers-reduced-motion:reduce){.hub .wall .peek{display:none}}.hub .bar{z-index:1000;background:var(--bar);-webkit-backdrop-filter:blur(18px)saturate(160%);backdrop-filter:blur(18px)saturate(160%);border-bottom:1px solid var(--line);align-items:center;gap:4px;height:44px;padding:0 10px;font-size:14px;display:flex;position:absolute;inset:0 0 auto}.hub .bar .lang a,.hub .bar .lang span{color:var(--muted);border-radius:7px;padding:6px 10px;font-weight:600;text-decoration:none}.hub .bar .lang a:hover{background:color-mix(in srgb, var(--ink) 7%, transparent);color:var(--ink)}.hub .bar .sp{flex:1}.hub .bar .lang{display:flex}.hub .bar .lang [aria-current]{color:var(--ink)}.hub .bar .clock{font-variant-numeric:tabular-nums;color:var(--muted);min-width:7ch;padding:0 6px;font-size:13px}.hub :focus-visible{outline:3px solid var(--blue);outline-offset:2px}.hub .btn{cursor:pointer;background:var(--acc);color:#1d1a10;border:1.5px solid var(--acc-edge);white-space:nowrap;border-bottom-width:4px;border-radius:8px;align-items:center;gap:8px;padding:7px 14px;font-size:14px;font-weight:700;text-decoration:none;transition:translate 80ms,border-bottom-width 80ms;display:inline-flex}.hub .btn:active{border-bottom-width:2px;translate:0 2px}.hub .btn.ghost{background:var(--win);color:var(--ink);border-color:var(--line);border-bottom-color:color-mix(in srgb, var(--ink) 30%, var(--line))}.hub .btn.sm{padding:4px 10px;font-size:13px}.hub .icons{z-index:5;flex-direction:column;gap:6px;display:flex;position:absolute;top:58px}.hub .icons.left{left:10px}.hub .icons.right{right:10px}.hub .ic{cursor:pointer;-webkit-tap-highlight-color:transparent;background:0 0;border:0;border-radius:10px;outline:none;flex-direction:column;flex:none;justify-content:flex-start;align-items:center;gap:4px;width:120px;height:84px;padding:6px 2px 4px;text-decoration:none;display:flex}.hub .ic .g{background:var(--c,#fff);color:#fff;will-change:transform;border-radius:12px;place-items:center;width:46px;height:46px;display:grid;box-shadow:inset 0 1px #ffffff80,0 6px 14px -6px #00000073}.hub .ic .g svg{width:24px;height:24px}.hub .ic .lbl{color:#fff;text-shadow:0 1px 2px #0000008c;text-align:center;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);overflow-wrap:anywhere;background:#14161073;border-radius:5px;max-width:100%;padding:1px 6px;font-size:12px;font-weight:600;line-height:1.2}.hub .ic:focus-visible .lbl{background:var(--blue);text-shadow:none}.hub .ic .dot{opacity:0;background:#fff;border-radius:50%;width:5px;height:5px;transition:opacity .2s;box-shadow:0 0 3px #00000080}.hub .ic.open .dot{opacity:1}.hub .ctx{z-index:3000;border:1px solid var(--line);background:color-mix(in srgb, var(--win) 88%, transparent);-webkit-backdrop-filter:blur(20px)saturate(160%);backdrop-filter:blur(20px)saturate(160%);border-radius:9px;flex-direction:column;min-width:180px;padding:5px;animation:.12s ease-out hub-ctx;display:flex;position:fixed;box-shadow:0 14px 34px -10px #00000073}.hub .ctx [role=menuitem]{all:unset;color:var(--ink);cursor:default;border-radius:5px;padding:6px 10px;font-size:13px}.hub .ctx [role=menuitem]:hover,.hub .ctx [role=menuitem]:focus-visible{background:var(--blue);color:#fff;outline:none}@keyframes hub-ctx{0%{opacity:0;scale:.97}}@media (prefers-reduced-motion:reduce){.hub .ctx{animation:none}}.hub .t-github .g,.hub .ic.gh .g{box-shadow:inset 0 0 0 1.5px #ffffff47,0 6px 14px -6px #00000080}.hub .win{z-index:10;background:var(--win);border:1px solid var(--line);will-change:transform, opacity;border-radius:12px;flex-direction:column;max-width:calc(100vw - 16px);max-height:calc(100dvh - 120px);display:flex;position:absolute;top:0;left:0;overflow:hidden;box-shadow:inset 0 1px #fff9,0 30px 60px -24px #14140a73,0 4px 12px -6px #14140a40}.hub .win[hidden]{display:none}.hub .win.active{box-shadow:0 30px 70px -20px #14140a8c,0 4px 12px -6px #14140a4d}.hub:not(.ready) #welcome{width:min(680px,100vw - 32px);top:50%;left:50%;translate:-50% -50%}.hub .tb{border-bottom:1px solid var(--line);background:var(--soft);cursor:grab;-webkit-user-select:none;user-select:none;touch-action:none;flex:none;align-items:center;gap:8px;height:38px;padding:0 6px 0 14px;display:flex}.hub .tb:active{cursor:grabbing}.hub .tb .t{color:var(--muted);letter-spacing:.02em;white-space:nowrap;text-overflow:ellipsis;flex:1;font:600 12px/1 ui-monospace,Menlo,monospace;overflow:hidden}.hub .win.active .tb .t{color:var(--ink)}.hub .tb button,.hub .tb .tb-pop{cursor:pointer;width:28px;height:28px;color:var(--muted);background:0 0;border:0;border-radius:7px;place-items:center;display:grid}.hub .tb button:not(:disabled):hover,.hub .tb .tb-pop:hover{background:color-mix(in srgb, var(--ink) 8%, transparent);color:var(--ink)}.hub .tb button svg,.hub .tb .tb-pop svg{width:14px;height:14px}.hub .tb button:disabled{opacity:.3;cursor:default}.hub .win.max{width:auto;max-width:none;max-height:none;inset:54px 10px 10px}.hub .win.max .tb{cursor:default;padding-left:6px}.hub .win.max .t{text-align:center}.hub .win.page .page-body{color:#222;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;-webkit-font-smoothing:auto;background:#fff;flex:1;min-height:0;font:16px/1.5 system-ui,-apple-system,Segoe UI,Roboto,sans-serif;overflow:auto}.hub .wb{overscroll-behavior:contain;overflow:auto}.hub .wf{border-top:1px solid var(--line);background:var(--soft);flex:none;justify-content:flex-end;align-items:center;gap:8px;padding:10px 14px;display:flex}.hub .wf .note{color:var(--muted);margin-right:auto;font-size:12px}.hub .toast{z-index:2000;background:var(--ink);color:var(--win);pointer-events:none;opacity:0;white-space:nowrap;border-radius:999px;padding:9px 16px;font-size:13px;font-weight:600;position:absolute;bottom:22px;left:50%;translate:-50%;box-shadow:0 12px 30px -10px #00000080}.hub .scrim{z-index:15;opacity:0;pointer-events:none;background:#00000059;position:absolute;inset:0}.hub .hero{padding:clamp(22px,4vw,36px) clamp(20px,4vw,40px) 4px}.hub .hero .hello{letter-spacing:-.03em;text-wrap:balance;margin:0;font-size:clamp(1.5rem,3.2vw,2.1rem);font-weight:800;line-height:1.15}.hub .hero .speech{max-width:36rem;color:var(--muted);text-wrap:pretty;margin:12px 0 0;font-size:.98rem;line-height:1.55}.hub .hero .find{letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin:22px 0 0;font:700 11px/1 ui-monospace,Menlo,monospace}.hub .finds{gap:2px;margin:0;padding:8px clamp(12px,3vw,30px) 24px;list-style:none;display:grid}.hub .finds .tile{width:100%;font:inherit;color:inherit}@media (min-width:701px){.hub .hero .find,.hub .finds{display:none}.hub #welcome .hero{padding-bottom:clamp(24px,4vw,38px)}.hub .finds .tile{background:0 0;border:0;border-radius:8px;flex-direction:row;align-items:baseline;gap:12px;padding:8px 10px}.hub .finds .tile:hover,.hub .finds .tile[data-expanded=true]{background:var(--soft)}.hub .finds .tile .g{display:none}.hub .finds .tile .txt{flex:1;min-width:0}.hub .finds .tile b{margin-right:6px;font-size:1rem}.hub .finds .tile .cnt{margin:0}}.hub .tile{--c:var(--orange);text-align:left;cursor:pointer;background:var(--soft);border:1.5px solid var(--line);will-change:transform;border-bottom-width:4px;border-radius:12px;flex-direction:column;gap:4px;padding:14px 14px 12px;text-decoration:none;transition:border-color .2s;display:flex}.hub .tile:hover,.hub .tile[data-expanded=true]{border-color:var(--c)}.hub .tile:focus-visible{outline:3px solid var(--c);outline-offset:2px}.hub .tile .g{background:var(--c);color:#fff;border-radius:10px;flex:none;place-items:center;width:36px;height:36px;margin-bottom:6px;display:grid}.hub .tile .g svg{width:20px;height:20px}.hub .tile b{letter-spacing:-.02em;font-size:1.1rem}.hub .tile small{color:var(--muted);font-size:.84rem;line-height:1.35}.hub .tile .cnt{color:color-mix(in srgb, var(--c) 60%, var(--ink));white-space:nowrap;margin-top:8px;font:600 12px/1 ui-monospace,Menlo,monospace}.hub .t-blog{--c:var(--orange)}.hub .t-courses{--c:var(--blue)}.hub .t-cv{--c:var(--green)}.hub .t-news{--c:#8b8d84}.hub .t-projects{--c:#4a9fe8}.hub .t-demo{--c:#f2a630}.hub .t-github{--c:#24292f}.hub .empty{color:var(--muted);text-align:center;padding:28px 18px}.hub .list{margin:0;padding:6px 8px 10px;list-style:none}.hub .list li a{border-radius:10px;grid-template-columns:auto 1fr;gap:2px 12px;padding:12px 10px;text-decoration:none;display:grid}.hub .list li a:hover,.hub .list li button:hover{background:var(--soft)}.hub .list li button{all:unset;box-sizing:border-box;cursor:pointer;border-radius:10px;grid-template-columns:auto 1fr;gap:2px 12px;width:100%;padding:12px 10px;display:grid}.hub .list li button:focus-visible{outline:3px solid var(--blue);outline-offset:2px}.hub .list.news p{-webkit-line-clamp:unset;display:block}.hub .list .logo.news-dot{color:#fff;background:#f2a630;place-items:center;display:grid}.hub .list .logo.news-dot svg{width:22px;height:22px}.hub .list .tag{color:#fff;background:var(--c,var(--orange));text-transform:uppercase;border-radius:10px;grid-row:span 3;place-items:center;width:42px;height:42px;font:700 10px/1 ui-monospace,Menlo,monospace;display:grid;overflow:hidden}.hub .list .logo.gh{color:#fff;background:#24292f;place-items:center;display:grid}.hub .list .logo.gh svg{width:24px;height:24px}.hub .list .logo{object-fit:cover;width:42px;height:42px;box-shadow:0 0 0 1px var(--line);background:#fff;border-radius:10px;grid-row:span 3}.hub .list b{letter-spacing:-.01em;overflow-wrap:anywhere;font-size:.98rem;line-height:1.3}.hub .list p{color:var(--muted);-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:.86rem;line-height:1.4;display:-webkit-box;overflow:hidden}.hub .list .meta{color:var(--muted);font-family:ui-monospace,Menlo,monospace;font-size:.75rem}.hub .packs{gap:10px;padding:14px 16px 16px;display:grid}.hub .pack{--c:var(--blue);border:1.5px solid var(--line);border-left:5px solid var(--c);border-radius:10px;align-items:center;gap:12px;padding:12px 14px;display:flex}.hub .pack>div{flex:1;min-width:0}.hub .pack b{letter-spacing:-.01em;overflow-wrap:anywhere;display:block}.hub .pack p{color:var(--muted);-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:.85rem;line-height:1.4;display:-webkit-box;overflow:hidden}.hub .pack .meta{color:var(--c);font:600 11px/1.6 ui-monospace,Menlo,monospace}.hub .cv-head{align-items:center;gap:14px;padding:18px 18px 8px;display:flex}.hub .avatar{color:#fff;background:linear-gradient(140deg, var(--green), var(--blue));border-radius:50%;flex:none;place-items:center;width:58px;height:58px;font-weight:800;display:grid}.hub .cv-head b{letter-spacing:-.02em;font-size:1.15rem;display:block}.hub .cv-head span{color:var(--muted);font-size:.9rem}.hub .cv-sec{padding:8px 18px}.hub .cv-sec h3{letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin:8px 0;font:700 11px/1 ui-monospace,Menlo,monospace}.hub .row{border-bottom:1px solid var(--line);justify-content:space-between;gap:12px;padding:7px 0;font-size:.92rem;display:flex}.hub .row span{color:var(--muted);white-space:nowrap;font-family:ui-monospace,Menlo,monospace;font-size:.78rem}.hub .chips{flex-wrap:wrap;gap:6px;padding-bottom:14px;display:flex}.hub .chips span{background:var(--soft);border:1px solid var(--line);border-radius:999px;padding:3px 9px;font-size:.8rem}@media (max-width:700px){.hub .tb button{width:44px;height:44px;margin-right:-8px}.hub .btn.sm,.hub .wf .btn{min-height:44px}.hub .bar .clock{font-size:12px}.hub .icons{display:none}.hub:not(.ready) #welcome,.hub .win.static{width:auto;max-height:calc(100dvh - 64px);margin:54px 10px 10px;position:relative;top:auto;left:auto;translate:none;opacity:1!important;transform:none!important}.hub .win.static .tb{cursor:default}.hub .win.static .tb button{display:none}.hub .wall .sun{width:90px;height:90px}.hub .finds{gap:8px;padding-top:4px}.hub .finds .tile .txt small{display:block}.hub .tile{flex-direction:row;align-items:center;gap:12px}.hub .tile .g{margin:0}.hub .tile .txt{flex:1;min-width:0}.hub .tile .cnt{margin:0}.hub .win.max{border:0;border-radius:0;inset:44px 0 0}.hub .win.sheet{z-index:30;border-bottom:0;border-radius:18px 18px 0 0;width:auto;max-width:none;max-height:88dvh;left:0;right:0}.hub .win.sheet .tb{height:46px;padding-top:8px;position:relative}.hub .win.sheet .tb:before{content:"";background:color-mix(in srgb, var(--ink) 25%, transparent);border-radius:9px;width:38px;height:5px;margin-left:-19px;position:absolute;top:6px;left:50%}.hub .win.sheet .wf{padding-bottom:max(10px, env(safe-area-inset-bottom))}}@media (prefers-reduced-transparency:reduce){.hub .bar{background:var(--win);-webkit-backdrop-filter:none;backdrop-filter:none}}@media (prefers-reduced-motion:reduce){.hub .wall,.hub .wall>*,.hub .tile,.hub .btn{transition:none}.hub .win,.hub .scrim{transition:opacity .15s}}@media print{.hub{position:static}.hub .wall,.hub .bar,.hub .icons,.hub>main,.hub #w-projects,.hub .toast,.hub .scrim,.hub .win.page .tb{display:none!important}.hub .win.page{box-shadow:none;border:0;max-height:none;position:static;opacity:1!important;transform:none!important}.hub .win.page .page-body{overflow:visible}}
