/* A stable sculpture, real text traces, and three progressively enhanced reading entries. */
.portrait-touch{position:absolute;inset:0;width:100%;height:100%;overflow:visible;z-index:2;pointer-events:none;transform:translate(var(--portrait-x,0),var(--portrait-y,0))}
.portrait-touch a{pointer-events:all;cursor:pointer;fill:transparent;stroke:transparent;stroke-width:1.5}
.portrait-touch a.is-touched,.portrait-touch a:hover{stroke:#fff8;fill:#fff1}
.surface-lift{pointer-events:none;opacity:0;transition:transform .25s ease,opacity .25s ease}
.portrait-stage[data-active-slice="project"] .lift-project,.portrait-stage[data-active-slice="story"] .lift-story,.portrait-stage[data-active-slice="moment"] .lift-moment{opacity:1;transform:translate(-5px,-7px)}
.night .surface-lift{filter:brightness(.87)}
.portrait-stage .portrait-piece.is-touched{transform:translate(-4px,-9px) rotate(0);box-shadow:0 14px 32px #24393624}
.portrait-stage.portrait-still .surface-lift{transform:none;transition:none}
.portrait-stage.portrait-still .portrait-piece.is-touched{transform:rotate(var(--piece-tilt,0deg))}
.portrait-stage.image-failed .portrait-touch{display:none}
@media(prefers-reduced-motion:reduce){.surface-lift,.portrait-touch{transform:none!important;transition:none}}
:root{--sky:#eeeae2;--ink:#282b29;--body:#50534f;--muted:#6c706a;--line:#cbcfc5;--paper:#f8f5ee;--accent:#9a503b;--mineral:#315c72;--copper:#aa583e;--moss:#456857}
body.night{--sky:#1e2527;--ink:#f0e9dc;--body:#d0d2c9;--muted:#afb9b1;--line:#495453;--paper:#283031;--accent:#e2a78a;--mineral:#99c5d6;--copper:#e2a78a;--moss:#b0ccaf}
html{scrollbar-gutter:stable}.site-nav{max-width:1360px;padding:24px 44px}.wordmark{letter-spacing:.08em}.nav-links{gap:25px}.nav-links a:hover{text-decoration:underline}
.portrait-head{max-width:1360px;padding:22px 44px 18px;margin:auto;display:grid;grid-template-columns:.88fr 1.3fr;gap:22px;align-items:center}.portrait-intro{position:relative;z-index:2;padding:15px 0 34px}.portrait-intro .eyebrow{font-size:.75rem;letter-spacing:.2em;color:var(--muted)}.portrait-intro h1{font:400 clamp(2.5rem,4.55vw,4.1rem)/1.28 var(--serif);letter-spacing:-.05em;margin:24px 0 26px}.portrait-intro h1>span{white-space:nowrap}.portrait-intro h1 em{color:var(--copper);font-style:normal}.portrait-quote{font:.875rem/2 var(--serif);color:var(--body);max-width:28em;text-wrap:pretty}.portrait-signature{font:1.15rem/1.8 var(--serif);margin-top:26px}.portrait-signature>span{font:.8125rem/1.8 var(--sans);color:var(--muted);margin-left:14px}.portrait-down{display:inline-flex;align-items:center;gap:22px;font-size:.8125rem;margin-top:36px;padding:10px 0;text-decoration:none;border-bottom:1px solid var(--line)}.portrait-down:hover{border-color:var(--ink)}
.portrait-figure{margin:0;min-width:0}.portrait-stage{position:relative;isolation:isolate;aspect-ratio:1;max-width:760px;margin:auto}#portrait-image{display:block;width:100%;height:100%;object-fit:contain;transform:translate(var(--portrait-x,0),var(--portrait-y,0));transition:filter .3s ease;filter:drop-shadow(0 22px 22px #27383514)}.night #portrait-image{filter:brightness(.87) drop-shadow(0 22px 22px #0003)}.portrait-traces{position:absolute;inset:0;pointer-events:none;z-index:1;overflow:hidden}.portrait-traces>span{position:absolute;font-size:12px;line-height:1.7;letter-spacing:.04em;text-shadow:0 1px 5px #1113}.trace-code{left:17%;top:60%;font-family:ui-monospace,SFMono-Regular,Consolas,monospace;color:#ecf2ed;transform:rotate(-12deg)}.trace-story{right:17%;top:19%;font-family:var(--serif);color:#fff0dc;transform:rotate(15deg)}.trace-moment{left:52%;top:52%;font-family:var(--serif);color:#f2e8d6;transform:rotate(-8deg)}
.portrait-piece{--piece-color:var(--mineral);position:absolute;z-index:3;display:flex;gap:12px;align-items:center;min-height:64px;max-width:76%;padding:13px 17px;background:var(--paper);border:1px solid var(--line);border-left:3px solid var(--piece-color);box-shadow:0 8px 28px #26363212;text-decoration:none;transform:rotate(var(--piece-tilt,0deg));transition:transform .25s ease,box-shadow .25s ease}.piece-project{left:0;top:72%;--piece-tilt:-3deg}.piece-story{right:-5px;top:12%;--piece-tilt:3deg;--piece-color:var(--copper)}.piece-moment{right:-5px;bottom:1%;--piece-tilt:2deg;--piece-color:var(--moss)}.piece-mark{font:12px/1.5 ui-monospace,Consolas,monospace;color:var(--piece-color);align-self:flex-start;padding-top:2px}.portrait-piece small{display:block;font-size:.6875rem;letter-spacing:.12em;color:var(--muted);margin-bottom:3px}.portrait-piece strong{font:400 .9375rem/1.5 var(--serif);display:block}.piece-arrow{font-size:.875rem;margin-left:4px;color:var(--piece-color)}.portrait-piece:hover,.portrait-piece:focus-visible,.portrait-piece.is-open{transform:translate(-4px,-9px) rotate(0);box-shadow:0 14px 32px #24393624}.portrait-figure figcaption{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:23px;font:.75rem/1.8 var(--sans);color:var(--muted)}#portrait-motion{font-size:.75rem;flex-shrink:0;border:0;background:none;padding:9px 0;color:var(--muted)}#portrait-motion:hover{text-decoration:underline}.portrait-still .portrait-piece{transition:none}.portrait-still .portrait-piece:hover,.portrait-still .portrait-piece:focus-visible,.portrait-still .portrait-piece.is-open{transform:rotate(var(--piece-tilt,0deg))}.portrait-stage.image-failed{aspect-ratio:auto;padding:25px 0}.portrait-stage.image-failed #portrait-image,.portrait-stage.image-failed .portrait-traces{display:none}.portrait-stage.image-failed .portrait-piece{position:static;width:100%;max-width:100%;margin:18px 0;transform:none}.portrait-stage.image-failed::before{content:'从这三件事认识我';display:block;font:1.3rem var(--serif);margin-bottom:24px}
.portrait-now{max-width:1272px;margin:32px auto 86px;padding:22px 0;border-block:1px solid var(--line);display:flex;gap:28px;align-items:baseline;justify-content:space-between}.portrait-now>.eyebrow{color:var(--muted);font-size:.75rem}.portrait-now .now{margin:0;max-width:70%;font-size:.8125rem}.reading-heading{max-width:1100px;padding-bottom:28px}.reading-heading h2{font:400 2rem/1.6 var(--serif);margin-top:8px}.reading-heading .eyebrow{color:var(--muted)}.reading-tools-inner{max-width:1100px}.reading-heading>#latest-record{padding-bottom:5px}#river-flow-content{max-width:1100px;margin-top:40px}.fragment.work h3{font-size:1.65rem;line-height:1.55}.fragment.work .fragment-card{padding-top:22px}.fragment.work .fragment-body{max-width:40em}.fragment.story-record .fragment-card{border-top:0;border-left:2px solid var(--copper);padding:3px 0 3px 26px}.fragment.story-record h3{font-size:2rem;letter-spacing:.12em}.fragment.story-record .fragment-body{font-family:var(--serif);font-size:1.125rem}.fragment.whisper .fragment-body{font-size:1.125rem;line-height:2}.fragment.thought .fragment-body{font-size:1.0625rem}.fragment-meta{gap:4px 13px}.fragment-meta button{font-size:.75rem}.month-marker{margin-top:56px;margin-bottom:32px}.estuary-gate{margin-top:20px}
.portrait-dialog{width:min(760px,calc(100% - 40px));border-radius:2px;max-height:88vh;max-height:88dvh}.slice-shell{position:relative}.slice-content{padding:48px 52px;min-width:0;overflow-wrap:anywhere}.slice-kicker{font:.75rem/1.8 var(--sans);letter-spacing:.14em;color:var(--mineral);margin-bottom:20px}.slice-content h2{font:400 2rem/1.55 var(--serif);margin:0 25px 14px 0}.slice-lead{font-size:.875rem;line-height:1.9;color:var(--body)}.sample-switch{display:flex;gap:24px;border-bottom:1px solid var(--line);margin-top:26px}.sample-switch button{border:0;border-bottom:2px solid transparent;background:none;padding:10px 0;font-size:.875rem;color:var(--muted)}.sample-switch button[aria-pressed=true]{border-color:var(--mineral);color:var(--ink)}.sample-request{padding:25px 0 0}.sample-request>p{font:1.0625rem/1.95 var(--serif)}.sample-request dl{display:flex;gap:28px;flex-wrap:wrap;margin:24px 0 5px;padding-top:18px;border-top:1px solid var(--line)}.sample-request dl div{flex:1;min-width:90px}.sample-request dt{font-size:.75rem;color:var(--muted)}.sample-request dd{font-size:1.15rem;margin:3px 0 0}.sample-script{padding-top:16px;min-width:0}.sample-caption{font-size:.75rem;color:var(--muted);margin-bottom:10px}.sample-script pre{margin:0;padding:18px;background:#1e3038;color:#e0e9e8;font:12px/1.8 ui-monospace,SFMono-Regular,Consolas,monospace;max-height:300px;overflow:auto;tab-size:2}.sample-note{font-size:.75rem;line-height:1.9;color:var(--muted);margin-top:22px}.slice-actions{display:flex;align-items:center;gap:14px 26px;flex-wrap:wrap;margin-top:28px;font-size:.875rem}.slice-actions>a{text-decoration:none;padding:8px 0;border-bottom:1px solid var(--line);color:var(--mineral)}.slice-actions>a:hover{border-color:currentColor}.slice-story{padding-top:50px;padding-bottom:50px}.slice-story .slice-kicker,.slice-story .slice-actions>a{color:var(--copper)}.slice-story h2{font-size:3rem;letter-spacing:.18em}.story-chapter{font-size:.8125rem;color:var(--muted)}.slice-story blockquote{margin:36px 0 22px;font:400 clamp(1.55rem,3vw,2rem)/1.9 var(--serif)}.slice-story blockquote>p+p{margin-top:14px}.story-source{font:.75rem/1.8 var(--sans);color:var(--muted);margin-bottom:34px}.slice-story .slice-lead{max-width:28em}.slice-moment{padding-top:50px;padding-bottom:50px}.slice-moment .slice-kicker,.slice-moment .slice-actions>a{color:var(--moss)}.slice-moment h2{font-size:1.5rem}.slice-moment time{font-size:.8125rem;color:var(--muted)}.moment-full{font:400 1.5rem/2.2 var(--serif);white-space:pre-line;margin:36px 0 44px;max-width:20em}
@media(min-width:1450px){.portrait-head{padding-top:36px;padding-bottom:25px}.portrait-intro h1{font-size:4.2rem}}
@media(max-width:1360px){.portrait-now{margin-left:44px;margin-right:44px}}
@media(max-width:1000px){.site-nav{padding:22px 30px}.portrait-head{padding:20px 30px 0;grid-template-columns:.92fr 1.1fr;gap:12px}.portrait-intro h1{font-size:clamp(2.35rem,4.7vw,3rem)}.portrait-quote{font-size:.8125rem}.portrait-quote br{display:none}.portrait-piece{padding:10px 12px;gap:8px;min-height:60px}.piece-project{top:67%}.portrait-piece strong{font-size:.8125rem}.piece-mark{display:none}.portrait-traces>span{font-size:11px}.portrait-figure figcaption{margin-top:20px}.portrait-now{margin:30px 30px 68px}.nav-links{gap:20px}}
@media(max-width:720px){.site-nav{padding:18px 24px;align-items:start}.nav-links{max-width:310px;gap:4px 19px;justify-content:flex-end;flex-wrap:wrap;font-size:.8125rem}.portrait-head{display:flex;flex-direction:column;align-items:stretch;padding:22px 24px 0;gap:0}.portrait-intro{padding:0}.portrait-intro h1{font-size:clamp(2.7rem,7.5vw,3.4rem);line-height:1.25;margin:20px 0}.portrait-quote{font-size:.875rem;max-width:27em}.portrait-signature{margin-top:17px}.portrait-down{margin-top:17px}.portrait-figure{margin:12px auto 0;width:min(100%,510px)}.portrait-piece{min-height:60px}.portrait-piece strong{font-size:.875rem}.piece-project{left:0;top:64%}.piece-story{right:0;top:12%}.piece-moment{right:0;bottom:0}.portrait-now{margin:30px 24px 54px;display:block}.portrait-now .now{max-width:100%;margin-top:8px}.portrait-figure figcaption{margin-top:22px}.reading-heading{padding:0 24px 24px;display:block}.reading-heading h2{font-size:1.75rem}.reading-heading>#latest-record{margin-top:10px}#river-flow-content{padding:0 24px}.fragment.work h3{font-size:1.5rem}.fragment.story-record .fragment-card{padding-left:20px}.fragment.story-record h3{font-size:1.75rem}.fragment.whisper .fragment-body{font-size:1.0625rem}.fragment.thought .fragment-body{font-size:1rem}.slice-content{padding:45px 28px 30px}.slice-content h2{font-size:1.6rem}.slice-story h2{font-size:2.5rem}.slice-story blockquote{font-size:1.55rem}.moment-full{font-size:1.3rem}.sample-request>p{font-size:1rem}.sample-request dl{gap:14px}.portrait-dialog{width:calc(100% - 24px)}}
@media(max-width:380px){.site-nav{padding:16px 20px;gap:14px}.nav-links{gap:3px 14px}.portrait-head{padding:18px 20px 0}.portrait-intro h1{font-size:2.35rem}.portrait-piece{padding:8px 10px;gap:5px}.portrait-piece strong{font-size:.75rem}.portrait-piece small{font-size:.6875rem}.piece-arrow{margin-left:0}.portrait-traces>span{display:none}.portrait-figure figcaption{flex-wrap:wrap;gap:0}.portrait-now{margin-left:20px;margin-right:20px}.slice-content{padding-left:22px;padding-right:22px}.sample-request dl div{min-width:68px}.sample-request dd{font-size:1rem}.slice-actions{gap:10px 18px}}
@media(prefers-reduced-motion:reduce){#portrait-image,.portrait-piece{transition:none;transform:none!important}}
