:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--page-background:#f8fafc;--surface:#fff;--surface-muted:#fffc;--border:#e2e8f0;--text-primary:#0f172a;--text-secondary:#475569;--text-muted:#94a3b8;--icon-muted:#94a3b8;--accent:#4f46e5;--accent-hover:#3730a3;--accent-soft:#eef2ff;--accent-soft-text:#4f46e5;--control-hover:#e2e8f0;--modal-backdrop:#0009}html.dark{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--page-background:#0f172a;--surface:#1e293b;--surface-muted:#0f172acc;--border:#334155;--text-primary:#fff;--text-secondary:#cbd5e1;--text-muted:#64748b;--icon-muted:#94a3b8;--accent:#818cf8;--accent-hover:#c7d2fe;--accent-soft:#1e1b4b;--accent-soft-text:#818cf8;--control-hover:#334155}*,:before,:after{box-sizing:border-box}html,body,#app{min-width:20rem;min-height:100%}body{background:var(--page-background);color:var(--text-primary);-webkit-font-smoothing:antialiased;margin:0;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;transition:background-color .3s,color .3s}button,a{font:inherit}button{border:0}a{color:inherit;text-decoration:none}.theme-toggle[data-v-fcd8f2af]{cursor:pointer;width:2.5rem;height:2.5rem;color:var(--text-secondary);background:0 0;border-radius:9999px;justify-content:center;align-items:center;transition:background-color .2s,color .2s;display:inline-flex}.theme-toggle[data-v-fcd8f2af]:hover{background:var(--control-hover)}.theme-toggle[data-v-fcd8f2af]:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.theme-icon[data-v-fcd8f2af]{width:1.25rem;height:1.25rem}.theme-icon-sun[data-v-fcd8f2af]{color:#facc15}.project-card[data-v-b1b43134]{cursor:pointer;border:1px solid var(--border);background:var(--surface);border-radius:1rem;flex-direction:column;transition:transform .3s,box-shadow .3s,background-color .3s;display:flex;position:relative;box-shadow:0 1px 2px #0f172a0d}.project-card[data-v-b1b43134]:hover{transform:translateY(-.25rem);box-shadow:0 10px 15px -3px #0f172a1f,0 4px 6px -4px #0f172a1f}.project-card-content[data-v-b1b43134]{flex-direction:column;flex:1;gap:.75rem;padding:1.25rem;display:flex}.project-card-header[data-v-b1b43134]{justify-content:space-between;align-items:flex-start;gap:.5rem;display:flex}.project-title[data-v-b1b43134]{color:var(--text-primary);margin:0;font-size:1.125rem;font-weight:600;line-height:1.375}.project-year[data-v-b1b43134]{color:var(--text-muted);flex-shrink:0;margin-top:.25rem;font-size:.75rem;font-weight:500}.project-description[data-v-b1b43134]{color:var(--text-secondary);flex:1;margin:0;font-size:.875rem;line-height:1.625}.project-tags[data-v-b1b43134]{flex-wrap:wrap;gap:.5rem;display:flex}.project-tag[data-v-b1b43134]{background:var(--accent-soft);color:var(--accent-soft-text);border-radius:9999px;padding:0 .5rem;font-size:.75rem;font-weight:500;line-height:1.25rem}.project-actions[data-v-b1b43134]{justify-content:space-between;align-items:center;padding-top:.25rem;display:flex}.more-button[data-v-b1b43134]{cursor:pointer;color:var(--accent);text-underline-offset:2px;background:0 0;padding:0;font-size:.875rem;font-weight:500;transition:color .2s}.more-button[data-v-b1b43134]:hover{color:var(--accent-hover);text-decoration:underline}.more-button[data-v-b1b43134]:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.github-link[data-v-b1b43134]{color:var(--icon-muted);transition:color .2s}.github-link[data-v-b1b43134]:hover{color:var(--text-secondary)}.github-link[data-v-b1b43134]:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.icon[data-v-b1b43134]{width:1.25rem;height:1.25rem;display:block}.projects-section[data-v-ee2a6489]{width:100%;max-width:72rem;margin:0 auto;padding:2.5rem 1rem}.projects-grid[data-v-ee2a6489]{grid-template-columns:minmax(0,1fr);gap:1.5rem;display:grid}@media (width>=40rem){.projects-grid[data-v-ee2a6489]{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width>=64rem){.projects-grid[data-v-ee2a6489]{grid-template-columns:repeat(3,minmax(0,1fr))}}.modal-backdrop[data-v-8d16c4f7]{z-index:50;background:var(--modal-backdrop);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);justify-content:center;align-items:center;padding:1rem;display:flex;position:fixed;inset:0}.modal-panel[data-v-8d16c4f7]{border:1px solid var(--border);background:var(--surface);border-radius:1rem;width:100%;max-width:42rem;max-height:90vh;position:relative;overflow-y:auto;box-shadow:0 25px 50px -12px #00000040}.modal-close[data-v-8d16c4f7]{z-index:10;cursor:pointer;width:2rem;height:2rem;color:var(--text-muted);background:0 0;border-radius:9999px;justify-content:center;align-items:center;transition:background-color .2s,color .2s;display:flex;position:absolute;top:1rem;right:1rem}.modal-close[data-v-8d16c4f7]:hover{background:var(--control-hover);color:var(--text-secondary)}.modal-close[data-v-8d16c4f7]:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.modal-content[data-v-8d16c4f7]{flex-direction:column;gap:1rem;padding:1.5rem;display:flex}.modal-header[data-v-8d16c4f7]{align-items:center;gap:1rem;display:flex}.modal-title[data-v-8d16c4f7]{color:var(--text-primary);margin:0;font-size:1.5rem;font-weight:700;line-height:1.375}.modal-year[data-v-8d16c4f7]{color:var(--text-muted);flex-shrink:0;margin-top:.25rem;font-size:.875rem;font-weight:500}.modal-description[data-v-8d16c4f7]{color:var(--text-secondary);margin:0;font-size:.875rem;line-height:1.625}.modal-tags[data-v-8d16c4f7]{flex-wrap:wrap;gap:.5rem;display:flex}.modal-tag[data-v-8d16c4f7]{background:var(--accent-soft);color:var(--accent-soft-text);border-radius:9999px;padding:.25rem .75rem;font-size:.75rem;font-weight:500;line-height:1.25rem}.modal-actions[data-v-8d16c4f7]{align-items:center;gap:.75rem;padding-top:.5rem;display:flex}.modal-link[data-v-8d16c4f7]{border-radius:.5rem;align-items:center;gap:.5rem;padding:.5rem 1rem;font-size:.875rem;font-weight:500;transition:background-color .2s,color .2s;display:inline-flex}.modal-link[data-v-8d16c4f7]:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.modal-link-primary[data-v-8d16c4f7]{background:var(--accent);color:#fff}.modal-link-primary[data-v-8d16c4f7]:hover{background:var(--accent-hover)}.modal-link-secondary[data-v-8d16c4f7]{border:1px solid var(--border);color:var(--text-secondary)}.modal-link-secondary[data-v-8d16c4f7]:hover{background:var(--page-background)}.icon[data-v-8d16c4f7]{width:1.25rem;height:1.25rem;display:block}@media (width<=39.9375rem){.modal-actions[data-v-8d16c4f7]{flex-direction:column;align-items:stretch}.modal-link[data-v-8d16c4f7]{justify-content:center}}.fade-enter-active[data-v-8d16c4f7],.fade-leave-active[data-v-8d16c4f7]{transition:opacity .2s}.fade-enter-from[data-v-8d16c4f7],.fade-leave-to[data-v-8d16c4f7]{opacity:0}.scale-enter-active[data-v-8d16c4f7],.scale-leave-active[data-v-8d16c4f7]{transition:transform .2s,opacity .2s}.scale-enter-from[data-v-8d16c4f7],.scale-leave-to[data-v-8d16c4f7]{opacity:0;transform:scale(.95)}.app-shell[data-v-c4f92f5b]{background:var(--page-background);min-height:100vh;transition:background-color .3s}.site-header[data-v-c4f92f5b]{z-index:40;border-bottom:1px solid var(--border);background:var(--surface-muted);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);position:sticky;top:0}.container[data-v-c4f92f5b]{width:100%;max-width:72rem;margin:0 auto;padding-left:1rem;padding-right:1rem}.header-inner[data-v-c4f92f5b]{justify-content:space-between;align-items:center;height:4rem;display:flex}.brand[data-v-c4f92f5b]{align-items:baseline;display:flex}.brand-name[data-v-c4f92f5b]{color:var(--text-primary);letter-spacing:-.025em;font-size:1.125rem;font-weight:700}.brand-role[data-v-c4f92f5b]{color:var(--text-muted);margin-left:.5rem;font-size:.875rem}.hero[data-v-c4f92f5b]{text-align:center;max-width:72rem;margin:0 auto;padding:4rem 1rem 2.5rem}.hero-title[data-v-c4f92f5b]{color:var(--text-primary);letter-spacing:-.025em;margin:0 0 1rem;font-size:2.25rem;font-weight:800;line-height:1.111}.hero-description[data-v-c4f92f5b]{max-width:36rem;color:var(--text-muted);margin:0 auto;font-size:1.125rem}.site-footer[data-v-c4f92f5b]{border-top:1px solid var(--border);color:var(--text-muted);text-align:center;margin-top:4rem;padding:2rem 1rem;font-size:.875rem}@media (width>=40rem){.hero-title[data-v-c4f92f5b]{font-size:3rem}}@media (width<=39.9375rem){.brand-role[data-v-c4f92f5b]{display:none}}
