:root{--bg:#f7f8fa;--surface:#fff;--line:#dde2e8;--text:#14202b;--muted:#5a6a78;--accent:#1f4fd8;--accent-dark:#173aa3;--btn-text:#fff}
@media(prefers-color-scheme:dark){:root{--bg:#0f151b;--surface:#161e26;--line:#26323d;--text:#e8edf2;--muted:#93a3b1;--accent:#6b93ff;--accent-dark:#8fadff;--btn-text:#0b1220}}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--text);font:400 1rem/1.65 Manrope,system-ui,sans-serif;min-height:100vh;display:flex;flex-direction:column}
main{flex:1}
a{color:var(--accent)}
:focus-visible{outline:2px solid var(--accent);outline-offset:3px}
.wrap{max-width:860px;margin:0 auto;padding:0 1.25rem}
nav{border-bottom:1px solid var(--line)}
nav .wrap{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:.25rem 1.5rem;min-height:3.5rem}
nav .brand{font-weight:800;color:var(--text);text-decoration:none}
nav ul{display:flex;gap:1.5rem;list-style:none;margin:0;padding:0;flex-wrap:wrap}
nav ul a{color:var(--muted);text-decoration:none;font-size:.95rem;font-weight:500;padding:.9rem 0;display:block;border-bottom:2px solid transparent}
nav ul a:hover{color:var(--text)}
nav ul a[aria-current="page"]{color:var(--text);border-bottom-color:var(--accent)}
.hero{padding:4.5rem 0 2.5rem}
.page{padding:3rem 0}
h1{font-size:clamp(2.2rem,7vw,3.6rem);font-weight:800;letter-spacing:-.035em;line-height:1.08;margin:0 0 .5rem}
.role{font-size:1.25rem;color:var(--muted);margin:0}
.lede{max-width:58ch;margin:1.5rem 0 0}
p.intro{color:var(--muted);margin:0 0 1.5rem;max-width:62ch}
.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:.75rem}
.card{display:block;background:var(--surface);border:1px solid var(--line);border-radius:8px;padding:1rem 1.1rem;text-decoration:none;color:var(--text)}
.card:hover{border-color:var(--accent)}
.card b{display:block;font-weight:700}
.card span{color:var(--muted);font-size:.9rem}
.box{background:var(--surface);border:1px solid var(--line);border-radius:8px;padding:1.5rem}
.banner{display:block;margin-bottom:1.25rem}
.banner img{display:block;width:100%;height:auto;border-radius:6px}
@media(max-width:600px){.banner img{max-width:420px;margin:0 auto}}
.btn{display:inline-block;background:var(--accent);color:var(--btn-text);font-weight:700;padding:.7rem 1.2rem;border-radius:6px;text-decoration:none}
.btn:hover{background:var(--accent-dark)}
.note{color:var(--muted);font-size:.85rem;margin:1rem 0 0}
footer{padding:1.5rem 0 2rem;color:var(--muted);font-size:.85rem;border-top:1px solid var(--line)}

/* ---------- motion ---------- */
@view-transition{navigation:auto}
@keyframes rise{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
@keyframes drift{0%,100%{transform:translate(0,0) scale(1)}50%{transform:translate(40px,-20px) scale(1.15)}}
@keyframes blink{50%{opacity:0}}
.hero,.page{position:relative}
.hero>*,.page>*{animation:rise .6s cubic-bezier(.2,.7,.2,1) both}
.hero>*:nth-child(2),.page>*:nth-child(2){animation-delay:.08s}
.hero>*:nth-child(3),.page>*:nth-child(3){animation-delay:.16s}
.page>*:nth-child(4){animation-delay:.24s}
.hero::before{content:"";position:absolute;z-index:-1;top:1rem;right:-2rem;width:340px;height:340px;border-radius:50%;background:radial-gradient(circle,var(--accent) 0%,transparent 68%);opacity:.16;filter:blur(30px);animation:drift 14s ease-in-out infinite}
.grid .card{animation:rise .55s cubic-bezier(.2,.7,.2,1) both;transition:transform .2s ease,border-color .2s ease,box-shadow .2s ease}
.grid .card:nth-child(1){animation-delay:.2s}.grid .card:nth-child(2){animation-delay:.28s}
.grid .card:nth-child(3){animation-delay:.36s}.grid .card:nth-child(4){animation-delay:.44s}
.grid .card:nth-child(5){animation-delay:.52s}.grid .card:nth-child(6){animation-delay:.6s}
.card:hover{transform:translateY(-3px);box-shadow:0 8px 20px -10px var(--accent)}
.btn{transition:transform .15s ease,background .15s ease}
.btn:hover{transform:translateY(-2px)}
nav ul a{transition:color .15s ease,border-color .15s ease}
.banner img{transition:transform .3s ease}
.banner:hover img{transform:scale(1.015)}
.caret{display:inline-block;width:2px;height:1.1em;background:var(--accent);margin-left:3px;vertical-align:-.15em;animation:blink 1s steps(1) infinite}
@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{animation:none!important;transition:none!important}
  @view-transition{navigation:none}
}

/* ---------- essays ---------- */
.essay-list{list-style:none;margin:0;padding:0;border-top:1px solid var(--line)}
.essay-list a{display:block;padding:1.1rem .25rem;border-bottom:1px solid var(--line);text-decoration:none;color:var(--text);transition:padding-left .2s ease,background .2s ease}
.essay-list a:hover{padding-left:.9rem;background:var(--surface)}
.essay-list b{font-size:1.15rem;display:block}
.essay-list span{color:var(--muted);font-size:.9rem}
.back{display:inline-block;margin-bottom:1.5rem;text-decoration:none;font-weight:500}
.prose{max-width:68ch}
.prose h1{font-size:clamp(1.9rem,5vw,2.6rem)}
.prose h2{font-size:1.5rem;margin:2rem 0 .5rem}
.prose h3{font-size:1.2rem;margin:1.5rem 0 .5rem}
.prose p,.prose li{line-height:1.75}
.prose blockquote{margin:1.25rem 0;padding:.25rem 1rem;border-left:3px solid var(--accent);color:var(--muted)}
.prose pre{background:var(--surface);border:1px solid var(--line);border-radius:6px;padding:1rem;overflow-x:auto}
.prose code{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:.9em}
.prose img{max-width:100%;height:auto}
.prose table{border-collapse:collapse;display:block;overflow-x:auto}
.prose th,.prose td{border:1px solid var(--line);padding:.4rem .7rem}
.meta{color:var(--muted);font-size:.9rem;margin:0 0 1.5rem}
