.intro-loader{z-index:1200;color:#f3f0e9;pointer-events:none;isolation:isolate;background:#030303;place-items:center;display:grid;position:fixed;inset:0}.intro-white-flash{opacity:0;background:#fff;animation:1.28s cubic-bezier(.2,.7,.2,1) forwards intro-flash;position:absolute;inset:0}.intro-loader-readout{z-index:2;opacity:0;grid-template-columns:1fr auto;gap:15px 28px;width:min(520px,76vw);animation:.35s .94s forwards loader-in;display:grid;position:relative}.intro-loader-readout span,.intro-loader-readout strong{letter-spacing:.18em;font-family:Bonwick Weaver,Times New Roman,serif;font-size:17px;font-weight:400}.intro-loader-readout strong{font-variant-numeric:tabular-nums;align-items:baseline;gap:4px;font-size:25px;display:flex}.intro-loader-readout strong small{font-size:.55em}.intro-loader-track{background:#ffffff2e;grid-column:1/-1;height:1px;position:relative}.intro-loader-track i{transform-origin:0;background:#fff;width:100%;height:100%;display:block;box-shadow:0 0 18px #ffffff80}.intro-loader-dragon{z-index:3;filter:drop-shadow(0 0 10px #ffffff3d);transform-origin:62% 80%;width:76px;animation:1.1s ease-in-out infinite loader-dragon-breathe;position:absolute;bottom:-5px;transform:translate(-60%)rotate(-4deg)}@keyframes loader-dragon-breathe{50%{transform:translate(-60%)rotate(-2deg)scale(1.035)}}@keyframes intro-flash{0%,58%{opacity:0}72%{opacity:.94}to{opacity:0}}@keyframes loader-in{to{opacity:1}}.reveal-text{display:inline}.reveal-word{opacity:0;filter:blur(7px);animation:.78s cubic-bezier(.2,.78,.18,1) forwards reveal-word;animation-delay:calc(var(--word-index)*42ms);display:inline-block;transform:translateY(.45em)}@keyframes reveal-word{to{opacity:1;filter:blur();transform:none}}.line-highlight{display:inline-block;position:relative}.line-highlight>i{opacity:.5;transform-origin:0;background:currentColor;height:1px;animation:.8s cubic-bezier(.18,.74,.18,1) .42s forwards line-write;position:absolute;bottom:-.18em;left:0;right:0;transform:scaleX(0)}@keyframes line-write{to{transform:scaleX(1)}}.interactive-dots{--dot-x:50%;--dot-y:50%;pointer-events:auto;-webkit-mask-image:radial-gradient(circle 170px at var(--dot-x) var(--dot-y),#000,#00000042 52%,transparent 78%);mask-image:radial-gradient(circle 170px at var(--dot-x) var(--dot-y),#000,#00000042 52%,transparent 78%);opacity:.68;background-image:radial-gradient(circle,#ffffff42 1px,#0000 1.2px);background-size:34px 34px;transition:opacity .3s;position:absolute;overflow:hidden}.kinetic-dot-grid{pointer-events:auto;position:absolute;inset:0;overflow:hidden}.kinetic-dot-grid canvas{width:100%;height:100%;display:block}.origin-button{--origin-x:50%;--origin-y:50%;isolation:isolate;position:relative;overflow:hidden}.origin-button:before{z-index:-1;top:var(--origin-y);left:var(--origin-x);aspect-ratio:1;content:"";background:#f3f0e9;border-radius:50%;width:210%;transition:transform .58s cubic-bezier(.2,.75,.2,1);position:absolute;transform:translate(-50%,-50%)scale(0)}.origin-button:hover:before,.origin-button:focus-visible:before{transform:translate(-50%,-50%)scale(1)}.origin-button:hover,.origin-button:focus-visible{color:#050505!important}@media (prefers-reduced-motion:reduce){.intro-white-flash,.intro-loader-readout,.reveal-word,.line-highlight>i{opacity:1;filter:none;animation:none;transform:none}.origin-button:before{display:none}}.intro-loader-dragon{width:68px;top:-9px;bottom:auto}.entrance-portal{z-index:300;isolation:isolate;color:#f4f1ea;font-family:var(--site-font),"ShanHai Chinese",STSong,SimSun,serif;touch-action:none;background:#020202;position:fixed;inset:0;overflow:hidden}.entrance-camera{filter:grayscale()contrast(1.08)brightness(.72);transform:scale(calc(1 + var(--portal-progress)*.58)) translateY(calc(var(--portal-progress)*2.5%));transform-origin:50% 55%;will-change:transform;background:url(/assets/site/%E4%B8%AA%E4%BA%BA%E7%BD%91%E7%AB%99%E5%85%A5%E5%8F%A3%E9%95%BF%E5%BB%8A.webp) 50%/cover no-repeat;position:absolute;inset:0}.entrance-camera:before{z-index:0;content:"";pointer-events:none;filter:blur(30px);mix-blend-mode:screen;opacity:.52;background:radial-gradient(48% 18% at 28% 42%,#ffffff21,#0000 72%),radial-gradient(44% 16% at 72% 58%,#ffffff1a,#0000 74%),linear-gradient(112deg,#0000 24%,#ffffff0e 47%,#0000 68%);animation:9s ease-in-out infinite alternate entrance-volume-drift;position:absolute;inset:-12%;transform:translate(-3%)scale(1.08)}.entrance-camera:after{content:"";background:radial-gradient(circle at 50% 51%,#0000 0 8%,#0000000f 27%,#000000a8 88%),linear-gradient(#0000003d,#0000 34%,#00000061);position:absolute;inset:0}.entrance-doorway{z-index:1;width:12.89%;height:61%;box-shadow:0 0 calc(24px + var(--door-progress)*88px) #fffffff5,inset 0 0 42px #fffffffa;opacity:clamp(0,calc(var(--door-progress)*20),1);background:linear-gradient(90deg,#ffffffc2,#fff 22% 78%,#ffffffc2);border-radius:50% 50% 2% 2%/20% 20% 2% 2%;position:absolute;top:10.8%;left:43.84%;overflow:hidden}.entrance-door{z-index:3;object-fit:fill;filter:drop-shadow(0 12px 24px #000000b8);will-change:transform;width:6.445%;height:61%;position:absolute;top:10.8%}.entrance-door-left{transform:perspective(1200px) rotateY(calc(var(--door-progress)*-78deg));transform-origin:0;left:43.84%}.entrance-door-right{transform:perspective(1200px) rotateY(calc(var(--door-progress)*78deg));transform-origin:100%;left:50.285%}.entrance-light{z-index:2;width:18vw;filter:blur(calc(2px + var(--door-progress)*7px));opacity:clamp(0,calc(var(--door-progress)*1.16),1);transform:translateX(-50%) scaleX(calc(.08 + var(--door-progress)*8)) scaleY(calc(.72 + var(--door-progress)*.48));transform-origin:50% 48%;will-change:transform,opacity;background:radial-gradient(at 50% 45%,#fff 0 34%,#fffffff5 48%,#ffffff7a 68%,#0000 82%);position:absolute;top:4%;bottom:0;left:50%}.entrance-copy{z-index:5;text-align:center;width:min(900px,84vw);opacity:clamp(0,calc(1 - var(--portal-progress)*1.35),1);transform:translate(-50%,-50%) scale(calc(1 + var(--portal-progress)*5));transform-origin:50%;text-shadow:0 12px 50px #000;will-change:transform,opacity;position:absolute;top:50%;left:50%}.entrance-copy>span{letter-spacing:.32em;color:#ffffff94;font-size:9px}.entrance-copy h1{letter-spacing:.03em;gap:8px;margin:18px 0 20px;font-size:clamp(42px,6vw,104px);font-weight:400;line-height:.88;display:grid}.entrance-title-line{color:#0000;-webkit-text-stroke:.55px #ffffffad;filter:drop-shadow(0 5px 18px #000000d1)drop-shadow(0 0 9px #ffffff0b);background:linear-gradient(112deg,#f7f7f7 0%,#777 28%,#fff 49%,#303030 72%,#e7e7e7 100%) 100% 0/240% 100%;-webkit-background-clip:text;background-clip:text;width:max-content;max-width:100%;margin-inline:auto;transition:filter .35s,-webkit-text-stroke-color .35s;display:block;position:relative}.entrance-title-line:hover{-webkit-text-stroke-color:#fffffffa;filter:drop-shadow(0 5px 18px #000)drop-shadow(0 0 18px #ffffff38);animation:.9s cubic-bezier(.2,.72,.18,1) forwards entrance-liquid-type}.entrance-title-welcome{letter-spacing:.16em;font-size:.62em}.entrance-title-portfolio{letter-spacing:.08em;font-size:1em}.entrance-art-word{color:#0000;-webkit-text-stroke:.85px #ffffffdb;letter-spacing:.02em;filter:drop-shadow(0 0 7px #ffffff1a);transform-origin:50%;background:linear-gradient(125deg,#1a1a1a 3%,#f8f8f8 27%,#555 49%,#fff 69%,#111 96%) 100% 0/260% 100%;-webkit-background-clip:text;background-clip:text;margin-left:.1em;transition:filter .35s,-webkit-text-stroke-color .35s;display:inline-block;transform:scaleX(1.045);font-family:Huaguang Gothic Entrance,ShanHai Chinese,STSong,serif!important}.entrance-title-portfolio:hover .entrance-art-word{-webkit-text-stroke-color:#fff;filter:drop-shadow(0 0 20px #ffffff52);animation:.82s cubic-bezier(.2,.72,.18,1) forwards entrance-liquid-type}.entrance-copy p{color:#ffffff94;letter-spacing:.24em;margin:0;font-size:12px}@keyframes entrance-liquid-type{0%{background-position:100% 0}to{background-position:-115% 0}}#root .entrance-title-line,#root .entrance-art-word{font-family:var(--latin-font),"ShanHai Latin",serif!important}.entrance-fall-char{transform-style:preserve-3d;backface-visibility:hidden;will-change:transform,opacity;display:inline-block}.entrance-title-welcome .entrance-fall-char:nth-child(8){margin-inline:-.3em}.entrance-kicker,.entrance-title-prefix,.entrance-scroll-copy{display:inline-flex}.entrance-title-line,.entrance-title-line:hover{color:#f4f4f4;-webkit-text-fill-color:#f4f4f4;-webkit-text-stroke:.45px #ffffffc2;filter:drop-shadow(0 4px 16px #000000e6)drop-shadow(0 0 9px #ffffff1f);background:0 0;animation:none!important}.entrance-title-portfolio,.entrance-title-portfolio:hover{color:#f4f4f4;-webkit-text-fill-color:#f4f4f4;-webkit-text-stroke:0;filter:none}.entrance-title-prefix{color:#f4f4f4;-webkit-text-fill-color:#f4f4f4;-webkit-text-stroke:.45px #ffffffc7;filter:drop-shadow(0 4px 16px #000000e6)drop-shadow(0 0 9px #ffffff1f)}.entrance-art-word,.entrance-title-portfolio:hover .entrance-art-word{color:#0000;-webkit-text-fill-color:transparent;-webkit-text-stroke:.85px #ffffffe6;filter:drop-shadow(0 0 12px #ffffff2e);will-change:transform,opacity;background:linear-gradient(125deg,#171717 3%,#f6f6f6 28%,#666 50%,#fff 70%,#111 96%) 50%/100% 100%;-webkit-background-clip:text;background-clip:text;animation:none!important}.entrance-progress{z-index:5;background:#ffffff29;height:1px;position:absolute;bottom:7%;left:6%;right:6%}.entrance-progress i{width:100%;height:100%;transform:scaleX(var(--portal-progress));transform-origin:0;background:#fff;display:block;box-shadow:0 0 14px #fff}.entrance-flash{z-index:8;opacity:0;pointer-events:none;background:#fff;position:absolute;inset:0}.entrance-portal.is-crossing .entrance-flash{animation:.62s cubic-bezier(.25,.8,.25,1) forwards portal-cross}@keyframes portal-cross{0%{opacity:0}55%,to{opacity:1}}@keyframes entrance-volume-drift{0%{opacity:.34;transform:translate(-4%,-1%)scale(1.06)}52%{opacity:.58}to{opacity:.4;transform:translate(4%,2%)scale(1.14)}}@media (width<=760px){.entrance-camera{background-size:cover}.entrance-doorway{width:53.6%;height:61%;top:10.8%;left:23.2%}.entrance-door{width:26.8%;height:61%;top:10.8%}.entrance-door-left{left:23.2%}.entrance-door-right{left:50%}.entrance-copy h1{font-size:13vw;line-height:.96}.entrance-copy p{font-size:10px}.entrance-progress{bottom:5%}}@media (prefers-reduced-motion:reduce){.entrance-camera,.entrance-door,.entrance-light,.entrance-copy{transition:none}.entrance-camera:before{animation:none}.entrance-flash{opacity:1}}@font-face{font-family:ShanHai Latin;src:url(/assets/fonts/site/ShanHaiWanHuaGeTe-W-subset.woff2)format("woff2");font-style:normal;font-weight:400;font-display:swap;unicode-range:U+0-24F,U+2000-206F,U+2190-21FF,U+25A0-25FF}@font-face{font-family:ShanHai Chinese;src:url(/assets/fonts/site/ShanHaiJuZhenKeSong-45W-subset.woff2)format("woff2");font-style:normal;font-weight:400;font-display:swap}@font-face{font-family:Akura Popo Menu;src:url(/assets/fonts/site/AkuraPopo-Regular.otf)format("opentype");font-style:normal;font-weight:400;font-display:swap}@font-face{font-family:Retro Majestic Campus;src:url(/assets/fonts/site/RetroMajestic-Regular.ttf)format("truetype");font-style:normal;font-weight:400;font-display:swap;unicode-range:U+0-24F,U+2000-206F,U+2190-21FF,U+25A0-25FF}:root{--latin-font:"ShanHai Latin";--han-font:"ShanHai Chinese";--site-font:var(--latin-font), var(--han-font), serif;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;font-family:var(--site-font);color:#f1eee8;font-synthesis:none;text-rendering:geometricprecision;background:#000}#root,#root *{font-family:var(--site-font)!important}*{box-sizing:border-box}html,body,#root{width:100%;min-width:320px;min-height:100%;margin:0}body{background:#000;min-height:100vh;overflow:clip}button,a{font:inherit}a{color:inherit}.portfolio-cover{background:#000;place-items:center;width:100vw;min-height:100vh;display:grid;position:relative;overflow:hidden}.experience-loading{z-index:1100;color:#f3f0e9;letter-spacing:.24em;background:#030303;place-content:center;gap:14px;font-size:12px;display:grid;position:fixed;inset:0}.experience-loading i{background:#ffffff29;width:180px;height:1px;display:block;overflow:hidden}.experience-loading i:after{content:"";background:#fff;width:45%;height:100%;animation:.9s ease-in-out infinite alternate experience-loading-slide;display:block;box-shadow:0 0 14px #fff}@keyframes experience-loading-slide{to{transform:translate(122%)}}.cover-stage{--gothic-font:var(--site-font);aspect-ratio:16/9;isolation:isolate;background:#000;width:min(100vw,1700px);max-height:100vh;position:relative;overflow:hidden}.cover-stage,.cover-stage button,.cover-stage a{font-family:var(--gothic-font)}.cover-stage:before{z-index:3;content:"";pointer-events:none;opacity:.62;background:linear-gradient(90deg,#c3c0b914,#c3c0b975 50%,#c3c0b914);width:3px;position:absolute;top:5.7%;bottom:5.7%;left:3.78%}.video-stack,.hero-media{width:100%;height:100%;position:absolute;inset:0}.hero-media{object-fit:cover;display:block}.video-stack,.video-fallback{z-index:0}.loop-video{z-index:1;opacity:0}.loop-video-a{opacity:1}.video-stack.is-ready .video-fallback{opacity:0;transition:opacity .5s}.hero-poster{z-index:0}.menu-clean-plate{z-index:2;width:56%;height:52%;box-shadow:none;background:linear-gradient(90deg,#000 0%,#000000f5 68%,#0000 100%);position:absolute;bottom:6.6%;left:3.75%}.project-menu{z-index:4;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:linear-gradient(100deg,#000000f7,#020202ed);border:1px solid #ffffff1f;width:min(51%,760px);padding:16px 20px 12px;transition:opacity .45s,transform .6s cubic-bezier(.2,.75,.2,1);position:absolute;bottom:7.4%;left:6.25%;box-shadow:0 24px 80px #00000085,inset 0 1px #ffffff09}#root .project-menu,#root .project-menu *{font-family:"Akura Popo Menu",var(--site-font)!important}.cover-stage.is-intro .project-menu,.cover-stage.is-intro .creative-archive-entry{opacity:0;pointer-events:none;transform:translateY(16px)}.menu-index{color:#d7d3ca99;letter-spacing:.2em;margin:0 0 clamp(9px,.7vw,14px) clamp(31px,2vw,42px);font-family:Arial,Helvetica,sans-serif;font-size:clamp(7px,.52vw,10px);font-weight:400;display:block}.project-menu ol{border-top:1px solid #fff3;gap:0;margin:0;padding:0;list-style:none;display:grid}.project-menu li{border-bottom:1px solid #ffffff29;height:clamp(38px,3.35vw,54px);transition:height .56s cubic-bezier(.2,.78,.18,1),background .35s;position:relative;overflow:hidden}.project-menu li.is-expanded{background:#ffffff06;height:clamp(112px,10.8vw,166px)}.project-link{opacity:.68;outline:none;grid-template-columns:clamp(25px,2vw,39px) minmax(0,1fr) minmax(100px,30%) 18px;align-items:center;width:100%;height:100%;padding:clamp(7px,.6vw,10px) clamp(8px,.8vw,14px);text-decoration:none;transition:opacity .24s,color .24s,transform .3s;display:grid;position:relative}.project-link:hover,.project-link:focus-visible,.project-link.is-active{color:#fff;opacity:1;transform:translate(4px)}.project-link:focus-visible{text-shadow:0 0 18px #ffffff57}.project-number{color:#dcd8cf8c;letter-spacing:.12em;font-family:Arial,Helvetica,sans-serif;font-size:clamp(7px,.5vw,10px)}.project-title{font-family:var(--gothic-font);letter-spacing:-.055em;text-overflow:ellipsis;white-space:nowrap;font-size:clamp(17px,1.72vw,31px);font-weight:500;line-height:.96;overflow:hidden}.project-copy{align-content:center;gap:12px;min-width:0;display:grid}.project-description{color:#f1eee88f;max-width:42ch;font-family:var(--gothic-font);letter-spacing:.06em;opacity:0;font-size:clamp(9px,.72vw,13px);line-height:1.65;transition:opacity .35s .12s,transform .45s .12s;display:block;overflow:hidden;transform:translateY(8px)}.is-expanded .project-description{opacity:1;transform:none}.project-preview{opacity:0;border:1px solid #ffffff2e;height:0;transition:height .48s,opacity .36s .1s,transform .48s 80ms;overflow:hidden;transform:translate(12px)}.project-preview img{object-fit:cover;filter:grayscale()brightness(.72);width:100%;height:100%}.project-link[href=\#ai-campus-delivery] .project-preview img{object-fit:contain;filter:none;background:#080808;padding:9%}.is-expanded .project-preview{opacity:1;height:clamp(70px,7.3vw,112px);transform:none}.project-mark{font:14px var(--gothic-font);color:#ffffff9e}.project-transition{z-index:999;pointer-events:none;mix-blend-mode:normal;background:#f4f2ed;position:fixed;inset:0;transform:scaleX(0)}.screen-grain{display:none}.creative-archive-entry{z-index:5;color:#f3eee494;cursor:pointer;text-align:right;background:0 0;border:0;border-bottom:1px solid #f3eee438;gap:7px;padding:0 0 11px;transition:color .25s,transform .25s;display:grid;position:absolute;top:10.2%;right:10.2%}.creative-archive-entry:hover{color:#fff}.creative-archive-entry span{font:9px var(--gothic-font);letter-spacing:.18em}.creative-archive-entry b{font:15px var(--gothic-font);letter-spacing:.08em;font-weight:400}.entrance-return{z-index:8;color:#ffffff85;cursor:pointer;letter-spacing:.13em;background:0 0;border:0;border-bottom:1px solid #ffffff38;padding:9px 0;font-size:11px;transition:color .25s,transform .25s;position:absolute;top:8.2%;left:6.3%}.entrance-return:hover,.entrance-return:focus-visible{color:#fff;transform:translate(-3px)}@keyframes grain-shift{0%{transform:translate(-2%,1%)}25%{transform:translate(1%,-2%)}50%{transform:translate(2%,2%)}75%{transform:translate(-1%,-1%)}to{transform:translate(-2%,1%)}}@media (aspect-ratio<=16/9){.cover-stage{width:100vw;height:auto}}@media (aspect-ratio>=16/9){.cover-stage{width:auto;height:100vh}}@media (width<=760px){body{overflow:auto}.portfolio-cover{align-items:center;min-height:100svh}.cover-stage{aspect-ratio:auto;width:100vw;height:100svh}.hero-media{object-fit:cover;object-position:62% center}.menu-clean-plate{width:100%;height:41%;box-shadow:none;background:linear-gradient(#0000,#000 40%);bottom:0;left:0}.project-menu{width:86vw;bottom:5svh;left:7vw}.menu-index{margin-left:30px}.project-title{font-size:clamp(18px,5.2vw,28px)}.project-menu li{height:48px}.project-menu li.is-expanded{height:118px}.project-link{grid-template-columns:26px minmax(0,1fr) 18px;padding:7px 4px}.project-preview{display:none}.project-description{font-size:10px;line-height:1.5}.project-mark{grid-column:3}.menu-clean-plate{width:100%;height:56%}.creative-archive-entry{top:7svh;right:8vw}.entrance-return{font-size:9px;top:3svh;left:7vw}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}.screen-grain{animation:none}}
