:root{color-scheme:light;--text:#20252d;--muted:#747d89;--focus:#476c9e;font-family:Arial,Helvetica,sans-serif;font-synthesis:none}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background-color:#f5f8fc;background-image:linear-gradient(#758ba30e 1px,transparent 1px),linear-gradient(90deg,#758ba30e 1px,transparent 1px);background-size:32px 32px;color:var(--text);font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased;isolation:isolate}
button,a{touch-action:manipulation;-webkit-tap-highlight-color:transparent;outline-offset:5px}
button{font:inherit;color:inherit;cursor:pointer}
button:focus-visible,a:focus-visible{outline:2px solid var(--focus)}
a{color:inherit}
.shark-background{position:fixed;inset:0;width:100%;height:100%;pointer-events:none;z-index:-1}
.site-shell{min-height:100svh;display:grid;place-items:center;padding:40px 28px;transition:opacity .8s ease .3s}
.profile-stack{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);gap:14px;align-items:stretch;width:min(540px,100%)}
.cover{display:block;width:100%;height:100%;aspect-ratio:1.2;object-fit:cover;object-position:50% 20%;border-radius:6px}
.profile-card{min-width:0;padding:18px 20px;background:#f8fafd;border:1px solid #dfe5ec;border-radius:14px}
.identity{display:flex;align-items:center;gap:12px}
.avatar{display:block;flex:none;width:44px;height:44px;border-radius:50%;object-fit:cover}
h1{font-size:26px;line-height:1.15;font-weight:500;letter-spacing:-.7px;margin:0 0 4px}
h1:focus{outline:none}
.handle{margin:0;color:var(--muted);font-size:13px}
.socials{display:grid;grid-template-columns:1fr;gap:0;margin-top:14px}
.social{display:flex;align-items:center;gap:10px;min-height:34px;text-decoration:none;border-radius:4px;font-size:13px;white-space:nowrap}
.social svg{display:block;flex:none;width:18px;height:18px}
.social:hover{color:#536b86;text-decoration:underline;text-underline-offset:4px}
.entry-screen{position:fixed;inset:0;display:grid;place-items:center;background:#f5f8fcf2;z-index:2;opacity:0;visibility:hidden;pointer-events:none;transition:opacity .8s ease,visibility 0s .8s}
.entry-play{background:transparent;border:0;padding:20px;font-size:18px;font-weight:400;display:flex;align-items:center;gap:12px}
.entry-arrow{width:18px;height:18px}
.entry-corner{display:none}
.entry-play:hover{color:#536b86}
.entry-pending .entry-screen{opacity:1;visibility:visible;pointer-events:auto;transition:none}
.entry-pending .site-shell{opacity:0;visibility:hidden;pointer-events:none}
.intro-revealing .site-shell{pointer-events:none}
@media(max-width:560px){
  body{background-size:24px 24px}
  .site-shell{padding:32px 20px}
  .profile-stack{grid-template-columns:minmax(0,1fr) minmax(0,1.05fr);gap:12px;max-width:420px}
  .cover{height:auto;align-self:center;aspect-ratio:1.15;object-position:50% 20%}
  .profile-card{padding:14px 12px;border-radius:12px}
  .identity{gap:8px}
  .avatar{width:32px;height:32px}
  h1{font-size:22px;letter-spacing:-.5px}
  .handle{font-size:11px}
  .socials{margin-top:12px}
  .social{font-size:12px;gap:9px;min-height:40px}
  .social svg{width:17px;height:17px}
}
@media(max-width:359px){
  .site-shell{padding:28px 14px}
  .profile-stack{gap:10px;grid-template-columns:minmax(0,.95fr) minmax(0,1.05fr)}
  .profile-card{padding:12px 10px}
  .avatar{width:30px;height:30px}
  h1{font-size:20px}
  .identity{gap:7px}
  .social svg{width:17px;height:17px}
}
@media(pointer:coarse){.social{min-height:44px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{transition:none!important;animation:none!important}}

/* The profile opens the page; the work continues below it. */
html{scroll-behavior:smooth;scroll-snap-type:y mandatory}
.site-shell{position:relative;min-height:max(480px,100svh);min-height:max(480px,100dvh)}
.site-shell,.build-section{scroll-snap-align:start;scroll-snap-stop:always}
.site-shell::before,.build-section::before{content:"";position:absolute;inset:10% 8%;z-index:-1;pointer-events:none;background:radial-gradient(ellipse at center,rgba(228,235,241,.86),rgba(235,241,246,.35) 42%,transparent 72%)}
.scroll-cue{position:absolute;bottom:28px;left:50%;transform:translateX(-50%);display:flex;align-items:center;flex-direction:column;gap:8px;min-width:140px;min-height:72px;padding:8px 12px;color:#59636f;text-decoration:none;font-size:12px}
.scroll-cue svg{width:24px;height:32px}
.scroll-cue:hover{color:#20252d}
/* An open profile with a soft grey haze behind both columns. */
.build-section{position:relative;min-height:100svh;min-height:100dvh;display:grid;place-items:center;padding:112px 28px 48px;background:transparent;scroll-margin-top:0;outline:none}
.build-section::before{inset:0;background:radial-gradient(ellipse 620px 360px at 50% 46%,rgba(196,201,205,.48) 0%,rgba(215,219,222,.3) 48%,transparent 84%)}
.download-spread{display:grid;grid-template-columns:minmax(160px,.73fr) minmax(0,2fr);align-items:start;gap:24px;width:min(824px,100%);margin:auto}
.download-intro{padding-top:20px}
.download-intro h2{max-width:9ch;margin:0;font-size:clamp(30px,3vw,43px);line-height:1.08;font-weight:500;letter-spacing:-1.7px}
.mini-projects{display:inline-flex;align-items:center;gap:8px;min-height:44px;margin-top:18px;color:var(--text);font-size:14px;text-decoration:none}
.mini-projects svg{width:19px;height:19px}
.mini-projects:hover,.app-row:hover .app-source{text-decoration:underline;text-underline-offset:4px}
.download-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin:0;padding:0;list-style:none}
.app-row{display:grid;min-width:0;border-radius:14px;text-decoration:none}
.app-icon-frame{display:grid;place-items:center;aspect-ratio:1.56;border:1px solid #dfe5ec;border-radius:14px;overflow:hidden}
.app-icon-frame--restock{background:radial-gradient(ellipse,#f6e9d5,#fdf8ef)}
.app-icon-frame--codex{background:radial-gradient(ellipse,#dce4ed,#f4f7fb)}
.app-icon{width:55%;height:90%;object-fit:contain}
.app-name,.app-source{padding-inline:4px}
.app-name{margin-top:9px;font-size:21px;line-height:1.25;letter-spacing:-.55px}
.app-source{margin-top:3px;color:#526170;font-size:15px}
@media(max-width:640px){
  .download-spread{grid-template-columns:1fr;gap:16px;max-width:420px}
  .download-intro{padding:0}
  .download-intro h2{max-width:none;font-size:28px;letter-spacing:-.9px}
  .mini-projects{margin-top:2px}
  .download-list{gap:12px}
  .app-icon-frame{border-radius:12px;aspect-ratio:1.25}
  .app-name{font-size:17px}
  .app-source{font-size:13px}
}
.build-footer{display:flex;justify-content:center;margin-top:48px;color:#626c78}
.build-footer a{display:flex;align-items:center;min-height:44px;padding:0 12px;text-decoration:none;font-size:12px}
.build-footer a:hover{text-decoration:underline;text-underline-offset:4px}
.entry-pending{overflow:hidden}
.entry-pending .build-section{visibility:hidden;opacity:0;pointer-events:none}
@media(max-width:560px){
  .scroll-cue{bottom:24px}
  .build-section{padding:112px 20px 40px}

  .build-footer{margin-top:36px}
  .build-section::before{background:radial-gradient(ellipse 110% 50% at 50% 45%,rgba(196,201,205,.4),rgba(215,219,222,.22) 55%,transparent 88%)}


}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}


@media(prefers-reduced-motion:reduce){.app-list{scroll-behavior:auto}}

@media(prefers-reduced-motion:reduce){a.app-row:hover,a.app-row:focus-visible{transform:scale(1)}}

.website-views{position:absolute;right:12px;bottom:12px;z-index:3;margin:0;color:#465563}
.website-views summary{display:grid;place-items:center;width:44px;height:44px;cursor:pointer;list-style:none;color:#7a8794;border-radius:6px}
.website-views summary::-webkit-details-marker{display:none}
.website-views summary::marker{content:""}
.website-views summary svg{display:block;width:8px;height:8px}
.website-views[open] summary svg{transform:rotate(180deg)}
.website-views summary:hover{color:#465563}
.website-views summary:focus-visible{outline:2px solid var(--focus);outline-offset:0}
.website-views-body{position:absolute;right:0;bottom:48px;display:flex;align-items:center;justify-content:space-between;gap:14px;width:min(280px,calc(100vw - 40px));padding:14px 16px;box-sizing:border-box;background:#f5f8fc;border:1px solid #dce3eb;border-radius:10px;box-shadow:0 6px 22px #293b5014}
.website-views-title{font-size:11px;line-height:1.5;font-weight:600}
.website-views p{margin:2px 0 0;font-size:10px;color:#586776;line-height:1.5}
.website-views-count{font-size:18px;line-height:1.2;font-weight:600;font-variant-numeric:tabular-nums;color:#20252d}

/* Mirror the first-page cue at the top of the projects section. */
.scroll-cue--back{top:24px;bottom:auto}
.site-shell:focus{outline:none}

.website-views-body{display:block}
.view-count-row{display:flex;align-items:center;justify-content:space-between;gap:14px}
.view-count-row + .view-count-row{margin-top:12px;padding-top:12px;border-top:1px solid #dce3eb}
.website-views .view-count-note{margin-top:10px;font-size:9px}

.github-profile-count{display:grid;place-items:center;flex-shrink:0;min-width:27px;min-height:20px;box-sizing:border-box;padding:0 4px;border-radius:3px;background:linear-gradient(#5f5f5f,#4d4d4d);color:#fff}
/* The upstream badge reserves 10px for an empty label; its text centre is 4px right of centre. */
.github-profile-badge{display:flex;overflow:hidden}
.github-profile-count img{display:block;width:auto;height:20px;max-width:none;margin-left:-8px}
.github-profile-count img[hidden]{display:none}
