:root{color:#f2eee7;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;--ink:#f4efe5;--muted:#f4efe5c7;--teal:#7be0d5;--teal-deep:#0e2625;--line:#eddfc42e;--shadow:0 24px 64px #00000047;background:#090d11;font-family:Trebuchet MS,Segoe UI,sans-serif;font-weight:400;line-height:1.45}*{box-sizing:border-box}html,body,#app{width:100%;min-height:100%;margin:0}body{min-height:100svh;overflow:hidden}button{font:inherit}[hidden]{display:none!important}.app-shell{background:radial-gradient(circle at 20% 18%,#1a726e3d,#0000 30%),radial-gradient(circle at 82% 14%,#be935733,#0000 24%),linear-gradient(#0f1620 0%,#070a0e 100%);min-height:100svh;position:relative;overflow:hidden}.viewport-shell,.viewport-canvas,.viewport-canvas canvas,.dom-overlay{position:absolute;inset:0}.viewport-backdrop{background:linear-gradient(#05080b0d 0%,#05080b9e 78%,#05080be0 100%),radial-gradient(circle,#7be0d51a,#0000 45%);transition:opacity .22s;position:absolute;inset:0}.viewport-grid{transform-origin:bottom;opacity:.35;background-image:linear-gradient(#7be0d517 1px,#0000 1px),linear-gradient(90deg,#7be0d517 1px,#0000 1px);background-size:52px 52px;transition:opacity .22s;position:absolute;inset:-20%;transform:perspective(900px)rotateX(74deg)translateY(28%)}.dom-overlay{padding:max(16px, env(safe-area-inset-top)) max(16px, env(safe-area-inset-right)) max(18px, env(safe-area-inset-bottom)) max(16px, env(safe-area-inset-left));pointer-events:none;flex-direction:column;justify-content:space-between;align-items:center;display:flex}.notice,.control-dock{pointer-events:auto}.notice{color:var(--muted);letter-spacing:.04em;text-transform:uppercase;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);box-shadow:var(--shadow);background:#090f14bd;border:1px solid #f4efe51f;border-radius:999px;margin:0;padding:10px 14px;font-size:.82rem}.control-dock{justify-content:center;align-items:center;gap:12px;display:flex}.control-button{min-width:104px;min-height:52px;color:var(--ink);cursor:pointer;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);box-shadow:var(--shadow);background:#090f149e;border:1px solid #ffffff29;border-radius:999px;padding:0 20px;transition:transform .16s,border-color .16s,background .16s,opacity .16s}.control-button:hover:not(:disabled){border-color:#ffffff47;transform:translateY(-1px)}.control-button:disabled{opacity:.5;cursor:not-allowed}.control-button--primary{color:#08201f;background:linear-gradient(135deg,#7be0d5fa,#43b1a8eb);border-color:#0000;font-weight:700}.app-shell[data-state=starting] .viewport-backdrop,.app-shell[data-state=starting] .viewport-grid,.app-shell[data-state=scanning] .viewport-backdrop,.app-shell[data-state=scanning] .viewport-grid,.app-shell[data-state=placed] .viewport-backdrop,.app-shell[data-state=placed] .viewport-grid,.app-shell[data-state=entering] .viewport-backdrop,.app-shell[data-state=entering] .viewport-grid,.app-shell[data-state=inside] .viewport-backdrop,.app-shell[data-state=inside] .viewport-grid,.app-shell[data-state=exiting] .viewport-backdrop,.app-shell[data-state=exiting] .viewport-grid{opacity:0}.app-shell.is-transitioning:after{content:"";pointer-events:none;background:radial-gradient(circle,#7be0d54d,#0000 22%),linear-gradient(#070c0f05,#070c0fbf);animation:.72s forwards thresholdFlash;position:absolute;inset:0}@keyframes thresholdFlash{0%{opacity:0}28%{opacity:1}to{opacity:0}}@media (width<=640px){.control-dock{width:100%}.control-button{flex:1 1 0;min-width:0}.notice{text-align:center;max-width:100%}}
