:root{color-scheme:dark;--bg: #111;--ink: #f0f0f0;--body: #c4c4c4;--meta: #929292;--accent: #7ddcff;--hair: #292929;--hair-strong: #3a3a3a;--tint: #1c1c1c;--selection: rgba(125, 220, 255, .24);--s-4: 4px;--s-8: 8px;--s-12: 12px;--s-16: 16px;--s-24: 24px;--s-32: 32px;--s-48: 48px;--s-56: 56px;--s-64: 64px;--measure: 640px;--pad: 44px;--wide: 1080px;--serif: "Helvetica Neue", "Helvetica", Arial, sans-serif;--mono: "Helvetica Neue", "Helvetica", Arial, sans-serif}*{box-sizing:border-box;margin:0;padding:0}html{background:var(--bg);scroll-behavior:smooth}body{background:var(--bg);color:var(--body);font-family:var(--serif);font-size:17px;line-height:1.6;overflow-wrap:break-word;word-spacing:1px;min-height:100vh;display:flex;flex-direction:column;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility}::selection{background:var(--selection);color:var(--ink)}h1,h2,h3,h4,h5,h6{font-family:var(--serif);color:var(--ink);font-weight:700}h1{font-size:clamp(2rem,4.5vw,2.8rem);line-height:1.1;letter-spacing:-.025em;margin:0 0 var(--s-24);text-wrap:balance}h2{font-size:1.25rem;line-height:1.25;letter-spacing:-.015em;margin:var(--s-32) 0 var(--s-12);text-wrap:balance}h3{font-size:1.1rem;line-height:1.3;margin:var(--s-24) 0 var(--s-8)}p{margin:0 0 var(--s-16);color:var(--body);text-wrap:pretty}a{color:var(--accent);text-decoration:underline;text-decoration-color:#7ddcff73;text-decoration-thickness:1px;text-underline-offset:3px;transition:color .15s ease,text-decoration-color .15s ease}@media(hover:hover){a:hover{color:var(--accent);text-decoration-color:var(--accent)}}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:1px}ul{list-style-type:square}li{margin:.4em 0}table{border-collapse:collapse;width:100%;margin:0 0 var(--s-16)}th,td{padding:var(--s-8) var(--s-12);border:1px solid var(--hair);text-align:left}th{color:var(--ink);font-weight:700}.plain-list{list-style:none;padding-left:0}small{font-size:80%}em{font-style:normal}code,pre{font-family:var(--mono)}:not(pre)>code{padding:.15em .4em;font-size:.85em;background:var(--tint);border:1px solid var(--hair);border-radius:3px;color:var(--ink)}pre{background:var(--tint);border:1px solid var(--hair);padding:var(--s-16);margin:0 0 var(--s-16);overflow-x:auto;font-size:13px;line-height:1.6;color:var(--body)}blockquote{margin:0 0 var(--s-16);padding:2px 0 2px 18px;border-left:2px solid var(--accent);color:var(--body)}hr{border:none;border-top:1px solid var(--hair);margin:var(--s-32) 0}.page{max-width:calc(var(--measure) + 2 * var(--pad));width:100%;margin:0 auto;padding:var(--s-48) var(--pad) var(--s-56);min-height:100svh;display:flex;flex-direction:column}.page>main{flex:1 0 auto}.body{max-width:35em}.body p{margin:0 0 var(--s-16);color:var(--body);text-wrap:pretty}.body ul,.body ol{margin:0 0 var(--s-16);padding-left:var(--s-24);color:var(--body)}.body li{margin:var(--s-8) 0;text-wrap:pretty}.body li::marker{color:var(--meta)}.masthead{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--s-16);padding-bottom:var(--s-24);border-bottom:1px solid var(--hair);margin-bottom:var(--s-48)}.site-name{font-size:1.4rem;font-weight:700;letter-spacing:-.01em;color:var(--ink)}.site-name a{color:var(--ink);text-decoration:none}.masthead nav{display:flex;flex-wrap:wrap;gap:var(--s-16);font-size:1rem;margin-left:auto}.masthead nav a{color:var(--meta);text-decoration:none}@media(hover:hover){.masthead nav a:hover{color:var(--accent)}}.masthead nav a.active{color:var(--ink);text-decoration:underline;text-decoration-color:var(--accent);text-decoration-thickness:1px;text-underline-offset:3px}.page-title{margin:0 0 var(--s-32)}.intro{font-size:1.15rem;line-height:1.55;max-width:36em;color:var(--body);margin:0 0 var(--s-32)}.actions{display:flex;flex-wrap:wrap;gap:var(--s-12);margin-top:var(--s-24)}.btn{display:inline-flex;align-items:center;gap:8px;padding:11px 24px;font-family:var(--mono);font-size:12px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;text-decoration:none;border:1.5px solid var(--accent);border-radius:0;color:var(--accent);background:transparent;cursor:pointer;transition:background-color .18s ease,color .18s ease,transform .18s ease,box-shadow .18s ease}@media(hover:hover){.btn:hover{background:var(--accent);color:var(--bg);text-decoration:none;box-shadow:0 6px 16px #7ddcff38}}.btn-secondary{border-color:var(--hair-strong);color:var(--body)}@media(hover:hover){.btn-secondary:hover{background:var(--body);border-color:var(--body);color:var(--bg);box-shadow:0 6px 16px #00000073}}.interests{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:var(--s-16);margin-top:var(--s-4)}.interest-card{position:relative;padding:var(--s-24) var(--s-16);background:var(--tint);border:1px solid var(--hair);border-radius:6px;display:flex;flex-direction:column;gap:6px;transition:border-color .18s ease,transform .18s ease,background-color .18s ease;overflow:hidden}.interest-card:before{content:"";position:absolute;top:0;left:0;right:0;height:2px;background:var(--accent);transform:scaleX(0);transform-origin:left center;transition:transform .25s ease}@media(hover:hover){.interest-card:hover{border-color:var(--hair-strong);transform:translateY(-2px)}.interest-card:hover:before{transform:scaleX(1)}}.interest-label{font-family:var(--mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--accent);font-weight:700;margin:0}.interest-title{font-family:var(--serif);font-size:1.15rem;font-weight:700;color:var(--ink);margin:4px 0 0;line-height:1.25;letter-spacing:-.015em}.interest-desc{font-family:var(--serif);font-size:.95rem;color:var(--meta);line-height:1.55;margin:6px 0 0}.skills{display:flex;flex-wrap:wrap;gap:var(--s-8);list-style:none;margin:var(--s-4) 0 0;padding:0}.skill-chip{display:inline-flex;align-items:center;gap:7px;background:var(--tint);border:1px solid var(--hair);border-radius:6px;padding:var(--s-8) var(--s-12);font-family:var(--mono);font-size:13px;color:var(--body);line-height:1;transition:border-color .18s ease,color .18s ease}.skill-chip svg{flex:0 0 auto;width:16px;height:16px;border-radius:3px}@media(hover:hover){.skill-chip:hover{border-color:var(--hair-strong);color:var(--ink)}}.list-marker{font-family:var(--mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--accent);font-weight:700;margin-top:var(--s-48);margin-bottom:var(--s-4)}.link-list{list-style:none;margin:0;padding:0}.link-list li{display:grid;grid-template-columns:max-content 1fr;gap:var(--s-24);align-items:baseline;margin:0;padding:var(--s-12) 0}.link-list li+li{border-top:1px solid var(--hair)}.link-list .item-title a{color:var(--ink);text-decoration:none;font-weight:700}@media(hover:hover){.link-list .item-title a:hover{color:var(--accent);text-decoration:underline;text-decoration-color:var(--accent)}}.link-list .note{display:block;margin-top:4px;font-family:var(--mono);font-size:12px;color:var(--meta)}.link-list>li{display:block}.link-list .item-title{display:block}.site-foot{margin-top:var(--s-56);display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:var(--s-12);border-top:1px solid var(--hair);padding-top:var(--s-16);font-size:13px;color:var(--meta)}.site-foot a{color:var(--meta);text-decoration:none}@media(hover:hover){.site-foot a:hover{color:var(--accent)}}.site-foot .vitals{font-family:var(--mono);font-size:12px;color:var(--meta);letter-spacing:.04em}.site-foot .legal a{margin-right:var(--s-16)}.site-foot .legal a:last-child{margin-right:0}@media(max-width:760px){:root{--pad: 22px}body{font-size:17px}.page{padding:var(--s-32) var(--pad) var(--s-48)}.masthead{row-gap:var(--s-12);padding-bottom:var(--s-12);align-items:baseline}.masthead nav{order:1;width:100%;gap:var(--s-12) var(--s-16)}}@media(max-width:480px){body{font-size:16px}.link-list li{grid-template-columns:1fr;gap:4px}.actions{flex-wrap:nowrap}.actions .btn{flex:0 1 auto;justify-content:center;white-space:nowrap;min-width:0;padding:10px 12px;font-size:11px;letter-spacing:.06em}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
