@import url('assets/fonts/fonts.css');
:root{color-scheme:dark;--bg:#0b0b0e;--text:#e5e2e4;--muted:#9a9196;--accent:#c4868b;--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:#86545b;color:#faf4f6}
.scene{position:relative;min-height:600px;height:100dvh;isolation:isolate;overflow:hidden}
.backdrop{position:absolute;inset:0;z-index:-1;pointer-events:none}
.character{position:absolute;width:min(1020px,72vw);height:auto;right:-5vw;top:50%;transform:translateY(-48%);opacity:.65;filter:saturate(.56) brightness(.69);-webkit-mask-image:linear-gradient(180deg,#000 82%,transparent 100%);mask-image:linear-gradient(180deg,#000 82%,transparent 100%)}
.shade{position:absolute;inset:0;background:linear-gradient(90deg,#0b0b0e 3%,rgba(11,11,14,.92) 20%,rgba(11,11,14,.46) 49%,rgba(11,11,14,.03) 75%,rgba(11,11,14,.14)),linear-gradient(0deg,#0b0b0e 0%,rgba(11,11,14,.42) 15%,transparent 42%,transparent 78%,rgba(11,11,14,.35))}
.profile{position:absolute;left:9vw;top:50%;transform:translateY(-44%);max-width:80vw}
h1{font-size:clamp(68px,8.7vw,130px);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}
.name-width{grid-area:1/1;visibility:hidden}
.name-text{position:absolute;inset:0;white-space:nowrap;overflow:hidden}
.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:.23em -.05em;background:#28252a;box-shadow:inset 0 0 0 1px #38313a;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:#9b939a;transition:color .2s,transform .2s}
.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:#afa0a8;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:#9c8e97;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:#e0c3cd}
.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:#cebbc6}
.tech-panel p{font:11px/1.8 var(--mono);color:#a599a2;margin-top:13px}
.encoding-label{display:block;font:8px var(--mono);letter-spacing:.03em;color:#a18f9b;margin-bottom:9px}
.hex-panel button{display:flex;align-items:flex-start;gap:16px;width:100%;padding:0;background:none;text-align:left;color:#be9ba9}
.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:#e0c3cd}
.scene.art-visible .character{opacity:.92;filter:saturate(.85) brightness(.9)}
.scene.art-visible .shade{opacity:.72}
.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:#c9bbc2;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:#171419;border:1px solid #42343c}
dialog::backdrop{background:#09070bd9}
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:#d3bcc8;border:1px solid #42343c;padding:12px;margin:16px 0 22px;width:100%;font-family:var(--mono)}
dialog button{background:none;padding:8px 0;color:#bbb0b8;font-size:12px}
@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{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}.role-cover{transition:transform .2s cubic-bezier(.2,.7,.2,1)}@keyframes appear{from{opacity:0;translate:0 10px}to{opacity:1;translate:0 0}}}
@media(min-width:1800px){.character{width:1200px;right:1vw}}
@media(max-width:1023px){.profile{left:7vw}h1{font-size:9.5vw}.character{width:92vw;right:-18vw;opacity:.58}.roles{font-size:11px;gap:17px}.shade{background:linear-gradient(90deg,#0b0b0e 0%,rgba(11,11,14,.85) 17%,rgba(11,11,14,.3) 65%,rgba(11,11,14,.05)),linear-gradient(0deg,#0b0b0e,transparent 55%)}}
@media(max-width:767px){.scene{min-height:560px}.profile{left:8vw;top:64%;transform:translateY(-20%);max-width:86vw}h1{font-size:13vw;letter-spacing:-.06em}.roles{margin-top:18px;font-size:10px;gap:16px}.socials{margin-top:31px;gap:24px}.social{font-size:22px;width:28px;height:32px}.character{width:auto;height:88%;max-width:none;top:0;left:50%;right:auto;transform:translateX(-53%);opacity:.68;filter:saturate(.5) brightness(.62);-webkit-mask-image:linear-gradient(180deg,#000 70%,transparent 96%);mask-image:linear-gradient(180deg,#000 70%,transparent 96%)}.shade{background:linear-gradient(0deg,#0b0b0e 0%,rgba(11,11,14,.9) 22%,rgba(11,11,14,.56) 41%,rgba(11,11,14,.09) 66%,rgba(11,11,14,.13)),linear-gradient(90deg,rgba(11,11,14,.3),transparent 60%)}.toast{left:8vw;bottom:27px;font-size:10px}.social-tooltip{font-size:9px}}
@media(max-width:767px){.profile-tools{margin-top:37px;gap:21px}.detail-button{font-size:9px}.profile-details{max-width:min(315px,83vw)}.detail-panel{padding-top:17px}.tech-list{font-size:11px;gap:20px}.tech-panel p{font-size:10px;margin-top:10px}.hex-panel code{font-size:9px}.scene.details-open .profile{top:60%;transform:translateY(-37%)}.scene.art-visible .shade{opacity:.86}}
@media(max-height:580px) and (min-width:768px){.scene{min-height:400px}.character{width:70vw;max-height:110vh;object-fit:contain}h1{font-size:8vw}.socials{margin-top:28px}}
@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}}

