@import"https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap";.terminal{width:100%;max-width:860px;margin:0 auto;border-radius:12px;overflow:hidden;font-family:var(--font-mono);background:#15161d;border:1px solid rgba(255,255,255,.09);box-shadow:0 50px 110px -45px #000000bf,0 0 0 1px #ffffff08 inset;cursor:text}.term-bar{position:relative;display:flex;align-items:center;padding:.62rem .85rem;background:#33333c;border-bottom:1px solid rgba(0,0,0,.35)}.term-dots{display:flex;gap:8px}.term-dots span{width:12px;height:12px;border-radius:50%;display:block;box-shadow:0 0 0 .5px #00000040 inset}.term-title{position:absolute;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:.4rem;color:#c9ccd6;font-size:.8rem;font-weight:500;white-space:nowrap}.term-folder{font-size:.85rem}.term-body{background:#15161d;padding:1.6rem 1.75rem 1.5rem;font-size:.9rem;line-height:1.75;color:#e7e9f0;height:460px;overflow-y:auto;scrollbar-width:thin;scrollbar-color:#3a3b46 transparent}.term-guide{display:inline-grid;grid-template-columns:auto auto;gap:.15rem 1.5rem;margin:.35rem 0}.term-guide>div{display:contents}.term-guide .term-key{font-weight:600}.term-body::-webkit-scrollbar{width:9px}.term-body::-webkit-scrollbar-thumb{background:#2e2f39;border-radius:6px}.term-block{margin-bottom:.5rem}.term-line{white-space:pre-wrap;word-break:break-word}.term-dim{color:#908a7e}.term-path{color:#cdbaa0}.term-arrow{color:#c4b39a;font-weight:700}.term-cmd{color:#f0ece5}.term-dir{color:#cebd9f}.term-file{color:#d9d3c8}.term-err{color:#cf9a8a}.term-key{color:#cebd9f}.term-body a{color:#cebd9f;border-bottom:1px solid rgba(206,189,159,.35)}.term-body a:hover{color:#e0d3ba}.term-banner{margin:0;color:#c4b39a;font-size:.62rem;line-height:1.05;white-space:pre;overflow-x:auto}.term-lsx{display:grid;gap:.1rem;margin:.15rem 0}.term-lsx-row{display:grid;grid-template-columns:200px 1fr;gap:1rem}.term-board{display:inline-block;margin:.15rem 0}.term-board-head{color:#8c92a3;letter-spacing:.12em;font-size:.78rem;margin-bottom:.35rem}.term-board-row{display:grid;grid-template-columns:230px 110px auto;align-items:baseline}.term-wip{color:#d3b884}.term-ok{color:#84bfa3}@media (max-width: 640px){.term-lsx-row{grid-template-columns:150px 1fr}.term-board-row{grid-template-columns:170px 95px auto}}.term-neofetch{display:flex;gap:1.4rem;align-items:center;flex-wrap:wrap}.term-portrait{margin:0;color:#b9c0d4;font-size:.4rem;line-height:1.05;white-space:pre}.term-nfinfo div{line-height:1.6}.term-input-line{display:flex;align-items:center}.term-input{flex:1;min-width:4ch;background:transparent;border:none;color:#f4f4f8;font-family:var(--font-mono);font-size:.9rem;caret-color:#c4b39a;padding:0;margin-left:.1rem}.term-input:focus,.term-input:focus-visible{outline:none;border-radius:0}@media (max-width: 640px){.term-title{font-size:.68rem}.term-body{height:420px;font-size:.8rem;padding:.9rem 1rem}.term-input{font-size:.8rem}.term-banner{font-size:.45rem}}.hero{max-width:none;width:100%;min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2.5rem;padding:5.5rem 1.5rem 3.5rem;position:relative;overflow:hidden;background:#161310}.hero-inner{width:100%;max-width:880px;margin:0 auto}.hero-scroll{display:inline-flex;flex-direction:column;align-items:center;gap:.4rem;font-family:var(--font-mono);font-size:.7rem;text-transform:uppercase;letter-spacing:.18em;color:#ffffff73;transition:color .2s var(--ease)}.hero-scroll:hover{color:#fffc}.hero-scroll-arrow{font-size:1rem;animation:hero-bob 1.8s ease-in-out infinite}@keyframes hero-bob{0%,to{transform:translateY(0)}50%{transform:translateY(4px)}}@media (max-width: 720px){.hero{min-height:100vh;padding:5rem 1rem 3rem}}.thero{min-height:calc(100vh - 4rem);display:flex;align-items:center}.thero-grid{width:100%;display:grid;grid-template-columns:1fr 320px;gap:4rem;align-items:center}.thero-eyebrow{font-family:var(--font-mono);font-size:.8rem;letter-spacing:.04em;color:var(--text-muted);margin-bottom:1.25rem;min-height:1.2em}.type-caret{display:inline-block;width:1px;height:1em;margin-left:2px;vertical-align:-.12em;background:var(--text-muted);animation:caret-blink 1s steps(1) infinite}.type-caret.done{animation:caret-blink 1s steps(1) 3,caret-fade .4s 3s var(--ease) forwards}@keyframes caret-blink{0%,50%{opacity:1}50.01%,to{opacity:0}}@keyframes caret-fade{to{opacity:0;width:0;margin-left:0}}.thero-headline{font-size:clamp(2.25rem,4.5vw,3.5rem);font-weight:700;letter-spacing:-.03em;line-height:1.1;color:var(--text);max-width:16ch;margin-bottom:1.5rem;text-wrap:balance;cursor:default;transition:letter-spacing .4s var(--ease),color .3s var(--ease)}.thero-headline:hover{letter-spacing:-.02em;color:var(--accent)}.thero-headline,.thero-bio,.thero-facts,.thero-cta{animation:rise .7s var(--ease) both}.thero-headline{animation-delay:.06s}.thero-bio{animation-delay:.12s}.thero-facts{animation-delay:.18s}.thero-cta{animation-delay:.24s}@keyframes rise{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}@media (prefers-reduced-motion: reduce){.thero-eyebrow,.thero-headline,.thero-bio,.thero-facts,.thero-cta{animation:none}}.thero-bio{max-width:48ch;font-size:clamp(1rem,1.4vw,1.12rem);line-height:1.65;color:var(--text-muted);margin-bottom:1.8rem;text-wrap:pretty}.thero-facts{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:1.8rem}.thero-facts>span,.thero-facts>a{display:inline-flex;align-items:center;gap:.3rem;font-family:var(--font-mono);font-size:.74rem;padding:.3rem .7rem;border-radius:999px;background:var(--bg-subtle);border:1px solid var(--border-strong);color:var(--text);transition:transform .15s var(--ease),border-color .15s var(--ease),color .15s var(--ease)}.thero-facts>span:hover,.thero-facts>a:hover{transform:translateY(-2px);border-color:var(--accent);color:var(--accent)}.thero-fact-link{cursor:pointer}.thero-fact-link span{transition:transform .15s var(--ease)}.thero-fact-link:hover span{transform:translate(1px,-1px)}.thero-cta{display:flex;gap:.75rem}.thero-btn{padding:.7rem 1.3rem;border-radius:10px;font-size:.92rem;font-weight:500;border:1px solid var(--border-strong);color:var(--text);transition:all .15s var(--ease)}.thero-btn:hover{background:var(--bg-subtle)}.thero-btn.primary{background:var(--text);color:var(--bg);border-color:var(--text)}.thero-btn.primary:hover{opacity:.9;background:var(--text)}.namepiece{position:relative;width:300px;justify-self:center}.hero-portrait{width:100%;aspect-ratio:3 / 4;object-fit:cover;display:block;background:var(--bg-subtle);border-radius:18px}.name-overlay{position:absolute;left:1.1rem;bottom:1.1rem;z-index:2;line-height:.92}.name-first,.name-last{display:block;font-weight:800;font-size:clamp(1.8rem,3vw,2.5rem);letter-spacing:-.025em;color:#fff;transition:transform .3s var(--ease),color .3s var(--ease)}.name-last{color:#ffffff9e}.namepiece:hover .name-first{transform:translate(4px)}.namepiece:hover .name-last{transform:translate(4px);color:#fff}@media (max-width: 860px){.thero{min-height:auto;padding-top:5rem;padding-bottom:3rem}.thero-grid{grid-template-columns:1fr;gap:3rem}.namepiece{order:-1;width:240px}}.xp-head{margin-bottom:2rem}.xp-sections{display:flex;flex-direction:column;gap:1.25rem}.xp-section{border:1px solid var(--border);border-radius:16px;background:var(--bg-elevated);padding:1.5rem 1.6rem}.xp-section-title{font-family:var(--font-mono);font-size:.74rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--text-muted);margin:0 0 1rem}.xp-rows{margin:0}.xp-row{display:grid;grid-template-columns:180px 1fr;gap:1.5rem;align-items:center;padding:.9rem 0;border-top:1px solid var(--border)}.xp-row:first-child{border-top:0;padding-top:0}.xp-row:last-child{padding-bottom:0}.xp-label{font-size:.92rem;font-weight:500;color:var(--text)}.xp-val{margin:0;font-size:1.02rem;line-height:1.5;color:var(--text)}.xp-logos{display:flex;flex-wrap:wrap;align-items:center;gap:1.25rem}.xp-logo-item{position:relative;display:inline-flex;align-items:center}.xp-logo{height:26px;width:auto;transition:transform .15s var(--ease)}.xp-logo-item:hover .xp-logo{transform:translateY(-3px) scale(1.08)}.xp-logo-name{position:absolute;top:calc(100% + 6px);left:50%;transform:translate(-50%) translateY(3px);padding:.15rem .45rem;border-radius:6px;background:var(--bg-subtle);border:1px solid var(--border);font-family:var(--font-mono);font-size:.68rem;white-space:nowrap;color:var(--text);opacity:0;pointer-events:none;transition:opacity .15s var(--ease),transform .15s var(--ease)}.xp-logo-item:hover .xp-logo-name{opacity:1;transform:translate(-50%) translateY(0)}.xp-tag{font-size:.9rem;color:var(--text-muted);align-self:center}.xp-tags{display:flex;flex-wrap:wrap;gap:.5rem}.xp-skill{font-size:.84rem;padding:.32rem .7rem;border-radius:999px;background:var(--bg-subtle);border:1px solid var(--border);color:var(--text);transition:border-color .15s var(--ease),color .15s var(--ease),transform .15s var(--ease)}.xp-skill:hover{border-color:var(--accent);color:var(--accent);transform:translateY(-2px)}@media (max-width: 560px){.xp-section{padding:1.25rem 1.2rem}.xp-row{grid-template-columns:1fr;gap:.6rem}}.pj-head{margin-bottom:1.75rem}.pj-grid{display:grid;grid-template-columns:1fr 1fr;gap:1.25rem;align-items:stretch}.pj-card{display:flex;flex-direction:column;border:1px solid var(--border);border-radius:18px;background:var(--bg-elevated);padding:1.6rem 1.7rem;transition:transform .2s var(--ease),border-color .2s var(--ease)}.pj-card:hover{transform:translateY(-4px);border-color:var(--border-strong)}.pj-card-wip{background:var(--bg-subtle);border-style:dashed}.pj-card-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:1.1rem}.pj-status{display:inline-flex;align-items:center;gap:.4rem;font-family:var(--font-mono);font-size:.7rem;letter-spacing:.04em;text-transform:uppercase;padding:.25rem .6rem;border-radius:999px;border:1px solid var(--border-strong);color:var(--text-muted)}.pj-dot{width:6px;height:6px;border-radius:50%;background:currentColor}.pj-status.shipped{color:var(--accent);border-color:color-mix(in srgb,var(--accent) 40%,transparent)}.pj-status.wip{color:var(--text-muted)}.pj-status.wip .pj-dot{animation:pj-pulse 1.6s var(--ease) infinite}@keyframes pj-pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.35;transform:scale(.8)}}.pj-year{font-family:var(--font-mono);font-size:.78rem;color:var(--text-subtle)}.pj-name{font-size:1.6rem;font-weight:700;letter-spacing:-.025em;color:var(--text);margin:0 0 .4rem}.pj-tagline{margin:0 0 1.1rem;font-size:1.02rem;line-height:1.5;color:var(--text)}.pj-points{list-style:none;margin:0 0 1.4rem;padding:0;display:flex;flex-direction:column;gap:.55rem}.pj-points li{position:relative;padding-left:1.1rem;font-size:.92rem;line-height:1.5;color:var(--text-muted)}.pj-points li:before{content:"";position:absolute;left:0;top:.6em;width:5px;height:5px;border-radius:50%;background:var(--accent)}.pj-actions{margin-top:auto;padding-top:1.3rem;display:flex;align-items:center;justify-content:space-between;gap:.6rem;flex-wrap:wrap;border-top:1px solid var(--border)}.pj-learn-link{display:inline-flex;align-items:center;gap:.4rem;font-size:.92rem;font-weight:600;color:var(--accent);padding:.55rem 0}.pj-learn-link span{display:inline-flex;align-items:center;justify-content:center;width:1.15rem;height:1.15rem;border-radius:50%;background:color-mix(in srgb,var(--accent) 15%,transparent);font-size:.7rem;transition:transform .18s var(--ease),background .18s var(--ease)}.pj-learn-link:hover span{transform:translate(2px);background:color-mix(in srgb,var(--accent) 28%,transparent)}.pj-link{display:inline-flex;align-items:center;gap:.35rem;font-size:.92rem;font-weight:500;color:var(--text);padding:.55rem .9rem;border:1px solid var(--border-strong);border-radius:10px;transition:background .15s var(--ease),color .15s var(--ease),border-color .15s var(--ease)}.pj-link span{transition:transform .15s var(--ease)}.pj-link:hover{border-color:var(--accent);color:var(--accent)}.pj-link:hover span{transform:translate(2px,-2px)}@media (max-width: 760px){.pj-grid{grid-template-columns:1fr}}.contact-inner{max-width:520px}.contact-title{font-size:1.5rem;font-weight:700;letter-spacing:-.02em;color:var(--text);margin:0 0 .75rem}.contact-lead{margin:0 0 1.6rem;font-size:1.02rem;line-height:1.6;color:var(--text-muted);text-wrap:pretty}.contact-btn{display:inline-flex;align-items:center;gap:.55rem;padding:.7rem 1.2rem;border-radius:11px;font-size:.95rem;font-weight:500;color:var(--bg);background:var(--text);border:1px solid var(--text);transition:transform .15s var(--ease),opacity .15s var(--ease)}.contact-btn:hover{transform:translateY(-2px);opacity:.92}.contact-btn-ico{width:18px;height:18px}.contact-btn-arrow{transition:transform .15s var(--ease)}.contact-btn:hover .contact-btn-arrow{transform:translate(2px,-2px)}@media (max-width: 600px){.contact-lead{font-size:.95rem}}.learn{max-width:720px;margin:0 auto;padding:3.5rem 1.5rem 4rem}.learn-back{display:inline-block;font-family:var(--font-mono);font-size:.8rem;color:var(--text-muted);margin-bottom:1.75rem;transition:color .15s var(--ease),transform .15s var(--ease)}.learn-back:hover{color:var(--accent);transform:translate(-3px)}.learn-head{margin-bottom:1.75rem;padding-bottom:1.4rem;border-bottom:1px solid var(--border)}.learn-title{font-size:clamp(1.9rem,4vw,2.75rem);font-weight:700;letter-spacing:-.03em;line-height:1.1;color:var(--text);margin:.4rem 0 .8rem;text-wrap:balance}.learn-sub{margin:0;font-size:1.05rem;color:var(--text-muted)}.learn-thesis{font-size:1.1rem;line-height:1.65;color:var(--text);margin:0 0 2rem;text-wrap:pretty}.learn-body-label{font-family:var(--font-mono);font-size:.75rem;letter-spacing:.06em;text-transform:uppercase;color:var(--text-muted);margin:0 0 1.25rem}.learn-body{display:flex;flex-direction:column;gap:1.5rem}.learn-sec{display:grid;grid-template-columns:40px 1fr;gap:1.25rem}.learn-sec-num{font-family:var(--font-mono);font-size:.85rem;color:var(--accent);padding-top:.35rem}.learn-sec-title{font-size:1.25rem;font-weight:700;letter-spacing:-.02em;color:var(--text);margin:0 0 .5rem}.learn-sec-body{margin:0;font-size:1.02rem;line-height:1.7;color:var(--text-muted);text-wrap:pretty}.learn-outro{margin-top:2.5rem;padding-top:1.75rem;border-top:1px solid var(--border)}.learn-outro-text{margin:0 0 1.4rem;font-size:1.05rem;line-height:1.65;color:var(--text);max-width:52ch;text-wrap:pretty}.learn-outro-actions{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap}.learn-visit,.learn-link{display:inline-flex;align-items:center;gap:.35rem;padding:.4rem 0;font-size:.95rem;font-weight:500;color:var(--text);transition:color .15s var(--ease)}.learn-visit{color:var(--accent)}.learn-link{color:var(--text-muted)}.learn-visit span,.learn-link span{transition:transform .15s var(--ease)}.learn-visit:hover span,.learn-link:hover span{transform:translate(2px,-2px)}.learn-link:hover{color:var(--text)}.learn-outro-actions{gap:1.5rem}.learn-missing{color:var(--text-muted)}@media (max-width: 560px){.learn{padding:2.5rem 1.25rem 3rem}.learn-back{margin-bottom:1.25rem}.learn-sec{grid-template-columns:1fr;gap:.4rem}.learn-sec-num{padding-top:0}}.theme-toggle{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:50%;color:var(--text-muted);border:1px solid var(--border);background:var(--bg-elevated);transition:all .15s var(--ease)}.theme-toggle:hover{color:var(--text);border-color:var(--border-strong)}.dock{position:fixed;bottom:calc(1.1rem + env(safe-area-inset-bottom));left:50%;transform:translate(-50%);z-index:60;display:flex;gap:.5rem;padding:.5rem .6rem;border-radius:20px;background:color-mix(in srgb,var(--bg) 68%,transparent);border:1px solid var(--border);backdrop-filter:saturate(180%) blur(16px);-webkit-backdrop-filter:saturate(180%) blur(16px)}.dock-app{position:relative;display:flex;align-items:flex-end;justify-content:center}.dock-ico{width:48px;height:48px;border-radius:13px;display:flex;align-items:center;justify-content:center;font-size:1.5rem;border:1px solid var(--border);transition:transform .18s var(--ease)}.dock-ico.portfolio{background:var(--bg-elevated)}.dock-ico.terminal{background:#221f1b;color:#c4b39a;font-family:var(--font-mono);font-weight:700;font-size:1.1rem;border-color:#34302a}.dock-app:hover .dock-ico{transform:translateY(-8px) scale(1.06)}.dock-label{position:absolute;bottom:calc(100% + 12px);left:50%;transform:translate(-50%) translateY(4px);padding:.25rem .6rem;border-radius:7px;background:var(--text);color:var(--bg);font-family:var(--font-mono);font-size:.7rem;white-space:nowrap;opacity:0;pointer-events:none;transition:opacity .15s var(--ease),transform .15s var(--ease)}.dock-app:hover .dock-label{opacity:1;transform:translate(-50%) translateY(0)}.dock-dot{position:absolute;bottom:-7px;left:50%;transform:translate(-50%);width:4px;height:4px;border-radius:50%;background:transparent}.dock-app.active .dock-dot{background:var(--text)}@media (max-width: 640px){.dock-ico{width:44px;height:44px}}.app{min-height:100vh;background:var(--bg)}.theme-toggle-float{position:fixed;top:1.5rem;right:1.5rem;z-index:50}section{max-width:var(--max-width);margin:0 auto;padding:7rem 1.5rem;scroll-margin-top:80px}.section-label{display:inline-block;font-family:var(--font-mono);font-size:.75rem;color:var(--text-subtle);letter-spacing:.08em;margin-bottom:1.25rem;text-transform:uppercase}.section-title{font-size:clamp(1.875rem,3.5vw,2.75rem);font-weight:700;letter-spacing:-.03em;line-height:1.12;color:var(--text);margin-bottom:1rem}.section-lead{color:var(--text-muted);font-size:1.0625rem;max-width:640px;line-height:1.65}.footer{border-top:1px solid var(--border);padding:2rem 1.5rem;padding-bottom:calc(6rem + env(safe-area-inset-bottom));background:var(--bg)}.footer-inner{max-width:var(--max-width);margin:0 auto;display:flex;justify-content:space-between;gap:1rem;font-size:.85rem;color:var(--text-subtle);flex-wrap:wrap}.footer-meta{font-family:var(--font-mono)}.reveal{opacity:0;transform:translateY(18px);transition:opacity .6s var(--ease),transform .6s var(--ease)}.reveal.in{opacity:1;transform:none}@media (prefers-reduced-motion: reduce){.reveal{opacity:1;transform:none}}.thero-name,.thero-role,.section-title,.section-label,.story-lead,.pillar-title,.project-name,.footer-inner span{transition:letter-spacing .45s var(--ease),color .3s var(--ease);cursor:default}.thero-name:hover,.thero-role:hover,.section-title:hover,.pillar-title:hover,.project-name:hover{letter-spacing:0;color:var(--accent)}.thero-lede,.section-lead,.story-body p,.pillar-blurb,.project-tagline,.project-desc,.about-card p{transition:color .3s var(--ease);cursor:default}.thero-lede:hover,.section-lead:hover,.story-body p:hover,.pillar-blurb:hover,.project-tagline:hover,.project-desc:hover,.about-card p:hover{color:var(--text)}@media (max-width: 720px){section{padding:4rem 1.25rem}.theme-toggle-float{top:1rem;right:1rem}}:root{--bg: #faf8f5;--bg-elevated: #ffffff;--bg-subtle: #f3efe9;--border: #e8e2d9;--border-strong: #d8d0c4;--text: #2a2622;--text-muted: #6b6359;--text-subtle: #a59c8f;--accent: #7d6e58;--accent-hover: #635643;--accent-soft: rgba(125, 110, 88, .12);--success: #7d8a6a;--font-sans: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-mono: "JetBrains Mono", ui-monospace, "SF Mono", Menlo, monospace;--max-width: 1120px;--radius-sm: 6px;--radius: 10px;--radius-lg: 16px;--ease: cubic-bezier(.22, 1, .36, 1)}body.dark-mode{--bg: #131210;--bg-elevated: #211e1a;--bg-subtle: #1a1815;--border: #383229;--border-strong: #4d463b;--text: #f1ede6;--text-muted: #aaa295;--text-subtle: #7c7468;--accent: #cdb59a;--accent-hover: #e0cdb1;--accent-soft: rgba(205, 181, 154, .16)}*{margin:0;padding:0;box-sizing:border-box}html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}body{font-family:var(--font-sans);background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-feature-settings:"cv02","cv03","cv04","cv11";line-height:1.5;transition:background .3s var(--ease),color .3s var(--ease);overflow-x:hidden}a{color:inherit;text-decoration:none}button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit}::selection{background:var(--accent);color:#fff}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:4px}img,svg{display:block;max-width:100%}
