.desktop{--glass:#1c16288c;--window:#1e1a26eb;--window-border:#ffffff1f;--text:#f1edf7;--muted:#f1edf799;--accent:#b48cff;--select:#a078ff73;color:var(--text);-webkit-user-select:none;user-select:none;opacity:0;pointer-events:none;background:#2a1d3d;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,system-ui,sans-serif;font-size:13px;position:fixed;top:0;left:0;overflow:hidden;container-type:size}.desktop-active .desktop{opacity:1;pointer-events:auto;transition:opacity .2s ease-out}.wallpaper{--aspect:2;--focus-x:.44;--focus-y:.4;--h:max(100cqw / var(--aspect), 100cqh);--w:calc(var(--h) * var(--aspect));content:"";background-image:url(/wallpaper.webp),url(/wallpaper-small.webp);background-repeat:no-repeat;background-size:var(--w) var(--h);background-position:clamp(100cqw - var(--w), 50cqw - var(--focus-x) * var(--w), 0px) clamp(100cqh - var(--h), 50cqh - var(--focus-y) * var(--h), 0px);position:absolute;inset:0}:where(.desktop) button{font:inherit;color:inherit;cursor:default;background:0 0;border:0;padding:0}.menu-bar{z-index:100000;text-shadow:0 1px 3px #00000073;align-items:center;gap:18px;padding:0 14px;font-size:13px;display:flex;position:absolute;inset:0 0 auto}.menu-mark svg{filter:drop-shadow(0 1px 2px #00000073)}.menu-mark{color:var(--text);display:flex}.menu-item{opacity:.9}.menu-action{border-radius:5px;align-items:center;gap:6px;margin-left:4px;padding:2px 8px;display:flex}.menu-action:hover,.menu-action:focus-visible{background:#ffffff2e}.menu-action kbd{font:inherit;opacity:.8;border:1px solid #ffffff59;border-radius:3px;padding:0 4px;font-size:11px;line-height:14px}.menu-spacer{flex:1}.desktop-icons{flex-direction:column;gap:10px;display:flex;position:absolute;top:44px;right:18px}.desktop-icon{border-radius:6px;flex-direction:column;align-items:center;gap:4px;width:92px;padding:6px 4px;display:flex}.desktop-icon span{text-shadow:0 1px 3px #000c;border-radius:4px;padding:1px 6px;font-size:12px;font-weight:500}.desktop-icon.selected svg{background:#00000040;border-radius:6px}.desktop-icon.selected span{background:var(--select);text-shadow:none}.desktop-icon:focus-visible,.finder-item:focus-visible,.dock-item:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.window{background:var(--window);border:1px solid var(--window-border);-webkit-backdrop-filter:blur(30px);border-radius:12px;flex-direction:column;animation:.18s ease-out window-open;display:flex;position:absolute;overflow:hidden;box-shadow:0 22px 70px #0000008c,0 0 0 .5px #0009}.window:not(.focused){box-shadow:0 12px 40px #0006}.window.maximized{border-radius:0}@keyframes window-open{0%{opacity:0;transform:scale(.96)}}.title-bar{touch-action:none;background:#ffffff08;border-bottom:1px solid #ffffff0f;flex:none;align-items:center;height:36px;padding:0 12px;display:flex;position:relative}.traffic-lights{z-index:1;gap:8px;display:flex;position:relative}.light{border-radius:50%;place-items:center;width:12px;height:12px;display:grid}.window .light{background:#ffffff2e}.light svg{opacity:0;fill:#0000008c;stroke:#0000008c;stroke-width:1.3px;stroke-linecap:round;width:10px;height:10px}.close svg,.minimize svg{fill:none}.zoom svg{stroke:none}.traffic-lights:hover .light svg{opacity:1}.window.focused .close,.traffic-lights:hover .close{background:#ff5f57}.window.focused .minimize,.traffic-lights:hover .minimize{background:#febc2e}.window.focused .zoom,.traffic-lights:hover .zoom{background:#28c840}.window-title{color:var(--muted);pointer-events:none;place-items:center;font-weight:600;display:grid;position:absolute;inset:0}.window.focused .window-title{color:var(--text)}.window-body{overscroll-behavior:contain;-webkit-user-select:text;user-select:text;flex:1;min-height:0;overflow:auto}.resize{z-index:2;position:absolute}.resize-n,.resize-s{cursor:ns-resize;height:6px;left:10px;right:10px}.resize-e,.resize-w{cursor:ew-resize;width:6px;top:10px;bottom:10px}.resize-n{top:0}.resize-s{bottom:0}.resize-e{right:0}.resize-w{left:0}.resize-ne,.resize-nw,.resize-se,.resize-sw{width:12px;height:12px}.resize-ne{cursor:nesw-resize;top:0;right:0}.resize-sw{cursor:nesw-resize;bottom:0;left:0}.resize-nw{cursor:nwse-resize;top:0;left:0}.resize-se{cursor:nwse-resize;bottom:0;right:0}.menu-zone,.dock-zone{z-index:100000;position:absolute;left:0;right:0}.menu-zone{top:0}.dock-zone{bottom:0}.full-screen .dock-zone{height:6px}.window.maximized .title-bar{z-index:4;background:var(--window);-webkit-backdrop-filter:blur(30px);transition:transform .25s cubic-bezier(.2,.8,.2,1);position:absolute;inset:0 0 auto;transform:translateY(-100%)}.title-reveal{z-index:3;height:6px;position:absolute;inset:0 0 auto}.window.maximized:has(.title-reveal:hover,.title-bar:hover) .title-bar{transform:none}.full-screen:has(.menu-zone:hover) .window.maximized .title-bar{transform:none}.desktop-active .full-screen .dock-zone:not(:hover) .dock,.full-screen .dock-zone:not(:hover) .dock{transform:translate(-50%,calc(100% + 12px))}.dock{z-index:100000;background:var(--glass);border:1px solid var(--window-border);-webkit-backdrop-filter:blur(24px)saturate(1.4);border-radius:20px;align-items:flex-end;gap:6px;padding:6px 8px 4px;display:flex;position:absolute;bottom:8px;left:50%;transform:translate(-50%,calc(100% + 12px))}.desktop-active .dock{transition:transform .35s cubic-bezier(.2,.8,.2,1) .1s;transform:translate(-50%)}.dock-item{transform-origin:bottom;flex-direction:column;align-items:center;transition:transform .15s;display:flex;position:relative}.dock-item:hover{transform:scale(1.22)translateY(-4px)}.dock-item svg{filter:drop-shadow(0 3px 6px #00000059);display:block}.dock-dot{border-radius:50%;width:4px;height:4px;margin-top:3px}.dock-dot.on{background:var(--text)}.dock-label{border:1px solid var(--window-border);white-space:nowrap;opacity:0;pointer-events:none;background:#1e1a26d9;border-radius:6px;padding:4px 10px;font-size:12px;transition:opacity .12s;position:absolute;bottom:calc(100% + 10px);transform:scale(.82)}.dock-item:hover .dock-label{opacity:1}.finder{height:100%;display:flex}.finder-sidebar{background:#ffffff08;border-right:1px solid #ffffff0f;flex-direction:column;gap:2px;width:160px;padding:10px 8px;display:flex}.finder-heading{color:var(--muted);margin:4px 8px 6px;font-size:11px;font-weight:600}.finder-place{text-align:left;border-radius:6px;padding:5px 8px}.finder-place:hover{background:#ffffff0f}.finder-place.active{background:#ffffff1a}.finder-main{flex:1;position:relative;overflow:auto}.finder-grid{grid-template-columns:repeat(auto-fill,112px);gap:8px;padding:16px;display:grid}.finder-item{text-align:center;border-radius:8px;flex-direction:column;align-items:center;gap:4px;padding:8px 4px;display:flex}.finder-item span{border-radius:4px;padding:1px 6px;font-size:12px}.finder-item.selected{background:#ffffff14}.finder-item.selected span{background:var(--select)}.finder-status{bottom:0;text-align:center;color:var(--muted);border-top:1px solid #ffffff0f;margin:0;padding:6px;font-size:11px;position:absolute;inset-inline:0}.doc{padding:22px 26px 28px;font-size:14px;line-height:1.55}.doc h1{margin:0;font-size:22px;font-weight:650}.doc h2{letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin:22px 0 10px;font-size:12px;font-weight:600}.doc section:first-child h2{margin-top:0}.doc p{margin:0 0 12px}.muted{color:var(--muted)}.project-header,.about-header{align-items:center;gap:14px;margin-bottom:16px;display:flex}.project-header p,.about-header p{margin:2px 0 0}.avatar{background:linear-gradient(135deg,#c77dff,#5b8def);border-radius:50%;place-items:center;width:64px;height:64px;font-size:22px;font-weight:700;display:grid}.chips{flex-wrap:wrap;gap:6px;margin:0 0 16px;padding:0;list-style:none;display:flex}.chips li{background:#ffffff14;border:1px solid #ffffff14;border-radius:999px;padding:3px 10px;font-size:12px}.timeline{margin:0;padding:0;list-style:none}.timeline li{border-top:1px solid #ffffff12;grid-template-columns:1fr auto;padding:10px 0;display:grid}.timeline span:not(.muted){color:var(--muted);grid-column:1}.timeline .muted{grid-area:1/2;font-size:12px}.actions{gap:8px;margin-top:18px;display:flex}.desktop .button{color:var(--text);cursor:pointer;background:#ffffff1a;border:1px solid #ffffff1f;border-radius:7px;padding:6px 14px;font-size:13px;text-decoration:none;display:inline-block}.desktop .button:hover{background:#ffffff29}.desktop .button.primary{background:var(--accent);color:#1b1326;border-color:#0000;font-weight:600}.contact-row{background:#ffffff0d;border-radius:10px;justify-content:space-between;align-items:center;gap:12px;padding:12px 14px;display:flex}.contact a:not(.button){color:var(--accent);font-weight:500;text-decoration:none}.resume{flex-direction:column;height:100%;display:flex}.toolbar{border-bottom:1px solid #ffffff0f;gap:8px;padding:8px 10px;display:flex}.resume-view{background:#f4f2ee;flex:1;position:relative}.resume-page{background:#fff;padding:28px 32px;position:absolute;inset:16px 12%;box-shadow:0 2px 10px #00000026}.resume-page span{background:#d9d6cf;border-radius:4px;height:7px;margin-bottom:11px;display:block}.resume-page span:first-child{background:#9a968e;width:40%;height:14px;margin:0 auto 22px}.resume iframe{background:#fff;border:0;width:100%;height:100%;position:absolute;inset:0}@media (prefers-reduced-motion:reduce){.window{animation:none}.dock-item,.dock-item:hover,.desktop-active .dock{transition:none}.dock-item,.dock-item:hover{transform:none}}.phone{--app-bg:#0f0d13;--card:#1d1a24;--line:#ffffff12;--text:#f1edf7;--muted:#f1edf799;--accent:#b48cff;--status-height:28px;--nav-height:48px;color:var(--text);-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;opacity:0;pointer-events:none;background:#2a1d3d;font-family:Roboto,system-ui,-apple-system,Segoe UI,sans-serif;font-size:14px;position:fixed;top:0;left:0;overflow:hidden;container-type:size}.desktop-active .phone{opacity:1;pointer-events:auto;transition:opacity .2s ease-out}:where(.phone) button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:0;padding:0}.status-bar{z-index:30;height:var(--status-height);pointer-events:none;justify-content:space-between;align-items:center;padding:0 18px;font-size:13px;font-weight:500;display:flex;position:absolute;inset:0 0 auto}.status-icons{align-items:center;gap:5px;display:flex}.status-icons svg{fill:currentColor;width:14px;height:14px}.status-icons .battery{width:18px;height:18px}.home{padding:var(--status-height) 10px var(--nav-height);text-shadow:0 1px 4px #00000080;flex-direction:column;display:flex;position:absolute;inset:0}.clock-widget{flex-direction:column;margin:14cqh 0 auto 18px;display:flex}.clock-time{letter-spacing:-.02em;font-size:64px;font-weight:300;line-height:1}.clock-date{margin-top:6px;font-size:15px}.app-grid,.home-dock{grid-template-columns:repeat(4,1fr);row-gap:18px;display:grid}.app-grid{margin-bottom:22px}.home-dock{margin-bottom:14px}.app-icon{flex-direction:column;align-items:center;gap:6px;font-size:12px;display:flex}.phone .wallpaper{--focus-x:.46}.app-icon svg{filter:drop-shadow(0 2px 6px #0000004d)}.app-icon:active svg{transform:scale(.92)}.home-dock .app-icon span{display:none}.tasks{z-index:10;pointer-events:none;position:absolute;inset:0}.task{display:none;position:absolute;inset:0}.task.shown{pointer-events:auto;display:block}.task-screen{background:var(--app-bg);position:absolute;inset:0;overflow:hidden}.view-app .task.shown .task-screen{animation:.22s ease-out app-open}@keyframes app-open{0%{opacity:0;transform:scale(.92)}}.view-recents .tasks{overscroll-behavior-x:contain;scroll-snap-type:x mandatory;scrollbar-width:none;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);pointer-events:auto;background:#0a080e8c;align-items:center;gap:6cqw;padding:0 14cqw;display:flex;overflow-x:auto}.view-recents .task{scroll-snap-align:center;touch-action:pan-x;flex:0 0 72cqw;height:72cqh;transition:transform .2s,opacity .2s;position:relative;inset:auto}.view-recents .task.closing{opacity:0;transform:translateY(-110%)!important}.view-recents .task-screen{transform-origin:0 0;pointer-events:none;border-radius:34px;width:100cqw;height:100cqh;inset:0 auto auto 0;transform:scale(.72)}.task-label{justify-content:center;align-items:center;gap:8px;font-size:13px;font-weight:500;display:flex;position:absolute;bottom:calc(100% + 10px);left:0;right:0}.recents-empty{color:var(--muted);margin:auto}.close-all{bottom:calc(var(--nav-height) + 14px);z-index:20;border-radius:999px;padding:8px 18px;font-size:13px;font-weight:500;position:absolute;left:50%;translate:-50%;background:#ffffff1f!important}.page{padding:var(--status-height) 0 var(--nav-height);background:var(--app-bg);flex-direction:column;display:flex;position:absolute;inset:0}.toolbar-compact{flex:none;align-items:center;gap:6px;height:52px;padding:0 18px;font-size:19px;font-weight:600;display:flex}.toolbar-compact span{opacity:0;transition:opacity .15s}.page.scrolled .toolbar-compact span{opacity:1}.toolbar-back{border-radius:50%;place-items:center;width:36px;height:36px;margin-left:-10px;display:grid}.toolbar-back svg,.chevron,.nav-bar svg{fill:none;stroke:currentColor;stroke-width:2px;stroke-linecap:round;stroke-linejoin:round}.toolbar-back svg{width:22px;height:22px}.page-body{overscroll-behavior:contain;scrollbar-width:none;flex:1;overflow-y:auto}.page-title{align-items:center;min-height:22cqh;margin:0;padding:0 24px 12px;font-size:32px;font-weight:500;line-height:1.15;display:flex}.page-content{min-height:100%;padding:0 12px 16px}.page-content>.doc,.list,.resume-card{background:var(--card);border-radius:24px;margin:0}.page-content>.doc{padding:20px 20px 22px}.phone .project-header h1{display:none}.phone .timeline li{grid-template-columns:1fr}.phone .timeline .muted{grid-area:auto/1}.list{margin:0;padding:4px 0;list-style:none}.list li+li{border-top:1px solid var(--line);margin:0 18px}.list li+li button{padding-inline:0}.list button{text-align:left;align-items:center;gap:14px;width:100%;padding:12px 18px;display:flex}.list li:first-child button,.list li:first-child{margin:0}.list button>span{flex-direction:column;flex:1;min-width:0;display:flex}.list strong{font-size:16px;font-weight:500}.list .muted{font-size:13px}.chevron{width:18px;height:18px;color:var(--muted);flex:none}.subpage{z-index:2;animation:.22s ease-out slide-in;position:absolute;inset:0}@keyframes slide-in{0%{opacity:0;transform:translate(30%)}}.phone .button{color:var(--text);background:#ffffff1a;border-radius:999px;padding:10px 18px;font-size:14px;font-weight:500;text-decoration:none;display:inline-block}.phone .button.primary{background:var(--accent);color:#1b1326}.phone .actions{justify-content:center}.resume-card{padding:18px}.phone .resume-page{aspect-ratio:8.5/11;padding:22px 24px;position:relative;inset:auto}.phone .resume-page span{height:6px;margin-bottom:9px}.nav-bar{z-index:40;height:var(--nav-height);grid-template-columns:repeat(3,1fr);padding:0 28px;display:grid;position:absolute;inset:auto 0 0}.view-app .nav-bar{background:var(--app-bg)}.nav-bar button{place-items:center;display:grid}.nav-bar svg{stroke-width:1.8px;filter:drop-shadow(0 1px 2px #0006);width:22px;height:22px}@media (prefers-reduced-motion:reduce){.view-app .task.shown .task-screen,.subpage{animation:none}.view-recents .task{transition:none}}:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--night:#0d1220;--cream:#f3e6d3;--amber:#e0a35c;font-family:system-ui,-apple-system,Segoe UI,sans-serif}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}html{overscroll-behavior-y:none}body{background:var(--night);color:var(--cream)}.scene{position:fixed;inset:0}.hero{pointer-events:none;opacity:clamp(0, calc(1 - var(--scroll,0) * 7), 1);position:fixed;top:32px;left:32px}.hero h1{letter-spacing:-.01em;margin:0;font-size:2rem;font-weight:600}.hero p{opacity:.75;margin:4px 0 0}.no-webgl .menu-action,.no-webgl .cafe-icon{display:none!important}.scroll-track{height:500vh}.scroll-cue{color:inherit;font:inherit;letter-spacing:.2em;text-transform:uppercase;white-space:nowrap;cursor:pointer;opacity:clamp(0, calc(1 - var(--scroll,0) * 20), .7);background:0 0;border:0;border-radius:999px;margin:0;padding:8px 14px;font-size:12px;transition:background .2s;animation:2s ease-in-out infinite bob;position:fixed;bottom:32px;left:50%}.scroll-cue:hover,.scroll-cue:focus-visible{background:#00000059}.scrolled .scroll-cue{pointer-events:none}@keyframes bob{0%,to{transform:translate(-50%)}50%{transform:translate(-50%,6px)}}@media (prefers-reduced-motion:reduce){.scroll-cue{animation:none;transform:translate(-50%)}}
