:root{--font-sans: "SF Pro Display", "SF Pro Text", -apple-system, BlinkMacSystemFont, "Helvetica Neue", sans-serif;--bg: #f3f5f7;--surface: rgba(255, 255, 255, .64);--text: #101215;--muted: #646b76;--line: #d9dee5;--accent: #0b63f6;--nav-surface: rgba(248, 250, 251, .8);--nav-line: rgba(217, 222, 229, .96);--nav-pill: rgba(16, 18, 21, .08);--nav-pill-hover: rgba(16, 18, 21, .05);--nav-offset: 4.9rem;--theme-reveal-x: 2.2rem;--theme-reveal-y: calc(100vh - 2.2rem) ;--r-sm: 8px;--r-md: 12px;--r-full: 999px;--shadow-1: 0 8px 20px color-mix(in srgb, var(--bg) 72%, transparent);--shadow-2: 0 14px 30px color-mix(in srgb, var(--bg) 60%, transparent);--ease-out: cubic-bezier(.22, .61, .36, 1);--ease-standard: cubic-bezier(.2, .7, .3, 1);--dur-fast: .14s;--dur-med: .32s;--dur-reveal: .42s;--stagger: .15s;--dur-nav-indicator: .24s;--dur-cursor-fade: .16s;--timeline-item-gap: 1rem;--timeline-group-gap: 1.45rem;--timeline-dot-offset: .98rem}:root[data-theme=dark]{--bg: #0d1015;--surface: rgba(23, 27, 34, .64);--text: #f5f7fa;--muted: #98a3b4;--line: #2a313b;--accent: #68a3ff;--nav-surface: rgba(21, 27, 36, .78);--nav-line: rgba(74, 86, 104, .84);--nav-pill: rgba(245, 247, 250, .14);--nav-pill-hover: rgba(245, 247, 250, .08);--shadow-1: 0 8px 20px color-mix(in srgb, var(--bg) 72%, transparent);--shadow-2: 0 14px 30px color-mix(in srgb, var(--bg) 60%, transparent)}*{box-sizing:border-box}html,body,#root{margin:0;min-height:100%}html{background:var(--bg)}body{font-family:var(--font-sans);line-height:1.45;color:var(--text);background:var(--bg);letter-spacing:-.01em}a{color:inherit}:is(a,button,summary,[tabindex]):focus-visible{outline:none;box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 30%,transparent)}h1,h2,h3,h4,p{margin:0}.page-shell{width:min(1000px,92vw);margin:0 auto;min-height:100vh;display:flex;flex-direction:column;padding:1rem 0 1.4rem}.floating-nav-wrap{position:sticky;top:.9rem;z-index:30}.floating-nav{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;width:100%;border:1px solid var(--nav-line);border-radius:var(--r-md);padding:.46rem .85rem;background:var(--nav-surface);-webkit-backdrop-filter:blur(10px) saturate(125%);backdrop-filter:blur(10px) saturate(125%);box-shadow:var(--shadow-1)}.floating-left{display:flex;align-items:center;justify-self:start}.floating-brand{font-size:1.02rem;font-weight:600;letter-spacing:-.01em;text-decoration:none;white-space:nowrap;border-radius:var(--r-sm)}.floating-links{position:relative;display:flex;align-items:center;justify-content:center;gap:.12rem;justify-self:center;padding:.12rem}.floating-indicator{position:absolute;left:0;top:.12rem;height:calc(100% - .24rem);border-radius:var(--r-sm);background:var(--nav-pill);opacity:0;transition:transform var(--dur-nav-indicator) var(--ease-standard),width var(--dur-nav-indicator) var(--ease-standard),opacity var(--dur-fast) ease}.floating-indicator--visible{opacity:1}.floating-link{position:relative;z-index:1;display:inline-flex;align-items:center;justify-content:center;padding:.38rem .78rem;border-radius:var(--r-sm);text-decoration:none;font-size:.94rem;font-weight:500;color:var(--text);opacity:.74;transition:color var(--dur-fast) ease,opacity var(--dur-fast) ease,background-color var(--dur-fast) ease}.floating-link:hover{opacity:1;background:var(--nav-pill-hover)}.floating-link:focus-visible{opacity:1}.floating-link--active{opacity:1}.floating-right{display:flex;align-items:center;justify-self:end}.social-icons{list-style:none;margin:0;padding:0;display:flex;align-items:center;gap:.1rem}.social-icons a{display:inline-flex;align-items:center;justify-content:center;padding:.3rem;color:var(--muted);border-radius:var(--r-full);transition:color var(--dur-fast) ease;text-decoration:none}.social-icons a:hover{color:var(--text)}.social-icons svg{width:.95rem;height:.95rem}.nav-socials{gap:.1rem}.nav-socials a{opacity:.82}.nav-socials a:hover{opacity:1}.theme-toggle{position:fixed;left:max(1rem,env(safe-area-inset-left));bottom:max(1rem,env(safe-area-inset-bottom));z-index:50;width:2.65rem;height:2.65rem;display:inline-flex;align-items:center;justify-content:center;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid color-mix(in srgb,var(--line) 82%,transparent);border-radius:var(--r-full);background:color-mix(in srgb,var(--surface) 92%,var(--bg));color:var(--muted);cursor:pointer;font-size:1.02rem;line-height:1;box-shadow:var(--shadow-1);transition:color var(--dur-fast) ease,transform var(--dur-fast) ease,box-shadow var(--dur-fast) ease,border-color var(--dur-fast) ease}.theme-toggle:hover{color:var(--text);border-color:color-mix(in srgb,var(--line) 40%,var(--accent));transform:translateY(-1px);box-shadow:var(--shadow-2)}.theme-toggle:focus-visible{outline:none;box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 30%,transparent),var(--shadow-1)}.theme-toggle:active{transform:translateY(0)}.page-content{flex:1;padding-top:1.7rem;padding-bottom:1.2rem}.home-view{min-height:68vh;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center}.avatar{width:126px;height:126px;border-radius:var(--r-full);object-fit:cover;object-position:center}.avatar--home{width:clamp(170px,24vw,220px);height:clamp(170px,24vw,220px)}.home-title{display:inline-flex;align-items:baseline;margin-top:1.35rem;font-size:clamp(1.9rem,5.6vw,4rem);font-weight:700;letter-spacing:-.04em;line-height:.97}.home-title__cursor{display:inline-block;margin-left:.08em;font-weight:500;opacity:1;animation:home-cursor-blink 1s steps(1,end) infinite}.home-title__cursor--done{animation:none;opacity:0;transition:opacity var(--dur-cursor-fade) ease}@keyframes home-cursor-blink{0%,49%{opacity:1}50%,to{opacity:0}}[data-reveal]{transition:opacity var(--dur-reveal) var(--ease-out),transform var(--dur-reveal) var(--ease-out)}[data-reveal=pending]{opacity:0;transform:translateY(6px)}[data-reveal=done]{opacity:1;transform:translateY(0)}.home-tagline{margin-top:.9rem;max-width:32ch;font-size:clamp(1rem,2.2vw,1.25rem);font-weight:450;line-height:1.4;color:var(--text)}.home-tagline[data-reveal]{transition-delay:0ms}.home-quest{display:flex;align-items:baseline;justify-content:center;gap:.35rem;margin-top:.6rem;max-width:34ch;font-size:.92rem}.home-quest[data-reveal]{transition-delay:var(--stagger)}.home-quest__label{color:var(--muted)}.home-quest__value{max-width:34ch;overflow:hidden;color:var(--text);font-weight:550;white-space:nowrap;text-overflow:ellipsis}.home-socials{margin-top:1.1rem}.home-socials[data-reveal]{transition-delay:calc(var(--stagger) * 2)}.not-found-view{min-height:68vh;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center}.not-found-code{font-size:clamp(2.6rem,8vw,5rem);font-weight:700;letter-spacing:-.04em;line-height:.97;color:var(--muted)}.not-found-message{margin-top:.9rem;max-width:34ch;color:var(--muted)}.not-found-link{margin-top:1.1rem;border-radius:var(--r-sm);opacity:1;color:var(--accent);font-weight:600}.page-view{display:grid;gap:1.15rem}.page-intro{display:grid;gap:.25rem}.page-intro h1{font-size:clamp(1.8rem,5vw,2.7rem);font-weight:650;letter-spacing:-.03em}.page-muted{color:var(--muted)}.projects-list{list-style:none;margin:0;padding:0;display:grid;gap:0}.projects-list li+li{border-top:1px solid color-mix(in srgb,var(--line) 70%,transparent)}.project-card-link{display:block;text-decoration:none;color:inherit;border-radius:var(--r-md);transition:transform var(--dur-med) var(--ease-standard),background-color var(--dur-med) var(--ease-standard)}.project-card-link:hover,.project-card-link:focus-visible{transform:translateY(-2px);background:color-mix(in srgb,var(--surface) 40%,var(--bg))}.project-listing{display:grid;grid-template-columns:minmax(180px,240px) 1fr;gap:1rem;padding:1rem 0;align-items:start;cursor:default}.project-listing__cover{width:100%;aspect-ratio:4 / 3;border-radius:var(--r-md);overflow:hidden;background:color-mix(in srgb,var(--surface) 85%,var(--bg));border:1px solid color-mix(in srgb,var(--line) 70%,transparent)}.project-cover{display:block;width:100%;height:100%;transition:transform var(--dur-med) var(--ease-standard)}.project-card-link:hover .project-cover,.project-card-link:focus-visible .project-cover{transform:translateY(-4px) scale(1.02)}.project-listing__content{display:grid;gap:.32rem}.project-listing__highlight{font-size:.72rem;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--accent)}.project-listing__meta{font-size:.82rem;color:var(--muted)}.project-listing__content h2{font-size:1.08rem;font-weight:600;letter-spacing:-.02em}.project-listing__glyph{display:inline-block;margin-left:.3em;opacity:0;transition:opacity var(--dur-fast) ease}.project-card-link:hover .project-listing__glyph,.project-card-link:focus-visible .project-listing__glyph{opacity:1}.project-tags{list-style:none;margin:.2rem 0 0;padding:0;display:flex;flex-wrap:wrap;gap:.42rem}.project-tags li{font-size:.73rem;color:var(--muted);border:1px solid color-mix(in srgb,var(--line) 75%,transparent);border-radius:var(--r-full);padding:.16rem .45rem}.timeline-filters{display:flex;flex-wrap:wrap;gap:.58rem;margin-bottom:.7rem}.pill{border:1px solid color-mix(in srgb,var(--line) 80%,transparent);background:color-mix(in srgb,var(--surface) 78%,var(--bg));color:var(--muted);padding:.26rem .62rem;font:inherit;font-size:.84rem;font-weight:500;border-radius:var(--r-full);cursor:pointer;display:inline-flex;align-items:center;gap:.35rem;transition:color var(--dur-fast) ease,background-color var(--dur-fast) ease,border-color var(--dur-fast) ease,transform var(--dur-fast) ease}.pill:hover{color:var(--text);border-color:color-mix(in srgb,var(--line) 45%,var(--accent));background:color-mix(in srgb,var(--surface) 60%,var(--bg));transform:translateY(-1px)}.pill:active{transform:translateY(0)}.pill--active{color:var(--text);border-color:color-mix(in srgb,var(--accent) 32%,var(--line));background:color-mix(in srgb,var(--accent) 12%,var(--bg));font-weight:600}.pill__icon{width:16px;height:16px;flex-shrink:0}.pill__count{font-variant-numeric:tabular-nums;color:color-mix(in srgb,var(--muted) 85%,transparent);font-weight:500}.pill__count--zero{opacity:.55}.timeline-scroll{padding-right:0;display:grid;gap:var(--timeline-group-gap)}.timeline-year-group{display:grid;grid-template-columns:74px 16px 1fr;column-gap:1.1rem;align-items:start}.timeline-year{grid-column:1;position:sticky;top:calc(var(--nav-offset) + .1rem);font-size:.96rem;font-weight:600;letter-spacing:-.02em;color:var(--muted);padding-top:.22rem;align-self:start}.timeline-list{grid-column:2 / 4;list-style:none;margin:0;padding:0;display:grid;gap:var(--timeline-item-gap)}.timeline-item{display:grid;grid-template-columns:16px 1fr;column-gap:1.1rem;padding:0;position:relative;opacity:0;transform:translateY(12px);transition:opacity var(--dur-reveal) var(--ease-out),transform var(--dur-reveal) var(--ease-out)}.timeline-item.is-revealed{opacity:1;transform:translateY(0)}.timeline-rail{position:relative;height:100%}.timeline-rail:before{content:"";position:absolute;left:50%;transform:translate(-50%);top:0;bottom:0;width:1px;background:color-mix(in srgb,var(--line) 78%,transparent)}.timeline-item:not(.timeline-item--end):not(.timeline-item--group-end):not(.timeline-item--only) .timeline-rail:before{bottom:calc(-1 * var(--timeline-item-gap))}.timeline-item--group-end .timeline-rail:before{bottom:calc(-1 * var(--timeline-group-gap))}.timeline-item--end .timeline-rail:before{bottom:auto;height:var(--timeline-dot-offset)}.timeline-item--start .timeline-rail:before{top:var(--timeline-dot-offset)}.timeline-item--only .timeline-rail:before{content:none}.timeline-dot{position:absolute;left:50%;top:var(--timeline-dot-offset);transform:translate(-50%,-50%);width:10px;height:10px;border-radius:var(--r-full);box-shadow:0 0 0 3px var(--bg)}.timeline-dot--work{background:color-mix(in srgb,var(--accent) 80%,var(--text))}.timeline-dot--hobby{background:color-mix(in srgb,#f7a348 70%,var(--text))}.timeline-dot--life{background:color-mix(in srgb,#4ab081 72%,var(--text))}.timeline-dot--school{background:color-mix(in srgb,#7d67f8 72%,var(--text))}.timeline-item article{display:grid;gap:.34rem}.timeline-item h4{font-size:1.06rem;font-weight:600;letter-spacing:-.02em}.timeline-date{font-size:.82rem;color:var(--muted);font-variant-numeric:tabular-nums}.timeline-meta-line{display:inline-flex;align-items:center;flex-wrap:wrap;gap:.35rem}.timeline-meta{font-size:.83rem;color:var(--muted)}.timeline-meta-separator{color:color-mix(in srgb,var(--muted) 82%,transparent);font-size:.84rem}.timeline-details summary{cursor:pointer;color:var(--muted)}.timeline-details ul{margin:.35rem 0 0;padding-left:1rem}.timeline-empty{color:var(--muted)}.footer{margin-top:auto;border-top:1px solid color-mix(in srgb,var(--line) 78%,transparent);padding-top:1.2rem;color:var(--muted);font-size:.85rem}.fade-in{animation:fade-in .22s ease-out}@keyframes fade-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}@keyframes theme-reveal{0%{clip-path:circle(0 at var(--theme-reveal-x) var(--theme-reveal-y))}to{clip-path:circle(150vmax at var(--theme-reveal-x) var(--theme-reveal-y))}}@supports (view-transition-name: root){:root{view-transition-name:root}::view-transition-group(root),::view-transition-old(root){animation:none}::view-transition-new(root){animation:theme-reveal .78s cubic-bezier(.24,.72,.24,1) both}}@media (max-width: 860px){:root{--nav-offset: 8.8rem}.floating-nav{display:flex;flex-wrap:wrap;justify-content:center;gap:.55rem}.floating-left{width:100%;justify-content:center}.floating-links{width:100%}.floating-right{width:100%;justify-content:center}.timeline-year-group{grid-template-columns:58px 16px 1fr;column-gap:.75rem}.timeline-item{column-gap:.75rem}.timeline-year{font-size:.88rem}.project-listing{grid-template-columns:1fr;gap:.75rem}.project-listing__cover{max-width:320px}}@media (prefers-reduced-motion: reduce){.fade-in,.home-title__cursor{animation:none}::view-transition-new(root){animation:none}[data-reveal],.timeline-item{transition:none;opacity:1;transform:none}.project-card-link,.project-cover,.project-listing__glyph{transition:none}.project-card-link:hover,.project-card-link:focus-visible{transform:none}.project-card-link:hover .project-cover,.project-card-link:focus-visible .project-cover{transform:none}}
