:root{--canvas:#f8f9fa;--surface:#eef1f4;--surface-blue:#eef4ff;--paper:#fff;--ink:#1f2328;--muted:#687076;--line:#dfe3e7;--blue:#2f6fed;--dark:#17191c;--shell:1120px;--reading:720px;font-family:system-ui,-apple-system,BlinkMacSystemFont,Noto Sans SC,PingFang SC,Microsoft YaHei,sans-serif;color:var(--ink);background:var(--canvas)}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;font-size:16px;line-height:1.75;background:var(--canvas)}a{color:inherit;text-decoration:none}a:focus-visible,summary:focus-visible{outline:3px solid var(--blue);outline-offset:4px}.shell{width:min(var(--shell),calc(100% - 48px));margin-inline:auto}.site-header{border-bottom:1px solid var(--line);background:#fffffff0;position:sticky;top:0;z-index:10;backdrop-filter:blur(12px)}.nav-shell{min-height:72px;display:flex;align-items:center;justify-content:space-between}.brand{font-size:20px;font-weight:700;line-height:1}.desktop-nav{display:flex;gap:28px;align-items:center}.desktop-nav a{padding-block:24px;color:var(--muted);font-size:14px;position:relative}.desktop-nav a[aria-current=page]{color:var(--ink)}.desktop-nav a[aria-current=page]:after{background:var(--blue);content:"";height:2px;left:0;right:0;bottom:0;position:absolute}.mobile-menu{display:none;position:relative}.mobile-menu summary{cursor:pointer;list-style:none;width:44px;height:44px;display:grid;place-content:center;gap:5px}.mobile-menu summary::-webkit-details-marker{display:none}.mobile-menu summary span{display:block;width:20px;height:1px;background:var(--ink)}.mobile-menu nav{position:absolute;top:52px;right:0;padding:8px;width:150px;background:#fff;border:1px solid var(--line);box-shadow:0 10px 24px #1f23281a}.mobile-menu nav a{display:block;padding:9px 12px;font-size:14px}.mobile-menu nav a[aria-current=page]{color:var(--blue)}.hero{min-height:calc(100svh - 72px);padding-block:96px 84px;max-width:var(--shell);display:flex;align-items:flex-start;justify-content:center;flex-direction:column;position:relative;overflow:hidden}.hero-copy{position:relative;z-index:1}.hero-field{position:absolute;inset:0;overflow:hidden;pointer-events:none}.hero-dot-grid{position:absolute;inset:7% 0 5%;display:grid;grid-template-columns:repeat(18,1fr);grid-template-rows:repeat(12,1fr);place-items:center}.hero-dot-grid i{width:2px;height:2px;display:block;background:#b9c9e8;opacity:.16;animation:dot-wave 7.5s calc(var(--delay) * -1) linear infinite}.field-line{position:absolute;display:block;background:#c7d5ee;transform:translateZ(0)}.field-line:after{content:"";position:absolute;display:block;background:#8facf1;opacity:.58}.field-line-one{width:48%;height:1px;top:18%;left:-14%;animation:field-drift-x 13s ease-in-out infinite alternate}.field-line-one:after{width:104px;height:1px;left:-128px;top:0;animation:line-tail-x 2.8s ease-in-out infinite}.field-line-two{width:1px;height:48%;top:10%;right:17%;animation:field-drift-y 15s ease-in-out infinite alternate}.field-line-two:after{width:1px;height:86px;left:0;top:-108px;animation:line-tail-y 3.2s ease-in-out .5s infinite}.field-line-three{width:38%;height:1px;bottom:26%;right:-8%;background:#b8caf0;animation:field-drift-x 18s ease-in-out -4s infinite alternate-reverse}.field-line-three:after{width:82px;height:1px;right:-102px;top:0;animation:line-tail-x 3s ease-in-out 1s infinite reverse}.field-line-four{width:1px;height:28%;bottom:5%;left:32%;background:#8faef1;animation:field-drift-y 12s ease-in-out -2s infinite alternate-reverse}.field-line-four:after{width:1px;height:62px;left:0;bottom:-80px;animation:line-tail-y 2.6s ease-in-out .8s infinite reverse}.hero-scroll{position:absolute;z-index:1;right:0;bottom:32px;display:inline-flex;align-items:center;gap:12px;color:var(--muted);font-size:13px;font-weight:650}.hero-scroll span{position:relative;display:block;width:24px;height:28px;border-left:1px solid var(--blue)}.hero-scroll span:after{content:"";position:absolute;left:-3px;bottom:1px;width:6px;height:6px;border-right:1px solid var(--blue);border-bottom:1px solid var(--blue);transform:rotate(45deg);animation:scroll-cue 1.7s ease-in-out infinite}.eyebrow{margin:0 0 14px;color:var(--blue);font-size:13px;font-weight:700;line-height:1.4;display:flex;align-items:center;gap:8px}.eyebrow:before{content:"";width:20px;height:2px;background:currentColor}h1,h2,h3,p{margin-top:0}h1,h2,h3{line-height:1.2;font-weight:650;letter-spacing:0}.hero h1{font-size:clamp(56px,9vw,116px);margin-bottom:22px}.hero-lead{max-width:650px;font-size:22px;line-height:1.65;color:#3e464d}.hero-actions{display:flex;gap:20px;align-items:center;margin-top:32px}.button{min-height:44px;display:inline-flex;align-items:center;justify-content:center;padding:10px 16px;font-size:15px;font-weight:650;transition:background-color .15s ease-out,color .15s ease-out}.button-primary{background:var(--blue);color:#fff;border:1px solid var(--blue)}.button-primary:hover{background:#2459c8}.button-text{color:var(--blue);padding-inline:0}.section-block{padding-block:96px}.work-band,.portfolio-band,.notes-index-band,.more-index-band{background:var(--paper);border-top:1px solid var(--line)}.section-block.compact{padding-top:36px}.section-heading{display:flex;justify-content:space-between;align-items:end;margin-bottom:32px;gap:20px}.section-heading h2,.page-intro h1,.about-hero h1{font-size:40px;margin:0}.text-link{color:var(--blue);font-weight:650;font-size:15px;white-space:nowrap}.text-link span{display:inline-block;transition:transform .15s ease-out}.text-link:hover span{transform:translate(4px)}.project-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px}.project-card{min-width:0;transition:transform .22s ease-out}.project-card:hover{transform:translateY(-5px)}.project-cover,.detail-cover{display:flex;min-height:320px;aspect-ratio:16/10;padding:24px;flex-direction:column;justify-content:space-between;color:#fff;background:var(--dark);overflow:hidden;position:relative}.project-media-link{display:block}.project-media{width:100%}.project-media img{width:100%;height:100%;display:block;object-fit:cover}.project-media-portrait{background:#17242a;align-items:center;padding:18px}.project-media-portrait img{width:auto;max-width:100%;object-fit:contain}.media-link{display:block;padding:0}.media-link:before,.media-link:after{display:none}.media-play{position:absolute;z-index:1;width:54px;height:54px;display:grid;place-items:center;top:50%;left:50%;transform:translate(-50%,-50%);background:#17191cc7;border:1px solid rgba(255,255,255,.55);border-radius:50%}.media-play:after{content:"";display:block;width:0;height:0;margin-left:4px;border-top:8px solid transparent;border-bottom:8px solid transparent;border-left:12px solid #fff}.project-actions{display:flex;flex-wrap:wrap;gap:12px;margin:24px 0 12px}.project-detail-link{display:inline-flex;gap:8px;align-items:center;min-height:44px;padding:10px 14px;color:#fff;background:var(--blue);font-size:15px;font-weight:650}.project-detail-link:hover{background:#2459c8}.project-detail-link-secondary{color:var(--blue);background:var(--paper);border:1px solid #b8caf0}.project-detail-link-secondary:hover{color:#fff}.episode-menu{position:relative}.episode-menu summary{display:inline-flex;min-height:44px;align-items:center;gap:8px;padding:10px 14px;color:var(--blue);border:1px solid #b8caf0;background:var(--paper);font-size:15px;font-weight:650;cursor:pointer;list-style:none}.episode-menu summary::-webkit-details-marker{display:none}.episode-menu[open] summary{background:#f1f5ff}.episode-menu>div{position:absolute;z-index:3;top:calc(100% + 6px);left:0;min-width:156px;padding:6px;border:1px solid var(--line);background:var(--paper);box-shadow:0 12px 28px #1f23281f}.episode-menu a{display:flex;justify-content:space-between;gap:14px;padding:8px 10px;color:var(--ink);font-size:14px;white-space:nowrap}.episode-menu a:hover{color:var(--blue);background:var(--surface-blue)}.project-cover:before,.detail-cover:before{content:"";position:absolute;width:160px;aspect-ratio:1;border:1px solid rgba(255,255,255,.25);border-radius:50%;right:-45px;top:-45px}.project-cover:after,.detail-cover:after{content:"";position:absolute;width:90px;aspect-ratio:1;border:1px solid rgba(255,255,255,.25);border-radius:50%;left:20%;bottom:-58px}.project-cover span,.detail-cover span{position:relative;z-index:1;font-size:13px;color:#c8d7ff}.project-cover strong,.detail-cover strong{position:relative;z-index:1;max-width:80%;font-size:clamp(24px,3vw,38px);line-height:1.25}.project-cover small{position:relative;z-index:1;color:#c8d7ff}.project-cover:hover{background:#222934}.project-card-body{padding:18px 0 0}.meta-row{display:flex;gap:10px;align-items:center;color:var(--muted);font-size:13px;line-height:1.4}.status{width:fit-content;padding:3px 8px;border:1px solid var(--line);color:var(--muted);background:var(--surface);font-size:12px;line-height:1.4}.project-card-body h3,.note-item h3{margin:8px 0;font-size:23px}.project-card-body h3 a:hover,.note-item h3 a:hover{color:var(--blue)}.project-card-body p,.note-item p{color:var(--muted);margin-bottom:0}.notes-band,.skills-band{background:var(--surface);border-block:1px solid var(--line)}.note-list{border-top:1px solid var(--line)}.note-item{padding-block:26px;border-bottom:1px solid var(--line)}.note-item h3{font-size:26px}.note-item p{max-width:700px;margin-bottom:12px}.more-band{background:var(--dark);color:#fff;border-block:1px solid #0c0d0e}.more-cta{padding-block:112px}.more-band .eyebrow,.more-band .text-link{color:#9abaff}.more-band>.more-cta>p:not(.eyebrow){color:#bdc4cc}.more-cta h2{font-size:42px;margin-bottom:12px}.more-cta>p:not(.eyebrow){max-width:540px;color:var(--muted);margin-bottom:22px}.page-intro{padding-block:80px 32px;max-width:var(--shell)}.page-intro:after{content:"";display:block;width:100%;height:1px;background:var(--line);margin-top:40px}.page-intro>p:not(.eyebrow){color:var(--muted);max-width:570px;font-size:18px;margin:16px 0 0}.filter-row{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:32px;color:var(--muted);font-size:14px}.filter-row span{padding:5px 10px;border:1px solid var(--line)}.filter-row .filter-active{color:var(--blue);background:#f1f5ff;border-color:#c8d7ff}.detail-page{max-width:var(--shell);padding-block:56px 96px}.detail-header{border-left:3px solid var(--blue);padding-left:24px}.back-link{display:inline-block;color:var(--blue);font-size:14px;font-weight:650;margin-bottom:48px}.detail-header{max-width:800px;margin-bottom:40px}.detail-header h1,.reading-header h1{font-size:clamp(38px,6vw,64px);margin:14px 0 18px}.detail-header>p,.reading-header>p{font-size:19px;color:var(--muted);max-width:700px}.detail-cover{min-height:440px;margin-bottom:36px}.project-facts{display:grid;grid-template-columns:repeat(3,1fr);gap:24px;margin:0 auto 72px;max-width:var(--reading);padding-block:24px;border-block:1px solid var(--line)}.project-facts div{min-width:0}.project-facts dt{color:var(--muted);font-size:13px;margin-bottom:5px}.project-facts dd{margin:0;font-size:15px;overflow-wrap:anywhere}.prose{width:min(var(--reading),100%);margin-inline:auto;font-size:17px;line-height:1.85}.prose h2{font-size:28px;margin:56px 0 16px}.prose h3{font-size:21px;margin:32px 0 12px}.prose p,.prose ul{margin-bottom:20px}.prose li+li{margin-top:8px}.prose strong{color:#111}.project-tabs{margin-top:64px}.project-tab-list{display:flex;gap:0;border-bottom:1px solid var(--line)}.project-tab{min-height:48px;padding:12px 18px;border:0;border-bottom:2px solid transparent;background:transparent;color:var(--muted);font:inherit;font-size:15px;font-weight:650;cursor:pointer}.project-tab:hover{color:var(--ink)}.project-tab[aria-selected=true]{color:var(--blue);border-bottom-color:var(--blue)}.project-tab-panel{padding-top:32px}.project-tab-panel[hidden]{display:none}.project-archive{width:min(var(--shell),100%);margin-inline:auto}.archive-heading{max-width:720px;margin-bottom:32px}.archive-heading h2{font-size:36px;margin:0 0 12px}.archive-heading>p:not(.eyebrow){color:var(--muted);margin-bottom:0}.archive-specs{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0;margin:0 0 72px;border-block:1px solid var(--line)}.archive-specs div{padding:20px;min-width:0}.archive-specs div+div{border-left:1px solid var(--line)}.archive-specs dt{color:var(--muted);font-size:13px;margin-bottom:6px}.archive-specs dd{margin:0;font-size:15px;overflow-wrap:anywhere}.archive-section{margin-top:72px}.archive-section h3{font-size:30px;margin:0 0 24px}.archive-chapters{border-top:1px solid var(--line)}.archive-chapters article{display:grid;grid-template-columns:72px minmax(0,1fr);gap:16px;padding:22px 0;border-bottom:1px solid var(--line)}.archive-chapters article>span{color:var(--blue);font-size:14px;font-weight:700}.archive-chapters h4,.archive-assets h4{font-size:20px;margin:0 0 6px}.archive-chapters p,.archive-assets p{color:var(--muted);margin:0;font-size:15px}.chapter-time{font-size:13px!important;margin-bottom:4px!important}.archive-assets{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px}.archive-assets article{border:1px solid var(--line);background:var(--paper);min-width:0}.archive-assets img{width:100%;aspect-ratio:16/10;object-fit:cover;display:block;background:#f0f2f3}.archive-assets article:first-child img{object-fit:contain}.archive-assets article div{padding:18px}.project-poster-series{width:min(var(--shell),100%);margin-inline:auto}.poster-carousel{outline:none}.poster-carousel-stage{position:relative;display:grid;min-height:620px;padding:32px 92px;place-items:center;overflow:hidden;background:#14252a;border:1px solid #102025}.poster-carousel-stage img{display:block;max-width:100%;max-height:760px;object-fit:contain;box-shadow:0 18px 48px #0000003d;transition:opacity .22s ease-out}.poster-carousel-stage img.is-changing{animation:poster-fade .3s ease-out}.poster-control{position:absolute;top:50%;z-index:1;width:46px;height:46px;display:grid;place-items:center;border:1px solid rgba(255,255,255,.45);border-radius:50%;color:#fff;background:#0f1b1fc2;font:inherit;font-size:24px;line-height:1;cursor:pointer;transform:translateY(-50%);transition:background-color .15s ease-out,border-color .15s ease-out}.poster-control:hover{background:var(--blue);border-color:var(--blue)}.poster-control-prev{left:24px}.poster-control-next{right:24px}.poster-carousel-caption{display:flex;justify-content:space-between;gap:28px;padding:24px 0 0;border-bottom:1px solid var(--line)}.poster-carousel-caption .eyebrow{align-self:flex-start;margin-top:7px}.poster-carousel-caption h2{margin:0 0 18px;font-size:28px}.poster-counter{margin:0 0 8px;color:var(--blue);font-size:14px;font-weight:700;letter-spacing:0}.reading-page{max-width:var(--reading);padding-block:56px 96px}.reading-header{margin-bottom:48px}.tag-row{display:flex;flex-wrap:wrap;gap:8px;color:var(--muted);font-size:13px}.tag-row span{background:var(--surface);padding:3px 8px}.about-hero{padding-block:112px 90px}.about-hero h1{font-size:clamp(42px,6vw,74px);margin-bottom:24px}.about-hero>p:not(.eyebrow){max-width:700px;color:var(--muted);font-size:20px}.about-focus-band{background:var(--paper);border-block:1px solid var(--line)}.approach-band{background:var(--surface-blue);border-top:1px solid #c9d7f3}.about-grid{display:grid;grid-template-columns:1fr 2fr;gap:80px;padding-block:84px}.about-grid h2{font-size:30px;margin:0}.about-copy{max-width:640px;color:#3e464d;font-size:18px}.about-copy p:last-child{margin-bottom:0}.skills-band{padding-block:80px}.skills-grid{display:grid;grid-template-columns:repeat(4,1fr);border-top:1px solid var(--line)}.skills-grid article{padding:24px 20px 12px 0;min-width:0}.skills-grid article+article{padding-left:20px;border-left:1px solid var(--line)}.skills-grid span{color:var(--blue);font-size:13px}.skills-grid h2{font-size:22px;margin:10px 0}.skills-grid p{color:var(--muted);font-size:14px}.more-list{border-top:1px solid var(--line)}.more-item{display:flex;justify-content:space-between;align-items:start;gap:28px;padding-block:30px;border-bottom:1px solid var(--line)}.more-item h2{font-size:28px;margin:0 0 8px}.more-item h2 a:hover{color:var(--blue)}.more-item h2 a span{display:inline-block;color:var(--blue);font-size:.7em;transform:translateY(-2px)}.more-item p:not(.eyebrow){color:var(--muted);margin:0;max-width:620px}.tool-page{padding-block:56px 96px}.tool-page-header{max-width:720px;border-left:3px solid var(--blue);padding-left:24px;margin-bottom:32px}.tool-page-header h1{font-size:clamp(38px,6vw,64px);margin:14px 0 18px}.tool-page-header>p:not(.eyebrow){color:var(--muted);font-size:18px;margin-bottom:0}.tool-frame{width:100%;height:calc(100svh - 250px);min-height:680px;overflow:hidden;border:1px solid var(--line);background:var(--surface)}.tool-frame iframe{width:100%;height:100%;display:block;border:0}.empty-page{padding-block:160px}.empty-page h1{font-size:48px;margin-bottom:14px}.empty-page>p:not(.eyebrow){color:var(--muted);margin-bottom:30px}.site-footer{border-top:1px solid var(--line);background:var(--paper)}.footer-inner{padding-block:32px;display:grid;grid-template-columns:1fr auto auto;gap:24px;align-items:center}.footer-inner p{margin:0;color:var(--muted);font-size:13px}.footer-note{text-align:right}[data-reveal]{opacity:0;transform:translateY(22px);transition:opacity .5s ease-out,transform .5s ease-out}[data-reveal].is-revealed{opacity:1;transform:translateY(0)}@media(max-width:720px){.shell{width:min(calc(100% - 32px),var(--shell))}.desktop-nav{display:none}.mobile-menu{display:block}.hero{padding-block:82px 64px}.hero h1{font-size:64px}.hero-lead{font-size:19px}.section-block{padding-block:64px}.section-heading h2,.page-intro h1{font-size:34px}.section-heading{align-items:start}.project-grid{grid-template-columns:1fr;gap:36px}.project-cover{min-height:0}.notes-band .section-block{padding-block:64px}.note-item h3{font-size:23px}.more-cta{padding-block:76px}.more-cta h2{font-size:34px}.page-intro{padding-block:64px 22px}.detail-page,.reading-page,.tool-page{padding-block:40px 72px}.back-link{margin-bottom:34px}.detail-cover{min-height:0}.project-facts{grid-template-columns:1fr;gap:14px;margin-bottom:48px}.project-tabs{margin-top:48px}.archive-specs{grid-template-columns:1fr;margin-bottom:48px}.archive-specs div+div{border-left:0;border-top:1px solid var(--line)}.archive-section{margin-top:48px}.archive-section h3{font-size:27px}.archive-assets{grid-template-columns:1fr}.poster-carousel-stage{min-height:0;padding:22px 54px}.poster-carousel-stage img{max-height:600px}.poster-control{width:38px;height:38px;font-size:20px}.poster-control-prev{left:8px}.poster-control-next{right:8px}.poster-carousel-caption{display:block;padding-top:18px}.poster-carousel-caption h2{font-size:24px;margin-bottom:14px}.tool-page-header{padding-left:18px}.tool-page-header h1{font-size:40px}.tool-frame{height:calc(100svh - 220px);min-height:560px}.about-hero{padding-block:74px 64px}.about-grid{grid-template-columns:1fr;gap:24px;padding-block:64px}.skills-band{padding-block:64px}.skills-grid{grid-template-columns:1fr 1fr}.skills-grid article{padding:20px 12px 14px 0}.skills-grid article:nth-child(3){border-left:0}.skills-grid article:nth-child(n+3){border-top:1px solid var(--line)}.skills-grid article:nth-child(2n){padding-left:12px}.footer-inner{grid-template-columns:1fr;gap:8px}.footer-note{text-align:left}}@media(min-width:1440px){:root{--shell:1360px}.hero-lead{max-width:640px}.project-grid{gap:32px}}@media(max-width:420px){.hero-actions{align-items:flex-start;flex-direction:column;gap:8px}.section-heading{flex-direction:column;gap:12px}.skills-grid{grid-template-columns:1fr}.skills-grid article+article{border-left:0;padding-left:0;border-top:1px solid var(--line)}.skills-grid article:nth-child(2n){padding-left:0}.more-item{flex-direction:column;gap:14px}.detail-header h1,.reading-header h1{font-size:38px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}@keyframes field-drift-x{0%{transform:translate(-24px);opacity:.35}to{transform:translate(36px);opacity:.8}}@keyframes field-drift-y{0%{transform:translateY(-20px);opacity:.3}to{transform:translateY(28px);opacity:.75}}@keyframes scroll-cue{0%,to{transform:translateY(-4px) rotate(45deg);opacity:.45}50%{transform:translateY(2px) rotate(45deg);opacity:1}}@keyframes dot-wave{0%,to{opacity:.12;transform:scale(1)}9%{opacity:.72;transform:scale(1.4)}17%{opacity:.18;transform:scale(1)}}@keyframes line-tail-x{0%,to{transform:translate(-28px);opacity:.05}50%{transform:translate(12px);opacity:.7}}@keyframes line-tail-y{0%,to{transform:translateY(-20px);opacity:.05}50%{transform:translateY(10px);opacity:.7}}@keyframes poster-fade{0%{opacity:.2}to{opacity:1}}
