:root{color-scheme:light dark;--paper:#f6f3ed;--paper-2:#efebe3;--ink:#15161a;--ink-2:#4b4e56;--ink-3:#8a8d95;--rule:#dcd7cc;--accent:#1f6f78;--accent-2:#15565d;--radius:14px;--max:1040px;--gutter:clamp(16px, 4vw, 40px);--ease:cubic-bezier(.2, .7, .2, 1)}body.cabinet{--paper:#f5edd3;--paper-2:#ede2c3;--paper-3:#e3d6b3;--ink:#2d2228;--ink-2:#574349;--ink-3:#8c7b82;--rule:#d9cca9;--accent:#4f7376;--accent-2:#3d5e61;--sage:#a8c7a2;--apricot:#e2a77c;--coral:#c7766a;--plum:#574349;--cream:#f9f3df;--ts-ink:#574349;--ts-shadow:#fffaebb3}@media (prefers-color-scheme:dark){:root{--paper:#111216;--paper-2:#181a20;--ink:#ebe7df;--ink-2:#b3b6be;--ink-3:#777b86;--rule:#2a2d36;--accent:#7fd1cf;--accent-2:#a6e3e1}body.cabinet{--paper:#231d27;--paper-2:#2c2531;--paper-3:#362d3b;--ink:#f1e9d6;--ink-2:#cbbfba;--ink-3:#93858c;--rule:#413643;--accent:#a8c7a2;--accent-2:#c4dcbf;--ts-ink:#f3ebcf;--ts-shadow:#140e16bf}}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}body{background:var(--paper);color:var(--ink);font-family:var(--font-body);-webkit-font-smoothing:antialiased;margin:0;font-size:1.0625rem;line-height:1.65}h1,h2,h3{font-family:var(--font-display);letter-spacing:-.015em;text-wrap:balance;font-variation-settings:"opsz" 144, "SOFT" 30;margin:0 0 .4em;font-weight:500;line-height:1.05}h1{font-size:clamp(3rem,9vw,6.5rem);font-weight:400}h2{font-size:clamp(1.8rem,3.5vw,2.6rem)}h3{font-size:1.35rem;font-weight:600}p{margin:0 0 1em}a{color:var(--accent);text-underline-offset:.2em;text-decoration:underline 1px;text-decoration-color:color-mix(in srgb, var(--accent) 40%, transparent);transition:text-decoration-color .2s var(--ease)}a:hover{text-decoration-color:var(--accent)}:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:4px}.container{width:min(100% - 2 * var(--gutter), var(--max));margin-inline:auto}.skip{background:var(--accent);color:var(--paper);z-index:100;border-radius:8px;padding:8px 12px;position:absolute;top:8px;left:-999px}.skip:focus{left:8px}.cabinet .pixel,.cabinet .kicker,.cabinet .section>h2,.cabinet .menu,.cabinet .site-header nav a,.cabinet .door small,.cabinet .minor-list h3,.cabinet .skills__group h3,.cabinet .scores,.cabinet .entry__meta,.cabinet .project__tech{font-family:var(--font-pixel);letter-spacing:.02em;text-transform:uppercase;font-variation-settings:normal;font-weight:400}.site-header{z-index:50;backdrop-filter:blur(12px);background:color-mix(in srgb, var(--paper) 84%, transparent);border-bottom:1px solid var(--rule);position:sticky;top:0}.site-header__row{justify-content:space-between;align-items:center;gap:24px;min-height:60px;display:flex}.brand{font-family:var(--font-display);color:var(--ink);white-space:nowrap;font-size:1.15rem;text-decoration:none}.site-header nav{gap:2px;display:flex;overflow-x:auto}.site-header nav a{color:var(--ink-2);white-space:nowrap;border-radius:6px;padding:8px 10px;font-size:.72rem;text-decoration:none}.site-header nav a:hover{color:var(--ink);background:var(--paper-2)}.nav__num{color:var(--apricot);margin-right:6px}main{padding-block:16px clamp(64px,10vw,128px)}.ts{border:3px solid var(--plum);height:min(86vh,720px);min-height:440px;box-shadow:inset 0 0 0 3px var(--cream), 0 30px 70px -40px #1e141a8c;background:var(--paper-2);color:var(--ts-ink);cursor:pointer;user-select:none;border-radius:22px;margin-bottom:clamp(40px,7vw,72px);position:relative;overflow:hidden}.ts__scene{width:100%;height:100%;image-rendering:pixelated;image-rendering:crisp-edges;display:block;position:absolute;inset:0}.ts:after{content:"";pointer-events:none;mix-blend-mode:multiply;background:repeating-linear-gradient(0deg,#28141e12 0 1px,#0000 1px 4px);position:absolute;inset:0}.ts__overlay{text-align:center;z-index:1;place-content:center;justify-items:center;gap:18px;padding:24px 24px 12%;display:grid;position:absolute;inset:0}.ts__kicker,.ts__prompt,.ts__tag{font-family:var(--font-pixel);text-transform:uppercase;letter-spacing:.04em;text-shadow:1px 1px 0 var(--ts-shadow);margin:0;font-size:clamp(.62rem,1.4vw,.82rem)}.ts__name{font-family:var(--font-pixel);letter-spacing:.02em;text-transform:uppercase;color:var(--ts-ink);text-shadow:3px 3px 0 var(--ts-shadow);font-variation-settings:normal;margin:0;font-size:clamp(1.5rem,5.6vw,3.9rem);font-weight:700;line-height:1.1}.ts__prompt{margin-top:10px;animation:1.3s steps(2,jump-none) infinite blink}.ts__prompt a{color:inherit;text-decoration:none}@keyframes blink{to{opacity:.15}}.ts__tag{z-index:1;opacity:.85;position:absolute}.ts__tag--tl{top:16px;left:18px}.ts__tag--tr{top:16px;right:18px}.ts__tag--br{bottom:14px;right:18px}.ts.is-coin .ts__credit{animation:coin .4s var(--ease)}@keyframes coin{30%{transform:translateY(-4px)scale(1.15)}}@media (width<=720px){.ts{border-radius:16px;height:min(72vh,560px);min-height:380px}}.intro{gap:26px;margin-bottom:clamp(48px,10vw,110px);scroll-margin-top:72px;display:grid}.menu ol{flex-wrap:wrap;gap:10px 30px;margin:0;padding:0;font-size:clamp(.8rem,1.6vw,1rem);list-style:none;display:flex}.menu a{color:var(--ink);text-decoration:none}.menu a:hover{color:var(--accent)}.menu__num{color:var(--apricot);margin-right:10px}.menu__hint{color:var(--ink-3);margin:10px 0 0;font-size:.62rem}.intro__summary{font-family:var(--font-display);color:var(--ink-2);text-wrap:pretty;font-variation-settings:"opsz" 60, "SOFT" 30;max-width:58ch;margin:0;font-size:clamp(1.25rem,2vw,1.5rem)}.doors{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px;margin:4px 0 0;padding:0;list-style:none;display:grid}.door{border:2px solid var(--plum);background:var(--paper-2);color:var(--ink);box-shadow:4px 4px 0 var(--plum);transition:transform .2s var(--ease), box-shadow .2s var(--ease);border-radius:12px;gap:6px;padding:18px 20px 20px;text-decoration:none;display:grid}.door:hover{box-shadow:6px 6px 0 var(--plum);transform:translate(-2px,-2px)}.door small{color:var(--coral);font-size:.62rem}.door strong{font-family:var(--font-display);font-size:1.3rem;font-weight:500}.door span{color:var(--ink-2);font-size:.95rem}@media (prefers-color-scheme:dark){.door{border-color:var(--rule);box-shadow:4px 4px 0 var(--rule)}.door:hover{box-shadow:6px 6px 0 var(--rule)}}.kicker{letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3);margin:0 0 .75em;font-size:.72rem;font-weight:600}.section{grid-template-columns:220px minmax(0,1fr);gap:clamp(20px,4vw,56px);padding:clamp(40px,7vw,80px) 0;scroll-margin-top:56px;display:grid;position:relative}.section:before{content:"";opacity:.32;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='10' shape-rendering='crispEdges'%3E%3Crect width='8' height='2' y='0' fill='%23000'/%3E%3Crect width='2' height='2' x='0' y='2' fill='%23000'/%3E%3Crect width='2' height='2' x='4' y='2' fill='%23000'/%3E%3Crect width='2' height='2' x='2' y='4' fill='%23000'/%3E%3Crect width='2' height='2' x='6' y='4' fill='%23000'/%3E%3Crect width='2' height='2' x='0' y='6' fill='%23000'/%3E%3Crect width='2' height='2' x='4' y='8' fill='%23000'/%3E%3C/svg%3E");background-repeat:repeat-x;background-size:8px 10px;height:10px;position:absolute;top:0;left:0;right:0}@media (prefers-color-scheme:dark){.section:before{filter:invert();opacity:.28}}.section>h2{color:var(--ink);align-self:start;margin:0;font-size:clamp(.95rem,1.8vw,1.25rem);line-height:1.4;position:sticky;top:84px}.section__num{color:var(--apricot);margin-bottom:6px;font-size:.72em;display:block}@media (width<=720px){.section{grid-template-columns:1fr}.section>h2{position:static}.section__num{margin-right:10px;display:inline}}.entries{gap:32px;display:grid}.entry{gap:6px;display:grid}.entry__head{flex-wrap:wrap;align-items:baseline;gap:4px 14px;display:flex}.entry__head h3{margin:0}.entry__meta{color:var(--ink-3);font-size:.66rem}.entry p,.entry li{color:var(--ink-2);margin:0}.entry ul{gap:4px;margin:6px 0 0;padding-left:1.1em;display:grid}.projects{gap:18px;display:grid}.project{border:1px solid var(--rule);border-radius:var(--radius);background:var(--paper-2);grid-template-columns:minmax(0,1fr) auto;gap:8px 24px;padding:20px 22px;display:grid}.project h3{margin:0}.project h3 a{color:var(--ink);text-decoration:none}.project h3 a:hover{color:var(--accent)}.project p{color:var(--ink-2);grid-column:1/-1;margin:0}.project__tech{color:var(--ink-3);grid-column:1/-1;font-size:.64rem}.project__links{white-space:nowrap;gap:14px;font-size:.92rem;display:flex}.skills{gap:18px;display:grid}.skills__group{grid-template-columns:150px minmax(0,1fr);align-items:baseline;gap:8px 16px;display:grid}.skills__group h3{color:var(--ink-3);margin:0;font-size:.68rem;line-height:1.5}.chips{flex-wrap:wrap;gap:8px;margin:0;padding:0;list-style:none;display:flex}.chips li{color:var(--ink-2);border:1px solid var(--rule);background:var(--paper-2);border-radius:6px;padding:4px 11px;font-size:.9rem}.contact{gap:8px;font-size:1.1rem;display:grid}.scores{border:2px solid var(--plum);background:var(--paper-2);border-radius:12px;margin-top:clamp(32px,6vw,64px);padding:22px 24px;font-size:.7rem}.scores h2{color:var(--coral);letter-spacing:.08em;margin:0 0 14px;font-family:inherit;font-size:.72rem;font-weight:400}.scores ul{flex-wrap:wrap;gap:14px 36px;margin:0;padding:0;list-style:none;display:flex}.scores li{color:var(--ink-3);gap:4px;display:grid}.scores b{color:var(--ink);letter-spacing:.04em;font-size:1.6rem;font-weight:700}@media (prefers-color-scheme:dark){.scores{border-color:var(--rule)}}.site-footer{border-top:1px solid var(--rule);color:var(--ink-3);font-size:.9rem}.site-footer__row{justify-content:space-between;align-items:center;gap:16px;min-height:72px;display:flex}.site-footer a{color:var(--ink-2)}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}.ts__prompt{animation:none}}.minor-list{margin-top:28px}.minor-list h3{color:var(--ink-3);margin:0 0 10px;font-size:.68rem}.bonus h3{color:var(--coral)}.minor-list ul{gap:8px;margin:0;padding:0;list-style:none;display:grid}.minor-list li{color:var(--ink-2);flex-wrap:wrap;align-items:baseline;gap:4px 12px;font-size:.95rem;display:flex}.minor-list li a,.minor-list li strong{color:var(--ink);font-weight:600}
