:root{font-family:Inter,Avenir,Segoe UI,system-ui,sans-serif;color:#f4f0e8;background:#101622;font-synthesis:none;text-rendering:optimizeLegibility;--ink: #101622;--surface: #171e2a;--paper: #f4f0e8;--red: #ed604b;--green: #54a77b;--blue: #527bd3;--line-light: rgba(255, 255, 255, .12);--header-height: 58px;--tab-bar-height: 72px}*{box-sizing:border-box}html,body,#root{width:100%;height:100%;min-width:320px;margin:0;overflow:hidden}body{min-height:100vh;min-height:100dvh;background:var(--ink)}button{color:inherit;font:inherit}button:focus-visible,[tabindex="0"]:focus-visible{outline:3px solid var(--blue);outline-offset:-3px}.app-shell{height:100vh;height:100dvh;display:grid;grid-template-rows:var(--header-height) minmax(0,1fr) auto;overflow:hidden;background:var(--ink)}.site-header{display:flex;align-items:center;padding:0 max(20px,env(safe-area-inset-left));border-bottom:1px solid var(--line-light);background:var(--ink)}.brand{display:flex;align-items:center;gap:10px;font-size:.82rem;font-weight:800;letter-spacing:.16em}.brand__mark{width:24px;height:24px;position:relative;display:inline-block}.brand__mark i{position:absolute;width:15px;height:15px;border-radius:50%;mix-blend-mode:screen}.brand__mark i:nth-child(1){top:0;left:0;background:var(--red)}.brand__mark i:nth-child(2){top:0;right:0;background:var(--green)}.brand__mark i:nth-child(3){bottom:0;left:5px;background:var(--blue)}.tab-content{min-height:0;overflow:hidden}.tab-panel{width:100%;height:100%;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain;scrollbar-gutter:stable;-webkit-overflow-scrolling:touch}.tab-panel--empty{background:var(--ink)}.tab-panel--capture{display:flex;justify-content:center;background:var(--ink)}.tab-bar{min-height:var(--tab-bar-height);padding:0 env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);display:grid;grid-template-columns:repeat(2,minmax(0,1fr));border-top:1px solid var(--line-light);background:#121925;z-index:10}.tab-button{min-height:var(--tab-bar-height);border:0;border-top:2px solid transparent;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;color:#858b96;background:transparent;cursor:pointer;font-size:.72rem;font-weight:650;letter-spacing:.02em}.tab-button svg{width:25px;height:25px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.tab-button[aria-selected=true]{color:var(--paper);border-top-color:var(--blue);background:#527bd314}.camera-card{width:min(100%,1100px);min-height:100%;margin:0 auto;padding:16px clamp(16px,3vw,32px) 20px;display:flex;flex-direction:column;gap:14px}.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}.camera-status-bar{min-height:28px;display:flex;align-items:center;justify-content:space-between;gap:12px}.status{min-height:20px;display:flex;align-items:center;gap:8px;color:#c8cbd1;font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:.67rem;letter-spacing:.08em;text-transform:uppercase;white-space:nowrap}.status__dot{width:7px;height:7px;display:inline-block;border-radius:50%;background:#8c919b}.status--active .status__dot{background:#60d394;box-shadow:0 0 0 4px #60d39426}.status--starting .status__dot{background:#efbd67;animation:pulse 1s infinite}.status--recording .status__dot{background:var(--red);box-shadow:0 0 0 4px #ed604b2e;animation:pulse 1s infinite}.status--error .status__dot,.status--unsupported .status__dot{background:var(--red)}@keyframes pulse{50%{opacity:.35}}.camera-stage{position:relative;flex:1 1 auto;min-height:220px;max-height:min(64vh,720px);display:grid;place-items:center;overflow:hidden;background:var(--surface);border:1px solid var(--line-light)}.camera-stage:before,.camera-stage:after{content:"";position:absolute;width:24px;height:24px;z-index:3;pointer-events:none}.camera-stage:before{top:12px;left:12px;border-top:1px solid white;border-left:1px solid white}.camera-stage:after{right:12px;bottom:12px;border-right:1px solid white;border-bottom:1px solid white}.camera-source{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}.camera-canvas{width:auto;height:auto;max-width:100%;max-height:100%;display:block;object-fit:contain}.recording-preview{width:auto;height:auto;max-width:100%;max-height:100%;display:block;object-fit:contain;background:#000}.recording-indicator{position:absolute;top:14px;right:14px;width:13px;height:13px;z-index:4;border-radius:50%;background:var(--red);box-shadow:0 0 0 5px #ed604b33;animation:pulse 1s infinite}.pose-model-control{min-height:28px;padding:0 7px;display:flex;align-items:center;gap:5px;border:1px solid rgba(255,255,255,.2);color:#fff;background:#ffffff0a;font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:.63rem;letter-spacing:.07em;text-transform:uppercase}.pose-model-control i{flex:0 0 auto;width:8px;height:8px;border-radius:50%;background:var(--red);box-shadow:0 0 0 3px #ed604b2e}.pose-model-control--full i{background:#efbd67;box-shadow:0 0 0 3px #efbd672e}.pose-model-control--heavy i{background:#60d394;box-shadow:0 0 0 3px #60d3942e}.pose-model-control--remote i{background:var(--blue);box-shadow:0 0 0 3px #527bd333}.pose-model-control select{min-height:26px;padding:0 18px 0 2px;border:0;outline:0;color:inherit;background:transparent;font:inherit;letter-spacing:inherit;text-transform:inherit;cursor:pointer}.pose-model-control select:disabled{cursor:not-allowed;opacity:.55}.pose-model-control option{color:var(--ink);background:var(--paper)}.remote-pose-video{position:absolute;inset:0;z-index:2;width:100%;height:100%;object-fit:contain;background:#000;opacity:0;pointer-events:none}.remote-pose-video--active{opacity:1}.camera-placeholder{position:absolute;inset:0;display:grid;place-items:center}.aperture{width:70px;height:70px;display:grid;place-items:center;border:1px solid #697080;border-radius:50%}.aperture span{width:22px;height:22px;border:6px solid var(--paper);border-radius:50%}.error-message{margin:0;padding:11px 14px;border-left:3px solid var(--red);background:#ed604b1a;color:#f2b3aa;font-size:.86rem}.success-message{margin:0;padding:11px 14px;border-left:3px solid var(--green);background:#54a77b1a;color:#a8dfbf;font-size:.86rem}.camera-controls{flex:0 0 auto;display:flex;align-items:end;justify-content:flex-end;gap:18px}.camera-actions,.recording-actions{display:flex;align-items:center;justify-content:flex-end;gap:8px}.recording-actions{flex:0 0 auto}.button{min-width:160px;min-height:44px;padding:10px 17px;border:1px solid var(--paper);font-weight:700;cursor:pointer}.button:disabled{cursor:not-allowed;opacity:.55}.button--primary{color:var(--ink);background:var(--paper)}.button--secondary{color:var(--paper);background:transparent}.button--record{color:#fff;background:var(--red);border-color:var(--red)}.jobs-view{width:min(100%,1000px);min-height:100%;margin:0 auto;padding:20px clamp(16px,3vw,32px) 32px}.jobs-header{margin-bottom:20px;display:flex;align-items:center;justify-content:space-between;gap:16px}.jobs-header h1{margin:0 0 4px;font-size:clamp(1.55rem,4vw,2.2rem);letter-spacing:-.04em}.jobs-header span{color:#8f96a2;font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:.68rem;letter-spacing:.06em;text-transform:uppercase}.jobs-header button{min-height:40px;padding:8px 13px;border:1px solid var(--line-light);color:var(--paper);background:transparent;cursor:pointer}.jobs-header button:disabled{opacity:.5;cursor:wait}.jobs-message{margin:40px 0;color:#aeb3bc;text-align:center}.jobs-message--error,.job-error{color:#f2b3aa}.jobs-list{display:grid;gap:16px}.job-card{padding:16px;border:1px solid var(--line-light);background:var(--surface)}.job-card__heading{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.job-card__heading h2{margin:0 0 5px;overflow-wrap:anywhere;font-size:1rem;font-weight:650}.job-card__heading div>span{color:#8f96a2;font-size:.72rem}.job-state{flex:0 0 auto;padding:5px 8px;border-radius:999px;color:#d5d8de;background:#ffffff14;font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:.62rem;letter-spacing:.05em;text-transform:uppercase}.job-state--success{color:#a8dfbf;background:#54a77b24}.job-state--failure,.job-state--revoked{color:#f2b3aa;background:#ed604b24}.job-state--progress,.job-state--started{color:#c6d5f5;background:#527bd32e}.job-progress{height:4px;margin-top:14px;overflow:hidden;background:#ffffff14}.job-progress span{height:100%;display:block;background:var(--blue);transition:width .25s ease}.job-error{margin:14px 0 0;font-size:.82rem;line-height:1.45}.job-video{width:100%;max-height:50vh;margin-top:16px;display:block;object-fit:contain;background:#000}.job-artifacts{margin-top:12px;display:flex;flex-wrap:wrap;gap:8px}.job-artifacts button{padding:7px 9px;border:1px solid var(--line-light);color:#dce4f7;background:transparent;text-decoration:none;font-size:.72rem;cursor:pointer}.job-artifacts button:disabled{opacity:.55;cursor:wait}.job-artifacts small{margin-left:7px;color:#8f96a2}.artifact-preview-backdrop{position:fixed;inset:0;z-index:40;padding:max(16px,env(safe-area-inset-top)) max(12px,env(safe-area-inset-right)) max(16px,env(safe-area-inset-bottom)) max(12px,env(safe-area-inset-left));display:grid;place-items:center;background:#04080ee0}.artifact-preview{width:min(100%,980px);height:min(100%,820px);display:grid;grid-template-rows:auto minmax(0,1fr);border:1px solid var(--line-light);background:var(--surface);box-shadow:0 24px 80px #00000080}.artifact-preview>header{min-height:52px;padding:10px 12px 10px 16px;display:flex;align-items:center;justify-content:space-between;gap:12px;border-bottom:1px solid var(--line-light)}.artifact-preview h2{margin:0;overflow:hidden;font-size:.95rem;text-overflow:ellipsis;white-space:nowrap}.artifact-preview header button{width:38px;height:38px;flex:0 0 auto;border:0;color:var(--paper);background:transparent;font-size:1.8rem;cursor:pointer}.artifact-preview__content{min-height:0;overflow:auto;display:grid;place-items:center;background:#080c12}.artifact-preview__content video,.artifact-preview__content img{width:auto;height:auto;max-width:100%;max-height:100%;object-fit:contain}.artifact-preview__content iframe{width:100%;height:100%;border:0;background:#fff}.artifact-preview__content pre{width:100%;min-height:100%;margin:0;padding:18px;overflow:auto;color:#d8deea;font:.75rem/1.55 ui-monospace,SFMono-Regular,Consolas,monospace;white-space:pre-wrap;overflow-wrap:anywhere}.artifact-preview__content>p{padding:24px;color:#aeb3bc;text-align:center}.pwa-toast{position:fixed;right:18px;bottom:calc(var(--tab-bar-height) + env(safe-area-inset-bottom) + 14px);z-index:20;width:min(430px,calc(100vw - 36px));padding:16px;display:flex;align-items:center;justify-content:space-between;gap:16px;color:var(--paper);background:#1b2330;box-shadow:0 16px 44px #0000004d}.pwa-toast strong{font-size:.86rem}.pwa-toast p{margin:4px 0 0;color:#b4b8c0;font-size:.76rem;line-height:1.4}.pwa-toast__actions{display:flex;align-items:center;gap:8px}.pwa-toast button{border:1px solid white;padding:8px 10px;color:var(--ink);background:#fff;font-size:.78rem;cursor:pointer}.pwa-toast .pwa-toast__dismiss{border:0;color:#fff;background:transparent;font-size:1.4rem}@media(max-width:560px){.camera-card{padding:12px 12px 16px;gap:10px}.camera-stage{min-height:280px;max-height:calc(100dvh - 300px)}.camera-controls{align-items:stretch;flex-direction:column;gap:12px}.camera-actions,.recording-actions{width:100%}.camera-actions .button,.recording-actions .button{flex:1 1 0;min-width:0}.button{width:100%}.pwa-toast{align-items:stretch;flex-direction:column}.jobs-view{padding:14px 12px 24px}.jobs-header{margin-bottom:14px}.job-card{padding:13px}.job-card__heading{align-items:flex-start}}@media(max-height:620px)and (orientation:landscape){:root{--header-height: 48px;--tab-bar-height: 58px}.camera-card{padding-top:8px;gap:8px}.camera-stage{min-height:180px;max-height:calc(100dvh - 220px)}.camera-controls{align-items:end;flex-direction:row}.tab-button{min-height:var(--tab-bar-height);flex-direction:row;gap:8px}.tab-button svg{width:22px;height:22px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important}}
