:root{--bg:#0b0b0b;--ink:#f2f2ed;--muted:#9a9b91;--blue:#8fff8d;--line:rgba(143,255,141,.18);--gold:#607c4b;--orange:#8fff8d;--phosphor:#8fff8d;--phosphor-muted:#607c4b;--surface:#111310;--shell:#b8b0a2;--max:1600px;--ease:cubic-bezier(.16,1,.3,1)}
@font-face{font-family:"WZ Pixel";src:url("assets/v7/vendor/vt323.woff2") format("woff2");font-style:normal;font-weight:400;font-display:swap}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--bg);color:var(--ink);font-family:"Alibaba PuHuiTi 3.0","Source Han Sans SC","Microsoft YaHei",sans-serif;overflow-x:hidden}a{color:inherit;text-decoration:none}button{font:inherit}::selection{background:var(--blue);color:white}:focus-visible{outline:2px solid var(--blue);outline-offset:5px}.site-nav{height:66px;position:fixed;inset:0 0 auto;z-index:50;display:flex;align-items:center;justify-content:space-between;padding:0 clamp(20px,5vw,76px);background:linear-gradient(#0b0d0de8,transparent)}.wordmark{font-family:Georgia,"Times New Roman",serif;font-size:18px}.site-nav nav{display:flex;gap:26px;font-size:13px;color:#d6d2c9}.site-nav nav a{border-bottom:1px solid transparent}.site-nav nav a:hover{border-color:currentColor}
.hero{height:min(100svh,1100px);min-height:680px;position:relative;overflow:hidden;background:#080909}.hero>img{width:100%;height:100%;object-fit:cover;object-position:center;display:block}.hero:after{content:"";position:absolute;inset:0;pointer-events:none;box-shadow:inset 0 -100px 80px #0b0d0d}.hero-hit{position:absolute;border:1px solid transparent;background:transparent;cursor:pointer;transition:transform .45s var(--ease),filter .45s,border-color .3s}.hero-hit:hover{transform:translateY(-10px) rotate(-1deg);border-color:#ffffff8a;filter:drop-shadow(0 22px 20px #000b)}.hero-photo{left:24%;top:36%;width:18%;height:44%;transform:rotate(-6deg)}.hero-badge{left:65%;top:48%;width:13%;height:32%;transform:rotate(-3deg)}.hero-controller{right:0;top:37%;width:18%;height:35%}.hero-keyboard{right:0;top:0;width:31%;height:22%}.scroll-mark{position:absolute;right:5vw;bottom:38px;font:700 10px ui-monospace,monospace;letter-spacing:.18em}
.resume,.works,.reports,.contact{max-width:var(--max);margin:auto;padding:clamp(100px,10vw,170px) clamp(24px,6vw,100px)}.resume{max-width:none;border-top:1px solid var(--line)}.resume>h1{font:400 clamp(32px,4vw,66px)/1 Georgia,"Times New Roman",serif;color:var(--blue);margin:0 0 65px}.resume-layout{display:grid;grid-template-columns:240px minmax(0,1fr) 330px;gap:clamp(35px,5vw,86px);max-width:1600px;margin:auto}.identity{align-self:start}.portrait{width:100%;aspect-ratio:.76;object-fit:cover}.identity h2{color:var(--blue);font-size:20px;line-height:1.2;font-weight:500;margin:30px 0 22px}.identity h2 small{display:block;font-size:16px}.identity dl{margin:0;font-size:12px}.identity dl div{display:grid;grid-template-columns:65px 1fr;padding:4px 0}.identity dt{color:var(--blue)}.identity dd{margin:0}.resume-qr{width:94px;height:94px;object-fit:cover;margin-top:28px;background:white}.qr-caption{display:block;width:94px;text-align:center;font-size:10px;margin-top:7px}.resume-group{margin-bottom:58px}.resume-group h3{font-size:22px;color:var(--blue);margin:0 0 22px;font-weight:600}.resume-group article{position:relative;margin-bottom:22px;padding-right:130px}.resume-group time{position:absolute;right:0;top:2px;font:500 11px ui-monospace,monospace;color:#d8d5cf}.resume-group h4{font-size:15px;margin:0 0 10px;font-weight:600}.resume-group p,.resume-group li{font-size:12px;line-height:1.8;color:#cbc8c1}.resume-group p b{color:var(--blue);font-weight:500}.resume-group span{color:#96958f}.resume-side .resume-group{margin-bottom:55px}.awards ul{padding-left:17px;margin:0}.skills p{padding-bottom:17px;border-bottom:1px solid var(--line)}.skills p b{display:block;margin-bottom:5px}.edit-hotzone{position:fixed;left:0;top:0;width:92px;height:42px;z-index:200}.edit-tools{display:flex;gap:5px;padding:7px;opacity:0;transform:translateY(-6px);transition:.2s}.edit-hotzone:hover .edit-tools,.edit-tools:focus-within{opacity:1;transform:none}.edit-tools button{border:1px solid #ffffff40;background:#0b0d0d;color:#fff;padding:6px 9px;font-size:11px;white-space:nowrap}.editing [contenteditable=true]{outline:1px dashed var(--blue);outline-offset:4px}
.works{min-height:100svh;border-top:1px solid var(--line)}.works>h2,.reports>h2{font-size:clamp(46px,7vw,92px);font-weight:600;letter-spacing:-.03em;margin:0 0 55px}.carousel{height:min(62vw,820px);min-height:580px;position:relative;display:grid;place-items:center}.carousel-stage{position:absolute;inset:0}.project-slide{position:absolute;inset:0;display:grid;place-items:center;opacity:0;pointer-events:none;transition:opacity .5s var(--ease),transform .65s var(--ease);transform:scale(.92)}.project-slide.active{opacity:1;pointer-events:auto;transform:none}.vinyl{position:absolute;width:min(45vw,650px);aspect-ratio:1;left:50%;top:2%;transform:translateX(-50%);filter:drop-shadow(0 34px 26px #000b);transition:transform .55s var(--ease)}.project-cover{position:absolute;width:min(36vw,520px);left:50%;top:34%;transform:translateX(-50%);z-index:2;filter:drop-shadow(0 30px 28px #000b);transition:transform .55s var(--ease)}.project-slide:hover .vinyl{transform:translateX(-50%) translateY(-22px) rotate(7deg)}.project-slide:hover .project-cover{transform:translateX(-50%) translateY(12px)}.project-open{position:absolute;inset:0;border:0;background:transparent;cursor:pointer;z-index:4}.carousel-arrow{position:absolute;top:42%;z-index:10;width:58px;height:58px;border:1px solid #ffffff78;border-radius:50%;background:#0b0d0dd8;color:white;font-size:35px;cursor:pointer;transition:.25s}.carousel-arrow:hover{background:var(--blue);border-color:var(--blue)}.carousel-arrow.prev{left:calc(50% - min(31vw,455px))}.carousel-arrow.next{right:calc(50% - min(31vw,455px))}.project-meta{display:flex;justify-content:center;gap:25px;margin-top:-20px;font-size:14px}.project-meta b{color:var(--blue);font:600 12px ui-monospace,monospace}
.reports{max-width:none;border-top:1px solid var(--line);padding-left:clamp(24px,6vw,100px);padding-right:clamp(24px,6vw,100px)}.reports>h2{max-width:1600px;margin-left:auto;margin-right:auto}.report-folder{max-width:1500px;aspect-ratio:1.5;margin:auto;position:relative}.folder-art{position:absolute;inset:0;width:100%;height:100%;object-fit:contain}.report-cover{position:absolute;top:12%;width:39%;height:76%;padding:0;border:0;background:#fff;overflow:hidden;cursor:pointer;box-shadow:0 20px 35px #0008;transition:transform .4s var(--ease),box-shadow .4s}.report-cover:hover{transform:translateY(-16px) rotate(-.7deg);box-shadow:0 35px 55px #000b}.report-yanyun{left:7%}.report-dahua{right:7%}.report-cover img{width:100%;height:100%;object-fit:cover}.report-cover span{position:absolute;left:18px;bottom:18px;background:#0b0d0de8;color:white;padding:9px 13px;font-weight:600;font-size:14px}.report-paper{height:100%;padding:12%;text-align:left;color:#161717;background:#f4f1e9;display:flex;flex-direction:column}.report-paper small{font:700 10px ui-monospace,monospace;letter-spacing:.14em;color:#607c4b}.report-paper h3{font-size:clamp(24px,3vw,54px);line-height:1.2;margin:22% 0 18px}.report-paper p{font-size:16px}.report-paper b{margin-top:auto;font:600 10px ui-monospace,monospace;color:#607c4b;letter-spacing:.08em}
.contact{max-width:none;min-height:780px;border-top:1px solid var(--line);display:grid;grid-template-columns:1fr auto;align-items:end}.contact h2{font-size:clamp(60px,10vw,150px);line-height:.82;letter-spacing:-.04em;margin:0}.contact h2 em{font-style:normal;color:var(--blue)}.contact-info{display:flex;align-items:center;gap:24px;padding-bottom:10px}.contact-info img{width:140px;height:140px;object-fit:cover;background:white}.contact-info div{display:grid;gap:12px;font-size:13px}.contact-info a{color:var(--blue);font-size:16px}
.reader{position:fixed;inset:0;z-index:100;background:#0b0d0df8;overflow:auto;opacity:0;visibility:hidden;transform:translateY(28px);transition:.35s var(--ease)}.reader.open{opacity:1;visibility:visible;transform:none}.reader header{position:sticky;top:0;z-index:3;display:flex;justify-content:space-between;align-items:center;padding:18px 5vw;background:#0b0d0de8;backdrop-filter:blur(15px);border-bottom:1px solid var(--line)}.reader header small{color:var(--blue);font:600 10px ui-monospace,monospace}.reader header h2{margin:4px 0 0;font-size:22px}.reader header button{border:1px solid #fff;background:transparent;color:#fff;padding:12px 18px;cursor:pointer}.reader-body{max-width:1440px;margin:auto;padding:35px 5vw 100px;display:grid;gap:22px}.reader-body>img{width:100%;display:block}.report-frame{width:100%;height:calc(100vh - 130px);border:0;background:#f4f1e9}.report-text{max-width:860px;margin:auto;background:#f4f1e9;color:#171817;padding:clamp(35px,6vw,90px)}.report-text h3{font-size:28px;margin:50px 0 15px}.report-text p{font-family:Georgia,"Songti SC",serif;line-height:2;font-size:16px;white-space:pre-line}.placeholder{min-height:65vh;display:grid;place-items:center;border:1px solid var(--line);text-align:center;color:var(--muted)}
@media(max-width:1050px){.resume-layout{grid-template-columns:190px 1fr}.resume-side{grid-column:2}.carousel{height:700px}.project-cover{width:460px}.vinyl{width:580px}.carousel-arrow.prev{left:5%}.carousel-arrow.next{right:5%}.contact{grid-template-columns:1fr;gap:60px}.contact-info{justify-self:start}}
@media(max-width:700px){.site-nav{height:56px}.site-nav nav a:nth-child(1),.site-nav nav a:nth-child(3){display:none}.hero{height:720px}.hero>img{object-position:58% center}.hero-photo{left:18%;width:31%}.hero-badge{left:60%;width:23%}.hero-controller{width:28%}.resume,.works,.reports,.contact{padding:90px 20px}.resume>h1{font-size:31px}.resume-layout{grid-template-columns:1fr}.identity{display:grid;grid-template-columns:120px 1fr;column-gap:22px}.portrait{grid-row:1/4}.identity h2{margin:0 0 14px}.identity dl{grid-column:2}.resume-qr,.qr-caption{display:none}.resume-side{grid-column:auto}.resume-group article{padding-right:0}.resume-group time{position:static;display:block;margin-bottom:7px}.works>h2,.reports>h2{font-size:48px}.carousel{height:500px;min-height:0}.vinyl{width:360px}.project-cover{width:295px;top:30%}.carousel-arrow{top:40%;width:48px;height:48px}.carousel-arrow.prev{left:0}.carousel-arrow.next{right:0}.project-meta{margin-top:0}.report-folder{aspect-ratio:.78}.folder-art{object-fit:cover;object-position:center}.report-cover{top:10%;width:40%;height:78%}.report-cover span{left:8px;bottom:8px;font-size:10px;padding:6px}.contact{min-height:650px}.contact h2{font-size:62px}.contact-info img{width:108px;height:108px}.edit-hotzone{display:none}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}}
@media(max-width:700px){.hero>img{object-position:35% center}}
.scroll-mark{font-size:11px}.report-paper small,.report-paper b{font-size:11px;letter-spacing:.05em;color:#607c4b}@media(max-width:700px){.report-cover span{font-size:11px}}

/* Motion system: desk objects are picked up, records leave sleeves, reports leave folders. */
.hero{--spot-x:50%;--spot-y:50%}.hero:before{content:"";position:absolute;inset:0;z-index:1;pointer-events:none;background:radial-gradient(420px circle at var(--spot-x) var(--spot-y),#ffffff18 0,#ffffff08 28%,transparent 72%);mix-blend-mode:screen;opacity:0;transition:opacity .35s}.hero.is-tracking:before{opacity:1}.hero:after{z-index:2}.hero-hit{--mx:0px;--my:0px;z-index:3;translate:var(--mx) var(--my);transition:translate .35s var(--ease),transform .45s var(--ease),filter .45s,border-color .3s,box-shadow .3s}.hero-hit:hover{translate:var(--mx) calc(var(--my) - 10px);box-shadow:inset 0 0 30px #fff1}.hero-badge:after{content:"";position:absolute;inset:0;background:linear-gradient(115deg,transparent 25%,#fff7 46%,transparent 61%);transform:translateX(-130%);transition:transform .7s var(--ease)}.hero-badge:hover:after{transform:translateX(130%)}.scroll-mark{z-index:4}.scene-dim{position:fixed;inset:0;z-index:120;background:#080909;opacity:0;pointer-events:none}.shared-photo{position:fixed;z-index:122;object-fit:cover;transform-origin:center;box-shadow:0 35px 80px #000c;will-change:transform,clip-path}.portrait.shared-target{opacity:0}.resume-layout.arriving .resume-main,.resume-layout.arriving .resume-side{animation:resume-arrive .55s var(--ease) both}.resume-layout.arriving .resume-side{animation-delay:.08s}@keyframes resume-arrive{from{opacity:.25;transform:translateY(26px);filter:blur(6px)}to{opacity:1;transform:none;filter:none}}
.project-slide{transition:transform .5s var(--ease),opacity .25s ease}.project-slide.exit-left{transform:translateX(-48%) rotate(-5deg);opacity:.15}.project-slide.exit-right{transform:translateX(48%) rotate(5deg);opacity:.15}.project-slide.enter-left{transform:translateX(-48%) rotate(-5deg);opacity:.15}.project-slide.enter-right{transform:translateX(48%) rotate(5deg);opacity:.15}.vinyl-shell{--gx:50%;--gy:35%;position:absolute;width:min(45vw,650px);aspect-ratio:1;left:50%;top:2%;transform:translateX(-50%);filter:drop-shadow(0 34px 26px #000b);transition:transform .55s var(--ease);will-change:transform}.vinyl-shell .vinyl{position:static;width:100%;height:100%;transform:none;filter:none;display:block}.vinyl-shell:after{content:"";position:absolute;inset:4%;border-radius:50%;pointer-events:none;background:radial-gradient(180px circle at var(--gx) var(--gy),#fff4 0,#fff1 25%,transparent 65%);mix-blend-mode:screen;opacity:.55}.project-slide:hover .vinyl-shell{transform:translateX(-50%) translateY(-76px) rotate(8deg)}.project-slide:hover .vinyl{transform:none}.project-slide.is-opening .vinyl-shell{transform:translateX(-50%) translateY(-90px) rotate(180deg)}.project-slide.is-opening .project-cover{transform:translateX(-50%) scale(1.035)}.carousel-arrow{--bx:0px;--by:0px;translate:var(--bx) var(--by);font-size:0;transition:translate .18s ease,background .2s,border-color .2s,transform .12s}.carousel-arrow svg{width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.carousel-arrow.is-pressed{transform:scale(.88)}
.report-folder{--folder-x:50%;--folder-y:40%;transform:perspective(1400px) rotateX(4deg) translateY(28px);transform-origin:center bottom;transition:transform .8s var(--ease)}.report-folder.in-view{transform:perspective(1400px) rotateX(0) translateY(0)}.report-folder:after{content:"";position:absolute;inset:3%;z-index:3;pointer-events:none;background:radial-gradient(380px circle at var(--folder-x) var(--folder-y),#fff6,transparent 66%);mix-blend-mode:screen;opacity:.2}.report-cover{z-index:2}.report-cover:hover{transform:translateY(-24px) rotate(-.7deg)}.report-folder.cover-hover .report-cover:not(:hover){filter:brightness(.55)}.report-cover.reinsert{animation:reinsert .38s var(--ease)}@keyframes reinsert{from{transform:translateY(-35px);filter:brightness(1.35)}to{transform:none;filter:none}}.reader{transform:none;clip-path:inset(100% 0 0);transition:clip-path .48s var(--ease),opacity .2s}.reader.open{clip-path:inset(0)}.reader.closing{clip-path:inset(0 0 100%)}.extract-clone{position:fixed;z-index:125;margin:0;pointer-events:none;overflow:hidden;box-shadow:0 45px 90px #000d;will-change:transform,border-radius}
@media(prefers-reduced-motion:reduce){.hero:before,.vinyl-shell:after,.report-folder:after{display:none}.report-folder{transform:none}.project-slide:hover .vinyl-shell{transform:translateX(-50%) translateY(-12px)}.report-cover:hover{transform:translateY(-6px)}}

/* Document reader: quiet archival controls and full-resolution pages. */
.reader header{min-height:84px;padding:14px clamp(20px,4vw,64px);background:#0b0d0df2;border-bottom:1px solid #ffffff18;box-shadow:0 18px 42px #0007}.reader-heading{display:grid;gap:5px;min-width:0}.reader header small{font-size:9px;letter-spacing:.12em;color:#9dff91}.reader header h2{font-family:Georgia,"Songti SC",serif;font-size:clamp(17px,1.6vw,23px);font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.reader header button{display:grid;grid-template-columns:auto 42px;align-items:center;gap:11px;padding:0;border:0;background:transparent;color:#f4f1e9}.reader header button span{font:600 9px/1 ui-monospace,monospace;letter-spacing:.16em;color:#8e908c;transition:color .2s}.reader header button svg{width:42px;height:42px;padding:11px;border:1px solid #ffffff50;border-radius:50%;fill:none;stroke:currentColor;stroke-width:1.5;transition:transform .28s var(--ease),background .2s,border-color .2s}.reader header button:hover span{color:#fff}.reader header button:hover svg{transform:rotate(90deg);background:#f4f1e9;color:#0b0d0d;border-color:#f4f1e9}.reader header button:active svg{transform:rotate(90deg) scale(.9)}.reader-body{max-width:1320px;padding-top:28px;gap:18px}.reader-body>img{background:#fff;image-rendering:auto;box-shadow:0 20px 55px #0009}@media(max-width:700px){.reader header{min-height:70px;padding:10px 14px}.reader header button{grid-template-columns:38px}.reader header button span{display:none}.reader header button svg{width:38px;height:38px}.reader-body{padding:14px 0 70px;gap:10px}.reader-body>img{box-shadow:none}}

/* Immersive reader: artwork uses the viewport, not a narrow portfolio column. */
.reader-body{width:100%;max-width:none;padding:18px clamp(10px,1.5vw,24px) 100px;gap:clamp(8px,1vw,16px)}.reader-body>img{width:100%;max-width:none;height:auto}.reader-body .placeholder{margin:0 auto;width:min(100%,1320px)}@media(max-width:700px){.reader-body{padding:8px 0 60px;gap:6px}}

/* Editorial section titles and spatial project carousel. */
.section-title{position:relative;display:inline-grid;margin:0 0 38px}.section-title h2{font-size:clamp(40px,5vw,72px);line-height:.95;letter-spacing:-.03em;margin:0;font-weight:600}.section-title>span{position:absolute;right:-72px;bottom:-18px;color:var(--blue);font:italic 500 clamp(19px,2vw,30px)/1 "Segoe Print","Bradley Hand",cursive;transform:rotate(-7deg);white-space:nowrap}.carousel-peek{position:absolute;z-index:6;top:19%;width:min(18vw,250px);padding:0;border:0;background:transparent;color:#9a9b98;cursor:pointer;opacity:.52;transition:opacity .3s var(--ease),transform .45s var(--ease),filter .3s}.carousel-peek img{display:block;width:100%;aspect-ratio:1;object-fit:contain;filter:drop-shadow(0 25px 28px #000b)}.carousel-peek span{display:block;margin-top:12px;font:600 9px/1 ui-monospace,monospace;letter-spacing:.12em}.carousel-peek:hover{opacity:.9;transform:translateY(-12px) rotate(4deg)}.peek-prev{left:1.5%}.peek-next{right:1.5%}.project-meta{align-items:flex-start}.project-meta>span{display:grid;gap:7px}.project-meta strong{font-size:14px;font-weight:500}.project-meta small{font-size:13px;color:#a9aaa5}.report-cover{top:13%;width:35%;height:74%;box-shadow:0 16px 30px #0007}.report-yanyun{left:10.5%}.report-dahua{right:10.5%}.report-cover img{object-fit:contain;background:#fff}.report-folder:after{z-index:3}@media(max-width:700px){.section-title{margin-bottom:30px}.section-title h2{font-size:42px}.section-title>span{right:-34px;bottom:-16px;font-size:19px}.carousel-peek{display:none}.project-meta small{font-size:11px}.report-cover{top:12%;width:37%;height:76%}.report-yanyun{left:8%}.report-dahua{right:8%}}

/* Hero scan cursor: a spatial tool for exploring the desk. */
.hero-cursor,.hero-cursor-trail{display:none;position:absolute;left:0;top:0;z-index:30;pointer-events:none;opacity:0;will-change:transform}.hero-cursor{width:72px;height:72px;color:#f7f4ec;filter:drop-shadow(0 5px 12px #000a);transition:opacity .16s,color .2s,filter .2s}.hero-cursor svg{display:block;width:100%;height:100%;overflow:visible}.hero-cursor circle,.hero-cursor path{fill:none;stroke:currentColor;stroke-width:1}.hero-cursor>svg>circle:first-child{stroke-dasharray:42 13;transform-origin:center;animation:cursor-orbit 7s linear infinite}.hero-cursor .cursor-core{fill:currentColor;stroke:none}.hero-cursor span{position:absolute;left:57px;top:53px;padding:5px 7px;background:#0b0d0dd9;color:currentColor;font:700 10px/1 ui-monospace,monospace;letter-spacing:.13em;white-space:nowrap;transform:rotate(-3deg);transition:transform .25s var(--ease),background .2s}.hero-cursor-trail{z-index:29;width:116px;height:116px;border:1px solid #ffffff30;border-radius:50%;mix-blend-mode:screen;transition:opacity .25s}.hero-cursor-trail:before,.hero-cursor-trail:after{content:"";position:absolute;background:#ffffff24}.hero-cursor-trail:before{width:1px;height:12px;left:57px;top:-6px}.hero-cursor-trail:after{height:1px;width:12px;left:-6px;top:57px}.hero.cursor-visible .hero-cursor{opacity:1}.hero.cursor-visible .hero-cursor-trail{opacity:.7}.hero.cursor-lock .hero-cursor{color:#8fff8d;filter:drop-shadow(0 0 12px #8fff8d88)}.hero.cursor-lock .hero-cursor svg{transform:scale(1.18)}.hero.cursor-lock .hero-cursor span{background:#8fff8d;color:white;transform:translate(4px,-4px) rotate(-3deg)}.hero.cursor-pulse .hero-cursor svg{animation:cursor-pulse .36s var(--ease)}@keyframes cursor-orbit{to{transform:rotate(360deg)}}@keyframes cursor-pulse{0%{transform:scale(1.18)}45%{transform:scale(.68)}100%{transform:scale(1.18)}}@media(pointer:fine) and (min-width:701px){.hero,.hero a,.hero button{cursor:none}.hero-cursor,.hero-cursor-trail{display:block}}@media(prefers-reduced-motion:reduce){.hero-cursor,.hero-cursor-trail{display:none!important}.hero,.hero a,.hero button{cursor:auto!important}}
.carousel-peek span{font-size:11px}.folder-open .folder-cover{animation:folder-cover-hide .86s forwards}@keyframes folder-cover-hide{0%,72%{opacity:1;visibility:visible}100%{opacity:0;visibility:hidden}}
@media(max-width:700px){.reports{overflow:clip}}

/* Portfolio 2.0 — Retro Computer / CRT hero */
html{background:#0b0b0b}
body{background:#0b0b0b;color:var(--ink);scrollbar-color:var(--phosphor-muted) #090a09}
::selection{background:var(--phosphor);color:#061006}
body.is-loading{overflow:hidden}
.page-progress{height:2px;background:rgba(143,255,141,.08)}
.page-progress i{background:var(--phosphor);box-shadow:0 0 12px rgba(143,255,141,.32)}
.site-nav{
  top:22px;left:3vw;right:3vw;width:auto;height:64px;padding:0 28px;
  border:1px solid rgba(143,255,141,.26);background:rgba(7,9,7,.76);
  box-shadow:inset 0 0 0 1px rgba(143,255,141,.025),0 18px 55px rgba(0,0,0,.38);
  backdrop-filter:blur(14px);clip-path:polygon(0 0,100% 0,100% calc(100% - 7px),calc(100% - 7px) 100%,0 100%);
}
.site-nav:before{content:"";width:22px;height:18px;margin-right:18px;background:radial-gradient(circle,var(--phosphor) 1.4px,transparent 1.7px) 0 0/7px 7px;opacity:.8}
.site-nav:after{content:"";width:8px;height:8px;margin-left:18px;background:var(--phosphor);box-shadow:0 0 12px rgba(143,255,141,.4)}
.wordmark{margin-right:auto;font-family:"WZ Pixel",monospace;font-size:25px;letter-spacing:.04em;color:var(--phosphor);text-shadow:0 0 12px rgba(143,255,141,.2)}
.site-nav nav{gap:clamp(20px,3.2vw,54px);font-size:15px;color:#c9d3c1}
.site-nav nav a{position:relative;border:0;padding:8px 0;transition:color .18s,transform .18s}
.site-nav nav a:after{content:"";position:absolute;left:0;right:100%;bottom:2px;height:1px;background:var(--phosphor);transition:right .24s var(--ease)}
.site-nav nav a:hover,.site-nav nav a:focus-visible{color:var(--phosphor);transform:translateY(-1px)}
.site-nav nav a:hover:after,.site-nav nav a:focus-visible:after{right:0}

.hero.hero-v2{
  height:100svh;min-height:720px;isolation:isolate;overflow:hidden;
  background:
    radial-gradient(70% 80% at 72% 62%,rgba(113,139,77,.1),transparent 64%),
    linear-gradient(180deg,#0a0b0a,#090a09 78%,#0b0b0b);
}
.hero.hero-v2:before{content:"";position:absolute;z-index:-2;inset:0;pointer-events:none;opacity:.34;background-image:radial-gradient(rgba(143,255,141,.11) .7px,transparent .8px);background-size:4px 4px;mask-image:linear-gradient(to bottom,transparent 6%,#000 35%,#000 90%,transparent)}
.hero.hero-v2:after{content:"";position:absolute;z-index:20;inset:0;pointer-events:none;box-shadow:inset 0 -100px 100px #0b0b0b,inset 0 0 180px #0008;background:linear-gradient(transparent 50%,rgba(0,0,0,.035) 50%);background-size:100% 4px;mix-blend-mode:soft-light}
.hero-v2-grid{position:absolute;z-index:-1;inset:13% 3vw 4%;opacity:.2;background-image:linear-gradient(rgba(143,255,141,.09) 1px,transparent 1px),linear-gradient(90deg,rgba(143,255,141,.09) 1px,transparent 1px);background-size:24px 24px;mask-image:linear-gradient(90deg,#000,transparent 82%)}
.hero-v2-status{position:absolute;z-index:4;left:5.4vw;top:31%;display:grid;gap:4px;padding:12px 18px;border-left:1px solid rgba(143,255,141,.7);border-right:1px solid rgba(143,255,141,.7);font:23px/1 "WZ Pixel",monospace;color:var(--phosphor-muted);letter-spacing:.05em}
.hero-v2-status:before,.hero-v2-status:after{content:"";position:absolute;width:10px;height:1px;background:rgba(143,255,141,.7);top:0}.hero-v2-status:before{left:0}.hero-v2-status:after{right:0}
.hero-v2-status b{font-weight:400;color:var(--phosphor)}
.hero-v2-copy{position:absolute;z-index:10;left:5.4vw;bottom:9vh;width:min(43vw,720px);pointer-events:none}
.hero-v2-copy h1{margin:0;font:400 clamp(78px,9vw,156px)/.72 "WZ Pixel",monospace;letter-spacing:.025em;color:var(--phosphor);text-shadow:0 0 16px rgba(143,255,141,.15),0 2px 0 #20311c}
.hero-v2-copy p{margin:38px 0 18px;font:26px/1.1 "WZ Pixel",monospace;letter-spacing:.05em;color:#9fb492}
.hero-v2-copy a{pointer-events:auto;display:inline-flex;align-items:center;gap:16px;padding:9px 15px;border:1px solid rgba(143,255,141,.38);font:25px/1 "WZ Pixel",monospace;color:var(--phosphor);transition:background .2s,color .2s,transform .2s}
.hero-v2-copy a svg{width:28px;fill:none;stroke:currentColor;stroke-width:1.2}.hero-v2-copy a:hover{background:var(--phosphor);color:#0b0b0b;transform:translateX(5px)}
.crt-stage{position:absolute;z-index:6;right:3.6vw;top:17vh;width:min(56vw,980px);height:min(72vh,790px);touch-action:none;user-select:none}
#crtCanvas{display:block;width:100%;height:100%;filter:drop-shadow(0 38px 28px rgba(0,0,0,.72))}
.crt-loader{position:absolute;inset:0;display:grid;place-content:center;gap:14px;text-align:center;font:19px/1 "WZ Pixel",monospace;color:var(--phosphor);transition:opacity .35s}
.crt-loader i{width:180px;height:2px;background:rgba(143,255,141,.16);overflow:hidden}.crt-loader i:after{content:"";display:block;width:38%;height:100%;background:var(--phosphor);animation:crt-load 1.1s ease-in-out infinite}
.crt-loader.is-done{opacity:0;pointer-events:none}@keyframes crt-load{from{transform:translateX(-110%)}to{transform:translateX(300%)}}
.crt-fallback{position:absolute;left:20%;right:12%;top:22%;bottom:26%;transform:perspective(900px) rotateY(-8deg);filter:drop-shadow(0 0 25px rgba(143,255,141,.15))}.crt-fallback img{width:100%;height:100%;object-fit:cover}
.screen-switch-control{position:absolute;z-index:15;right:8%;bottom:7%;display:flex;gap:14px;padding:8px 10px;border:1px solid rgba(143,255,141,.28);background:rgba(8,10,8,.78);color:var(--phosphor);font:19px/1 "WZ Pixel",monospace;letter-spacing:.05em;cursor:pointer;transition:border-color .2s,background .2s,transform .2s}
.screen-switch-control:hover{border-color:var(--phosphor);background:#101810;transform:translateY(-2px)}.screen-switch-control b{font-weight:400;color:#f2f2ed}
.screen-switch-flash{position:absolute;z-index:14;left:17%;right:10%;top:18%;bottom:21%;pointer-events:none;opacity:0;background:linear-gradient(transparent 48%,rgba(143,255,141,.5) 50%,transparent 52%),repeating-linear-gradient(0deg,transparent 0 3px,rgba(255,255,255,.18) 4px);mix-blend-mode:screen;transform:scaleY(.02);filter:blur(1px)}
.screen-switch-flash.is-switching{animation:screen-signal .42s steps(2,end)}
@keyframes screen-signal{0%{opacity:0;transform:scaleY(1)}18%{opacity:.85;transform:scaleY(.025)}34%{opacity:1;background:#fff;transform:scaleY(.012)}52%{opacity:.9;transform:scaleY(.08)}74%{opacity:.45;transform:scaleY(1)}100%{opacity:0;transform:scaleY(1)}}
.hero-stickers{position:absolute;z-index:8;inset:0;pointer-events:none}
.sticker{position:absolute;width:clamp(62px,6vw,120px);filter:drop-shadow(0 10px 8px rgba(0,0,0,.65));transform-origin:center;animation:sticker-breathe 6s ease-in-out infinite alternate}
.s1{left:48%;top:19%;transform:rotate(-7deg)}.s2{left:45%;top:53%;width:clamp(84px,8vw,142px);animation-delay:-1.8s}.s3{right:4.5%;top:28%;transform:rotate(9deg);animation-delay:-3.1s}.s4{right:7%;bottom:10%;width:clamp(70px,7vw,130px);transform:rotate(-6deg);animation-delay:-.7s}.s5{left:49%;bottom:4%;width:clamp(68px,6vw,118px);animation-delay:-4.3s}.s6{right:1.4%;top:51%;width:clamp(55px,5vw,96px);animation-delay:-2.5s}
@keyframes sticker-breathe{0%{translate:0 0;rotate:-1deg}100%{translate:0 -5px;rotate:1.2deg}}
.hero-v2 .scroll-mark{z-index:22;right:4vw;bottom:26px;color:#85947a;font-family:"WZ Pixel",monospace;font-size:19px;font-weight:400}

.boot-v2{position:fixed;z-index:1000;inset:0;display:grid;place-items:center;background:#080908;color:var(--phosphor);overflow:hidden;transition:opacity .18s linear,visibility .18s}
.boot-v2:before{content:"";position:absolute;inset:0;background:linear-gradient(transparent 50%,rgba(143,255,141,.035) 50%);background-size:100% 4px;pointer-events:none}
.boot-v2-grid{position:absolute;inset:5%;opacity:.19;background-image:linear-gradient(rgba(143,255,141,.12) 1px,transparent 1px),linear-gradient(90deg,rgba(143,255,141,.12) 1px,transparent 1px);background-size:24px 24px;mask-image:radial-gradient(circle,#000,transparent 72%)}
.boot-v2-terminal{position:relative;width:min(760px,82vw);padding:46px 52px 38px;border:1px solid rgba(143,255,141,.32);background:rgba(8,11,8,.88);box-shadow:0 0 80px rgba(70,120,56,.08),inset 0 0 80px rgba(143,255,141,.025);clip-path:polygon(0 0,calc(100% - 16px) 0,100% 16px,100% 100%,16px 100%,0 calc(100% - 16px))}
.boot-v2-terminal>span{font:20px/1 "WZ Pixel",monospace;letter-spacing:.12em;color:#79926d}.boot-v2-terminal>strong{display:block;margin:26px 0 38px;font:400 clamp(70px,10vw,132px)/.7 "WZ Pixel",monospace;letter-spacing:.03em;text-shadow:0 0 18px rgba(143,255,141,.18)}
.boot-caret{animation:caret .62s steps(1) infinite}@keyframes caret{50%{opacity:0}}
.boot-v2-readout{display:flex;justify-content:space-between;margin-bottom:10px;font:20px/1 "WZ Pixel",monospace;color:#a5b39d}.boot-v2-readout b{font-weight:400}.boot-v2-readout em{font-style:normal;color:var(--phosphor)}
.boot-v2-meter{height:8px;border:1px solid rgba(143,255,141,.3);padding:2px}.boot-v2-meter i{display:block;width:100%;height:100%;background:var(--phosphor);box-shadow:0 0 14px rgba(143,255,141,.35);transform:scaleX(var(--boot-progress,0));transform-origin:left;transition:transform .12s linear}
.boot-v2-terminal small{display:block;margin-top:24px;font:18px/1.15 "WZ Pixel",monospace;color:#64765d;letter-spacing:.06em}
.boot-v2-ready{position:absolute;font:400 min(30vw,430px)/1 "WZ Pixel",monospace;opacity:0;transform:scaleX(.2);text-shadow:0 0 24px rgba(143,255,141,.5)}
.boot-v2.is-ready .boot-v2-terminal{animation:boot-collapse .48s var(--ease) forwards}.boot-v2.is-ready .boot-v2-ready{animation:boot-ready .48s var(--ease) both}
.boot-v2.is-done{opacity:0;visibility:hidden}
@keyframes boot-collapse{0%{opacity:1;transform:scaleY(1)}60%{opacity:1;transform:scaleY(.012)}100%{opacity:0;transform:scaleY(.012) scaleX(.1)}}@keyframes boot-ready{0%,42%{opacity:0;transform:scaleX(.2)}62%{opacity:1;transform:scaleX(1.08)}100%{opacity:0;transform:scaleX(1)}}
.boot-skip{position:absolute;right:3vw;bottom:3vw;border:1px solid rgba(143,255,141,.28);background:transparent;color:#8da384;padding:8px 14px;font:18px/1 "WZ Pixel",monospace}

.cursor-v2{position:fixed;z-index:1200;left:0;top:0;display:none;pointer-events:none;transform:translate3d(calc(var(--cursor-x, -50px) - 3px),calc(var(--cursor-y, -50px) - 2px),0);opacity:0;transition:opacity .12s}
.cursor-v2.is-visible{opacity:1}.cursor-pixel{display:block;width:25px;height:32px;background:var(--phosphor);clip-path:polygon(0 0,0 82%,22% 64%,38% 100%,53% 92%,38% 58%,70% 58%);filter:drop-shadow(0 0 6px rgba(143,255,141,.35))}
.cursor-v2-label{position:absolute;left:27px;top:24px;padding:3px 6px;border:1px solid rgba(143,255,141,.28);background:#0a0d0ae8;color:var(--phosphor);font:16px/1 "WZ Pixel",monospace;white-space:nowrap;opacity:0;transform:translate(-4px,-4px);transition:.16s var(--ease)}
.cursor-v2.is-active .cursor-pixel{clip-path:polygon(35% 0,54% 0,54% 34%,65% 34%,65% 18%,80% 18%,80% 62%,68% 62%,68% 83%,28% 83%,28% 69%,14% 69%,14% 34%,28% 34%,28% 52%,35% 52%);transform:scale(.92)}
.cursor-v2.is-active .cursor-v2-label{opacity:1;transform:none}.cursor-v2.is-pressed{transform:translate3d(calc(var(--cursor-x, -50px) - 3px),calc(var(--cursor-y, -50px) - 2px),0) scale(.78)}
@media(pointer:fine){body,body a,body button,.crt-stage{cursor:none}.cursor-v2{display:block}}

/* Carry the new phosphor token through the retained archive. */
.resume>h1,.identity h2,.identity dt,.resume-group h3,.resume-group p b,.reader header small,.section-title>span,.project-meta b,.contact h2 em,.contact-info a{color:var(--phosphor)}
.resume,.works,.gaming,.ai-coding,.reports,.thinking,.contact{border-color:rgba(143,255,141,.14)}
.resume{background:linear-gradient(180deg,#0f1210,#0b0b0b 38%)}
.resume>h1{font-family:"WZ Pixel",monospace;letter-spacing:.02em}
.section-title>span{font-family:"WZ Pixel",monospace;font-style:normal;transform:rotate(-3deg);letter-spacing:.03em}

@media(max-width:980px){
  .site-nav{top:10px;left:12px;right:12px;height:58px;padding:0 16px}.site-nav:before,.site-nav:after{display:none}.wordmark{font-size:22px}.site-nav nav{gap:14px;font-size:12px}
  .hero.hero-v2{min-height:760px}.crt-stage{right:-8vw;top:17vh;width:72vw;height:58vh}.hero-v2-copy{left:5vw;bottom:8vh}.hero-v2-copy h1{font-size:clamp(70px,12vw,118px)}.hero-v2-status{top:22%}
}
@media(max-width:700px){
  .site-nav nav a:nth-child(1),.site-nav nav a:nth-child(3){display:block}.site-nav nav a:nth-child(4),.site-nav nav a:nth-child(5),.site-nav nav a:nth-child(6),.site-nav nav a:nth-child(7){display:none}
  .hero.hero-v2{height:100svh;min-height:700px}.hero-v2-grid{inset:12% 12px 3%}.hero-v2-status{left:20px;top:14%;font-size:17px}.crt-stage{right:-17vw;top:18vh;width:116vw;height:54vh}.hero-v2-copy{left:20px;bottom:7vh;width:86vw}.hero-v2-copy h1{font-size:clamp(64px,21vw,98px);line-height:.72}.hero-v2-copy p{margin:22px 0 12px;font-size:20px}.hero-v2-copy a{font-size:20px}.screen-switch-control{right:18%;bottom:8%;font-size:16px}.sticker{transform:scale(.72)}.s2,.s4,.s6{display:none}.hero-v2 .scroll-mark{display:none}
  .boot-v2-terminal{padding:32px 26px}.boot-v2-terminal>strong{font-size:clamp(64px,20vw,96px);margin-bottom:30px}.boot-v2-readout{font-size:16px}.boot-v2-terminal small{font-size:15px}
}
@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important;transition-duration:.01ms!important}
  .sticker{animation:none}.cursor-v2{display:none!important}body,body a,body button,.crt-stage{cursor:auto}
}

/* Hero object layers: the supplied PNGs become tangible desk objects. */
.hero-object{
  --mx:0px;--my:0px;--lift:0px;--turn:0deg;--scale:1;
  position:absolute;z-index:4;padding:0;border:0;background:transparent;color:inherit;
  display:block;cursor:pointer;translate:var(--mx) calc(var(--my) + var(--lift));
  transform:rotate(var(--turn)) scale(var(--scale));transform-origin:50% 70%;
  transition:translate .42s var(--ease),transform .42s var(--ease),filter .38s,opacity .25s;
  will-change:translate,transform,filter;
}
.hero-object img{display:block;width:100%;height:100%;object-fit:contain;pointer-events:none;transition:opacity .22s ease,filter .42s var(--ease)}
.hero-object.hero-match img{opacity:0}
.hero-object.hero-added img{opacity:.96;filter:drop-shadow(0 10px 11px #0009)}
.hero-object:hover,.hero-object:focus-visible{--lift:-11px;--scale:1.028;filter:drop-shadow(0 24px 22px #000c)}
.hero-object:hover img,.hero-object:focus-visible img{opacity:1;filter:drop-shadow(0 22px 18px #000b)}
.hero-object:active{--lift:-5px;--scale:.985;transition-duration:.1s}
.hero-photo{left:23.4%;top:35%;width:18.8%;height:45.5%;--turn:-5deg;z-index:7}
.hero-photo:hover{--turn:-2deg}
.hero-badge{left:64%;top:31%;width:17.2%;height:51.5%;--turn:-2deg;z-index:7}
.hero-badge:hover{--turn:1deg}
.hero-controller{right:-1.1%;top:35%;width:20.2%;height:40%;--turn:1deg;z-index:6}
.hero-controller:hover{--turn:-3deg;--lift:-8px}
.hero-cassette{left:-.8%;top:-1.8%;width:17.4%;height:24%;--turn:-7deg}
.hero-cassette:hover{--turn:-2deg}
.hero-bookmark{left:22%;top:1.2%;width:11.8%;height:20%;--turn:5deg}
.hero-bookmark:hover{--turn:1deg}
.hero-note-works{left:25.5%;top:76%;width:14%;height:28%;--turn:-6deg;z-index:5}
.hero-note-works:hover{--turn:-2deg}
.hero-note-empathy{left:12%;top:66%;width:11%;height:28%;--turn:-3deg;z-index:5}
.hero-note-empathy:hover{--turn:2deg}
.hero-badge:after{z-index:2;pointer-events:none}
.hero-object.is-playing{animation:tape-pick .72s var(--ease)}
.hero-object.is-noting{animation:note-tap .55s var(--ease)}
@keyframes tape-pick{0%,100%{translate:var(--mx) var(--my)}35%{translate:var(--mx) calc(var(--my) - 18px);transform:rotate(-1deg) scale(1.04)}65%{translate:var(--mx) calc(var(--my) - 12px);transform:rotate(-5deg) scale(1.02)}}
@keyframes note-tap{0%,100%{transform:rotate(-3deg)}45%{transform:rotate(1deg) scale(.94)}}
@media(max-width:700px){
  .hero-object.hero-added,.hero-cassette,.hero-bookmark,.hero-note-works{display:none}
  .hero-object.hero-match img{display:none}
  .hero-object{filter:none!important}
  .hero-photo{left:18%;top:36%;width:31%;height:44%}
  .hero-badge{left:60%;top:43%;width:23%;height:38%}
  .hero-controller{right:0;top:39%;width:28%;height:34%}
}
@media(prefers-reduced-motion:reduce){.hero-object{translate:none;transform:none!important;filter:none!important}.hero-object.hero-match img{opacity:0}.hero-object.hero-added img{opacity:.96}}

/* Physical report folder: closed cover, hinge opening, then interactive pages. */
.report-folder{perspective:1800px;transform-style:preserve-3d;overflow:visible}.folder-cover{position:absolute;inset:5% 3.5% 4%;z-index:8;display:flex;flex-direction:column;align-items:flex-start;padding:clamp(28px,5vw,76px);border:1px solid #ffffff30;background:linear-gradient(128deg,#eeeae0f5 0%,#d8d3c8f2 48%,#f2eee5f7 100%);color:#111312;text-align:left;cursor:pointer;transform-origin:4% 50%;box-shadow:0 35px 70px #000b,inset 0 0 0 12px #ffffff2e;transition:transform .88s cubic-bezier(.16,1,.3,1),filter .35s,box-shadow .5s}.folder-cover:before{content:"";position:absolute;inset:3%;border:1px solid #191b1a33;pointer-events:none}.folder-cover:after{content:"";position:absolute;inset:0;background:linear-gradient(105deg,transparent 20%,#fff8 44%,transparent 65%);transform:translateX(-120%);transition:transform .8s var(--ease);pointer-events:none}.folder-cover:hover:after{transform:translateX(120%)}.folder-cover>span{font:700 11px/1 ui-monospace,monospace;letter-spacing:.16em;color:#8fff8d}.folder-cover>strong{margin:auto 0;font-size:clamp(42px,7vw,108px);line-height:.8;letter-spacing:-.04em;font-weight:650}.folder-cover>small{font:700 11px/1 ui-monospace,monospace;letter-spacing:.14em}.folder-cover>i{position:absolute;right:5%;top:8%;width:54px;height:54px;border:1px solid #171918;border-radius:50%}.folder-cover>i:before,.folder-cover>i:after{content:"";position:absolute;background:#171918;left:50%;top:50%;transform:translate(-50%,-50%)}.folder-cover>i:before{width:20px;height:1px}.folder-cover>i:after{width:1px;height:20px}.folder-closed .report-cover{opacity:.08;transform:translateY(18px) scale(.94);pointer-events:none}.folder-open .folder-cover{transform:rotateY(-158deg) translateX(-4%);filter:brightness(.62);box-shadow:12px 26px 50px #0008;pointer-events:none}.folder-open .report-cover{opacity:1;pointer-events:auto;transition-delay:.32s}.folder-open .report-dahua{transition-delay:.42s}.folder-open .report-cover:hover{--page-rx:0deg;--page-ry:0deg;z-index:6;transform:translateY(-25px) rotateX(var(--page-rx)) rotateY(var(--page-ry)) scale(1.025);box-shadow:0 42px 65px #000c}.folder-open.cover-hover .report-cover:not(:hover){opacity:.48;filter:brightness(.48) saturate(.7);transform:translateY(8px) scale(.985)}@media(max-width:700px){.folder-cover{inset:4% 1% 3%;padding:26px 22px;transform-origin:50% 4%}.folder-cover>strong{font-size:42px;line-height:.86}.folder-open .folder-cover{transform:rotateX(105deg) translateY(-4%)}.folder-open .report-cover:hover{transform:translateY(-10px) scale(1.015)}}@media(prefers-reduced-motion:reduce){.folder-cover{transition-duration:.01ms}.folder-open .folder-cover{opacity:0;transform:none}.folder-open .report-cover{transition-delay:0s}}

/* Live WebGL project label */
.project-live{position:absolute;z-index:5;left:50%;top:calc(34% + min(36vw,520px) - 42px);transform:translateX(calc(-50% + min(18vw,260px) - 82px));padding:8px 11px;background:#8fff8d;color:#fff;font:700 10px/1 ui-monospace,monospace;letter-spacing:.1em;pointer-events:none;transition:transform .35s var(--ease),background-color .25s}
.project-slide:hover .project-live{transform:translateX(calc(-50% + min(18vw,260px) - 82px)) translateY(12px);background:#8fff8d}
@media(max-width:700px){.project-live{top:calc(31% + 70vw - 36px);transform:translateX(calc(-50% + 35vw - 72px));font-size:8px}.project-slide:hover .project-live{transform:translateX(calc(-50% + 35vw - 72px)) translateY(10px)}}

/* Player archive terminal */
.gaming{max-width:none;margin:auto;padding:clamp(100px,10vw,170px) clamp(24px,6vw,100px);border-top:1px solid var(--line);overflow:hidden;background:radial-gradient(ellipse at 50% 42%,#17191a 0,#0b0d0d 62%)}
.gaming-title{max-width:1600px;margin:0 auto 58px}.gaming-terminal{max-width:1500px;margin:auto}.crt{width:min(100%,1050px);margin:auto;perspective:1400px}.crt-casing{position:relative;padding:34px 38px 24px;border-radius:24px 24px 34px 34px;background:linear-gradient(145deg,#d9d2c4 0%,#aaa396 47%,#817b71 100%);box-shadow:0 48px 70px #000b,inset 2px 2px 2px #fff9,inset -5px -6px 12px #4d4943;transform:rotateX(1.2deg)}
.crt-brand{height:26px;display:flex;align-items:center;justify-content:space-between;color:#242523;font:700 10px/1 ui-monospace,monospace;letter-spacing:.13em}.crt-brand b{font-size:13px}.crt-screen-wrap{padding:25px;border-radius:26px;background:#252726;box-shadow:inset 0 5px 14px #000,inset 0 -2px 2px #ffffff24}.crt-screen{position:relative;min-height:520px;overflow:hidden;border-radius:44px/32px;padding:clamp(30px,5vw,68px);background:radial-gradient(ellipse at center,#25251f 0%,#121412 68%,#090a09 100%);color:#f3ead2;box-shadow:inset 0 0 70px #000,inset 0 0 16px #8fff8d4f;isolation:isolate}
.crt-screen:before{content:"";position:absolute;inset:0;z-index:5;pointer-events:none;opacity:.13;background:repeating-linear-gradient(0deg,transparent 0 3px,#000 4px 5px)}.crt-screen:after{content:"";position:absolute;z-index:6;left:5%;right:5%;top:50%;height:2px;background:#fff4cc;box-shadow:0 0 14px 4px #8fff8d;opacity:0;transform:scaleX(0);pointer-events:none}.crt.is-switching .crt-screen:after{animation:crt-shut .62s cubic-bezier(.16,1,.3,1)}
@keyframes crt-shut{0%{opacity:0;transform:scaleX(1) scaleY(220)}28%{opacity:1;transform:scaleX(1) scaleY(1)}63%{opacity:1;transform:scaleX(.04) scaleY(1)}100%{opacity:0;transform:scaleX(0) scaleY(1)}}
.crt-idle{min-height:380px;display:flex;flex-direction:column;justify-content:center;align-items:flex-start;max-width:720px}.crt-idle small,.game-entry small{font:700 10px/1 ui-monospace,monospace;letter-spacing:.15em;color:#aaff9f}.crt-idle h3{font:600 clamp(42px,6vw,78px)/.92 Georgia,"Times New Roman",serif;letter-spacing:-.035em;margin:36px 0 22px;color:#f4f0e7}.crt-idle p{margin:0;color:#c8bea8;font-size:15px}.crt-idle b{margin-top:58px;font:700 11px/1 ui-monospace,monospace;letter-spacing:.14em;color:#8fff8d}
.game-entry{position:relative;z-index:2;animation:screen-resolve .5s cubic-bezier(.16,1,.3,1)}@keyframes screen-resolve{from{opacity:0;filter:blur(8px);clip-path:inset(49% 0)}to{opacity:1;filter:none;clip-path:inset(0)}}.game-entry-head{display:grid;grid-template-columns:1fr auto;gap:24px;align-items:start;padding-bottom:22px;border-bottom:1px solid #d9c89a4d}.game-entry h3{margin:12px 0 5px;font:600 clamp(32px,4.4vw,62px)/1.04 Georgia,"Songti SC",serif;letter-spacing:-.03em;color:#f4f0e7}.game-entry-meta{font:700 11px/1.5 ui-monospace,monospace;color:#aaff9f;text-align:right;letter-spacing:.08em}.game-entry-summary{max-width:76ch;margin:24px 0;color:#ded4bd;font:15px/1.9 "Alibaba PuHuiTi 3.0","Source Han Sans SC","Microsoft YaHei",sans-serif}.game-entry-grid{display:grid;grid-template-columns:1.08fr .92fr;gap:38px}.game-entry-grid h4{margin:0 0 14px;color:#8fff8d;font:700 10px/1 ui-monospace,monospace;letter-spacing:.14em}.game-entry-grid ul{padding:0;margin:0;list-style:none}.game-entry-grid li{position:relative;padding:7px 0 7px 18px;color:#f0e8d5;font-size:13px;line-height:1.65}.game-entry-grid li:before{content:"";position:absolute;left:0;top:15px;width:7px;height:2px;background:#8fff8d}.game-observation{margin:0;padding:20px;background:#080a09aa;color:#dcd0b8;font:14px/1.75 Georgia,"Songti SC",serif;box-shadow:inset 0 0 0 1px #fff1c829}
.crt-deck{position:relative;min-height:86px;display:flex;align-items:center;justify-content:center}.cartridge-port{width:min(48%,430px);height:45px;padding:9px 18px 0;background:#292a28;color:#a7a294;border-radius:2px 2px 9px 9px;box-shadow:inset 0 9px 12px #050505,inset 0 -1px #fff2;text-align:center;font:700 9px/1 ui-monospace,monospace;letter-spacing:.14em}.cartridge-port.loaded{color:#8fff8d;box-shadow:inset 0 9px 12px #050505,inset 0 -1px #fff2,0 0 18px #8fff8d24}.crt-controls{position:absolute;right:10px;display:flex;align-items:center;gap:9px}.crt-controls button{height:34px;min-width:52px;border:0;border-radius:4px;background:#5b5953;color:#e6dfd2;box-shadow:0 3px 5px #0007,inset 0 1px #fff4;font:700 9px ui-monospace,monospace;letter-spacing:.08em;cursor:pointer}.crt-controls button:hover{background:#3c3d3b}.crt-controls svg{width:16px;fill:none;stroke:currentColor;stroke-width:1.7}.crt-light{position:absolute;left:15px;width:9px;height:9px;border-radius:50%;background:#8fff8d;box-shadow:0 0 8px #8fff8d}
.cartridge-area{position:relative;margin-top:70px;padding-inline:54px}.cartridge-area>p{text-align:center;margin:28px 0 0;color:#716f68;font:700 9px/1.6 ui-monospace,monospace;letter-spacing:.12em}.cartridge-area>p span{color:#b8b5ad}.cartridge-rack{display:flex;gap:clamp(10px,1.1vw,17px);align-items:flex-end;overflow-x:auto;overscroll-behavior-inline:contain;scroll-snap-type:x proximity;scroll-behavior:smooth;scrollbar-width:none;padding:18px 12px 22px;border-bottom:20px solid #252523;box-shadow:0 25px 35px #0009,inset 0 -2px #ffffff1a}.cartridge-rack::-webkit-scrollbar{display:none}.game-cartridge{--cart:#8fff8d;position:relative;flex:0 0 clamp(136px,10.8vw,164px);min-width:0;height:220px;padding:17px 12px 14px;border:0;border-radius:12px 12px 5px 5px;background:linear-gradient(110deg,#4b4c49,#242524 68%);color:#171817;box-shadow:0 18px 25px #0009,inset 2px 1px #ffffff2e,inset -3px -3px 5px #090909;cursor:pointer;scroll-snap-align:center;transform-origin:50% 100%;transition:transform .35s cubic-bezier(.16,1,.3,1),filter .3s,opacity .3s}.game-cartridge:before{content:"";position:absolute;inset:6px 13px auto;height:8px;border-top:1px solid #ffffff23;border-bottom:1px solid #0009}.game-cartridge:after{content:"";position:absolute;left:21%;right:21%;bottom:0;height:12px;background:repeating-linear-gradient(90deg,#151615 0 4px,#8fff8d 5px 7px)}.game-cartridge:hover,.game-cartridge:focus-visible{transform:translateY(-18px) rotateX(-3deg);filter:brightness(1.13);z-index:3}.game-cartridge.is-active{transform:translateY(-11px);filter:brightness(.72);opacity:.58}.cartridge-label{height:158px;padding:15px 13px;background:#ede9de;box-shadow:inset 0 0 0 1px #1b1c1b33;display:flex;flex-direction:column;text-align:left;overflow:hidden}.cartridge-label:before{content:"";height:8px;background:var(--cart);margin:-15px -13px 13px}.cartridge-label b{font:800 clamp(21px,2vw,32px)/1 ui-monospace,monospace;color:var(--cart)}.cartridge-label strong{margin-top:auto;font:700 clamp(12px,1.25vw,17px)/1.06 "Alibaba PuHuiTi 3.0","Source Han Sans SC",sans-serif;color:#171817}.cartridge-label small{margin-top:8px;font:700 8px/1.25 ui-monospace,monospace;color:#5c5b56;letter-spacing:.06em}.rack-nav{position:absolute;z-index:5;top:50%;width:44px;height:88px;border:1px solid #8fff8d42;background:linear-gradient(145deg,#262825,#111311);color:#b9ffb1;box-shadow:0 16px 30px #000a,inset 0 1px #ffffff20;transform:translateY(-58%);cursor:pointer;transition:color .2s,background-color .2s,transform .25s,opacity .2s}.rack-nav-prev{left:0}.rack-nav-next{right:0}.rack-nav svg{width:22px;fill:none;stroke:currentColor;stroke-width:1.7}.rack-nav:hover:not(:disabled),.rack-nav:focus-visible{color:#071007;background:#8fff8d;transform:translateY(-58%) scale(1.06)}.rack-nav:focus-visible{outline:2px solid #f2f2ed;outline-offset:4px}.rack-nav:disabled{opacity:.24;cursor:default}.cartridge-flight{position:fixed;z-index:120;pointer-events:none;margin:0;will-change:transform;filter:drop-shadow(0 25px 25px #000b)}
@media(max-width:1050px){.crt-screen{min-height:470px}.game-cartridge{flex-basis:150px;height:205px}.crt-controls{position:static;margin-left:18px}}
@media(max-width:700px){.gaming{padding:90px 20px}.gaming-title{margin-bottom:38px}.crt-casing{padding:18px 15px 12px;border-radius:15px 15px 22px 22px}.crt-brand span{display:none}.crt-screen-wrap{padding:12px;border-radius:18px}.crt-screen{min-height:470px;border-radius:26px/20px;padding:28px 22px}.crt-idle{min-height:390px}.crt-idle h3{font-size:40px}.game-entry-head{display:block}.game-entry-meta{text-align:left;margin-top:12px}.game-entry-summary{font-size:13px}.game-entry-grid{display:block}.game-observation{margin-top:20px}.crt-deck{min-height:105px;display:block;padding-top:13px}.cartridge-port{width:100%}.crt-controls{justify-content:center;margin:10px 0 0}.crt-light{top:30px}.cartridge-area{margin-top:48px;padding-inline:36px}.cartridge-rack{gap:15px;scroll-snap-type:x mandatory;padding:18px 16px 22px}.game-cartridge{flex:0 0 160px;height:210px}.rack-nav{width:34px;height:72px}.cartridge-label strong{font-size:15px}.cartridge-flight{display:none}}
@media(max-width:700px){.site-nav nav a:nth-child(1),.site-nav nav a:nth-child(3){display:inline}.site-nav nav a:nth-child(4),.site-nav nav a:nth-child(5){display:none}}
@media(prefers-reduced-motion:reduce){.game-cartridge{transition:filter .01ms,opacity .01ms}.game-cartridge:hover,.game-cartridge:focus-visible{transform:none}.game-entry{animation:none}.crt.is-switching .crt-screen:after{animation:none}}

/* 2026 second pass — one tactile archive language across work, play and research. */
.works,.ai-coding,.gaming,.reports{scroll-margin-top:56px}
.resume-group{position:relative;padding:18px 18px 20px;margin-left:-18px;margin-right:-18px;transition:background-color .28s ease,transform .35s var(--ease),box-shadow .35s var(--ease)}
.resume-group:hover{background:#ffffff05;transform:translateY(-3px);box-shadow:0 22px 44px #0003}
.resume-group h3:after{content:"";display:block;width:82px;height:1px;margin-top:11px;background:var(--blue);transform:scaleX(.42);transform-origin:left;transition:transform .4s var(--ease)}
.resume-group:hover h3:after{transform:scaleX(1)}
.identity .portrait{transition:transform .5s var(--ease),filter .4s;box-shadow:0 28px 54px #0008}
.identity:hover .portrait{transform:translateY(-9px) rotate(-1deg);filter:contrast(1.04)}

/* Side records are complete miniature project objects, not empty navigation furniture. */
.carousel-peek{top:21%;width:min(19vw,270px)}
.peek-stack{position:relative;display:block;width:100%;aspect-ratio:1}
.carousel-peek .peek-vinyl{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;filter:drop-shadow(0 24px 26px #000c);transition:transform .48s var(--ease)}
.carousel-peek .peek-cover{position:absolute;left:17%;top:44%;width:66%;height:auto;aspect-ratio:1;object-fit:contain;z-index:2;filter:drop-shadow(0 16px 16px #000b);transition:transform .48s var(--ease)}
.carousel-peek:hover .peek-vinyl{transform:translateY(-13px) rotate(10deg)}
.carousel-peek:hover .peek-cover{transform:translateY(8px) rotate(-2deg)}
.peek-prev{left:2%}.peek-next{right:2%}
.carousel-arrow.prev{left:1.2%}.carousel-arrow.next{right:1.2%}
.project-meta{width:min(36vw,520px);margin:-20px auto 0;justify-content:center;text-align:center;align-items:center}
.project-meta>span{justify-items:center}

/* AI Coding is a separate live portal rather than a fifth portfolio record. */
.ai-coding{--ai-rx:0deg;--ai-ry:0deg;--ai-x:50%;--ai-y:50%;max-width:none;margin:auto;padding:clamp(110px,11vw,180px) clamp(24px,6vw,100px);border-top:1px solid var(--line);overflow:hidden;background:radial-gradient(900px circle at 72% 52%,#8fff8d35,transparent 62%),#0b0d0d}
.ai-coding>.section-title{display:grid;max-width:1500px;margin:0 auto 58px;width:100%;justify-content:start}
.ai-project{position:relative;display:grid;grid-template-columns:minmax(0,1.18fr) minmax(300px,.82fr);gap:clamp(44px,7vw,112px);align-items:center;max-width:1500px;margin:auto;padding:clamp(26px,4vw,60px);border:1px solid #ffffff18;background:#101313;box-shadow:0 44px 90px #0009;transform:perspective(1500px) rotateX(var(--ai-rx)) rotateY(var(--ai-ry));transition:transform .25s ease,box-shadow .4s var(--ease),border-color .3s;isolation:isolate}
.ai-project:before{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;background:radial-gradient(440px circle at var(--ai-x) var(--ai-y),#8fff8d24,transparent 72%);opacity:.25;transition:opacity .3s}
.ai-project:hover{border-color:#8fff8d80;box-shadow:0 58px 110px #000c,0 0 0 1px #8fff8d25}.ai-project:hover:before{opacity:1}
.ai-window{position:relative;display:block;overflow:hidden;border:1px solid #ffffff24;background:#050707;box-shadow:0 30px 54px #000a;transform:translateZ(35px);transition:transform .5s var(--ease)}
.ai-project:hover .ai-window{transform:translateZ(58px) translateY(-8px)}
.ai-window>img{display:block;width:100%;aspect-ratio:16/10;object-fit:cover;background:#090b0b;transition:transform .7s var(--ease),filter .5s}
.ai-project:hover .ai-window>img{transform:scale(1.035);filter:contrast(1.06)}
.ai-browser-bar{height:38px;display:flex;align-items:center;gap:7px;padding:0 13px;background:#171a19;border-bottom:1px solid #ffffff14}
.ai-browser-bar i{width:7px;height:7px;border-radius:50%;background:#6f716d}.ai-browser-bar b{margin-left:8px;color:#8e928d;font:600 9px/1 ui-monospace,monospace;letter-spacing:.09em}
.ai-scan{position:absolute;inset:38px 0 0;pointer-events:none;background:linear-gradient(105deg,transparent 35%,#8fff8d25 48%,transparent 61%);transform:translateX(-110%);transition:transform .85s var(--ease);mix-blend-mode:screen}.ai-project:hover .ai-scan{transform:translateX(110%)}
.ai-copy{display:flex;flex-direction:column;align-items:flex-start;transform:translateZ(20px)}
.ai-copy small{color:#9dff91;font:700 10px/1 ui-monospace,monospace;letter-spacing:.14em}.ai-copy strong{margin:24px 0 20px;font:600 clamp(54px,7vw,112px)/.82 Georgia,"Times New Roman",serif;letter-spacing:-.04em}.ai-copy>span{max-width:34ch;color:#c8c7c0;font-size:15px;line-height:1.8}.ai-copy>b{display:flex;align-items:center;gap:12px;margin-top:42px;padding-bottom:8px;border-bottom:1px solid #9dff91;color:#f4f1e9;font:700 11px/1 ui-monospace,monospace;letter-spacing:.1em}.ai-copy svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.5;transition:transform .3s var(--ease)}.ai-project:hover .ai-copy svg{transform:translate(4px,-4px)}

/* Richer CRT analysis and illustrated cartridges. */
.crt{width:min(100%,1180px)}.crt-screen{min-height:610px;padding:clamp(28px,4vw,56px)}
.game-entry-summary{margin:18px 0}.game-entry-grid{gap:28px}.game-observation{padding:16px}
.interaction-lenses{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:22px;padding-top:18px;border-top:1px solid #d9c89a3a}
.interaction-lenses>div{min-width:0;padding:13px 14px;background:#080a09a6;box-shadow:inset 0 0 0 1px #fff1c817;transition:background-color .25s,transform .3s var(--ease)}
.interaction-lenses>div:hover{background:#1a1c18;transform:translateY(-4px)}
.interaction-lenses b{color:#aaff9f;font:700 9px/1 ui-monospace,monospace;letter-spacing:.13em}.interaction-lenses p{margin:8px 0 0;color:#cfc6b3;font-size:11px;line-height:1.65}
.cartridge-rack{gap:clamp(8px,1.1vw,17px)}
.game-cartridge{height:232px;padding-left:9px;padding-right:9px}
.cartridge-label{height:172px;padding:13px 10px}.cartridge-label:before{margin:-13px -10px 9px}
.cartridge-label b{font-size:22px}.cartridge-logo{display:block;width:58px;height:40px;margin:7px 0 8px;overflow:hidden;border:1px solid #18191835;background:#fff;box-shadow:0 6px 12px #0002;transition:transform .35s var(--ease)}
.cartridge-logo img{display:block;width:100%;height:100%;object-fit:cover}.game-cartridge:hover .cartridge-logo{transform:translateY(-3px) scale(1.06)}
.cartridge-label strong{font-size:clamp(11px,1vw,15px)}.cartridge-label small{font-size:7px}

/* Folder: layered transparent sleeves, paper edges and a readable extraction path. */
.report-folder:before{content:"";position:absolute;inset:7% 4% 1%;z-index:-1;background:#d8d7d1;box-shadow:0 54px 90px #000c;transform:translateY(18px) rotate(.5deg)}
.folder-art{filter:drop-shadow(0 26px 36px #0009)}
.folder-cover{background:linear-gradient(128deg,#f3f0e8f2 0%,#d5d2caf2 52%,#eeebe3f5 100%);backdrop-filter:blur(2px);box-shadow:0 42px 85px #000c,inset 0 0 0 12px #ffffff38}
.folder-cover:before{box-shadow:inset 0 0 45px #fff7}.folder-cover>strong{text-shadow:0 1px #fff}
.report-cover{overflow:visible;transform-style:preserve-3d;background:#f7f4ed;box-shadow:0 24px 46px #0009}
.report-cover:before,.report-cover:after{content:"";position:absolute;inset:6px -7px -7px 7px;z-index:-1;background:#e8e5dd;box-shadow:0 5px 8px #0003;transition:transform .42s var(--ease)}
.report-cover:after{inset:12px -13px -13px 13px;background:#d3d0c8;z-index:-2}
.report-cover:hover:before{transform:translate(6px,-5px) rotate(1deg)}.report-cover:hover:after{transform:translate(11px,-8px) rotate(2deg)}
.report-cover img{position:relative;z-index:1}.report-cover span{z-index:3}
.folder-open .report-cover{animation:page-settle .74s cubic-bezier(.16,1,.3,1)}.folder-open .report-dahua{animation-delay:.1s}
@keyframes page-settle{from{opacity:0;transform:translateY(58px) rotateX(-18deg) scale(.92)}to{opacity:1;transform:none}}
.extract-clone{transform-origin:50% 50%;backface-visibility:hidden}
.contact-info{padding:18px;transition:background-color .3s,transform .35s var(--ease),box-shadow .35s var(--ease)}.contact-info:hover{background:#ffffff06;transform:translateY(-7px);box-shadow:0 28px 52px #0007}.contact-info img{transition:transform .45s var(--ease)}.contact-info:hover img{transform:rotate(-2deg) scale(1.04)}

@media(max-width:1050px){.ai-project{grid-template-columns:1fr}.ai-copy strong{font-size:76px}.crt-screen{min-height:690px}.game-cartridge{height:218px}.project-meta{width:460px}}
@media(max-width:700px){.site-nav nav{gap:15px}.site-nav nav a:nth-child(3),.site-nav nav a:nth-child(5),.site-nav nav a:nth-child(6){display:none}.ai-coding{padding:90px 20px}.ai-project{display:block;padding:14px}.ai-copy{padding:30px 10px 14px}.ai-copy strong{font-size:56px}.ai-copy>span{font-size:13px}.ai-copy>b{margin-top:28px}.ai-browser-bar b{font-size:7px}.project-meta{width:295px}.crt-screen{min-height:720px}.interaction-lenses{grid-template-columns:1fr}.interaction-lenses p{font-size:11px}.cartridge-rack{display:flex}.cartridge-label strong{font-size:15px}.report-cover:before,.report-cover:after{display:none}.resume-group{margin-left:0;margin-right:0;padding-left:0;padding-right:0}.resume-group:hover{transform:none;background:transparent;box-shadow:none}}
@media(prefers-reduced-motion:reduce){.ai-project{transform:none}.ai-scan{display:none}.folder-open .report-cover{animation:none}.resume-group:hover,.identity:hover .portrait,.contact-info:hover{transform:none}}

/* Research output bay — the player archive continues as analysis hardware. */
.reports{background:radial-gradient(ellipse at 50% 35%,#17191a 0,#0b0d0d 66%);overflow:hidden}
.reports>.section-title{display:grid;max-width:1500px;margin-left:auto;margin-right:auto;width:100%;justify-content:start}
.research-deck{--scan-x:50%;position:relative;max-width:1320px;margin:40px auto 0;padding-top:54px}
.research-bridge{position:absolute;left:50%;top:-90px;width:2px;height:128px;background:#4c4c47;box-shadow:0 0 0 1px #000,0 0 18px #8fff8d22;transform:translateX(-50%)}
.research-bridge:before,.research-bridge:after{content:"";position:absolute;left:50%;width:11px;height:11px;border-radius:50%;background:#8fff8d;box-shadow:0 0 13px #8fff8d;transform:translateX(-50%)}.research-bridge:before{top:0}.research-bridge:after{bottom:0}
.research-bridge span{position:absolute;left:50%;top:17px;width:1px;height:82px;background:#d5cfc2;transform:translateX(-50%)}
.research-bridge b{position:absolute;left:18px;top:42px;color:#7c7b74;font:700 8px/1 ui-monospace,monospace;letter-spacing:.12em;white-space:nowrap;transform:rotate(90deg);transform-origin:left top}.research-bridge i{display:none}
.research-console{position:relative;width:min(100%,930px);margin:auto;padding:24px 30px 30px;border-radius:18px 18px 32px 32px;background:linear-gradient(145deg,#d7d0c3,#aaa397 56%,#807b72);box-shadow:0 42px 72px #000b,inset 2px 2px 2px #fff8,inset -4px -5px 10px #4e4a44}
.research-console>header{display:flex;justify-content:space-between;padding:0 5px 14px;color:#242523;font:700 9px/1 ui-monospace,monospace;letter-spacing:.12em}.research-console>header span{color:#4e4e49}
.research-screen{position:relative;min-height:300px;padding:42px 48px;overflow:hidden;border-radius:28px/22px;background:radial-gradient(ellipse at center,#22251f,#101210 72%);color:#f2ead6;box-shadow:inset 0 0 55px #000,inset 0 0 13px #8fff8d45}
.research-screen:before{content:"";position:absolute;inset:0;pointer-events:none;opacity:.13;background:repeating-linear-gradient(0deg,transparent 0 3px,#000 4px 5px)}
.research-screen small{position:relative;z-index:2;color:#aaff9f;font:700 9px/1 ui-monospace,monospace;letter-spacing:.15em}.research-screen strong{position:relative;z-index:2;display:block;margin:36px 0 18px;font:600 clamp(44px,6vw,76px)/.82 Georgia,"Times New Roman",serif;letter-spacing:-.04em}.research-screen p{position:relative;z-index:2;max-width:58ch;margin:0;color:#beb6a5;font-size:13px;line-height:1.75}
.screen-scan{position:absolute;z-index:3;left:0;right:0;top:50%;height:2px;background:#8fff8d;box-shadow:0 0 18px 6px #8fff8d;opacity:0;transform:scaleX(0)}
.research-deck.is-reading .screen-scan{animation:research-scan .74s cubic-bezier(.16,1,.3,1)}
@keyframes research-scan{0%{opacity:0;transform:scaleX(.02) translateY(-120px)}30%{opacity:1;transform:scaleX(1) translateY(-60px)}75%{opacity:.8;transform:scaleX(1) translateY(80px)}100%{opacity:0;transform:scaleX(.05) translateY(130px)}}
.research-slot{position:relative;width:min(66%,560px);height:44px;margin:22px auto 0;padding:16px 50px 0;border-radius:2px 2px 10px 10px;background:#282927;color:#8fff8d;box-shadow:inset 0 10px 13px #050505,inset 0 -1px #fff2;text-align:center;font:700 9px/1 ui-monospace,monospace;letter-spacing:.12em}.research-slot i{position:absolute;right:18px;top:16px;width:7px;height:7px;border-radius:50%;background:#8fff8d;box-shadow:0 0 8px #8fff8d}.research-deck.is-reading .research-slot i{background:#aaff9f;box-shadow:0 0 12px #8fff8d}
.report-cartridges{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(28px,5vw,72px);width:min(100%,1080px);margin:64px auto 0;perspective:1400px}
.research-deck .report-cover{--page-rx:0deg;--page-ry:0deg;position:relative;inset:auto;top:auto;left:auto;right:auto;width:auto;height:360px;display:grid;grid-template-columns:86px minmax(0,1fr);grid-template-rows:1fr auto;padding:20px 20px 22px;border:0;border-radius:12px 12px 5px 5px;background:linear-gradient(116deg,#4a4b48,#252625 70%);color:#171817;overflow:visible;box-shadow:0 26px 38px #000a,inset 2px 1px #ffffff30,inset -4px -4px 7px #050505;transform:rotateX(var(--page-rx)) rotateY(var(--page-ry));transform-origin:50% 100%;transition:transform .42s cubic-bezier(.16,1,.3,1),filter .3s,box-shadow .4s;cursor:pointer}
.research-deck .report-cover:before{content:"";position:absolute;inset:8px 22px auto;height:8px;z-index:1;background:none;border-top:1px solid #ffffff25;border-bottom:1px solid #0009;box-shadow:none;transform:none}.research-deck .report-cover:after{content:"";position:absolute;left:27%;right:27%;bottom:0;height:13px;z-index:1;background:repeating-linear-gradient(90deg,#151615 0 5px,#8fff8d 6px 9px);box-shadow:none;transform:none}
.research-deck .report-cover:hover,.research-deck .report-cover:focus-visible{z-index:3;transform:translateY(-24px) rotateX(var(--page-rx)) rotateY(var(--page-ry));filter:brightness(1.08);box-shadow:0 42px 58px #000c,inset 2px 1px #ffffff30,inset -4px -4px 7px #050505}
.research-deck .report-cover.reinsert{animation:report-reinsert .45s var(--ease)}@keyframes report-reinsert{from{transform:translateY(-36px) scale(.96);filter:brightness(1.35)}to{transform:none;filter:none}}
.research-deck .report-grip{position:relative;grid-row:1/3;display:block!important;inset:auto!important;left:auto!important;bottom:auto!important;width:54px;height:100%;padding:0!important;margin:0;background:repeating-linear-gradient(0deg,#171817 0 6px,#343532 7px 11px)!important;border-radius:4px;box-shadow:inset 1px 0 #ffffff20;color:transparent!important}
.research-deck .report-index{position:relative!important;inset:auto!important;align-self:start;justify-self:end;padding:0!important;background:transparent!important;color:var(--report-accent)!important;font:800 30px/1 ui-monospace,monospace!important}
.report-preview{position:relative!important;inset:auto!important;display:block!important;align-self:stretch;margin:0 0 14px;padding:12px!important;background:#efebe1!important;overflow:hidden;box-shadow:inset 0 0 0 1px #17181730;color:inherit!important}
.research-deck .report-preview img{display:block;width:100%;height:174px;object-fit:cover;object-position:top;background:#fff;transition:transform .48s var(--ease),filter .35s}.research-deck .report-cover:hover .report-preview img{transform:scale(1.035);filter:contrast(1.06)}
.research-deck .report-label{position:relative!important;inset:auto!important;left:auto!important;bottom:auto!important;display:grid!important;gap:6px;align-self:end;padding:0!important;background:transparent!important;color:#efebe1!important;text-align:left}
.research-deck .report-label small{color:#aaa89f;font:700 8px/1 ui-monospace,monospace;letter-spacing:.1em}.research-deck .report-label strong{font-size:20px;line-height:1.15}.research-deck .report-label b{color:var(--report-accent);font:700 8px/1 ui-monospace,monospace;letter-spacing:.11em}
.research-deck.is-reading .report-cover:not(.is-selected){opacity:.38;filter:brightness(.55)}.research-deck .report-cover.is-selected{transform:translateY(-28px) scale(1.025)}
.research-hint{text-align:center;margin:28px 0 0;color:#716f68;font:700 9px/1.6 ui-monospace,monospace;letter-spacing:.12em}.research-hint span{color:#b8b5ad}
.research-deck .extract-clone{position:fixed;z-index:125;margin:0;border-radius:12px;pointer-events:none;opacity:1!important;filter:none!important;will-change:transform,clip-path}
@media(max-width:700px){.research-deck{padding-top:32px}.research-bridge{top:-64px;height:78px}.research-bridge b{display:none}.research-console{padding:15px 14px 18px;border-radius:14px 14px 22px 22px}.research-console>header span{display:none}.research-screen{min-height:260px;padding:34px 25px;border-radius:22px/17px}.research-screen strong{font-size:46px;margin-top:32px}.research-slot{width:88%;padding-left:15px;padding-right:35px;font-size:7px}.report-cartridges{grid-template-columns:1fr;gap:30px;margin-top:44px}.research-deck .report-cover{height:330px;grid-template-columns:68px minmax(0,1fr)}.research-deck .report-preview img{height:150px}.research-deck .report-cover:hover{transform:translateY(-8px)}.research-hint{max-width:30ch;margin-left:auto;margin-right:auto}}
@media(prefers-reduced-motion:reduce){.research-deck .report-cover:hover,.research-deck .report-cover.is-selected{transform:none}.research-deck.is-reading .screen-scan{animation:none}.research-bridge{box-shadow:none}}

/* ========================================================================== 
   V7 · PLAYABLE EDITORIAL ARCHIVE
   One visual world, one light source, one motion grammar.
   ========================================================================== */
:root{
  --bg:#090a0a;--surface:#111312;--surface-2:#181a18;--paper:#f2eee5;
  --ink:#eeeae0;--muted:#a6a198;--blue:#8fff8d;--orange:#8fff8d;
  --plastic:#b8b0a2;--metal:#5c5a55;--line:#2c2e2b;
  --ease-out:cubic-bezier(.16,1,.3,1);
}
html{scrollbar-color:#565852 #090a0a;scrollbar-width:thin}
body{background:var(--bg);color:var(--ink);font-family:"Noto Sans SC","Source Han Sans SC","Microsoft YaHei",sans-serif;overflow-x:hidden}
body::selection{background:var(--blue);color:#fff}
body.is-loading{overflow:hidden}
body:before{content:"";position:fixed;inset:0;z-index:-2;pointer-events:none;background:radial-gradient(1000px circle at 48% 8%,#20231f 0,transparent 62%),linear-gradient(180deg,#090a0a,#0c0e0d 48%,#090a0a)}
.hero-cursor,.hero-cursor-trail{display:none!important}

/* Opening sequence */
.boot-sequence{position:fixed;inset:0;z-index:10000;display:grid;place-items:center;overflow:hidden;background:#070808;color:var(--ink);transition:clip-path .9s var(--ease-out),visibility .9s;clip-path:inset(0)}
.boot-sequence[aria-hidden=true]{clip-path:inset(0 0 100% 0);visibility:hidden}
.boot-ambient{position:absolute;inset:-20%;background:radial-gradient(circle at 50% 50%,#8fff8d20 0 9%,transparent 32%),conic-gradient(from 90deg at 50% 50%,transparent,#8fff8d12,transparent 30%,#8fff8d12,transparent 65%);animation:boot-ambient 8s linear infinite}
.boot-ambient:after{content:"";position:absolute;inset:20%;opacity:.16;background-image:linear-gradient(#fff 1px,transparent 1px),linear-gradient(90deg,#fff 1px,transparent 1px);background-size:80px 80px;mask-image:radial-gradient(circle,#000,transparent 72%)}
.boot-stage{position:relative;width:min(1080px,84vw);display:grid;grid-template-columns:minmax(270px,.8fr) minmax(360px,1.2fr);align-items:center;gap:clamp(42px,8vw,120px)}
.boot-orbit{position:relative;width:min(34vw,420px);aspect-ratio:1;display:grid;place-items:center;border:1px solid #eeeae030;border-radius:50%;box-shadow:0 0 90px #8fff8d18,inset 0 0 80px #000}
.boot-orbit:before,.boot-orbit:after,.boot-orbit i{content:"";position:absolute;border-radius:50%;border:1px solid transparent}
.boot-orbit:before{inset:9%;border-top-color:var(--blue);border-right-color:#8fff8d50;animation:boot-spin 2.8s linear infinite}
.boot-orbit:after{inset:20%;border-bottom-color:var(--orange);border-left-color:#8fff8d48;animation:boot-spin 2s linear reverse infinite}
.boot-orbit i:nth-child(1){inset:-1%;border-left-color:#eeeae030;animation:boot-spin 6s linear infinite}
.boot-orbit i:nth-child(2){inset:30%;border-right-color:#eeeae060;animation:boot-spin 1.35s linear infinite}
.boot-orbit i:nth-child(3){width:9px;height:9px;top:8%;left:50%;background:var(--blue);box-shadow:0 0 20px var(--blue);animation:boot-pulse 1s ease-in-out infinite alternate}
.boot-monogram{position:relative;font:500 clamp(64px,9vw,120px)/1 Georgia,"Times New Roman",serif;letter-spacing:-.08em}
.boot-copy{position:relative}.boot-kicker{display:block;margin-bottom:28px;color:#9dff91;font:700 9px/1.4 ui-monospace,monospace;letter-spacing:.18em}
.boot-copy>strong{display:block;max-width:9ch;font:700 clamp(48px,7vw,100px)/.83 "Arial Narrow","Noto Sans SC",sans-serif;letter-spacing:-.04em}
.boot-copy>strong em{color:var(--paper);font-family:Georgia,"Times New Roman",serif;font-weight:400}
.boot-meter{height:1px;margin-top:52px;background:#ffffff1d;overflow:visible}.boot-meter i{display:block;width:100%;height:1px;background:linear-gradient(90deg,var(--blue),#8fff8d,var(--orange));box-shadow:0 0 18px #8fff8d;transform:scaleX(var(--boot-progress,0));transform-origin:left;transition:transform .12s linear}
.boot-status{display:flex;justify-content:space-between;margin-top:13px;color:#777a74;font:700 9px/1 ui-monospace,monospace;letter-spacing:.14em}.boot-status b{color:var(--paper);font-size:12px;font-variant-numeric:tabular-nums}
.boot-skip{position:absolute;right:34px;bottom:30px;border:0;border-bottom:1px solid #ffffff45;padding:8px 0;background:transparent;color:#8e918a;font:700 9px/1 ui-monospace,monospace;letter-spacing:.14em;cursor:pointer}
@keyframes boot-spin{to{transform:rotate(1turn)}}@keyframes boot-pulse{to{transform:scale(1.55);opacity:.35}}@keyframes boot-ambient{to{transform:rotate(1turn)}}

/* Site cursor: instrument reticle instead of a decorative circle. */
.site-cursor,.cursor-flare{display:none}
@media(pointer:fine){
  body:not(.editing),body:not(.editing) a,body:not(.editing) button{cursor:none!important}
  .site-cursor{--cursor-x:50vw;--cursor-y:50vh;position:fixed;left:0;top:0;z-index:9999;display:block;width:0;height:0;pointer-events:none;opacity:0;transform:translate3d(var(--cursor-x),var(--cursor-y),0);transition:opacity .2s}
  .site-cursor.is-visible{opacity:1}.cursor-ring{position:absolute;left:-28px;top:-28px;width:56px;height:56px;border:1px solid #eeeae0a0;border-radius:50%;transform:scale(.68);transition:transform .3s var(--ease-out),border-color .2s,background-color .2s}
  .cursor-ring:before,.cursor-ring:after{content:"";position:absolute;background:var(--paper)}.cursor-ring:before{left:50%;top:-5px;width:1px;height:10px}.cursor-ring:after{left:-5px;top:50%;width:10px;height:1px}
  .cursor-ring i{position:absolute;inset:4px;border:1px dashed #ffffff38;border-radius:50%;animation:cursor-spin 4s linear infinite}
  .cursor-dot{position:absolute;left:-2px;top:-2px;width:4px;height:4px;border-radius:50%;background:var(--orange);box-shadow:0 0 12px var(--orange)}
  .cursor-label{position:absolute;left:28px;top:23px;min-width:max-content;padding:5px 7px;background:#090a0ad9;color:#ddd9d0;font:700 8px/1 ui-monospace,monospace;letter-spacing:.12em;opacity:0;transform:translateY(5px);transition:.22s var(--ease-out)}
  .site-cursor.is-active .cursor-ring{transform:scale(1);border-color:#8fff8d;background:#8fff8d11}.site-cursor.is-active .cursor-label{opacity:1;transform:none}
  .site-cursor.is-media .cursor-ring{border-color:var(--orange)}.site-cursor.is-pressed .cursor-ring{transform:scale(.58);background:#8fff8d30}.site-cursor.is-pressed .cursor-dot{transform:scale(2)}
  .site-cursor.is-light:not(.is-active) .cursor-ring{border-color:#111312}.site-cursor.is-light:not(.is-active) .cursor-ring:before,.site-cursor.is-light:not(.is-active) .cursor-ring:after{background:#111312}.site-cursor.is-light:not(.is-active) .cursor-ring i{border-color:#11131255}
  .cursor-flare{--cursor-x:50vw;--cursor-y:50vh;position:fixed;inset:0;z-index:90;display:block;pointer-events:none;background:radial-gradient(220px circle at var(--cursor-x) var(--cursor-y),#ffffff07,transparent 72%);mix-blend-mode:screen}
  @keyframes cursor-spin{to{transform:rotate(1turn)}}
}
.page-progress{position:fixed;right:0;top:0;bottom:0;width:2px;z-index:900;pointer-events:none;background:#ffffff0b}.page-progress i{display:block;width:100%;height:calc(var(--page-progress,0)*100%);background:linear-gradient(var(--blue),var(--orange));box-shadow:0 0 12px #8fff8d88}

/* Navigation and continuous editorial rhythm */
.site-nav{height:68px;padding-inline:clamp(24px,5vw,72px);background:linear-gradient(180deg,#090a0aed,#090a0a9c);border-bottom-color:#ffffff12;backdrop-filter:blur(14px)}
.wordmark{font-family:Georgia,"Times New Roman",serif;font-size:18px;letter-spacing:-.03em}.site-nav nav{gap:clamp(20px,1.8vw,32px)}.site-nav nav a{position:relative;padding-block:9px;color:#d1cec6;font-size:clamp(14px,.92vw,16px);font-weight:500;line-height:1;letter-spacing:.04em}.site-nav nav a:after{content:"";position:absolute;left:0;right:0;bottom:2px;height:1px;background:var(--blue);transform:scaleX(0);transform-origin:right;transition:transform .35s var(--ease-out)}.site-nav nav a:hover:after{transform:scaleX(1);transform-origin:left}
.resume,.works,.gaming,.ai-coding,.reports,.contact{position:relative;scroll-margin-top:68px;border-top:1px solid #ffffff12;background:transparent}
.section-title{max-width:1500px;margin:0 auto clamp(54px,7vw,96px);display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:30px}.section-title h2{margin:0;font:650 clamp(42px,5.4vw,78px)/.9 "Noto Sans SC","Source Han Sans SC",sans-serif;letter-spacing:-.035em}.section-title span{position:relative;margin-bottom:4px;color:#8fff8d;font:italic 400 clamp(22px,2.4vw,36px)/1 Georgia,"Times New Roman",serif;transform:rotate(-4deg)}.section-title span:after{content:"";position:absolute;left:-12px;right:-12px;bottom:-7px;height:1px;background:#8fff8d77}

/* Hero: preserve the Figma artwork, refine light and physical feedback. */
.hero{height:min(100svh,1080px);background:#060707;isolation:isolate}.hero:before{background:radial-gradient(360px circle at var(--spot-x) var(--spot-y),#fff2 0,#fff08 30%,transparent 72%);mix-blend-mode:soft-light}.hero:after{background:linear-gradient(180deg,#0002 0,transparent 52%,#090a0a 100%);box-shadow:inset 0 0 110px #000a}
.hero-object{filter:drop-shadow(0 18px 16px #0008);transition:translate .48s var(--ease-out),transform .48s var(--ease-out),filter .4s,opacity .3s}.hero-object:hover{filter:drop-shadow(0 32px 22px #000c) saturate(1.06)}.hero.is-tracking .hero-object:not(:hover){opacity:.9}.scroll-mark{padding:9px 12px;border:1px solid #ffffff26;background:#090a0a88;color:#d4d0c7}

/* Resume: dense personnel dossier with calm interactions. */
.resume{padding-top:clamp(100px,9vw,150px)}.resume>h1{max-width:1600px;margin:0 auto clamp(64px,7vw,100px);color:#9dff91;font:400 clamp(30px,4vw,58px)/1 Georgia,"Times New Roman",serif;letter-spacing:-.035em}.resume-layout{grid-template-columns:minmax(190px,230px) minmax(0,1fr) minmax(250px,310px);gap:clamp(34px,4.5vw,76px)}
.identity{padding:18px 0 28px;border-top:1px solid #ffffff33;border-bottom:1px solid #ffffff18}.identity .portrait{filter:saturate(.86) contrast(1.04);box-shadow:0 30px 60px #000a}.identity h2{font-family:Georgia,"Songti SC",serif;font-size:24px}.identity dl div{border-top:1px solid #ffffff0c;padding:7px 0}.resume-group{overflow:hidden;border-top:1px solid #ffffff24;background:radial-gradient(260px circle at var(--light-x,-200px) var(--light-y,-200px),#ffffff09,transparent 68%)}.resume-group:hover{background-color:#ffffff035;box-shadow:none}.resume-group h3{font-family:Georgia,"Songti SC",serif;font-weight:500;font-size:24px}.resume-group h3:after{width:100%;background:linear-gradient(90deg,var(--blue),transparent);transform:scaleX(.22)}.resume-group:hover h3:after{transform:scaleX(.6)}.resume-group article{padding-block:2px 23px;border-bottom:1px solid #ffffff0d}.resume-group p,.resume-group li{max-width:75ch;color:#c7c3ba;line-height:1.9}

/* Works: the only stage allowed to stay theatrically centered. */
.works{max-width:none;padding-inline:clamp(24px,6vw,100px);overflow:hidden}.works .section-title{margin-bottom:30px}.carousel{max-width:1500px;margin:auto}.project-slide.active .vinyl-shell{animation:vinyl-idle 18s linear infinite}.project-slide.active:hover .vinyl-shell{animation-play-state:paused}.project-cover{box-shadow:0 1px #fff8,0 32px 70px #000c}.carousel-arrow{background:#0c0e0dc7;border-color:#ffffff42;box-shadow:0 12px 28px #0008}.carousel-arrow:hover{transform:scale(1.08);background:var(--paper);border-color:var(--paper);color:#090a0a}.project-meta{align-items:baseline}.project-meta span{display:flex;gap:16px;align-items:baseline}.project-meta small{color:#98958e}.carousel-peek{opacity:.55;transition:opacity .35s,transform .45s var(--ease-out)}.carousel-peek:hover{opacity:1;transform:translateY(-7px)}
@keyframes vinyl-idle{to{rotate:360deg}}

/* AI lab: editorial copy plus a single reactive specimen. */
.ai-coding{background:radial-gradient(700px circle at 72% 50%,#8fff8d10,transparent 70%)}.ai-project{overflow:hidden;border-radius:0;border-color:#ffffff22;background:radial-gradient(420px circle at var(--light-x,-200px) var(--light-y,-200px),#8fff8d17,transparent 72%),#101211;box-shadow:0 42px 90px #0009}.ai-project:after{content:"LIVE EXPERIMENT";position:absolute;right:0;top:0;padding:10px 13px;background:var(--orange);color:#fff;font:700 8px/1 ui-monospace,monospace;letter-spacing:.13em}.ai-copy strong{font-family:Georgia,"Times New Roman",serif;font-weight:400}.ai-window{border-color:#ffffff30}.ai-window:hover img{transform:scale(1.025)}

/* Gaming and research share one hardware family, not one identical layout. */
.gaming,.reports{padding-top:clamp(110px,10vw,170px);padding-bottom:clamp(120px,12vw,200px)}.gaming-terminal,.research-deck{max-width:1500px;margin-inline:auto}.crt-casing,.research-console{background:linear-gradient(145deg,#c3bcaf 0,#a7a094 54%,#77736c 100%);box-shadow:0 46px 82px #000c,inset 2px 2px 2px #fff9,inset -5px -6px 12px #4e4a44}.crt-screen,.research-screen{background:radial-gradient(ellipse at 48% 45%,#22251f,#0d100e 74%)}.game-cartridge,.research-deck .report-cover{background:linear-gradient(116deg,#50514e,#242523 70%);box-shadow:0 26px 38px #000a,inset 2px 1px #ffffff30,inset -4px -4px 7px #050505}.game-cartridge:focus-visible,.report-cover:focus-visible{outline:2px solid var(--paper);outline-offset:6px}.cartridge-label{position:relative;background-color:#ede9de;background-image:radial-gradient(#00000010 .55px,transparent .7px);background-size:4px 4px}.cartridge-logo{filter:saturate(.9) contrast(1.03)}
.research-deck{padding-top:30px}.research-bridge{top:-56px;height:88px}.research-console{width:min(100%,980px)}.report-cartridges{gap:clamp(24px,4vw,62px)}.research-deck .report-cover{background:radial-gradient(240px circle at var(--light-x,-200px) var(--light-y,-200px),#ffffff14,transparent 70%),linear-gradient(116deg,#50514e,#242523 70%)}

/* Reader and ending */
.reader{background:#080909fb}.reader header{background:#090a0aeb}.reader-body{max-width:min(96vw,1600px)}.reader-body>img{box-shadow:0 28px 70px #000b}.reader header button svg{border-color:#ffffff30}.reader header button:hover svg{background:var(--orange);border-color:var(--orange);color:#fff}
.project-video-stage{position:relative;min-height:calc(100svh - 120px);display:grid;place-items:center;align-content:center;gap:18px;padding:clamp(28px,4vw,64px);overflow:hidden;background:radial-gradient(ellipse at 50% 42%,#8fff8d38,transparent 58%),#050606;border-bottom:1px solid #ffffff18}.project-video-stage:before{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(115deg,transparent 38%,#ffffff0a 49%,transparent 60%);transform:translateX(-100%);animation:project-video-scan 1.1s .25s var(--ease-out) forwards}.project-video-stage video{position:relative;z-index:1;display:block;width:min(100%,1600px);max-height:calc(100svh - 220px);aspect-ratio:16/9;object-fit:contain;background:#000;box-shadow:0 35px 90px #000c}.project-video-meta{position:relative;z-index:1;width:min(100%,1600px);display:flex;align-items:center;justify-content:space-between;color:#9d9e99;font:700 9px/1 ui-monospace,monospace;letter-spacing:.14em}.project-video-meta span{color:#9dff91}.project-video-stage>p{position:relative;z-index:1;margin:0;color:#8e908b;font-size:11px;letter-spacing:.08em}@keyframes project-video-scan{to{transform:translateX(100%)}}@media(max-width:700px){.project-video-stage{min-height:auto;padding:32px 10px 42px;gap:13px}.project-video-stage video{max-height:none}.project-video-stage>p{font-size:9px;text-align:center}.project-video-meta{font-size:7px}}@media(prefers-reduced-motion:reduce){.project-video-stage:before{animation:none;display:none}}
.contact{position:relative;min-height:100svh;max-width:none;padding-inline:clamp(24px,7vw,110px);display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:60px;overflow:hidden}.contact:before{content:"END OF ARCHIVE";position:absolute;left:7vw;top:15%;color:#666962;font:700 9px/1 ui-monospace,monospace;letter-spacing:.18em}.contact h2{--ripple-x:50%;--ripple-y:50%;position:relative;isolation:isolate;overflow:clip;font-size:clamp(56px,9.5vw,158px);font-weight:650;line-height:.78;letter-spacing:-.045em}.contact h2:before{content:"";position:absolute;z-index:-1;inset:0;pointer-events:none;background:radial-gradient(190px circle at var(--ripple-x) var(--ripple-y),#8fff8d2b 0,#8fff8d10 38%,transparent 72%);opacity:0;transition:opacity .24s ease}.contact h2.is-ripple-active:before{opacity:1}.contact h2 em{font-family:Georgia,"Times New Roman",serif;font-weight:400;color:var(--blue)}.contact-title-ripple{--ripple-color:#9dff91;position:absolute;z-index:2;left:0;top:0;width:var(--ripple-size,180px);aspect-ratio:1;border:1px solid var(--ripple-color);border-radius:50%;pointer-events:none;mix-blend-mode:screen;box-shadow:inset 0 0 26px color-mix(in srgb,var(--ripple-color) 13%,transparent);transform:translate(-50%,-50%) scale(.12);opacity:.72;animation:contact-ripple .9s cubic-bezier(.16,1,.3,1) forwards}.contact-title-ripple:after{content:"";position:absolute;inset:27%;border:1px solid color-mix(in srgb,var(--ripple-color) 72%,transparent);border-radius:inherit;animation:contact-ripple-core .9s cubic-bezier(.16,1,.3,1) forwards}.contact-title-ripple.is-warm{--ripple-color:#8fff8d}@keyframes contact-ripple{55%{opacity:.38}to{transform:translate(-50%,-50%) scale(1);opacity:0}}@keyframes contact-ripple-core{to{inset:6%;opacity:0}}.contact-info{position:relative;border-top:1px solid #ffffff2a}.contact-info:after{content:"PRESS R TO REPLAY";position:absolute;left:18px;bottom:-36px;color:#777a74;font:700 8px/1 ui-monospace,monospace;letter-spacing:.14em}

body.is-entering .hero>img{animation:hero-develop .95s var(--ease-out) both}body.is-entering .hero-object{animation:object-settle .9s var(--ease-out) both}@keyframes hero-develop{from{filter:blur(14px) brightness(.35);transform:scale(1.04)}to{filter:none;transform:none}}@keyframes object-settle{from{opacity:0;translate:0 24px;filter:blur(8px)}to{opacity:1;translate:0 0;filter:none}}

@media(max-width:900px){.boot-stage{grid-template-columns:1fr;text-align:center}.boot-orbit{width:min(58vw,320px);margin:auto}.boot-copy>strong{max-width:none}.boot-copy>strong br{display:none}.boot-meter{margin-top:34px}.resume-layout{grid-template-columns:180px minmax(0,1fr)}.resume-side{grid-column:2}.contact{grid-template-columns:1fr;align-content:center}.contact-info{justify-self:start}}
@media(max-width:700px){.boot-stage{width:84vw;gap:34px}.boot-orbit{width:220px}.boot-copy>strong{font-size:42px}.boot-copy>strong br{display:block}.boot-kicker{font-size:7px}.boot-skip{right:20px;bottom:20px}.page-progress{display:none}.site-nav nav{gap:14px}.site-nav nav a{font-size:14px;letter-spacing:.02em}.site-nav nav a:nth-child(4),.site-nav nav a:nth-child(5){display:none}.section-title{grid-template-columns:1fr;margin-bottom:52px}.section-title h2{font-size:42px}.section-title span{justify-self:start;font-size:22px}.resume-layout{grid-template-columns:1fr}.resume-side{grid-column:auto}.works,.gaming,.reports,.ai-coding{padding-inline:20px}.contact{padding-inline:20px}.contact h2{font-size:56px}.cursor-flare{display:none!important}}
@media(prefers-reduced-motion:reduce){.boot-ambient,.boot-orbit:before,.boot-orbit:after,.boot-orbit i,.project-slide.active .vinyl-shell,.cursor-ring i{animation:none!important}.boot-sequence{transition-duration:.01ms}.cursor-flare,.site-cursor{display:none!important}}
@media(pointer:coarse),(max-width:700px){.contact h2:before,.contact-title-ripple{display:none}}
@media(prefers-reduced-motion:reduce){.contact-title-ripple{display:none}.contact h2.is-ripple-active:before{opacity:.55}}

/* Design thinking — an editorial index that opens into a true reading surface. */
.thinking{position:relative;scroll-margin-top:68px;max-width:none;margin:0;padding:clamp(110px,11vw,190px) clamp(24px,6vw,100px);background:var(--paper);color:#111312;border-top:1px solid #111312;overflow:hidden}
.thinking:before{content:"";position:absolute;left:0;right:0;top:0;height:8px;background:linear-gradient(90deg,#111312 0 58%,var(--blue) 58% 83%,var(--orange) 83%)}
.thinking-heading{max-width:1500px;margin:auto;display:grid;grid-template-columns:minmax(190px,.55fr) minmax(0,1.45fr);gap:30px 70px;align-items:start}
.thinking-heading>span{padding-top:13px;font:700 9px/1 ui-monospace,monospace;letter-spacing:.16em;color:#555750}
.thinking-heading h2{grid-column:2;margin:0;font:600 clamp(56px,7vw,96px)/.82 "Noto Sans SC","Source Han Sans SC",sans-serif;letter-spacing:-.04em}
.thinking-heading p{grid-column:2;max-width:34ch;margin:24px 0 0;font:400 clamp(18px,2.2vw,31px)/1.45 Georgia,"Songti SC",serif;color:#343632}
.thinking-index{max-width:1500px;margin:clamp(70px,9vw,140px) auto 0;border-top:1px solid #111312}
.thought-row{--row-x:0;position:relative;width:100%;display:grid;grid-template-columns:70px minmax(280px,.9fr) minmax(0,1.25fr) 70px;gap:clamp(16px,3vw,48px);align-items:center;padding:clamp(30px,4vw,58px) 0;border:0;border-bottom:1px solid #111312;background:transparent;color:#111312;text-align:left;overflow:hidden;isolation:isolate;cursor:pointer}
.thought-row:before{content:"";position:absolute;inset:0;z-index:-1;background:#111312;transform:translateX(-101%);transition:transform .62s var(--ease-out)}
.thought-row:hover:before,.thought-row:focus-visible:before{transform:none}.thought-row:hover,.thought-row:focus-visible{color:var(--paper)}
.thought-number{align-self:start;padding-top:5px;font:700 10px/1 ui-monospace,monospace;letter-spacing:.12em;color:var(--blue);transition:color .3s}.thought-row:nth-child(2) .thought-number{color:var(--orange)}
.thought-row strong{font:500 clamp(28px,3.3vw,52px)/1.08 Georgia,"Songti SC",serif;letter-spacing:-.025em}
.thought-tags{display:flex;flex-wrap:wrap;gap:8px}.thought-tags i{padding:7px 9px;border:1px solid #111312;font:700 8px/1 ui-monospace,monospace;font-style:normal;letter-spacing:.08em;transition:border-color .3s,color .3s,transform .35s var(--ease-out)}
.thought-row:hover .thought-tags i,.thought-row:focus-visible .thought-tags i{border-color:#eeeae055;color:#d2cec5}.thought-row:hover .thought-tags i:nth-child(2n){transform:translateY(-3px)}
.thought-arrow{justify-self:end;width:50px;height:50px;display:grid;place-items:center;border:1px solid #111312;border-radius:50%;transition:transform .45s var(--ease-out),background-color .3s,border-color .3s}.thought-arrow svg{width:24px;fill:none;stroke:currentColor;stroke-width:1.4}.thought-row:hover .thought-arrow,.thought-row:focus-visible .thought-arrow{transform:translateX(7px) rotate(-8deg);background:var(--blue);border-color:var(--blue)}.thought-row:nth-child(2):hover .thought-arrow,.thought-row:nth-child(2):focus-visible .thought-arrow{background:var(--orange);border-color:var(--orange)}
.thought-row:focus-visible{outline:2px solid var(--blue);outline-offset:5px}.thinking-foot{max-width:1500px;margin:22px auto 0;display:flex;justify-content:space-between;color:#6c6e68;font:700 8px/1 ui-monospace,monospace;letter-spacing:.14em}.thinking-foot b{color:#111312}

.thinking-reader{position:fixed;inset:0;z-index:1000;overflow:auto;background:#090b0b;color:#f4f1e9;visibility:hidden;clip-path:inset(0 0 100% 0);transition:clip-path .68s var(--ease-out),visibility .68s;scrollbar-color:#8fff8d #090b0b;color-scheme:dark}
.thinking-reader.open{visibility:visible;clip-path:inset(0)}.thinking-reader.closing{clip-path:inset(100% 0 0 0)}
.thinking-reader>header{position:sticky;top:0;z-index:9;height:72px;display:flex;align-items:center;justify-content:space-between;padding:0 clamp(22px,4vw,64px);background:#090b0be8;border-bottom:1px solid #ffffff20;backdrop-filter:blur(14px)}
.thinking-reader>header>a{color:#f4f1e9;font:500 15px/1 Georgia,"Times New Roman",serif;text-decoration:none}.thinking-reader>header button{display:flex;align-items:center;gap:12px;padding:0;border:0;background:transparent;color:#f4f1e9}.thinking-reader>header button span{font:700 8px/1 ui-monospace,monospace;letter-spacing:.14em;color:#a7a9a4}.thinking-reader>header button svg{width:42px;height:42px;padding:11px;border:1px solid #ffffff58;border-radius:50%;fill:none;stroke:currentColor;stroke-width:1.4;transition:transform .38s var(--ease-out),background-color .2s,color .2s,border-color .2s}.thinking-reader>header button:hover svg{transform:rotate(90deg);background:#f4f1e9;color:#090b0b;border-color:#f4f1e9}
.thinking-reader-layout{max-width:1560px;margin:auto;display:grid;grid-template-columns:minmax(230px,.42fr) minmax(0,1.58fr);gap:clamp(48px,8vw,140px);padding:clamp(65px,8vw,130px) clamp(24px,6vw,100px) 150px}
.thinking-reader-layout>aside{position:sticky;top:118px;align-self:start;display:flex;flex-direction:column;min-height:calc(100vh - 190px);border-top:1px solid #ffffff52;padding-top:18px}
.thinking-reader-layout>aside>span{color:#9dff91;font:700 10px/1 ui-monospace,monospace;letter-spacing:.14em}.thinking-reader-layout>aside nav{display:grid;margin-top:42px;border-top:1px solid #ffffff20}.thinking-reader-layout>aside nav a{display:grid;grid-template-columns:38px 1fr;gap:9px;padding:13px 0;border-bottom:1px solid #ffffff20;color:#b9bbb6;text-decoration:none;font-size:11px;line-height:1.5;transition:color .2s,transform .3s var(--ease-out)}.thinking-reader-layout>aside nav a:hover{transform:translateX(6px);color:#fff}.thinking-reader-layout>aside nav a span{font:700 8px/1.5 ui-monospace,monospace;color:#9dff91}.thinking-reader-layout>aside>b{margin-top:auto;font:700 9px/1.5 ui-monospace,monospace;letter-spacing:.13em;color:#8f918c}
.thinking-reader article{max-width:960px}.thinking-reader article>h1{max-width:13ch;margin:0 0 clamp(70px,8vw,120px);font:500 clamp(52px,6.3vw,96px)/.94 Georgia,"Songti SC",serif;letter-spacing:-.04em;text-wrap:balance}.thinking-reader.open article>h1{animation:thought-title-in .85s .22s var(--ease-out) both}
.thought-intro{max-width:34ch;margin:0 0 clamp(80px,10vw,150px)!important;font:400 clamp(22px,2.3vw,34px)/1.65 Georgia,"Songti SC",serif!important;color:#d8d7d1!important}
.thinking-reader article section{position:relative;display:grid;grid-template-columns:76px minmax(0,1fr);column-gap:clamp(25px,4vw,64px);padding:clamp(50px,7vw,95px) 0;border-top:1px solid #ffffff42;scroll-margin-top:90px}
.thinking-reader article section>span{font:700 10px/1 ui-monospace,monospace;letter-spacing:.14em;color:#9dff91}.thinking-reader article section:nth-child(even)>span{color:#9dff91}
.thinking-reader article section>h2{margin:-8px 0 35px;font:500 clamp(30px,3.2vw,50px)/1.2 Georgia,"Songti SC",serif;letter-spacing:-.025em;color:#f4f1e9}.thinking-reader article section>p,.thinking-reader article section>ul{grid-column:2;max-width:72ch;margin:0 0 24px;font:400 clamp(15px,1.15vw,18px)/2 "Noto Sans SC","Source Han Sans SC","Microsoft YaHei",sans-serif;color:#c9cbc6}.thinking-reader article section>ul{padding:6px 0 4px;list-style:none}.thinking-reader article section>ul li{position:relative;padding:12px 0 12px 28px;border-bottom:1px solid #ffffff18}.thinking-reader article section>ul li:before{content:"";position:absolute;left:0;top:25px;width:10px;height:2px;background:#9dff91}
@keyframes thought-title-in{from{opacity:0;transform:translateY(55px);clip-path:inset(0 0 100%)}to{opacity:1;transform:none;clip-path:inset(0)}}

@media(max-width:800px){.thinking-heading{grid-template-columns:1fr}.thinking-heading h2,.thinking-heading p{grid-column:1}.thinking-heading h2{font-size:58px}.thought-row{grid-template-columns:42px minmax(0,1fr) 48px}.thought-tags{grid-column:2}.thought-arrow{grid-column:3;grid-row:1/3;width:42px;height:42px}.thinking-reader-layout{grid-template-columns:1fr;padding-top:45px}.thinking-reader-layout>aside{position:static;min-height:0}.thinking-reader-layout>aside nav{grid-template-columns:1fr 1fr;margin-top:25px}.thinking-reader-layout>aside>b{display:none}.thinking-reader article>h1{margin-top:20px;font-size:54px}.thinking-reader article section{grid-template-columns:45px minmax(0,1fr)}}
@media(max-width:520px){.thinking{padding-inline:20px}.thinking-heading p{font-size:19px}.thought-row{grid-template-columns:34px minmax(0,1fr) 40px;padding:34px 0;gap:12px}.thought-row strong{font-size:27px}.thought-tags{gap:5px}.thought-tags i{padding:5px 6px;font-size:6px}.thought-arrow{width:38px;height:38px}.thinking-foot{line-height:1.5}.thinking-reader>header{height:62px;padding-inline:16px}.thinking-reader>header button span{display:none}.thinking-reader-layout{padding:38px 20px 100px}.thinking-reader-layout>aside nav{display:none}.thinking-reader article>h1{font-size:43px;margin-bottom:65px}.thought-intro{font-size:20px!important;margin-bottom:80px!important}.thinking-reader article section{display:block;padding:48px 0}.thinking-reader article section>span{display:block;margin-bottom:20px}.thinking-reader article section>h2{font-size:29px;margin:0 0 27px}.thinking-reader article section>p,.thinking-reader article section>ul{font-size:15px;line-height:1.9}}
@media(prefers-reduced-motion:reduce){.thought-row:before,.thinking-reader{transition-duration:.01ms}.thinking-reader.open article>h1{animation:none}}

/* Delta Force deep analysis — a tactical dossier revealed from the loaded cartridge. */
.game-deep-dive{position:relative;width:100%;min-height:64px;margin-top:22px;padding:0 70px 0 20px;display:grid;grid-template-columns:auto 1fr;align-items:center;gap:18px;overflow:hidden;border:1px solid #8fff8d;background:#171813;color:#f1eee5;text-align:left;isolation:isolate;cursor:pointer;transition:color .28s,border-color .28s,transform .28s var(--ease-out)}
.game-deep-dive:before{content:"";position:absolute;inset:0;z-index:-1;background:var(--orange);transform:translateX(-101%);transition:transform .45s var(--ease-out)}.game-deep-dive:hover:before,.game-deep-dive:focus-visible:before{transform:none}.game-deep-dive:hover,.game-deep-dive:focus-visible{color:#080a08;transform:translateY(-2px)}
.game-deep-dive span{font:600 15px/1.1 "Noto Sans SC","Source Han Sans SC",sans-serif}.game-deep-dive small{color:#b7ffad;font:700 8px/1 ui-monospace,monospace;letter-spacing:.14em;transition:color .25s}.game-deep-dive:hover small,.game-deep-dive:focus-visible small{color:#080a08}.game-deep-dive svg{position:absolute;right:18px;width:31px;height:31px;padding:6px;border:1px solid currentColor;border-radius:50%;fill:none;stroke:currentColor;stroke-width:1.6;transition:transform .35s var(--ease-out)}.game-deep-dive:hover svg,.game-deep-dive:focus-visible svg{transform:translateX(5px)}.game-deep-dive:focus-visible{outline:2px solid #fff;outline-offset:4px}

.game-analysis-reader{position:fixed;inset:0;z-index:1100;overflow:auto;background:#090b09;color:#ece9df;visibility:hidden;clip-path:inset(0 0 100%);transition:clip-path .72s var(--ease-out),visibility .72s;scrollbar-color:#8fff8d #10120f}
.game-analysis-reader:before{content:"";position:fixed;inset:0;pointer-events:none;opacity:.13;background:linear-gradient(#ffffff05 1px,transparent 1px);background-size:100% 4px;mix-blend-mode:screen}.game-analysis-reader.open{visibility:visible;clip-path:inset(0)}.game-analysis-reader.closing{clip-path:inset(100% 0 0)}
.game-analysis-reader>header{position:sticky;top:0;z-index:12;height:72px;display:flex;align-items:center;justify-content:space-between;padding:0 clamp(22px,4vw,66px);background:#090b09e8;border-bottom:1px solid #ffffff1d;backdrop-filter:blur(16px)}.game-analysis-reader>header>div{display:flex;align-items:baseline;gap:22px}.game-analysis-reader>header small{color:var(--orange);font:700 8px/1 ui-monospace,monospace;letter-spacing:.15em}.game-analysis-reader>header b{font:500 13px/1 Georgia,"Times New Roman",serif;letter-spacing:.03em}.game-analysis-reader>header button{display:flex;align-items:center;gap:12px;padding:0;border:0;background:transparent;color:#ece9df;cursor:pointer}.game-analysis-reader>header button span{font:700 8px/1 ui-monospace,monospace;letter-spacing:.13em}.game-analysis-reader>header button svg{width:42px;height:42px;padding:11px;border:1px solid #ffffff4a;border-radius:50%;fill:none;stroke:currentColor;stroke-width:1.4;transition:transform .35s var(--ease-out),background-color .2s,color .2s}.game-analysis-reader>header button:hover svg,.game-analysis-reader>header button:focus-visible svg{transform:rotate(90deg);background:var(--orange);color:#080a08;border-color:var(--orange)}.game-analysis-reader>header button:focus-visible{outline:2px solid var(--orange);outline-offset:6px}
.game-analysis-layout{max-width:1600px;margin:auto;display:grid;grid-template-columns:minmax(210px,.38fr) minmax(0,1.62fr);gap:clamp(52px,8vw,145px);padding:clamp(58px,7vw,116px) clamp(24px,6vw,100px) 150px}.game-analysis-layout>aside{position:sticky;top:112px;align-self:start;min-height:calc(100svh - 165px);display:flex;flex-direction:column;padding-top:17px;border-top:1px solid #ffffff42}.game-analysis-layout>aside>span{color:var(--orange);font:700 10px/1 ui-monospace,monospace;letter-spacing:.16em}.game-analysis-layout>aside>b{margin-top:16px;font:400 25px/1 Georgia,"Times New Roman",serif}.game-analysis-layout>aside nav{display:grid;margin-top:45px;border-top:1px solid #ffffff1d}.game-analysis-layout>aside nav a{padding:13px 0;border-bottom:1px solid #ffffff1d;color:#8e918a;text-decoration:none;font-size:11px;transition:color .2s,transform .3s var(--ease-out)}.game-analysis-layout>aside nav a:hover,.game-analysis-layout>aside nav a:focus-visible{color:#f1eee5;transform:translateX(7px)}.game-analysis-layout>aside i{margin-top:auto;color:#72766f;font:700 8px/1.7 ui-monospace,monospace;font-style:normal;letter-spacing:.14em}
.game-analysis-layout>article{min-width:0;max-width:1040px}.game-analysis-hero{min-height:min(760px,76svh);display:flex;flex-direction:column;justify-content:center;border-top:1px solid #ffffff42;border-bottom:1px solid #ffffff42}.game-analysis-hero>span{color:var(--orange);font:700 9px/1 ui-monospace,monospace;letter-spacing:.17em}.game-analysis-hero h1{max-width:11ch;margin:34px 0 55px;font:400 clamp(55px,6.8vw,104px)/.92 Georgia,"Songti SC",serif;letter-spacing:-.04em;text-wrap:balance}.game-analysis-reader.open .game-analysis-hero h1{animation:delta-title-in .9s .2s var(--ease-out) both}.game-analysis-hero dl{display:grid;grid-template-columns:1fr 1.2fr;gap:20px;margin:0}.game-analysis-hero dl div{padding-top:13px;border-top:1px solid #ffffff2a}.game-analysis-hero dt{margin-bottom:8px;color:#858982;font:700 8px/1 ui-monospace,monospace;letter-spacing:.13em}.game-analysis-hero dd{margin:0;font-size:13px;line-height:1.7}
#gameAnalysisBody section{display:grid;grid-template-columns:72px minmax(0,1fr);gap:clamp(26px,4vw,60px);padding:clamp(70px,8vw,120px) 0;border-bottom:1px solid #ffffff32;scroll-margin-top:86px}#gameAnalysisBody section>span{color:var(--orange);font:700 10px/1 ui-monospace,monospace;letter-spacing:.15em}#gameAnalysisBody section h2{margin:-9px 0 46px;font:400 clamp(38px,4vw,61px)/1.08 Georgia,"Songti SC",serif;letter-spacing:-.035em}#gameAnalysisBody section h3{margin:52px 0 15px;font:600 clamp(19px,1.7vw,25px)/1.5 "Noto Sans SC","Source Han Sans SC",sans-serif}#gameAnalysisBody section p{max-width:72ch;margin:0 0 20px;color:#c7c8c1;font:400 clamp(15px,1.1vw,18px)/2 "Noto Sans SC","Source Han Sans SC","Microsoft YaHei",sans-serif}#gameAnalysisBody blockquote{max-width:66ch;margin:32px 0 42px;padding:28px 30px;border:1px solid #8fff8d66;background:#8fff8d0c;color:#d8d6cf;font:400 clamp(17px,1.5vw,23px)/1.8 Georgia,"Songti SC",serif}#gameAnalysisBody blockquote b{color:#fff;font-weight:500}.analysis-flow{max-width:none!important;padding:16px 18px;border-top:1px solid #8fff8d66;border-bottom:1px solid #8fff8d66;color:#c8ffc1!important;font-family:ui-monospace,"SFMono-Regular",Consolas,monospace!important;font-size:clamp(11px,.9vw,14px)!important;line-height:1.8!important;letter-spacing:.03em}.analysis-mode-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:22px}.analysis-mode-grid article{padding:24px;border:1px solid #ffffff24;background:#ffffff04}.analysis-mode-grid b{color:#fff;font:500 20px/1.2 Georgia,"Songti SC",serif}.analysis-mode-grid p{margin:16px 0 0!important;font-size:15px!important}
@keyframes delta-title-in{from{opacity:0;transform:translateY(48px);filter:blur(9px);clip-path:inset(0 0 100%)}to{opacity:1;transform:none;filter:none;clip-path:inset(0)}}

@media(max-width:800px){.game-deep-dive{grid-template-columns:1fr;padding-right:60px;gap:5px}.game-analysis-reader>header>div small{display:none}.game-analysis-layout{grid-template-columns:1fr;padding-top:40px}.game-analysis-layout>aside{position:static;min-height:0}.game-analysis-layout>aside nav{grid-template-columns:1fr 1fr;margin-top:24px}.game-analysis-layout>aside i{display:none}.game-analysis-hero{min-height:600px}.game-analysis-hero h1{font-size:58px}.game-analysis-hero dl{grid-template-columns:1fr}#gameAnalysisBody section{grid-template-columns:45px minmax(0,1fr)}.analysis-mode-grid{grid-template-columns:1fr}}
@media(max-width:520px){.game-analysis-reader>header{height:62px;padding-inline:16px}.game-analysis-reader>header button span{display:none}.game-analysis-reader>header b{font-size:11px}.game-analysis-layout{padding:34px 20px 95px}.game-analysis-layout>aside nav{display:none}.game-analysis-hero{min-height:520px}.game-analysis-hero h1{font-size:43px;margin:28px 0 42px}.game-analysis-hero dd{font-size:12px}#gameAnalysisBody section{display:block;padding:65px 0}#gameAnalysisBody section>span{display:block;margin-bottom:20px}#gameAnalysisBody section h2{font-size:34px;margin:0 0 36px}#gameAnalysisBody section h3{font-size:19px;margin-top:42px}#gameAnalysisBody section p{font-size:15px;line-height:1.9}#gameAnalysisBody blockquote{padding:22px 20px;margin-inline:0}.analysis-flow{padding:14px 0}}
@media(prefers-reduced-motion:reduce){.game-deep-dive:before,.game-analysis-reader{transition-duration:.01ms}.game-analysis-reader.open .game-analysis-hero h1{animation:none}}

/* V10 browser feedback fixes: stable vinyl, refined hardware, disciplined labels. */
.project-slide.active .vinyl-shell{animation:none!important}
.project-slide.active .vinyl-shell .vinyl{animation:vinyl-idle 22s linear infinite;transform-origin:50% 50%}
.project-slide.active:hover .vinyl-shell .vinyl{animation-play-state:paused}
.project-slide:hover .vinyl-shell{transform:translateX(-50%) translateY(-18px) rotate(1.5deg)}
.project-slide.is-opening .vinyl-shell{transform:translateX(-50%) translateY(-30px) rotate(4deg)}
@keyframes vinyl-idle{from{rotate:0deg}to{rotate:360deg}}

.crt-casing{padding:38px 42px 28px;border:1px solid #e7dfce55;border-radius:22px 22px 42px 42px;background:
linear-gradient(100deg,transparent 0 18%,#fff2 37%,transparent 55%),
linear-gradient(145deg,#d2cabc 0%,#aaa397 44%,#777269 100%);box-shadow:0 58px 90px #000d,0 4px 0 #47443f,inset 2px 2px 2px #fff9,inset -6px -7px 13px #3c3934,inset 0 0 0 1px #ffffff24}
.crt-casing:before{content:"";position:absolute;inset:10px;border-radius:15px 15px 34px 34px;border:1px solid #302f2c45;pointer-events:none}
.crt-brand{height:30px;padding:0 8px;color:#34332f;text-shadow:0 1px #fff8}.crt-brand b:before{content:"●";margin-right:9px;color:#8fff8d;font-size:8px}.crt-brand span{padding:5px 8px;border:1px solid #38373255;background:#d7d0c355;box-shadow:inset 0 1px #fff5}
.crt-screen-wrap{position:relative;padding:28px;border:1px solid #121311;border-radius:28px;background:linear-gradient(145deg,#343633,#171817);box-shadow:inset 0 8px 18px #000,inset 0 -2px 2px #ffffff2c,0 2px #ffffff35}
.crt-screen-wrap:after{content:"";position:absolute;inset:12px;border-radius:20px;border:1px solid #ffffff0d;pointer-events:none}
.crt-screen{border:1px solid #050605;border-radius:42px/30px;background:radial-gradient(ellipse at 46% 40%,#20231e 0%,#101310 63%,#070908 100%);box-shadow:inset 0 0 92px #000,inset 0 0 20px #607c4b30,0 1px #ffffff12}
.crt-deck{margin-top:4px;padding:22px 12px 4px}.cartridge-port{border:1px solid #5f5c55;background:linear-gradient(#171817,#30312e 42%,#171817);box-shadow:inset 0 11px 16px #030303,0 1px #fff4}.crt-control{border:1px solid #55534d;background:linear-gradient(#8f8a80,#66635c);color:#eee9dd;box-shadow:0 3px 5px #0006,inset 0 1px #fff5;text-shadow:0 1px 2px #000}.crt-control:hover{background:linear-gradient(#aaa398,#767168);box-shadow:0 5px 8px #0008,inset 0 1px #fff7}.crt-control:active{transform:translateY(2px);box-shadow:inset 0 2px 4px #0008}.crt-light{box-shadow:0 0 0 3px #574f45,0 0 12px #8fff8d}

.research-deck .report-cover{height:382px;grid-template-columns:66px minmax(0,1fr);grid-template-rows:minmax(0,1fr) auto;padding:22px 24px 25px;column-gap:16px}
.research-deck .report-grip{grid-column:1;grid-row:1/3;width:48px}
.research-deck .report-index{position:absolute!important;top:18px!important;right:22px!important;z-index:4}
.research-deck .report-preview{grid-column:2;grid-row:1;min-width:0;margin:0 0 16px!important;padding:12px!important}
.research-deck .report-preview img{height:188px}
.research-deck .report-label{grid-column:2;grid-row:2;min-width:0;gap:7px!important}
.research-deck .report-label small{display:block;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.35!important}
.research-deck .report-label strong{display:block;white-space:nowrap;font-size:clamp(19px,1.7vw,25px)!important;line-height:1.25!important;letter-spacing:-.02em}
.research-deck .report-label b{display:block;white-space:nowrap;line-height:1.35!important}

.thinking{background:#090b0a;color:#efede6;border-top:1px solid #ffffff16}
.thinking:before{height:2px;background:linear-gradient(90deg,var(--blue) 0 72%,var(--orange) 72%)}
.thinking-heading{grid-template-columns:minmax(160px,.38fr) minmax(0,1.62fr);gap:24px clamp(40px,7vw,110px)}
.thinking-heading>span{color:#777b74}
.thinking-heading h2{font-size:clamp(42px,5.4vw,78px);line-height:.9;letter-spacing:-.035em;color:#efede6}
.thinking-heading p{max-width:38ch;margin-top:20px;color:#a6a8a1;font:400 clamp(17px,1.8vw,25px)/1.55 "Noto Sans SC","Source Han Sans SC","Microsoft YaHei",sans-serif}
.thinking-index{border-top-color:#ffffff32}
.thought-row{border-bottom-color:#ffffff32;color:#efede6}
.thought-row:before{background:#efede6}
.thought-row:hover,.thought-row:focus-visible{color:#111312}
.thought-row strong{font-family:Georgia,"Songti SC",serif}
.thought-tags i{border-color:#ffffff38;color:#b9bbb4}
.thought-row:hover .thought-tags i,.thought-row:focus-visible .thought-tags i{border-color:#1113124a;color:#383a36}
.thought-arrow{border-color:#ffffff55}.thought-row:hover .thought-arrow,.thought-row:focus-visible .thought-arrow{color:#fff}
.thinking-foot{color:#777b74}.thinking-foot b{color:#d3d1ca}

@media(max-width:700px){.project-slide:hover .vinyl-shell{transform:translateX(-50%) translateY(-8px)}.crt-casing{padding:20px 16px 14px}.research-deck .report-cover{height:345px;grid-template-columns:58px minmax(0,1fr);padding:18px;column-gap:12px}.research-deck .report-grip{width:42px}.research-deck .report-preview img{height:155px}.research-deck .report-label strong{font-size:19px!important}.thinking-heading{grid-template-columns:1fr}.thinking-heading h2,.thinking-heading p{grid-column:1}.thinking-heading h2{font-size:42px}}
@media(prefers-reduced-motion:reduce){.project-slide.active .vinyl-shell .vinyl{animation:none!important}}

/* V11 unified module rhythm and legibility. */
:root{--blue:#8fff8d}
.section-title{width:100%;max-width:1500px!important;display:flex!important;align-items:baseline!important;justify-content:flex-start!important;gap:18px;margin:0 auto clamp(54px,7vw,96px)!important}
.section-title h2{flex:0 0 auto}
.section-title>span{position:static!important;inset:auto!important;margin:0 0 2px!important;color:#aaff9f!important;transform:rotate(-5deg)!important;transform-origin:left center;white-space:nowrap}

.thinking-heading{max-width:1500px;display:flex;flex-wrap:wrap;align-items:baseline;justify-content:flex-start;column-gap:18px;row-gap:0;margin:auto}
.thinking-heading h2{order:1;grid-column:auto;flex:0 0 auto;margin:0;color:#efede6;font:650 clamp(42px,5.4vw,78px)/.9 "Noto Sans SC","Source Han Sans SC","Microsoft YaHei",sans-serif;letter-spacing:-.035em}
.thinking-heading>span{order:2;padding:0;color:#aaff9f;font:italic 500 clamp(19px,2vw,30px)/1 "Segoe Print","Bradley Hand",cursive;letter-spacing:0;transform:rotate(-5deg);white-space:nowrap}
.thinking-heading p{order:3;flex:0 0 100%;max-width:42ch;margin:24px 0 0;color:#aeb0aa;font-size:clamp(16px,1.65vw,23px);line-height:1.6}
.thought-row strong{font:550 clamp(28px,3.3vw,52px)/1.08 "Noto Sans SC","Source Han Sans SC","Microsoft YaHei",sans-serif;letter-spacing:-.035em}

.project-meta{position:relative;z-index:8;margin-top:-12px!important;color:#e8e5dd!important}
.project-meta b{color:#9dff91!important}.project-meta strong{color:#f2eee6!important;font-weight:650!important}.project-meta small{color:#c4c1b9!important}

.resume>h1,.identity h2,.identity dt,.resume-group h3,.resume-group p b{color:#9dff91}
.resume>h1{text-shadow:0 0 24px #78d87424}.resume-group h3:after{background:linear-gradient(90deg,#9dff91,transparent)}
.identity dt{font-weight:600}.resume-group p b{font-weight:600}

.hero:before{background:radial-gradient(300px circle at var(--spot-x) var(--spot-y),#ffffff11 0,#e5f5df08 34%,transparent 72%);mix-blend-mode:soft-light}
.hero:after{background:radial-gradient(ellipse 34% 42% at 53% 84%,#060707d2 0%,#06070788 42%,transparent 76%),linear-gradient(180deg,#0002 0,transparent 48%,#090a0ae8 100%);box-shadow:inset 0 0 110px #000a}

.crt-screen-wrap:before{content:"";position:absolute;inset:28px;z-index:12;border-radius:42px/30px;background:#e9f2e7;opacity:0;pointer-events:none;transform-origin:center;mix-blend-mode:screen}
.crt.powering-on .crt-screen-wrap:before{animation:crt-power-flash 1.05s cubic-bezier(.16,1,.3,1) both}
.crt.powering-on .crt-screen{animation:crt-picture-lock 1.05s cubic-bezier(.16,1,.3,1) both}
@keyframes crt-power-flash{0%{opacity:.9;transform:scale(.08,.004);box-shadow:0 0 28px 8px #dfffdc}16%{opacity:1;transform:scale(1,.008);box-shadow:0 0 36px 12px #efffe8}34%{opacity:.32;transform:scale(1,1)}55%{opacity:.08}100%{opacity:0;transform:scale(1)}}
@keyframes crt-picture-lock{0%{filter:brightness(.15) contrast(1.8);transform:scaleY(.02)}18%{filter:brightness(1.8) contrast(1.4);transform:scaleY(.03)}38%{filter:brightness(1.22) contrast(1.16);transform:scaleY(1.008)}68%{filter:brightness(.9) contrast(1.08);transform:scaleY(.997)}100%{filter:none;transform:none}}

.research-console{border:1px solid #eee5d34a;background:linear-gradient(105deg,transparent 0 18%,#fff2 38%,transparent 58%),linear-gradient(145deg,#cec6b8,#a29b8f 54%,#716d65);box-shadow:0 54px 88px #000d,0 4px 0 #4a4742,inset 2px 2px 2px #fff9,inset -6px -7px 13px #3d3a35,inset 0 0 0 1px #ffffff24}
.research-console:before{content:"";position:absolute;inset:10px;border:1px solid #25262345;border-radius:11px 11px 25px 25px;pointer-events:none}
.research-console:after{content:"";position:absolute;left:16px;right:16px;top:16px;height:7px;pointer-events:none;background:radial-gradient(circle,#55524c 0 2px,#d6cec0 2.5px 4px,transparent 4.5px) left center/14px 7px no-repeat,radial-gradient(circle,#55524c 0 2px,#d6cec0 2.5px 4px,transparent 4.5px) right center/14px 7px no-repeat}
.research-console>header{position:relative;z-index:2;text-shadow:0 1px #fff7}.research-screen{border:1px solid #080908;box-shadow:inset 0 0 75px #000,inset 0 0 17px #607c4b3d,0 2px #ffffff30}.research-slot{border:1px solid #57554f;background:linear-gradient(#151614,#30312e 45%,#171816);box-shadow:inset 0 11px 15px #030303,0 1px #fff4}
.research-bridge{background:linear-gradient(#d8d1c4,#514f4a);box-shadow:0 0 0 1px #000,0 0 20px #8fff8d40}.research-bridge:before,.research-bridge:after{border:2px solid #514b42;box-shadow:0 0 0 2px #bdb4a5,0 0 14px #8fff8d}

@media(max-width:700px){.section-title{align-items:flex-end!important;gap:10px;margin-bottom:48px!important}.section-title>span{font-size:18px!important}.thinking-heading{column-gap:10px}.thinking-heading h2{font-size:42px}.thinking-heading>span{font-size:18px}.thinking-heading p{margin-top:18px}.project-meta{margin-top:0!important}.crt-screen-wrap:before{inset:12px;border-radius:26px/20px}}

/* Portfolio archive — tactile floppy drive */
.works{min-height:auto;padding-bottom:clamp(110px,12vw,180px)}
.project-archive{--project-accent:var(--phosphor);position:relative;max-width:1320px;margin:0 auto;padding:clamp(20px,3vw,38px);border:1px solid color-mix(in srgb,var(--phosphor) 20%,transparent);background:linear-gradient(180deg,#111410 0,#0a0c0a 100%);box-shadow:0 42px 90px #0009,inset 0 1px #ffffff0d}
.project-archive:before{content:"";position:absolute;inset:10px;pointer-events:none;border:1px solid #ffffff0b}
.project-console{position:relative;max-width:980px;margin:0 auto clamp(36px,5vw,66px);padding:16px 18px 18px;border-radius:18px;background:linear-gradient(145deg,#bcb5a9 0,#8f897f 48%,#b9b1a4 100%);box-shadow:0 24px 50px #000a,inset 0 1px #fff9,inset 0 -2px #514e48}
.project-console-rail{display:flex;justify-content:space-between;padding:0 10px 12px;color:#252722;font:600 10px/1 var(--pixel),ui-monospace,monospace;letter-spacing:.08em}
.project-console-screen{position:relative;min-height:210px;padding:clamp(28px,4vw,48px);overflow:hidden;border:12px solid #222520;border-radius:28px/22px;background:radial-gradient(circle at 70% 32%,#162116 0,#0c110d 42%,#080a08 76%);box-shadow:inset 0 0 34px #000,inset 0 0 0 1px #8fff8d38}
.project-console-screen:before{content:"";position:absolute;inset:0;pointer-events:none;opacity:.18;background:repeating-linear-gradient(0deg,transparent 0 3px,#8fff8d17 3px 4px)}
.project-console-screen small,.project-console-screen strong,.project-console-screen p{position:relative;z-index:1;display:block}
.project-console-screen small{color:var(--phosphor);font:400 16px/1 var(--pixel),ui-monospace,monospace;letter-spacing:.12em}
.project-console-screen strong{max-width:13ch;margin-top:22px;color:var(--paper);font:400 clamp(38px,5vw,72px)/.82 var(--pixel),ui-monospace,monospace;letter-spacing:.01em;text-wrap:balance}
.project-console-screen p{margin:18px 0 0;color:#c9cec5;font-size:14px}
.project-console-screen i{position:absolute;right:36px;bottom:34px;width:10px;height:10px;background:var(--phosphor);box-shadow:0 0 18px var(--phosphor)}
.project-drive{display:grid;grid-template-columns:1fr auto;align-items:center;gap:18px;width:min(72%,620px);margin:14px auto 0;padding:0 18px;height:42px;border-radius:6px;background:#171916;box-shadow:inset 0 4px 10px #000,0 1px #fff5}
.project-drive-slot{position:absolute;left:50%;translate:-50% -38px;width:min(46%,410px);height:8px;border-radius:50%;background:#171815;box-shadow:inset 0 3px 5px #000,0 1px #e8e0d066}
.project-drive b{grid-column:1;color:#dad6ce;text-align:center;font:400 13px/1 var(--pixel),ui-monospace,monospace;letter-spacing:.08em}
.project-drive em{width:8px;height:8px;border-radius:50%;background:#556052;box-shadow:inset 0 0 0 1px #0008}
.project-archive.is-reading .project-console-screen{animation:project-screen-read .48s steps(2,end)}
.project-archive.is-reading .project-console-screen i,.project-archive.is-reading .project-drive em{background:var(--phosphor);box-shadow:0 0 16px var(--phosphor)}
.floppy-rack{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:clamp(16px,2.2vw,34px);align-items:start}
.project-floppy{position:relative;min-width:0;padding:0 0 18px;border:0;background:transparent;color:var(--paper);text-align:left;cursor:pointer;isolation:isolate}
.floppy-media{position:relative;display:block;aspect-ratio:1;transform-origin:50% 85%;transition:transform .34s var(--ease-out),filter .28s ease}
.floppy-media:before{content:"";position:absolute;z-index:-1;left:13%;right:13%;bottom:2%;height:18%;border-radius:50%;background:#000;filter:blur(20px);opacity:.78;transition:opacity .3s,transform .3s}
.floppy-media img{display:block;width:100%;height:100%;object-fit:contain;filter:saturate(.92) contrast(1.04);transition:filter .28s ease}
.floppy-copy{display:grid;gap:7px;margin-top:14px;padding-top:14px;border-top:1px solid #ffffff1a;transition:border-color .25s,transform .25s}
.floppy-copy b{overflow:hidden;color:#eae8e2;font:400 18px/1 var(--pixel),ui-monospace,monospace;letter-spacing:.035em;text-overflow:ellipsis;white-space:nowrap}
.floppy-copy small{color:#a7aaa3;font-size:13px;line-height:1.45}
.project-floppy:hover .floppy-media,.project-floppy:focus-visible .floppy-media,.project-floppy.is-active .floppy-media{transform:translateY(-12px) rotate(-1.2deg);filter:drop-shadow(0 18px 22px #000b)}
.project-floppy:hover .floppy-media img,.project-floppy:focus-visible .floppy-media img,.project-floppy.is-active .floppy-media img{filter:saturate(1.04) contrast(1.06) brightness(1.04)}
.project-floppy:hover .floppy-copy,.project-floppy:focus-visible .floppy-copy,.project-floppy.is-active .floppy-copy{border-color:var(--phosphor);transform:translateY(-3px)}
.project-floppy.is-active .floppy-copy b{color:var(--phosphor)}
.project-floppy:focus-visible{outline:1px solid var(--phosphor);outline-offset:10px}
.project-floppy.is-opening{z-index:8;pointer-events:none}
.project-floppy.is-opening .floppy-media{animation:floppy-insert .62s cubic-bezier(.32,.72,.18,1) both}
.project-meta{width:auto!important;margin:26px auto 0!important}
.project-instructions{margin:18px 0 0;color:#737870;text-align:center;font:400 13px/1.3 var(--pixel),ui-monospace,monospace;letter-spacing:.06em}
.project-instructions span{color:var(--phosphor)}
@keyframes floppy-insert{0%{transform:translateY(-12px) scale(1)}38%{transform:translateY(-34px) scale(1.035)}70%{transform:translateY(-88px) scale(.92)}100%{transform:translateY(-96px) scale(.86);opacity:.22}}
@keyframes project-screen-read{0%,100%{filter:none}28%{filter:brightness(1.8) contrast(1.25)}44%{filter:brightness(.45)}65%{filter:brightness(1.25)}}
@media(max-width:980px){.floppy-rack{grid-template-columns:repeat(2,minmax(0,1fr));gap:34px}.project-console{max-width:760px}.project-console-screen{min-height:190px}.project-console-screen strong{font-size:58px}}
@media(max-width:700px){.works{padding-inline:20px}.project-archive{padding:13px}.project-console{padding:12px 10px 14px;border-radius:14px}.project-console-rail{font-size:8px}.project-console-rail span:last-child{display:none}.project-console-screen{min-height:160px;padding:24px;border-width:9px;border-radius:20px/16px}.project-console-screen small{font-size:12px}.project-console-screen strong{margin-top:16px;font-size:42px}.project-console-screen p{margin-top:12px;font-size:12px}.project-drive{width:88%}.floppy-rack{gap:24px 14px}.floppy-copy b{font-size:15px}.floppy-copy small{font-size:11px}.project-meta{display:none}.project-instructions{font-size:10px}}
@media(prefers-reduced-motion:reduce){.project-floppy.is-opening .floppy-media,.project-archive.is-reading .project-console-screen{animation:none}.project-floppy:hover .floppy-media,.project-floppy:focus-visible .floppy-media,.project-floppy.is-active .floppy-media{transform:translateY(-4px)}}
@media(prefers-reduced-motion:reduce){.crt.powering-on .crt-screen-wrap:before,.crt.powering-on .crt-screen{animation:none!important}}

/* V12 cartridge cross-link and tactile transport controls. */
.game-crosslink{position:relative;width:100%;min-height:60px;margin-top:20px;padding:0 68px 0 20px;display:grid;grid-template-columns:auto 1fr;align-items:center;gap:18px;overflow:hidden;border:1px solid #8fff8d;background:#171813;color:#f1eee5;text-align:left;isolation:isolate;cursor:pointer;transition:color .28s,border-color .28s,transform .28s var(--ease-out)}
.game-crosslink:before{content:"";position:absolute;inset:0;z-index:-1;background:var(--orange);transform:translateX(-101%);transition:transform .45s var(--ease-out)}.game-crosslink:hover:before,.game-crosslink:focus-visible:before{transform:none}.game-crosslink:hover,.game-crosslink:focus-visible{color:#080a08;transform:translateY(-2px)}
.game-crosslink span{font:600 14px/1.1 "Noto Sans SC","Source Han Sans SC",sans-serif}.game-crosslink small{color:#b7ffad;font:700 8px/1 ui-monospace,monospace;letter-spacing:.14em;transition:color .25s}.game-crosslink:hover small,.game-crosslink:focus-visible small{color:#080a08}.game-crosslink svg{position:absolute;right:18px;width:30px;height:30px;padding:6px;border:1px solid currentColor;border-radius:50%;fill:none;stroke:currentColor;stroke-width:1.6;transition:transform .35s var(--ease-out)}.game-crosslink:hover svg,.game-crosslink:focus-visible svg{transform:translateX(5px)}.game-crosslink:focus-visible{outline:2px solid #fff;outline-offset:4px}
.game-report-jump{min-height:46px;margin-top:10px;border-color:#8fff8d}.game-report-jump:before{background:#8fff8d}.game-report-jump small{color:#b7ffad}.game-report-jump svg{width:27px;height:27px}

.crt-controls{gap:8px;padding:5px;border:1px solid #625f58;border-radius:7px;background:linear-gradient(#77736b,#514f49);box-shadow:0 3px 7px #0007,inset 0 1px #fff5}
.crt-controls button{position:relative;height:38px;min-width:46px;padding:0 13px;border:1px solid #363733;border-radius:5px;background:linear-gradient(180deg,#969188 0%,#737068 47%,#5a5852 100%);color:#f2ede3;box-shadow:0 3px 0 #3d3b37,0 5px 8px #0007,inset 0 1px #fff8,inset 0 -1px #2d2d2b;text-shadow:0 1px 2px #000;font:700 8px/1 ui-monospace,monospace;letter-spacing:.08em;transition:transform .12s,box-shadow .12s,filter .2s}
.crt-controls button:before{content:"";position:absolute;inset:3px;border:1px solid #ffffff17;border-radius:3px;pointer-events:none}.crt-controls button:hover{background:linear-gradient(180deg,#aca69b,#807c73 48%,#64615a);filter:brightness(1.05)}.crt-controls button:active{transform:translateY(3px);box-shadow:0 0 0 #3d3b37,0 1px 3px #0008,inset 0 2px 5px #363632}.crt-controls button:focus-visible{outline:2px solid #aaff9f;outline-offset:4px}.crt-controls svg{width:18px;height:18px;stroke-width:1.8}.crt-controls #ejectGame{min-width:58px;color:#c8ffc1}
.report-cover.linked-highlight{z-index:8;animation:linked-report 1.8s cubic-bezier(.16,1,.3,1)}
@keyframes linked-report{0%{transform:translateY(0);filter:brightness(1)}22%{transform:translateY(-24px) scale(1.025);filter:brightness(1.32);box-shadow:0 0 0 2px #8fff8d,0 45px 70px #000d,0 0 45px #8fff8d55}65%{transform:translateY(-16px) scale(1.015);filter:brightness(1.12);box-shadow:0 0 0 1px #8fff8d,0 38px 60px #000c,0 0 28px #8fff8d33}100%{transform:none;filter:none}}
@media(max-width:800px){.game-crosslink{grid-template-columns:1fr;padding-right:58px;gap:5px}}
@media(max-width:700px){.crt-controls{display:inline-flex;margin-top:12px!important}.crt-controls button{height:40px;min-width:50px}.game-crosslink{margin-top:18px}}
@media(prefers-reduced-motion:reduce){.game-crosslink:before{transition-duration:.01ms}.report-cover.linked-highlight{animation:none;outline:2px solid #8fff8d;outline-offset:6px}}

/* V2.1 — unified phosphor-green refinement. */
.site-nav{
  inset:0 0 auto;width:100%;height:68px;padding:0 clamp(28px,4.8vw,76px);
  border:0;border-bottom:1px solid rgba(255,255,255,.1);clip-path:none;
  background:linear-gradient(180deg,rgba(10,11,10,.94),rgba(13,14,13,.78));
  box-shadow:0 12px 32px rgba(0,0,0,.2),inset 0 -1px rgba(143,255,141,.025);
  backdrop-filter:blur(18px) saturate(.82);
}
.site-nav:before,.site-nav:after{display:none}
.wordmark{font-family:Georgia,"Times New Roman",serif;font-size:19px;letter-spacing:0;color:var(--ink);text-shadow:none}
.site-nav nav{gap:clamp(24px,3vw,48px);font-size:15px;color:rgba(242,242,237,.82)}

.hero-v2-status{padding:9px 14px;gap:3px;font-size:18px}
.screen-switch-control{right:9%;bottom:8%;gap:10px;padding:6px 8px;font-size:15px}
.hero-v2 .scroll-mark{right:4vw;bottom:22px;padding:6px 9px;font-size:14px;letter-spacing:.14em}

.hero-stickers{pointer-events:none}
.sticker{
  appearance:none;position:absolute;width:clamp(48px,4.8vw,88px);padding:0;border:0;background:transparent;
  pointer-events:auto;filter:drop-shadow(0 8px 7px rgba(0,0,0,.68));transform-origin:center;
  animation:none;transition:filter .24s ease,scale .24s cubic-bezier(.16,1,.3,1);
}
.sticker img{display:block;width:100%;height:auto;pointer-events:none}
.sticker:hover,.sticker:focus-visible{scale:1.12;filter:drop-shadow(0 14px 10px rgba(0,0,0,.72)) drop-shadow(0 0 8px rgba(143,255,141,.22));animation:sticker-hover-breathe 1.2s ease-in-out infinite alternate}
.sticker.is-popping{animation:sticker-pop .42s steps(2,end)}
.s1{left:48%;top:20%}.s2{left:46%;top:55%;width:clamp(60px,6.2vw,104px)}.s3{right:5%;top:29%}.s4{right:8%;bottom:12%;width:clamp(54px,5.7vw,98px)}.s5{left:50%;bottom:6%;width:clamp(52px,5vw,88px)}.s6{right:2.4%;top:53%;width:clamp(43px,4.2vw,74px)}
.pixel-heart{position:fixed;z-index:1300;color:var(--phosphor);font:30px/1 "WZ Pixel",monospace;pointer-events:none;text-shadow:0 0 7px rgba(143,255,141,.55);animation:pixel-heart-rise .72s steps(6,end) forwards}
@keyframes sticker-hover-breathe{from{scale:1.08}to{scale:1.17}}
@keyframes sticker-pop{0%,100%{translate:0 0;rotate:0}20%{translate:-4px 1px;rotate:-4deg}40%{translate:4px -2px;rotate:4deg}60%{translate:-3px -1px;rotate:-3deg}80%{translate:3px 2px;rotate:3deg}}
@keyframes pixel-heart-rise{0%{opacity:0;translate:-50% 8px;scale:.6}18%{opacity:1}70%{opacity:1;translate:-50% -34px;scale:1}100%{opacity:0;translate:-50% -54px;scale:.7}}

.crt-stage:after{content:"";position:absolute;z-index:-1;left:17%;right:7%;bottom:1.5%;height:15%;pointer-events:none;background:linear-gradient(180deg,rgba(184,176,162,.18),rgba(143,255,141,.035) 38%,transparent);filter:blur(12px);transform:perspective(440px) rotateX(68deg) scaleY(.58);opacity:.64;mix-blend-mode:screen}
#crtCanvas{filter:drop-shadow(0 38px 28px rgba(0,0,0,.68)) drop-shadow(-10px -8px 18px rgba(255,239,210,.08)) drop-shadow(8px 0 16px rgba(143,255,141,.08))}

.section-title>span,.thinking-heading>span{font-family:"WZ Pixel",monospace!important;font-style:normal!important;color:var(--phosphor)!important;letter-spacing:.045em!important;transform:rotate(-2deg)!important}
.contact h2,.contact h2 em{font-family:"WZ Pixel",monospace;font-weight:400;letter-spacing:.015em;color:var(--ink)}
.contact h2 em{color:var(--phosphor)}
.contact h2:before{background:repeating-linear-gradient(90deg,transparent 0 9px,rgba(143,255,141,.09) 9px 11px);mask-image:linear-gradient(90deg,transparent,black 12%,black 88%,transparent)}
.contact-title-ripple{--ripple-color:var(--phosphor);border-radius:0;mix-blend-mode:screen;box-shadow:inset 0 0 0 1px rgba(143,255,141,.2);animation:contact-pixel-ripple .72s steps(7,end) forwards}
.contact-title-ripple:before,.contact-title-ripple:after{content:"";position:absolute;background:var(--ripple-color)}
.contact-title-ripple:before{left:50%;top:-18%;width:1px;height:136%}.contact-title-ripple:after{left:-18%;top:50%;width:136%;height:1px;border:0;border-radius:0;animation:none}
.contact-title-ripple.is-warm{--ripple-color:var(--phosphor)}
@keyframes contact-pixel-ripple{0%{opacity:.9;transform:translate(-50%,-50%) scale(.08)}65%{opacity:.42}100%{opacity:0;transform:translate(-50%,-50%) scale(1)}}

@media(max-width:980px){.site-nav{inset:0 0 auto;height:60px;padding-inline:18px}.wordmark{font-size:17px}.hero-v2-status{font-size:16px}}
@media(max-width:700px){.site-nav{inset:0 0 auto}.sticker{scale:.78}.screen-switch-control{font-size:13px}.hero-v2-status{font-size:14px}}
@media(prefers-reduced-motion:reduce){.sticker:hover,.sticker:focus-visible{animation:none;scale:1.08}.sticker.is-popping,.pixel-heart{animation:none}.crt-stage:after{opacity:.35}}

/* V2.2 — photographic CRT stage: supplied backdrop, side-lit shell and soft reflection. */
.hero.hero-v2{
  isolation:isolate;
  background-color:#080a08;
  background-image:linear-gradient(90deg,rgba(4,7,4,.08),rgba(4,7,4,.02) 55%,rgba(0,0,0,.12)),url("assets/v7/backgrounds/hero-stage.png");
  background-size:cover;
  background-position:center bottom;
  background-repeat:no-repeat;
}
.hero.hero-v2:before{opacity:.2;background-image:radial-gradient(rgba(143,255,141,.08) .65px,transparent .75px)}
.hero-v2-grid{opacity:.08}
.hero-v2-copy h1{
  text-shadow:0 0 2px rgba(219,255,214,.88),0 0 8px rgba(143,255,141,.26),0 0 26px rgba(143,255,141,.12),0 2px 0 #20311c;
}
.crt-stage:before{
  content:"";position:absolute;z-index:-2;left:23%;right:3%;bottom:0;height:22%;pointer-events:none;
  background:radial-gradient(ellipse at 50% 30%,rgba(208,194,168,.17),rgba(143,255,141,.05) 35%,rgba(0,0,0,.08) 61%,transparent 74%);
  filter:blur(16px);transform:perspective(520px) rotateX(70deg) scaleY(.7);mix-blend-mode:screen;
}
.crt-stage:after{
  left:25%;right:4%;bottom:-1%;height:18%;opacity:.46;
  background:linear-gradient(180deg,rgba(205,192,168,.16),rgba(143,255,141,.04) 35%,transparent 82%);
  filter:blur(18px);transform:perspective(520px) rotateX(72deg) scaleY(.62);
}
#crtCanvas{filter:drop-shadow(18px 34px 30px rgba(0,0,0,.67)) drop-shadow(-11px -9px 17px rgba(255,231,196,.1)) drop-shadow(12px 1px 18px rgba(143,255,141,.07))}
.screen-switch-flash{
  left:11%;right:4%;top:11%;bottom:13%;
  background:radial-gradient(ellipse at 48% 48%,rgba(214,255,207,.88) 0,rgba(143,255,141,.52) 12%,rgba(117,238,110,.2) 40%,transparent 76%);
  mix-blend-mode:screen;transform:scale(.72);filter:blur(22px);border-radius:48%;
}
.screen-switch-flash.is-switching{animation:screen-green-diffuse .44s cubic-bezier(.16,1,.3,1)}
@keyframes screen-green-diffuse{0%{opacity:0;transform:scale(.56);filter:blur(30px)}35%{opacity:.88;transform:scale(1);filter:blur(18px)}68%{opacity:.3;transform:scale(1.08);filter:blur(26px)}100%{opacity:0;transform:scale(1.16);filter:blur(38px)}}
.sticker{animation:sticker-drift 5.4s ease-in-out infinite alternate}
.sticker:nth-child(even){animation-direction:alternate-reverse;animation-duration:6.2s}
@keyframes sticker-drift{0%{translate:0 2px;rotate:-1.2deg}100%{translate:0 -11px;rotate:1.5deg}}
@media(max-width:700px){.hero.hero-v2{background-position:58% bottom}.crt-stage:before,.crt-stage:after{opacity:.3}.screen-switch-control{right:20%;font-size:12px}}
@media(prefers-reduced-motion:reduce){.sticker{animation:none}.screen-switch-flash.is-switching{animation:none;opacity:.32}}

/* Visual-system alignment: phosphor hover, pixel display type, larger contact bay */
.thought-row:before{background:rgba(143,255,141,.13);box-shadow:inset 0 0 0 1px rgba(143,255,141,.42),inset 0 0 42px rgba(143,255,141,.045);backdrop-filter:blur(5px)}
.thought-row:hover,.thought-row:focus-visible{color:var(--paper)}
.thought-row:hover .thought-tags i,.thought-row:focus-visible .thought-tags i{border-color:rgba(143,255,141,.48);color:#dfffdc;background:rgba(143,255,141,.07)}
.thought-row:hover .thought-arrow,.thought-row:focus-visible .thought-arrow,.thought-row:nth-child(2):hover .thought-arrow,.thought-row:nth-child(2):focus-visible .thought-arrow{color:#091008;background:rgba(143,255,141,.9);border-color:var(--phosphor);box-shadow:0 8px 28px rgba(143,255,141,.13)}
.thought-row:focus-visible{outline-color:var(--phosphor)}

.resume>h1{font:400 clamp(38px,4.8vw,76px)/.86 "WZ Pixel",ui-monospace,monospace;letter-spacing:.035em;color:var(--phosphor);text-shadow:0 0 24px rgba(143,255,141,.13)}
.resume-layout{font-family:"Noto Sans SC","Source Han Sans SC","Microsoft YaHei",sans-serif}
.identity h2 small,.resume-group time,.identity dt{font-family:"WZ Pixel",ui-monospace,monospace;letter-spacing:.045em}
.resume-group h3{font-weight:560;letter-spacing:.015em}

.contact{grid-template-columns:minmax(390px,.72fr) minmax(520px,1.28fr);gap:clamp(70px,9vw,150px);padding-inline:clamp(40px,7vw,110px)}
.contact h2{max-width:650px;font-size:clamp(54px,6.4vw,104px);line-height:.82;letter-spacing:.015em}
.contact-info{justify-self:stretch;display:grid;grid-template-columns:clamp(170px,14vw,220px) minmax(260px,1fr);gap:clamp(30px,4vw,64px);align-items:center;padding:clamp(26px,3vw,46px) 0;border-top:1px solid rgba(143,255,141,.28);border-bottom:1px solid rgba(143,255,141,.12);background:linear-gradient(90deg,rgba(143,255,141,.035),transparent)}
.contact-info:hover{background:linear-gradient(90deg,rgba(143,255,141,.07),transparent)}
.contact-info img{width:100%;height:auto;aspect-ratio:1;image-rendering:auto;border:10px solid #f4f2ec;box-shadow:0 24px 55px #0008}
.contact-info div{gap:20px;font-size:16px}
.contact-info div>span{display:grid;grid-template-columns:100px minmax(0,1fr);align-items:baseline;gap:18px}
.contact-info b{color:#a9afa5;font:400 16px/1 "WZ Pixel",ui-monospace,monospace;letter-spacing:.06em}
.contact-info a{color:var(--phosphor);font:400 clamp(18px,1.65vw,26px)/1.15 "WZ Pixel",ui-monospace,monospace;letter-spacing:.025em;text-decoration:none}
.contact-info a:hover{text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:7px}
.contact-info small{color:#c5c9c0;font-size:14px}
.contact-info:after{left:0}
@media(max-width:1050px){.contact{grid-template-columns:1fr;gap:64px}.contact h2{max-width:760px}.contact-info{width:100%}}
@media(max-width:700px){.resume>h1{font-size:42px;margin-bottom:58px}.contact{gap:46px}.contact h2{font-size:54px}.contact-info{grid-template-columns:112px minmax(0,1fr);gap:20px;padding:22px 0}.contact-info img{border-width:7px}.contact-info div{gap:14px}.contact-info div>span{display:grid;grid-template-columns:1fr;gap:6px}.contact-info b{font-size:13px}.contact-info a{font-size:16px}.contact-info small{font-size:12px}}

/* Global pointer click: phosphor square flash + outward pixel fragments */
.pixel-click-burst{position:fixed;z-index:1290;width:1px;height:1px;pointer-events:none;isolation:isolate;mix-blend-mode:screen}
.pixel-click-burst:before,.pixel-click-burst:after{content:"";position:absolute;left:0;top:0;translate:-50% -50%;pointer-events:none}
.pixel-click-burst:before{width:9px;height:9px;background:#d8ffd6;box-shadow:0 0 0 2px rgba(143,255,141,.86),0 0 12px 4px rgba(143,255,141,.72),0 0 28px 10px rgba(83,255,110,.28);animation:pixel-click-core .48s steps(6,end) forwards}
.pixel-click-burst:after{width:18px;height:18px;border:2px solid rgba(143,255,141,.9);box-shadow:0 0 16px rgba(143,255,141,.48),inset 0 0 9px rgba(143,255,141,.28);animation:pixel-click-frame .56s steps(7,end) forwards}
.pixel-click-burst i{position:absolute;left:0;top:0;width:var(--pixel-size);height:var(--pixel-size);translate:-50% -50%;background:var(--phosphor);box-shadow:0 0 7px 2px rgba(143,255,141,.58);animation:pixel-click-particle .62s cubic-bezier(.12,.72,.18,1) var(--pixel-delay) forwards}
@keyframes pixel-click-core{0%{opacity:0;scale:.35}18%{opacity:1;scale:1.25}45%{opacity:.88;scale:.82}100%{opacity:0;scale:2.1}}
@keyframes pixel-click-frame{0%{opacity:0;scale:.25;rotate:0deg}22%{opacity:.95;scale:.72}100%{opacity:0;scale:2.7;rotate:90deg}}
@keyframes pixel-click-particle{0%{opacity:1;transform:translate(0,0) rotate(0)}64%{opacity:.9}100%{opacity:0;transform:translate(var(--pixel-x),var(--pixel-y)) rotate(90deg)}}
.pixel-click-burst.is-reduced:before{animation:pixel-click-reduced .24s ease-out forwards}
.pixel-click-burst.is-reduced:after{display:none}
@keyframes pixel-click-reduced{0%{opacity:.9;scale:.7}100%{opacity:0;scale:1.5}}

/* AI experiments — two pixel-terminal capability files */
.ai-coding{background:radial-gradient(720px circle at 72% 42%,rgba(143,255,141,.075),transparent 68%),#090b0a}
.ai-project-grid{width:min(1500px,100%);margin-inline:auto;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(24px,3vw,48px);align-items:start}
.ai-project-grid .ai-project{--ai-rx:0deg;--ai-ry:0deg;--ai-x:50%;--ai-y:50%;display:flex;width:100%;min-width:0;min-height:100%;margin:0;padding:0;gap:0;flex-direction:column;align-items:stretch;border:1px solid rgba(143,255,141,.2);background:#171a18;box-shadow:0 32px 70px rgba(0,0,0,.55),inset 0 1px rgba(255,255,255,.055);transform:perspective(1300px) rotateX(var(--ai-rx)) rotateY(var(--ai-ry));transform-style:preserve-3d;transition:transform .28s ease,border-color .28s ease,box-shadow .38s ease}
.ai-project-grid .ai-project:nth-child(2){margin-top:clamp(28px,4vw,62px)}
.ai-project-grid .ai-project:after{content:"LIVE / 0" counter(ai-card);right:18px;top:18px;padding:8px 10px;color:#091009;background:var(--phosphor);font:400 10px/1 "WZ Pixel",ui-monospace,monospace;letter-spacing:.08em;box-shadow:0 0 18px rgba(143,255,141,.14)}
.ai-project-grid{counter-reset:ai-card}.ai-project-grid .ai-project{counter-increment:ai-card}
.ai-project-grid .ai-project:hover{border-color:rgba(143,255,141,.72);transform:perspective(1300px) rotateX(var(--ai-rx)) rotateY(var(--ai-ry)) translateY(-4px);box-shadow:0 44px 88px rgba(0,0,0,.72),0 0 34px rgba(143,255,141,.1),inset 0 0 30px rgba(143,255,141,.035)}
.ai-project-grid .ai-project:active{transform:perspective(1300px) rotateX(var(--ai-rx)) rotateY(var(--ai-ry)) translateY(-1px) scale(.995);transition-duration:.1s}
.ai-project-grid .ai-project:focus-visible{outline:2px solid var(--phosphor);outline-offset:7px}
.ai-project-grid .ai-window{margin:18px 18px 0;border:1px solid rgba(143,255,141,.22);box-shadow:0 22px 44px rgba(0,0,0,.5);transform:translateZ(20px);background:#050706}
.ai-project-grid .ai-window>img{aspect-ratio:16/9;object-fit:cover;object-position:center;filter:saturate(.78) contrast(1.05) brightness(.87)}
.ai-project-grid #tamaProject .ai-window>img{object-fit:cover;background:#090b0a}
.ai-project-grid .ai-project:hover .ai-window{transform:translateZ(31px) translateY(-5px)}
.ai-project-grid .ai-project:hover .ai-window>img{transform:scale(1.022);filter:saturate(.94) contrast(1.08) brightness(.98)}
.ai-project-grid .ai-window:after{content:"";position:absolute;z-index:4;top:34px;bottom:0;left:-42%;width:24%;pointer-events:none;background:linear-gradient(90deg,transparent,rgba(191,255,181,.13),transparent);transform:skewX(-13deg);opacity:0}
.ai-project-grid .ai-project:hover .ai-window:after{opacity:1;animation:ai-signal-sweep .78s cubic-bezier(.16,1,.3,1) forwards}
.ai-project-grid .ai-browser-bar{height:34px;background:#0b0e0c;border-bottom-color:rgba(143,255,141,.15)}
.ai-project-grid .ai-browser-bar i{background:var(--phosphor);border-radius:0;box-shadow:0 0 8px rgba(143,255,141,.38)}
.ai-project-grid .ai-browser-bar b{color:#aeb8ad;font-family:"WZ Pixel",ui-monospace,monospace}
.ai-project-grid .ai-copy{flex:1;padding:clamp(26px,3vw,42px);transform:translateZ(12px);border-top:1px solid rgba(255,255,255,.055);background:linear-gradient(180deg,#1a1d1b,#141615)}
.ai-project-grid .ai-copy small{color:var(--phosphor);font-family:"WZ Pixel",ui-monospace,monospace;font-weight:400}
.ai-project-grid .ai-copy strong{margin:18px 0 17px;color:#f0eee7;font:400 clamp(34px,4.1vw,64px)/.92 "WZ Pixel",ui-monospace,monospace;letter-spacing:.015em}
.ai-project-grid .ai-copy>span:not(.ai-tags){max-width:52ch;min-height:5.4em;color:#bbbfb8;font-size:14px;line-height:1.8}
.ai-tags{display:flex;flex-wrap:wrap;gap:8px;margin-top:25px}
.ai-tags i{padding:7px 9px;color:#111510;background:#d9ded5;font:400 9px/1 "WZ Pixel",ui-monospace,monospace;font-style:normal;letter-spacing:.06em;transition:background .2s,color .2s,box-shadow .2s}
.ai-project:hover .ai-tags i{color:#071007;background:var(--phosphor);box-shadow:0 0 13px rgba(143,255,141,.2)}
.ai-project-grid .ai-copy>b{margin-top:auto;padding-top:28px;border:0;color:#dce5da;font-family:"WZ Pixel",ui-monospace,monospace}
.ai-project-grid .ai-scan{top:34px;background:linear-gradient(102deg,transparent 38%,rgba(143,255,141,.24) 49%,transparent 60%)}
@keyframes ai-signal-sweep{to{left:122%;opacity:0}}

/* Sparse resume decoration: intentionally quiet and behind the dossier. */
.resume{position:relative;overflow:hidden;isolation:isolate}
.resume>h1,.resume-layout{position:relative;z-index:2}
.resume-sticker{position:absolute;z-index:1;pointer-events:none;image-rendering:auto;opacity:.28;filter:grayscale(.22) drop-shadow(0 16px 18px rgba(0,0,0,.58));animation:resume-sticker-drift 6.8s ease-in-out infinite alternate}
.resume-sticker-hourglass{left:3.5%;top:63%;width:clamp(54px,5vw,88px);rotate:-8deg}
.resume-sticker-pixel{right:2.6%;top:47%;width:clamp(52px,4.5vw,78px);rotate:9deg;animation-delay:-2.1s}
@keyframes resume-sticker-drift{to{translate:0 -10px;rotate:2deg;opacity:.4}}
@media(max-width:900px){.ai-project-grid{grid-template-columns:1fr}.ai-project-grid .ai-project:nth-child(2){margin-top:0}.ai-project-grid .ai-copy>span:not(.ai-tags){min-height:0}.resume-sticker-pixel{display:none}}
@media(max-width:700px){.ai-project-grid .ai-window{margin:10px 10px 0}.ai-project-grid .ai-copy{padding:25px 20px 28px}.ai-project-grid .ai-copy strong{font-size:36px}.ai-project-grid .ai-project:after{right:12px;top:12px;font-size:8px}.resume-sticker{opacity:.2}}
@media(prefers-reduced-motion:reduce){.resume-sticker{animation:none}.ai-project-grid .ai-project{transform:none}}

/* Hero sticker spacing refinement */
.hero-stickers .s2{left:46.8%;top:56%;width:clamp(52px,4.35vw,78px)}
.hero-stickers .s4{right:7.2%;bottom:20%;width:clamp(54px,5.2vw,92px)}
@media(max-width:1100px){.hero-stickers .s2{width:clamp(48px,5.5vw,68px)}.hero-stickers .s4{right:6%;bottom:21%;width:clamp(50px,6vw,76px)}}
