:root[data-theme=dark]{--surface: rgba(16, 17, 20, .959);--text: #e7e7ea;--text2: #03030c;--muted: #c1c1c4;--border: rgba(255,255,255,.12);--shadow: 0 10px 30px rgba(0,0,0,.35)}:root[data-theme=light]{--surface: #fbf5e5;--text: #2f2a25;--muted: #6b5f52;--border: #dacfb8;--shadow: 0 10px 30px rgba(60,45,30,.12)}.iconButton{padding:0 10px}.iconButton svg{display:block;width:18px;height:18px}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;color:var(--text);background:var(--surface);font:16px/1.65 Georgia,Times New Roman,Times,serif}img{display:block;max-width:100%}:focus-visible{outline:2px solid var(--brand2);outline-offset:2px}.container{max-width:1100px;margin-inline:auto;padding:0 20px}.row{display:flex;align-items:center;flex-wrap:wrap;gap:10px}.gap{gap:14px}.space{justify-content:space-between}.spacer{height:8px}.grid{display:grid;gap:16px}.cards,.single{grid-template-columns:1fr}@media (min-width: 700px){.cards{grid-template-columns:repeat(2,1fr)}}@media (min-width: 1024px){.cards{grid-template-columns:repeat(3,1fr)}.single{grid-template-columns:1fr 1fr}}.header{position:sticky;top:0;z-index:50;background:var(--surface);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--border)}.nav{display:flex;align-items:center;justify-content:space-between;height:64px}.brand{font-weight:700}.navlinks{display:none;gap:12px;align-items:center}.menu{background:none;border:0;color:inherit;font-size:1.2rem}.navlink{display:inline-flex;align-items:center;height:36px;padding:0 12px;border:1px solid var(--border);border-radius:12px;text-decoration:none;color:var(--text2);font-weight:600;line-height:1;background:linear-gradient(180deg,#fcf7ea,#f4ead3);transition:transform .12s ease,box-shadow .12s ease,background .12s ease}.navlink:hover{background:linear-gradient(180deg,#faf2df,#efe5cb);transform:translateY(-1px);box-shadow:0 2px 8px #3c2d1e26}.navlink:active{transform:none;box-shadow:none}.navlink:focus-visible{outline:2px solid color-mix(in srgb,var(--brand) 40%,var(--brand2));outline-offset:3px}.brand.brand--papyrus{display:inline-flex;align-items:center;gap:10px;height:36px;text-decoration:none;color:var(--text);-webkit-font-smoothing:antialiased}.monogram{width:28px;height:28px;border-radius:999px;display:inline-grid;place-items:center;font-weight:800;letter-spacing:.5px;background:linear-gradient(180deg,#f2e8cf,#e7dab6);color:var(--text2);border:1px solid color-mix(in srgb,var(--text2) 30%,var(--border));box-shadow:0 1px #fffc inset,0 -1px #0000000d inset,0 2px 6px #3c2d1e2e}.brandText{font-weight:800;letter-spacing:.3px;font-variant-caps:small-caps;transform:translateZ(0)}.brand.brand--papyrus:hover .brandText{background:linear-gradient(90deg,color-mix(in srgb,var(--text) 85%,var(--muted)),color-mix(in srgb,var(--text) 60%,var(--muted) 40%));-webkit-background-clip:text;background-clip:text;color:transparent;text-shadow:none;transform:translateY(-1px)}.brand.brand--papyrus .brandText:after{content:"";position:absolute;left:0;right:0;bottom:-2px;height:2px;background:color-mix(in srgb,var(--text) 40%,var(--muted));opacity:0;transition:opacity .18s ease,transform .18s ease;pointer-events:none;will-change:opacity}.brand.brand--papyrus:hover .brandText:after{opacity:.5}.brand.brand--papyrus:focus-visible{outline:2px solid color-mix(in srgb,var(--brand) 40%,var(--brand2));outline-offset:4px;border-radius:10px}@media (min-width: 640px){.navlinks{display:flex}.menu{display:none}}.mobileNav{padding:10px 0 16px;border-top:1px solid var(--border)}.hero{position:relative;overflow:hidden}.glow{display:none}.heroGrid{display:grid;grid-template-columns:1fr;gap:1.2rem;padding:56px 0}@media (min-width: 900px){.heroGrid{grid-template-columns:2fr 1fr;align-items:center}}.heroPic{display:grid;place-items:center;padding:12px}.avatar{width:180px;height:180px;border-radius:999px;object-fit:cover;border:2px solid var(--border);box-shadow:var(--shadow);object-position:20%}.section{scroll-margin-top:96px;padding:52px 0;border-top:1px solid var(--border)}h2{margin:0 0 18px;font-size:clamp(22px,3.2vw,30px)}.card{background:var(--card);border:1px solid var(--border);border-radius:16px;padding:16px;box-shadow:0 1px #fff9 inset,0 0 0 1px #00000005 inset,var(--shadow)}.screenshot{aspect-ratio:16 / 9;border-radius:10px;margin-bottom:10px;display:grid;place-items:center;color:var(--muted);font-size:.85rem;background:linear-gradient(180deg,#0000000f,#ffffff4d),#f5edd8;border:1px solid var(--border);box-shadow:inset 0 0 0 1px #ffffffb3}.screenshot img{width:100%;height:100%;object-fit:cover;border-radius:inherit;display:block}.badge{display:inline-block;margin-right:.4rem;margin-top:.4rem;padding:.25rem .5rem;font-size:.72rem;border:1px solid var(--border);border-radius:10px}.clean{list-style:none;padding:0;margin:0}.clean li{margin:.35rem 0}.btn{display:inline-flex;align-items:center;gap:.5rem;padding:.7rem 1rem;font-weight:600;color:inherit;background:transparent;border:1px solid var(--border);border-radius:14px;transition:transform .12s ease,box-shadow .12s ease}.btn.primary{background:#fff;color:#111}@media (prefers-color-scheme: light){.btn.primary{background:#111;color:#fff}}.btn:hover{transform:translateY(-1px);box-shadow:var(--shadow)}.btn:active{transform:none;box-shadow:none}.pill{display:inline-flex;align-items:center;gap:.5rem;padding:.4rem .7rem;font-size:.8rem;background:#ffffff0f;border:1px solid var(--border);border-radius:999px}.dot{width:8px;height:8px;background:#4ade80;border-radius:999px}.lead{font-size:1.25rem}.muted{color:var(--muted)}.narrow{max-width:60ch;margin-top:10px}.small{font-size:.9rem}.upcase{text-transform:uppercase;font-size:.8rem}.top14{margin-top:14px}.top10{margin-top:10px}.top8{margin-top:8px}.footer{border-top:1px solid var(--border);padding:28px 0}.footRow{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.iconLink{display:inline-grid;place-items:center;width:36px;height:36px;border:1px solid var(--border);border-radius:10px;text-decoration:none;color:var(--text);transition:transform .12s ease,box-shadow .12s ease,background .12s ease;background:color-mix(in srgb,var(--surface) 80%,white)}.iconLink:hover{transform:translateY(-1px);box-shadow:var(--shadow);background:color-mix(in srgb,var(--surface) 70%,white)}.iconLink:active{transform:none;box-shadow:none}.iconLink svg{width:18px;height:18px}.card h3 a.projectTitleLink{text-decoration:none;color:inherit}.card h3 a.projectTitleLink:hover{text-decoration:underline;text-underline-offset:3px}
