:root{--color-link:#5b6570;--color-link-hover:#1f2933;--color-enter:#2a3340;--color-title:#1c2430;--color-content:#f4f1ea;--font-alt:200 6vw/1 "TXHuaGuan","Comic Sans MS","Helvetica Neue","Microsoft Yahei","Microsoft Yahei",-apple-system,sans-serif;--bg-page:#f3f0e8;--bg-main:#f7f4ed;--ink:#1c2430;--ink-soft:#5c6570;--ink-faint:#8b939e;--accent:#0f9d8a;--accent-2:#5b7cfa;--line:rgba(28,36,48,.1);--line-strong:rgba(28,36,48,.16);--card:hsla(0,0%,100%,.72);--shadow:0 18px 50px rgba(60,50,30,.1)}.fade{opacity:0;transition:all 1s;transform:translateY(200px)}.fade.in{opacity:1;transform:none}*{box-sizing:border-box;-webkit-text-size-adjust:none}html{font-size:20px!important}body,html{height:100%;margin:0;padding:0;border:0}@font-face{font-family:TXHuaGuan;src:url(../assets/fonts/TXHuaGuan-Medium.ttf) format("truetype");font-weight:500;font-style:normal;font-display:swap}body{font-family:TXHuaGuan,Comic Sans MS,Helvetica Neue,Microsoft Yahei,-apple-system,sans-serif!important;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;min-height:100vh;background:var(--bg-page);color:var(--ink);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-touch-callout:none}ul{margin:0;padding:0}img{border:0;vertical-align:middle}body{cursor:url(https://cdn.jsdelivr.net/gh/SimonAKing/images/blog/default.cur),auto!important}a,img{cursor:url(https://cdn.jsdelivr.net/gh/SimonAKing/images/blog/pointer.cur),auto!important}a{text-decoration:none;color:var(--color-link);outline:0}@font-face{font-family:iconfont;font-display:swap;src:url(//at.alicdn.com/t/c/font_1636368_y76ul94wfq.woff2?t=1753631340700) format("woff2"),url(//at.alicdn.com/t/c/font_1636368_y76ul94wfq.woff?t=1753631340700) format("woff"),url(//at.alicdn.com/t/c/font_1636368_y76ul94wfq.ttf?t=1753631340700) format("truetype")}.icon{display:block;width:1.5em;height:1.5em;margin:0 auto;fill:currentColor;font-family:iconfont!important;font-size:inherit;font-style:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.icon-github:before{content:"\e7ab"}.icon-other:before{content:"\e631"}.icon-email:before{content:"\e62d"}.icon-bokeyuan:before{content:"\e603"}.icon-xiaolian:before{content:"\e650"}.icon-wechat:before{content:"\f23b"}.icon-xiangce:before{content:"\e69b"}.icon-projects:before{content:"\e625"}.icon-zhifeiji:before{content:"\e60a"}.icon-idea:before{content:"\e608"}.icon-biaoqing:before{content:"\e624"}main{overflow:hidden;background:var(--bg-page)}.content,main{height:100vh;width:100%;position:relative}.content{background:0 0}.content-intro{z-index:100;height:200vh}.content-main{position:fixed;top:0;left:0;background:var(--bg-main)}.content-inner{position:relative}.content-inner,.wrap{width:100%;height:100vh}.wrap{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-direction:column;flex-direction:column;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;text-align:center}.grid-background{position:absolute;top:0;left:0;width:100%;height:100%;z-index:0;pointer-events:none}.content-intro .content-inner{background:0 0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.shape{height:100vh;width:100%;display:block;background:0 0}.shape-wrap{position:relative;z-index:0;margin:-5px 0 0;will-change:scroll-position;background:0 0}.shape path{fill:#f7f4ed}.content-title{font-family:TXHuaGuan,Comic Sans MS,Helvetica Neue,Microsoft Yahei,-apple-system,sans-serif;font-size:4.7rem;font-weight:200;color:#1c2430;line-height:1;margin-top:.8em;margin-bottom:.3em;animation:softShadow 1.8s ease-in-out infinite alternate;text-shadow:0 2px 18px hsla(0,0%,100%,.65),0 1px 0 hsla(0,0%,100%,.8)}@media screen and (max-width:50em){.content-title{font-size:2rem}}@keyframes softShadow{0%{text-shadow:0 1px 0 hsla(0,0%,100%,.9),0 4px 18px rgba(91,124,250,.18),0 8px 28px rgba(15,157,138,.12)}to{text-shadow:0 1px 0 hsla(0,0%,100%,.95),0 6px 24px rgba(91,124,250,.28),0 12px 36px rgba(15,157,138,.18)}}.content-subtitle{color:#5c6570;font-family:TXHuaGuan,Comic Sans MS,Helvetica Neue,Microsoft Yahei,-apple-system,sans-serif;font-size:1.2rem;font-weight:200;margin-bottom:2em;text-shadow:0 1px 0 hsla(0,0%,100%,.75)}@media screen and (max-width:1024px){.content-subtitle{font-size:1rem}}.enter{color:#2a3340;font-size:.8rem;letter-spacing:3px;white-space:pre;pointer-events:auto;transition:all .4s;z-index:999;position:relative;background:linear-gradient(90deg,transparent,rgba(28,36,48,.72),transparent);background-size:200% 100%;background-clip:text;-webkit-background-clip:text;-webkit-text-fill-color:transparent;animation:shimmer 2s linear infinite;text-shadow:0 0 12px rgba(91,124,250,.15)}.enter:focus,.enter:hover{filter:brightness(.85)}@keyframes shimmer{0%{background-position:200%}to{background-position:-200%}}.arrow{position:absolute;left:49.5%;top:95%;transform-origin:50% 50%;transform:translate3d(-50%,0,0)}.arrow-1{animation:arrow-movement 2s ease-in-out infinite}.arrow-2{animation:arrow-movement 2s 1s ease-in-out infinite}.arrow:after,.arrow:before{background:#1c2430;content:"";display:block;height:3px;position:absolute;top:0;left:0;width:13px;box-shadow:0 0 10px rgba(28,36,48,.18);opacity:.55}.arrow:before{transform:rotate(45deg) translateX(-10%);transform-origin:top left}.arrow:after{transform:rotate(-45deg) translateX(10%);transform-origin:top right}@keyframes arrow-movement{0%{opacity:0;top:92%}70%{opacity:1}to{opacity:0}}.content-subtitle span{animation:letter-glow .7s 0s ease both}@keyframes letter-glow{0%{opacity:0;text-shadow:0 0 1px rgba(28,36,48,.08)}66%{opacity:1;text-shadow:0 0 14px rgba(91,124,250,.35)}77%{opacity:1}to{opacity:.86;text-shadow:0 1px 0 hsla(0,0%,100%,.7)}}.content-subtitle span:first-child{animation-delay:50ms}.content-subtitle span:nth-child(2){animation-delay:.1s}.content-subtitle span:nth-child(3){animation-delay:.15s}.content-subtitle span:nth-child(4){animation-delay:.2s}.content-subtitle span:nth-child(5){animation-delay:.25s}.content-subtitle span:nth-child(6){animation-delay:.3s}.content-subtitle span:nth-child(7){animation-delay:.35s}.content-subtitle span:nth-child(8){animation-delay:.4s}.content-subtitle span:nth-child(9){animation-delay:.45s}.content-subtitle span:nth-child(10){animation-delay:.5s}.content-subtitle span:nth-child(11){animation-delay:.55s}.content-subtitle span:nth-child(12){animation-delay:.6s}.content-subtitle span:nth-child(13){animation-delay:.65s}.content-subtitle span:nth-child(14){animation-delay:.7s}.content-subtitle span:nth-child(15){animation-delay:.75s}.content-subtitle span:nth-child(16){animation-delay:.8s}.content-subtitle span:nth-child(17){animation-delay:.85s}.content-subtitle span:nth-child(18){animation-delay:.9s}.content-subtitle span:nth-child(19){animation-delay:.95s}.content-subtitle span:nth-child(20){animation-delay:1s}.content-subtitle span:nth-child(21){animation-delay:1.05s}.content-subtitle span:nth-child(22){animation-delay:1.1s}.content-subtitle span:nth-child(23){animation-delay:1.15s}.content-subtitle span:nth-child(24){animation-delay:1.2s}.content-subtitle span:nth-child(25){animation-delay:1.25s}.content-subtitle span:nth-child(26){animation-delay:1.3s}.content-subtitle span:nth-child(27){animation-delay:1.35s}.content-subtitle span:nth-child(28){animation-delay:1.4s}.content-subtitle span:nth-child(29){animation-delay:1.45s}.content-subtitle span:nth-child(30){animation-delay:1.5s}.content-subtitle span:nth-child(31){animation-delay:1.55s}.content-subtitle span:nth-child(32){animation-delay:1.6s}.content-subtitle span:nth-child(33){animation-delay:1.65s}.content-subtitle span:nth-child(34){animation-delay:1.7s}.content-subtitle span:nth-child(35){animation-delay:1.75s}.content-subtitle span:nth-child(36){animation-delay:1.8s}.content-subtitle span:nth-child(37){animation-delay:1.85s}.content-subtitle span:nth-child(38){animation-delay:1.9s}#background{position:absolute;width:100%;height:100%;z-index:-1}.github-corner svg{color:#1c2430!important;mix-blend-mode:multiply;opacity:.55}.github-corner:hover svg{opacity:.85}#card{position:relative;z-index:2;width:100vw;height:100vh;color:#5c6570;display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center;text-align:center;transition:width .5s ease,height .5s ease}#card .card-inner{padding:28px 20px 18px;border:1px solid var(--line);border-radius:28px;width:100%;max-width:860px;background:var(--card);box-shadow:var(--shadow);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px)}@media screen and (max-width:720px){#card .card-inner{margin:0 12px;width:calc(100% - 24px);border-radius:22px}#card .card-inner header h1{font-size:1.35rem!important}#card .card-inner header h2{font-size:.75rem!important}#card .card-inner ul{-ms-flex-wrap:wrap;flex-wrap:wrap}#card .card-inner ul li{width:33.33%;font-size:.78rem!important;margin-bottom:12px}}#card .card-inner header{margin-bottom:36px}#card .card-inner header img{border:3px solid #fff;border-radius:50%;box-shadow:0 8px 24px rgba(40,40,50,.12),0 0 0 1px rgba(28,36,48,.06);transition:.4s ease-in-out;z-index:2;position:relative;background:#fff}#card .card-inner header h1{margin:15px 15px 0;color:#1c2430;font-size:2rem;line-height:1.2em;font-weight:400;z-index:2;position:relative}#card .card-inner header .main-motto{margin:9px 0 2px;color:#5c6570;font-size:.95rem;line-height:1.7;font-weight:500;letter-spacing:.08em;z-index:2;position:relative}#card .card-inner header h2{margin:0;color:#5c6570;letter-spacing:1.5px;font-size:.72rem;line-height:1.6;font-weight:400;opacity:.82;z-index:2;position:relative}#card .card-inner ul.nav-list{position:relative;margin:0;list-style-type:none;display:-ms-inline-flexbox;display:inline-flex;width:100%;-ms-flex-pack:distribute;justify-content:space-around;padding-bottom:12px}#card .card-inner ul.nav-list li{z-index:2;position:relative;display:inline-block;transition:all .2s;width:100%;height:100%}#card .card-inner ul.nav-list li a.nav-item{color:#5c6570;transition:all .2s;display:block;padding:10px 4px;cursor:pointer;border-radius:14px}#card .card-inner ul.nav-list li a.nav-item:focus,#card .card-inner ul.nav-list li a.nav-item:hover{color:#1c2430;background:hsla(0,0%,100%,.55);outline:0;text-shadow:none}#card .card-inner ul.nav-list li a.nav-item.is-active{color:#0f9d8a;background:rgba(15,157,138,.08);text-shadow:none}.site-modal{position:fixed;inset:0;z-index:4000;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;padding:18px;opacity:0;visibility:hidden;pointer-events:none;transition:opacity .28s ease}.site-modal.is-open{opacity:1;visibility:visible;pointer-events:auto}.site-modal__backdrop{position:absolute;inset:0;background:rgba(40,36,30,.32)}.site-modal__dialog{position:relative;z-index:1;width:min(920px,100%);max-height:min(86vh,860px);display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;border-radius:18px;border:1px solid rgba(28,36,48,.1);background:linear-gradient(180deg,#fffcf7,#f7f3eb);box-shadow:0 28px 80px rgba(50,40,20,.16);transform:translateY(18px) scale(.98);opacity:0;transition:transform .32s cubic-bezier(.2,.8,.2,1),opacity .28s ease;overflow:hidden}.site-modal.is-open .site-modal__dialog{transform:none;opacity:1}.site-modal__chrome{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;gap:12px;padding:12px 14px;border-bottom:1px solid rgba(28,36,48,.08);background:hsla(0,0%,100%,.55);-ms-flex-negative:0;flex-shrink:0}.site-modal__dots{display:-ms-flexbox;display:flex;gap:6px}.site-modal__dots .dot{width:10px;height:10px;border-radius:50%;opacity:.95}.site-modal__dots .dot-red{background:#ff5f57}.site-modal__dots .dot-yellow{background:#febc2e}.site-modal__dots .dot-green{background:#28c840}.site-modal__title{-ms-flex:1;flex:1;margin:0;text-align:left;font-size:.85rem;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:#3a4450}.site-modal__actions{display:-ms-flexbox;display:flex;gap:8px}.site-modal__btn{width:30px;height:30px;border-radius:10px;border:1px solid rgba(28,36,48,.1);background:hsla(0,0%,100%,.7);color:#4b5563;font-size:14px;line-height:1;cursor:pointer;transition:.15s ease}.site-modal__btn:hover{background:#fff;color:#111}.site-modal__body{position:relative;overflow:auto;-webkit-overflow-scrolling:touch;padding:16px;-ms-flex:1;flex:1;min-height:280px;min-height:0;text-align:left;color:#2a3340}.site-modal__body:has(.modal-panel--iframe:not(.is-hidden)){overflow:hidden;padding:0;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}.modal-panel{animation:panelIn .28s ease forwards}.modal-panel.is-hidden{display:none}.modal-panel--iframe{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex:1;flex:1;min-height:min(72vh,720px);height:min(72vh,720px);padding:0;margin:0}@keyframes panelIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.panel-lead{color:#6b7280;font-size:.9rem;margin:0 0 14px;line-height:1.6}.term{font-family:Consolas,SFMono-Regular,ui-monospace,monospace;font-size:13.5px;line-height:1.7;color:#2a3340}.term-log .line{margin:0 0 2px;word-break:break-word}.term .sys{color:#2563eb}.term .ok{color:#059669}.term .warn{color:#d97706}.term .pink{color:#db2777}.term .muted{color:#9ca3af}.term .cmd{color:#111827}.term-prompt{color:#0f9d8a}.term-row{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;gap:8px;margin-top:12px}.term-input{-ms-flex:1;flex:1;min-width:0;background:0 0;border:0;outline:0;color:#111827;font:inherit;caret-color:#0f9d8a}.term-hint{margin-top:14px;color:#9ca3af;font-size:12px}.term-hint kbd{display:inline-block;margin:0 3px;padding:1px 6px;border:1px solid rgba(28,36,48,.12);border-radius:6px;color:#6b7280;font:inherit;background:hsla(0,0%,100%,.7)}.lab-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.lab-card{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;gap:4px;min-height:96px;padding:14px;border-radius:14px;border:1px solid rgba(28,36,48,.08);background:hsla(0,0%,100%,.72);color:inherit;text-decoration:none;transition:.15s ease;box-shadow:inset 0 1px 0 hsla(0,0%,100%,.8)}.lab-card:hover{transform:translateY(-2px);border-color:rgba(15,157,138,.28);background:#fff;color:#111;box-shadow:0 10px 24px rgba(40,40,30,.08)}.lab-card strong{font-size:.95rem;font-weight:600;color:#1f2937}.lab-card em{font-style:normal;font-family:Consolas,monospace;font-size:11px;color:#9ca3af}.lab-card span{margin-top:auto;color:#6b7280;font-size:12.5px}.stack-block{border:1px solid rgba(28,36,48,.08);border-radius:14px;padding:14px;background:hsla(0,0%,100%,.72);margin-bottom:10px}.stack-block h4{margin:0 0 6px;font-size:.98rem;font-weight:600;color:#111827}.stack-block p{margin:0 0 10px;color:#6b7280;font-size:.88rem;line-height:1.55}.tags{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:6px}.tag{font-size:11.5px;padding:5px 9px;border-radius:999px;border:1px solid rgba(28,36,48,.1);color:#4b5563;font-family:Consolas,monospace;background:rgba(243,244,246,.9)}.blog-card{position:relative;overflow:hidden;border-radius:16px;border:1px solid rgba(28,36,48,.08);background:radial-gradient(600px 240px at 12% 0,rgba(167,139,250,.22),transparent 55%),radial-gradient(500px 220px at 90% 100%,rgba(15,157,138,.12),transparent 50%),#fff;padding:28px 24px 24px;min-height:280px;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;box-shadow:0 10px 30px rgba(40,40,30,.06)}.blog-card__glow{pointer-events:none;position:absolute;inset:auto -20% -40% auto;width:220px;height:220px;border-radius:50%;background:rgba(167,139,250,.2);filter:blur(30px)}.blog-card__kicker{position:relative;font-family:Consolas,monospace;font-size:12px;color:#9ca3af;letter-spacing:.06em;margin-bottom:14px}.blog-card__brand{position:relative;margin:0 0 8px;font-size:clamp(1.6rem,3vw,2.1rem);font-weight:600;letter-spacing:.04em;color:#7c3aed;line-height:1.2}.blog-card__sub{position:relative;margin:0 0 14px;font-size:1.05rem;color:#111827;font-weight:500}.blog-card__desc{position:relative;margin:0 0 22px;max-width:46ch;color:#6b7280;font-size:.95rem;line-height:1.7}.blog-card__actions{position:relative;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:10px;margin-top:auto}.blog-card__cta,.blog-card__ghost{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;gap:6px;padding:12px 16px;border-radius:12px;font-size:.92rem;font-weight:600;text-decoration:none;transition:.15s ease}.blog-card__cta{background:linear-gradient(135deg,#a78bfa,#34d399);color:#0b0c0d}.blog-card__cta:hover{filter:brightness(1.04);transform:translateY(-1px)}.blog-card__ghost{border:1px solid rgba(28,36,48,.12);color:#4b5563;background:hsla(0,0%,100%,.8)}.blog-card__ghost:hover{border-color:rgba(28,36,48,.22);color:#111}.iframe-toolbar{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between;gap:10px;padding:10px 14px;border-bottom:1px solid rgba(28,36,48,.08);background:hsla(0,0%,100%,.7);-ms-flex-negative:0;flex-shrink:0}.iframe-note{font-size:12px;color:#6b7280;font-family:Consolas,monospace}.iframe-open{font-size:12px;color:#4b5563;text-decoration:none;padding:6px 10px;border-radius:999px;border:1px solid rgba(28,36,48,.12);transition:.15s ease;background:#fff}.iframe-open:hover{color:#111;border-color:rgba(28,36,48,.22)}.iframe-stage{-ms-flex:1;flex:1;min-height:0;position:relative;background:#f3f4f6}#blog-frame,#gallery-frame{position:absolute;inset:0;width:100%;height:100%;border:0;background:#f3f4f6}body.modal-open{overflow:hidden}.site-modal__body:has(.modal-panel--folio:not(.is-hidden)){overflow:hidden;padding:0}.modal-panel--folio{display:-ms-flexbox;display:flex;-ms-flex:1;flex:1;min-height:min(72vh,720px);height:min(72vh,720px);margin:0;padding:0}.folio-space{--folio-bg:#0d1220;--folio-panel:rgba(20,28,45,.82);--folio-panel-strong:rgba(26,36,57,.96);--folio-text:#f4f7ff;--folio-muted:#9aa8c0;--folio-line:rgba(181,198,231,.16);--folio-accent:#8b7dff;--folio-accent-2:#43d6bd;position:relative;isolation:isolate;width:100%;height:min(72vh,720px);min-height:480px;overflow:hidden;color:var(--folio-text);background:radial-gradient(700px 420px at 48% 42%,rgba(99,102,241,.2),transparent 64%),radial-gradient(420px 360px at 86% 100%,rgba(67,214,189,.13),transparent 62%),linear-gradient(145deg,#090e19,var(--folio-bg) 54%,#11192a);font-family:Inter,Segoe UI,Microsoft YaHei,sans-serif;outline:0}.folio-space:before{z-index:-2;inset:0;opacity:.3;background-image:linear-gradient(rgba(144,164,201,.07) 1px,transparent 0),linear-gradient(90deg,rgba(144,164,201,.07) 1px,transparent 0);background-size:42px 42px;-webkit-mask-image:linear-gradient(180deg,transparent,#000 18%,#000 78%,transparent);mask-image:linear-gradient(180deg,transparent,#000 18%,#000 78%,transparent)}.folio-space:after,.folio-space:before{position:absolute;content:"";pointer-events:none}.folio-space:after{z-index:-1;top:18%;left:50%;width:380px;height:380px;border:1px solid rgba(139,125,255,.12);border-radius:50%;box-shadow:0 0 0 34px rgba(139,125,255,.025),0 0 0 72px rgba(67,214,189,.018);transform:translateX(-50%)}.folio-space:focus-visible{box-shadow:inset 0 0 0 2px rgba(139,125,255,.8)}.folio-space.is-dragging .folio-space__viewport{cursor:grabbing}.folio-space.is-paused .folio-card__glow,.folio-space.is-paused .folio-project-card__art-grid{animation-play-state:paused}.folio-space__header{position:absolute;z-index:20;top:0;left:0;right:0;-ms-flex-pack:justify;justify-content:space-between;gap:14px;padding:16px 20px 12px;border-bottom:1px solid rgba(181,198,231,.1);background:linear-gradient(180deg,rgba(9,14,25,.82),rgba(9,14,25,.12));pointer-events:none}.folio-space__footer,.folio-space__header,.folio-space__identity,.folio-space__progress-meta,.folio-space__status{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.folio-space__identity{-ms-flex-direction:column;flex-direction:column;-ms-flex-align:start;align-items:flex-start;gap:2px}.folio-space__identity strong{font-size:.96rem;font-weight:600;letter-spacing:.02em}.folio-space__eyebrow{color:var(--folio-accent-2);font-size:10px;letter-spacing:.14em}.folio-space__eyebrow,.folio-space__status{font-family:Consolas,SFMono-Regular,ui-monospace,monospace;text-transform:uppercase}.folio-space__status{gap:10px;color:var(--folio-muted);font-size:11px;letter-spacing:.08em}.folio-space__status span:first-child{color:var(--folio-text)}.folio-space__viewport{position:absolute;inset:58px 0 56px;perspective:1400px;overflow:hidden;cursor:grab;-ms-touch-action:none;touch-action:none}.folio-space__scene{position:absolute;top:50%;left:50%;width:0;height:0;transform-style:preserve-3d;transition:transform .82s cubic-bezier(.2,.8,.2,1)}.folio-space__map{position:absolute;z-index:25;top:70px;right:18px;width:168px;padding:10px;border:1px solid rgba(181,198,231,.15);border-radius:14px;background:rgba(11,17,29,.72);box-shadow:0 14px 34px rgba(0,0,0,.2);backdrop-filter:blur(16px);pointer-events:auto}.folio-space__footer{position:absolute;z-index:25;bottom:12px;left:20px;right:20px;-ms-flex-pack:justify;justify-content:space-between;gap:16px;pointer-events:none}.folio-space__progress{width:min(240px,32vw);height:4px;overflow:hidden;border-radius:999px;background:rgba(181,198,231,.16)}.folio-space__progress span{display:block;height:100%;width:12.5%;border-radius:inherit;background:linear-gradient(90deg,var(--folio-accent),var(--folio-accent-2));box-shadow:0 0 16px rgba(67,214,189,.45);transition:width .5s ease}.folio-space__progress-meta{gap:9px;margin-left:8px;color:var(--folio-muted);font-family:Consolas,SFMono-Regular,ui-monospace,monospace;font-size:10px;letter-spacing:.08em;text-transform:uppercase}.folio-space__progress-meta span:first-child{color:var(--folio-text)}.folio-space__controls{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;gap:6px;pointer-events:auto}.folio-space__credit{position:absolute;z-index:25;right:20px;bottom:2px;color:rgba(154,168,192,.6);font-family:Consolas,SFMono-Regular,ui-monospace,monospace;font-size:9px;letter-spacing:.05em;pointer-events:none}.folio-slide{position:absolute;top:0;left:0;width:min(520px,calc(100vw - 88px));transform-style:preserve-3d;transform-origin:50% 50%;transition:opacity .54s ease,transform .82s cubic-bezier(.2,.8,.2,1)}.folio-card{position:relative;min-height:360px;overflow:hidden;border:1px solid rgba(181,198,231,.2);border-radius:24px;background:linear-gradient(145deg,rgba(27,37,59,.96),rgba(14,20,34,.94));box-shadow:0 30px 80px rgba(0,0,0,.32),inset 0 1px 0 hsla(0,0%,100%,.08);backdrop-filter:blur(16px)}.folio-card:before{inset:0;content:"";background:linear-gradient(120deg,hsla(0,0%,100%,.07),transparent 30%,transparent 70%,rgba(139,125,255,.08))}.folio-card:before,.folio-card__glow{position:absolute;pointer-events:none}.folio-card__glow{top:-110px;right:-80px;width:260px;height:260px;border-radius:50%;background:rgba(139,125,255,.25);filter:blur(18px);animation:folioGlow 5s ease-in-out infinite alternate}@keyframes folioGlow{0%{transform:translate3d(-12px,8px,0) scale(.92);opacity:.65}to{transform:translate3d(12px,-8px,0) scale(1.06);opacity:1}}.folio-profile-card{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:justify;justify-content:space-between;min-height:390px;padding:30px}.folio-profile-card__links,.folio-profile-card__skills,.folio-profile-card__top{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.folio-profile-card__top{position:relative;-ms-flex-pack:justify;justify-content:space-between;gap:10px}.folio-profile-card__signal{color:var(--folio-accent-2);font-family:Consolas,SFMono-Regular,ui-monospace,monospace;font-size:10px;letter-spacing:.08em;text-transform:uppercase}.folio-profile-card h2{position:relative;max-width:9em;margin:52px 0 14px;font-size:clamp(2.05rem,5vw,3.4rem);font-weight:600;line-height:1.05;letter-spacing:-.06em}.folio-profile-card__intro{position:relative;max-width:34em;margin:0;color:#c7d1e5;font-size:1rem;line-height:1.75}.folio-profile-card__links{position:relative;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:8px;margin-top:24px}.folio-profile-card__links a{padding:8px 12px;border:1px solid rgba(181,198,231,.2);border-radius:999px;color:#dfe7f7;font-size:12px;text-decoration:none;transition:.2s ease}.folio-profile-card__links a:hover{border-color:var(--folio-accent-2);color:#fff;background:rgba(67,214,189,.12);transform:translateY(-2px)}.folio-profile-card__skills{position:relative;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:7px;margin-top:22px}.folio-profile-card__skills span{padding:6px 8px;border:1px solid rgba(181,198,231,.11);border-radius:7px;color:#9aa8c0;font-family:Consolas,SFMono-Regular,ui-monospace,monospace;font-size:10px}.folio-profile-card__hint{position:relative;margin:18px 0 0;color:#7887a0;font-family:Consolas,SFMono-Regular,ui-monospace,monospace;font-size:11px}.folio-project-card{display:grid;grid-template-columns:.86fr 1.14fr;min-height:368px}.folio-project-card--teal{--folio-tone:#43d6bd;--folio-tone-soft:rgba(67,214,189,.18)}.folio-project-card--violet{--folio-tone:#a78bfa;--folio-tone-soft:rgba(167,139,250,.18)}.folio-project-card--amber{--folio-tone:#fbbf24;--folio-tone-soft:rgba(251,191,36,.18)}.folio-project-card--rose{--folio-tone:#fb7185;--folio-tone-soft:rgba(251,113,133,.18)}.folio-project-card--blue{--folio-tone:#60a5fa;--folio-tone-soft:rgba(96,165,250,.18)}.folio-project-card--green{--folio-tone:#86efac;--folio-tone-soft:rgba(134,239,172,.18)}.folio-project-card__art{position:relative;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;min-height:368px;overflow:hidden;border-right:1px solid rgba(181,198,231,.1);background:radial-gradient(circle at 52% 44%,var(--folio-tone-soft),transparent 52%),rgba(8,13,24,.32)}.folio-project-card__art strong{position:relative;z-index:1;color:var(--folio-tone);font-size:clamp(3.6rem,9vw,5.2rem);font-weight:600;letter-spacing:-.1em;text-shadow:0 0 34px var(--folio-tone-soft)}.folio-project-card__art-grid{position:absolute;inset:20px;border:1px solid color-mix(in srgb,var(--folio-tone) 30%,transparent);background-image:linear-gradient(color-mix(in srgb,var(--folio-tone) 20%,transparent) 1px,transparent 0),linear-gradient(90deg,color-mix(in srgb,var(--folio-tone) 20%,transparent) 1px,transparent 0);background-size:25px 25px;transform:perspective(300px) rotateX(54deg) rotate(-20deg) scale(1.45);animation:folioGridDrift 12s linear infinite;-webkit-mask-image:radial-gradient(circle,#000 12%,transparent 70%);mask-image:radial-gradient(circle,#000 12%,transparent 70%)}.folio-project-card__art-index{position:absolute;bottom:24px;left:22px;color:var(--folio-tone);font-family:Consolas,SFMono-Regular,ui-monospace,monospace;font-size:10px;letter-spacing:.04em;text-transform:uppercase}.folio-project-card__body{position:relative;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;padding:28px 26px 24px}.folio-project-card__body h2{margin:16px 0 12px;color:#f7f9ff;font-size:clamp(1.35rem,3vw,1.85rem);font-weight:600;letter-spacing:-.04em}.folio-project-card__body p{margin:0;color:#aebbd0;font-size:.88rem;line-height:1.75}.folio-project-card__tech{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:6px;margin-top:auto;padding-top:18px}.folio-project-card__tech span{padding:6px 8px;border:1px solid rgba(181,198,231,.12);border-radius:6px;color:#9aa8c0;font-family:Consolas,SFMono-Regular,ui-monospace,monospace;font-size:10px}.folio-project-card__actions{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:8px;margin-top:20px}@keyframes folioGridDrift{0%{transform:perspective(300px) rotateX(54deg) rotate(-20deg) scale(1.45) translateZ(0)}to{transform:perspective(300px) rotateX(54deg) rotate(-20deg) scale(1.45) translate3d(25px,-25px,0)}}.folio-action,.folio-control{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;border:1px solid rgba(181,198,231,.18);border-radius:9px;color:#cdd7e9;background:rgba(181,198,231,.07);font-family:inherit;font-size:11px;text-decoration:none;transition:.2s ease}.folio-action:hover,.folio-control:hover{border-color:var(--folio-accent-2);color:#fff;background:rgba(67,214,189,.12);transform:translateY(-2px)}.folio-action{padding:9px 10px}.folio-action--primary{border-color:transparent;color:#07151a;background:linear-gradient(135deg,var(--folio-accent-2),#9bf6d3)}.folio-control{min-width:32px;height:30px;padding:0 9px;cursor:pointer}.folio-control--overview{min-width:70px;color:#aebbd0;font-size:10px}.folio-control--overview,.folio-map__head{font-family:Consolas,SFMono-Regular,ui-monospace,monospace;text-transform:uppercase}.folio-map__head{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between;padding:2px 2px 8px;color:#71809a;font-size:9px;letter-spacing:.1em}.folio-map__nodes{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;gap:2px;max-height:190px;overflow:auto}.folio-map__node{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;gap:8px;width:100%;padding:6px 5px;border:0;border-left:2px solid transparent;color:#8291aa;background:0 0;font-family:Consolas,SFMono-Regular,ui-monospace,monospace;font-size:10px;text-align:left;cursor:pointer;transition:.2s ease}.folio-map__node span{-ms-flex:0 0 20px;flex:0 0 20px;color:#5f6d85}.folio-map__node em{overflow:hidden;font-style:normal;white-space:nowrap;text-overflow:ellipsis}.folio-map__node.is-active,.folio-map__node:hover{border-left-color:var(--folio-accent-2);color:#f0f5ff;background:rgba(67,214,189,.08)}.folio-map__node.is-active span{color:var(--folio-accent-2)}body.folio-page{margin:0;padding:0;background:#0d1220}.folio-page .folio-space{height:100vh;min-height:620px;border-radius:0}.folio-page .folio-space__header{padding-left:100px}.folio-page__home{position:absolute;z-index:30;top:16px;left:20px;color:rgba(222,231,247,.7);font-family:Consolas,SFMono-Regular,ui-monospace,monospace;font-size:11px;text-decoration:none;transition:.2s ease}.folio-page__home:hover{color:#fff;transform:translateX(-2px)}@media screen and (max-width:720px){.folio-space,.modal-panel--folio{height:min(78vh,760px);min-height:510px}.folio-space__header{padding:13px 14px 10px}.folio-space__viewport{inset:52px 0 58px}.folio-space__map{top:62px;right:10px;width:145px}.folio-space__footer{bottom:12px;left:14px;right:14px}.folio-space__progress{width:min(150px,25vw)}.folio-space__credit{display:none}.folio-slide{width:min(500px,calc(100vw - 56px))}.folio-project-card{grid-template-columns:1fr}.folio-project-card__art{min-height:150px;border-right:0;border-bottom:1px solid rgba(181,198,231,.1)}.folio-project-card__body{padding:20px 22px}.folio-profile-card{min-height:410px;padding:24px}}@media screen and (max-width:480px){.folio-space__status span:last-child{display:none}.folio-space__map{top:auto;right:10px;bottom:58px;left:10px;width:auto;padding:7px}.folio-map__nodes{-ms-flex-direction:row;flex-direction:row;gap:3px;max-height:none;overflow-x:auto;overflow-y:hidden}.folio-map__node{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;min-width:34px;-ms-flex-pack:center;justify-content:center;border-left:0;border-bottom:2px solid transparent}.folio-map__node em{display:none}.folio-map__node.is-active,.folio-map__node:hover{border-bottom-color:var(--folio-accent-2);border-left-color:transparent}.folio-profile-card__links{margin-top:18px}.folio-profile-card__skills{display:none}.folio-profile-card h2{margin-top:42px}}@media screen and (max-width:720px){.lab-grid{grid-template-columns:1fr 1fr}.site-modal{padding:10px}.site-modal__dialog{max-height:92vh;border-radius:14px}.modal-panel--iframe{height:min(78vh,720px)}}@media screen and (max-width:480px){.lab-grid{grid-template-columns:1fr}}