/* Aman Goel — personal site. Neutral researcher-first design.
   Two faces (Newsreader + IBM Plex Mono), paper-and-ink, one green accent (links only). */

:root{
  --paper:#FBFAF6; --ink:#17150F; --ink-2:#403c30; --soft:#5b5648; --faint:#6d6753; --rule:#E6E1D3;
  --wash:#f0ede3;
  --link:#1C6E45;
  --maxw:740px;
  --serif:'Newsreader', Georgia, serif;
  --mono:'IBM Plex Mono', ui-monospace, monospace;
  /* type scale */
  --fs-meta:12px; --fs-ui:12.5px; --fs-small:16px; --fs-lede:17.5px; --fs-body:19px; --fs-stmt:21px;
  --datecol:6.5rem;
  color-scheme:light;
}
/* lamplight — the same ink under a desk lamp. Green stays link-only. */
:root[data-theme="dark"]{
  --paper:#161512; --ink:#E7E2D5; --ink-2:#CFC8B6; --soft:#A69F8C; --faint:#8A8371;
  --rule:#2E2B24; --wash:#201E19; --link:#5FBD8C;
  color-scheme:dark;
}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    --paper:#161512; --ink:#E7E2D5; --ink-2:#CFC8B6; --soft:#A69F8C; --faint:#8A8371;
    --rule:#2E2B24; --wash:#201E19; --link:#5FBD8C;
    color-scheme:dark;
  }
}
*{box-sizing:border-box;}
html,body{margin:0;}
body{background:var(--paper); color:var(--ink); font-family:var(--serif); font-size:var(--fs-body); line-height:1.62; -webkit-font-smoothing:antialiased; font-optical-sizing:auto; overflow-wrap:break-word;}
.wrap{max-width:var(--maxw); margin:0 auto; padding:0 28px; position:relative; z-index:1;}
#proofrain{position:fixed; inset:0; z-index:0; pointer-events:none;}
@media (prefers-reduced-motion: reduce){ #proofrain{display:none;} }
a{color:var(--link); text-decoration:underline; text-decoration-thickness:1px; text-underline-offset:2.5px; text-decoration-color:color-mix(in srgb, var(--link) 30%, transparent); transition:text-decoration-color .12s;}
a:hover{text-decoration-color:var(--link);}
.mono{font-family:var(--mono);}
hr{border:0; border-top:1px solid var(--rule); margin:0;}
h2{font-family:var(--mono); font-weight:500; font-size:var(--fs-ui); letter-spacing:.13em; text-transform:uppercase; color:var(--soft); margin:0 0 4px;}
::selection{background:color-mix(in srgb, var(--link) 18%, transparent);}
/* paper grain */
body::after{content:""; position:fixed; inset:0; pointer-events:none; z-index:40; opacity:.05;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='140' height='140' filter='url(%23n)' opacity='0.5'/%3E%3C/svg%3E");}
:root[data-theme="dark"] body::after{opacity:.07;}
:where(a,summary):focus-visible{outline:2px solid var(--link); outline-offset:2px; border-radius:1px;}
@media (prefers-reduced-motion: no-preference){ html{scroll-behavior:smooth;} }
section[id]{scroll-margin-top:24px;}

/* top line */
.toplink{display:flex; justify-content:flex-end; gap:18px; padding:20px 0 0; font-family:var(--mono); font-size:var(--fs-ui); flex-wrap:wrap;}
.toplink a{text-decoration:none; color:var(--soft);} .toplink a:hover{color:var(--link);}
.toplink a.here{color:var(--ink);}

/* intro */
.intro{padding:14px 0 22px;}
.intro h1{font-family:var(--serif); font-weight:600; font-size:40px; letter-spacing:-.01em; margin:.1em 0 .18em;}
.intro h1 a{color:inherit; text-decoration:none;}
.intro .role{font-family:var(--mono); font-size:13px; color:var(--soft); letter-spacing:.02em; margin-bottom:22px;}
.intro .role a{color:var(--soft); text-decoration-color:var(--rule);}
.intro .stmt{font-size:var(--fs-stmt); line-height:1.5; margin:0; max-width:34em;}

/* sections */
section{padding:30px 0;}
.lede{color:var(--soft); font-size:var(--fs-lede); margin:.4em 0 1.2em; max-width:36em;}

/* news */
.news .row{display:grid; grid-template-columns:var(--datecol) 1fr; gap:14px; padding:9px 0; border-top:1px solid var(--rule); align-items:baseline;}
.news .row:first-of-type{border-top:0;}
.news .when{font-family:var(--mono); font-size:var(--fs-meta); color:var(--faint); letter-spacing:.02em; padding-top:3px;}
.news .what{font-size:16.5px; line-height:1.45;}

/* publications */
.pub{padding:17px 0; border-top:1px solid var(--rule);}
.pub:first-of-type{border-top:0;}
.pub .title{font-size:19px; font-weight:500; line-height:1.32; margin:0 0 3px;}
.pub .auth{font-size:15.5px; color:var(--soft); line-height:1.4; margin:0 0 4px;}
.pub .auth .me{color:var(--ink); font-weight:600;}
.pub .venue{font-family:var(--mono); font-size:var(--fs-meta); color:var(--faint); letter-spacing:.02em;}
.pub .venue .tag{color:var(--soft);}
.pub .desc{font-size:var(--fs-small); color:var(--ink-2); margin:7px 0 6px; line-height:1.5; max-width:40em;}
.pub .res{font-family:var(--mono); font-size:var(--fs-meta); color:var(--soft);}
.pub .links{font-family:var(--mono); font-size:var(--fs-meta); margin-top:7px;}
.pub .links a{margin-right:14px; text-decoration:none; display:inline-block; padding-block:5px; margin-block:-5px;}
.pub .links a:before{content:"[" / ""; color:var(--faint);} .pub .links a:after{content:"]" / ""; color:var(--faint);}
.more{font-family:var(--mono); font-size:var(--fs-ui); color:var(--soft); margin-top:16px;}

/* research page: compact rows for talks / press / service / timeline */
.rowlist .row{display:grid; grid-template-columns:var(--datecol) 1fr; gap:14px; padding:8px 0; border-top:1px solid var(--rule); align-items:baseline;}
.rowlist .row:first-of-type{border-top:0;}
.rowlist .when{font-family:var(--mono); font-size:var(--fs-meta); color:var(--faint); letter-spacing:.02em; padding-top:3px;}
.rowlist .what{font-size:var(--fs-small); line-height:1.45; color:var(--ink-2);}
.plain{font-size:var(--fs-small); color:var(--ink-2); margin:.3em 0; max-width:42em; line-height:1.55;}

.honors p{font-size:16.5px; color:var(--ink-2); margin:.3em 0; max-width:40em;}

/* about + footnote photo */
.about{display:grid; grid-template-columns:88px 1fr; gap:20px; align-items:start;}
.about .ph{width:88px; height:88px; border-radius:3px; border:1px solid var(--rule); background:repeating-linear-gradient(135deg,var(--wash) 0 9px,#f6f3ea 9px 18px); display:flex; align-items:center; justify-content:center; font-family:var(--mono); font-size:9px; color:#c2baa4; letter-spacing:.1em; object-fit:cover;}
img.ph{background:none;}
.about p{margin:0; font-size:16.5px; color:var(--ink-2);}

footer{padding:26px 0 50px; margin-top:14px; border-top:1px solid var(--rule);}
footer .updated{font-family:var(--mono); font-size:var(--fs-meta); color:var(--faint);}
footer .flinks{font-family:var(--mono); font-size:var(--fs-ui); margin-top:8px;}
footer .flinks a{margin-right:16px; color:var(--soft); text-decoration-color:var(--rule); display:inline-block; padding-block:5px; margin-block:-5px;}
footer .flinks a:hover{color:var(--link);}

/* ---- blog ---- */
.post{max-width:680px;}
.post .backlink{font-family:var(--mono); font-size:var(--fs-ui); display:block; margin:0 0 20px; color:var(--soft);}
.post h1{font-family:var(--serif); font-weight:600; font-size:34px; line-height:1.14; letter-spacing:-.01em; margin:.1em 0 .28em;}
.post .post-meta{font-family:var(--mono); font-size:var(--fs-meta); color:var(--faint); letter-spacing:.02em; margin:0 0 6px;}
.post .epistemic{font-family:var(--mono); font-size:var(--fs-meta); color:var(--faint); letter-spacing:.02em; margin:0 0 22px;}
.post .standfirst{font-size:20px; line-height:1.5; color:var(--ink-2); margin:0 0 24px;}
.post .tldr{font-size:15.5px; line-height:1.5; background:var(--wash); border-left:2px solid var(--link); border-radius:0 6px 6px 0; padding:12px 16px; margin:0 0 28px; color:var(--ink-2);}
.post .tldr strong{font-family:var(--mono); font-size:11px; letter-spacing:.14em; text-transform:uppercase; color:var(--soft); display:block; margin-bottom:4px;}
.post .altfmt{font-family:var(--mono); font-size:var(--fs-meta); color:var(--faint); margin:-6px 0 26px;}
.post .altfmt a{text-decoration:none;}
.post h2{font-family:var(--serif); font-weight:600; font-size:24px; text-transform:none; letter-spacing:-.01em; color:var(--ink); margin:36px 0 10px;}
.post h3{font-family:var(--serif); font-weight:500; font-style:italic; font-size:19px; color:var(--ink); margin:24px 0 6px;}
.post p{margin:0 0 16px;}
.post ul,.post ol{margin:0 0 16px; padding-left:1.25em;} .post li{margin:5px 0;}
.post code{font-family:var(--mono); font-size:.82em; background:var(--wash); padding:1px 5px; border-radius:4px;}
.post pre{font-family:var(--mono); font-size:var(--fs-ui); line-height:1.55; background:var(--wash); border:1px solid var(--rule); border-radius:8px; padding:14px 16px; overflow-x:auto; margin:0 0 18px;}
.post pre code{background:none; padding:0; font-size:inherit;}
.post blockquote{border-left:2px solid var(--link); margin:0 0 18px; padding:3px 0 3px 16px; color:var(--soft); font-style:italic;}
.post .tbl-wrap{overflow-x:auto; margin:0 0 20px;}
.post table{border-collapse:collapse; font-family:var(--mono); font-size:13px; width:100%;}
.post th,.post td{border-bottom:1px solid var(--rule); padding:6px 14px 6px 0; text-align:left; white-space:nowrap;}
.post th{color:var(--soft); font-weight:500; border-bottom:1px solid var(--ink);}
.post .num td:nth-child(n+2),.post .num th:nth-child(n+2){text-align:right; padding:6px 0 6px 14px;}
.post .going-deeper{font-size:15px; line-height:1.5;}
.post .fig{margin:0 0 20px;}
.post .fig svg{max-width:100%; height:auto;}
.post .figcap{font-family:var(--mono); font-size:var(--fs-meta); color:var(--faint); margin-top:6px;}
.post .citeas{font-family:var(--mono); font-size:var(--fs-ui); line-height:1.55; border:1px solid var(--rule); border-radius:8px; padding:12px 16px; margin:28px 0 0; color:var(--soft);}
.post .citeas summary{cursor:pointer; color:var(--soft);}
.post .citeas pre{margin:10px 0 0; background:var(--wash);}
.colophon{font-size:15px; color:var(--soft); border-top:1px solid var(--rule); margin-top:36px; padding-top:20px;}
.post-list .row{display:grid; grid-template-columns:var(--datecol) 1fr; gap:16px; padding:14px 0; border-top:1px solid var(--rule); align-items:baseline;}
.post-list .row:first-of-type{border-top:0;}
.post-list .when{font-family:var(--mono); font-size:var(--fs-meta); color:var(--faint); padding-top:4px;}
.post-list .t{font-size:19px; font-weight:500; line-height:1.3;}
.post-list .t .type{font-family:var(--mono); font-size:11px; letter-spacing:.1em; text-transform:uppercase; color:var(--faint); margin-left:10px; font-weight:400;}
.post-list .d{font-size:15.5px; color:var(--soft); margin-top:3px; line-height:1.45;}
.post-list .m{font-family:var(--mono); font-size:var(--fs-meta); margin-top:4px;}
.post-list .m a{text-decoration:none; color:var(--faint);} .post-list .m a:hover{color:var(--link);}

/* ---- motion: reveals (JS-gated; reduced-motion exempt) ---- */
html.js .reveal{opacity:0; transform:translateY(12px);}
html.js .reveal.in{opacity:1; transform:none; transition:opacity .65s cubic-bezier(.2,.6,.2,1), transform .65s cubic-bezier(.2,.6,.2,1);}
@media (prefers-reduced-motion: reduce){ html.js .reveal{opacity:1; transform:none;} }

/* ---- quiet hover states ---- */
.news .row,.rowlist .row{transition:background .18s;}
.news .row:hover,.rowlist .row:hover{background:linear-gradient(90deg, var(--wash) 0, transparent 90%);}
.news .row:hover .when,.rowlist .row:hover .when{color:var(--link);}
.pub{transition:background .18s; border-radius:6px;}
.pub:hover{background:linear-gradient(90deg, var(--wash) 0, transparent 85%);}

/* ---- lamplight toggle ---- */
.themetoggle{font-family:var(--mono); font-size:13px; line-height:1; background:none; border:0; color:var(--soft); cursor:pointer; padding:0; margin-left:2px;}
.themetoggle:hover{color:var(--link);}

/* ---- the proof demo: a claim being checked, on paper ---- */
.proofdemo{padding:26px 0 4px;}
.proof{font-family:var(--mono); font-size:13px; line-height:1.7; border:1px solid var(--rule); border-radius:10px; padding:16px 20px 14px; background:linear-gradient(180deg, var(--wash), transparent 160%); max-width:640px; position:relative;}
.proof .ptag{position:absolute; top:10px; right:14px; font-size:9.5px; letter-spacing:.14em; text-transform:uppercase; color:var(--faint); opacity:.75;}
.proof .pline{display:grid; grid-template-columns:4.2rem 1fr; gap:12px; padding:2px 0;}
.proof .plabel{color:var(--faint); text-transform:uppercase; letter-spacing:.09em; font-size:10.5px; padding-top:3px;}
.proof .ptext{color:var(--ink-2); overflow-wrap:anywhere; min-height:1.4em;}
.proof .ptext.typing::after{content:""; display:inline-block; width:.55em; height:1em; background:var(--soft); margin-left:2px; vertical-align:-.15em; animation:caret .75s steps(1) infinite;}
.pverdict{margin-top:10px; padding-top:10px; border-top:1px dashed var(--rule);}
.pverdict.ok{color:var(--link); font-weight:500; animation:stamp .45s cubic-bezier(.2,1.4,.4,1) both;}
.pverdict.bad{color:var(--ink); font-weight:500; animation:stamp .45s cubic-bezier(.2,1.4,.4,1) both;}
.pverdict.unk{color:var(--faint); font-style:italic; animation:fadein .5s both;}
.pverdict.pending{color:var(--faint);}
@keyframes stamp{from{opacity:0; transform:scale(1.14);} to{opacity:1; transform:scale(1);}}
@keyframes caret{50%{opacity:0;}}
@keyframes fadein{from{opacity:0;} to{opacity:1;}}

/* ---- essay figure: gentle draw-in + verified stamp ---- */
html.js .post .fig svg{animation:rise .8s ease both;}
html.js .post .fig svg rect[stroke="var(--link)"]{transform-box:fill-box; transform-origin:center; animation:pulse 2.6s 1.1s ease 2;}
@keyframes rise{from{opacity:0; transform:translateY(8px);} to{opacity:1; transform:none;}}
@keyframes pulse{0%,100%{transform:scale(1);} 12%{transform:scale(1.05);}}
@media (prefers-reduced-motion: reduce){
  html.js .post .fig svg, html.js .post .fig svg rect[stroke="var(--link)"], .pverdict.ok, .pverdict.bad, .pverdict.unk{animation:none;}
}

@media (max-width:560px){
  .proof .pline{grid-template-columns:1fr; gap:0;}
  .post h1{font-size:27px;} .post-list .row{grid-template-columns:1fr; gap:2px;}
  .intro h1{font-size:32px;}
  .intro .stmt{font-size:var(--fs-body);}
  .wrap{padding:0 22px;}
  .news .row,.rowlist .row{grid-template-columns:1fr; gap:2px;}
  .about{grid-template-columns:1fr; gap:14px;}
}

@media print{
  .toplink,.altfmt,.themetoggle,script{display:none !important;}
  body::after,#proofrain{display:none !important;}
  body{background:#fff; color:#000; font-size:11pt;}
  a{color:#000; text-decoration:underline;}
  .pub,.news .row,.rowlist .row,.post-list .row{break-inside:avoid;}
}
