.cv-page *,.cv-page :after,.cv-page :before{box-sizing:border-box}.cv-page{margin:0;padding:0;background:#ececec;color:#3f3f46;font-family:var(--font-inter),-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;font-size:10.5pt;line-height:1.45;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.cv-page .cv-bar{max-width:210mm;margin:0 auto;padding:12px 14mm 0;display:flex;align-items:center;justify-content:space-between}.cv-page .cv-bar a{font-family:var(--font-jetbrains-mono),"SF Mono",Menlo,Consolas,monospace;font-size:8.5pt;color:#71717a;text-decoration:none;letter-spacing:.01em;display:inline-flex;align-items:center;gap:6px;transition:color .15s}.cv-page .cv-bar a:hover{color:#00b8c4}.cv-page .cv-bar .cv-print-btn{font-family:var(--font-jetbrains-mono),"SF Mono",Menlo,Consolas,monospace;font-size:8.5pt;color:#71717a;background:none;border:1px solid #e4e4e7;border-radius:3px;padding:4px 10px;cursor:pointer;letter-spacing:.08em;text-transform:uppercase;transition:color .15s,border-color .15s}.cv-page .cv-bar .cv-print-btn:hover{color:#00b8c4;border-color:#00b8c4}.cv-page .page{width:210mm;min-height:297mm;margin:24px auto;padding:14mm 14mm 12mm;background:#ffffff;color:#3f3f46;position:relative;box-shadow:0 4px 24px rgba(0,0,0,.18),0 1px 0 rgba(0,0,0,.04)}.cv-page .head{display:grid;grid-template-columns:1fr auto;grid-gap:16px;gap:16px;align-items:end;padding-bottom:10px;border-bottom:1.5px solid #18181b}.cv-page .head .name{font-family:var(--font-inter),-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;font-size:28pt;font-weight:800;letter-spacing:-.02em;line-height:1;color:#0a0a0a;margin:0 0 6px}.cv-page .head .name .cursor{display:inline-block;width:.55ch;height:.95em;background:#00b8c4;margin-left:6px;vertical-align:-2px;animation:cv-blink 1s steps(1) infinite}@keyframes cv-blink{50%{opacity:0}}.cv-page .head .role{font-family:var(--font-jetbrains-mono),"SF Mono",Menlo,Consolas,monospace;font-size:9.5pt;font-weight:500;color:#1a1a1a;text-transform:uppercase;letter-spacing:.12em}.cv-page .head .role .accent{color:#00b8c4}.cv-page .head .contact{text-align:right;font-family:var(--font-jetbrains-mono),"SF Mono",Menlo,Consolas,monospace;font-size:8.5pt;line-height:1.55;color:#3f3f46;letter-spacing:.01em}.cv-page .head .contact a{color:#3f3f46;text-decoration:none}.cv-page .head .contact .row{white-space:nowrap}.cv-page .head .contact .lbl{color:#71717a;display:inline-block;min-width:7ch;text-align:left}.cv-page section{margin-top:14px}.cv-page .sec-head{display:grid;grid-template-columns:max-content 1fr max-content;align-items:center;grid-gap:10px;gap:10px;margin:0 0 8px;page-break-after:avoid;break-after:avoid;page-break-inside:avoid;break-inside:avoid}.cv-page .sec-head .label{font-family:var(--font-jetbrains-mono),"SF Mono",Menlo,Consolas,monospace;font-size:8.5pt;font-weight:600;text-transform:uppercase;letter-spacing:.12em;color:#0a0a0a}.cv-page .sec-head .label:before{content:"// ";color:#00b8c4}.cv-page .sec-head .rule{height:1px;background:#18181b}.cv-page .sec-head .idx{font-family:var(--font-jetbrains-mono),"SF Mono",Menlo,Consolas,monospace;font-size:8pt;color:#71717a;letter-spacing:.01em}.cv-page .summary p{margin:0 0 6px;font-size:10pt;line-height:1.5;color:#1a1a1a;text-wrap:pretty}.cv-page .summary p:last-child{margin-bottom:0}.cv-page .summary .lead{font-size:10.5pt;color:#0a0a0a}.cv-page .summary strong{color:#0a0a0a;font-weight:600}.cv-page .summary code{font-family:var(--font-jetbrains-mono),"SF Mono",Menlo,Consolas,monospace;font-size:9pt;color:#007a82;background:rgba(0,184,196,.08);padding:0 4px;border-radius:2px}.cv-page .job{margin-bottom:12px;orphans:3;widows:3}.cv-page .job:last-child{margin-bottom:0}.cv-page .job-head{display:grid;grid-template-columns:1fr auto;align-items:baseline;grid-gap:12px;gap:12px;margin-bottom:2px;page-break-inside:avoid;break-inside:avoid;page-break-after:avoid;break-after:avoid}.cv-page .job-title{font-family:var(--font-inter),-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;font-size:11pt;font-weight:700;color:#0a0a0a;letter-spacing:-.005em;margin:0}.cv-page .job-title .at{color:#71717a;font-weight:500}.cv-page .job-title .co{color:#0a0a0a}.cv-page .job-when{color:#3f3f46;white-space:nowrap}.cv-page .job-when,.cv-page .job-where{font-family:var(--font-jetbrains-mono),"SF Mono",Menlo,Consolas,monospace;font-size:8.5pt;letter-spacing:.01em}.cv-page .job-where{color:#71717a;margin:0 0 4px}.cv-page .job-blurb{margin:0 0 4px;font-size:9.5pt;line-height:1.45;color:#1a1a1a}.cv-page .job ul{list-style:none;margin:4px 0;padding:0}.cv-page .job ul li{position:relative;padding-left:14px;margin:2px 0;font-size:9.5pt;line-height:1.45;color:#1a1a1a;text-wrap:pretty}.cv-page .job ul li:before{content:"▸";position:absolute;left:0;top:0;color:#00b8c4;font-family:var(--font-jetbrains-mono),"SF Mono",Menlo,Consolas,monospace;font-size:8.5pt;line-height:1.6}.cv-page .job ul li strong{color:#0a0a0a;font-weight:600}.cv-page .job ul ul{margin:2px 0 4px;padding:0}.cv-page .job ul ul li{padding-left:14px;font-size:9pt;color:#3f3f46}.cv-page .job ul ul li:before{content:"—";color:#71717a}.cv-page .stack{margin-top:4px;font-family:var(--font-jetbrains-mono),"SF Mono",Menlo,Consolas,monospace;font-size:8pt;color:#71717a;letter-spacing:.01em;padding:4px 8px;border-left:2px solid #00b8c4;background:rgba(0,184,196,.04)}.cv-page .stack .stack-lbl{color:#1a1a1a;font-weight:600;text-transform:uppercase;letter-spacing:.12em;margin-right:6px}.cv-page .earlier{font-size:9.5pt;color:#1a1a1a}.cv-page .earlier li{margin-bottom:2px}.cv-page .earlier strong{color:#0a0a0a}.cv-page .projects{display:grid;grid-template-columns:1fr 1fr;grid-gap:8px 16px;gap:8px 16px}.cv-page .project{border:1px solid #e4e4e7;border-left:2px solid #00b8c4;padding:8px 10px;page-break-inside:avoid;break-inside:avoid}.cv-page .project.full{grid-column:1/-1}.cv-page .project h4{margin:0 0 1px;font-family:var(--font-inter),-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;font-size:10pt;font-weight:700;color:#0a0a0a}.cv-page .project .meta-row{margin:0 0 4px;font-family:var(--font-jetbrains-mono),"SF Mono",Menlo,Consolas,monospace;font-size:7.5pt;color:#71717a;letter-spacing:.01em}.cv-page .project p{margin:0;font-size:9pt;line-height:1.4;color:#1a1a1a}.cv-page .project p+p{margin-top:3px}.cv-page .project .status{display:inline-block;font-family:var(--font-jetbrains-mono),"SF Mono",Menlo,Consolas,monospace;font-size:7pt;letter-spacing:.12em;text-transform:uppercase;padding:1px 5px;border:1px solid #18181b;color:#0a0a0a;margin-left:6px;vertical-align:2px}.cv-page .project .status.live:before{content:"● ";color:#16a34a}.cv-page .project .status.wip{color:#92400e;border-color:#fbbf24}.cv-page .project .status.wip:before{content:"● ";color:#d97706}.cv-page .cv-skills{display:grid;grid-template-columns:1fr 1fr;grid-gap:6px 16px;gap:6px 16px}.cv-page .skill-block{page-break-inside:avoid;break-inside:avoid}.cv-page .skill-block h4{margin:0 0 4px;font-family:var(--font-jetbrains-mono),"SF Mono",Menlo,Consolas,monospace;font-size:8.5pt;font-weight:600;color:#0a0a0a;text-transform:uppercase;letter-spacing:.12em}.cv-page .skill-block h4 .dot{color:#00b8c4;margin-right:4px}.cv-page .skill-row{display:grid;grid-template-columns:12ch 1fr;grid-gap:8px;gap:8px;padding:2px 0;border-bottom:1px dotted #e4e4e7;font-size:9pt;line-height:1.4}.cv-page .skill-row:last-child{border-bottom:0}.cv-page .skill-row .k{font-family:var(--font-jetbrains-mono),"SF Mono",Menlo,Consolas,monospace;font-size:8.5pt;color:#0a0a0a;font-weight:600;letter-spacing:.01em}.cv-page .skill-row .v{color:#3f3f46;font-size:9pt}.cv-page .triple{display:grid;grid-template-columns:1.5fr 1.2fr .8fr;grid-gap:16px;gap:16px}.cv-page .triple .col h4{margin:0 0 4px;font-family:var(--font-jetbrains-mono),"SF Mono",Menlo,Consolas,monospace;font-size:8.5pt;font-weight:600;color:#0a0a0a;text-transform:uppercase;letter-spacing:.12em}.cv-page .triple .col h4:before{content:"// ";color:#00b8c4}.cv-page .triple ul{list-style:none;margin:0;padding:0;font-size:9pt;color:#1a1a1a}.cv-page .triple li{padding:2px 0;border-bottom:1px dotted #e4e4e7;line-height:1.4}.cv-page .triple li:last-child{border-bottom:0}.cv-page .triple li strong{color:#0a0a0a;font-weight:600}.cv-page .triple li .when{font-size:8pt;display:block}.cv-page .foot,.cv-page .triple li .when{font-family:var(--font-jetbrains-mono),"SF Mono",Menlo,Consolas,monospace;color:#71717a;letter-spacing:.01em}.cv-page .foot{margin-top:14px;padding-top:8px;border-top:1px solid #e4e4e7;display:grid;grid-template-columns:1fr auto;align-items:center;font-size:7.5pt}.cv-page .foot .v{color:#007a82}.cv-page .project code{font-family:var(--font-jetbrains-mono),"SF Mono",Menlo,Consolas,monospace;font-size:8.5pt;color:#007a82}@page{size:A4;margin:12mm 13mm}@media print{.cv-page .cv-bar{display:none}.cv-page{background:#fff;font-size:10pt}.cv-page .page{margin:0;box-shadow:none;width:auto;min-height:0;padding:0}.cv-page *{-webkit-print-color-adjust:exact!important;print-color-adjust:exact!important}.cv-page .head .name .cursor{animation:none;opacity:1}.cv-page a{color:inherit;text-decoration:none}}@media (max-width:800px){.cv-page .page{width:100%;min-height:auto;margin:0;padding:24px 20px;box-shadow:none}.cv-page .cv-bar{max-width:100%;padding:12px 20px 0}.cv-page .head{grid-template-columns:1fr;gap:8px}.cv-page .head .contact{text-align:left}.cv-page .cv-skills,.cv-page .projects,.cv-page .triple{grid-template-columns:1fr}.cv-page .triple{gap:12px}.cv-page .job-head{grid-template-columns:1fr;gap:0}}