.hub-page{--saffron:#f2a12c;--saffron-600:#e08d17;--peach:#f4d2be;--emerald:#35a56f;--accent:var(--saffron);--on-accent:#3a2a0e;--bg-dark:#12181f;--bg-dark-2:#141a21;--panel:#1b232e;--line:#ffffff14;--line-soft:#ffffff12;--txt-1:#f6f2eb;--txt-2:#9aa8b8;--txt-3:#5e6e80;--font-display:-apple-system, BlinkMacSystemFont, "SF Pro Display", "Inter", "Helvetica Neue", sans-serif;--font-ui:"Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", "Helvetica Neue", sans-serif;--micro:600 11px/14px var(--font-ui);--button:600 15px/20px var(--font-ui);--caption:400 13px/18px var(--font-ui);--tracking-eyebrow:.14em;--r-pill:999px;--shadow-sm:0 1px 2px #0000004d, 0 1px 3px #0000003d;--ease-out:cubic-bezier(.22, 1, .36, 1);--t-fast:.14s;--t-base:.24s;background:var(--bg-dark-2);min-height:100svh;color:var(--txt-1);font:400 16px/24px var(--font-ui);-webkit-font-smoothing:antialiased;flex-direction:column;display:flex}.hub-page a{color:inherit;text-decoration:none}.hub-page .mono{font-family:ui-monospace,SF Mono,SFMono-Regular,Menlo,Consolas,monospace}.hub-page .eyebrow{font:var(--micro);text-transform:uppercase;letter-spacing:var(--tracking-eyebrow);color:var(--accent)}.hub-page .btn{font:var(--button);cursor:pointer;border-radius:var(--r-pill);transition:transform var(--t-fast) var(--ease-out), background var(--t-fast) var(--ease-out), filter var(--t-fast) var(--ease-out);border:0;align-items:center;gap:9px;padding:13px 24px;display:inline-flex}.hub-page .btn svg{flex:none}.hub-page .btn--accent{background:var(--accent);color:var(--on-accent);box-shadow:var(--shadow-sm)}.hub-page .btn--accent:hover{filter:brightness(.92)}.hub-page .btn--ghost{color:var(--txt-1);background:0 0;border:1px solid #ffffff38}.hub-page .btn--ghost:hover{background:#ffffff12}.hub-page .btn:active{transform:scale(.97)}.hub-page .code{white-space:pre}.hub-page .code .kw{color:var(--accent);font-weight:600}.hub-page .code .ty{color:#6fd3a0}.hub-page .code .cm{color:#6b7a8d;font-style:italic}.hub-page .code .fn{color:#f6f2eb;font-weight:600}.hub-page .code .st{color:var(--peach)}.hub-page .caret{background:var(--accent);vertical-align:-3px;width:9px;height:19px;margin-left:2px;display:inline-block}.hub-page .tl{border-radius:50%;width:11px;height:11px}.hub-page .tl--r{background:#e0584e}.hub-page .tl--y{background:#e0a33e}.hub-page .tl--g{background:#4fb358}@media (prefers-reduced-motion:no-preference){.hub-page.motion .caret{animation:1.1s step-end infinite hub-caretblink}@keyframes hub-caretblink{50%{opacity:0}}.hub-page.motion .rise{animation:hub-rise .7s var(--ease-out) backwards}.hub-page.motion .rise-2{animation:hub-rise .7s var(--ease-out) .12s backwards}.hub-page.motion .rise-3{animation:hub-rise .7s var(--ease-out) .24s backwards}@keyframes hub-rise{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}}.hub-top{text-align:center;padding:56px 24px 8px}.hub-headline{font:600 clamp(30px, 4vw, 46px) / 1.18 var(--font-display);letter-spacing:-.015em;color:var(--txt-1);margin:12px 0 0}.hub-halves{flex:1;display:flex;position:relative}.hub-divider{background:#ffffff17;width:1px;position:absolute;top:28px;bottom:28px;left:50%}.hub-half{flex-direction:column;justify-content:center;align-items:center;gap:28px;width:50%;padding:40px clamp(24px,6vw,88px) 48px;display:flex}.hub-artifact{transition:transform var(--t-base) var(--ease-out), box-shadow var(--t-base) var(--ease-out)}a.hub-door{flex-direction:column;align-items:center;gap:28px;display:flex}a.hub-door:hover .hub-artifact{transform:rotate(0)translateY(-6px);box-shadow:0 30px 64px #0000008c}.hub-print{background:#fff;border-radius:4px;margin:0;padding:12px 12px 42px;position:relative;transform:rotate(-2.2deg);box-shadow:0 22px 50px #00000073}.hub-print .hub-slot{background:radial-gradient(120% 90% at 70% 20%,#f2a12c38,#0000 55%),#14181d linear-gradient(160deg,#2a2f37 0%,#14181d 60%,#0c0f13 100%);border-radius:2px;width:min(400px,64vw);height:min(264px,42vw);display:block;position:relative;overflow:hidden}.hub-print .hub-slot-img{object-fit:cover}.hub-print figcaption{font:500 12px/1 var(--font-ui);color:#8a8378;letter-spacing:.04em;white-space:nowrap;position:absolute;bottom:14px;left:16px;right:16px;overflow:hidden}.hub-editor{background:var(--panel);border:1px solid var(--line);border-radius:12px;width:min(440px,80vw);overflow:hidden;transform:rotate(1.6deg);box-shadow:0 22px 50px #00000073}.hub-editor-bar{border-bottom:1px solid var(--line-soft);align-items:center;gap:7px;padding:11px 14px;display:flex}.hub-editor-name{font:500 12px/1 var(--font-ui);color:#6b7a8d;margin-left:8px}.hub-editor .code{color:#c7d1dc;padding:20px 22px;font-size:14.5px;line-height:25px;display:block;overflow-x:auto}.hub-label{text-align:center;flex-direction:column;align-items:center;gap:12px;display:flex}.hub-label h2{font:600 26px/32px var(--font-display);color:var(--txt-1);margin:0}.hub-label p{font:400 15px/23px var(--font-ui);color:var(--txt-2);max-width:360px;margin:0}.hub-hint{text-align:center;font:var(--caption);color:#6b7a8d;padding:12px 24px 28px}@media (max-width:920px){.hub-halves{flex-direction:column}.hub-half{width:100%;padding-top:28px;padding-bottom:36px}.hub-divider{width:auto;height:1px;inset:50% 10% auto}.hub-top{padding-top:40px}}.hub-coming{text-align:center;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:20px;padding:64px 24px;display:flex}.hub-coming .big{font:600 clamp(34px, 5vw, 60px) / 1.1 var(--font-display);letter-spacing:-.02em;color:var(--txt-1);max-width:720px;margin:4px 0 0}.hub-coming .big em{color:var(--accent);font-style:normal}.hub-coming p{font:400 16px/26px var(--font-ui);color:var(--txt-2);max-width:460px;margin:0}.hub-coming .actions{flex-wrap:wrap;justify-content:center;gap:14px;margin-top:10px;display:flex}.dev-page{background:var(--bg-dark);display:block}.dev-page .nav{z-index:50;-webkit-backdrop-filter:blur(18px)saturate(140%);backdrop-filter:blur(18px)saturate(140%);border-bottom:1px solid var(--line-soft);background:#12181fc7;justify-content:space-between;align-items:center;gap:16px;padding:18px clamp(24px,6.5vw,96px);display:flex;position:sticky;top:0}.dev-page .nav-prompt{color:var(--txt-2);white-space:nowrap;font-size:15px}.dev-page .nav-prompt b{color:var(--txt-1);font-weight:600}.dev-page .nav-links{color:var(--txt-2);align-items:center;gap:clamp(14px,2.4vw,26px);font-size:13.5px;display:flex}.dev-page .nav-links a{transition:color var(--t-fast) var(--ease-out)}.dev-page .nav-links a:hover{color:var(--accent)}.dev-page .nav-links .btn{padding:9px 18px}.dev-page section{scroll-margin-top:86px}.dev-page .section{padding:72px clamp(24px,6.5vw,96px)}.dev-page .section-h2{font:600 clamp(30px, 3vw, 40px) / 1.2 var(--font-display);letter-spacing:-.015em;color:var(--txt-1);margin:10px 0 14px}.dev-page .section-lead{font:400 17px/26px var(--font-ui);color:var(--txt-2);max-width:560px;margin:0}.dev-page .mark{color:var(--txt-3);margin:0 0 26px;font-size:14px}.dev-page .mark b{color:var(--accent);font-weight:600}.dev-page .hero{padding:88px clamp(24px,6.5vw,96px) 72px;position:relative;overflow:hidden}.dev-page .hero-glow{background:radial-gradient(closest-side, color-mix(in oklab, var(--accent) 14%, transparent), transparent);pointer-events:none;width:640px;height:520px;position:absolute;top:-180px;right:-120px}.dev-page .hero-whoami{color:var(--txt-2);margin:0 0 30px;font-size:15px;line-height:26px;position:relative}.dev-page .hero-whoami b{color:var(--emerald);font-weight:600}.dev-page .hero-h1{font:600 clamp(44px, 5.6vw, 76px) / 1.08 var(--font-display);letter-spacing:-.025em;color:var(--txt-1);text-wrap:balance;max-width:900px;margin:0 0 22px;position:relative}.dev-page .hero-h1 em{color:var(--accent);font-style:normal}.dev-page .hero-sub{font:400 18px/28px var(--font-ui);color:var(--txt-2);max-width:560px;margin:0 0 30px;position:relative}.dev-page .cta-row{flex-wrap:wrap;gap:14px;display:flex;position:relative}.dev-page .apps-grid{grid-template-columns:repeat(auto-fit,minmax(380px,1fr));gap:28px;margin-top:40px;display:grid}.dev-page .wincard{background:var(--panel);border:1px solid var(--line);transition:transform var(--t-base) var(--ease-out), border-color var(--t-base) var(--ease-out);border-radius:14px;overflow:hidden;box-shadow:0 18px 44px #0006}.dev-page .wincard:hover{border-color:#ffffff29;transform:translateY(-3px)}.dev-page .wincard-bar{border-bottom:1px solid var(--line-soft);align-items:center;gap:7px;padding:12px 16px;display:flex}.dev-page .wincard-name{font:500 12px/1 var(--font-ui);color:#6b7a8d;margin-left:8px}.dev-page .wincard-url{font:500 11.5px/1 var(--font-ui);color:#6b7a8d;border:1px solid var(--line-soft);border-radius:var(--r-pill);text-overflow:ellipsis;white-space:nowrap;background:#ffffff0d;max-width:70%;margin-left:8px;padding:5px 12px;overflow:hidden}.dev-page .wincard-body{align-items:flex-start;gap:20px;padding:26px;display:flex}.dev-page .wincard-body h3{font:600 21px/26px var(--font-display);color:var(--txt-1);margin:0 0 6px}.dev-page .wincard-body p{font:400 14.5px/22px var(--font-ui);color:var(--txt-2);margin:0 0 14px}.dev-page .wincard-link{color:var(--accent);font-size:13px}.dev-page .wincard-link:hover{text-decoration:underline}.dev-page .app-icon{width:76px;height:76px;font:700 30px/1 var(--font-display);color:#1a1f27;background:linear-gradient(150deg, var(--saffron), #f5c06a);border-radius:18px;flex:none;justify-content:center;align-items:center;display:flex}.dev-page .web-shot{border:1px solid var(--line);background:radial-gradient(120% 90% at 70% 20%,#f2a12c40,#0000 55%),linear-gradient(160deg,#2a2f37,#0c0f13);border-radius:10px;flex:none;width:140px;height:90px}.dev-page .stackblock{background:var(--panel);border:1px solid var(--line);color:#c7d1dc;border-radius:14px;max-width:720px;margin-top:40px;padding:30px 34px;font-size:clamp(14px,1.6vw,17px);line-height:1.9;overflow-x:auto}.dev-page .gitlog{flex-direction:column;max-width:860px;margin-top:40px;display:flex}.dev-page .commit{border-bottom:1px solid var(--line-soft);align-items:baseline;gap:22px;padding:20px 0;display:flex}.dev-page .commit:last-child{border-bottom:0}.dev-page .commit-hash{color:var(--accent);flex:0 0 76px;font-size:13.5px}.dev-page .commit h3{font:600 17px/24px var(--font-ui);color:var(--txt-1);margin:0 0 4px}.dev-page .commit .when{color:var(--txt-3);margin-left:10px;font-size:12.5px;font-weight:400}.dev-page .commit p{font:400 14.5px/22px var(--font-ui);color:var(--txt-2);margin:0}.dev-page .gh-grid{grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:20px;margin-top:40px;display:grid}.dev-page .repocard{border:1px solid var(--line);transition:border-color var(--t-base) var(--ease-out), background var(--t-base) var(--ease-out);background:#ffffff0a;border-radius:18px;flex-direction:column;gap:10px;padding:22px;display:flex}.dev-page .repocard:hover{background:#ffffff0f;border-color:#ffffff2e}.dev-page .repocard .rname{font:600 15px/20px var(--font-ui);color:var(--txt-1);align-items:center;gap:8px;display:flex}.dev-page .repocard p{font:400 13.5px/20px var(--font-ui);color:var(--txt-2);flex:1;margin:0}.dev-page .repocard .rmeta{font:500 12.5px/1 var(--font-ui);color:var(--txt-2);align-items:center;gap:16px;display:flex}.dev-page .langdot{background:var(--accent);vertical-align:-1px;border-radius:50%;width:9px;height:9px;margin-right:5px;display:inline-block}.dev-page .contact{text-align:center;flex-direction:column;align-items:center;gap:22px;padding:96px clamp(24px,6.5vw,96px);display:flex}.dev-page .contact .print{color:var(--txt-3);margin:0;font-size:15px}.dev-page .contact .big{font:600 clamp(30px, 4vw, 52px) / 1.12 var(--font-display);letter-spacing:-.02em;color:var(--txt-1);overflow-wrap:anywhere;margin:0}.dev-page .foot{border-top:1px solid var(--line-soft);color:var(--txt-3);flex-wrap:wrap;justify-content:space-between;gap:16px;padding:24px clamp(24px,6.5vw,96px);font-size:12.5px;display:flex}.dev-page .foot .flinks{gap:22px;display:flex}.dev-page .foot a:hover{color:var(--accent)}@media (max-width:720px){.dev-page .nav,.dev-page .nav-links{flex-wrap:wrap}.dev-page .apps-grid{grid-template-columns:1fr}.dev-page .wincard-body{flex-direction:column}.dev-page .commit{flex-direction:column;gap:6px}.dev-page .commit-hash{flex:none}}
