@import url("./transitions.css");
@import url("./typography.css");
:root{color-scheme:dark;--bg:#101010;--white:#f0f0f0;--muted:#ddd}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--white);font-family:'Space Grotesk',Arial,Helvetica,sans-serif}
a{color:inherit;text-decoration:none}
a:focus-visible{outline:2px solid #fff;outline-offset:5px}
.skip{position:fixed;top:-100px;left:16px;z-index:10;background:#101010;padding:15px}
.skip:focus{top:12px}
.hero{position:relative;isolation:isolate;min-height:760px;height:100svh;overflow:hidden}
.portrait{position:absolute;inset:0;z-index:-2}
.portrait img{width:100%;height:100%;object-fit:cover;object-position:50% 0;filter:grayscale(1) brightness(.65)}
.portrait:after{content:"";position:absolute;inset:0;background:linear-gradient(0deg,#080808f0,transparent 42%,transparent 70%,#080808a0)}
/* Frame the portrait by screen height on desktop instead of enlarging it to fill the width. */
@media(min-width:901px){
 .portrait{background:#101010}
 .portrait img{position:absolute;left:50%;transform:translateX(-50%);width:auto;max-width:none;height:115%;object-fit:contain;object-position:center top;mask-image:linear-gradient(to right,transparent,#000 13%,#000 87%,transparent);-webkit-mask-image:linear-gradient(to right,transparent,#000 13%,#000 87%,transparent)}
}
header{position:relative;z-index:3;display:flex;align-items:center;justify-content:space-between;gap:20px;padding:28px 5%;text-shadow:0 2px 12px #000}
.brand{font-size:22px;font-weight:700;letter-spacing:-1px;min-height:44px;display:flex;align-items:center}
.socials{display:flex;gap:8px}
.socials a{display:grid;place-items:center;width:44px;height:44px;border:1px solid #ffffff60;border-radius:50%;background:#171717d9;transition:box-shadow .2s,border-color .2s,background .2s}
.socials svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.socials a:hover,.socials a:focus-visible{border-color:#fff;background:#333;box-shadow:0 0 12px #ffffff85,0 0 26px #ffffff40}
.intro{position:absolute;bottom:58px;left:5%;max-width:560px;text-shadow:0 2px 20px #000}
.eyebrow,.caption{display:none}
h1{font-size:clamp(42px,5.5vw,80px);font-weight:500;line-height:1.05;margin:0 0 15px;letter-spacing:-.055em}
h1 span:before{content:" "}
.intro p{font-size:14px;line-height:1.7;max-width:340px;margin:0;color:#ddd}
.resume-link{display:inline-flex;align-items:center;min-height:44px;margin-top:12px;padding:10px 16px;border:1px solid #aaa;border-radius:24px;font-size:12px;background:#111d}
.resume-link:hover{background:#333}
.orbit{position:absolute;inset:0;pointer-events:none}
.chip{position:absolute;pointer-events:auto;display:flex;flex-direction:column;align-items:center;gap:10px;padding:12px;min-width:116px;border-radius:26px;text-shadow:0 2px 8px #000;animation:orbit-drift 7s ease-in-out infinite;transition:background .2s}
.chip i{display:grid;place-items:center;background:#242424;border:1px solid #999;color:#eee;width:68px;height:68px;border-radius:50%;box-shadow:0 8px 28px #0008;transition:box-shadow .2s,border-color .2s,background .2s}
.chip svg{width:28px;height:28px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}
.chip span{background:#151515f0;border:1px solid #888;padding:7px 12px;border-radius:20px;font-size:12px;white-space:nowrap}
.creator{left:13%;top:25%}.builder{right:12%;top:28%;animation-delay:-2s}
.leader{left:24%;top:calc(100% - 420px);animation-delay:-4s}.connect{right:22%;top:calc(100% - 390px);animation-delay:-1s}
.chip:hover,.chip:focus-visible{animation-play-state:paused;background:#111111c9}
.chip:hover i,.chip:focus-visible i{border-color:#fff;background:#303030;box-shadow:0 0 18px #ffffffa0,0 0 42px #ffffff55}
.chip:hover span,.chip:focus-visible span{border-color:#fff}
.bottom{position:absolute;bottom:18px;right:5%;pointer-events:none}
.note{font-size:11px;line-height:1.6;color:#ddd;text-align:right}
@keyframes orbit-drift{0%,100%{transform:translate(0,0) rotate(-2deg)}50%{transform:translate(6px,-12px) rotate(2deg)}}
@media(min-width:1000px) and (max-height:820px){.hero{min-height:760px}.creator{top:20%;left:12%}.builder{top:22%;right:12%}.leader{left:27%;top:calc(100% - 405px)}.connect{right:24%;top:calc(100% - 385px)}}
@media(max-width:600px){.hero{min-height:820px}header{padding:20px 6%;gap:10px}.brand{font-size:20px}.socials{gap:2px}.socials a{width:44px;border-color:transparent;background:#1119}.socials svg{width:19px;height:19px}.portrait img{object-position:50% 20%}.intro{left:7%;right:7%;bottom:60px}h1{font-size:40px}.intro p{font-size:13px;max-width:300px}.chip{min-width:90px;padding:10px;gap:8px}.chip i{width:56px;height:56px}.chip svg{width:25px;height:25px}.chip span{font-size:11px}.creator{left:4%;top:32%}.builder{right:4%;top:36%}.leader{left:7%;top:calc(100% - 375px)}.connect{right:5%;top:calc(100% - 345px)}.note{font-size:10px}.bottom{right:7%}}
/* Keep the desktop visual language on phones; only scale and placement change. */
@media(max-width:600px){
 header{padding:20px 5%;gap:12px}
 .socials{gap:5px}.socials a{width:44px;height:44px;border-color:#ffffff60;background:#171717d9}.socials svg{width:20px;height:20px}
 .chip{width:112px;min-width:0;padding:10px;gap:10px;animation-name:mobile-drift}
 .chip i{width:60px;height:60px}.chip svg{width:26px;height:26px}.chip span{font-size:12px;padding:7px 12px}
 .creator{left:4%;top:33%}.builder{right:4%;top:33%}
 .leader{left:4%;top:calc(100% - 360px)}.connect{right:4%;top:calc(100% - 360px)}
}
@keyframes mobile-drift{0%,100%{transform:translateY(0)}50%{transform:translateY(-6px)}}
@media(hover:none){.chip:hover{background:transparent;animation-play-state:running}.chip:hover i{background:#242424;border-color:#999;box-shadow:0 8px 28px #0008}.chip:hover span{border-color:#888}.chip:active i{border-color:#fff;box-shadow:0 0 18px #ffffff80}.socials a:hover{background:#171717d9;border-color:#ffffff60;box-shadow:none}}
@media(max-width:350px){header{padding-inline:12px;gap:8px}.brand{font-size:18px}.socials{gap:1px}.socials a{width:44px}.intro{left:6%;right:6%}h1{font-size:36px}.intro p{font-size:12px}.chip{width:104px}.chip span{font-size:11px}}
/* One quiet entrance; the portrait stays at its chosen scale throughout. */
@keyframes portrait-reveal{from{opacity:.35}to{opacity:1}}
@keyframes content-reveal{from{opacity:.25;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}
@keyframes navigation-reveal{from{opacity:.3}to{opacity:1}}
@media(prefers-reduced-motion:no-preference){
 .portrait{animation:portrait-reveal 1s ease-out both}
 header{animation:navigation-reveal .65s ease-out both}
 .intro{animation:content-reveal .8s cubic-bezier(.22,1,.36,1) .08s both}
 .orbit{animation:navigation-reveal .9s ease-out .16s both}
 .bottom{animation:navigation-reveal .8s ease-out .2s both}
 /* Keyboard users never have to wait for an entrance to finish. */
 header:focus-within,.intro:focus-within,.orbit:focus-within{animation:none}
}
@media(prefers-reduced-motion:reduce){.chip{animation:none!important}.socials a,.chip,.chip i{transition:none}}
