html,body,#root{min-height:100%;margin:0}body{background:#fafaf9}.hub-shell{--hub-bg: #eceeef;--hub-paper: #f5f6f6;--hub-panel: rgba(255, 255, 255, .72);--hub-panel-strong: rgba(255, 255, 255, .9);--hub-line: rgba(42, 42, 42, .12);--hub-text: #252525;--hub-muted: #70706b;--hub-green: #1f5a46;--hub-mono: "JetBrains Mono", "SFMono-Regular", Consolas, "Liberation Mono", monospace;background:var(--hub-bg);color:var(--hub-text);display:grid;font-family:var(--hub-mono);min-height:100vh;overflow:hidden;place-items:center;position:relative}.hub-field{background:linear-gradient(90deg,rgba(32,32,32,.105) 1px,transparent 1px),linear-gradient(0deg,rgba(32,32,32,.105) 1px,transparent 1px);background-color:var(--hub-paper);background-position:center;background-size:24px 24px;inset:0;position:fixed}.hub-field:after{background:radial-gradient(circle at var(--hub-cursor-x, 50%) var(--hub-cursor-y, 50%),rgba(31,90,70,.055),transparent 9rem),linear-gradient(135deg,rgba(255,255,255,.7),transparent 42%,rgba(168,168,160,.16));content:"";inset:0;position:absolute}.hub-anti-grid{inset:0;opacity:.9;pointer-events:none;position:fixed}.hub-login-card,.hub-projects{background:var(--hub-panel);border:1px solid var(--hub-line);border-radius:4px;box-shadow:0 24px 70px #50504b2e;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);position:relative;z-index:1}.hub-login-card{padding:28px;width:min(420px,calc(100vw - 48px))}.hub-brand-lockup{align-items:center;display:flex;gap:14px;margin-bottom:28px}.hub-mark{border:1px solid rgba(31,90,70,.55);flex:0 0 auto;height:36px;position:relative;width:36px}.hub-mark:before,.hub-mark:after{background:var(--hub-green);content:"";position:absolute}.hub-mark:before{height:1px;left:11px;top:17px;width:12px}.hub-mark:after{height:12px;left:17px;top:11px;width:1px}.hub-typed-logo{align-items:center;color:var(--hub-text);display:inline-flex;font-size:24px;font-weight:700;letter-spacing:-.02em;min-width:9ch}.hub-typed-logo span{animation:hub-type-logo 1.4s steps(8,end) .25s forwards;display:inline-block;overflow:hidden;white-space:nowrap;width:0}.hub-typed-logo:after{animation:hub-blink .9s steps(1,end) infinite;background:var(--hub-green);content:"";height:1.15em;margin-left:4px;width:8px}.hub-login-card h1,.hub-projects h1{font-size:26px;font-weight:700;letter-spacing:0;margin:0 0 8px}.hub-login-card p,.hub-projects p{color:var(--hub-muted);font-size:13px;line-height:1.6;margin:0 0 28px}.hub-login-card label{color:#666660;display:block;font-size:10px;letter-spacing:.08em;margin-bottom:8px;text-transform:uppercase}.hub-login-card input{background:#ffffffc2;border:1px solid rgba(42,42,42,.12);border-radius:3px;color:var(--hub-text);font:inherit;height:44px;margin-bottom:18px;padding:0 13px;width:100%}.hub-login-card button,.hub-signout{background:var(--hub-green);border:0;border-radius:3px;color:#f8fbf8;cursor:pointer;font:inherit;font-weight:700;height:44px}.hub-login-card button{margin-top:6px;width:100%}.hub-projects{padding:28px;width:min(980px,calc(100vw - 48px))}.hub-projects-header{align-items:end;display:flex;justify-content:space-between;margin-bottom:28px}.hub-projects-header .hub-brand-lockup{margin-bottom:22px}.hub-signout{flex:0 0 auto;padding:0 18px}.hub-project-grid{display:grid;gap:18px;grid-template-columns:repeat(2,minmax(0,1fr))}.hub-project{background:linear-gradient(145deg,var(--hub-panel-strong),var(--hub-panel));border:1px solid var(--hub-line);border-radius:4px;color:var(--hub-text);display:flex;flex-direction:column;justify-content:end;min-height:240px;overflow:hidden;padding:22px;position:relative;text-decoration:none}.hub-project:before{background:linear-gradient(90deg,rgba(42,42,42,.07) 1px,transparent 1px),linear-gradient(0deg,rgba(42,42,42,.07) 1px,transparent 1px),linear-gradient(135deg,rgba(31,90,70,.11),transparent 45%);background-size:18px 18px,18px 18px,auto;border:1px solid rgba(42,42,42,.1);content:"";inset:18px;position:absolute}.hub-project:hover{border-color:#1f5a4680}.hub-project strong,.hub-project span{position:relative}.hub-project strong{font-size:18px;margin-bottom:6px}.hub-project span{color:var(--hub-muted);font-size:12px}@keyframes hub-type-logo{to{width:8ch}}@keyframes hub-blink{50%{opacity:0}}@media(max-width:760px){.hub-shell{overflow:auto;padding:24px 0}.hub-projects-header{align-items:start;flex-direction:column;gap:16px}.hub-project-grid{grid-template-columns:1fr}.hub-project{min-height:180px}}
