/* Physical display: one accessible HTML interface shared with the flat prototype. */
body{padding:0;overflow:hidden;background:#000}#stage,#screen-layer{position:fixed;inset:0}#stage canvas{display:block}#screen-layer{pointer-events:none}#screen-anchor{width:1440px;height:810px;pointer-events:auto;background:#1b1c1e;backface-visibility:hidden;border-radius:12px;overflow:hidden}#screen-anchor .prototype-strip,#screen-anchor .outside-note,#screen-anchor .hardware-top,#screen-anchor .hardware-bottom{display:none}#screen-anchor .device{width:100%;height:100%;padding:0;border:0;border-radius:0;box-shadow:none}#screen-anchor .screen{width:100%;height:100%;border:0;border-radius:12px}#screen-anchor .topbar{height:62px;padding:0 28px}#screen-anchor .console-layout{height:534px;grid-template-columns:114px minmax(0,1fr)}#screen-anchor #main{min-height:0;height:100%;overflow:auto;padding:25px 28px}#screen-anchor .home-layout{grid-template-columns:minmax(0,1.65fr) minmax(230px,1fr);gap:25px}#screen-anchor h1{font-size:38px}#screen-anchor .identity{font-size:12px;max-width:none}#screen-anchor .identity-meta{margin-bottom:20px}#screen-anchor .skills{grid-template-columns:repeat(3,minmax(0,1fr))}#screen-anchor .skill{min-height:97px;padding:12px}#screen-anchor .skill strong{font-size:13px}#screen-anchor .skill-note{font-size:9px}#screen-anchor .ip-panel{grid-row:auto;min-height:354px}#screen-anchor .ip-figure{left:50%;top:51%;transform:translate(-50%,-50%) scale(.9)}#screen-anchor .ip-orbit{left:50%;width:220px;height:220px}#screen-anchor .ip-top,#screen-anchor .ip-bottom{max-width:none}#screen-anchor .ip-bottom strong{display:block;font-size:32px}#screen-anchor .print-dock{margin-top:18px;padding:13px 16px;flex-direction:row;align-items:center}#screen-anchor .start{width:auto;min-width:150px}#screen-anchor .navigation{padding:18px 9px;gap:8px}#screen-anchor .navigation a{font-size:13px;flex-direction:row;padding:13px 10px;gap:10px}#screen-anchor .navigation a span{font-size:10px}#screen-anchor .nav-note{display:block;font-size:12px}#screen-anchor .section-label span:last-child{display:block}#screen-anchor .info-grid{grid-template-columns:1fr 1fr}#screen-anchor .resume-heading{flex-direction:row}#screen-anchor .contact-row{flex-direction:row;align-items:center}#screen-anchor .experience{display:none!important}
.scene-label,.scene-footer{position:fixed;left:30px;right:30px;display:flex;justify-content:space-between;gap:16px;color:#5e5c58;font:10px Consolas,monospace;letter-spacing:1.3px;pointer-events:none;z-index:4}.scene-label{top:24px}.scene-label b{font-weight:500;color:#363531}.scene-footer{bottom:23px}.scene-footer a{pointer-events:auto;text-decoration:underline;text-underline-offset:5px}#loading{position:fixed;inset:0;z-index:30;background:#d6d4ce;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:24px;color:#383735}#loading[hidden]{display:none}#loading b{font-size:56px;letter-spacing:-3px}#loading span,#loading a{font-size:13px}#loading a{text-decoration:underline}#scene-controls{position:fixed;bottom:65px;left:50%;transform:translateX(-50%);padding:13px 19px;background:#242427ed;color:#e6dfd4;border:1px solid #ffffff24;border-radius:12px;display:flex;align-items:center;gap:18px;z-index:5;white-space:nowrap;font-size:12px;box-shadow:0 8px 30px #0002}#scene-controls[hidden]{display:none}#scene-controls button{border:0;background:none;color:#ffb17f;font-size:12px;padding:8px}#module{background:#202123d9;backdrop-filter:blur(20px);box-shadow:0 25px 100px #0005;max-height:76vh}#module::backdrop{background:#18181818}body.compact #screen-layer{z-index:3}body.compact #screen-anchor{position:fixed!important;inset:74px 14px 65px!important;width:auto!important;height:auto!important;transform:none!important;overflow:auto;box-shadow:0 12px 65px #0004;border:5px solid #a7a49e}body.compact #screen-anchor .screen{height:auto;min-height:100%}body.compact #screen-anchor .console-layout{height:auto;grid-template-columns:65px minmax(0,1fr)}body.compact #screen-anchor #main{height:auto;padding:20px 14px}body.compact #screen-anchor .home-layout{grid-template-columns:1fr}body.compact #screen-anchor .ip-panel{min-height:140px}body.compact #screen-anchor .ip-figure{left:75%;transform:translate(-50%,-50%) scale(.52)}body.compact #screen-anchor .ip-top,body.compact #screen-anchor .ip-bottom{max-width:55%}body.compact #screen-anchor .ip-bottom strong{display:none}body.compact #screen-anchor h1{font-size:28px}body.compact #screen-anchor .skills{grid-template-columns:repeat(2,minmax(0,1fr))}body.compact #screen-anchor .navigation a{flex-direction:column;padding:12px 3px;font-size:11px}body.compact #screen-anchor .navigation{padding:12px 3px}body.compact #screen-anchor .nav-note{font-size:8px;padding:18px 2px}body.compact #screen-anchor .print-dock{flex-direction:column;align-items:stretch}body.compact #screen-anchor .print-choice strong{font-size:11px}body.compact #screen-anchor .section-label span:last-child{display:none}body.compact #screen-anchor .info-grid{grid-template-columns:1fr}body.compact #screen-anchor .resume-heading{flex-direction:column}body.compact #screen-anchor .contact-row{flex-direction:column;align-items:flex-start}.scene-label span{font-size:9px}@media(max-width:700px){.scene-label,.scene-footer{left:18px;right:18px;font-size:8px;letter-spacing:.5px}.scene-label span{display:none}#scene-controls{gap:8px;padding:10px;max-width:96vw;font-size:10px}#scene-controls button{font-size:10px;padding:7px}}
/* Keep the printed object visible beside the project glass. */
@media(min-width:1000px){#module{width:43vw;max-width:640px;margin:auto 4vw auto auto;max-height:78vh}#module-body{padding:25px 28px}.module-heading h2{font-size:28px}.module-bar{padding:17px 25px}}
#stage{pointer-events:none}

#module::backdrop{backdrop-filter:none}
/* V1.2: edge-to-edge console; machine framing is reserved for the printing sequence. */
#screen-anchor{height:var(--virtual-height,596px)}
#screen-anchor .console-layout{height:calc(100% - 62px)}
body.home-fullscreen #screen-layer{z-index:3}
body.home-fullscreen #screen-anchor{position:fixed!important;inset:0!important;width:100vw!important;height:100dvh!important;transform:none!important;border:0!important;border-radius:0;box-shadow:none;overflow:hidden}
body.home-fullscreen #screen-anchor .device{max-width:none}
body.home-fullscreen #screen-anchor .screen{height:100%;min-height:0;border-radius:0}
body.home-fullscreen .scene-label,body.home-fullscreen .scene-footer{visibility:hidden}
body.home-fullscreen #screen-anchor .console-layout{height:calc(100dvh - 62px)}
body.home-fullscreen #screen-anchor #main{height:100%;overflow:auto;display:flex;flex-direction:column;padding:clamp(22px,3.2vw,56px)}
body.home-fullscreen #screen-anchor .home-layout{flex:1;grid-template-columns:minmax(0,1.55fr) minmax(230px,1fr);align-items:stretch;gap:clamp(24px,4vw,65px)}
body.home-fullscreen #screen-anchor .home-left{display:flex;flex-direction:column}
body.home-fullscreen #screen-anchor h1{font-size:clamp(38px,4.5vw,70px)}
body.home-fullscreen #screen-anchor .skills{flex:1;max-height:360px;margin-top:6px}
body.home-fullscreen #screen-anchor .skill{display:flex;flex-direction:column;justify-content:space-between;min-height:105px;padding:20px}
body.home-fullscreen #screen-anchor .skill .selected-mark{position:absolute;right:16px;bottom:16px}
body.home-fullscreen #screen-anchor .skill{position:relative}
body.home-fullscreen #screen-anchor .skill strong{font-size:15px}
body.home-fullscreen #screen-anchor .skill-top svg{width:32px;height:32px}
body.home-fullscreen #screen-anchor .ip-panel{min-height:340px}
body.home-fullscreen #screen-anchor .print-dock{margin-top:26px;flex-shrink:0;padding:18px 22px}
body.home-fullscreen #screen-anchor .topbar{padding:0 28px}
@media(max-width:759px){
 body.home-fullscreen #screen-anchor .home-layout{grid-template-columns:1fr;gap:18px}
 body.home-fullscreen #screen-anchor #main{padding:22px 14px;display:block}
 body.home-fullscreen #screen-anchor h1{font-size:30px}
 body.home-fullscreen #screen-anchor .skill{padding:12px;min-height:95px}
 body.home-fullscreen #screen-anchor .skill strong{font-size:12px}
 body.home-fullscreen #screen-anchor .ip-panel{min-height:145px}
 body.home-fullscreen #screen-anchor .print-dock{padding:14px;margin-top:18px}
 body.home-fullscreen #screen-anchor .skills{max-height:none}
}
/* Floating object occupies the left third; the glass module uses the right two thirds. */
body.showcase-active #module{position:fixed;inset:9vh 3vw 9vh auto;width:calc(66.666vw - 5vw);max-width:none;max-height:none;height:82vh;margin:0;z-index:10;box-sizing:border-box;background:#12151cda;border-color:#ffffff26;backdrop-filter:blur(22px);animation:module-arrive .55s ease both}
body.showcase-active #module-body{padding:28px 34px}
body.showcase-active .scene-label,body.showcase-active .scene-footer{opacity:.35}
#exhibit-handle{display:none;position:fixed;left:2vw;top:24vh;width:29vw;height:52vh;z-index:6;border:0;background:none;cursor:grab;touch-action:none;border-radius:24px}
body.showcase-active #exhibit-handle{display:block}
#exhibit-handle:disabled{cursor:default}
#exhibit-handle:focus-visible{outline:1px dashed #dceaff90;outline-offset:-8px}
body.exhibit-dragging,body.exhibit-dragging #exhibit-handle{cursor:grabbing;user-select:none}
@keyframes module-arrive{from{opacity:0;transform:translateX(20px)}to{opacity:1;transform:none}}
@media(max-width:759px){
 body.showcase-active #module{inset:35vh 4vw 3vh;width:92vw;height:62vh}
 body.showcase-active #module-body{padding:18px 20px}
 #exhibit-handle{left:22vw;top:3vh;width:56vw;height:30vh}
}
:root[data-motion="reduced"]{body.showcase-active #module{animation:none}}

/* Transparent exhibit-only canvas: the room stays behind the project card. */
#exhibit-overlay{position:fixed;inset:0;width:100vw;height:100dvh;z-index:21;pointer-events:none}
#exhibit-handle{z-index:22}


/* The WebGL stage is the full-viewport layer. Keep CRT inset rules scoped to the
   physical screen only; the room canvas must never inherit a screen rim. */
#stage{
  position:fixed!important;
  inset:0!important;
  width:100vw!important;
  height:100dvh!important;
  margin:0!important;
  padding:0!important;
  box-sizing:border-box!important;
  overflow:hidden!important;
  transform:none!important;
  border:0!important;
  border-radius:0!important;
}
#stage > canvas{
  display:block!important;
  position:absolute!important;
  inset:0!important;
  left:0!important;
  top:0!important;
  width:100%!important;
  height:100%!important;
  max-width:none!important;
  max-height:none!important;
  margin:0!important;
  padding:0!important;
  box-sizing:border-box!important;
  transform:none!important;
  border:0!important;
  border-radius:0!important;
}




