body.scene-lab{background:#070f1d}
body.scene-lab::before{content:"";position:fixed;inset:0;pointer-events:none;z-index:0;background:radial-gradient(ellipse at 83% 35%,rgba(50,124,146,.40),transparent 43%),radial-gradient(ellipse at 98% 87%,rgba(18,97,106,.28),transparent 42%),radial-gradient(ellipse at 44% -18%,rgba(44,70,117,.44),transparent 60%),linear-gradient(115deg,#070f1d 5%,#101e33 55%,#091522 100%)}
body.scene-lab::after{content:"";position:fixed;inset:0;pointer-events:none;z-index:0;opacity:.32;background:repeating-radial-gradient(ellipse at 112% 38%,transparent 0 58px,rgba(112,198,215,.09) 59px,transparent 60px 104px);mask-image:linear-gradient(90deg,transparent 48%,#000 84%)}
.scene-lab main,.scene-lab footer{position:relative;z-index:1}
.scene-lab main>section:nth-child(n),.scene-lab #hero.portfolio-hero,.scene-lab #contact{background:transparent}
.scene-lab #hero:before{display:none}.scene-lab .portfolio-scene{display:none}
.scene-lab .portfolio-headline{max-width:740px}.scene-lab .portfolio-evidence{display:none}
.scene-canvas{position:fixed;inset:0;width:100%;height:100%;pointer-events:none;z-index:0;background:transparent}

.scene-lab #contact{min-height:78vh}.scene-lab #contact .section-title{text-shadow:0 2px 25px #07101f}
.scene-lab .rproject-card,.scene-lab .project-card,.scene-lab .pub-item,.scene-lab .contact-item{background:rgba(18,36,53,.93)}
.scene-lab .contact-item{background:rgba(13,30,46,.78);backdrop-filter:blur(12px)}
.scene-panel{position:fixed;z-index:120;bottom:18px;left:50%;transform:translateX(-50%);display:flex;gap:7px;align-items:center;background:#0a1421f2;border:1px solid #385367;padding:9px;border-radius:14px;box-shadow:0 10px 45px #0007;max-width:calc(100% - 24px);backdrop-filter:blur(15px)}
.scene-panel button,.scene-orbit{font:500 12px/1.5 Inter,system-ui,sans-serif;color:#c9dbe8;border:1px solid #3a5365;background:#101e2b;border-radius:7px;padding:9px 12px;cursor:pointer;white-space:nowrap;min-height:38px}
.scene-panel button[aria-pressed=true]{background:#95e5eb;color:#08212b;border-color:#95e5eb}.scene-panel button:focus-visible,.scene-orbit:focus-visible{outline:3px solid #91e8eb;outline-offset:4px}.scene-panel .scene-reset{font-size:17px;padding:6px 11px}
.scene-orbit{position:fixed;right:22px;bottom:88px;z-index:90;cursor:grab;touch-action:pan-y;background:#0c1924e8;border-style:dashed;color:#9cc5d9}.scene-orbit:active{cursor:grabbing}.scene-orbit:disabled{opacity:.4;cursor:default}

.scene-lab footer{padding-bottom:32px}.scene-lab .portfolio-hero-caption{visibility:hidden}
.scene-fallback{position:fixed;right:25px;top:125px;z-index:3;font-size:12px;color:#bed0db;max-width:240px}
.scene-panel[hidden],.scene-caption[hidden],.scene-orbit[hidden],.scene-canvas[hidden]{display:none!important}
@media(min-width:1200px){.scene-lab main>section:not(#hero)>.container{max-width:min(900px,calc(100vw - 500px));margin-left:max(24px,calc((100vw - 1180px)/2));margin-right:auto}}
body.rmodal-open .scene-panel,body.rmodal-open .scene-orbit,body:has(.nav-links.open) .scene-orbit{visibility:hidden}
@media(max-width:760px){.scene-panel{bottom:9px;padding:6px;gap:4px;width:max-content;flex-wrap:wrap;justify-content:center}.scene-panel button{font-size:10px;padding:7px 8px;min-height:36px}.scene-orbit{display:none}.scene-lab #hero.portfolio-hero{padding-top:120px;min-height:840px}.scene-lab .portfolio-headline{max-width:100%}.scene-lab .portfolio-lead{max-width:90%}}
@media print{.scene-canvas,.scene-landscape,.scene-panel,.scene-caption,.scene-orbit{display:none!important}}
@media(max-width:760px){.scene-panel{gap:3px}.scene-panel button{font-size:9px;padding:7px 6px}.scene-panel .scene-reset{font-size:14px;padding:4px 7px}}

.scene-panel button:disabled{opacity:.55;cursor:default}

/* Mouse rotation is available directly around the scene. Keep a keyboard-only
   control discoverable on focus without displaying a permanent instruction. */
.scene-orbit{opacity:0;pointer-events:none;width:1px;height:1px;overflow:hidden;padding:0;border:0}
.scene-orbit:focus-visible{opacity:1;pointer-events:auto;width:auto;height:auto;padding:10px 14px;border:1px solid #80c9da;outline:2px solid #80c9da}

/* Contact is a quiet continuation of the same background, with room for text. */
.scene-lab #contact{position:relative;isolation:isolate;min-height:72vh;padding-top:110px;padding-bottom:100px;border-top:1px solid rgba(154,205,219,.13)}
.scene-lab #contact::before{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;background:radial-gradient(ellipse at 80% 65%,rgba(64,143,151,.12),transparent 65%)}
.scene-lab main>#contact>.container{max-width:1100px;margin-left:auto;margin-right:auto}
.scene-lab #contact .contact-item{background:rgba(13,30,46,.58);border-color:rgba(149,202,216,.18)}
@media(max-width:760px){.scene-lab #contact{padding-top:65px;padding-bottom:65px;min-height:0}}

.scene-inline, .scene-hero-controls { display:contents; }
@media (min-width:1200px) { .scene-inline-secondary, .scene-inline-secondary .scene-canvas { display:none; } }

/* Keep every particle pass in the desktop gutter, including large scan halos. */
@media (min-width:1200px) {
  .scene-canvas {
    --scene-safe-left: max(60vw, calc(max(24px, (100vw - 1180px) / 2) + min(900px, 100vw - 500px) + 24px));
    -webkit-mask-image: linear-gradient(to right, transparent var(--scene-safe-left), #000 calc(var(--scene-safe-left) + 48px));
    mask-image: linear-gradient(to right, transparent var(--scene-safe-left), #000 calc(var(--scene-safe-left) + 48px));
  }
}
@media (max-width:1199px) {
  .scene-orbit, .scene-fallback { display:none!important; }
  .scene-inline { display:block; position:relative; height:clamp(180px, 52vw, 260px); margin:0 22px; overflow:hidden; isolation:isolate; }
  .scene-hero-controls { display:grid; grid-template-columns:max-content minmax(0, 1fr); column-gap:12px; row-gap:10px; max-width:440px; }
  .scene-hero-controls .portfolio-hero-actions { display:contents; }
  .scene-hero-controls .btn-primary { grid-column:1 / -1; grid-row:1; justify-self:start; }
  .scene-hero-controls .btn-outline { grid-column:1; grid-row:2; align-self:end; justify-self:start; }
  .scene-hero-controls .portfolio-orcid { grid-column:1; grid-row:3; margin:0; align-self:start; justify-self:start; }
  .scene-hero-controls .scene-inline { grid-column:2; grid-row:2 / 4; width:100%; max-width:220px; height:180px; margin:-32px 0; justify-self:end; }
  .scene-lab #research, .scene-lab #skills { padding-bottom:20px; }
  .scene-lab .scene-inline-secondary + :is(#skills, #experience) { padding-top:24px; }
  .scene-inline .scene-canvas { position:absolute; inset:0; width:100%; height:100%; mask-image:none; -webkit-mask-image:none; }
}
@media (max-width:760px) {
  .scene-lab #hero.portfolio-hero { min-height:0; }
}
