@import "https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;450;500;550;600;650;700&family=Newsreader:ital,wght@0,400;0,450;0,500;0,550;1,400;1,450&display=swap";:root{--paper:#f9f8f4;--ink:#282b24;--muted:#71746a;--line:#dedfd5;--accent:#546342;--soft:#eeeee6;--serif:"Newsreader",Georgia,serif;--sans:"DM Sans",system-ui,sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth}body{background:var(--paper);color:var(--ink);font-family:var(--sans);-webkit-font-smoothing:antialiased;margin:0;font-size:15px;line-height:1.6}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}button{cursor:pointer}a:hover{color:var(--accent)}a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--accent);outline-offset:5px}button:disabled{opacity:.5;cursor:wait}::selection{background:#d8dfc8}h1,h2,h3,p{margin:0}h1,h2,h3{font-weight:450}.site-wrap{max-width:1080px;margin:auto;padding:0 48px}.site-header{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;height:123px;display:flex}.identity{letter-spacing:-.3px;align-items:center;gap:16px;font-weight:550;display:flex}.monogram{font-family:var(--serif);letter-spacing:-3px;border:1px solid #c8cebe;border-radius:50%;place-items:center;width:47px;height:47px;padding-right:4px;font-size:33px;line-height:1;display:grid}.site-header nav{gap:30px;font-size:13px;display:flex}.site-header nav a[aria-current=page]{text-underline-offset:7px;text-decoration:underline}.hero{max-width:770px;padding:82px 0 75px}.eyebrow{letter-spacing:1.6px;text-transform:uppercase;color:var(--muted);font-size:10px;font-weight:650}.hero h1{font-family:var(--serif);letter-spacing:-2.5px;margin:22px 0 23px;font-size:clamp(46px,6.3vw,72px);line-height:1.08}.hero h1 em{color:var(--accent);font-weight:400}.hero p{max-width:495px;color:var(--muted);font-size:16px;line-height:1.8}.inline-links{gap:23px;margin-top:24px;font-size:12px;display:flex}.inline-links a{border-bottom:1px solid #b4b9a8;padding-bottom:2px}.section-heading{border-bottom:1px solid var(--line);justify-content:space-between;align-items:baseline;gap:20px;padding-bottom:17px;display:flex}.section-heading h2{font-family:var(--serif);letter-spacing:-.6px;font-size:27px}.text-link{color:var(--muted);font-size:12px}.home-grid{grid-template-columns:minmax(0,1fr) 225px;gap:65px;display:grid}.post-item{border-bottom:1px solid var(--line);padding:28px 0}.post-meta{color:var(--muted);letter-spacing:.35px;align-items:center;gap:10px;margin-bottom:12px;font-size:10px;display:flex}.post-type{color:var(--accent);font-weight:600}.post-item h3{font-family:var(--serif);letter-spacing:-.5px;margin-bottom:9px;font-size:28px;line-height:1.18}.post-item p{color:var(--muted);font-size:13px;line-height:1.85}.post-item.note p{font-family:var(--serif);color:var(--ink);letter-spacing:-.25px;font-size:24px;line-height:1.45}.post-item .source{color:var(--accent);margin-top:11px;font-size:11px;display:inline-block}.aside-block{margin-bottom:36px}.aside-block .eyebrow{margin-bottom:18px}.project-mini{border-bottom:1px solid var(--line);padding:13px 0;display:block}.project-mini:first-of-type{padding-top:0}.project-mini strong{justify-content:space-between;font-size:13px;font-weight:550;display:flex}.project-mini p{color:var(--muted);margin-top:4px;font-size:11px}.aside-note{font-family:var(--serif);font-size:20px;line-height:1.5}.aside-caption{color:var(--muted);margin-top:12px;font-size:11px}.site-footer{border-top:1px solid var(--line);color:var(--muted);justify-content:space-between;margin-top:75px;padding:24px 0 80px;font-size:10px;display:flex}.site-footer div{gap:20px;display:flex}.muted{color:var(--muted)}.preview-bar{background:var(--ink);color:#eeeee5;z-index:20;letter-spacing:.8px;justify-content:space-between;align-items:center;padding:10px max(24px,50vw - 492px);font-size:10px;display:flex;position:fixed;bottom:0;left:0;right:0}.preview-bar a{color:#fff;letter-spacing:0}.preview-detail{opacity:.55;letter-spacing:0;text-transform:none}.skip{z-index:99;background:#fff;padding:8px 16px;position:fixed;top:-80px;left:16px}.skip:focus{top:16px}.page-heading h1{font-family:var(--serif);letter-spacing:-1.8px;margin:12px 0 16px;font-size:58px;line-height:1.1}.page-heading p{color:var(--muted);max-width:510px}.filters{border-bottom:1px solid var(--line);gap:6px;padding-bottom:16px;display:flex}.filter{color:var(--muted);background:0 0;border:0;border-radius:3px;padding:7px 14px;font-size:12px}.filter[aria-pressed=true]{background:var(--ink);color:var(--paper)}.writing-list{max-width:710px}.empty{color:var(--muted);padding:45px 0}[hidden]{display:none!important}.article{max-width:650px;margin:0 auto}.article-header{padding:60px 0 32px}.article-header h1{font-family:var(--serif);letter-spacing:-1.5px;margin:18px 0;font-size:54px;line-height:1.08}.prose{font-family:var(--serif);font-size:22px;line-height:1.65}.prose p{margin:0 0 24px}.prose h2{margin:35px 0 17px;font-size:32px;line-height:1.2}.prose a{color:var(--accent);text-underline-offset:4px;text-decoration:underline}.prose blockquote{border-left:2px solid var(--accent);color:var(--muted);margin:25px 0;padding-left:25px;font-style:italic}.back-link{color:var(--muted);font-size:12px}.article-end{border-top:1px solid var(--line);justify-content:space-between;align-items:center;margin-top:45px;padding-top:20px;display:flex}.button{border:1px solid var(--line);color:var(--ink);background:0 0;border-radius:4px;justify-content:center;align-items:center;gap:7px;padding:9px 16px;font-size:12px;display:inline-flex}.button:hover{background:var(--soft)}.button.primary{background:var(--ink);border-color:var(--ink);color:#fff}.button.primary:hover{background:var(--accent)}.project-row{border-bottom:1px solid var(--line);grid-template-columns:55px 1fr auto;align-items:start;gap:22px;padding:32px 0;display:grid}.project-number{font-family:var(--serif);color:var(--muted);font-size:22px;font-style:italic}.project-row h2{font-family:var(--serif);margin-bottom:8px;font-size:33px}.project-row p{color:var(--muted);max-width:480px;font-size:14px}.project-row .tag{text-transform:uppercase;letter-spacing:1px;color:var(--accent);margin-top:16px;font-size:10px;display:inline-block}@media (width<=760px){.site-wrap{padding:0 24px}.site-header{height:94px}.site-header nav{gap:20px}.hero{padding:54px 0 50px}.hero h1{letter-spacing:-1.5px}.home-grid{grid-template-columns:1fr;gap:45px}.home-aside{grid-template-columns:1fr 1fr;gap:30px;display:grid}.site-footer{margin-top:50px}.page-heading{padding-top:45px}.page-heading h1{font-size:48px}.article-header h1{font-size:44px}.prose{font-size:20px}.project-row{grid-template-columns:30px 1fr;gap:12px}.project-row>.button{grid-column:2;justify-self:start}}@media (width<=430px){.home-aside{grid-template-columns:1fr}.hero h1{font-size:45px}.identity{gap:10px}.site-footer{gap:20px}.preview-detail{display:none}.filters{gap:0}.filter{padding:7px 12px}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important}}:root{--paper:#fdfdfc;--ink:#222629;--muted:#666b70;--line:#e5e6e5;--accent:#315b95;--soft:#f1f3f5}body{font-size:16px;line-height:1.65}.site-wrap{max-width:1120px;padding:0 48px}.site-header{border:0;height:124px}.identity{letter-spacing:-.6px;gap:0;font-size:21px;font-weight:550}.site-header nav{gap:30px;font-size:14px}.site-header nav a{color:var(--muted)}.site-header nav a:hover,.site-header nav a[aria-current=page]{color:var(--ink)}.intro{max-width:790px;padding:68px 0 90px}.intro-label{color:var(--muted);margin-bottom:26px;font-size:14px}.intro h1{letter-spacing:-2.3px;font-size:clamp(38px,5.2vw,60px);font-weight:450;line-height:1.14}.intro h1 em{font-family:var(--serif);letter-spacing:-1.4px;font-weight:400}.intro-description{color:var(--muted);max-width:625px;margin:26px 0 22px;font-size:19px;line-height:1.75}.underlined{border-bottom:1px solid #b6bbc0;padding-bottom:4px;font-size:14px}.section-heading{border:0;gap:16px;padding-bottom:26px}.section-heading h2{font-family:var(--sans);letter-spacing:-.35px;font-size:19px;font-weight:550}.text-link{font-size:14px}.project-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:52px 32px;display:grid}.home-projects{grid-template-columns:repeat(3,minmax(0,1fr));gap:24px}.project-card{min-width:0}.project-art{background:var(--project-light);aspect-ratio:1.5;isolation:isolate;border-radius:5px;justify-content:center;align-items:center;display:flex;position:relative;overflow:hidden}.project-art>img{object-fit:contain;width:96px;height:96px;transition:transform .25s}.project-art:hover>img{transform:translateY(-4px)}.art-caption{text-align:center;color:#373d3b;font-size:13px;position:absolute;bottom:20px;left:12px;right:12px}.home-projects .art-caption{display:none}.home-projects .project-art>img{width:76px;height:76px}.project-caption{padding-top:19px}.project-category{color:var(--muted);font-size:12px}.project-caption h3{font-family:var(--sans);letter-spacing:-.6px;margin:5px 0 10px;font-size:23px;font-weight:500;line-height:1.35}.project-caption h3 span{color:var(--muted);margin-left:3px;font-size:16px}.project-caption p{color:var(--muted);max-width:420px;font-size:15px;line-height:1.75}.private-label{color:var(--muted);margin-top:13px;font-size:12px;display:inline-block}.home-writing{max-width:760px;margin-top:92px}.post-item{padding:26px 0}.post-item:first-of-type{border-top:1px solid var(--line)}.post-meta{letter-spacing:0;font-size:12px}.post-item h3{font-family:var(--sans);letter-spacing:-.5px;font-size:24px;line-height:1.35}.post-item p{font-size:16px;line-height:1.75}.post-item.note p{font-size:25px}.post-item .source{font-size:13px}.site-footer{margin-top:96px;padding-bottom:86px;font-size:13px}.preview-bar{background:#262b30;padding:9px 24px;font-size:12px}.page-heading{padding:65px 0 55px}.page-heading h1{font-family:var(--sans);letter-spacing:-2px;margin:0 0 22px;font-size:clamp(40px,5vw,58px);font-weight:450;line-height:1.12}.page-heading p{max-width:590px;font-size:18px;line-height:1.75}.eyebrow{letter-spacing:1px;margin-bottom:18px;font-size:12px}.filter{font-size:14px}.filters{flex-wrap:wrap}.back-link,.button{font-size:14px}.article-header h1{font-size:clamp(38px,5vw,54px);line-height:1.15}.prose{overflow-wrap:anywhere}.prose img{max-width:100%;height:auto}.prose pre{font-size:15px;overflow:auto}.prose code{font-size:.8em}.serial-killer .project-art>img{object-fit:cover;object-position:center 18%;width:100%;height:100%}.serial-killer .art-caption{display:none}.serial-killer .project-art:hover>img{transform:none}@media (width>=761px){.project-grid:not(.home-projects) .geland-games{grid-column:1/-1;grid-template-columns:1fr 1fr;align-items:center;gap:32px;display:grid}.project-grid:not(.home-projects) .geland-games .project-caption{padding:0 24px}}@media (width<=760px){.site-wrap{padding:0 24px}.site-header{height:96px}.site-header nav{gap:20px}.intro{padding:44px 0 66px}.intro h1{letter-spacing:-1.3px}.intro-description{font-size:18px}.home-projects{grid-template-columns:1fr}.home-projects .project-art{aspect-ratio:1.85}.home-projects .project-art>img{width:100px;height:100px}.home-projects .art-caption{display:block}.project-grid{gap:38px 22px}.home-writing{margin-top:66px}.site-footer{margin-top:64px}.page-heading{padding:42px 0}.project-art .art-caption{font-size:12px;bottom:14px}.identity{font-size:19px}.section-heading h2{font-size:18px}}@media (width<=540px){.project-grid{grid-template-columns:1fr}.project-art{aspect-ratio:1.65}.site-header nav{gap:16px}.site-header nav a{font-size:13px}.site-footer{flex-wrap:wrap;gap:16px}.intro-label{font-size:13px}.intro h1{font-size:39px}.section-heading{align-items:center}.preview-bar{font-size:12px}.art-caption{font-size:13px}}.about-heading{padding-bottom:34px}.about-grid{grid-template-columns:minmax(0,650px) 220px;gap:70px;display:grid}.about-story p{color:var(--muted);margin-bottom:26px;font-size:18px;line-height:1.85}.about-story .about-lead{font-family:var(--serif);color:var(--ink);font-size:30px;line-height:1.5}.about-story p a{color:var(--ink);text-underline-offset:4px;text-decoration:underline #b6bbc0}.about-story .inline-links{font-size:14px}.career-notes{border-left:1px solid var(--line);align-self:start;margin-top:8px;padding-left:28px}.career-notes h2{font-size:14px;font-weight:550}.career-notes dl{margin:24px 0 0}.career-notes dl>div{margin-bottom:25px}.career-notes dt{color:var(--muted);margin-bottom:5px;font-size:13px}.career-notes dd{margin:0;font-size:14px;line-height:1.6}.game-intro{grid-template-columns:1fr 280px;align-items:center;gap:80px;padding:55px 0 70px;display:grid}.game-intro .eyebrow{margin-top:36px}.game-intro h1{font-family:var(--serif);letter-spacing:-2px;font-size:64px;line-height:1.1}.game-intro .game-subtitle{color:var(--ink);margin:10px 0 20px;font-size:23px}.game-intro p{color:var(--muted);max-width:480px;font-size:18px}.game-intro .button{margin-top:26px}.game-intro img{border-radius:10px;width:100%;height:auto}.game-rules{max-width:700px}.game-rules h3{margin:30px 0 18px;font-size:26px}.game-rules h4{margin:25px 0 12px;font-size:23px}.game-rules table{font-family:var(--sans);border-collapse:collapse;width:100%;margin:30px 0;font-size:15px}.game-rules th,.game-rules td{border-bottom:1px solid var(--line);text-align:left;padding:12px 8px}.game-rules ul,.game-rules ol{padding-left:26px}@media (width<=900px){.about-grid{grid-template-columns:minmax(0,1fr) 180px;gap:40px}.game-intro{grid-template-columns:1fr 230px;gap:35px}}@media (width<=640px){.about-grid{grid-template-columns:1fr;gap:30px}.about-story .about-lead{font-size:27px}.career-notes{border-left:0;border-top:1px solid var(--line);padding-top:28px;padding-left:0}.career-notes dl{grid-template-columns:1fr 1fr;gap:20px;display:grid}.career-notes dl>div{margin:0}.game-intro{grid-template-columns:1fr;padding-top:35px}.game-intro img{justify-self:center;width:200px}.game-intro h1{font-size:50px}.game-rules table{font-size:13px}.game-rules th,.game-rules td{padding:9px 5px}}.game-covers{opacity:.65;grid-template-columns:1fr 1fr;gap:3px;display:grid;position:absolute;inset:0}.game-covers img{object-fit:cover;width:100%;height:100%}.geland-games .project-art>img{z-index:1;filter:drop-shadow(0 3px 12px #0006);position:relative}.geland-games .art-caption{color:#fff;text-shadow:0 1px 4px #000;z-index:1}.geland-games .project-art{box-shadow:inset 0 -55px 40px -20px #0008}.game-downloads{flex-wrap:wrap;gap:12px;margin-top:26px;display:flex}.game-intro .game-downloads .button{margin-top:0}.project-section+.project-section{margin-top:76px}.work-projects .project-art>img{object-fit:contain;width:60%;height:auto;max-height:110px}.work-projects .project-art{aspect-ratio:2}.work-projects .art-caption{display:none}.wizefi .project-art>img{width:60%;height:auto;max-height:110px}.fun-projects .geland-games{grid-column:auto!important;display:block!important}.fun-projects .geland-games .project-caption{padding:19px 0 0!important}:root{color-scheme:light;--paper:#fdfdfc;--ink:#222629;--muted:#666b70;--line:#e5e6e5;--accent:#315b95;--soft:#f1f3f5;--selection:#dbe7f5;--danger:#965546;--expired:#856448}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){color-scheme:dark;--paper:#1b1c1d;--ink:#e9e9e6;--muted:#a7acb2;--line:#353b41;--accent:#a2c3f1;--soft:#252b31;--selection:#334e70;--danger:#eda595;--expired:#d4b08e}}:root[data-theme=dark]{color-scheme:dark;--paper:#1b1c1d;--ink:#e9e9e6;--muted:#a7acb2;--line:#353b41;--accent:#a2c3f1;--soft:#252b31;--selection:#334e70;--danger:#eda595;--expired:#d4b08e}::selection{background:var(--selection);color:var(--ink)}.identity-dot{color:var(--accent)}.skip{background:var(--paper);color:var(--ink)}.button.primary,.toast{background:var(--ink);color:var(--paper)}.button.primary:hover{background:var(--accent);color:var(--paper)}.danger,.form-error{color:var(--danger)}.doc-status.expired,.doc-status.revoked{color:var(--expired)}.header-controls{align-items:center;gap:32px;display:flex}.theme-control{border:1px solid var(--line);background:var(--soft);border-radius:99px;min-width:0;margin:0;padding:3px;display:flex}.theme-control label{cursor:pointer;position:relative}.theme-control input,.sr-only{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.theme-control span{width:36px;height:36px;color:var(--muted);border-radius:99px;place-items:center;padding:0;font-size:13px;line-height:1.6;display:grid}.theme-control label:hover span{color:var(--ink)}.theme-control input:checked+span{background:var(--paper);color:var(--ink);box-shadow:0 1px 3px #0002}.theme-control input:focus-visible+span{outline:2px solid var(--accent);outline-offset:3px}@media (width<=760px){.site-header{flex-wrap:wrap;gap:22px;height:auto;min-height:96px;padding:26px 0}.header-controls{flex-wrap:wrap;gap:20px}}@media (width<=540px){.header-controls{justify-content:space-between;gap:16px;width:100%}}@media (pointer:coarse){.theme-control span{width:44px;height:44px}}.project-art{background:var(--project-light)}.project-art .art-caption{color:#373d3b}.project-art>.project-logo-dark{display:none}.work-projects .project-art>img{background:0 0;border-radius:0;padding:0}.geland-games .project-art{background:var(--project-light)}.geland-games .project-art .art-caption{color:#fff}:root[data-theme=dark] .project-art{background:var(--project-dark)}:root[data-theme=dark] .project-art .art-caption{color:#e9e9e6}:root[data-theme=dark] .project-art>.project-logo-light{display:none}:root[data-theme=dark] .project-art>.project-logo-dark{display:block}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .project-art{background:var(--project-dark)}:root:not([data-theme=light]) .project-art .art-caption{color:#e9e9e6}:root:not([data-theme=light]) .project-art>.project-logo-light{display:none}:root:not([data-theme=light]) .project-art>.project-logo-dark{display:block}}.site-footer div{flex-wrap:wrap}.shareout .project-art>img{width:62%;max-width:288px;height:auto}:root[data-theme=dark] .work-projects .project-art>img{filter:brightness(0)invert()}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .work-projects .project-art>img{filter:brightness(0)invert()}}:root[data-theme=dark] .wizefi .project-art>img{filter:brightness(0)invert()}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .wizefi .project-art>img{filter:brightness(0)invert()}}
