:root{--font-display:"Major Mono Display", "IBM Plex Mono", monospace;--font-body:"IBM Plex Mono", "Courier New", monospace;--pad:clamp(20px, 4vw, 48px)}:root,:root[data-theme=dark]{--bg:#141210;--bg-rgb:20, 18, 16;--bg-soft:#1c1916;--fg:#e9dfc8;--fg-soft:#b3a684;--fg-faint:#e9dfc873;--rule:#e9dfc840;--about-fg:#fff;--about-skill:#e9dfc8;--grain-opacity:.5;--noise-bg:#141210}:root[data-theme=light]{--bg:#e9dfc8;--bg-rgb:233, 223, 200;--bg-soft:#f0e8d6;--fg:#141210;--fg-soft:#4a3f32;--fg-faint:#14121073;--rule:#14121040;--about-fg:#000;--about-skill:#4a3f32;--grain-opacity:.65;--noise-bg:#e9dfc8}*{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}body{background:var(--bg);width:100%;min-height:100vh;color:var(--fg);font-family:var(--font-body);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;font-size:13px;line-height:1.6;overflow-x:hidden}body:before{content:"";pointer-events:none;z-index:5;mix-blend-mode:multiply;opacity:var(--grain-opacity);background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='180' height='180'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/><feColorMatrix type='saturate' values='0'/></filter><rect width='100%25' height='100%25' filter='url(%23n)' opacity='0.05'/></svg>");position:fixed;inset:0}:root[data-theme=dark] body:before{mix-blend-mode:screen;filter:invert()}#ascii{z-index:1;pointer-events:none;width:100%;height:100%;display:block;position:fixed;inset:0}.cv-wrapper{z-index:2;min-height:100vh;padding:calc(var(--pad) + 40px) var(--pad) var(--pad);position:relative}.cv-topbar{z-index:10;padding:var(--pad);background:linear-gradient(to bottom, var(--bg) 0%, rgba(var(--bg-rgb), .9) 60%, transparent 100%);pointer-events:none;justify-content:space-between;align-items:center;display:flex;position:fixed;top:0;left:0;right:0}.cv-topbar a{pointer-events:auto}.cv-back,.cv-download,.cv-back:visited,.cv-download:visited{letter-spacing:.08em;text-transform:lowercase;color:var(--fg-soft);align-items:center;gap:.5rem;font-size:11px;text-decoration:none;transition:color .2s;display:inline-flex}.cv-back:hover,.cv-download:hover,.cv-back:focus-visible,.cv-download:focus-visible{color:var(--fg)}.cv-page{background:rgba(var(--bg-rgb), .82);border:1px solid var(--rule);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);max-width:720px;margin:0 auto;padding:clamp(32px,6vw,64px)}.cv-header{border-bottom:1px solid var(--rule);margin-bottom:2.5rem;padding-bottom:2rem}.cv-name{font-family:var(--font-display);letter-spacing:.01em;color:var(--about-fg);text-transform:lowercase;margin-bottom:1rem;font-size:clamp(32px,6vw,56px);font-weight:400;line-height:1}.cv-role{letter-spacing:.06em;color:var(--fg);margin-bottom:.4rem;font-size:15px}.cv-meta{letter-spacing:.05em;color:var(--fg-faint);margin-bottom:1.5rem;font-size:11px}.cv-contact-row{letter-spacing:.03em;flex-wrap:wrap;align-items:center;gap:.6rem 1rem;font-size:12px;display:flex}.cv-contact-row a{color:var(--fg-soft);text-decoration:none;transition:color .2s}.cv-contact-row a:hover{color:var(--fg);text-underline-offset:3px;text-decoration:underline}.cv-sep{color:var(--fg-faint)}.cv-section{margin-bottom:2.5rem}.cv-section-title{letter-spacing:.18em;text-transform:uppercase;color:var(--about-fg);border-bottom:1px solid var(--rule);margin-bottom:1.5rem;padding-bottom:.6rem;font-size:11px;font-weight:600}.cv-body{color:var(--fg);font-size:14px;line-height:1.8}.cv-entry{margin-bottom:1.75rem}.cv-entry:last-child{margin-bottom:0}.cv-entry-head{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:.5rem 1.5rem;margin-bottom:.25rem;display:flex}.cv-entry-title{color:var(--about-fg);letter-spacing:.02em;font-size:15px;font-weight:600}.cv-entry-date{color:var(--fg-faint);font-size:12px;font-family:var(--font-body)}.cv-entry-company{color:var(--fg-soft);margin-bottom:.6rem;font-size:13px}.cv-tags{color:var(--fg-faint);letter-spacing:.03em;margin-top:.6rem;font-size:11px}.cv-skill-grid{flex-direction:column;gap:.9rem;display:flex}.cv-skill-group{flex-wrap:wrap;gap:.5rem 1.5rem;font-size:13px;line-height:1.6;display:flex}.cv-skill-label{color:var(--about-fg);min-width:130px;font-weight:600}.cv-skill-list{color:var(--fg-soft);flex:1 1 0}.theme-toggle{top:calc(var(--pad) - 4px);z-index:11;cursor:pointer;pointer-events:auto;font-family:var(--font-body);letter-spacing:.06em;color:var(--fg-faint);background:0 0;border:none;align-items:center;gap:6px;padding:4px 6px;font-size:11px;transition:color .2s;display:inline-flex;position:fixed;left:50%;transform:translate(-50%)}.theme-toggle:before{content:"";border:1px solid;border-radius:50%;width:10px;height:10px;transition:box-shadow .2s;box-shadow:inset -3px -1px}:root[data-theme=light] .theme-toggle:before{box-shadow:inset 3px -1px}.theme-toggle:hover{color:var(--fg)}@media (width<=640px){.cv-topbar{padding:calc(var(--pad) * .75) var(--pad)}.cv-page{padding:clamp(24px,5vw,40px)}.cv-contact-row{flex-direction:column;align-items:flex-start;gap:.4rem}.cv-sep{display:none}.cv-entry-head{flex-direction:column;gap:.25rem}.cv-skill-group{flex-direction:column;gap:.2rem}.cv-skill-label{min-width:auto}}@page{size:A4;margin:0}@media print{#ascii,.theme-toggle,.cv-topbar,body:before{display:none!important}body{-webkit-print-color-adjust:exact;print-color-adjust:exact;background:var(--bg)!important;color:var(--fg)!important}.cv-wrapper{min-height:auto;padding:0}.cv-page{-webkit-print-color-adjust:exact;print-color-adjust:exact;border:none;max-width:none;min-height:297mm;padding:14mm 16mm;background:var(--bg)!important}.cv-header{margin-bottom:1.25rem;padding-bottom:1rem}.cv-name{margin-bottom:.5rem;font-size:32px}.cv-role{margin-bottom:.2rem;font-size:12px}.cv-meta{margin-bottom:.75rem;font-size:9px}.cv-contact-row{gap:.35rem .7rem;font-size:10px}.cv-section{margin-bottom:1.1rem}.cv-section-title{border-bottom-color:var(--rule);margin-bottom:.7rem;padding-bottom:.35rem;font-size:9px}.cv-body{font-size:11px;line-height:1.55}.cv-entry{margin-bottom:.85rem}.cv-entry-head{gap:.15rem 1rem}.cv-entry-title{font-size:12px}.cv-entry-date{font-size:10px}.cv-entry-company{margin-bottom:.3rem;font-size:11px}.cv-tags{margin-top:.3rem;font-size:9px}.cv-skill-grid{gap:.35rem}.cv-skill-group{gap:.2rem 1rem;font-size:10px}.cv-skill-label{min-width:110px}.cv-name,.cv-role,.cv-section-title,.cv-entry-title,.cv-skill-label{color:var(--about-fg)!important}.cv-body,.cv-contact-row a,.cv-entry-company,.cv-skill-list{color:var(--fg)!important}.cv-meta,.cv-tags,.cv-sep,.cv-entry-date{color:var(--fg-faint)!important}a{color:var(--fg);text-decoration:none}}
