/* Tokens. Light is the base; dark is applied by system preference unless the
   visitor picked light, and by the toggle (data-theme) either way. */
:root{
  --bg:#f6f7f7; --surface:#eceeee; --line:#dfe3e4; --rule:#16191a;
  --text:#33383a; --text-strong:#16191a; --muted:#6b7275; --accent:#2f8fa0;
  --font:"Instrument Sans",-apple-system,BlinkMacSystemFont,"Segoe UI",system-ui,sans-serif;
  --mono:"JetBrains Mono",ui-monospace,Menlo,monospace;
  --maxw:64rem;
  color-scheme:light;
}
@media(prefers-color-scheme:dark){:root:not([data-theme=light]){
  --bg:#121416; --surface:#1a1d20; --line:#22272a; --rule:#3a4044;
  --text:#c4c9ca; --text-strong:#f1f3f3; --muted:#7d8486; --accent:#5eb8c8;
  color-scheme:dark;
}}
:root[data-theme=dark]{
  --bg:#121416; --surface:#1a1d20; --line:#22272a; --rule:#3a4044;
  --text:#c4c9ca; --text-strong:#f1f3f3; --muted:#7d8486; --accent:#5eb8c8;
  color-scheme:dark;
}

*{box-sizing:border-box;margin:0}
body{font:17px/1.6 var(--font);background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;padding:2.25rem 1.5rem 4rem}
a{color:var(--text-strong);text-decoration:underline;text-decoration-color:var(--line);text-underline-offset:3px}
a:hover{color:var(--accent);text-decoration-color:var(--accent)}
img{max-width:100%;height:auto;display:block}
p+p{margin-top:.25rem}
.intro p+p,#elsewhere p+p{margin-top:1.1rem}
.mono{font-family:var(--mono);font-size:12px;letter-spacing:.02em;color:var(--muted)}
.muted{color:var(--muted)}
h1{font-weight:500;font-size:2.25rem;line-height:1.15;letter-spacing:-.025em;color:var(--text-strong);text-wrap:pretty}
h2{display:flex;gap:.75rem;align-items:baseline;font-weight:500;font-size:.9rem;letter-spacing:.06em;text-transform:uppercase;color:var(--text-strong);margin-bottom:1.1rem}
h2 .num{font-family:var(--mono);font-size:12px;color:var(--accent);letter-spacing:0}

.site-header,main,.site-footer{max-width:var(--maxw);margin-inline:auto}
.site-header{display:flex;align-items:center;gap:1.75rem;padding-bottom:1.25rem;border-bottom:1px solid var(--line);margin-bottom:3.5rem}
.brand{font-weight:600;font-size:1.35rem;letter-spacing:-.03em;color:var(--text-strong);text-decoration:none;margin-right:auto}
.brand b{color:var(--accent);font-weight:inherit}
.site-header nav{display:flex;gap:1.4rem}
.site-header nav a{font-family:var(--mono);font-size:12px;letter-spacing:.02em;color:var(--muted);text-decoration:none}
.site-header nav a:hover{color:var(--accent)}

/* Theme switch: System / Light / Dark, icons only */
.theme{display:flex;gap:.25rem}
.theme button{appearance:none;border:0;background:none;cursor:pointer;color:var(--muted);width:1.75rem;height:1.75rem;border-radius:6px;display:grid;place-items:center}
.theme button:hover{color:var(--text-strong)}
.theme button[aria-pressed=true]{color:var(--accent)}
.theme button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.theme svg{display:block;width:1rem;height:1rem;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round}

main{display:flex;flex-direction:column;gap:3.75rem}
.intro{display:flex;gap:3rem;align-items:flex-start}
.intro>div{display:flex;flex-direction:column;gap:1.1rem;flex:1}
.portrait{width:300px;height:auto;border-radius:14px;flex-shrink:0;border:1px solid var(--line)}
.social{display:flex;gap:.5rem;flex-wrap:wrap;margin-top:.25rem}
.social a{display:inline-flex;align-items:center;gap:.5rem;height:2.25rem;padding:0 .9rem;border:1px solid var(--line);border-radius:6px;font-size:14px;text-decoration:none;color:var(--text)}
.social a:hover{border-color:var(--accent);color:var(--accent)}
.social a.primary{border-color:var(--accent);color:var(--accent)}
.social svg{width:15px;height:15px;fill:currentColor}

/* Apps: one ruled row per app */
.apps{display:flex;flex-direction:column;border-top:1px solid var(--rule)}
.app{display:grid;grid-template-columns:1fr 150px;gap:2rem;align-items:start;padding:1.5rem 1rem;margin-inline:-1rem;border-bottom:1px solid var(--line);position:relative;border-radius:10px;transition:background .15s}
.app:hover{background:var(--surface)}
.app-name a::after{content:"";position:absolute;inset:0}
.app:hover .app-name a{color:var(--accent)}
.meta a,.app-shot{position:relative;z-index:1}
.meta .more{margin-left:auto}
.badge-appstore{display:inline-block;position:relative;z-index:1;line-height:0}
.badge-appstore img{height:40px;width:auto}
.app-page .badge-appstore img{height:50px}
.app-links{display:flex;align-items:center;gap:1.5rem;flex-wrap:wrap}
.app-body{display:flex;flex-direction:column;gap:.75rem}
.app-title{display:flex;gap:.9rem;align-items:center}
.app-title img{width:48px;height:48px;border-radius:11px}
.app-name{font-weight:500}
.app-name a{text-decoration:none}
.app-name a:hover{text-decoration:underline}
.meta{display:flex;gap:1.25rem;flex-wrap:wrap}
.meta a{color:var(--accent);text-decoration:none}
.meta a:hover{text-decoration:underline}
.app-shot{display:block;background:var(--surface);width:150px;height:200px;overflow:hidden;border-radius:12px;border:1px solid var(--line)}
.app-shot .shot{width:100%;height:100%;object-fit:cover;object-position:50% 78%}
.shot.dark{display:none}
@media(prefers-color-scheme:dark){
  :root:not([data-theme=light]) .shot.light{display:none}
  :root:not([data-theme=light]) .shot.dark{display:block}
}
:root[data-theme=dark] .shot.light{display:none}
:root[data-theme=dark] .shot.dark{display:block}
:root[data-theme=light] .shot.light{display:block}
:root[data-theme=light] .shot.dark{display:none}

.worked-on{display:flex;align-items:center;gap:2rem;flex-wrap:wrap;padding-top:1.25rem}
.worked-on ul{display:flex;align-items:center;gap:2.25rem;flex-wrap:wrap;list-style:none;padding:0}
.worked-on a{font-weight:500;color:var(--muted);text-decoration:none;display:inline-flex;align-items:center}
.worked-on a:hover{color:var(--text-strong)}
.worked-on .logo{display:block;height:26px;width:calc(26px*var(--ar));background:currentColor;-webkit-mask:var(--logo) center/contain no-repeat;mask:var(--logo) center/contain no-repeat}

.uses{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:2rem;padding-top:1.25rem;border-top:1px solid var(--rule)}
.uses ul{list-style:none;padding:0;margin-top:.5rem;display:flex;flex-direction:column;gap:.3rem}
.uses li{color:var(--text-strong)}

/* App page */
.app-page{display:flex;flex-direction:column;gap:2.5rem}
.app-page .app-title img{width:64px;height:64px;border-radius:14px}
.app-page h1{font-size:2rem}
.app-page-body{display:grid;grid-template-columns:1fr 280px;gap:3rem;align-items:start}
.app-page-body>div{display:flex;flex-direction:column;gap:1rem}
.app-shot.large{width:280px;height:auto;aspect-ratio:322/700}
.app-shot.large .shot{object-fit:contain;object-position:center}

.work{display:grid;grid-template-columns:8rem 1fr;gap:0 2rem;border-top:1px solid var(--rule)}
.work dt{padding:1rem 0 .9rem;border-bottom:1px solid var(--line)}
.work dd{padding:.9rem 0;border-bottom:1px solid var(--line)}
.work dd>p:first-child{color:var(--text-strong);display:flex;gap:.75rem;flex-wrap:wrap}

.contact{display:flex;flex-direction:column;gap:1rem}
.contact>p+p{margin-top:0}
.field{display:flex;flex-direction:column;gap:.35rem}
.field label{font-family:var(--mono);font-size:12px;color:var(--muted)}
.contact input,.contact textarea{font:inherit;color:var(--text-strong);background:var(--surface);border:1px solid var(--line);border-radius:6px;padding:.6rem .75rem;width:100%}
.contact input:focus,.contact textarea:focus{outline:2px solid var(--accent);outline-offset:1px;border-color:transparent}
.contact button{font:inherit;font-weight:600;color:var(--bg);background:var(--accent);border:0;border-radius:6px;padding:.6rem 1.2rem;cursor:pointer;align-self:flex-start}
.contact button:disabled{opacity:.6;cursor:default}
.contact .field:last-child{flex-direction:row;align-items:center;gap:1rem}
.status{color:var(--muted)}
.hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}

.site-footer{margin-top:4rem;padding-top:1.25rem;border-top:1px solid var(--line);display:flex;gap:1.5rem;flex-wrap:wrap}
.site-footer a{color:var(--muted);text-decoration:none}
.site-footer a:hover{color:var(--accent)}

@media(max-width:600px){
  body{padding-top:1.5rem}
  .site-header{flex-wrap:wrap;gap:.75rem 1rem;margin-bottom:2.5rem}
  .brand{width:100%}
  .site-header nav{margin-right:auto}
  h1{font-size:1.5rem}
  .intro{flex-direction:column;align-items:flex-start;gap:1.25rem}
  .portrait{width:160px}
  .app{grid-template-columns:1fr}
  .app-shot{display:none}
  .app-page-body{grid-template-columns:1fr}
  .uses{grid-template-columns:1fr 1fr;gap:1.5rem}
  .app-shot.large{display:block;width:100%;max-width:280px}
  .work{grid-template-columns:1fr;gap:0}
  .work dt{padding-bottom:0;border-bottom:0}
  .work dd{padding-top:.25rem}
}
