html{scroll-behavior:smooth}:root{--ink:#11100e;--paper:#f3efe6;--accent:#cf4936;--moss:#285f55;--mist:#e5dfd4;--white:#fffdf8;--muted:#655f56;--line:2px solid var(--ink);--line-soft:1px solid #11100e2e;--sans:"PingFang SC", "Microsoft YaHei", "Noto Sans CJK SC", system-ui, sans-serif;--black:Arial Black, "PingFang SC", "Microsoft YaHei", sans-serif;--serif:Georgia, "Songti SC", serif}*{box-sizing:border-box}html,body,#root{height:100%}body{color:var(--ink);background:var(--paper);font-family:var(--sans);margin:0;font-size:15px;line-height:1.7;overflow:hidden}a{color:inherit;text-decoration:none}h1,h2,h3,p,ul{margin:0}button{font:inherit;cursor:pointer}:focus-visible{outline:3px solid var(--moss);outline-offset:2px}.app{height:100svh;position:relative}.flow-background{z-index:0;pointer-events:none;position:fixed;inset:0}.card-outer{z-index:1;border:var(--line);background:color-mix(in srgb, var(--paper) 55%, transparent);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);grid-template-columns:320px minmax(0,1fr);gap:0;max-width:1240px;height:100%;margin:0 auto;padding:clamp(14px,3vh,32px) clamp(14px,2.5vw,32px);display:grid;position:relative;box-shadow:10px 10px #cf493629}.author-card{border-right:var(--line);scrollbar-width:thin;flex-direction:column;min-height:0;padding:clamp(18px,3vh,34px) 22px 16px;display:flex;overflow-y:auto}.avatar{background:var(--accent);border:var(--line);width:92px;height:92px;box-shadow:5px 5px 0 var(--ink);place-items:center;animation:5.6s ease-in-out infinite mark-breathe;display:grid;transform:rotate(-3deg)}.avatar-mark{font-family:var(--black);color:var(--white);font-size:30px;font-weight:900}.author-name{margin-top:18px;font-size:30px;font-weight:900;line-height:1.1}.author-typed{color:var(--muted);min-height:1.6em;margin-top:6px;font-size:14px;font-weight:700}.typed-text{color:var(--accent);font-weight:900}.typed-cursor{vertical-align:text-bottom;background:var(--accent);width:7px;height:1em;margin-left:2px;animation:1s step-end infinite blink;display:inline-block}.author-intro{color:var(--muted);margin-top:12px;font-size:13px}.author-proof{border:var(--line);grid-template-columns:repeat(3,1fr);margin-top:16px;display:grid}.proof-item{text-align:center;border-right:var(--line-soft);background:color-mix(in srgb, var(--white) 40%, transparent);padding:10px 6px}.proof-item:last-child{border-right:0}.proof-item strong{font-size:20px;font-weight:900;line-height:1.2;display:block}.proof-item span{color:var(--muted);font-size:11px;font-weight:700}.author-actions{flex-direction:column;gap:8px;margin-top:16px;display:flex}.author-social{gap:8px;display:flex}.btn-resume{background:var(--accent);border-color:var(--accent);box-shadow:4px 4px 0 var(--ink);position:relative;overflow:hidden}.btn-resume:after{content:"";background:linear-gradient(100deg,#0000 20%,#ffffff59 50%,#0000 80%);transition:transform .5s;position:absolute;inset:0;transform:translate(-110%)}.btn-resume:hover:after{transform:translate(110%)}.btn-resume:hover{box-shadow:6px 6px 0 var(--ink);transform:translate(-2px,-2px)}.btn-resume[aria-disabled=true]{cursor:not-allowed}.btn-resume[aria-disabled=true]:hover{box-shadow:4px 4px 0 var(--ink);transform:none}.btn-resume[aria-disabled=true]:after{display:none}.btn{border:2px solid var(--ink);flex:1;justify-content:center;align-items:center;gap:8px;min-height:42px;padding:8px 12px;font-size:13px;font-weight:900;transition:transform .15s,box-shadow .15s;display:inline-flex}.btn-primary{color:var(--white);background:var(--ink)}.btn-ghost{background:color-mix(in srgb, var(--paper) 60%, transparent)}.btn:hover{box-shadow:3px 3px 0 var(--accent);transform:translate(-2px,-2px)}.author-menu{border-top:var(--line);flex-direction:column;margin-top:18px;display:flex}.menu-item{color:var(--ink);text-align:left;background:0 0;border:0;border-bottom:1px solid #11100e24;align-items:center;gap:12px;padding:11px 6px;font-size:14px;font-weight:800;transition:background .15s,padding-left .15s;display:flex}.menu-item:hover{background:color-mix(in srgb, var(--mist) 55%, transparent);padding-left:12px}.menu-item-active{background:var(--ink);color:var(--white)}.menu-icon{text-align:center;width:22px;color:var(--accent);font-size:15px}.menu-item-active .menu-icon{color:var(--white)}.author-foot{color:var(--muted);margin-top:auto;padding-top:14px;font-size:11px;font-weight:700}.panel-outer{scrollbar-width:thin;min-height:0;overflow-y:auto}.panel{z-index:1;flex-direction:column;gap:26px;min-height:100%;padding:clamp(22px,4vh,44px) clamp(20px,3vw,42px);display:flex;position:relative}.panel-head{align-items:center;gap:14px;display:flex}.panel-no{font:italic 15px var(--serif);color:var(--accent)}.panel-title{font-size:clamp(24px,2.6vw,34px);font-weight:900;line-height:1}.panel-en{letter-spacing:1px;text-transform:uppercase;color:var(--muted);font-size:11px;font-weight:800}.panel-line{background:var(--ink);flex:1;height:2px}.panel-home{justify-content:center}.home-kicker{text-transform:uppercase;color:var(--muted);align-items:center;gap:8px;font-size:12px;font-weight:900;display:flex}.dot{background:var(--accent);border-radius:50%;width:8px;height:8px;animation:2s infinite dot-pulse}.home-title{font-family:var(--black);letter-spacing:-2px;margin-top:14px;font-size:clamp(64px,8vw,120px);font-weight:900;line-height:.9}.hero-dot{color:var(--accent)}.home-role{margin-top:10px;font-size:18px;font-weight:900}.home-slogan{font-family:var(--black);letter-spacing:-.5px;color:var(--accent);margin-top:14px;font-size:clamp(20px,2.6vw,30px);font-weight:900;line-height:1.25}.home-slogan:before{content:"「"}.home-slogan:after{content:"」"}.home-manifesto{max-width:34em;margin-top:12px;font-size:16px}.home-directions{flex-wrap:wrap;gap:8px;margin-top:18px;padding:0;list-style:none;display:flex}.home-directions li{border:1px solid var(--ink);background:color-mix(in srgb, var(--white) 50%, transparent);padding:5px 12px;font-size:12px;font-weight:800}.home-metrics{border:var(--line);grid-template-columns:repeat(3,1fr);margin-top:22px;display:grid}.metric{border-right:var(--line-soft);background:color-mix(in srgb, var(--white) 40%, transparent);padding:18px 14px}.metric:last-child{border-right:0}.metric strong{font-size:clamp(26px,3vw,40px);font-weight:900;line-height:1.1;display:block}.metric span{color:var(--muted);font-size:12px;font-weight:700}.info-grid{border:var(--line);grid-template-columns:repeat(2,1fr);padding:0;list-style:none;display:grid}.info-item{border-right:var(--line-soft);border-bottom:var(--line-soft);background:color-mix(in srgb, var(--white) 40%, transparent);padding:14px 18px}.info-item:nth-child(2n){border-right:0}.info-item:nth-last-child(-n+2){border-bottom:0}.info-item strong{text-transform:uppercase;color:var(--muted);font-size:11px;font-weight:900;display:block}.info-item span{font-size:15px;font-weight:700}.info-item a span{color:var(--moss)}.edu-item{border:var(--line);background:var(--moss);color:var(--white);justify-content:space-between;align-items:center;gap:16px;padding:18px;display:flex}.edu-item h3{font-size:18px;font-weight:900}.edu-college{opacity:.55;margin-left:8px;font-size:13px;font-weight:700}.edu-item p{opacity:.85;margin-top:4px;font-size:13px;font-weight:700}.edu-item>span{font:italic 14px var(--serif)}.skills-list{grid-template-columns:repeat(2,1fr);gap:16px;display:grid}.skill-group:first-child{border:2px solid var(--accent);background:color-mix(in srgb, var(--accent) 7%, var(--white));grid-column:1/-1;box-shadow:5px 5px #cf493638}.skill-group:first-child:after{content:"★ 核心方向";border:1px solid var(--accent);background:var(--accent);color:var(--white);letter-spacing:1px;padding:2px 10px;font-size:11px;font-weight:900;position:absolute;top:-11px;right:12px}.skill-group{border:var(--line);background:color-mix(in srgb, var(--white) 40%, transparent);padding:16px 18px;position:relative}.skill-group:first-child .skill-tags li{border-color:var(--accent);color:var(--accent);background:color-mix(in srgb, var(--accent) 8%, var(--white));font-weight:900}.skill-group h3{margin-bottom:12px;font-size:16px;font-weight:900}.skill-no{font:italic 13px var(--serif);color:var(--accent);margin-right:6px}.skill-tags{flex-wrap:wrap;gap:7px;padding:0;list-style:none;display:flex}.skill-tags li{border:1px solid var(--ink);background:color-mix(in srgb, var(--mist) 45%, transparent);padding:4px 10px;font-size:12px;font-weight:800}.exp-list{flex-direction:column;gap:18px;display:flex}.exp-item{border:var(--line);background:color-mix(in srgb, var(--white) 40%, transparent);padding:18px 22px}.exp-head{flex-wrap:wrap;align-items:baseline;gap:12px;display:flex}.exp-head h3{font-size:19px;font-weight:900}.exp-period{font:italic 13px var(--serif);color:var(--accent);border:1px solid;padding:1px 10px}.exp-company{color:var(--muted);margin-top:2px;font-size:13px;font-weight:800}.exp-points{flex-direction:column;gap:6px;margin-top:10px;padding-left:18px;font-size:14px;display:flex}.proj-list{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;gap:18px;display:grid}.proj-item{border:var(--line);background:color-mix(in srgb, var(--white) 40%, transparent);padding:18px 22px;transition:transform .15s,box-shadow .15s;position:relative;overflow:hidden}.proj-item:before{content:"";background:var(--accent);transform-origin:top;width:4px;transition:transform .26s cubic-bezier(.22,.9,.36,1);position:absolute;top:0;bottom:0;left:0;transform:scaleY(0)}.proj-item:hover:before{transform:scaleY(1)}.proj-item:hover{border-color:var(--ink);box-shadow:6px 6px #cf493640}.proj-item-interactive{cursor:pointer;padding-bottom:50px}.proj-item-interactive:focus-within{outline:3px solid var(--accent);outline-offset:3px}.proj-card-hitarea{z-index:3;cursor:pointer;background:0 0;border:0;position:absolute;inset:0}.proj-detail-cue{z-index:2;color:var(--moss);letter-spacing:.5px;font-size:12px;font-weight:900;transition:color .15s,transform .15s;position:absolute;bottom:16px;left:22px}.proj-item-interactive:hover .proj-detail-cue{color:var(--accent);transform:translate(4px)}.proj-index{font:italic 900 72px var(--serif);color:var(--ink);opacity:.07;pointer-events:none;-webkit-user-select:none;user-select:none;line-height:1;position:absolute;bottom:2px;right:10px}.proj-top{align-items:flex-start;gap:12px;display:flex}.proj-icon{border:2px solid var(--ink);background:var(--paper);width:42px;height:42px;color:var(--ink);flex:none;place-items:center;transition:background .15s,color .15s,transform .15s;display:grid}.proj-icon svg{width:22px;height:22px}.proj-item:hover .proj-icon{background:var(--ink);color:var(--paper);transform:rotate(-4deg)}.proj-titlewrap{flex-wrap:wrap;align-items:center;gap:8px;min-width:0;display:flex}.proj-titlewrap h3{font-size:19px;font-weight:900}.proj-head a:hover,.proj-titlewrap a:hover{color:var(--accent)}.proj-badge-star{border:1px solid var(--accent);background:color-mix(in srgb, var(--accent) 12%, transparent);color:var(--accent);letter-spacing:1px;padding:2px 8px;font-size:11px;font-weight:900}.proj-tech-tags{flex-wrap:wrap;gap:6px;margin:12px 0 0;padding:0;list-style:none;display:flex}.proj-tech-tags li{border:1px solid var(--ink);letter-spacing:.5px;background:color-mix(in srgb, var(--white) 55%, transparent);padding:2px 10px;font-size:11px;font-weight:800}.proj-item:hover .proj-tech-tags li{border-color:var(--moss);color:var(--moss)}.proj-desc{color:var(--muted);margin-top:10px;font-size:14px}.proj-points{flex-direction:column;gap:6px;margin-top:10px;padding-left:18px;font-size:13.5px;display:flex}.proj-item-featured{background:var(--ink);color:var(--paper);border-color:var(--ink);grid-column:1/-1}.proj-item-featured .proj-desc{color:color-mix(in srgb, var(--paper) 72%, transparent)}.proj-item-featured .proj-points{color:color-mix(in srgb, var(--paper) 85%, transparent)}.proj-item-featured .proj-icon{background:var(--paper);border-color:var(--paper)}.proj-item-featured:hover .proj-icon{background:var(--accent);border-color:var(--accent);color:var(--white)}.proj-item-featured .proj-tech-tags li{border-color:color-mix(in srgb, var(--paper) 55%, transparent);color:color-mix(in srgb, var(--paper) 85%, transparent);background:0 0}.proj-item-featured:hover .proj-tech-tags li{border-color:var(--accent);color:var(--white)}.proj-item-featured .proj-index{color:var(--paper);opacity:.12}.proj-item-featured .proj-badge-star{border-color:var(--accent);background:var(--accent);color:var(--white)}.proj-item-featured:hover{box-shadow:6px 6px #cf493699}.project-dialog-backdrop{z-index:140;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#11100ec2;place-items:center;padding:24px;animation:.18s both project-mask-in;display:grid;position:fixed;inset:0}.project-dialog{border:2px solid var(--ink);background:var(--paper);width:min(1040px,100%);max-height:calc(100svh - 48px);box-shadow:10px 10px 0 var(--accent);flex-direction:column;animation:.26s cubic-bezier(.22,.9,.36,1) both project-dialog-in;display:flex;overflow:hidden}.project-dialog-head{border-bottom:var(--line);flex:none;justify-content:space-between;align-items:flex-start;gap:20px;padding:18px 22px;display:flex}.project-dialog-eyebrow{color:var(--accent);font:italic 700 12px var(--serif);letter-spacing:1px;text-transform:uppercase;margin-bottom:4px}.project-dialog-head h2{font-size:28px;font-weight:900;line-height:1.2}.project-dialog-head-actions{flex:none;align-items:center;gap:10px;display:flex}.project-dialog-repository{border:1px solid var(--moss);color:var(--moss);white-space:nowrap;padding:9px 12px;font-size:12px;font-weight:900;transition:background .15s,color .15s}.project-dialog-repository:hover,.project-dialog-repository:focus-visible{background:var(--moss);color:var(--paper)}.project-dialog-close{border:2px solid var(--ink);background:var(--paper);width:42px;height:42px;color:var(--ink);cursor:pointer;flex:none;place-items:center;padding:0;font-size:27px;line-height:1;transition:background .15s,color .15s;display:grid}.project-dialog-close:hover,.project-dialog-close:focus-visible{background:var(--ink);color:var(--paper)}.project-dialog-body{min-height:0;padding:22px;overflow-y:auto}.project-dialog-shot{border:var(--line);background:var(--ink);margin:0}.project-dialog-shot-viewport{background:var(--ink);touch-action:pan-y;height:clamp(240px,46vh,520px);position:relative;overflow:hidden}.project-dialog-shot img{object-fit:contain;background:var(--ink);width:100%;height:100%;animation:.18s both project-image-in;display:block}.project-dialog-image-trigger{cursor:zoom-in;background:0 0;border:0;width:100%;height:100%;padding:0;display:block;position:relative}.project-dialog-image-trigger:after{content:"";opacity:0;background:#11100e33;transition:opacity .15s;position:absolute;inset:0}.project-dialog-image-trigger>span{z-index:1;border:1px solid var(--paper);color:var(--paper);opacity:0;pointer-events:none;background:#11100ed1;padding:8px 12px;font-size:12px;font-weight:900;transition:opacity .15s;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.project-dialog-image-trigger:hover:after,.project-dialog-image-trigger:focus-visible:after,.project-dialog-image-trigger:hover>span,.project-dialog-image-trigger:focus-visible>span{opacity:1}.project-dialog-image-trigger:focus-visible{outline:3px solid var(--accent);outline-offset:-3px}.project-dialog-arrow{z-index:2;width:44px;height:52px;color:var(--paper);cursor:pointer;background:#11100ec7;border:1px solid #f3efe6b8;place-items:center;padding:0;font-size:22px;line-height:1;transition:background .15s,border-color .15s;display:grid;position:absolute;top:50%;transform:translateY(-50%)}.project-dialog-arrow:hover,.project-dialog-arrow:focus-visible{border-color:var(--accent);background:var(--accent)}.project-dialog-arrow-prev{left:12px}.project-dialog-arrow-next{right:12px}.project-dialog-count{z-index:2;color:var(--paper);font:italic 700 11px var(--serif);letter-spacing:1px;background:#11100ec7;border:1px solid #f3efe680;padding:3px 8px;position:absolute;bottom:10px;right:12px}.project-dialog-shot figcaption{border-top:var(--line);background:var(--paper);color:var(--muted);letter-spacing:.5px;justify-content:space-between;align-items:center;gap:12px;padding:8px 10px;font-size:11px;font-weight:800;display:flex}.project-dialog-shot figcaption strong{color:var(--ink);font-size:12px}.project-dialog-dots{border-top:var(--line-soft);background:var(--paper);justify-content:center;gap:2px;padding:4px 8px 6px;display:flex}.project-dialog-dots button{cursor:pointer;background:0 0;border:0;width:22px;height:22px;padding:0;position:relative}.project-dialog-dots button:after{content:"";border:1px solid var(--ink);background:0 0;transition:background .15s,border-color .15s,transform .15s;position:absolute;inset:7px;transform:rotate(45deg)}.project-dialog-dots button:hover:after,.project-dialog-dots button:focus-visible:after,.project-dialog-dots button.is-active:after{border-color:var(--accent);background:var(--accent);transform:rotate(45deg)scale(1.28)}.project-dialog-intro{grid-template-columns:minmax(0,1fr) minmax(360px,.7fr);align-items:center;gap:28px;margin-top:22px;display:grid}.project-dialog-intro>p{color:var(--muted);font-size:14px;line-height:1.8}.project-dialog-metrics{border-top:var(--line);border-bottom:var(--line);grid-template-columns:repeat(4,minmax(0,1fr));margin:0;display:grid}.project-dialog-metrics div{text-align:center;border-right:var(--line-soft);flex-direction:column-reverse;gap:2px;padding:10px 8px;display:flex}.project-dialog-metrics div:last-child{border-right:0}.project-dialog-metrics dt{color:var(--muted);font-size:10px;font-weight:800}.project-dialog-metrics dd{color:var(--accent);font:italic 900 25px var(--serif);margin:0}.project-dialog-sections{border-top:var(--line);grid-template-columns:repeat(2,minmax(0,1fr));gap:26px;margin-top:24px;padding-top:20px;display:grid}.project-dialog-sections h3{margin-bottom:10px;font-size:16px;font-weight:900}.project-dialog-sections h3:before{content:"/ ";color:var(--accent)}.project-dialog-sections ul{color:var(--muted);flex-direction:column;gap:8px;padding-left:18px;font-size:13px;line-height:1.65;display:flex}.project-dialog-tech{border-top:var(--line-soft);flex-wrap:wrap;gap:6px;margin:22px 0 0;padding:16px 0 0;list-style:none;display:flex}.project-dialog-tech li{border:1px solid var(--moss);color:var(--moss);padding:3px 10px;font-size:11px;font-weight:900}@keyframes project-mask-in{0%{opacity:0}}@keyframes project-dialog-in{0%{opacity:0;transform:translateY(18px)scale(.98)}}@keyframes project-image-in{0%{opacity:0}}.project-image-lightbox{z-index:160;background:#11100eeb;place-items:center;padding:48px;animation:.16s both project-mask-in;display:grid;position:fixed;inset:0}.project-image-lightbox figure{flex-direction:column;align-items:center;gap:10px;width:min(1400px,100%);max-height:calc(100svh - 96px);margin:0;display:flex;position:relative}.project-image-lightbox img{object-fit:contain;border:1px solid #f3efe6b3;max-width:100%;max-height:calc(100svh - 140px);animation:.18s both project-image-in;display:block;box-shadow:8px 8px #cf4936b3}.project-image-lightbox figcaption{color:var(--paper);letter-spacing:.5px;font-size:12px;font-weight:800}.project-image-lightbox-close{z-index:1;border:2px solid var(--paper);background:var(--ink);width:46px;height:46px;color:var(--paper);cursor:pointer;place-items:center;padding:0;font-size:28px;line-height:1;display:grid;position:absolute;top:18px;right:22px}.project-image-lightbox-close:hover,.project-image-lightbox-close:focus-visible{border-color:var(--accent);background:var(--accent)}.awards-list{border:var(--line);padding:0;list-style:none}.awards-list li{border-bottom:var(--line-soft);background:color-mix(in srgb, var(--white) 40%, transparent);justify-content:space-between;align-items:center;gap:14px;padding:13px 18px;display:flex}.awards-list li:last-child{border-bottom:0}.award-name{font-size:15px;font-weight:800}.award-level{font:italic 13px var(--serif);color:var(--accent);white-space:nowrap;border:1px solid;padding:1px 10px}.panel-contact h3{margin-bottom:12px;font-size:18px;font-weight:900}.contact-links{flex-wrap:wrap;gap:10px;display:flex}.contact-links a{border:2px solid var(--ink);background:color-mix(in srgb, var(--white) 45%, transparent);padding:8px 16px;font-size:13px;font-weight:800;transition:transform .15s,box-shadow .15s}.contact-links a:hover{box-shadow:3px 3px 0 var(--accent);transform:translate(-2px,-2px)}@keyframes mark-breathe{0%,to{transform:rotate(-3deg)scale(1)}50%{transform:rotate(1deg)scale(1.04)}}.avatar{position:relative}.avatar-ring{border:2px dashed var(--accent);animation:14s linear infinite spin;position:absolute;inset:-7px}@keyframes spin{to{transform:rotate(360deg)}}.panel-outer{position:relative;overflow-y:auto}.panel-outer:after{content:"";z-index:2;background:var(--ink);pointer-events:none;position:absolute;inset:0}.panel{animation:.4s cubic-bezier(.22,.9,.36,1) both panel-in-x}.panel-outer[data-dir="-1"] .panel{animation-name:panel-in-x-back}@keyframes panel-in-x{0%{opacity:0;transform:translate(34px)}to{opacity:1;transform:none}}@keyframes panel-in-x-back{0%{opacity:0;transform:translate(-34px)}to{opacity:1;transform:none}}.transition-wipe:after{animation:.43s cubic-bezier(.77,0,.18,1) forwards wipe-x}.transition-wipe[data-dir="-1"]:after{animation-name:wipe-x-back}@keyframes wipe-x{0%{transform-origin:100%;transform:scaleX(1)}to{transform-origin:100%;transform:scaleX(0)}}@keyframes wipe-x-back{0%{transform-origin:0;transform:scaleX(1)}to{transform-origin:0;transform:scaleX(0)}}.transition-clip:after{animation:.52s cubic-bezier(.77,0,.18,1) forwards wipe-circle}.transition-clip[data-dir="-1"]:after{animation-name:wipe-circle-back}@keyframes wipe-circle{0%{clip-path:circle(200% at 0%)}to{clip-path:circle(0% at 100%)}}@keyframes wipe-circle-back{0%{clip-path:circle(200% at 100%)}to{clip-path:circle(0% at 0%)}}.transition-vert:after{animation:.46s cubic-bezier(.77,0,.18,1) forwards wipe-y}.transition-vert[data-dir="-1"]:after{animation-name:wipe-y-back}@keyframes wipe-y{0%{transform-origin:bottom;transform:scaleY(1)}to{transform-origin:bottom;transform:scaleY(0)}}@keyframes wipe-y-back{0%{transform-origin:top;transform:scaleY(1)}to{transform-origin:top;transform:scaleY(0)}}@media (prefers-reduced-motion:reduce){.panel-outer:after,.panel{animation-duration:1ms!important}}.panel-watermark{z-index:0;font-family:var(--black);letter-spacing:-4px;color:var(--ink);opacity:.05;pointer-events:none;-webkit-user-select:none;user-select:none;font-size:clamp(84px,11vw,180px);font-weight:900;line-height:1;position:absolute;top:8px;right:22px}.corner{z-index:3;pointer-events:none;width:26px;height:26px;position:absolute}.corner-tl{border-top:2px solid var(--accent);border-left:2px solid var(--accent);top:12px;left:12px}.corner-br{border-right:2px solid var(--accent);border-bottom:2px solid var(--accent);bottom:12px;right:12px}.kbd-hint{z-index:40;border:1px solid var(--ink);background:color-mix(in srgb, var(--paper) 85%, transparent);letter-spacing:1px;color:var(--muted);opacity:0;pointer-events:none;padding:6px 12px;font-size:11px;font-weight:800;animation:.9s 2.4s forwards hint-fade;position:fixed;bottom:14px;right:18px}@keyframes hint-fade{to{opacity:1}}@media (hover:none){.kbd-hint{display:none}}.stagger>*{animation:.46s cubic-bezier(.22,.9,.36,1) both item-in;animation-delay:var(--d,0s)}@keyframes item-in{0%{opacity:0;transform:translateY(18px)scale(.98)}to{opacity:1;transform:none}}.ticker{border:var(--line);background:var(--ink);color:var(--paper);-webkit-user-select:none;user-select:none;margin-top:auto;overflow:hidden}.ticker-track{gap:0;width:max-content;animation:26s linear infinite ticker-scroll;display:flex}.ticker:hover .ticker-track{animation-play-state:paused}.ticker-item{font-family:var(--black);letter-spacing:1px;white-space:nowrap;align-items:center;gap:18px;padding:9px 18px;font-size:14px;font-weight:900;display:inline-flex}.ticker-item i{color:var(--accent);font-style:normal}@keyframes ticker-scroll{to{transform:translate(-50%)}}.metric strong{font-variant-numeric:tabular-nums}.panel-title span,.home-title span{display:inline}.home-title{text-shadow:4px 4px #cf493638}.btn,.contact-links a{position:relative;overflow:hidden}.btn:after,.contact-links a:after{content:"";background:linear-gradient(105deg,#0000,#fffdf88c,#0000);width:50%;height:100%;transition:left .45s;position:absolute;top:0;left:-80%;transform:skew(-20deg)}.btn:hover:after,.contact-links a:hover:after{left:130%}.menu-item{position:relative}.menu-item:before{content:"";background:var(--accent);width:0;height:0;transition:width .18s;position:absolute;top:50%;left:0;transform:translateY(-50%)}.menu-item:hover:before{width:4px;height:60%}.menu-item-active:before{background:var(--paper);width:4px;height:60%}.app:after{content:"";z-index:3;pointer-events:none;opacity:.045;mix-blend-mode:multiply;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");position:fixed;inset:0}.home-title{display:inline-block;position:relative}.home-title:before,.home-title:after{content:attr(data-text);pointer-events:none;clip-path:inset(50% 0);position:absolute;inset:0}.home-title:before{color:var(--accent);animation:3.2s steps(2,jump-none) infinite glitch-a;transform:translate(-2px)}.home-title:after{color:var(--moss);animation:2.7s steps(2,jump-none) infinite glitch-b;transform:translate(2px)}@keyframes glitch-a{0%,91%,to{clip-path:inset(50% 0)}92%{clip-path:inset(8% 0 62%);transform:translate(-4px)}95%{clip-path:inset(72% 0 6%);transform:translate(3px)}98%{clip-path:inset(30% 0 40%);transform:translate(-2px)}}@keyframes glitch-b{0%,91%,to{clip-path:inset(50% 0)}93%{clip-path:inset(62% 0 12%);transform:translate(4px)}96%{clip-path:inset(4% 0 78%);transform:translate(-3px)}}.skill-tags li{transition:transform .15s,box-shadow .15s,background .15s}.skill-tags li:hover{box-shadow:3px 3px 0 var(--accent);background:color-mix(in srgb, var(--paper) 30%, transparent);transform:translateY(-3px)rotate(-2deg)}.exp-item{position:relative}.exp-item:before{content:"";background:var(--accent);width:9px;height:9px;box-shadow:0 0 0 4px color-mix(in srgb, var(--accent) 25%, transparent);border-radius:50%;animation:2.4s infinite dot-pulse;position:absolute;top:26px;left:-1px}.exp-item:after{content:"";background:var(--ink);opacity:.25;width:1px;height:calc(100% - 52px);position:absolute;top:26px;left:-1px}.edu-item{position:relative;overflow:hidden}.edu-item:before{content:"";pointer-events:none;background-image:repeating-linear-gradient(-45deg,#0000,#0000 10px,#ffffff0f 10px 20px);position:absolute;inset:0}.menu-item{transition:background .15s,padding-left .15s,color .15s}.panel-home{position:relative}.panel-home:before{content:"";filter:blur(30px);pointer-events:none;background:radial-gradient(circle,#cf493624,#0000 65%);width:60%;height:70%;animation:6s ease-in-out infinite breathe;position:absolute;top:-20%;right:-15%}@keyframes breathe{0%,to{opacity:.5;transform:scale(1)}50%{opacity:1;transform:scale(1.12)}}.panel-outer::-webkit-scrollbar{width:10px}.panel-outer::-webkit-scrollbar-track{background:var(--mist);border-left:1px solid #11100e1f}.panel-outer::-webkit-scrollbar-thumb{background:var(--ink);border:2px solid var(--mist)}.panel-outer::-webkit-scrollbar-thumb:hover{background:var(--accent)}.author-card{scrollbar-width:thin;scrollbar-color:var(--ink) var(--mist)}.author-card::-webkit-scrollbar{width:8px}.author-card::-webkit-scrollbar-thumb{background:var(--ink)}::selection{color:var(--white);background:var(--accent)}.skill-group-head{justify-content:space-between;align-items:baseline;gap:12px;margin-bottom:10px;display:flex}.skill-group-head h3{margin-bottom:0}.skill-level{font:italic 15px var(--serif);color:var(--accent);font-variant-numeric:tabular-nums}.skill-bar{border:var(--line);background:color-mix(in srgb, var(--mist) 55%, transparent);height:10px;margin-bottom:12px;overflow:hidden}.skill-bar-fill{height:100%;width:var(--level);background:repeating-linear-gradient(-45deg, var(--accent), var(--accent) 6px, color-mix(in srgb, var(--accent) 70%, var(--ink)) 6px, color-mix(in srgb, var(--accent) 70%, var(--ink)) 12px);animation:1.1s cubic-bezier(.22,.9,.36,1) both bar-fill;animation-delay:var(--d,0s);display:block}@keyframes bar-fill{0%{width:0}}.skill-group{transition:transform .18s,box-shadow .18s}.skill-group:hover{box-shadow:4px 4px 0 var(--ink);transform:translateY(-3px)}.proof-item,.metric{transition:background .15s}.proof-item:hover,.metric:hover{background:color-mix(in srgb, var(--accent) 12%, var(--white))}.menu-item:focus-visible{outline-offset:-3px}.panel-home:after{content:"⌗";color:var(--accent);opacity:.4;font-size:22px;animation:20s linear infinite spin;position:absolute;bottom:6px;right:6px}@keyframes blink{0%,50%{opacity:1}51%,to{opacity:0}}@keyframes dot-pulse{0%,to{opacity:1}50%{opacity:.4}}@media (width<=1020px){.card-outer{grid-template-columns:270px minmax(0,1fr)}.home-title{font-size:clamp(52px,9vw,96px)}}@media (width<=900px){body{overflow:auto}.app{height:auto;min-height:100svh}.card-outer{grid-template-columns:1fr;min-height:0}.author-card{border-right:0;border-bottom:var(--line);overflow:visible}.author-menu{border-top:0;flex-flow:wrap;gap:6px;padding-top:14px}.menu-item{border:1px solid var(--ink);padding:8px 12px}.menu-item-active{background:var(--ink)}.author-foot{display:none}}@media (width<=760px){:root{font-size:14px}body{padding-top:54px;font-size:14px}.app{min-height:calc(100svh - 54px)}.flow-background{top:54px}.card-outer{box-shadow:none;border-left:0;border-right:0;grid-template-columns:1fr;padding:0}.author-card{display:none}.panel{gap:20px;padding:20px 16px 28px}.panel-title{font-size:24px}.panel-en{display:none}.panel-watermark{letter-spacing:-2px;font-size:64px;right:12px}.mobile-topbar{z-index:60;border-bottom:var(--line);background:color-mix(in srgb, var(--paper) 92%, transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);align-items:center;gap:12px;height:54px;padding:0 14px;display:flex;position:fixed;top:0;left:0;right:0}.topbar-title{white-space:nowrap;text-overflow:ellipsis;flex:1;min-width:0;font-size:16px;font-weight:900;overflow:hidden}.topbar-title i{color:var(--muted);font-size:13px;font-style:normal;font-weight:700}.topbar-mail{border:2px solid var(--ink);background:color-mix(in srgb, var(--white) 55%, transparent);flex:none;place-items:center;width:38px;height:38px;font-size:16px;display:grid}.burger{border:2px solid var(--ink);background:var(--ink);flex-direction:column;flex:none;justify-content:center;align-items:center;gap:5px;width:42px;height:38px;padding:0;display:flex}.burger span{background:var(--paper);width:20px;height:2px;transition:transform .25s,opacity .2s}.burger-open span:first-child{transform:translateY(7px)rotate(45deg)}.burger-open span:nth-child(2){opacity:0}.burger-open span:nth-child(3){transform:translateY(-7px)rotate(-45deg)}.drawer{z-index:80;border-right:var(--line);background:var(--paper);flex-direction:column;gap:4px;width:min(78vw,300px);padding:18px 14px;transition:transform .3s cubic-bezier(.22,.9,.36,1);display:flex;position:fixed;top:0;bottom:0;left:0;overflow-y:auto;transform:translate(-102%);box-shadow:8px 0 32px #11100e40}.drawer-open .drawer,.drawer.drawer-open{transform:translate(0)}.drawer-mask{z-index:70;background:#11100e66;animation:.25s both mask-in;position:fixed;inset:0}@keyframes mask-in{0%{opacity:0}}.drawer-head{border-bottom:var(--line-soft);text-align:center;flex-direction:column;align-items:center;gap:6px;margin-bottom:10px;padding:8px 0 16px;display:flex}.drawer-head strong{font-size:18px;font-weight:900}.drawer-head span{color:var(--muted);font-size:12px;font-weight:700}.drawer .menu-item{background:0 0;border:0;border-bottom:1px solid #11100e24;padding:12px 8px;font-size:15px}.drawer .menu-item:hover{padding-left:14px}.drawer .menu-item-active{background:var(--ink);color:var(--white)}.drawer-links{border-top:var(--line);flex-direction:column;gap:2px;margin-top:auto;padding-top:14px;display:flex}.drawer-links a{color:var(--moss);padding:10px 8px;font-size:14px;font-weight:800}.home-title{letter-spacing:-1px;font-size:clamp(48px,17vw,72px)}.home-slogan{font-size:19px}.home-role{font-size:15px}.home-manifesto{font-size:14px}.info-item span,.proj-titlewrap,.award-name{overflow-wrap:anywhere}.awards-list li{flex-direction:column;align-items:flex-start;gap:6px}.edu-item{flex-direction:column;align-items:flex-start}.panel-contact .contact-links a{text-align:center;flex:100%}.proj-item:hover,.skill-group:hover{box-shadow:none;transform:none}.project-dialog-backdrop{padding:14px}.project-dialog{max-height:calc(100svh - 28px);box-shadow:6px 6px 0 var(--accent)}.project-dialog-head{padding:14px 16px}.project-dialog-head h2{font-size:23px}.project-dialog-head-actions{gap:6px}.project-dialog-repository{padding:8px;font-size:11px}.project-dialog-body{padding:16px}.project-dialog-shot-viewport{aspect-ratio:16/9;height:auto}.project-dialog-image-trigger>span{opacity:1}.project-dialog-intro{grid-template-columns:1fr;gap:16px}.project-dialog-sections{grid-template-columns:1fr;gap:18px}}@media (width<=560px){.info-grid,.skills-list,.home-metrics,.proj-list{grid-template-columns:1fr}.info-item,.metric{border-right:0;border-bottom:var(--line-soft)}.info-grid>.info-item:nth-last-child(-n+2){border-bottom:var(--line-soft)}.info-grid>.info-item:last-child,.home-metrics>.metric:last-child{border-bottom:0}.avatar{width:76px;height:76px}.avatar-mark,.author-name{font-size:24px}.metric strong{font-size:26px}.proj-icon{width:36px;height:36px}.proj-icon svg{width:18px;height:18px}.exp-item,.proj-item{padding:14px 16px}.proj-item-interactive{padding-bottom:46px}.proj-detail-cue{bottom:14px;left:16px}.project-dialog-backdrop{padding:8px}.project-dialog{max-height:calc(100svh - 16px);box-shadow:4px 4px 0 var(--accent)}.project-dialog-close{width:38px;height:38px}.project-dialog-body{padding:12px}.project-image-lightbox{padding:36px 10px 20px}.project-image-lightbox figure{max-height:calc(100svh - 56px)}.project-image-lightbox img{max-height:calc(100svh - 96px);box-shadow:4px 4px #cf4936b3}.project-image-lightbox-close{width:38px;height:38px;top:8px;right:8px}.project-image-lightbox figcaption{font-size:11px}.project-dialog-arrow{width:38px;height:44px}.project-dialog-arrow-prev{left:6px}.project-dialog-arrow-next{right:6px}.project-dialog-count{bottom:6px;right:6px}.project-dialog-shot figcaption{flex-direction:column;align-items:flex-start;gap:2px}.project-dialog-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.project-dialog-metrics div:nth-child(2){border-right:0}.project-dialog-metrics div:nth-child(-n+2){border-bottom:var(--line-soft)}}@media (width<=380px){.panel{padding:16px 12px 24px}.author-social{flex-wrap:wrap}.home-directions li{padding:4px 9px;font-size:11px}}@media (width>=761px){.mobile-topbar,.drawer,.drawer-mask{display:none}}@media (height<=480px) and (width<=900px){.author-intro,.author-proof{display:none}.author-menu{flex-direction:row}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
