@import url('assets/fonts/fonts.css');
:root{color-scheme:dark;--bg:#0b0c10;--text:#e2e8f0;--muted:#94a3b8;--accent:#508ceb;--mono:Consolas,'Courier New',monospace}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--text);font-family:Manrope,Arial,sans-serif;-webkit-font-smoothing:antialiased}
h1,h2,p{margin:0}
a{color:inherit;text-decoration:none}
button,input{font:inherit}
button{border:0;color:inherit;cursor:pointer}
a,button{-webkit-tap-highlight-color:transparent}
a:focus-visible,button:focus-visible,input:focus-visible{outline:1px solid var(--accent);outline-offset:7px}
::selection{background:#1e3b6e;color:#f0f6ff}
.scene{position:relative;min-height:600px;height:100dvh;isolation:isolate;overflow:hidden}
.backdrop{position:absolute;inset:0;z-index:-1;pointer-events:none}
picture{display:contents}
.character{position:absolute;height:min(90vh,920px);width:auto;max-width:48vw;right:1.5vw;top:50%;transform:translate(var(--px,0px),calc(-48% + var(--py,0px)));object-fit:contain;opacity:.68;filter:saturate(.80) brightness(.72);-webkit-mask-image:linear-gradient(180deg,#000 78%,transparent 98%);mask-image:linear-gradient(180deg,#000 78%,transparent 98%);transition:opacity .35s,filter .35s}
.shade{position:absolute;inset:0;background:linear-gradient(90deg,#0b0c10 3%,rgba(11,12,16,.92) 20%,rgba(11,12,16,.46) 49%,rgba(11,12,16,.03) 75%,rgba(11,12,16,.14)),linear-gradient(0deg,#0b0c10 0%,rgba(11,12,16,.42) 15%,transparent 42%,transparent 78%,rgba(11,12,16,.35))}
.profile{position:absolute;left:9vw;top:50%;transform:translateY(-44%);max-width:55vw}
h1{font-size:clamp(62px,8vw,120px);line-height:1.06;font-weight:600;letter-spacing:-.065em;white-space:nowrap}
.name-button{position:relative;display:inline-grid;grid-template-columns:auto;padding:0;background:none;color:inherit;font:inherit;letter-spacing:inherit;text-align:left;overflow:visible}
.name-width{grid-area:1/1;visibility:hidden}
.name-text{position:absolute;inset:0;white-space:nowrap;overflow:visible;font-variant-numeric:tabular-nums}
.roles{display:flex;align-items:center;gap:21px;margin-top:23px;font:12px/1.6 var(--mono);letter-spacing:.025em;color:var(--muted)}
.hidden-role{position:relative;display:inline-grid;grid-template-columns:auto;background:none;font:inherit;color:var(--accent);padding:0;letter-spacing:inherit}
.role-width{grid-area:1/1;visibility:hidden}
.role-text{position:absolute;inset:0;text-align:left;white-space:nowrap}
.role-cover{position:absolute;inset:.2em -.12em;border-radius:2px;background:#181d26;box-shadow:inset 0 0 0 1px #263142;transform:scaleX(1);transform-origin:right}
.hidden-role.is-peeking .role-cover,.hidden-role.is-open .role-cover{transform:scaleX(0)}
.hidden-role:not(.is-open):not(.is-peeking) .role-text{visibility:hidden}
.socials{display:flex;gap:25px;align-items:center;margin-top:42px;width:max-content;position:relative}
.social{display:grid;place-items:center;width:28px;height:28px;padding:0;background:none;font-size:23px;color:#8fa0b5;transition:color .2s,transform .2s}.social svg{width:21px;height:21px;display:block;fill:currentColor}
.social:hover,.social:focus-visible{color:var(--text);transform:translateY(-2px)}
.social-tooltip{position:absolute;top:calc(100% + 14px);left:0;font:10px var(--mono);letter-spacing:.01em;color:#9cb0c9;white-space:nowrap;pointer-events:none;opacity:0;transition:opacity .18s}
.social:hover .social-tooltip,.social:focus-visible .social-tooltip{opacity:1}
.profile-tools{display:flex;align-items:center;gap:22px;margin-top:44px;width:max-content;min-height:24px}
.detail-button{display:inline-flex;align-items:center;gap:8px;background:none;padding:5px 0;font:10px var(--mono);letter-spacing:.015em;color:#8a9cb4;transition:color .2s}
.detail-button>.ph{font-size:15px}
.detail-button:hover,.detail-button:focus-visible,.detail-button[aria-expanded=true],.detail-button[aria-pressed=true]{color:#cde0fb}
.art-toggle{margin-left:2px}
.art-toggle>.ph{font-size:17px}
.profile-details{max-width:355px}
.detail-panel{padding-top:19px;animation:detail-in .3s ease both}
.tech-list{display:flex;gap:22px;font:12px var(--mono);color:#b8cde8}
.tech-panel p{font:11px/1.8 var(--mono);color:#8fa0b6;margin-top:13px}
.notfound-desc{margin-top:22px;max-width:380px}
.notfound-desc p{font:12px/1.8 var(--mono);color:#8fa0b6}
.encoding-label{display:block;font:8px var(--mono);letter-spacing:.03em;color:#8295b0;margin-bottom:9px}
.hex-panel button{display:flex;align-items:flex-start;gap:16px;width:100%;padding:0;background:none;text-align:left;color:#a4bedf}
.hex-panel code{font:10px/1.8 var(--mono);overflow-wrap:anywhere;flex:1}
.hex-panel .ph{font-size:14px;opacity:.65;margin-top:2px}
.hex-panel button:hover{color:#d6e6fd}
.scene.art-visible .character{opacity:.98;filter:saturate(1.08) brightness(1.02) drop-shadow(0 0 24px rgba(80,140,235,.45));transition:opacity .45s,filter .45s}
.scene.art-visible .shade{opacity:.62}
.shade{transition:opacity .45s}
@keyframes detail-in{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}
.toast{position:fixed;left:9vw;bottom:33px;font:11px var(--mono);color:#cbdcf2;opacity:0;transform:translateY(5px);transition:opacity .2s,transform .2s;pointer-events:none;z-index:1}
.toast.visible{opacity:1;transform:none}
dialog{width:350px;max-width:calc(100% - 40px);padding:28px;color:var(--text);background:#11141b;border:1px solid #232d3f;border-radius:4px}
dialog::backdrop{background:#080a0edb}
dialog h2{font-size:22px;font-weight:500}
dialog p{font-size:12px;color:var(--muted);margin-top:20px}
dialog input{display:block;background:none;color:#d0e0f5;border:1px solid #232d3f;padding:12px;margin:16px 0 20px;width:100%;font-family:var(--mono)}
.dialog-actions{display:flex;align-items:center;gap:12px;margin-top:4px}
.dialog-action-btn{background:#1a2230;border:1px solid #2e3c54;color:#e2e8f0;padding:8px 16px;border-radius:3px;font-size:12px;font-family:inherit;cursor:pointer;transition:background .2s,border-color .2s}
.dialog-action-btn:hover{background:#232f42;border-color:var(--accent)}
.dialog-close-btn{background:none;border:0;padding:8px 12px;color:#94a3b8;font-size:12px;font-family:inherit;cursor:pointer;transition:color .2s}
.dialog-close-btn:hover{color:var(--text)}
dialog button{font-family:inherit}
@media(hover:hover) and (pointer:fine){body,a,button{cursor:url('assets/cursor.svg') 16 16,crosshair}.hidden-role,.social,.name-button,.detail-button,.hex-panel button,dialog button{cursor:url('assets/cursor-active.svg') 16 16,pointer}input{cursor:text}}
@media(prefers-reduced-motion:no-preference){h1{animation:appear .9s cubic-bezier(.16,1,.3,1) both}.roles{animation:appear .9s .07s cubic-bezier(.16,1,.3,1) both}.socials{animation:appear .9s .14s cubic-bezier(.16,1,.3,1) both}.profile-tools{animation:appear .9s .21s cubic-bezier(.16,1,.3,1) both}.notfound-desc{animation:appear .9s .14s cubic-bezier(.16,1,.3,1) both}.role-cover{transition:transform .2s cubic-bezier(.2,.7,.2,1)}dialog[open]{animation:dialog-in .22s cubic-bezier(.16,1,.3,1) both}@keyframes appear{from{opacity:0;translate:0 10px}to{opacity:1;translate:0 0}}@keyframes dialog-in{from{opacity:0;transform:scale(.97)}to{opacity:1;transform:none}}}
@media(min-width:2200px){.profile{left:10vw;max-width:50vw}h1{font-size:clamp(96px,5.2vw,165px)}.roles{margin-top:32px;font-size:16px;gap:28px}.socials{margin-top:54px;gap:32px}.social{width:38px;height:38px;font-size:30px}.social svg{width:27px;height:27px}.social-tooltip{font-size:13px;top:calc(100% + 16px)}.profile-tools{margin-top:56px;gap:28px;min-height:32px}.detail-button{font-size:13px;gap:12px}.detail-button>.ph{font-size:20px}.art-toggle>.ph{font-size:22px}.profile-details{max-width:480px}.detail-panel{padding-top:26px}.tech-list{font-size:16px;gap:28px}.tech-panel p{font-size:14px;margin-top:16px}.hex-panel code{font-size:13px}.hex-panel .ph{font-size:18px}.notfound-desc{max-width:480px;margin-top:28px}.notfound-desc p{font-size:15px}.character{height:min(92vh,1750px);max-width:48vw;right:4vw}}
@media(min-width:1800px) and (max-width:2199px){.character{height:min(92vh,1280px);max-width:46vw;right:2.5vw}h1{font-size:clamp(74px,6.8vw,132px)}}
@media(max-width:1440px) and (min-width:1024px){.profile{left:8vw;max-width:52vw}h1{font-size:clamp(56px,7.2vw,100px)}.character{height:min(88vh,800px);max-width:46vw;right:.5vw}}
@media(min-width:1024px) and (max-aspect-ratio:4/3){.profile{left:6vw;max-width:48vw}.character{height:min(84vh,760px);max-width:46vw;right:0}}
@media(max-width:1023px) and (min-width:768px){.profile{left:7vw;max-width:52vw;top:50%;transform:translateY(-44%)}h1{font-size:clamp(46px,6.8vw,80px)}.character{height:min(80vh,680px);max-width:48vw;right:0;opacity:.64}.roles{font-size:11px;gap:17px}.shade{background:linear-gradient(90deg,#0b0c10 0%,rgba(11,12,16,.88) 18%,rgba(11,12,16,.35) 60%,rgba(11,12,16,.05)),linear-gradient(0deg,#0b0c10,transparent 55%)}}
@media(max-width:767px){.scene{min-height:100dvh;height:100dvh;display:flex;flex-direction:column;justify-content:flex-end;overflow-x:hidden}.backdrop{position:fixed;inset:0;z-index:-1;pointer-events:none;overflow:hidden}.character{position:absolute;height:min(68vh,600px);width:auto;max-width:106vw;top:max(.5vh,env(safe-area-inset-top,0px));left:52%;right:auto;transform:translate(calc(-48% + var(--px,0px)),var(--py,0px));object-fit:contain;opacity:.76;filter:saturate(.82) brightness(.75);-webkit-mask-image:linear-gradient(180deg,#000 62%,rgba(0,0,0,.7) 80%,transparent 98%);mask-image:linear-gradient(180deg,#000 62%,rgba(0,0,0,.7) 80%,transparent 98%)}.shade{background:linear-gradient(0deg,#0b0c10 0%,rgba(11,12,16,.99) 30%,rgba(11,12,16,.82) 48%,rgba(11,12,16,.22) 74%,transparent 100%),radial-gradient(ellipse 95% 65% at 50% 25%,transparent 35%,rgba(11,12,16,.55) 100%)}.profile{position:relative;left:auto;top:auto;transform:none;max-width:100%;padding:0 8vw max(6.5vh,env(safe-area-inset-bottom,0px) + 24px);z-index:1}h1{font-size:clamp(46px,12.8vw,76px);letter-spacing:-.055em}.roles{margin-top:15px;font-size:11px;gap:16px}.socials{margin-top:26px;gap:22px}.social{width:36px;height:36px;font-size:24px;display:inline-flex;align-items:center;justify-content:center}.social svg{width:22px;height:22px}.profile-tools{margin-top:28px;gap:18px;min-height:36px}.detail-button{font-size:10px;padding:8px 4px}.profile-details{max-width:min(330px,86vw)}.detail-panel{padding-top:15px}.tech-list{font-size:11.5px;gap:20px}.tech-panel p{font-size:10.5px;margin-top:10px}.hex-panel code{font-size:9.5px}.notfound-desc{margin-top:16px}.notfound-desc p{font-size:10.5px;line-height:1.7}.scene.details-open .character{opacity:.38;filter:saturate(.65) brightness(.65)}.scene.art-visible .shade{opacity:.76}}
@media(max-height:480px) and (max-width:900px) and (orientation:landscape){.scene{min-height:100dvh;height:100dvh;flex-direction:row;align-items:center;justify-content:flex-start}.profile{position:relative;padding:0 0 0 7vw;max-width:52vw;top:auto;bottom:auto;transform:none}h1{font-size:clamp(36px,6vw,56px)}.character{position:absolute;height:92vh;max-height:none;max-width:44vw;right:2vw;left:auto;top:50%;transform:translate(var(--px,0px),calc(-50% + var(--py,0px)))}.shade{background:linear-gradient(90deg,#0b0c10 0%,rgba(11,12,16,.9) 25%,rgba(11,12,16,.4) 60%,transparent 100%)}}
@media(max-height:580px) and (min-width:768px){.scene{min-height:400px}.character{height:94vh;max-height:none;max-width:44vw;right:1vw;top:50%;transform:translateY(-50%)}h1{font-size:clamp(42px,6.5vw,72px)}.socials{margin-top:24px}.profile{top:50%;transform:translateY(-48%)}}
@media(max-height:580px) and (min-width:768px){.scene.details-open .profile{transform:translateY(-50%)}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}}
