:root{--black:#111;--white:#fff;--bg:#f7f5f9;--card:#fdfcfe;--border:#e4deea;--text:#58525f;--text-h:#1b1822;--accent:#7a3e9d;--accent-soft:#f0e8f5;--on-accent:#fff;--code-bg:var(--card);--accent-bg:var(--accent-soft);--accent-border:var(--border);--social-bg:var(--card);--pink:#f472b6;--blue:#60a5fa;--green:#34d399;--yellow:#fbbf24;--cream:var(--card);--offwhite:var(--bg);--border-w:1px;--border-w-sm:1px;--shadow:0 1px 2px #1111110d, 0 8px 24px #1111110f;--shadow-sm:0 1px 2px #1111110f;--shadow-hover:0 2px 4px #1111110f, 0 14px 32px #1111111a;--radius:14px;--radius-sm:8px;--sans:"Inter", system-ui, sans-serif;--heading:"Inter", system-ui, sans-serif;--mono:"JetBrains Mono", ui-monospace, monospace;font-family:var(--sans);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;color:var(--text);background:var(--bg);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:17px;font-weight:400;line-height:1.6}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial}}@media (width<=1024px){:root{font-size:16px}}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#0d0b10;--card:#15121a;--border:#2a2432;--text:#a59fad;--text-h:#eeebf2;--accent:#b58ad6;--accent-soft:#241a2e;--on-accent:#0d0b10;--shadow:0 1px 2px #0006, 0 8px 24px #00000059;--shadow-sm:0 1px 2px #0006;--shadow-hover:0 2px 4px #0006, 0 14px 32px #00000080}}:root[data-theme=dark]{--bg:#0d0b10;--card:#15121a;--border:#2a2432;--text:#a59fad;--text-h:#eeebf2;--accent:#b58ad6;--accent-soft:#241a2e;--on-accent:#0d0b10;--shadow:0 1px 2px #0006, 0 8px 24px #00000059;--shadow-sm:0 1px 2px #0006;--shadow-hover:0 2px 4px #0006, 0 14px 32px #00000080}#root{box-sizing:border-box;background:var(--bg);flex-direction:column;width:1120px;max-width:100%;min-height:100svh;margin:0 auto;display:flex}html{scroll-behavior:smooth}body{background:0 0;margin:0}:focus-visible{outline:3px solid var(--accent);outline-offset:3px}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important;animation:none!important}}h1,h2,h3{font-family:var(--heading);letter-spacing:-.02em;color:var(--text-h);font-weight:700}h1{margin:24px 0;font-size:52px;line-height:1.08}@media (width<=1024px){h1{margin:16px 0;font-size:36px}}h2{margin:0 0 8px;font-size:26px;line-height:1.2}@media (width<=1024px){h2{font-size:22px}}p{margin:0}code{font-family:var(--mono);border:1px solid var(--border);color:var(--text-h);border-radius:var(--radius-sm);background:var(--card);padding:4px 8px;font-size:15px;line-height:135%;display:inline-flex}.page-main{flex:1;display:flex}.page-main .bento-grid{width:100%;margin:auto 0}.bento-hero{position:relative;overflow:hidden}.hero-dot-grid{opacity:.3;background-image:radial-gradient(circle, var(--border) 1.2px, transparent 1.2px);pointer-events:none;z-index:0;background-size:22px 22px;position:absolute;inset:0}.hero-star{background:var(--yellow);border:var(--border-w-sm) solid var(--border);clip-path:polygon(50% 0%,61% 35%,98% 35%,68% 57%,79% 91%,50% 70%,21% 91%,32% 57%,2% 35%,39% 35%);pointer-events:none;z-index:1;width:44px;height:44px;position:absolute;top:16px;right:16px}.hero-top,.hero-subtitle,.social-links{z-index:2;position:relative}.navbar{border-bottom:var(--border-w) solid var(--border);background:var(--bg);z-index:10;justify-content:space-between;align-items:center;padding:20px 24px;display:flex;position:sticky;top:0}.navbar-logo{font-family:var(--heading);text-transform:uppercase;letter-spacing:-.02em;color:var(--text-h);font-size:18px;font-weight:900;text-decoration:none}.navbar-links{gap:24px;display:flex}.navbar-link{color:var(--text);font-family:var(--mono);text-transform:uppercase;letter-spacing:.06em;border-bottom:3px solid #0000;padding-bottom:2px;font-size:13px;font-weight:600;text-decoration:none;transition:border-color .15s}.navbar-link:hover{border-bottom-color:var(--accent)}.navbar-link.active{color:var(--text-h);border-bottom-color:var(--accent)}.navbar-actions{align-items:center;gap:10px;display:flex}.theme-toggle{border-radius:var(--radius-sm);border:var(--border-w-sm) solid var(--border);background:var(--code-bg);box-shadow:var(--shadow-sm);cursor:pointer;width:36px;height:36px;font-size:16px;line-height:1}.lang-toggle{border-radius:var(--radius-sm);border:var(--border-w-sm) solid var(--border);background:var(--code-bg);box-shadow:var(--shadow-sm);color:var(--text-h);font-family:var(--mono);cursor:pointer;width:36px;height:36px;font-size:13px;font-weight:700;line-height:1}.bento-grid{text-align:left;grid-template-columns:1fr;grid-auto-rows:auto;gap:16px;padding:40px 20px;display:grid}.bento-tile{border:var(--border-w) solid var(--border);border-radius:var(--radius);background:var(--code-bg);box-shadow:var(--shadow);color:inherit;flex-direction:column;grid-column:span 1;padding:24px;text-decoration:none;transition:transform .15s,box-shadow .15s;display:flex}.bento-tile:hover{box-shadow:8px 8px 0 var(--black);transform:translate(-2px,-2px)}:root[data-theme=dark] .bento-tile:hover{box-shadow:8px 8px 0 var(--yellow)}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .bento-tile:hover{box-shadow:8px 8px 0 var(--yellow)}}.bento-tile h3{font-size:19px;font-family:var(--heading);text-transform:uppercase;letter-spacing:-.01em;color:var(--text-h);margin:0 0 8px;font-weight:800}.bento-tile p{margin:0 0 6px;font-size:15px;line-height:1.5}.bento-tag{width:fit-content;font-family:var(--mono);text-transform:uppercase;letter-spacing:.08em;color:var(--text-h);background:var(--accent-bg);border:var(--border-w-sm) solid var(--border);box-shadow:var(--shadow-sm);border-radius:999px;margin-bottom:12px;padding:5px 12px;font-size:12px;font-weight:600;display:inline-block}.bento-meta{font-family:var(--mono);text-transform:uppercase;letter-spacing:.04em;color:var(--text-h);margin-top:auto;padding-top:8px;font-size:12px;font-weight:600}.bento-page-header{flex-direction:column;grid-column:1/-1;gap:20px;display:flex}.bento-page-header h1{margin:8px 0 12px}.bento-page-header-text{flex:1}.bento-page-header-stats{flex-wrap:wrap;gap:16px;display:flex}@media (width>=768px){.bento-page-header{flex-direction:row;justify-content:space-between;align-items:center}.bento-page-header-stats{flex-wrap:nowrap;width:55%}}.language-bars{flex:1;min-width:220px}.language-bars-title{font-family:var(--mono);text-transform:uppercase;letter-spacing:.06em;color:var(--text-h);margin:0 0 8px;font-size:12px;font-weight:600}.language-bars-track{border:var(--border-w-sm) solid var(--border);background:var(--bg);width:100%;height:10px;display:flex;overflow:hidden}.language-bars-segment{height:100%}.language-bars-legend{color:var(--text);flex-wrap:wrap;gap:6px 14px;margin:10px 0 0;padding:0;font-size:13px;list-style:none;display:flex}.language-bars-legend li{align-items:center;gap:6px;display:flex}.language-bars-dot{border-radius:50%;flex:none;width:8px;height:8px}.repo-stat-grid{gap:16px;min-width:220px;display:flex}.repo-stat-cell{text-align:center;flex:1;padding-top:4px;position:relative}.repo-stat-value{font-family:var(--heading);color:var(--text-h);margin:0;font-size:22px;font-weight:900}.repo-stat-label{font-family:var(--mono);text-transform:uppercase;letter-spacing:.04em;color:var(--text);margin:2px 0 0;font-size:11px;font-weight:600}.bento-error{grid-column:1/-1}.hero-top{align-items:center;gap:16px;display:flex}.hero-avatar{object-fit:cover;border:var(--border-w-sm) solid var(--border);border-radius:50%;flex:none;width:88px;height:88px}.hero-name{font-size:clamp(30px,4vw,44px);line-height:1;font-family:var(--heading);text-transform:uppercase;letter-spacing:-.02em;color:var(--text-h);margin:0;font-weight:900}.hero-nickname{font-family:var(--mono);text-transform:uppercase;letter-spacing:.06em;margin:6px 0 0;font-size:13px;font-weight:600}.hero-subtitle{max-width:60ch;margin-top:20px;font-size:17px;line-height:1.6}.social-links{flex-wrap:wrap;gap:10px;margin-top:auto;padding-top:20px;display:flex}.social-link,.contact-btn{transition:transform .12s,box-shadow .12s}.social-link:hover,.contact-btn:hover{box-shadow:5px 5px 0 var(--black);transform:translate(-2px,-2px)}.social-link{border-radius:var(--radius-sm);border:var(--border-w-sm) solid var(--black);box-shadow:var(--shadow-sm);font-family:var(--mono);text-transform:uppercase;letter-spacing:.04em;color:var(--white);background:var(--social-color);padding:8px 16px;font-size:13px;font-weight:700;text-decoration:none}.github-stats-grid{flex-grow:1;grid-template-columns:repeat(2,1fr);gap:12px;display:grid}.github-stats-card{border-radius:var(--radius-sm);border:var(--border-w-sm) solid var(--border);box-shadow:var(--shadow-sm);background:var(--bg);color:inherit;flex-direction:column;justify-content:center;align-items:center;padding:14px 8px;text-decoration:none;transition:box-shadow .15s,transform .15s;display:flex;position:relative}.github-stats-card:hover{box-shadow:var(--shadow);transform:translate(-2px,-2px)}.github-stats-value{font-family:var(--heading);color:var(--text-h);margin:0;font-size:22px;font-weight:900}.github-stats-label{font-family:var(--mono);text-transform:uppercase;letter-spacing:.04em;text-align:center;color:var(--text);margin:4px 0 0;font-size:11px;font-weight:600}.bento-skill-highlight{flex-grow:1}.tag-list{flex-wrap:wrap;gap:8px;margin:8px 0 0;padding:0;list-style:none;display:flex}.tag-pill{font-family:var(--mono);text-transform:uppercase;letter-spacing:.04em;border:var(--border-w-sm) solid var(--border);background:var(--bg);border-radius:999px;padding:5px 12px;font-size:12px;font-weight:600}.bento-project-meta{flex-wrap:wrap;gap:6px 14px;display:flex}.stat-chip{font-family:var(--mono);font-variant-numeric:tabular-nums;color:var(--text);align-items:center;gap:5px;font-size:12px;font-weight:600;display:inline-flex}.stat-chip svg{opacity:.8;flex:none}.bento-contact-card{gap:8px}.contact-btn{border:var(--border-w-sm) solid var(--black);box-shadow:var(--shadow-sm);border-radius:var(--radius-sm);background:var(--yellow);color:var(--black);font-family:var(--mono);text-transform:uppercase;letter-spacing:.04em;white-space:nowrap;align-self:flex-start;margin-top:8px;padding:10px 20px;font-weight:700;text-decoration:none}@media (width>=640px){.bento-grid{grid-template-columns:repeat(6,1fr)}.bento-hero,.bento-stats{grid-column:span 6}.bento-skill,.bento-project,.bento-contact-card{grid-column:span 2}.bento-edu,.bento-exp{grid-column:span 3}}@media (width>=1024px){.bento-grid{grid-template-columns:repeat(12,1fr)}.bento-hero{grid-area:span 2/span 8}.bento-stats{grid-area:span 2/span 4}.bento-skill,.bento-contact-card,.bento-project{grid-column:span 4}.bento-edu,.bento-exp{grid-column:span 6}}.bento-section-title{border-bottom:var(--border-w-sm) solid var(--border);grid-column:1/-1;align-items:baseline;gap:12px;margin-top:16px;padding-bottom:8px;display:flex}.bento-section-title h2{margin:0;font-size:28px}.section-index{font-family:var(--mono);border:var(--border-w-sm) solid var(--border);border-radius:var(--radius-sm);background:var(--accent);color:var(--black);padding:2px 8px;font-size:14px;font-weight:700}.section-link{font-family:var(--mono);text-transform:uppercase;color:var(--text-h);border-bottom:3px solid var(--accent);margin-left:auto;font-size:13px;font-weight:700;text-decoration:none}.skill-number{font-family:var(--heading);color:#0000;-webkit-text-stroke:2px var(--black);margin-bottom:8px;font-size:56px;font-weight:900;line-height:1}:root[data-theme=dark] .skill-number{-webkit-text-stroke-color:var(--white)}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .skill-number{-webkit-text-stroke-color:var(--white)}}.bento-cta{background:var(--black);color:var(--white);grid-column:1/-1;align-items:flex-start;gap:4px;margin-top:16px}.bento-cta h2{color:var(--white);margin-bottom:8px;font-size:clamp(26px,4vw,40px)}.bento-cta p{max-width:55ch}@media (width>=640px){.bento-featured{grid-column:span 2}}@media (width>=1024px){.bento-featured{grid-column:span 4}}@keyframes reveal-up{0%{opacity:0;transform:translateY(28px)}to{opacity:1;transform:none}}@supports (animation-timeline:view()){@media (prefers-reduced-motion:no-preference){.bento-tile,.bento-section-title{animation:linear backwards reveal-up;animation-timeline:view();animation-range:entry entry 40%}}}.bento-tile,.bento-tile.pastel-pink,.bento-tile.pastel-blue,.bento-tile.pastel-green,.bento-tile.pastel-yellow,.bento-tile.pastel-cream{background:var(--card);border:1px solid var(--border);box-shadow:var(--shadow)}.bento-tile:hover,:root[data-theme=dark] .bento-tile:hover{box-shadow:var(--shadow-hover);transform:translateY(-2px)}.bento-hero{padding:40px}.hero-dot-grid,.hero-star,.stat-deco-dot{display:none}.hero-name{text-transform:none;letter-spacing:-.03em;font-weight:800}.hero-nickname{text-transform:none;color:var(--accent)}.bento-tile h3{text-transform:none;letter-spacing:-.01em;font-size:19px;font-weight:650}.bento-tile p{color:var(--text);font-size:16px}.bento-meta{text-transform:none;color:var(--text);font-weight:500}.bento-tag,.tag-pill{background:var(--accent-soft);color:var(--accent);box-shadow:none;text-transform:none;letter-spacing:.01em;border:1px solid #0000;font-weight:600}.tag-pill{padding:4px 12px;font-size:13px}.bento-section-title{border-bottom:1px solid var(--border);margin-top:24px}.section-index{color:var(--accent);background:0 0;border:none;padding:0;font-size:15px}.section-link{color:var(--accent);text-transform:none;border-bottom:none;font-weight:600}.section-link:hover{text-decoration:underline}.skill-number,:root[data-theme=dark] .skill-number,:root:not([data-theme=light]) .skill-number{-webkit-text-stroke:0;color:var(--accent);opacity:.35;font-size:40px;font-weight:800}.social-link,.contact-btn{color:var(--text-h);border:1px solid var(--border);box-shadow:var(--shadow-sm);border-radius:var(--radius-sm);text-transform:none;letter-spacing:0;background:0 0;font-size:14px;font-weight:600}.social-link:hover,.contact-btn:hover{border-color:var(--accent);box-shadow:var(--shadow-sm);transform:translateY(-1px)}.social-link.btn-primary{background:var(--accent);color:var(--on-accent);border-color:var(--accent)}.social-link.btn-primary:hover{filter:brightness(1.08)}.theme-toggle,.lang-toggle{border:1px solid var(--border);box-shadow:none;background:var(--card)}.navbar{background:var(--bg);border-bottom:1px solid var(--border)}.navbar-logo{text-transform:none;font-weight:800}.navbar-link{text-transform:none;letter-spacing:0;font-size:14px;font-weight:500}.github-stats-card{background:var(--bg);border:1px solid var(--border);box-shadow:none}.github-stats-card:hover{box-shadow:var(--shadow-sm);border-color:var(--accent)}.github-stats-label,.repo-stat-label,.language-bars-title{text-transform:none;letter-spacing:0;font-size:12px;font-weight:500}.language-bars-track{border-color:var(--border);border-radius:999px}.bento-cta.bento-tile{color:#e8e8e3;background:#14101a;border:1px solid #3a2d4d;position:relative}.bento-cta h2{color:#e8e8e3;font-family:var(--mono);font-size:clamp(22px,3.4vw,34px)}.bento-cta h2:before{content:"→ ";color:#b58ad6}.bento-cta p{color:#a59fad;font-weight:400}.bento-cta .contact-btn{color:#0d0b10;font-family:var(--mono);background:#b58ad6;border-color:#b58ad6}.bento-cta .contact-btn:hover{filter:brightness(1.1);box-shadow:none;border-color:#b58ad6}#root{background:0 0}body:before{content:"";z-index:-1;pointer-events:none;background-image:linear-gradient(var(--border) 1px, transparent 1px), linear-gradient(90deg, var(--border) 1px, transparent 1px);opacity:.6;background-size:56px 56px;position:fixed;inset:0;-webkit-mask-image:radial-gradient(80% 70% at 50% 0,#000 0%,#0000 78%);mask-image:radial-gradient(80% 70% at 50% 0,#000 0%,#0000 78%)}.bento-tile.bento-hero{background:var(--card)}.bento-hero .hero-dot-grid{opacity:.7;background-image:radial-gradient(circle, var(--border) 1.4px, transparent 1.4px);background-size:20px 20px;display:block;-webkit-mask-image:linear-gradient(100deg,#0000 35%,#000 100%);mask-image:linear-gradient(100deg,#0000 35%,#000 100%)}.navbar-logo:before{content:"~/";color:var(--accent)}.navbar-logo,.bento-section-title h2{font-family:var(--mono)}.bento-section-title h2{letter-spacing:-.01em;font-size:22px}.section-index{font-size:14px}.section-index:before{content:"//";opacity:.6;margin-right:4px}.hero-prompt{z-index:2;font-family:var(--mono);color:var(--text-h);margin-top:14px;font-size:16px;font-weight:600;position:relative}.hero-prompt .prompt-sign{color:var(--accent);margin-right:8px}.hero-prompt .cursor{vertical-align:text-bottom;background:var(--accent);width:.55em;height:1.05em;margin-left:2px;animation:1.1s step-end infinite cursor-blink;display:inline-block}@keyframes cursor-blink{50%{opacity:0}}.bento-tile{position:relative}.bento-tile:not(.bento-cta):after{content:"";border-radius:inherit;pointer-events:none;opacity:0;background:radial-gradient(240px circle at var(--mx,50%) var(--my,50%), color-mix(in srgb, var(--accent) 13%, transparent), transparent 70%);transition:opacity .2s;position:absolute;inset:0}.bento-tile:not(.bento-cta):hover:after{opacity:1}.bento-tag-wip{color:#92400e;background:#fef3c7}.network-bg{z-index:-1;pointer-events:none;position:fixed;inset:0}.bento-tile:not(.bento-cta),.bento-tile.bento-hero:not(.bento-cta),.bento-tile.pastel-pink:not(.bento-cta),.bento-tile.pastel-blue:not(.bento-cta),.bento-tile.pastel-green:not(.bento-cta),.bento-tile.pastel-yellow:not(.bento-cta),.bento-tile.pastel-cream:not(.bento-cta){background:color-mix(in srgb, var(--card) 80%, transparent)}:root{--hue-purple:var(--accent);--hue-teal:#1f9d8f;--hue-amber:#d98e1a;--hue-rose:#d6558a;--hue-blue:#3b82c4}:root[data-theme=dark]{--hue-teal:#4fd1c1;--hue-amber:#f0b429;--hue-rose:#f27aa8;--hue-blue:#6aa9ee}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--hue-teal:#4fd1c1;--hue-amber:#f0b429;--hue-rose:#f27aa8;--hue-blue:#6aa9ee}}.bento-tile.pastel-cream{--tile-hue:var(--hue-purple)}.bento-tile.pastel-green{--tile-hue:var(--hue-teal)}.bento-tile.pastel-yellow{--tile-hue:var(--hue-amber)}.bento-tile.pastel-pink{--tile-hue:var(--hue-rose)}.bento-tile.pastel-blue{--tile-hue:var(--hue-blue)}.bento-tile[class*=pastel-]{border-top:3px solid var(--tile-hue)}.bento-tile[class*=pastel-] .bento-tag,.bento-tile[class*=pastel-] .tag-pill{background:color-mix(in srgb, var(--tile-hue) 14%, transparent);color:color-mix(in srgb, var(--tile-hue) 72%, var(--text-h))}.bento-tile[class*=pastel-] h3{color:var(--text-h)}.bento-tile[class*=pastel-]:after{background:radial-gradient(240px circle at var(--mx,50%) var(--my,50%), color-mix(in srgb, var(--tile-hue) 16%, transparent), transparent 70%)!important}.bento-tile[class*=pastel-]:hover{border-color:color-mix(in srgb, var(--tile-hue) 50%, var(--border));border-top-color:var(--tile-hue)}.bento-tile[class*=pastel-] .stat-chip svg{color:var(--tile-hue);opacity:1}
