/* Publications: a reading column beside a scene that moves as you read. */
.pub{background:var(--ink);color:var(--paper);background-image:var(--mesh-dark);min-height:100vh}
.pub a{color:inherit}
.pub .nav-inner{background:rgba(18,16,58,.62);border-color:rgba(255,255,255,.12);box-shadow:0 1px 0 rgba(255,255,255,.06) inset,0 10px 30px -18px rgba(0,0,0,.6)}
.pub .nav-links a{color:#C7C5E2}.pub .nav-links a:hover{color:#fff;background:rgba(255,255,255,.08)}
.pub .brand{color:#fff}
.pub-grid{display:grid;grid-template-columns:minmax(0,1fr);align-items:start}
.pub-stage{position:sticky;top:0;height:46svh;min-height:300px;z-index:3;overflow:hidden;margin:0 calc(-1 * var(--gutter));background:var(--ink);background-image:var(--mesh-dark)}
.pub-stage::after{content:"";position:absolute;left:0;right:0;bottom:0;height:72px;background:linear-gradient(to bottom,rgba(10,9,32,0),var(--ink));pointer-events:none}
.pub-stage canvas{position:absolute;inset:0;display:block}
.scene-world{position:absolute;inset:0;transform-style:preserve-3d;pointer-events:none}
.scene-rot{position:absolute;left:0;top:0;width:0;height:0;transform-style:preserve-3d}
.plate{position:absolute;left:0;top:0;transform-style:preserve-3d;will-change:transform,opacity;opacity:0;filter:drop-shadow(0 16px 22px rgba(0,0,0,.35))}
.plate img{display:block;width:100%;height:auto;position:relative}
.plate::before{content:"";position:absolute;inset:0;background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.18);border-radius:2px;opacity:var(--sheet,0)}
.scene-labels{position:absolute;inset:0;pointer-events:none}
.sl{position:absolute;left:0;top:0;white-space:nowrap;font-size:.8rem;line-height:1.15;color:#C7C5E2;letter-spacing:.01em;will-change:transform,opacity;transition:opacity .2s}
.sl b{display:block;font-size:1.5rem;font-weight:500;letter-spacing:-.04em;color:#fff;line-height:1;font-variant-numeric:tabular-nums}
.sl.k{font-size:.68rem;letter-spacing:.14em;text-transform:uppercase;color:#9D9BC0}
.sl.s{font-size:.72rem;color:#A3A1C6}
.sl.n{font-size:.78rem;color:#fff;font-weight:500;font-variant-numeric:tabular-nums}
.pub-body{position:relative;z-index:2;padding:0 0 clamp(64px,10vh,120px);max-width:640px}
@media(min-width:1024px){
  .pub-grid{grid-template-columns:minmax(0,600px) minmax(420px,1fr);gap:clamp(32px,4vw,72px)}
  .pub-stage{grid-column:2;grid-row:1;height:100vh;min-height:0;margin:0 calc(-1 * var(--gutter)) 0 0;background:transparent;background-image:none}
  .pub-stage::after{display:none}
  .pub-body{grid-column:1;grid-row:1}
}
.pub-head{padding:clamp(28px,6vh,72px) 0 24px}
@media(min-width:1024px){.pub-head{padding-top:clamp(64px,14vh,140px)}}
.pub-meta{display:flex;flex-wrap:wrap;gap:6px 18px;font-size:.74rem;letter-spacing:.14em;text-transform:uppercase;color:var(--indigo-300);font-weight:500}
.pub-head h1{font-size:clamp(2.3rem,3.4vw + 1.2rem,4.1rem);letter-spacing:-.04em;line-height:1;font-weight:500;margin:18px 0 0}
.pub-head .lead{color:#C7C5E2;margin-top:20px;max-width:56ch}
.pub-by{display:flex;flex-wrap:wrap;align-items:center;gap:8px 18px;margin-top:22px;font-size:.88rem;color:#9D9BC0}
.pub-by button{background:none;border:1px solid rgba(255,255,255,.18);color:#C7C5E2;border-radius:999px;padding:7px 14px;font:inherit;font-size:.82rem;cursor:pointer}
.pub-by button:hover{border-color:var(--indigo-300);color:#fff}
.pub-toc{display:flex;flex-wrap:wrap;gap:6px;margin:26px 0 0}
.pub-toc a{font-size:.8rem;padding:7px 12px;border-radius:999px;border:1px solid rgba(255,255,255,.12);color:#C7C5E2;background:rgba(255,255,255,.03)}
.pub-toc a:hover{border-color:var(--indigo-300);color:#fff}
.pub-cards{display:grid;gap:10px;margin:30px 0 8px}
@media(min-width:640px){.pub-cards{grid-template-columns:repeat(3,1fr)}}
.pc{padding:18px 18px 16px;border-radius:18px;background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.09)}
.pc .k{font-size:.7rem;letter-spacing:.14em;text-transform:uppercase;color:#9D9BC0;font-weight:500}
.pc .big{font-size:2.3rem;letter-spacing:-.045em;font-weight:500;line-height:1;margin:10px 0 8px;color:#fff;font-variant-numeric:tabular-nums}
.pc p{font-size:.84rem;line-height:1.4;color:#B5B3D4;margin:0}
.pub-body section{padding:clamp(40px,7vh,72px) 0 0}
.pub-body h2{font-size:var(--fs-h2);letter-spacing:-.03em;line-height:1.08;margin:0 0 .6em;color:#fff;font-weight:500}
.pub-body h3{font-size:1.15rem;letter-spacing:-.02em;margin:1.6em 0 .4em;color:#fff;font-weight:500}
.pub-body p{font-size:1.0625rem;line-height:1.68;color:#D9D8EA;margin:0 0 1.1em;max-width:62ch}
.pub-body p strong{color:#fff;font-weight:500}
.pub-body ul{padding-left:1.1em;margin:0 0 1.2em}
.pub-body li{font-size:1.0625rem;line-height:1.6;color:#D9D8EA;margin:0 0 .7em;max-width:60ch}
.pub-body li strong{color:#fff;font-weight:500}
.pull{font-size:clamp(1.3rem,1vw + 1rem,1.7rem);letter-spacing:-.025em;line-height:1.3;color:#fff;border-left:2px solid var(--indigo-400);padding:4px 0 4px 20px;margin:1.6em 0 1.8em;max-width:30ch}
.pub-note{font-size:.82rem;color:#9D9BC0;margin:-.4em 0 1.4em}
.pub-figure{margin:0 0 1.6em;padding:14px 16px;border-radius:14px;background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.08)}
.pub-figure .k{font-size:.7rem;letter-spacing:.14em;text-transform:uppercase;color:#9D9BC0;font-weight:500}
.pub-figure table{width:100%;border-collapse:collapse;margin-top:8px;font-size:.9rem}
.pub-figure td,.pub-figure th{padding:7px 0;border-top:1px solid rgba(255,255,255,.08);text-align:left;color:#D9D8EA;font-weight:400}
.pub-figure th{color:#9D9BC0;font-size:.72rem;letter-spacing:.12em;text-transform:uppercase;border-top:0}
.pub-figure td.n,.pub-figure th.n{text-align:right;font-variant-numeric:tabular-nums}
.pub-figure td.pos{color:var(--apricot)}.pub-figure td.neg{color:var(--magenta)}
.chips-row{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 1.2em}
.chips-row button{font:inherit;font-size:.86rem;padding:9px 14px;border-radius:999px;border:1px solid rgba(255,255,255,.16);background:rgba(255,255,255,.04);color:#C7C5E2;cursor:pointer;transition:border-color .2s,color .2s,background .2s}
.chips-row button:hover{border-color:var(--indigo-300);color:#fff}
.chips-row button.on{background:#fff;color:var(--ink);border-color:#fff}
.pub-cta{margin-top:clamp(40px,7vh,72px);padding:clamp(24px,4vw,36px);border-radius:24px;background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.1)}
.pub-cta h2{margin-bottom:.4em}
.pub-cta p{margin-bottom:1.2em}
.pub-refs{padding-top:clamp(40px,7vh,72px)}
.pub-refs ol{padding-left:1.4em;margin:0;font-size:.86rem;line-height:1.5;color:#9D9BC0}
.pub-refs li{margin:0 0 .55em}
.pub-refs h2{font-size:1.1rem}
.pub-next{display:grid;gap:10px;margin-top:14px}
.pub-next a{display:block;padding:16px 18px;border-radius:16px;border:1px solid rgba(255,255,255,.1);background:rgba(255,255,255,.04)}
.pub-next a:hover{border-color:var(--indigo-300)}
.pub-next .k{font-size:.7rem;letter-spacing:.14em;text-transform:uppercase;color:#9D9BC0}
.pub-next b{display:block;font-weight:500;margin-top:4px;color:#fff;letter-spacing:-.02em}
.pub .footer{color:#9D9BC0}.pub .footer .brand{color:#fff}
/* index */
.pub-list{display:grid;gap:14px;margin-top:28px}
@media(min-width:860px){.pub-list{grid-template-columns:1fr 1fr}}
.pub-item{display:block;padding:clamp(22px,3vw,32px) clamp(22px,3vw,32px) 64px;border-radius:24px;border:1px solid rgba(255,255,255,.1);background:rgba(255,255,255,.04);min-height:300px;position:relative;overflow:hidden;transition:transform .4s var(--ease),border-color .3s}
.pub-item:hover{transform:translateY(-3px);border-color:var(--indigo-300)}
.pub-item .k{display:flex;gap:14px;font-size:.72rem;letter-spacing:.14em;text-transform:uppercase;color:var(--indigo-300);font-weight:500}
.pub-item h2{font-size:clamp(1.5rem,1.6vw + 1rem,2.2rem);letter-spacing:-.035em;line-height:1.05;margin:14px 0 10px;color:#fff;font-weight:500}
.pub-item p{color:#B5B3D4;margin:0;max-width:40ch}
.pub-item .more{position:absolute;right:22px;bottom:18px;color:#fff;font-size:.9rem}
.pub-item canvas{position:absolute;inset:0;width:100%;height:100%;opacity:.55;pointer-events:none}
.pub-item > *{position:relative}
.pub-item canvas{z-index:0}
