@import"https://fonts.googleapis.com/css2?family=Nunito+Sans:wght@400;500;600;700;800&family=IBM+Plex+Mono:wght@400;500;600&display=swap";:root{--bg: #f7f7f7;--paper: #ffffff;--ink: #222222;--muted: #717171;--faint: #9b9b9b;--line: #dddddd;--surface: #fafafa;--accent: #ff385c;--accent-soft: rgba(255, 56, 92, .12);--radius: 0px;--shadow: 0 10px 30px rgba(0, 0, 0, .08);--shadow-soft: 0 4px 10px rgba(0, 0, 0, .06);--hover-border: #d8d8d8;--mono: "IBM Plex Mono", "SFMono-Regular", Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--sans: "Airbnb Cereal", "Circular", "Nunito Sans", "Helvetica Neue", Arial, sans-serif;--s-1: 8px;--s0: 12px;--s1: 16px;--s2: 20px;--s3: 26px;--s4: 32px;--s5: 42px;--fs-hero: 40px;--fs-h2: 16px;--fs-body: 14px;--fs-small: 12.5px;--page-pad: var(--s5);--page-gap: var(--s4)}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}html,body{height:100%}body{margin:0;font-family:var(--sans);background:var(--bg);color:var(--ink);line-height:1.5}img,svg{max-width:100%;height:auto}.screen{min-height:100%;display:grid;place-items:start center;gap:16px;padding:clamp(16px,3vw,28px)}.pageShell{position:relative;width:min(8.5in,100%);display:grid;justify-items:stretch}.downloadFab{position:fixed;right:clamp(16px,3vw,28px);bottom:clamp(16px,3vw,28px);width:56px;height:56px;border-radius:50%;border:none;background:var(--accent);color:#fff;display:grid;place-items:center;cursor:pointer;z-index:20;box-shadow:0 12px 28px #ff385c59,0 6px 16px #00000029;transition:transform .15s ease,box-shadow .2s ease,background .2s ease}.downloadFab svg{width:22px;height:22px}.downloadFab:hover{transform:translateY(-2px);box-shadow:0 16px 34px #ff385c66,0 8px 18px #0000002e}.downloadFab:active{transform:translateY(0)}.downloadFab:focus-visible{outline:3px solid rgba(255,56,92,.35);outline-offset:4px}.downloadFab.is-loading{cursor:progress;opacity:.85}.downloadFab.is-loading svg{animation:spin .9s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.btn{appearance:none;border:1px solid var(--line);background:var(--paper);color:var(--ink);padding:10px 16px;border-radius:999px;font-weight:600;letter-spacing:.2px;cursor:pointer;transition:background .12s ease,border-color .12s ease}.btn:hover{background:var(--surface);border-color:#cfcfcf}.btn--ghost{background:transparent}.page{position:relative;width:100%;min-height:14in;max-width:100%;background:var(--paper);border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow);border:1px solid var(--line);padding:var(--page-pad);display:flex;flex-direction:column;gap:var(--page-gap)}.section{display:flex;flex-direction:column;gap:var(--s2)}.section__head{display:flex;align-items:center;justify-content:flex-start;gap:14px;padding-bottom:var(--s0);border-bottom:1px solid var(--line);flex-wrap:wrap;row-gap:8px}.section__title{margin:0;font-size:var(--fs-h2);letter-spacing:-.01em;text-transform:none;font-weight:700;padding-left:12px;border-left:3px solid var(--accent)}.section--two-col .edu{display:grid;grid-template-columns:1.35fr .65fr;gap:var(--s2)}.edu.edu--single{grid-template-columns:1fr}@media screen and (max-width:1200px){:root{--page-pad: 36px;--page-gap: 28px}}@media screen and (max-width:1024px){:root{--page-pad: 32px;--page-gap: 24px}}@media screen and (max-width:920px){.page{width:min(8.5in,100%);border-radius:0}.section--two-col .edu{grid-template-columns:1fr}}@media screen and (max-width:720px){:root{--page-pad: 24px;--page-gap: 20px}}@media screen and (max-width:560px){:root{--page-pad: 20px;--page-gap: 18px}}.hero{display:grid;grid-template-columns:1.2fr .8fr;grid-template-rows:auto auto;grid-template-areas:"top ." "overview contacts";column-gap:var(--s3);row-gap:var(--s2);align-items:start}@media screen and (max-width:920px){.hero{grid-template-columns:1fr;grid-template-areas:"top" "overview" "contacts"}}.hero__top{grid-area:top}.hero__overview{grid-area:overview}.hero__contacts{grid-area:contacts;align-self:start}.hero__name{margin:0;font-size:var(--fs-hero);line-height:1.05;letter-spacing:-.02em;font-weight:700}.hero__role{margin:8px 0 0;font-weight:600;color:var(--muted);font-size:15px}.hero__tagline{margin:0;color:var(--muted);font-size:var(--fs-body);line-height:1.6;max-width:70ch}.badges{display:flex;flex-wrap:wrap;gap:10px 16px;margin-top:12px}.badge{display:inline-flex;align-items:center;gap:8px;padding:0;border:none;background:transparent;font-size:var(--fs-small);color:var(--muted);font-family:var(--mono)}.badge__dot{width:6px;height:6px;border-radius:99px;background:var(--accent)}.contactBlock{display:flex;flex-direction:column;gap:12px}.contactList{display:grid;grid-template-columns:1fr;gap:10px;margin:0;list-style:none;background:#fafafa;border-radius:14px;padding:10px}.contactItem{display:flex;align-items:center;gap:10px;color:var(--muted);font-size:var(--fs-body);min-width:0}.contactItem a{color:inherit;text-decoration:none;border-bottom:1px solid transparent;overflow-wrap:anywhere}.contactItem a:hover{border-bottom-color:var(--muted)}.ico{width:16px;height:16px;flex:0 0 auto;opacity:.8}@media screen and (max-width:720px){.hero__contacts{width:100%}.contactList{grid-template-columns:repeat(2,minmax(0,1fr));column-gap:12px}}@media screen and (max-width:720px){body:not(.is-export) .hero__name{font-size:32px}body:not(.is-export) .hero__role{font-size:14px}body:not(.is-export) .hero__tagline{font-size:13.5px}body:not(.is-export) .badge{font-size:11.5px}body:not(.is-export) .section__title{font-size:15px}}@media screen and (max-width:420px){body:not(.is-export) .hero__name{font-size:28px}}.skills{display:grid;gap:var(--s2)}.skills__top{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.skillCard{border:1px solid #e6e6e6;background:#fff;border-radius:16px;padding:16px 18px;display:grid;grid-template-columns:auto 1fr;align-items:center;gap:12px;min-height:96px;transition:box-shadow .18s ease,border-color .18s ease,transform .18s ease}.skillCard__iconWrap{width:44px;height:44px;display:grid;place-items:center;padding:2px;background:transparent;border:none;border-radius:12px}.skillCard__icon{width:100%;height:100%;object-fit:contain;display:block}.skillCard__iconText{font-weight:700;font-size:10px;letter-spacing:.08em;color:#7a7a7a;text-transform:uppercase}.skillCard__text{display:grid;gap:4px;min-width:0}.skillCard__name{font-weight:700;letter-spacing:-.01em;font-size:13.5px}.skillCard__note{color:var(--muted);font-size:12px;line-height:1.4}.skills__allWrap{display:grid;gap:10px}.skills__allLabel{font-size:var(--fs-small);color:var(--muted);font-family:var(--mono);text-transform:uppercase;letter-spacing:.12em}.skills__all{display:flex;flex-wrap:wrap;gap:8px}.skillChip{border:1px solid var(--line);background:var(--paper);border-radius:999px;padding:6px 10px;font-family:var(--mono);font-size:11px;color:var(--muted);white-space:nowrap}@media screen and (max-width:1200px){.skills__top{grid-template-columns:repeat(4,1fr)}}@media screen and (max-width:1024px){.skills__top{grid-template-columns:repeat(3,1fr)}}@media screen and (max-width:720px){.skills__top{grid-template-columns:repeat(2,minmax(0,1fr))}}@media screen and (max-width:560px){.screen{padding:0}.page{padding:32px 14px 20px}.skillCard{padding:14px;min-height:88px}.skillCard__iconWrap{width:40px;height:40px;border-radius:10px}.skillCard__name{font-size:13px}.skillCard__note{font-size:11.5px}body:not(.is-export) .hero__top{text-align:center}body:not(.is-export) .hero__name{font-size:34px}body:not(.is-export) .hero__role{font-size:16px}body:not(.is-export) .hero__overview{text-align:center}body:not(.is-export) .badges{justify-content:center}}.timeline{display:grid;gap:var(--s2)}.xp{border-top:1px dashed #e6e6e6;padding-top:var(--s2);display:grid;grid-template-columns:56px 1fr;gap:14px}.timeline .xp:first-child{border-top:none;padding-top:0}.logo{width:56px;height:56px;border-radius:8px;border:1px solid var(--line);background:transparent;display:grid;place-items:center;font-weight:700;letter-spacing:.06em;color:var(--muted);transition:box-shadow .18s ease,border-color .18s ease,transform .18s ease}.logo img{width:100%;height:100%;object-fit:cover;border-radius:8px}.xp__meta{display:flex;align-items:baseline;justify-content:space-between;gap:12px}.xp__title{margin:0;font-weight:700;letter-spacing:-.01em}.xp__role{margin:3px 0 0;color:var(--muted);font-weight:600;font-size:var(--fs-body)}.xp__right{text-align:right;color:var(--muted);font-size:var(--fs-small);font-family:var(--mono)}.xp__summary{margin:10px 0 0;color:var(--muted);font-size:var(--fs-body);line-height:1.6;max-width:92ch}.xp__detailsWrap{margin-top:10px;display:grid;gap:10px;max-width:92ch}.xp__detailsToggle{appearance:none;border:1px solid var(--line);background:var(--paper);color:var(--muted);font-size:11px;font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase;padding:6px 12px;border-radius:999px;display:inline-flex;align-items:center;gap:6px;cursor:pointer;transition:background .15s ease,border-color .15s ease,color .15s ease,transform .15s ease;width:fit-content}.xp__detailsToggle:hover{background:var(--surface);border-color:#d2d2d2}.xp__detailsToggle:focus-visible{outline:3px solid rgba(255,56,92,.35);outline-offset:3px}.xp__detailsIcon{width:12px;height:12px;display:inline-flex;transition:transform .2s ease}.xp__detailsIcon svg{width:100%;height:100%}.xp__details{max-height:0;overflow:hidden;opacity:0;transform:translateY(-4px);transition:max-height .3s ease,opacity .2s ease,transform .2s ease}.xp.is-open .xp__details{max-height:420px;opacity:1;transform:translateY(0)}.xp.is-open .xp__detailsToggle{border-color:#ff385c66;background:var(--accent-soft);color:#7a1f2f}.xp.is-open .xp__detailsIcon{transform:rotate(180deg)}.xp__detailsList{margin:0;padding:0;list-style:none;display:grid;gap:6px;color:var(--muted);font-size:var(--fs-body);line-height:1.6}.xp__detail{position:relative;padding-left:16px}.xp__detail:before{content:"";position:absolute;left:0;top:.55em;width:6px;height:6px;border-radius:999px;background:var(--accent)}@media screen and (max-width:720px){.xp{grid-template-columns:44px 1fr;gap:12px}.logo{width:44px;height:44px;font-size:12px}.xp__meta{flex-direction:column;align-items:flex-start}.xp__right{text-align:left}.xp__detailsWrap{max-width:100%}}@media screen and (max-width:560px){.xp{grid-template-columns:36px 1fr}.logo{width:36px;height:36px;font-size:11px}}.edu__left,.edu__right{border-top:none;padding-top:0}.eduList{display:grid;gap:10px;margin:0;padding:0;list-style:none}.eduItem{display:grid;gap:2px}.eduItem__top{display:flex;justify-content:space-between;gap:12px;align-items:baseline}.eduItem__school{font-weight:700}.eduItem__degree{color:var(--muted);font-size:var(--fs-body)}.eduItem__where{color:var(--muted);font-size:var(--fs-small);font-family:var(--mono)}.certList{display:grid;gap:10px;margin:0;padding:0;list-style:none}.cert{display:grid;gap:2px}.cert__name{font-weight:700}.cert__years{color:var(--muted);font-family:var(--mono);font-size:var(--fs-small)}@media screen and (max-width:720px){.eduItem__top{flex-direction:column;align-items:flex-start;gap:4px}}.projects{display:grid;gap:var(--s3)}.project{border-top:1px solid var(--line);padding-top:var(--s2);display:grid;grid-template-columns:1.12fr .88fr;gap:var(--s2)}.projects .project:first-child{border-top:none;padding-top:0}.project--reverse{grid-template-columns:.88fr 1.12fr}.project__info{padding:0;display:grid;gap:10px;min-width:0}.project__title{margin:0;font-weight:700;letter-spacing:-.015em;font-size:16px}.stack{display:flex;flex-wrap:wrap;gap:8px}.pill{border:1px solid var(--line);background:transparent;border-radius:999px;padding:6px 10px;font-family:var(--mono);font-size:11px;color:var(--muted)}.project__desc{margin:0;color:var(--muted);font-size:var(--fs-body);line-height:1.6}.project__media{position:relative;min-height:180px;display:grid;place-items:center;background:#f4f4f4;border:1px solid var(--line);padding:0;border-radius:16px;overflow:hidden;min-width:0;transition:box-shadow .18s ease,border-color .18s ease,transform .18s ease}.mediaSplit{position:relative;width:100%;height:100%;min-height:180px;--cut-top: 64%;--cut-bot: 36%;--divider: 4px;cursor:default}.mediaSplit:after{content:"";position:absolute;inset:0;background:#fff;clip-path:polygon(calc(var(--cut-top) - var(--divider)) 0,calc(var(--cut-top) + var(--divider)) 0,calc(var(--cut-bot) + var(--divider)) 100%,calc(var(--cut-bot) - var(--divider)) 100%);transition:clip-path .55s cubic-bezier(.2,.6,.3,1);pointer-events:none;z-index:4}.mediaSplit__pane{position:absolute;inset:0;transition:clip-path .55s cubic-bezier(.2,.6,.3,1),opacity .4s ease;backface-visibility:hidden}.mediaSplit__pane--a{clip-path:polygon(0 0,var(--cut-top) 0,var(--cut-bot) 100%,0 100%);z-index:2}.mediaSplit__pane--b{clip-path:polygon(var(--cut-top) 0,100% 0,100% 100%,var(--cut-bot) 100%);z-index:1}.mediaSplit.is-reveal-a{--cut-top: 96%;--cut-bot: 84%}.mediaSplit.is-reveal-b{--cut-top: 16%;--cut-bot: 4%}.mediaSplit__pane img{width:100%;height:100%;object-fit:cover;display:block}@media(hover:hover)and (pointer:fine){.skillCard:hover,.project__media:hover,.logo:hover{border-color:var(--hover-border);box-shadow:var(--shadow-soft);transform:translateY(-2px)}}@media(prefers-reduced-motion:reduce){.mediaSplit__pane{transition:none}.mediaSplit:after{transition:none}.xp__details,.xp__detailsIcon{transition:none}}.mediaSplit__placeholder{width:100%;height:100%;display:grid;place-items:center;gap:10px;padding:16px;background:linear-gradient(135deg,#f7f7f7,#f1f1f1)}.mediaSplit__ghostLine{height:8px;background:#e6e6e6;border-radius:999px;width:70%}.mediaSplit__ghostLine.is-wide{width:86%}.mediaSplit__ghostLine.is-short{width:54%}@media screen and (max-width:920px){.project,.project--reverse{grid-template-columns:1fr}.project__media,.mediaSplit{min-height:200px}.project__info{order:1}.project__media{order:2}}@media screen and (max-width:720px){.project__title{font-size:15px}.project__media,.mediaSplit{min-height:180px}}@media screen and (max-width:560px){.project__media,.mediaSplit{min-height:160px}}.foot{margin-top:auto;padding-top:12px;border-top:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;gap:12px;color:var(--muted);font-size:var(--fs-small);font-family:var(--mono);flex-wrap:wrap}.foot__left{display:grid;gap:4px}.foot__line{line-height:1.3}.foot a{color:inherit;text-decoration:none;border-bottom:1px solid transparent}.foot a:hover{border-bottom-color:var(--muted)}@media screen and (max-width:640px){.foot{flex-direction:column;align-items:flex-start}}.page.is-tight{--s-1: 6px;--s0: 10px;--s1: 14px;--s2: 18px;--s3: 22px;--s4: 26px;--s5: 34px;--fs-hero: 36px;--fs-body: 13px;--fs-small: 12px}@page{margin:0}.is-export .page{max-width:none;min-height:auto;height:auto;box-shadow:none;border:none;--page-pad: var(--s5);--page-gap: var(--s4)}.is-export .screen{padding:0;background:#fff}.is-export .pageShell{width:100%}body.is-export{background:#fff}body.is-export .downloadFab{display:none}.is-export .hero{grid-template-columns:1.2fr .8fr;grid-template-areas:"top ." "overview contacts"}.is-export .section--two-col .edu{grid-template-columns:1.35fr .65fr}.is-export .skills__top{grid-template-columns:repeat(5,1fr)}.is-export .project{grid-template-columns:1.12fr .88fr}.is-export .project--reverse{grid-template-columns:.88fr 1.12fr}.is-export .project__media{min-height:150px}.is-export .mediaSplit{display:grid;grid-template-columns:1fr 1fr;gap:0;height:100%}.is-export .mediaSplit:after{display:none}.is-export .mediaSplit__pane{position:relative;inset:auto;width:100%;height:100%;clip-path:none;opacity:1;transition:none}.is-export .mediaSplit__pane--a,.is-export .mediaSplit__pane--b{z-index:auto}@media print{html,body{width:auto;height:auto}body{background:#fff!important}.no-print{display:none!important}.screen{padding:0!important}.page{width:100%!important;min-height:0!important;height:auto!important;border-radius:0!important;box-shadow:none!important;border:none!important}.hero{grid-template-columns:1.2fr .8fr!important;grid-template-areas:"top ." "overview contacts"}.section--two-col .edu{grid-template-columns:1.35fr .65fr!important}.skills__top{grid-template-columns:repeat(5,1fr)!important}.project{grid-template-columns:1.12fr .88fr!important}.project--reverse{grid-template-columns:.88fr 1.12fr!important}.project__media{min-height:150px!important}}.print-note{margin:0;color:#6a6a6a;font-family:var(--mono);font-size:12px;text-align:center}.print-note strong{color:#2c2c2c}
