:root{--ink: #000;--paper: #fff;--line: #d5d5d5;--mono: "JetBrains Mono", ui-monospace, "SFMono-Regular", Menlo, Consolas, "Courier New", monospace;color-scheme:light}:root[data-theme=dark]{--ink: #fff;--paper: #000;--line: #333;color-scheme:dark}*{box-sizing:border-box;margin:0}html,body{height:100%}body{background:var(--paper);color:var(--ink);font-family:var(--mono);font-size:13px;line-height:1.45;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}a{color:inherit;text-decoration:none}a:focus-visible{outline:2px solid var(--ink);outline-offset:2px}.page{min-height:100vh;display:grid;grid-template-rows:auto 1fr auto}.masthead{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:24px;padding:22px 34px 20px;border-bottom:1.5px solid var(--ink)}.mark{width:58px;height:58px;background:var(--ink);color:var(--paper);display:flex;align-items:center;justify-content:center;font-weight:700;font-size:24px;letter-spacing:.02em}.id .name{font-size:clamp(23px,3.3vw,30px);font-weight:700;letter-spacing:-.01em;text-transform:uppercase;line-height:.98}.id .role{margin-top:8px;font-size:10.5px;font-weight:700;letter-spacing:.28em;text-transform:uppercase}.id .tagline{margin-top:6px;font-size:12px;font-weight:400;max-width:64ch}.meta{align-self:stretch;text-align:right;display:flex;flex-direction:column;justify-content:space-between;font-size:10px;letter-spacing:.16em;text-transform:uppercase;line-height:1.6;white-space:nowrap}.meta .top{font-weight:700}.meta .bot{font-weight:400}.body{display:grid;grid-template-columns:1fr 1fr 1fr;min-height:0}.col{padding:24px 28px 22px;border-right:1px solid var(--ink);min-height:0}.col:last-child{border-right:none}.block{padding-bottom:22px;margin-bottom:22px;border-bottom:1px solid var(--line)}.block:last-child{border-bottom:none;padding-bottom:0;margin-bottom:0}.label{display:flex;align-items:baseline;gap:9px;font-size:10px;letter-spacing:.22em;text-transform:uppercase;margin-bottom:14px}.label .idx{font-weight:400;letter-spacing:.04em}.label .nm{font-weight:700}.about{font-size:12px;line-height:1.55;font-weight:400}.exp{margin-bottom:18px}.exp:last-child{margin-bottom:0}.exp .t{font-size:12.5px;font-weight:700;line-height:1.25}.exp .d{font-size:11px;font-weight:400;line-height:1.42;margin-top:3px}.exp .tech{font-size:9.5px;font-weight:400;letter-spacing:.09em;text-transform:uppercase;margin-top:5px}.proj{padding:10px 0;border-top:1px solid var(--line)}.proj:first-of-type{border-top:none;padding-top:0}.proj:last-of-type{padding-bottom:0}.prow{display:flex;justify-content:space-between;align-items:baseline;gap:12px}.proj .pt{font-size:12.5px;font-weight:700}.proj .pt a{border-bottom:1px solid var(--ink);padding-bottom:1px}.proj .yr{font-size:10px;font-weight:700;letter-spacing:.08em}.proj .ptech{font-size:9.5px;font-weight:400;letter-spacing:.09em;text-transform:uppercase;margin-top:4px}.stack .row{margin-bottom:12px}.stack .row:last-child{margin-bottom:0}.stack .h{font-size:12px;font-weight:700;line-height:1.3}.stack .s{font-size:10.5px;font-weight:400;margin-top:2px}.skill{margin-bottom:13px}.skill:last-child{margin-bottom:0}.skill .k{font-size:9.5px;font-weight:700;letter-spacing:.16em;text-transform:uppercase}.skill .v{font-size:12px;font-weight:400;line-height:1.4;margin-top:2px}.contact{display:flex;flex-wrap:wrap;align-items:center;gap:10px 30px;padding:16px 34px;border-top:1.5px solid var(--ink)}.contact .sig{font-size:11px;font-weight:700;letter-spacing:.2em;text-transform:uppercase;margin-right:auto}.clinks{display:flex;flex-wrap:wrap;align-items:center;gap:10px 26px}.contact .c{font-size:11px;white-space:nowrap}.contact .c .cl{font-weight:700;letter-spacing:.16em;text-transform:uppercase;font-size:9px;margin-right:8px}.contact .c a{border-bottom:1px solid var(--ink);padding-bottom:1px}.theme-toggle{display:inline-flex;align-items:center;justify-content:center;background:none;border:0;color:var(--ink);cursor:pointer;padding:4px;line-height:0;opacity:.65;transition:opacity .15s}.theme-toggle:hover{opacity:1}.theme-toggle:focus-visible{outline:1px solid var(--ink);outline-offset:2px;opacity:1}.theme-toggle .ic{width:18px;height:18px;display:block}.theme-toggle .ic-moon{display:none}:root[data-theme=dark] .theme-toggle .ic-sun{display:none}:root[data-theme=dark] .theme-toggle .ic-moon{display:block}.proj .pt a:hover,.contact .c a:hover{background:var(--ink);color:var(--paper)}@media(max-width:820px){html,body{height:auto}body{overflow:auto}.page{height:auto;display:block}.masthead{grid-template-columns:auto 1fr;gap:14px 18px;padding:20px}.meta{grid-column:1 / -1;flex-direction:row;justify-content:flex-start;text-align:left;gap:6px 18px;white-space:normal}.id .tagline{max-width:none}.body{grid-template-columns:1fr;overflow:visible}.col{border-right:none;border-bottom:1px solid var(--ink);padding:22px 20px;overflow:visible}.col:last-child{border-bottom:none}.contact{padding:18px 20px}}
