@import "https://fonts.googleapis.com/css2?family=Martian+Mono:wght@400;600&family=Schibsted+Grotesk:wght@400;600;700&family=Unbounded:wght@700&display=swap";:root{--ink:#0a0a0a;--paper:#fff;--milk:#fafafa;--rule:#0a0a0a29;--muted:#0a0a0a99;--milk-rule:#fafafa47;--milk-muted:#fafafa9e}*{box-sizing:border-box}html{color:var(--ink);background-color:#ececea;background-image:radial-gradient(#0a0a0a29 .6px,#0000 .7px),radial-gradient(#0a0a0a14 .5px,#0000 .6px);background-position:0 0,3px 4px;background-repeat:repeat;background-size:7px 7px,11px 11px;background-attachment:scroll;background-origin:padding-box;background-clip:border-box;font-family:Schibsted Grotesk,Arial,sans-serif}body{margin:0}a{color:inherit;text-decoration:none}a:hover{text-underline-offset:3px;text-decoration:underline}a:focus-visible,button:focus-visible{outline:3px solid var(--ink);outline-offset:3px;border-radius:4px}.mono{font-family:Martian Mono,monospace}.toolbar{justify-content:space-between;align-items:center;gap:1rem;max-width:210mm;margin:1.25rem auto;display:flex}.toolbar a,.toolbar button{cursor:pointer;letter-spacing:.08em;text-transform:uppercase;border-radius:999px;align-items:center;min-height:2.6rem;padding:.6rem 1.25rem;font-family:Martian Mono,monospace;font-size:.66rem;font-weight:600;display:inline-flex}.toolbar a:hover{text-decoration:none}.back{border:2px solid var(--ink)}.back:hover{background:var(--ink);color:var(--paper)}.download{background:var(--ink);color:var(--paper);border:0}.download:hover{background:#000}.download:disabled{cursor:progress;opacity:.75}.sheet{background-color:var(--paper);background-image:radial-gradient(#0a0a0a1a .6px,#0000 .7px),radial-gradient(#0a0a0a0d .5px,#0000 .6px);background-position:0 0,3px 4px;background-size:7px 7px,11px 11px;flex-direction:column;width:210mm;min-height:297mm;margin:0 auto 2rem;padding:12mm;display:flex}.masthead{background-color:var(--ink);color:var(--milk);background-image:radial-gradient(#fafafa21 .6px,#0000 .7px),radial-gradient(#fafafa12 .5px,#0000 .6px);background-position:0 0,3px 4px;background-size:7px 7px,11px 11px;border-radius:6mm;grid-template-columns:1fr 58mm;gap:8mm;padding:9mm 10mm;display:grid}h1{letter-spacing:-.015em;margin:0;font-family:Unbounded,Arial,sans-serif;font-size:21pt;font-weight:700;line-height:1.04}.role{color:var(--milk-muted);letter-spacing:.14em;text-transform:uppercase;align-items:center;gap:2.4mm;margin:4mm 0 0;font-family:Martian Mono,monospace;font-size:6.8pt;display:flex}.role:before{background:var(--milk);content:"";border-radius:50%;flex:none;width:2.4mm;height:2.4mm}.contact{border-left:1px solid var(--milk-rule);align-content:center;gap:2.2mm;padding-left:6mm;font-family:Martian Mono,monospace;font-size:6.6pt;line-height:1.45;display:grid}.contact span{color:var(--milk-muted);letter-spacing:.08em;text-transform:uppercase;width:16mm;display:inline-block}h2{letter-spacing:.14em;text-transform:uppercase;align-items:center;gap:2.6mm;margin:0 0 4mm;font-family:Martian Mono,monospace;font-size:7pt;font-weight:600;display:flex}h2:before{background:var(--ink);content:"";border-radius:50%;flex:none;width:2.6mm;height:2.6mm}h2:after{background:var(--rule);content:"";flex:1;height:1px}section{margin-top:7mm}.intro{max-width:168mm;margin:0;font-size:9.5pt;line-height:1.55}.metrics{border-bottom:1px solid var(--rule);border-top:1px solid var(--rule);grid-template-columns:repeat(4,1fr);margin-top:6mm;padding:3.6mm 0;display:grid}.metric+.metric{border-left:1px solid var(--rule);padding-left:4.5mm}.metric strong{font-size:11.5pt;font-weight:700;display:block}.metric span,.label{color:var(--muted);letter-spacing:.1em;text-transform:uppercase;font-family:Martian Mono,monospace;font-size:6.2pt}.layout{grid-template-columns:1.6fr .8fr;gap:0 10mm;display:grid}.entry{break-inside:avoid;grid-template-columns:28mm 1fr;gap:4mm;padding-bottom:4.6mm;display:grid}.entry time,.side-entry .label{color:var(--muted);letter-spacing:.06em;text-transform:uppercase;font-family:Martian Mono,monospace;font-size:6.2pt;line-height:1.55}h3{margin:0 0 1.4mm;font-size:9.5pt;font-weight:600;line-height:1.3}p{margin:0;font-size:8.5pt;line-height:1.5}.entry .label{margin-bottom:1.4mm;display:block}.side-entry{break-inside:avoid;border-top:1px solid var(--rule);padding:3.4mm 0}.side-entry:first-of-type{border-top:0;padding-top:0}.side-entry .label{margin-bottom:1.4mm;display:block}.side-entry h3{font-size:8.5pt}.side-entry p{color:var(--muted);font-size:7.8pt}.folio{border-top:2px solid var(--ink);letter-spacing:.1em;text-transform:uppercase;justify-content:space-between;margin-top:auto;padding-top:3mm;font-family:Martian Mono,monospace;font-size:6pt;display:flex}.page-head{border-bottom:2px solid var(--ink);justify-content:space-between;align-items:baseline;margin-bottom:7mm;padding-bottom:3.4mm;display:flex}.page-head strong{letter-spacing:-.015em;font-family:Unbounded,Arial,sans-serif;font-size:10pt}.page-head span{color:var(--muted);letter-spacing:.14em;text-transform:uppercase;font-family:Martian Mono,monospace;font-size:6.4pt}.project-grid{grid-template-columns:1fr 1fr;gap:5mm;display:grid}.project{border:1.5px solid var(--rule);break-inside:avoid;border-radius:4.5mm;align-content:start;gap:2.6mm;padding:5.5mm 6mm;display:grid}.project .label{display:block}.project h3{margin:0;font-size:10.5pt}.project p{color:var(--muted)}.deps{flex-wrap:wrap;gap:1.6mm;margin:1mm 0 0;padding:0;list-style:none;display:flex}.deps li{border:1px solid var(--rule);letter-spacing:.08em;text-transform:uppercase;border-radius:999px;padding:1.1mm 2.8mm;font-family:Martian Mono,monospace;font-size:5.8pt}.demo{letter-spacing:.08em;text-transform:uppercase;margin-top:.6mm;font-family:Martian Mono,monospace;font-size:6.4pt;font-weight:600}.demo span{color:var(--muted)}.languages{gap:8mm;display:flex}.languages p{border-top:1px solid var(--rule);flex:1;padding-top:2.8mm;font-size:8.5pt}.languages strong{margin-bottom:1mm;display:block}@media screen and (width<=820px){.toolbar{flex-wrap:wrap;margin-inline:1rem}.sheet{width:100%;min-height:0;padding:1.5rem}.masthead,.layout,.project-grid{grid-template-columns:1fr}.contact{border-left:0;border-top:1px solid var(--milk-rule);padding-top:5mm;padding-left:0}.metrics{grid-template-columns:repeat(2,1fr);row-gap:1rem}.metric:nth-child(3){border-left:0;padding-left:0}.folio{margin-top:2rem}}@page{margin:0;size:A4}@media print{html,body{background:var(--paper);print-color-adjust:exact}.toolbar{display:none}.sheet{break-after:page;min-height:297mm;margin:0}.sheet:last-child{break-after:auto}}
