@font-face{font-family:"Chakra Petch";font-style:normal;font-weight:400;font-display:swap;src:url("assets/fonts/chakra-petch-regular.woff2") format("woff2")}
@font-face{font-family:"Chakra Petch";font-style:normal;font-weight:500;font-display:swap;src:url("assets/fonts/chakra-petch-medium.woff2") format("woff2")}
:root{color-scheme:dark;--bg:#1b1a1f;--surface:#232228;--text:#eeedef;--muted:#b6b3be;--accent:#a89fb8;--line:#48464e;--font:"Chakra Petch",sans-serif}
*{box-sizing:border-box}html{scroll-padding-top:24px;scrollbar-gutter:stable}html.viewer-open{overflow:hidden}body{margin:0;background:var(--bg);color:var(--text);font:400 16px/1.6 var(--font)}[hidden]{display:none!important}button,input,select{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button{cursor:pointer}a{color:var(--accent);text-underline-offset:5px}a:hover{color:var(--text)}a:focus-visible,button:focus-visible{outline:2px solid var(--text);outline-offset:5px}button:disabled{cursor:default;opacity:.55}img,video{max-width:100%;display:block}h1,h2,h3,p{margin:0}h1,h2,h3{font-weight:500;line-height:1.25}h1{font-size:30px}h2{font-size:21px}p{overflow-wrap:break-word}.site-shell{max-width:1220px;margin:0 auto;padding:46px 40px 24px}.site-header{display:flex;justify-content:space-between;align-items:flex-end;gap:24px}.identity{font-size:40px;line-height:1.15;color:var(--text);font-weight:500;text-decoration:none}.role{font-size:18px;color:var(--accent);margin-top:9px}.button{display:inline-flex;align-items:center;justify-content:center;min-height:42px;padding:9px 15px;border:1px solid var(--line);border-radius:0;background:transparent;color:var(--text);font-size:14px;line-height:1.4;text-decoration:none;text-align:center}.button:hover{border-color:var(--accent);background:var(--surface);color:var(--text)}.button.primary{background:var(--accent);border-color:var(--accent);color:var(--bg)}.button.primary:hover{background:#c0b7d0;border-color:#c0b7d0}.site-nav{display:flex;flex-wrap:wrap;gap:3px;margin-top:30px;border-bottom:1px solid var(--line)}.site-nav a{font-size:15px;font-weight:500;text-decoration:none;color:var(--muted);padding:10px 17px;min-height:44px;display:flex;align-items:center}.site-nav a:hover{color:var(--text);background:var(--surface)}.site-nav a[aria-current]{background:var(--accent);color:var(--bg)}.page{padding-top:28px;min-height:45vh}.page-intro{margin:0 0 28px}.page-intro p{font-size:16px;line-height:1.7}.project-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:40px 24px}.project-card{min-width:0}.cover{display:block;position:relative;background:#101013;aspect-ratio:16/10;overflow:hidden}.cover video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0;pointer-events:none}.cover.preview-playing video{opacity:1}.cover img{width:100%;height:100%;object-fit:cover;transition:opacity .15s}.cover:hover img{opacity:.84}.project-meta{display:flex;flex-wrap:wrap;justify-content:space-between;gap:3px 10px;margin:13px 0 8px;font-size:12px;color:var(--muted)}.project-meta span{color:var(--accent)}.project-card h2 a{color:var(--text);text-decoration:none}.project-card h2 a:hover{text-decoration:underline}.project-card p{font-size:14px;line-height:1.7;color:var(--muted);margin-top:9px;max-width:42ch}.text-link{display:inline-block;margin-top:13px;padding:4px 0;font-size:14px}.back-link{display:inline-block;margin:0 0 24px;font-size:14px}.detail-header{display:flex;justify-content:space-between;align-items:flex-end;gap:20px;flex-wrap:wrap}.eyebrow{color:var(--muted);font-size:13px;line-height:1.5;margin-bottom:8px}.action-row{display:flex;gap:10px;flex-wrap:wrap;align-items:center}.detail-description{max-width:790px;margin:18px 0 24px;color:var(--muted);font-size:16px}.media-stage{background:#111114;display:flex;justify-content:center;align-items:center;width:100%;aspect-ratio:16/9;max-height:70vh;max-height:70svh;overflow:hidden;overflow-anchor:none}.media-stage.has-portrait{aspect-ratio:auto;height:70vh;height:70svh}.media-stage video,.media-stage>img,.media-stage .image-button{width:100%;height:100%;max-height:100%;min-height:0;object-fit:contain}.media-stage .image-button{display:flex;align-items:center;justify-content:center;background:transparent}.media-stage .image-button img{width:100%;height:100%;object-fit:contain}.media-stage video.portrait{width:100%;height:100%;object-fit:contain}.media-selector{display:flex;gap:8px;flex-wrap:wrap;margin-top:16px}.media-selector button{border:1px solid var(--line);background:transparent;color:var(--muted);padding:9px 13px;min-height:42px;font-size:14px;line-height:1.4}.media-selector button:hover{color:var(--text);border-color:var(--accent)}.media-selector button[aria-pressed=true]{color:var(--bg);background:var(--accent);border-color:var(--accent)}.media-caption{font-size:13px;color:var(--muted);margin-top:12px}.media-error{padding:20px;color:var(--text)}.section-heading{margin-bottom:26px}.section-heading p{margin-top:9px;color:var(--muted)}.art-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:28px 24px}figure{margin:0}.image-button{padding:0;border:0;border-radius:0;background:#111114;width:100%;display:block;cursor:zoom-in}.art-grid .image-button{aspect-ratio:16/10;overflow:hidden}.art-grid img{width:100%;height:100%;object-fit:cover}.art-grid figcaption{margin-top:10px;font-size:14px;color:var(--muted)}.about-grid{display:grid;grid-template-columns:1fr 1fr;gap:70px}.prose p+p{margin-top:18px}.experience-list{display:grid;gap:24px}.experience-list h2{font-size:18px}.experience-list article p:last-child{color:var(--muted);font-size:14px;margin-top:8px}.skills-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:24px;margin-top:42px;padding-top:26px;border-top:1px solid var(--line)}.skills-grid h2{font-size:18px;margin-bottom:10px}.skills-grid p{font-size:14px;color:var(--muted)}.secondary{color:var(--muted);font-size:14px;margin-top:15px}.cv-pages{max-width:830px;margin:24px auto 0;display:grid;gap:20px}.cv-pages img{width:100%;height:auto;background:#fff}.email-link{display:inline-block;color:var(--text);font-size:clamp(19px,3vw,29px);overflow-wrap:anywhere}.contact-links{display:flex;flex-wrap:wrap;gap:20px 32px;max-width:640px;margin-top:32px}.contact-links a{padding:8px 0}.site-footer{display:flex;justify-content:space-between;gap:20px;margin-top:46px;border-top:1px solid var(--line);padding-top:18px;color:var(--muted);font-size:12px}.site-footer a{color:var(--muted)}.skip-link{position:absolute;left:16px;top:-100px;z-index:10;background:var(--text);color:var(--bg);padding:12px}.skip-link:focus{top:10px}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
/* A static, enlarged crop of Robert's planet, tilted and error-diffusion dithered. */
body{position:relative;isolation:isolate;min-height:100vh}
body::before{
  content:"";position:fixed;inset:0;pointer-events:none;z-index:-1;
  background:url("assets/media/planet-dither.png") center / cover no-repeat;
  image-rendering:pixelated;opacity:.16;
  mask-image:linear-gradient(115deg,transparent 0%,#0009 32%,#000 76%);
  -webkit-mask-image:linear-gradient(115deg,transparent 0%,#0009 32%,#000 76%);
}
/* Shallow shadows retain the square edges and crisp, readable type. */
.identity,h1,h2,h3{ text-shadow:0 2px 3px #0008 }
.role,.page-intro,.detail-description,.prose,.contact-availability,.email-link{ text-shadow:0 1px 2px #0007 }
.button,.availability-status,.media-selector button{box-shadow:0 2px 3px #0003,0 5px 12px #0002;text-shadow:0 1px 2px #0005}
.site-nav a[aria-current]{box-shadow:0 -2px 12px #0002}
.button.primary,.site-nav a[aria-current],.media-selector button[aria-pressed=true]{text-shadow:none}
.cover,.art-grid .image-button,.media-stage,.cv-pages img,#instagram-feed iframe,.game-shell{box-shadow:0 3px 6px #0005,0 12px 26px #0003}
.game-shell:fullscreen,.game-shell.expanded{box-shadow:none}
.role-line{display:flex;flex-wrap:wrap;align-items:center;gap:9px 16px;margin-top:10px}
.role-line .role{margin:0}
.availability-status{display:inline-flex;align-items:center;gap:8px;padding:4px 10px;border:1px solid #64586f;background:#242129;color:#d1bfdc;font-size:12px;line-height:1.5;text-decoration:none;white-space:nowrap}
.availability-status::before{content:"";width:5px;height:5px;background:currentColor;flex-shrink:0}
.availability-status:hover{background:#332b3c;color:var(--text);border-color:var(--accent)}
.contact-availability{max-width:55ch;margin-bottom:26px;color:var(--muted);font-size:18px;line-height:1.7}
@media(max-width:600px){body::before{opacity:.12;background-position:62% center}.contact-availability{font-size:16px}}
/* Media stays within the screen, including portrait footage and fullscreen. */
.game-toolbar{display:flex;justify-content:space-between;gap:15px;align-items:center;flex-wrap:wrap;margin-bottom:14px}.game-toolbar p{font-size:13px;color:var(--muted)}.game-shell{background:#0b0b0d;position:relative;width:100%;aspect-ratio:16/9;display:flex;justify-content:center;align-items:center}.game-shell iframe{border:0;width:100%;height:100%;display:block}.game-cover{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:15px;background:#111114;text-align:center;padding:20px}.game-cover img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;opacity:.2}.game-cover p,.game-cover button{position:relative}.game-cover p{color:var(--muted);font-size:14px}.game-status{font-size:13px;margin:12px 0;color:var(--muted);min-height:21px}.game-error{padding:15px;border:1px solid var(--line);margin-top:15px}.game-error p{margin-bottom:12px}.game-shell:fullscreen{width:100vw;height:100dvh;aspect-ratio:auto;background:#000}.game-shell:fullscreen iframe{width:min(100vw,177.777778dvh);height:min(56.25vw,100dvh)}.game-shell.expanded{position:fixed;inset:0;width:100vw;height:100dvh;z-index:30;aspect-ratio:auto;background:#000}.game-shell.expanded iframe{width:min(100vw,177.777778dvh);height:min(56.25vw,100dvh)}.exit-game-view{position:absolute;top:8px;right:8px;z-index:35;background:var(--bg);display:none}.game-shell:fullscreen .exit-game-view,.game-shell.expanded .exit-game-view{display:inline-flex}.game-note{margin:16px 0 0;color:var(--muted);font-size:14px;max-width:790px}.game-links{margin-top:20px}.mobile-game-note{display:none}
#image-dialog{border:1px solid var(--line);padding:16px;background:var(--bg);color:var(--text);width:min(1200px,95vw);height:90dvh;max-width:95vw;max-height:94dvh;overflow:hidden}#image-dialog[open]{display:flex;flex-direction:column}#image-dialog::backdrop{background:#000e}.viewer-bar{display:flex;justify-content:space-between;align-items:center;gap:16px;flex-shrink:0;margin-bottom:12px}.viewer-bar p{font-size:14px;color:var(--muted)}.viewer-bar .button{flex-shrink:0}.viewer-image-stage{flex:1;min-height:0;display:flex;align-items:center;justify-content:center}#viewer-image{width:100%;height:100%;object-fit:contain}.viewer-controls{display:flex;align-items:center;justify-content:center;gap:20px;margin-top:12px;flex-shrink:0}.viewer-controls .button{min-width:50px;min-height:44px;font-size:22px}.viewer-controls span{font-size:14px;color:var(--muted);min-width:50px;text-align:center}
@media(min-width:1400px){.site-shell{padding-top:56px}}
@media(max-width:900px){.site-shell{padding:32px 28px 24px}.project-grid,.art-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.about-grid{gap:36px}.identity{font-size:36px}.skills-grid{grid-template-columns:1fr 1fr}}
@media(max-width:600px){body{font-size:16px}.site-shell{padding:26px 20px 22px}.site-header{align-items:flex-start;gap:20px;flex-direction:column}.identity{font-size:32px}.role{font-size:17px}.site-nav{margin-top:24px;flex-wrap:nowrap;gap:0}.site-nav a{flex:1;justify-content:center;padding:10px 5px;font-size:14px}.page{padding-top:24px}.project-grid,.art-grid{grid-template-columns:1fr;gap:34px}.project-grid{gap:36px}.project-card h2{font-size:22px}.project-card p{max-width:none;font-size:15px}.project-meta{font-size:13px}.text-link{font-size:15px;min-height:40px}.cover{aspect-ratio:16/10}.detail-header{align-items:flex-start}.detail-header h1{font-size:27px}.detail-header .action-row{width:100%}.detail-description{font-size:15px}.button,.media-selector button{min-height:44px}.about-grid,.skills-grid{grid-template-columns:1fr;gap:30px}.skills-grid{margin-top:32px}.email-link{font-size:20px}.site-footer{margin-top:34px}.game-cover p{font-size:12px}.game-cover{gap:8px;padding:12px}.game-toolbar{align-items:flex-start;flex-direction:column}.game-toolbar .action-row{width:100%}.mobile-game-note{display:block}.cv-pages{gap:16px}.contact-links{gap:14px 25px}}
@media(max-width:360px){.site-shell{padding:22px 16px}.identity{font-size:29px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;transition:none!important}}
