:root{
  --void:#000; --ink:#EDEAE2; --ink-dim:#96A0B8; --ink-faint:#5A6479;
  --edge:rgba(150,170,210,.16); --edge-hi:rgba(150,170,210,.34);
  --amber:#F2A93B;
  --display:"Bricolage Grotesque","Helvetica Neue",Arial,sans-serif;
  --body:"IBM Plex Sans",-apple-system,BlinkMacSystemFont,sans-serif;
  --mono:"IBM Plex Mono",ui-monospace,Menlo,monospace;
}
*{box-sizing:border-box}
html,body{margin:0}
body{background:var(--void);color:var(--ink);font-family:var(--body);font-size:14px;line-height:1.55;-webkit-font-smoothing:antialiased}

.stage{position:relative;width:100%;height:100vh;min-height:560px;overflow:hidden;border-bottom:1px solid var(--edge);touch-action:none}
#sky{display:block;width:100%;height:100%}

/* Full-screen translucent overlay — used for all detail views */
.overlay{position:absolute;inset:0;z-index:6;background:rgba(6,9,20,.35);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);display:flex;align-items:center;justify-content:center;opacity:0;pointer-events:none;transition:opacity 400ms ease}
.stage.overlay-open .overlay{opacity:1;pointer-events:auto}

.blob-canvas{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:8}
.ov-content{position:relative;z-index:7}

.ov-close{position:absolute;top:16px;right:20px;z-index:7;background:none;border:none;color:var(--ink-faint);font-size:20px;line-height:1;cursor:pointer;padding:4px 8px;opacity:.6;transition:opacity 150ms}
.ov-close:hover{opacity:1;color:var(--ink)}

.ov-content{max-width:520px;padding:32px 24px;overflow-y:auto;max-height:80vh}

/* Shared text styles for overlay content */
.ov-top{display:flex;justify-content:space-between;align-items:baseline;gap:8px;margin-bottom:4px}
.ov-name{font-family:var(--display);font-weight:600;font-size:17px;line-height:1.1;margin:0;color:var(--accent,var(--amber));letter-spacing:-.02em}
.ov-when{font-family:var(--mono);font-size:10px;color:var(--ink-faint);white-space:nowrap;letter-spacing:.06em}
.ov-role{font-family:var(--mono);font-size:10px;letter-spacing:.15em;text-transform:uppercase;color:var(--ink-dim);margin:0 0 12px}
.ov-list{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:8px}
.ov-list li{font-family:var(--mono);font-size:12px;color:var(--ink-dim);line-height:1.6;padding-left:14px;position:relative}
.ov-list li::before{content:"";position:absolute;left:0;top:9px;width:5px;height:1px;background:var(--accent,var(--amber))}
.ov-chips{display:flex;flex-wrap:wrap;gap:4px;margin-top:12px}
.ov-chip{font-family:var(--mono);font-size:8.5px;letter-spacing:.06em;color:var(--ink-faint);border:1px solid var(--edge);padding:2px 5px}

/* Profile-specific heading style */
.ov-heading{font-family:var(--mono);font-weight:600;font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--amber);margin:0 0 12px;padding-bottom:6px;border-bottom:1px solid var(--edge)}
.ov-list+.ov-heading{margin-top:28px}

/* Zoom hint */
.zoom-hint{position:absolute;bottom:20px;left:50%;transform:translateX(-50%);font-family:var(--mono);font-size:10px;letter-spacing:.1em;color:var(--ink-faint);opacity:0;transition:opacity 300ms;pointer-events:none;z-index:2}
.stage.zoomed .zoom-hint{opacity:1}

.resume{max-width:760px;margin:0 auto;padding:72px 26px 96px}
.resume h2{font-family:var(--display);font-weight:600;font-size:13px;letter-spacing:.18em;text-transform:uppercase;color:var(--amber);margin:48px 0 18px;padding-bottom:8px;border-bottom:1px solid var(--edge)}
.resume h2:first-child{margin-top:0}
.resume article{margin-bottom:26px}
.resume h3{font-family:var(--display);font-weight:600;font-size:17px;margin:0 0 6px;letter-spacing:-.01em;display:flex;flex-wrap:wrap;gap:4px 10px;align-items:baseline}
.resume h3 span{font-family:var(--mono);font-size:10.5px;font-weight:400;letter-spacing:.06em;color:var(--ink-faint);text-transform:uppercase}
.resume ul{margin:0;padding-left:16px;display:flex;flex-direction:column;gap:5px}
.resume li{color:var(--ink-dim);font-size:13.5px}
.resume strong{color:var(--ink);font-weight:500}
.resume a{color:var(--amber)}

@media (prefers-reduced-motion:reduce){.stage{height:auto;min-height:0}}
