@font-face{font-family:Space Grotesk;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/space-grotesk-vietnamese-500-normal-BmEvtly_.woff2)format("woff2"),url(/assets/space-grotesk-vietnamese-500-normal-BTqKIpxg.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Space Grotesk;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/space-grotesk-latin-ext-500-normal-DUe3BAxM.woff2)format("woff2"),url(/assets/space-grotesk-latin-ext-500-normal-3dgZTiw9.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Space Grotesk;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/space-grotesk-latin-500-normal-lFbtlQH6.woff2)format("woff2"),url(/assets/space-grotesk-latin-500-normal-CNSSEhBt.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Space Grotesk;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/space-grotesk-vietnamese-700-normal-DMty7AZE.woff2)format("woff2"),url(/assets/space-grotesk-vietnamese-700-normal-Duxec5Rn.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Space Grotesk;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/space-grotesk-latin-ext-700-normal-BQnZhY3m.woff2)format("woff2"),url(/assets/space-grotesk-latin-ext-700-normal-HVCqSBdx.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Space Grotesk;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/space-grotesk-latin-700-normal-RjhwGPKo.woff2)format("woff2"),url(/assets/space-grotesk-latin-700-normal-CwsQ-cCU.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-cyrillic-ext-400-normal-xuaO2J-f.woff2)format("woff2"),url(/assets/ibm-plex-mono-cyrillic-ext-400-normal-DMdlQ8Kv.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-cyrillic-400-normal-BSMlKf0J.woff2)format("woff2"),url(/assets/ibm-plex-mono-cyrillic-400-normal-CEL4l2ZJ.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-vietnamese-400-normal-BulugwFq.woff2)format("woff2"),url(/assets/ibm-plex-mono-vietnamese-400-normal-DDuiU_S-.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-latin-ext-400-normal-BmRBH3aV.woff2)format("woff2"),url(/assets/ibm-plex-mono-latin-ext-400-normal-D3D2R8hC.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-latin-400-normal-DMJ8VG8y.woff2)format("woff2"),url(/assets/ibm-plex-mono-latin-400-normal-CvHOgSBP.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{color:#d7edf8;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;--bg-panel:#08151ec2;--line:#78aac52e;--line-strong:#78aac547;--text-muted:#8eb0c1;--mono:"IBM Plex Mono", monospace;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;background:radial-gradient(circle at 0 0,#276e9757,#0000 34%),radial-gradient(circle at 100% 0,#ffaf492e,#0000 32%),linear-gradient(160deg,#061018 0%,#0c1c27 42%,#08141b 100%);font-family:Space Grotesk,sans-serif;line-height:1.5}*{box-sizing:border-box}html,body,#app{min-height:100%}body{margin:0}button,input{font:inherit}button{cursor:pointer;border:none}.app-shell{width:min(1440px,100vw - 32px);margin:0 auto;padding:28px 0 36px}.hero-bar{grid-template-columns:minmax(0,1.65fr) minmax(320px,.85fr);gap:18px;margin-bottom:18px;display:grid}.hero-copy,.hero-metrics,.panel{border:1px solid var(--line);background:var(--bg-panel);-webkit-backdrop-filter:blur(22px);backdrop-filter:blur(22px);box-shadow:0 18px 40px #0000002e,inset 0 1px #ffffff0a}.hero-copy{border-radius:28px;padding:26px 28px}.eyebrow,.panel-kicker,.footer-label,.metric-card span,.status-tile span{color:var(--text-muted);letter-spacing:.16em;text-transform:uppercase;margin:0;font-size:12px}h1,h2,p{margin:0}h1{letter-spacing:-.05em;margin-top:6px;font-size:clamp(30px,4vw,56px);line-height:.96}h2{letter-spacing:-.03em;font-size:24px;line-height:1.1}.subtitle{color:#bdd4e1;max-width:62ch;margin-top:16px;font-size:16px}.hero-metrics{border-radius:28px;grid-template-columns:repeat(3,1fr);gap:12px;padding:16px;display:grid}.metric-card{background:linear-gradient(#68e7ff1f,#68e7ff05),#050c1280;border:1px solid #68e7ff14;border-radius:20px;padding:16px}.metric-card strong{margin-top:18px;font-size:22px;display:block}.workspace{grid-template-columns:minmax(0,1.65fr) minmax(360px,.85fr);gap:18px;display:grid}.panel{border-radius:30px;overflow:hidden}.scene-panel{flex-direction:column;min-height:780px;display:flex}.panel-head{justify-content:space-between;align-items:flex-start;gap:16px;padding:22px 24px 18px;display:flex}.head-badges,.camera-actions,.mode-switch{flex-wrap:wrap;gap:10px;display:flex}.badge{font-size:12px;font-family:var(--mono);color:#dcf6ff;background:#68e7ff14;border:1px solid #68e7ff26;border-radius:999px;align-items:center;padding:8px 12px;display:inline-flex}.badge-live{background:#68e7ff2e;border-color:#68e7ff4d}.badge-muted{color:var(--text-muted);background:#8eb0c114;border-color:#8eb0c126}.viewport{border-block:1px solid var(--line);background:radial-gradient(circle at 50% 18%,#438dc13d,#0000 28%),linear-gradient(#07121af2,#030a10f5);flex:1;min-height:620px;position:relative}.viewport canvas{width:100%;height:100%;display:block}.viewport-footer{grid-template-columns:repeat(3,1fr);gap:16px;padding:18px 24px 22px;display:grid}.viewport-footer strong,.status-tile strong{font-family:var(--mono);color:#f5fbff;margin-top:6px;font-size:15px;display:block}.side-column{gap:18px;display:grid}.camera-panel,.control-panel{padding-bottom:22px}.camera-stage{aspect-ratio:4/3;border:1px solid var(--line-strong);background:radial-gradient(circle at 50% 35%,#68e7ff33,#0000 35%),linear-gradient(#03080df5,#0b1923e6);border-radius:24px;margin:0 24px;position:relative;overflow:hidden}.camera-feed,.camera-overlay,.camera-mask{width:100%;height:100%;position:absolute;inset:0}.camera-feed,.camera-overlay{object-fit:cover;transform:scaleX(-1)}.camera-feed{opacity:.92}.camera-mask{pointer-events:none;place-items:center;display:grid}.camera-guide{aspect-ratio:1.1;color:#ddfcffb8;background:#040c1214;border:1px dashed #68e7ff6b;border-radius:28px;place-items:center;width:min(74%,280px);font-size:14px;display:grid}.camera-actions,.status-grid,.control-list,.hint-box,.mode-switch{margin-inline:24px}.camera-actions{margin-top:18px}.action,.mode-chip{color:#def8ff;background:#0e1e29e0;border:1px solid #68e7ff1f;border-radius:999px;padding:12px 16px;transition:background .16s,border-color .16s,transform .16s}.action:hover,.mode-chip:hover{background:#122837eb;border-color:#68e7ff47;transform:translateY(-1px)}.action:disabled,.mode-chip:disabled,input:disabled{cursor:not-allowed;opacity:.45;transform:none}.action.primary,.mode-chip.active{color:#03101a;background:linear-gradient(135deg,#1195d5f2,#68e7ffe0);border-color:#0000}.status-grid{grid-template-columns:repeat(2,1fr);gap:12px;margin-top:18px;display:grid}.status-tile{background:#09121ab8;border:1px solid #68e7ff14;border-radius:20px;padding:14px}.mode-switch{margin-top:2px}.control-list{gap:14px;margin-top:20px;display:grid}.control-row{background:#09121ab8;border:1px solid #68e7ff14;border-radius:20px;grid-template-columns:52px minmax(0,1fr) 56px;align-items:center;gap:14px;padding:14px 16px;display:grid}.control-row span{font-size:14px}.control-row output{text-align:right;font-family:var(--mono);color:#f6fbff}input[type=range]{appearance:none;background:linear-gradient(90deg,#1195d58c,#68e7ffeb);border-radius:999px;outline:none;height:6px}input[type=range]::-webkit-slider-thumb{appearance:none;background:#fdf5df;border:2px solid #0d2d3d;border-radius:50%;width:18px;height:18px;box-shadow:0 0 0 4px #68e7ff1f}input[type=range]::-moz-range-thumb{background:#fdf5df;border:2px solid #0d2d3d;border-radius:50%;width:18px;height:18px;box-shadow:0 0 0 4px #68e7ff1f}.hint-box{background:linear-gradient(135deg,#f7aa3f1a,#f7aa3f05),#08121abf;border:1px solid #f7aa3f29;border-radius:22px;margin-top:18px;padding:18px 18px 18px 22px}.hint-box p{font-weight:700}.hint-box ul{color:#cfdee7;margin:12px 0 0;padding-left:20px}.hint-box li+li{margin-top:8px}@media (width<=1120px){.app-shell{width:min(100vw,100vw - 20px);padding-top:12px}.hero-bar,.workspace{grid-template-columns:1fr}.scene-panel{min-height:680px}}@media (width<=760px){.app-shell{width:calc(100vw - 12px);padding-bottom:18px}.hero-copy,.hero-metrics,.panel{border-radius:22px}.hero-metrics,.viewport-footer,.status-grid{grid-template-columns:1fr}.panel-head{flex-direction:column;padding:18px 18px 14px}.camera-stage{margin:0 18px}.camera-actions,.status-grid,.control-list,.hint-box,.mode-switch{margin-inline:18px}.viewport-footer{padding:16px 18px 18px}.control-row{grid-template-columns:44px minmax(0,1fr) 52px;gap:10px}}
