:root{--bg: #0a0c0f;--bg-fade: rgba(10, 12, 15, .6);--panel: #10141a;--line: rgba(232, 230, 225, .12);--line-strong: rgba(232, 230, 225, .28);--text: #e8e6e1;--text-2: #b9bcc2;--text-3: #a3a7ae;--muted: #8a9099;--accent: #ff4d1f;--accent-2: #3de0d0;--on-accent: #0a0c0f;--logo-body: #f7f6f2;--logo-cyan: #05daf7;--logo-pink: #fb0255;--scan: rgba(255, 255, 255, .018);--grid-opacity: .5;--mono: "JetBrains Mono", ui-monospace, monospace;--sans: "Zen Kaku Gothic New", "PingFang TC", "Microsoft JhengHei", "Noto Sans TC", system-ui, sans-serif;--content-max: 1680px;--gutter: max(clamp(16px, 4vw, 56px), calc((100% - var(--content-max)) / 2));--ease: cubic-bezier(.2, .7, .2, 1);color-scheme:dark}:root[data-theme=light]{--bg: #eeebe4;--bg-fade: rgba(238, 235, 228, .7);--panel: #e5e1d7;--line: rgba(21, 23, 27, .12);--line-strong: rgba(21, 23, 27, .3);--text: #15171b;--text-2: #3a3d43;--text-3: #4d5158;--muted: #5f636b;--accent: #c0360c;--accent-2: #066e65;--on-accent: #ffffff;--logo-body: #15171b;--scan: rgba(0, 0, 0, .022);--grid-opacity: .7;color-scheme:light}*{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}body{background:var(--bg);color:var(--text);font-family:var(--sans);line-height:1.7;-webkit-font-smoothing:antialiased;overflow-x:hidden;transition:background-color .4s,color .4s}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit}ul,ol{list-style:none}main,header,footer{position:relative;z-index:1}main:focus{outline:none}.pre{white-space:pre-line}body:before{content:"";position:fixed;inset:0;z-index:0;pointer-events:none;background-image:linear-gradient(var(--line) 1px,transparent 1px),linear-gradient(90deg,var(--line) 1px,transparent 1px);background-size:80px 80px;mask-image:radial-gradient(ellipse at 50% 30%,#000 20%,transparent 75%);opacity:var(--grid-opacity)}body:after{content:"";position:fixed;inset:0;z-index:100;pointer-events:none;background:repeating-linear-gradient(0deg,var(--scan) 0 1px,transparent 1px 3px)}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}:focus-visible{outline:2px solid var(--accent-2);outline-offset:3px}.skip-link{position:fixed;left:16px;top:-100px;z-index:600;padding:10px 16px;font:600 12px var(--mono);letter-spacing:.1em;background:var(--accent);color:var(--on-accent)}.skip-link:focus{top:16px}.frame{position:absolute;inset:90px var(--gutter) 40px;pointer-events:none}.frame i{position:absolute;width:18px;height:18px;border:0 solid var(--line-strong)}.frame i:nth-child(1){top:0;left:0;border-width:1px 0 0 1px}.frame i:nth-child(2){top:0;right:0;border-width:1px 1px 0 0}.frame i:nth-child(3){bottom:0;left:0;border-width:0 0 1px 1px}.frame i:nth-child(4){bottom:0;right:0;border-width:0 1px 1px 0}.hud{position:fixed;top:0;left:0;right:0;z-index:50;display:flex;align-items:center;justify-content:space-between;gap:24px;min-height:68px;padding:16px var(--gutter);font:12px var(--mono);letter-spacing:.14em;color:var(--muted);background:linear-gradient(var(--bg),var(--bg-fade));backdrop-filter:blur(8px);border-bottom:1px solid var(--line)}.logo{display:flex;align-items:center;gap:14px;min-width:0;font:13px var(--mono);letter-spacing:.14em;color:var(--text);white-space:nowrap}.logo-name{overflow:hidden;text-overflow:ellipsis}.logo-mark{flex:none;width:auto;height:24px}.logo-mark .body{fill:var(--logo-body);transition:fill .4s}.logo-mark .cyan{fill:var(--logo-cyan)}.logo-mark .pink{fill:var(--logo-pink)}.hud-nav{display:flex;gap:44px}.hud-nav a{position:relative;display:flex;align-items:baseline;gap:8px;padding:6px 0;font:15px var(--sans);letter-spacing:.18em;white-space:nowrap;transition:color .2s}.hud-nav a:hover{color:var(--accent)}.hud-nav a[aria-current=page]{color:var(--text)}.hud-nav a[aria-current=page]:after{content:"";position:absolute;left:0;right:0;bottom:-2px;height:1px;background:var(--accent)}:is(.hud-nav,.menu-nav) .no{font:12px var(--mono);letter-spacing:.1em;color:var(--accent)}.hud .right{display:flex;align-items:center;gap:20px}.clock{font:13px var(--mono);letter-spacing:.14em;color:var(--text);white-space:nowrap}.theme-toggle{display:flex;align-items:center;gap:10px;padding:8px 14px;font:12px var(--mono);letter-spacing:.14em;color:var(--text);cursor:pointer;background:transparent;border:1px solid var(--line-strong);transition:border-color .2s}.theme-toggle:hover{border-color:var(--accent)}.theme-toggle .sw{position:relative;width:26px;height:12px;border:1px solid var(--line-strong)}.theme-toggle .sw:after{content:"";position:absolute;top:1px;left:1px;width:10px;height:8px;background:var(--accent);transition:transform .3s}:root[data-theme=light] .theme-toggle .sw:after{transform:translate(12px)}.progress{position:absolute;left:0;bottom:-1px;width:100%;height:1px;background:var(--accent);transform:scaleX(0);transform-origin:left}.menu-btn{position:relative;display:none;flex:none;width:44px;height:44px;cursor:pointer;background:transparent;border:1px solid var(--line-strong);transition:border-color .2s}.menu-btn:hover{border-color:var(--accent)}.menu-btn span{position:absolute;left:12px;width:18px;height:1px;background:var(--text);transition:transform .3s var(--ease),opacity .2s,width .3s var(--ease)}.menu-btn span:nth-child(1){top:15px}.menu-btn span:nth-child(2){top:21px;width:12px;background:var(--accent)}.menu-btn span:nth-child(3){top:27px}.menu-btn.is-open span:nth-child(1){transform:translateY(6px) rotate(45deg)}.menu-btn.is-open span:nth-child(2){width:0;opacity:0}.menu-btn.is-open span:nth-child(3){transform:translateY(-6px) rotate(-45deg)}.mobile-menu .menu-btn span:nth-child(1){animation:burger-top .35s var(--ease) both}.mobile-menu .menu-btn span:nth-child(2){animation:burger-mid .25s both}.mobile-menu .menu-btn span:nth-child(3){animation:burger-bottom .35s var(--ease) both}@keyframes burger-top{0%{transform:none}}@keyframes burger-mid{0%{width:12px;opacity:1}}@keyframes burger-bottom{0%{transform:none}}.mobile-menu{position:fixed;inset:0;z-index:350;display:flex;flex-direction:column;padding:0 var(--gutter) 32px;overflow-y:auto;background:var(--bg);animation:menu-open .45s var(--ease) both}.mobile-menu:after{content:"";position:fixed;left:0;right:0;top:0;height:1px;z-index:1;pointer-events:none;background:var(--accent);box-shadow:0 0 12px var(--accent);animation:menu-scan .45s var(--ease) both}.mobile-menu.closing{animation:menu-close .32s cubic-bezier(.7,0,.8,.4) both}.mobile-menu.closing:after{animation:none;opacity:0}@keyframes menu-open{0%{clip-path:inset(0 0 100% 0)}to{clip-path:inset(0 0 0 0)}}@keyframes menu-close{0%{clip-path:inset(0 0 0 0)}to{clip-path:inset(0 0 100% 0)}}@keyframes menu-scan{0%{transform:translateY(0);opacity:1}90%{opacity:1}to{transform:translateY(100vh);opacity:0}}.menu-top{display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:68px;border-bottom:1px solid var(--line)}.mobile-menu .menu-btn{display:block}.menu-label{margin:48px 0 16px;font:12px var(--mono);letter-spacing:.25em;color:var(--accent)}.menu-nav{display:flex;flex-direction:column;border-top:1px solid var(--line)}.menu-nav a{position:relative;display:flex;align-items:baseline;gap:16px;padding:22px 0;font:900 clamp(28px,8vw,40px) var(--sans);letter-spacing:.08em;color:var(--text);border-bottom:1px solid var(--line);animation:menu-item .5s var(--ease) both;animation-delay:calc(.12s + var(--i) * .06s)}.menu-nav a[aria-current=page]{color:var(--accent)}.menu-nav a[aria-current=page]:after{content:"\25cf";margin-left:auto;align-self:center;font-size:10px;color:var(--accent)}@keyframes menu-item{0%{opacity:0;transform:translateY(16px)}}.menu-foot{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-top:auto;padding-top:40px;animation:menu-item .5s var(--ease) .32s both}.site-footer{display:flex;justify-content:space-between;gap:16px;padding:32px var(--gutter);border-top:1px solid var(--line);font:11px var(--mono);letter-spacing:.2em;color:var(--muted)}@media(max-width:960px){.hud-nav{gap:28px}.hud .right{gap:14px}.hud .clock{display:none}}@media(max-width:744px){.hud-nav,.hud .right{display:none}.menu-btn{display:block}}@media(max-width:600px){.site-footer{flex-direction:column;gap:8px}}@media(prefers-reduced-motion:reduce){.mobile-menu,.mobile-menu:after,.menu-nav a,.menu-foot,.mobile-menu .menu-btn span{animation:none}}section.block{padding:120px var(--gutter);border-top:1px solid var(--line)}.sec-head{display:flex;align-items:baseline;flex-wrap:wrap;gap:18px;margin-bottom:64px}.sec-head:after{content:"";flex:1;min-width:40px;height:1px;background:var(--line);order:1;transform:scaleX(0);transform-origin:left;transition:transform 1.2s var(--ease) .2s}.sec-head.in:after{transform:none}.sec-head>button{order:2}.sec-title{display:flex;align-items:baseline;gap:18px;font:400 12px var(--mono);letter-spacing:.25em;color:var(--muted)}.sec-title b{font-weight:600;color:var(--accent)}.sec-title .jp{font-family:var(--sans);letter-spacing:.3em}.statement{font-size:clamp(28px,3.6vw,48px);font-weight:900;line-height:1.35;text-wrap:balance}.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));margin-top:48px;border-top:1px solid var(--line)}.stats>div{position:relative;padding:20px 16px;border-right:1px solid var(--line)}.stats>div:last-child{border-right:0}.stats strong{display:block;font:400 36px var(--mono)}.stats>div>span{font:11px var(--mono);letter-spacing:.2em;color:var(--muted)}.works{display:grid;grid-template-columns:repeat(2,1fr);gap:1px;background:var(--line);border:1px solid var(--line)}.work{position:relative;padding:24px;background:var(--bg);transition:background .3s}.work:hover{background:var(--panel)}.work .meta{display:flex;justify-content:space-between;gap:12px;font:11px var(--mono);letter-spacing:.15em;color:var(--muted)}.work .meta .idx{color:var(--accent)}.work h3{margin:8px 0 6px;font-size:24px;font-weight:900}.work p{font-size:14px;color:var(--text-3)}.work:after{content:"";position:absolute;inset:10px;pointer-events:none;opacity:0;transform:scale(1.03);transition:opacity .35s,transform .35s;background:linear-gradient(var(--accent),var(--accent)) 0 0 / 14px 1px no-repeat,linear-gradient(var(--accent),var(--accent)) 0 0 / 1px 14px no-repeat,linear-gradient(var(--accent),var(--accent)) 100% 0 / 14px 1px no-repeat,linear-gradient(var(--accent),var(--accent)) 100% 0 / 1px 14px no-repeat,linear-gradient(var(--accent),var(--accent)) 0 100% / 14px 1px no-repeat,linear-gradient(var(--accent),var(--accent)) 0 100% / 1px 14px no-repeat,linear-gradient(var(--accent),var(--accent)) 100% 100% / 14px 1px no-repeat,linear-gradient(var(--accent),var(--accent)) 100% 100% / 1px 14px no-repeat}.work:hover:after,.work:focus-within:after{opacity:1;transform:none}.work .stretched:after{content:"";position:absolute;inset:0;z-index:1}.view{display:inline-flex;gap:8px;margin-top:16px;font:11px var(--mono);letter-spacing:.2em;color:var(--accent)}.view i{font-style:normal;transition:transform .3s}.view:hover i,.work:hover .view i{transform:translate(6px)}section.block>.view{margin-top:32px}.img{position:relative;overflow:hidden;aspect-ratio:16 / 10;margin-bottom:20px;background:repeating-linear-gradient(135deg,var(--line) 0 1px,transparent 1px 12px),var(--panel);border:1px solid var(--line);transform:perspective(900px) rotateX(var(--rx, 0deg)) rotateY(var(--ry, 0deg));transition:transform .5s var(--ease)}.img.wide{aspect-ratio:16 / 8;margin-bottom:0}.img img{display:block;width:100%;height:100%;object-fit:cover;filter:saturate(.85);transition:transform .6s,filter .6s}.img .ph{position:absolute;inset:0;display:grid;place-items:center;padding:16px;text-align:center;font:11px var(--mono);letter-spacing:.3em;color:var(--muted);word-break:break-all}.img:after{content:"";position:absolute;left:0;right:0;top:-30%;height:30%;background:linear-gradient(transparent,color-mix(in srgb,var(--accent-2) 18%,transparent),transparent)}.img .glare{position:absolute;inset:0;pointer-events:none;opacity:0;transition:opacity .4s;background:radial-gradient(circle at var(--mx, 50%) var(--my, 50%),color-mix(in srgb,var(--accent-2) 22%,transparent),transparent 55%)}:is(.work,.case-cover,.case-figure):hover .img img{transform:scale(1.03);filter:saturate(1)}:is(.work,.case-cover,.case-figure):hover .img:after{animation:scan 1.2s ease-out}:is(.work,.case-cover,.case-figure):hover .img .glare{opacity:1}@keyframes scan{to{top:100%}}.case-hero{position:relative;overflow:hidden;padding:150px var(--gutter) 64px}.case-hero .frame{inset:90px var(--gutter) 24px}.case-hero>.rv{position:relative;z-index:1}.case-missing{display:grid;align-content:center;min-height:80svh}.crumb{display:inline-block;margin-bottom:40px;font:11px var(--mono);letter-spacing:.2em;color:var(--muted);transition:color .2s}.crumb:hover{color:var(--accent)}.kicker,.hero .code{display:flex;align-items:center;gap:14px;margin-bottom:24px;font:12px var(--mono);letter-spacing:.3em;color:var(--accent)}.kicker:after,.hero .code:after{content:"";width:80px;height:1px;background:var(--accent)}.case-title{max-width:16ch;font-size:clamp(44px,8vw,120px);font-weight:900;line-height:1.05;letter-spacing:-.02em;text-wrap:balance}.case-sub{display:flex;flex-wrap:wrap;gap:14px;margin-top:28px;font:clamp(12px,1.3vw,15px) var(--mono);letter-spacing:.3em}.case-sub i{font-style:normal;color:var(--accent)}.case-summary{max-width:36ch;margin-top:20px;font-size:clamp(17px,2vw,24px);color:var(--text-2)}.case-meta-wrap{padding:0 var(--gutter) 64px}.case-meta{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.case-meta>div{position:relative;display:flex;flex-direction:column;gap:6px;padding:20px 16px;border-right:1px solid var(--line)}.case-meta>div:last-child{border-right:0}.case-meta dt{font:11px var(--mono);letter-spacing:.2em;color:var(--muted)}.case-meta dd{font-size:15px}.case-next{padding:0 var(--gutter) 80px;border-top:1px solid var(--line)}.next-card{position:relative;display:grid;grid-template-columns:1fr auto;gap:8px 24px;padding:64px 0 48px;border-bottom:1px solid var(--line)}.next-card :is(.lbl,strong,.cat){grid-column:1}.next-card .lbl{font:11px var(--mono);letter-spacing:.25em;color:var(--accent)}.next-card strong{font-size:clamp(36px,6vw,88px);font-weight:900;line-height:1.05;white-space:pre-line;transition:color .3s}.next-card .cat{font:11px var(--mono);letter-spacing:.2em;color:var(--muted)}.next-card .arrow{grid-column:2;grid-row:1 / span 3;align-self:center;font:400 clamp(40px,6vw,80px) var(--mono);font-style:normal;color:var(--muted);transition:transform .4s,color .3s}.next-card:hover :is(strong,.arrow){color:var(--accent)}.next-card:hover .arrow{transform:translate(12px)}.next-card:after{content:"";position:absolute;left:0;bottom:-1px;width:100%;height:1px;background:var(--accent);transform:scaleX(0);transform-origin:left;transition:transform .6s var(--ease)}.next-card:hover:after{transform:none}.case-pager{display:flex;justify-content:space-between;gap:16px;padding-top:20px;font:11px var(--mono);letter-spacing:.2em;color:var(--muted)}.case-pager a{transition:color .2s}.case-pager a:hover{color:var(--accent)}.dialog{position:fixed;inset:0;z-index:500;display:grid;place-items:center;padding:16px;background:color-mix(in srgb,var(--bg) 70%,transparent);backdrop-filter:blur(4px)}.dlg-box{position:relative;width:min(420px,100%);padding:24px;background:var(--panel);border:1px solid var(--line-strong);animation:dlg-in .25s var(--ease)}.dlg-box:before{content:"";position:absolute;left:-1px;top:-1px;width:40px;height:2px;background:var(--accent)}.dlg-title{margin-bottom:12px;font:11px var(--mono);letter-spacing:.25em;color:var(--accent)}.dlg-msg{margin-bottom:20px;font-size:15px}.dlg-input{width:100%;margin-bottom:20px;padding:10px 12px;font:13px var(--mono);color:var(--text);background:var(--bg);border:1px solid var(--line-strong)}.dlg-actions{display:flex;justify-content:flex-end;gap:8px}.dlg-actions button{padding:9px 16px;font:11px var(--mono);letter-spacing:.1em;cursor:pointer;background:transparent;border:1px solid var(--line-strong)}.dlg-actions button:hover{border-color:var(--accent)}.dlg-actions .primary{background:var(--accent);border-color:var(--accent);color:var(--on-accent);font-weight:600}@keyframes dlg-in{0%{opacity:0;transform:translateY(8px)}}.toast{position:fixed;left:50%;bottom:80px;z-index:510;max-width:calc(100% - 32px);padding:8px 16px;font:12px var(--mono);background:var(--accent-2);color:var(--on-accent);transform:translate(-50%);opacity:0;transition:opacity .3s;pointer-events:none}.toast.show{opacity:1}@media(max-width:600px){section.block{padding:80px var(--gutter)}.stats strong{font-size:26px}.works{grid-template-columns:1fr}.img.wide{aspect-ratio:4 / 3}.case-hero{padding-top:120px}.case-meta{grid-template-columns:1fr 1fr}.case-meta>div:nth-child(2n){border-right:0}.case-pager{flex-direction:column}}.empty-state{padding:48px 24px;text-align:center;font:12px var(--mono);letter-spacing:.2em;color:var(--muted);border:1px dashed var(--line-strong)}.ghost-btn{padding:12px 20px;font:12px var(--mono);letter-spacing:.2em;cursor:pointer;background:transparent;border:1px solid var(--line-strong);transition:border-color .2s,color .2s}.ghost-btn:hover{border-color:var(--accent);color:var(--accent)}.error-detail{max-height:240px;margin-top:32px;padding:16px;overflow:auto;font:11px/1.6 var(--mono);white-space:pre-wrap;color:var(--muted);border:1px solid var(--line)}.hero{position:relative;display:grid;align-content:center;min-height:100svh;padding:120px var(--gutter) 80px;overflow:hidden}.hero>.rv{position:relative;z-index:1}.hero h1{font-size:clamp(56px,12vw,180px);font-weight:900;line-height:.9;letter-spacing:-.02em}.hero .jp{margin-top:18px;font-size:clamp(16px,2vw,22px);letter-spacing:.4em;color:var(--muted)}.hero .role{margin-top:40px;font:clamp(13px,1.4vw,16px) var(--mono);letter-spacing:.3em}.hero .tagline{max-width:32ch;margin-top:12px;font-size:clamp(18px,2.2vw,26px)}.hero .status{display:inline-flex;align-items:center;gap:10px;margin-top:40px;padding:8px 14px;font:11px var(--mono);letter-spacing:.2em;border:1px solid var(--line-strong)}.hero .status:before{content:"";width:6px;height:6px;border-radius:50%;background:var(--accent-2);box-shadow:0 0 10px var(--accent-2);animation:blink 1.6s infinite}.hero .vertical{position:absolute;top:50%;right:calc(var(--gutter) + 30px);z-index:2;transform:translateY(-50%);writing-mode:vertical-rl;padding-left:14px;border-left:1px solid var(--line);font-size:13px;letter-spacing:.6em;color:var(--muted)}.hero .coords{position:absolute;left:var(--gutter);bottom:56px;z-index:2;padding-left:24px;font:11px var(--mono);letter-spacing:.2em;color:var(--muted)}@keyframes blink{50%{opacity:.2}}.ring{position:absolute;top:50%;right:calc(var(--gutter) + 5%);z-index:0;width:min(46vw,600px);aspect-ratio:1;pointer-events:none;transform:translate(var(--px, 0px),calc(-50% + var(--py, 0px)));transition:transform .8s var(--ease)}.ring svg{position:relative;width:100%;height:100%;overflow:visible}.ring svg *{transform-box:view-box;transform-origin:200px 200px}.ring .c-line{stroke:var(--line-strong)}.ring .c-muted{stroke:var(--muted);opacity:.55}.ring .c-acc{stroke:var(--accent)}.ring .c-acc2{stroke:var(--accent-2)}.ring .c-text{stroke:var(--text)}.ring .f-acc{fill:var(--accent)}.ring .f-acc2{fill:var(--accent-2)}.ring text{font:7px var(--mono);letter-spacing:.15em;fill:var(--muted);text-anchor:middle;dominant-baseline:middle}.ring .readout text{font-size:8px}.ring .readout .az{fill:var(--accent-2)}.ring .spin-a{animation:spin 140s linear infinite}.ring .spin-b{animation:spin 50s linear infinite reverse}.ring .spin-c{animation:spin 16s cubic-bezier(.6,0,.4,1) infinite}.ring .spin-d{animation:spin 80s linear infinite}.ring .pulse{animation:pulse 3s ease-out infinite}.ring .aim{transition:transform .5s var(--ease)}.ring .sweep{position:absolute;inset:23%;border-radius:50%;background:conic-gradient(from 0deg,transparent 0 290deg,color-mix(in srgb,var(--accent-2) 22%,transparent) 360deg);animation:spin 6s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{0%{transform:scale(.55);opacity:.8}to{transform:scale(1);opacity:0}}.about{display:grid;grid-template-columns:1.2fr 1fr;gap:64px}.about p{font-size:16px;color:var(--text-2)}.about .view{margin-top:32px}.process{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));border-left:1px solid var(--line)}.step{position:relative;padding:8px 28px 24px;border-right:1px solid var(--line)}.step .kanji{display:inline-block;min-width:1em;font-size:88px;font-weight:900;line-height:1.1;color:transparent;-webkit-text-stroke:1px var(--line-strong);transition:color .4s,-webkit-text-stroke-color .4s}.step:hover .kanji{color:var(--accent);-webkit-text-stroke-color:var(--accent)}.step .no{margin-top:24px;font:11px var(--mono);letter-spacing:.2em;color:var(--accent)}.step h3{margin:4px 0 10px;font:600 15px var(--mono);letter-spacing:.2em}.step p{font-size:14px;color:var(--text-3)}.contact .statement{max-width:18ch;font-size:clamp(28px,4vw,56px);line-height:1.3}.mail-row{display:flex;flex-direction:column;align-items:flex-start;gap:14px;margin-top:40px}.mail{padding-bottom:6px;font:clamp(20px,3.4vw,44px) var(--mono);border-bottom:1px solid var(--accent);word-break:break-all}.mail-copy{position:relative;display:flex;flex-wrap:wrap;align-items:baseline;gap:6px 20px;text-align:left;color:var(--text);cursor:copy;background:none;border-width:0 0 1px;border-style:solid;transition:color .2s}.mail-copy:hover .mail-text{color:var(--accent)}.mail-text{transition:color .2s}.mail-tag{font:12px var(--mono);letter-spacing:.2em;color:var(--muted);transition:color .2s}.mail-copy:hover .mail-tag{color:var(--accent)}.mail-copy:after{content:"";position:absolute;left:0;bottom:-1px;width:100%;height:2px;background:var(--accent-2);box-shadow:0 0 10px var(--accent-2);transform:scaleX(0);transform-origin:left}.mail-copy.is-copied:after{animation:copied-sweep .6s var(--ease) forwards}.mail-copy.is-copied .mail-text{animation:copied-flash .6s ease-out}.mail-copy.is-copied .mail-tag{color:var(--accent-2);animation:copied-tag .35s var(--ease)}.mail-copy.is-failed .mail-tag{color:var(--accent)}@keyframes copied-sweep{to{transform:scaleX(1)}}@keyframes copied-flash{30%{color:var(--accent-2);text-shadow:0 0 18px color-mix(in srgb,var(--accent-2) 60%,transparent)}}@keyframes copied-tag{0%{opacity:0;transform:translateY(6px)}}.mail-alt{font:12px var(--mono);letter-spacing:.15em;color:var(--muted);transition:color .2s}.mail-alt:hover{color:var(--accent)}.links{display:flex;flex-wrap:wrap;align-items:center;gap:12px;margin-top:48px}.lk{display:inline-flex;align-items:center;gap:6px}.lk>a{padding:10px 18px;font:12px var(--mono);letter-spacing:.2em;border:1px solid var(--line-strong);transition:border-color .2s,color .2s}.lk>a:hover{border-color:var(--accent);color:var(--accent)}.lk-text{padding:10px 18px;font:12px var(--mono);letter-spacing:.2em;border:1px dashed var(--line-strong)}@media(max-width:960px){.hero .vertical{display:none}.ring{right:-20%;width:80vw;opacity:.3}.about{grid-template-columns:1fr;gap:32px}.step{padding-top:24px;border-bottom:1px solid var(--line)}}.works-count{margin-top:40px;font:11px var(--mono);letter-spacing:.25em;color:var(--muted)}.works-count b{margin-right:10px;font-size:28px;font-weight:400;letter-spacing:.05em;color:var(--accent)}.works-list{padding-top:0;border-top:0}.case-cover{padding:0 var(--gutter) 40px}.case-block{position:relative}.case-figure{padding-top:40px;padding-bottom:40px}.case-figure figcaption{display:flex;align-items:center;gap:12px;margin-top:14px;font:11px var(--mono);letter-spacing:.2em;color:var(--muted)}.case-figure figcaption:before{content:"";flex:none;width:24px;height:1px;background:var(--accent)}.resume-head{display:grid;grid-template-columns:1fr minmax(220px,340px);align-items:end;gap:64px}.resume-headline{max-width:24ch;margin-top:32px;font-size:clamp(20px,2.4vw,30px);font-weight:900;line-height:1.4;text-wrap:balance}.resume-actions{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-top:32px}.cv-btn{display:inline-flex;align-items:center;gap:10px;padding:12px 20px;font:600 12px var(--mono);letter-spacing:.2em;cursor:pointer;background:var(--accent);color:var(--on-accent);border:1px solid var(--accent);transition:background .2s,color .2s}.cv-btn i{font-style:normal;transition:transform .3s}.cv-btn:hover{background:transparent;color:var(--accent)}.cv-btn:hover i{transform:translateY(3px)}.portrait-wrap{position:relative}.portrait-wrap:before,.portrait-wrap:after{content:"";position:absolute;z-index:1;width:18px;height:18px;border:0 solid var(--accent);pointer-events:none}.portrait-wrap:before{top:-8px;right:-8px;border-width:1px 1px 0 0}.portrait-wrap:after{bottom:-8px;left:-8px;border-width:0 0 1px 1px}.img.portrait{aspect-ratio:3 / 4;margin-bottom:0}.portrait-tag{position:absolute;left:0;bottom:-24px;font:11px var(--mono);letter-spacing:.2em;color:var(--muted)}.timeline{border-top:1px solid var(--line)}.tl-item{position:relative;display:grid;grid-template-columns:minmax(160px,1fr) 3fr;gap:32px;padding:36px 0;border-bottom:1px solid var(--line)}.tl-item:before{content:"";position:absolute;left:0;top:-4px;width:7px;height:7px;background:var(--accent);transform:scale(0);transition:transform .3s}.tl-item:hover:before{transform:none}.tl-when{display:flex;flex-direction:column;gap:6px;font:12px var(--mono);letter-spacing:.15em}.tl-loc{font-size:11px;letter-spacing:.2em;color:var(--muted)}.tl-org{font:11px var(--mono);letter-spacing:.25em;color:var(--accent)}.tl-role{margin:6px 0 12px;font-size:clamp(20px,2.4vw,28px);font-weight:900}.tl-desc{max-width:60ch;font-size:15px;color:var(--text-3)}.tl-tags{margin-top:16px;font:11px var(--mono);letter-spacing:.2em;color:var(--muted)}.skills{display:grid;grid-template-columns:repeat(2,1fr);gap:32px 64px}.skill{position:relative}.skill-top{display:flex;justify-content:space-between;gap:16px;margin-bottom:12px;font:12px var(--mono);letter-spacing:.2em}.skill-top .lv{color:var(--accent)}.meter{position:relative;height:4px;background:repeating-linear-gradient(90deg,var(--line-strong) 0 2px,transparent 2px 6px)}.meter i{position:absolute;inset:0 auto 0 0;width:0;background:var(--accent);box-shadow:0 0 10px color-mix(in srgb,var(--accent) 50%,transparent);transition:width 1.4s var(--ease) .2s}.skills.in .meter i{width:var(--lv)}.chips{display:flex;flex-wrap:wrap;align-items:center;gap:10px}.chip{display:inline-flex;align-items:center;gap:8px;padding:10px 18px;font:12px var(--mono);letter-spacing:.15em;border:1px solid var(--line-strong);transition:border-color .2s,color .2s}.chip:hover{border-color:var(--accent);color:var(--accent)}.awards{border-top:1px solid var(--line)}.award{position:relative;display:grid;grid-template-columns:120px 1fr auto;align-items:baseline;gap:24px;padding:22px 0;border-bottom:1px solid var(--line);transition:background .3s,padding .3s}.award:hover{padding-inline:16px;background:var(--panel)}.aw-year{font:12px var(--mono);letter-spacing:.2em;color:var(--accent)}.aw-title{font-size:17px;font-weight:900}.aw-org{font:11px var(--mono);letter-spacing:.2em;text-align:right;color:var(--muted)}@media(max-width:960px){.resume-head{grid-template-columns:1fr;gap:48px}.portrait-wrap{max-width:320px}}@media(max-width:600px){.tl-item{grid-template-columns:1fr;gap:12px}.skills{grid-template-columns:1fr}.award{grid-template-columns:1fr;gap:6px}.aw-org{text-align:left}}.editbar{position:fixed;right:20px;bottom:20px;z-index:200;display:flex;flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:6px;font:11px var(--mono);letter-spacing:.1em}.editbar button{padding:10px 14px;letter-spacing:inherit;cursor:pointer;background:var(--panel);border:1px solid var(--line-strong)}.editbar button:hover{border-color:var(--accent)}.editbar .primary{background:var(--accent);border-color:var(--accent);color:var(--on-accent);font-weight:600}.editbar .dirty:before{content:"\25cf  ";color:var(--accent)}.field-edit{outline:1px dashed color-mix(in srgb,var(--accent-2) 55%,transparent);outline-offset:3px;cursor:text}.field-edit:hover{outline-color:var(--accent-2)}.field-edit:focus{outline:1px solid var(--accent);background:color-mix(in srgb,var(--accent) 7%,transparent)}.field-edit:empty:before{content:"\ff08\9ede\6b64\8f38\5165\ff09";opacity:.5}.mini{display:inline-flex;align-items:center;gap:4px;padding:4px 8px;font:11px var(--mono);letter-spacing:.1em;white-space:nowrap;cursor:pointer;color:var(--accent);background:var(--bg);border:1px solid var(--accent)}.mini:hover{background:var(--accent);color:var(--on-accent)}.mini:disabled{opacity:.35;cursor:default;pointer-events:none}.mini.add{margin-top:16px;padding:10px 16px}.edit-hint{margin-bottom:24px;font:12px var(--mono);letter-spacing:.1em;color:var(--accent-2)}.ctrls{position:absolute;top:8px;right:8px;z-index:3;display:inline-flex;gap:4px}.work>.ctrls{top:30px;left:30px;right:auto}.case-block>.ctrls{top:24px;right:var(--gutter)}.skill>.ctrls{top:-30px;right:0}.award>.ctrls{top:50%;right:8px;transform:translateY(-50%)}.lk-ctrls,.chip-ctrls{display:inline-flex;gap:4px}.links .mini.add,.chips .mini.add{margin-top:0}.feature-toggle{position:absolute;top:30px;right:30px;z-index:3}.slug-btn{margin:0 0 32px 12px;vertical-align:middle}.img-upload{position:absolute;top:8px;right:8px;z-index:2;padding:4px 10px;font:11px var(--mono);cursor:pointer;background:var(--accent-2);color:var(--on-accent);border:0}section.is-hidden{opacity:.4}.add-blocks{display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding-top:48px;padding-bottom:48px}.add-blocks .label{font:11px var(--mono);letter-spacing:.2em;color:var(--muted)}.add-blocks .mini.add{margin-top:0}body.has-editbar{padding-bottom:72px}@media(max-width:600px){.editbar{left:16px;right:16px}body.has-editbar.editing{padding-bottom:120px}}.rv{opacity:0;transform:translateY(24px);transition:opacity .9s,transform .9s var(--ease)}.rv.in{opacity:1;transform:none}::view-transition-old(root),::view-transition-new(root){animation:none;mix-blend-mode:normal}::view-transition-new(root){z-index:999}.ripple{position:fixed;z-index:300;width:0;height:0;pointer-events:none}.ripple i{position:absolute;left:0;top:0;border:1px solid var(--accent);border-radius:50%;transform:translate(-50%,-50%);animation:rip .8s var(--ease) forwards}.ripple i:nth-child(2){border-color:var(--accent-2);border-style:dashed;opacity:0;animation-duration:1.1s;animation-delay:.06s}.ripple i:nth-child(3){border-radius:0;border-width:1px 0;animation:rip-x .6s ease-out forwards}.ripple b{position:absolute;left:14px;top:10px;font:9px/1 var(--mono);letter-spacing:.15em;color:var(--accent);white-space:nowrap;animation:rip-label .9s ease-out forwards}@keyframes rip{0%{width:0;height:0;opacity:1}to{width:120px;height:120px;opacity:0}}@keyframes rip-x{0%{width:4px;height:4px;opacity:1}to{width:60px;height:0;opacity:0}}@keyframes rip-label{0%,60%{opacity:1}to{opacity:0;transform:translateY(-6px)}}.cursor{position:fixed;left:0;top:0;z-index:290;width:28px;height:28px;margin:-14px 0 0 -14px;pointer-events:none;opacity:0;transition:width .25s,height .25s,margin .25s,opacity .3s}.cursor.on{opacity:1}.cursor:before,.cursor:after{content:"";position:absolute;inset:0}.cursor:before{transition:transform .4s;background:linear-gradient(var(--accent),var(--accent)) 0 0 / 6px 1px no-repeat,linear-gradient(var(--accent),var(--accent)) 0 0 / 1px 6px no-repeat,linear-gradient(var(--accent),var(--accent)) 100% 0 / 6px 1px no-repeat,linear-gradient(var(--accent),var(--accent)) 100% 0 / 1px 6px no-repeat,linear-gradient(var(--accent),var(--accent)) 0 100% / 6px 1px no-repeat,linear-gradient(var(--accent),var(--accent)) 0 100% / 1px 6px no-repeat,linear-gradient(var(--accent),var(--accent)) 100% 100% / 6px 1px no-repeat,linear-gradient(var(--accent),var(--accent)) 100% 100% / 1px 6px no-repeat}.cursor:after{inset:50%;width:2px;height:2px;margin:-1px;background:var(--accent)}.cursor.hover{width:52px;height:52px;margin:-26px 0 0 -26px}.cursor.hover:before{transform:rotate(90deg)}.cursor.down:before{transform:scale(.7)}@media(hover:none),(pointer:coarse){.cursor{display:none}}.boot{position:fixed;inset:0;z-index:400;display:grid;place-items:center;font:11px/2 var(--mono);letter-spacing:.2em;color:var(--muted);cursor:pointer}.boot.done{visibility:hidden}.boot .p{position:absolute;left:0;right:0;height:50.5%;background:var(--bg);transition:transform .75s cubic-bezier(.8,0,.2,1)}.boot .p.t{top:0;border-bottom:1px solid var(--line)}.boot .p.b{bottom:0;border-top:1px solid var(--line)}.boot.out .p.t{transform:translateY(-101%)}.boot.out .p.b{transform:translateY(101%)}.boot.closing .p{transition-duration:.5s}.boot .seam{position:absolute;left:0;right:0;top:50%;z-index:1;height:1px;background:var(--accent);box-shadow:0 0 12px var(--accent);transform:scaleX(0);transition:transform .35s cubic-bezier(.7,0,.2,1),opacity .4s .5s}.boot.out .seam{transform:scaleX(1);opacity:0}.boot .flash{position:absolute;inset:0;z-index:3;pointer-events:none;opacity:0;background:linear-gradient(transparent 49.6%,#fff 49.9%,#fff 50.1%,transparent 50.4%),radial-gradient(ellipse 70% 14% at 50% 50%,color-mix(in srgb,#fff 85%,var(--accent-2)),color-mix(in srgb,var(--accent-2) 45%,transparent) 35%,transparent 70%)}.boot.out .flash{animation:flash .75s var(--ease) .28s}@keyframes flash{0%{opacity:0;transform:scaleY(.3)}10%{opacity:1;transform:scaleY(1)}to{opacity:0;transform:scaleY(5)}}.boot .box{position:relative;z-index:2;width:min(360px,80vw);transition:opacity .2s,transform .3s}.boot .corner{position:absolute;z-index:2;font-size:11px;letter-spacing:.2em;transition:opacity .2s}.boot .corner.tl{top:24px;left:var(--gutter)}.boot .corner.br{right:var(--gutter);bottom:24px;color:var(--accent)}.boot .pct{color:var(--text)}.boot .line{opacity:0}.boot .line.on{opacity:1}.boot .line em{font-style:normal;color:var(--accent-2)}.boot .bar{height:1px;margin-top:16px;overflow:hidden;background:var(--line)}.boot .bar i{display:block;height:100%;background:var(--accent)}.boot.out :is(.box,.corner){opacity:0}.boot.out .box{transform:scale(.96)}.boot.quick :is(.box,.corner){display:none}.glitch>.rv>*{animation:glitch .55s steps(1) both}.glitch>.rv>*:nth-child(2){animation-delay:.04s}.glitch>.rv>*:nth-child(4){animation-delay:.08s}@keyframes glitch{0%{transform:translate(-6px);text-shadow:4px 0 var(--accent),-4px 0 var(--accent-2);clip-path:inset(10% 0 55% 0)}15%{transform:translate(5px);text-shadow:-3px 0 var(--accent),3px 0 var(--accent-2);clip-path:inset(60% 0 5% 0)}30%{transform:translate(-3px);text-shadow:2px 0 var(--accent),-2px 0 var(--accent-2);clip-path:inset(0 0 0 0)}45%{transform:translate(2px);text-shadow:-2px 0 var(--accent),2px 0 var(--accent-2);clip-path:inset(35% 0 30% 0)}60%{transform:translate(-1px);text-shadow:1px 0 var(--accent),-1px 0 var(--accent-2);clip-path:inset(0 0 0 0)}to{transform:none;text-shadow:none;clip-path:none}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.rv{opacity:1;transform:none;transition:none}.sec-head:after{transform:none;transition:none}.ring *,.ring .sweep,.hero .status:before{animation:none!important}.mail-copy *,.mail-copy:after{animation:none!important}.mail-copy.is-copied:after{transform:scaleX(1)}.ripple,.cursor,.boot{display:none}}
