:root{--bg: #d9deea;--fg: #1d2330;--accent: #4a79f5;--accent-2: #8aa5ec;--border: #cfd3dd;--muted: #6e7588;--font-sans: "SF Pro Text", "SF Pro Display", -apple-system, BlinkMacSystemFont, "Helvetica Neue", Arial, sans-serif;--font-mono: "IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace}*,*:before,*:after{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;font-family:var(--font-sans);background:radial-gradient(1200px 500px at 12% 8%,#ffffffa6,#fff0 70%),linear-gradient(145deg,#c6cedf,#b5bed2 45%,#a9b6ce);color:var(--fg)}.about-me-layout{width:100%;height:100%;padding:2rem 2.25rem;box-sizing:border-box;overflow-y:auto}.about-me{max-width:38rem;margin:0 auto}.about-me-file-label{margin:0 0 1.5rem;font-family:var(--font-mono);font-size:.72rem;font-weight:500;letter-spacing:.04em;color:#697289;text-transform:uppercase}.about-me-hero{display:flex;align-items:flex-start;gap:2rem;margin-bottom:1.75rem}.about-me-photo{width:120px;height:120px;border-radius:50%;object-fit:cover;flex-shrink:0;outline:3px solid #c2562d;outline-offset:3px}.about-me-intro{min-width:0;padding-top:.25rem}.about-me-heading{margin:0 0 .5rem;font-size:clamp(1.35rem,2.4vw,1.75rem);font-weight:750;letter-spacing:-.025em;color:#141820;line-height:1.18}.about-me-role{margin:0;font-size:.9rem;font-weight:500;color:#3d4556;line-height:1.35}.about-me-bio{margin:0;font-size:.92rem;line-height:1.65;color:#2f3643}.about-me-bio a{color:#2a4a9a;text-decoration:underline;text-underline-offset:2px}.about-me-bio a:hover{color:var(--accent)}@media(max-width:480px){.about-me-layout{padding:1.5rem 1.25rem}.about-me-hero{flex-direction:column;align-items:center;text-align:center;gap:1.25rem}.about-me-heading{font-size:1.45rem}}.resume-web-layout{position:relative;width:100%;min-height:0}.resume-web-download-floating{position:absolute;top:0;right:0;z-index:2}.resume-web{max-width:40rem;margin:0 auto;color:#252830;font-size:.88rem;line-height:1.5}.resume-web--readme .resume-web-file-label{margin:0 0 .85rem;font-family:var(--font-mono);font-size:.72rem;font-weight:500;letter-spacing:.04em;color:#697289;text-transform:uppercase}.resume-web--readme .readme-md{display:flow-root;max-width:40rem;margin:0 auto;color:#252830;font-size:.88rem;line-height:1.55}.resume-web--readme .readme-md img{float:right;width:220px;max-width:45%;height:auto;margin:0 0 1rem 1.25rem;border-radius:50%;outline:3px solid #c2562d;outline-offset:3px}.resume-web--readme .readme-md h1{margin:0 0 .35rem;font-size:clamp(1.35rem,2.4vw,1.75rem);font-weight:650;letter-spacing:-.02em;color:#141820;line-height:1.2}.resume-web--readme .readme-md h3{margin:0 0 1rem;font-size:.82rem;font-weight:600;color:#3d4556;line-height:1.35}.resume-web--readme .readme-md p{margin:0;color:#2f3643}.resume-web--readme .readme-md a{color:#2a4a9a;text-decoration:underline;text-underline-offset:2px}.resume-web--readme .readme-md a:hover{color:var(--accent)}.resume-web-masthead{margin-bottom:1rem}.resume-web-masthead-main{min-width:0}.resume-web-download-btn{display:inline-flex;align-items:center;justify-content:center;gap:.32rem;padding:.28rem .42rem;margin:0;border:none;border-radius:6px;background:transparent;color:var(--muted, #8b93a5);cursor:pointer;line-height:1;transition:color .15s ease,background-color .15s ease}.resume-web-download-btn:hover:not(:disabled){color:#5a6272;background-color:#0f172a0d}.resume-web-download-btn:focus-visible{outline:2px solid rgba(74,121,245,.45);outline-offset:2px}.resume-web-download-btn:disabled{opacity:.45;cursor:wait;pointer-events:none}.resume-web-download-icon{display:block;flex-shrink:0}.resume-web-download-label{font-size:.62rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:inherit;opacity:.88}.resume-web-name{margin:0 0 .2rem;font-size:clamp(1.35rem,2.4vw,1.75rem);font-weight:650;letter-spacing:-.02em;color:#141820}.resume-web-headline{margin:0 0 .45rem;font-size:.82rem;font-weight:600;color:#3d4556;line-height:1.35}.resume-web-contact{display:flex;flex-wrap:wrap;align-items:center;gap:.25rem .35rem;margin:0;font-size:.78rem;color:#4d5568}.resume-web-contact a{color:#2a4a9a;text-decoration:underline;text-underline-offset:2px}.resume-web-contact a:hover{color:var(--accent)}.resume-web-contact-sep{color:#9aa3b5;-webkit-user-select:none;user-select:none}.resume-web-summary{margin:0 0 1.15rem;line-height:1.55;color:#2f3643}.resume-web-section{margin-top:1.05rem}.resume-web-section-title{margin:0 0 .65rem;padding-bottom:.35rem;font-size:.68rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:#141820;border-bottom:1px solid rgba(180,188,204,.95)}.resume-web-job{margin-bottom:1rem}.resume-web-job:last-child{margin-bottom:.35rem}.resume-web-job-head{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:.35rem 1rem;margin-bottom:.4rem}.resume-web-job-titles{min-width:min(100%,14rem);flex:1}.resume-web-company{margin:0 0 .12rem;font-size:.92rem;font-weight:650;color:#1a2130}.resume-web-role{margin:0;font-size:.8rem;font-style:italic;color:#4a5262;line-height:1.35}.resume-web-dates{margin:0;font-size:.76rem;font-weight:600;color:#697289;white-space:nowrap;text-align:right}.resume-web-bullets{margin:0;padding-left:1.1rem;display:grid;gap:.28rem}.resume-web-bullets li{padding-left:.15rem;line-height:1.45;color:#2f3643}.resume-web-edu-list{margin:0;padding:0;list-style:none;display:grid;gap:.55rem}.resume-web-edu-list li{display:grid;gap:.12rem}.resume-web-edu-school{font-weight:650;color:#1a2130}.resume-web-edu-degree{font-size:.84rem;color:#4a5262}.resume-web-skills{margin:0;display:grid;gap:.5rem}.resume-web-skill-row{display:grid;gap:.12rem}.resume-web-skill-row dt{margin:0;font-size:.78rem;font-weight:650;color:#1a2130}.resume-web-skill-row dd{margin:0;line-height:1.45;color:#2f3643}@media(max-width:520px){.resume-web--readme .readme-md img{float:none;display:block;margin:0 auto 1rem;max-width:200px}.resume-web-download-floating{position:static;display:flex;justify-content:flex-end;margin:0 0 .45rem;width:100%;align-self:stretch}.resume-web-job-head{flex-direction:column;align-items:stretch}.resume-web-dates{text-align:left;white-space:normal}}.os-shell{position:relative;min-height:100vh;overflow:hidden}.top-bar{position:absolute;top:8px;left:14px;right:14px;display:flex;justify-content:space-between;align-items:center;padding:0;font-size:.71rem;z-index:8;pointer-events:none;font-family:var(--font-mono)}.os-title{font-weight:600;letter-spacing:.02em;color:#fffffffc;text-shadow:0 1px 3px rgba(0,0,0,.28);text-transform:uppercase}.status-items{display:flex;align-items:center;gap:.65rem;color:#fafdfffa;text-shadow:0 1px 2px rgba(0,0,0,.3)}.status-weather,.os-time{font-size:.69rem}.desktop-canvas{position:relative;width:100vw;min-height:100vh;overflow:hidden;isolation:isolate;background:radial-gradient(125% 88% at 22% 105%,#101d33,#080f1f 46%,#040814);transition:background .38s ease}.desktop-light-beam{position:absolute;top:-122vh;left:-58vw;width:220vw;height:148vh;border-radius:999px;background:linear-gradient(90deg,#0000,#3ddbff06 34%,#6df4d61f 52%,#3ddbff06 68%,#0000);mix-blend-mode:screen;filter:blur(58px) saturate(1.03);z-index:0;pointer-events:none;transform:rotate(-6deg) translate(-16vw);transform-origin:center;opacity:.52;animation:auroraDrift 62s ease-in-out infinite alternate}.desktop-light-beam:before,.desktop-light-beam:after{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none}.desktop-light-beam:before{background:linear-gradient(90deg,#0000,#81ffe905 40%,#6cffa81a,#81ffe905 64%,#0000);filter:blur(44px);opacity:.4;animation:auroraPulse 22s ease-in-out infinite}.desktop-light-beam:after{background:linear-gradient(90deg,#0000,#5a99ff04 36%,#9478ff12,#5a99ff04 66%,#0000);filter:blur(62px);opacity:.24;transform:translate(10vw) translateY(-11vh);animation:auroraPulse 28s ease-in-out infinite reverse}.desktop-canvas:before,.desktop-canvas:after{content:"";position:absolute;inset:0;pointer-events:none;z-index:1;opacity:0}.organize-button{position:absolute;right:14px;bottom:14px;z-index:9;border:1px solid rgba(255,255,255,.56);background:#0b182b73;color:#f5fbfffa;font-size:.68rem;letter-spacing:.02em;border-radius:10px;padding:6px 9px;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);cursor:pointer;opacity:.72}.organize-button:hover{opacity:1}.minimized-placeholder{position:absolute;right:14px;bottom:48px;z-index:9;border:1px solid rgba(255,255,255,.5);background:#0b182b70;border-radius:10px;padding:4px 7px;display:inline-flex;align-items:center;gap:6px;color:#f8fcfffa;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);opacity:.72;cursor:pointer}.minimized-placeholder:hover{opacity:1}.minimized-label{font-size:.63rem;letter-spacing:.02em;text-transform:uppercase}.minimized-badge{min-width:16px;height:16px;border-radius:999px;display:inline-grid;place-items:center;background:#f2fbffe6;color:#163759;font-size:.62rem;font-weight:700}.minimized-drawer{position:absolute;right:14px;bottom:82px;z-index:10;border:1px solid rgba(255,255,255,.35);background:#12223a59;border-radius:12px;padding:6px;min-width:144px;display:grid;gap:4px;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}.minimized-drawer-item{border:1px solid rgba(255,255,255,.18);background:#ffffff14;color:#f1f9fff2;border-radius:8px;padding:6px 8px;text-align:left;font-size:.7rem;cursor:pointer}.minimized-drawer-item:hover{background:#ffffff29}.desktop-canvas.weather-clear{background:radial-gradient(42% 36% at 84% 94%,#ffffff6b,#fff0 62%),linear-gradient(165deg,#0e5ca4,#0f73d0 52%,#2d96eb)}.desktop-canvas.weather-clear .desktop-bg-video{opacity:.74;filter:saturate(1.1) contrast(1.02) brightness(.84)}.desktop-canvas.weather-clear:before{opacity:.22;background:radial-gradient(circle at 78% 14%,#fff4c48c,#fff0 38%);animation:skyPulse 14s ease-in-out infinite}.desktop-canvas.weather-cloudy{background:radial-gradient(50% 28% at 78% 94%,#e8f0ff73,#fff0 64%),linear-gradient(165deg,#4f6d8f,#5f7a99 48%,#7a94b2)}.desktop-canvas.weather-cloudy .desktop-bg-video{opacity:.66;filter:saturate(.9) contrast(1.03) brightness(.8)}.desktop-canvas.weather-cloudy:before{opacity:.35;background:radial-gradient(260px 90px at 24% 26%,#f2f7ff57,#fff0),radial-gradient(320px 120px at 68% 42%,#ecf4ff47,#fff0);animation:cloudDrift 34s linear infinite}.desktop-canvas.weather-rain{background:radial-gradient(46% 26% at 82% 92%,#dae7ff33,#fff0 70%),linear-gradient(165deg,#35506f,#48607c,#5f7390)}.desktop-canvas.weather-rain .desktop-bg-video{opacity:.62;filter:saturate(.82) contrast(1.06) brightness(.7)}.desktop-canvas.weather-rain:before{opacity:.2;background:linear-gradient(180deg,#e0ecff00,#e0ecff17 45%,#e0ecff24),radial-gradient(180px 110px at 24% 14%,#cee0fc33,#fff0),radial-gradient(220px 130px at 76% 30%,#c6d9f633,#fff0);filter:blur(1.5px);will-change:transform,opacity;animation:rainSweep 4.8s ease-in-out infinite}.desktop-canvas.weather-snow{background:radial-gradient(circle at 85% 92%,#ffffff85,#fff0 56%),linear-gradient(165deg,#7b94ad,#94abc2 46%,#b4c8dd)}.desktop-canvas.weather-snow .desktop-bg-video{opacity:.58;filter:saturate(.8) contrast(1.03) brightness(.78)}.desktop-canvas.weather-snow:before{opacity:.18;background:radial-gradient(circle at 18% 22%,#ffffffb8 0 2px,#fff0 3px),radial-gradient(circle at 38% 8%,#ffffffa6 0 2px,#fff0 3px),radial-gradient(circle at 62% 34%,#ffffffb3 0 2px,#fff0 3px),radial-gradient(circle at 82% 18%,#ffffffad 0 2px,#fff0 3px);background-size:100% 100%;animation:snowDrift 18s linear infinite}.desktop-canvas.weather-storm{background:radial-gradient(circle at 74% 16%,#b5c0e52e,#fff0 32%),linear-gradient(165deg,#1f2c43,#2f3c58 45%,#43506e)}.desktop-canvas.weather-storm .desktop-bg-video{opacity:.56;filter:saturate(.75) contrast(1.08) brightness(.63)}.desktop-canvas.weather-storm:before{opacity:.26;background:radial-gradient(320px 110px at 34% 22%,#b5c3e642,#fff0),radial-gradient(260px 100px at 68% 34%,#aabadd38,#fff0);animation:cloudDrift 24s linear infinite}.desktop-canvas.weather-storm:after{opacity:0;background:radial-gradient(circle at 72% 16%,#e2ecff59,#fff0 45%);animation:stormFlash 7.6s steps(1,end) infinite}.desktop-canvas.weather-fog{background:radial-gradient(circle at 80% 90%,#eff3fb73,#fff0 60%),linear-gradient(165deg,#90a0b2,#9dadbf 48%,#afbecf)}.desktop-canvas.weather-fog .desktop-bg-video{opacity:.58;filter:saturate(.78) contrast(1.01) brightness(.74)}.desktop-canvas.weather-fog:before{opacity:.38;background:radial-gradient(360px 120px at 28% 34%,#eff4fc57,#fff0),radial-gradient(380px 140px at 70% 62%,#ebf1fb4d,#fff0);filter:blur(4px);animation:fogShift 22s linear infinite}.desktop-canvas.night{filter:none}.desktop-canvas:before,.desktop-canvas:after{display:none}.desktop-canvas[class*=weather-]{background:radial-gradient(125% 88% at 22% 105%,#101d33,#080f1f 46%,#040814)!important}.desktop-canvas.window-open .desktop-items{filter:blur(4px);transform:scale(.996);opacity:.9}.desktop-items{position:absolute;inset:0;z-index:2;transition:filter .16s ease,transform .16s ease,opacity .16s ease}.desktop-items.window-open{pointer-events:none}.desktop-note{position:absolute;left:0;top:0;width:150px;min-height:160px;border-radius:10px;padding:10px 10px 11px;color:#121a24;box-shadow:0 12px 24px #06182c47;cursor:grab;-webkit-user-select:none;user-select:none;touch-action:none;will-change:transform;transition:width .14s ease,min-height .14s ease,box-shadow .16s ease;z-index:3}.desktop-note.resizing{transition:none}.desktop-note.yellow{background:#ffe774fc}.desktop-note.white{background:#fbfdfffc}.desktop-note.dragging{cursor:grabbing}.desktop-note h3{margin:0 0 6px;font-size:.92rem;padding-right:12px}.desktop-note p{margin:0;font-size:.72rem;line-height:1.45}.note-resize-handle{position:absolute;width:14px;height:14px;z-index:4}.note-resize-nw{top:-3px;left:-3px;cursor:nwse-resize}.note-resize-ne{top:-3px;right:-3px;cursor:nesw-resize}.note-resize-sw{bottom:-3px;left:-3px;cursor:nesw-resize}.note-resize-se{bottom:-3px;right:-3px;cursor:nwse-resize}.desktop-item{position:absolute;left:0;top:0;width:112px;border:none;background:transparent;text-align:center;padding:0;display:grid;gap:8px;justify-items:center;cursor:pointer;transition:transform .12s ease,filter .12s ease;-webkit-user-select:none;user-select:none;touch-action:none;will-change:transform}.desktop-item:hover{filter:brightness(1.08)}.desktop-item.active{filter:brightness(1.16)}.desktop-item.dragging{cursor:grabbing;filter:brightness(1.16)}.item-icon{width:65px;height:65px;border-radius:13px;border:none;box-shadow:none;background-size:cover;background-position:center;transform:scale(1) rotate(0);transition:transform .17s cubic-bezier(.22,.68,.22,1),filter .17s ease}.desktop-item:hover .item-icon{transform:scale(1.09) rotate(20deg);filter:brightness(1.08) saturate(1.06)}.desktop-item.dragging .item-icon{transform:scale(1) rotate(0);filter:none}.item-icon.tone-blue{background-image:linear-gradient(140deg,#e5eefc,#8fb2e9)}.item-icon.tone-orange{background-image:linear-gradient(160deg,#ffca7e,#f27800)}.item-icon.tone-light{background-image:linear-gradient(160deg,#f7f8f9,#dce4ef)}.item-icon.icon-readme{background-image:url(/readme-icon.png)}.item-icon.icon-apps{background-image:url(/apps-icon.png)}.item-icon.icon-works{background-image:url(/work-icon.png);transform:scale(1) scaleX(-1) rotate(0)}.desktop-item:hover .item-icon.icon-works{transform:scale(1.09) scaleX(-1) rotate(-20deg)}.desktop-item.dragging .item-icon.icon-works{transform:scale(1) scaleX(-1) rotate(0)}.item-icon.icon-resume{background-image:url(/resume-icon.png)}.item-icon.tone-dark{background-image:linear-gradient(160deg,#7a8ca7,#1b2a45)}.item-text{display:grid;gap:2px;justify-items:center}.item-text strong{font-size:.9rem;font-weight:600;color:#fff;text-shadow:0 2px 5px rgba(4,20,38,.55)}.item-text small{font-size:.78rem;color:#f3f9fffa;text-shadow:0 1px 3px rgba(6,20,38,.55);font-family:var(--font-mono)}.window{position:absolute;left:0;top:0;width:min(780px,calc(100% - 70px));height:min(560px,calc(100% - 92px));border:1px solid rgba(188,195,214,.98);border-radius:14px;background:#fafbfeed;display:grid;grid-template-rows:auto 1fr;overflow:hidden;box-shadow:0 28px 56px #08102057;z-index:6;will-change:transform,width,height,top,left;transform-origin:top left;transition:transform .32s cubic-bezier(.22,.68,.22,1),left .32s cubic-bezier(.22,.68,.22,1),top .32s cubic-bezier(.22,.68,.22,1),width .32s cubic-bezier(.22,.68,.22,1),height .32s cubic-bezier(.22,.68,.22,1),border-radius .24s ease,opacity .22s ease}.window.resizing{transition:none}.window.maximized{left:48px;top:48px;width:calc(100% - 96px);height:calc(100% - 96px);border-radius:12px}.window.dragging{box-shadow:0 26px 54px #1018283d;transition:none}.window.minimizing{opacity:.35;pointer-events:none}.window-bar{border-bottom:1px solid rgba(186,194,212,.96);background:linear-gradient(180deg,#f6f8fcf5,#eff2f9f2);display:grid;grid-template-columns:minmax(4.5rem,1fr) auto minmax(4.5rem,1fr);align-items:center;gap:.35rem .5rem;padding:.55rem .75rem;cursor:grab}.window-bar-cluster{display:flex;align-items:center;min-height:22px}.window-bar-cluster--leading{justify-self:start}.window-bar-cluster--trailing{justify-self:end}.window-bar-download-btn{cursor:pointer!important}.resize-handle{position:absolute;width:14px;height:14px;z-index:7}.resize-nw{top:-3px;left:-3px;cursor:nwse-resize}.resize-ne{top:-3px;right:-3px;cursor:nesw-resize}.resize-sw{bottom:-3px;left:-3px;cursor:nesw-resize}.resize-se{bottom:-3px;right:-3px;cursor:nwse-resize}.window-controls{display:flex;gap:.28rem;padding:2px 0}.window-controls button{position:relative;width:20px;height:20px;border:none;border-radius:999px;padding:0;cursor:pointer;background:transparent}.window-controls button:before{content:"";position:absolute;width:12px;height:12px;left:50%;top:50%;transform:translate(-50%,-50%);border-radius:999px;border:1px solid rgba(0,0,0,.2)}.window-controls button:focus-visible{outline:2px solid rgba(67,143,255,.8);outline-offset:1px}.window-controls button:first-child:before{background:#ff5f57}.window-controls .minimize-button:before{background:#ffbd2e}.window-controls .maximize-button:before{background:#28c840}.window-meta{display:grid;line-height:1.15;justify-items:center;justify-self:center;width:auto;max-width:100%;margin:0}.window-meta strong{font-size:.79rem;font-weight:600}.window-meta small{color:#4d5870;font-size:.71rem}.window-content{padding:1.3rem 1.4rem;overflow:auto}.window-content--readme-resume,.window-content--resume-web{padding-top:1rem}.window-content h1{margin-top:0;margin-bottom:.55rem;font-size:clamp(1.45rem,2.3vw,2rem);font-weight:650;letter-spacing:-.01em}.lead{max-width:56ch;margin-top:0;color:#3b4250;line-height:1.5}.cards-grid{margin-top:1rem;display:grid;gap:.7rem;grid-template-columns:repeat(2,minmax(0,1fr))}.content-card,.timeline-row{border:1px solid rgba(211,216,226,.95);background:#ffffffd1;border-radius:12px;padding:.85rem .9rem}.content-card h2{margin:0 0 .25rem;font-size:.93rem;font-weight:650}.timeline{display:grid;gap:.6rem;margin-top:.95rem}.timeline-row{display:grid;gap:.22rem}.timeline-row span{font-size:.72rem;color:#697289;font-weight:600}.timeline-row p,.content-card p{margin:0;color:#2f3643;line-height:1.45}@keyframes cloudDrift{0%{transform:translate(-8%)}to{transform:translate(8%)}}@keyframes fogShift{0%{transform:translate(-6%)}50%{transform:translate(4%)}to{transform:translate(-6%)}}@keyframes rainSweep{0%{transform:translateY(-5%);opacity:.16}50%{transform:translateY(3%);opacity:.24}to{transform:translateY(-5%);opacity:.16}}@keyframes snowDrift{0%{transform:translateY(-5%) translate(0)}to{transform:translateY(8%) translate(3%)}}@keyframes stormFlash{0%,91%,to{opacity:0}93%{opacity:.42}94%{opacity:.12}95%{opacity:.32}}@keyframes skyPulse{0%,to{opacity:.2}50%{opacity:.32}}@keyframes auroraDrift{0%{transform:rotate(-6deg) translate(-16vw)}to{transform:rotate(-4deg) translate(10vw)}}@keyframes auroraPulse{0%,to{opacity:.16}50%{opacity:.34}}@media(prefers-reduced-motion:reduce){.desktop-light-beam{animation:none;transform:rotate(-5deg) translate(-6vw)}.desktop-light-beam:before,.desktop-light-beam:after{animation:none}}@media(max-width:860px){.window{width:calc(100% - 34px);height:calc(100% - 168px)}.cards-grid{grid-template-columns:1fr}.desktop-note{width:138px}}
