.theme-toggle{border:1px solid var(--line);background:var(--paper);width:26px;height:26px;color:var(--ink-soft);cursor:pointer;border-radius:50%;flex:none;justify-content:center;align-items:center;transition:color .2s,border-color .2s,transform .25s;display:flex}.theme-toggle:hover{color:var(--rose);border-color:var(--rose)}.theme-toggle:active{transform:scale(.85)}.theme-toggle svg{width:14px;height:14px}@media (prefers-reduced-motion:reduce){.theme-toggle{transition:none}}.chrome{background:var(--chrome);border-bottom:1px solid var(--line);cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;align-items:center;gap:16px;padding:14px 18px;display:flex}.chrome:active{cursor:grabbing}.dots{flex:none;gap:7px;display:flex}.dots span{border-radius:50%;width:10px;height:10px;display:inline-block}.dots span:first-child{background:var(--rose);opacity:.75}.dots span:nth-child(2){background:var(--lilac);opacity:.75}.dots span:nth-child(3){background:var(--sage);opacity:.75}.addr{background:var(--paper);border:1px solid var(--line);color:var(--ink-soft);border-radius:999px;flex:auto;align-items:center;gap:8px;min-width:0;padding:6px 14px;font-size:.82rem;display:flex;overflow:hidden}.addr .lock{opacity:.6;flex:none}.addr .url{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.addr .url b{color:var(--ink);font-weight:600}.tab{border:1px solid var(--line);color:var(--ink-soft);background:var(--chrome);cursor:pointer;text-align:left;border-right:none;border-radius:10px 0 0 10px;align-items:center;gap:10px;margin-right:14px;padding:10px 12px;font-family:inherit;font-size:.86rem;transition:background .2s,color .2s,margin-right .18s,box-shadow .2s;display:flex;position:relative}.tab .favicon{border-radius:50%;flex:none;width:8px;height:8px;box-shadow:0 0 0 3px #00000008}.tab[data-tab=about] .favicon{background:var(--rose)}.tab[data-tab=work] .favicon{background:var(--sage)}.tab[data-tab=contact] .favicon{background:var(--lilac)}.tab .label{flex:auto}.tab:hover{background:var(--paper);color:var(--ink)}.tab.active{background:var(--paper);color:var(--ink);z-index:2;margin-right:0;font-weight:600;box-shadow:0 6px 14px #2e27331a}@media (prefers-reduced-motion:reduce){.tab{transition:none}}@media (width<=620px){.tab{border:1px solid var(--line);border-bottom:none;border-radius:10px 10px 0 0;margin-bottom:12px;margin-right:0}.tab.active{margin-bottom:0}}.sidebar{background:var(--chrome);flex-direction:column;flex:0 0 190px;gap:22px;padding:22px 14px;display:flex}.who{align-items:center;gap:10px;padding:0 6px;display:flex}.avatar{background:var(--rose-soft);width:38px;height:38px;color:var(--rose);border-radius:50%;flex:none;justify-content:center;align-items:center;font-family:Instrument Serif,serif;font-size:.95rem;font-weight:600;display:flex}.who .name{font-size:.88rem;font-weight:600;line-height:1.15}.who .role{color:var(--ink-soft);font-size:.72rem}.who .pronouns{color:var(--ink-soft);opacity:.9;margin-top:2px;font-size:.58rem}.tabs{flex-direction:column;gap:8px;margin-right:-14px;display:flex}@media (width<=620px){.sidebar{flex-direction:row;flex:none;align-items:center;gap:14px;width:100%;padding:12px 14px;overflow-x:auto}.who{display:none}.tabs{flex-direction:row;gap:6px;margin-bottom:-12px;margin-right:0}}.panel{animation:none}.eyebrow{letter-spacing:.03em;color:var(--rose);margin:0 0 10px;font-family:Instrument Sans,sans-serif;font-size:.78rem;font-weight:600}.heading{letter-spacing:-.01em;margin:0 0 16px;font-family:Instrument Serif,serif;font-size:clamp(1.7rem,3vw,2.3rem);font-weight:600;line-height:1.15}.lede{color:var(--ink-soft);max-width:46ch;margin:0 0 22px;font-size:1rem;line-height:1.65}@media (width<=620px){.lede{max-width:none}}.chips{flex-wrap:wrap;gap:8px;margin-top:18px;display:flex}.chip{background:var(--sage-soft);color:var(--ink);border:1px solid var(--line);border-radius:999px;padding:5px 12px;font-size:.78rem}.timeline-item{gap:14px;display:flex}.timeline-marker{flex-direction:column;flex:none;align-items:center;width:9px;display:flex}.timeline-marker .dot{background:var(--rose);border-radius:50%;flex:none;width:9px;height:9px;margin-top:5px}.timeline-marker .line{background:var(--line);flex:auto;width:1px;margin-top:6px}.timeline-content{flex:auto;padding-bottom:26px}.timeline-head{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:10px;display:flex}.timeline-head h3{margin:0;font-family:Instrument Serif,serif;font-size:1.02rem;font-weight:600}.timeline-date{color:var(--ink-soft);white-space:nowrap;font-size:.76rem}.timeline-company{color:var(--rose);margin:2px 0 7px;font-size:.85rem;font-weight:600}.timeline-content p:not(.timeline-company){color:var(--ink-soft);max-width:48ch;margin:0;font-size:.89rem;line-height:1.6}.project{border:1px solid var(--line);background:var(--cream);border-radius:14px;padding:18px 20px;transition:border-color .2s,transform .2s}.project-head{justify-content:space-between;align-items:baseline;gap:10px;margin-bottom:6px;display:flex}.project-head h3{margin:0;font-family:Instrument Serif,serif;font-size:1.08rem;font-weight:600}.project-head a{color:var(--rose);white-space:nowrap;border-bottom:1px solid #0000;font-size:.78rem;text-decoration:none}.project-head a:hover{border-bottom-color:var(--rose)}.project p{color:var(--ink-soft);margin:0 0 10px;font-size:.9rem;line-height:1.55}.tagrow{flex-wrap:wrap;gap:6px;display:flex}.tag{background:var(--rose-soft);color:var(--ink);border-radius:999px;padding:3px 9px;font-size:.72rem}.project-preview{grid-template-rows:0fr;transition:grid-template-rows .6s;display:grid}.project:hover .project-preview{grid-template-rows:1fr}.project-preview-inner{min-height:0;overflow:hidden}.project-preview-inner img{border:1px solid var(--line);border-radius:10px;width:100%;display:block}.project-preview-link{margin-top:14px;display:block;position:relative}.project-preview-hint{background:var(--ink);color:var(--cream);white-space:nowrap;opacity:0;border-radius:999px;padding:5px 11px;font-size:.72rem;font-weight:600;transition:opacity .2s,transform .2s;position:absolute;inset:auto 10px 10px auto;transform:translateY(4px)}.project-preview-link:hover .project-preview-hint{opacity:1;transform:translateY(0)}.section-label{color:var(--ink);align-items:center;gap:9px;margin:16px 0;font-family:Instrument Serif,serif;font-size:1.02rem;font-weight:600;display:flex}.timeline{flex-direction:column;display:flex}.projects{flex-direction:column;gap:16px;display:flex}.copy-email{color:var(--ink-soft);border:1px dashed var(--line);cursor:pointer;background:0 0;border-radius:999px;align-items:center;gap:8px;margin-top:18px;padding:7px 14px;font-family:inherit;font-size:.82rem;transition:color .2s,border-color .2s;display:inline-flex}.copy-email:hover{color:var(--rose);border-color:var(--rose)}.contact-links{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;width:min(100%,640px);margin-top:6px;display:grid}.contact-links a{width:100%;min-width:0;color:var(--ink);overflow-wrap:anywhere;word-break:break-word;border:1px solid var(--line);background:var(--cream);border-radius:10px;align-items:center;gap:10px;padding:9px 12px;font-size:.92rem;text-decoration:none;transition:border-color .2s,color .2s;display:flex}.contact-links a:hover{border-color:var(--rose);color:var(--rose)}.contact-links svg{flex:none;width:15px;height:15px}@media (width<=620px){.contact-links{grid-template-columns:1fr}}.browser{background:var(--paper);border:1px solid var(--line);border-radius:18px;flex-direction:column;flex-shrink:0;width:920px;max-width:90vw;height:min(620px,82vh);display:flex;overflow:hidden;box-shadow:0 26px 50px -18px #211c194d,0 2px 6px #211c1914}.body-row{flex:auto;min-height:0;display:flex}.content{flex:auto;min-width:0;min-height:0;padding:42px 46px;position:relative;overflow:hidden auto}@media (width<=620px){.browser{width:100%;max-width:none}.body-row{flex-direction:column;min-height:0}.content{padding:30px 24px}}.music-panel{--spotify-green:#1db954;--spotify-gray:#b3b3b3;color:#fff;background:linear-gradient(#2a1e3d 0%,#121212 320px);min-height:100%;padding:28px 32px 32px;font-family:Instrument Sans,ui-sans-serif,system-ui,sans-serif}.music-header{align-items:flex-end;gap:20px;margin-bottom:24px;display:flex}.cover-art{color:#ffffffd9;background:linear-gradient(135deg, var(--spotify-green), #1a5a35);border-radius:6px;flex:none;justify-content:center;align-items:center;width:112px;height:112px;font-size:2.4rem;display:flex;box-shadow:0 12px 28px -10px #0009}.music-meta{min-width:0}.music-kicker{margin:0 0 6px;font-size:.8rem;font-weight:600}.music-title{letter-spacing:-.02em;margin:0 0 10px;font-family:inherit;font-size:clamp(1.8rem,4vw,2.6rem);font-weight:800;line-height:1.1}.music-sub{color:var(--spotify-gray);margin:0;font-size:.85rem}.track-list{flex-direction:column;display:flex}.track-embed{border:none;border-radius:12px;margin:4px;display:block}@media (width<=620px){.music-panel{padding:22px 20px 26px}.music-header{align-items:center}.cover-art{width:84px;height:84px;font-size:1.8rem}}.music-window{z-index:0;transform-origin:0 0;width:720px;max-width:90vw;position:absolute;top:0;box-shadow:0 20px 40px -18px #211c1947,0 2px 6px #211c190f}.content.music-content{background:#121212;padding:0}@media (width<=620px){.music-window{display:none}}.terminal-panel{--term-fg:#d8d8d8;--term-muted:#7c8a80;--term-green:#6bcf7f;--term-cyan:#6fc9d6;--term-amber:#e3b566;--term-pink:#d789b0;min-height:100%;color:var(--term-fg);letter-spacing:.01em;background:#1a1a1a;padding:24px 26px 32px;font-family:Inconsolata,ui-monospace,SF Mono,Menlo,Consolas,monospace;font-size:.83rem;font-weight:500;line-height:1.45}.terminal-line{align-items:center;gap:8px;margin-top:14px;display:flex}.terminal-line:first-child{margin-top:0}.terminal-prompt{color:var(--term-green);flex:none;font-weight:700}.terminal-output{color:var(--term-fg);margin:4px 0 0}.terminal-cursor{background:var(--term-fg);width:7px;height:1em;margin-left:2px;animation:1s step-end infinite terminal-blink;display:inline-block}@keyframes terminal-blink{0%,49%{opacity:1}50%,to{opacity:0}}.resume-doc{background:#ffffff08;border:1px solid #ffffff12;border-radius:8px;margin-top:10px;padding:18px 20px}.resume-dot{color:var(--term-muted)}.resume-header{border-bottom:1px dashed #ffffff24;margin-bottom:14px;padding-bottom:14px}.resume-name{letter-spacing:-.01em;color:#fff;margin:0 0 2px;font-family:Inconsolata,ui-monospace,SF Mono,Menlo,Consolas,monospace;font-size:1.7rem;font-weight:700}.resume-title{color:var(--term-pink);margin:0 0 6px;font-weight:600}.resume-contact{color:var(--term-muted);margin:0;font-size:.8rem}.resume-comment{color:var(--term-green);opacity:.85;margin:0 0 20px;font-style:italic}.resume-section{margin-top:22px}.resume-heading{text-transform:uppercase;letter-spacing:.06em;color:var(--term-cyan);margin:0 0 12px;font-size:.86rem;font-weight:700}.resume-heading-mark{color:var(--term-muted);margin-right:6px;font-weight:400}.resume-skills{flex-direction:column;gap:8px;margin:0;display:flex}.resume-skill-row{align-items:baseline;gap:10px;display:flex}.resume-skill-key{min-width:82px;color:var(--term-amber);text-transform:lowercase;flex:none;font-weight:600}.resume-skill-value{color:var(--term-fg);margin:0}.resume-skill-item{color:var(--term-fg)}.resume-skill-sep{color:var(--term-muted)}.resume-job{margin-top:18px}.resume-job:first-of-type{margin-top:0}.resume-job-head{font-weight:600}.resume-job-role{color:#fff}.resume-job-at{color:var(--term-muted)}.resume-job-company{color:var(--term-pink)}.resume-job-meta{color:var(--term-muted);margin:2px 0 8px;font-size:.8rem;font-style:italic}.resume-bullets{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.resume-bullet{text-indent:-1.2em;color:var(--term-fg);padding-left:1.2em}.resume-bullet-mark{color:var(--term-green)}.resume-links{border-top:1px dashed #ffffff24;margin:22px 0 0;padding-top:14px;font-size:.8rem}.resume-link{color:var(--term-cyan);text-underline-offset:3px;-webkit-text-decoration:underline #6fc9d666;text-decoration:underline #6fc9d666}@media (width<=620px){.terminal-panel{padding:20px 18px 28px;font-size:.78rem}.resume-skill-row{flex-direction:column;gap:2px}.resume-skill-key{min-width:0}}.terminal-window{z-index:0;transform-origin:0 0;width:760px;max-width:90vw;height:min(600px,78vh);position:absolute;top:0;left:50%;box-shadow:0 20px 40px -18px #211c1947,0 2px 6px #211c190f}.content.terminal-content{background:#1a1a1a;padding:0;overflow-y:auto}@media (width<=620px){.terminal-window{display:none}}.window-stack{width:100vw;height:100vh;position:relative;overflow:hidden}.window-stack .browser{z-index:2;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}:root{--page-bg:#f3f3f3;--cream:#ede7dc;--paper:#fdfbf7;--chrome:#eee6d8;--ink:#28221f;--ink-soft:#75695d;--rose:#bb3a29;--rose-soft:#ead8d0;--sage:#6b7a4a;--sage-soft:#e3e6ce;--lilac:#a67a38;--lilac-soft:#eedfc0;--line:#dcd0ba;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--cream:#1e1a17;--paper:#282320;--chrome:#2e2824;--ink:#f4ebdf;--ink-soft:#afa192;--rose:#e0a093;--rose-soft:#472f2c;--sage:#b8c593;--sage-soft:#343820;--lilac:#deb973;--lilac-soft:#3f331e;--line:#3c332b;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}:root[data-theme=dark]{--cream:#1e1a17;--paper:#282320;--chrome:#2e2824;--ink:#f4ebdf;--ink-soft:#afa192;--rose:#e0a093;--rose-soft:#472f2c;--sage:#b8c593;--sage-soft:#343820;--lilac:#deb973;--lilac-soft:#3f331e;--line:#3c332b;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--page-bg);height:100vh;min-height:100vh;color:var(--ink);background-image:radial-gradient(circle at 12% 18%,#b15a4f14,#0000 40%),radial-gradient(circle at 88% 82%,#6b7a4a17,#0000 42%);font-family:Instrument Sans,ui-sans-serif,system-ui,sans-serif;overflow:hidden}.display{font-family:Instrument Serif,Georgia,serif}a:focus-visible,button:focus-visible{outline:2px solid var(--rose);outline-offset:2px}
