:root{--bg-top: #07101d;--bg-bottom: #020407;--panel: #0b1828dd;--panel-strong: #12243a;--line: #2f5275;--text-main: #eaf2ff;--text-sub: #99b3d4;--accent: #6ec7ff;--accent-strong: #3ea6f3;--ok: #67db9a;--warn: #ffca63;--error: #ff7a87;font-family:BIZ UDPGothic,Yu Gothic UI,Hiragino Kaku Gothic ProN,Meiryo,sans-serif;line-height:1.45;font-weight:400;color:var(--text-main)}*{box-sizing:border-box}body{margin:0;min-height:100vh;background:radial-gradient(circle at 15% -10%,#1c395f55 0%,transparent 45%),radial-gradient(circle at 100% 0%,#17365466 0%,transparent 38%),linear-gradient(170deg,var(--bg-top),var(--bg-bottom));color:var(--text-main)}#app{min-height:100vh;padding:18px}.app-shell{max-width:1220px;margin:0 auto;display:flex;flex-direction:column;gap:14px}.app-header{border:1px solid var(--line);border-radius:16px;padding:18px 20px;background:linear-gradient(135deg,#11243c88,#071322ee 72%);display:flex;justify-content:space-between;align-items:flex-start;gap:12px}.eyebrow{margin:0;font-size:11px;letter-spacing:.12em;color:var(--text-sub)}.app-header h1{margin:4px 0 2px;font-size:clamp(20px,2.1vw,29px);font-weight:700}.subtext{margin:0;color:var(--text-sub);font-size:13px}.status-badge{display:inline-flex;align-items:center;gap:8px;border-radius:999px;padding:8px 12px;border:1px solid #2a4661;font-size:13px;white-space:nowrap;background:#0c1928aa}.status-badge .dot{width:8px;height:8px;border-radius:50%;background:var(--text-sub)}.status-running .dot{background:var(--ok);box-shadow:0 0 12px #67db9aaa}.status-starting .dot{background:var(--warn)}.status-error .dot{background:var(--error)}.app-main{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:14px}.viewer-card{position:relative;min-height:560px;border-radius:16px;border:1px solid #315476;background:linear-gradient(175deg,#112238,#091420 70%);overflow:hidden}.viewer-card:fullscreen,.viewer-card:-webkit-full-screen{width:100vw;height:100vh;min-height:100vh;border-radius:0;border:none}.viewer-card:fullscreen .viewer-meta,.viewer-card:-webkit-full-screen .viewer-meta{left:18px;top:18px}.viewer-card:fullscreen .camera-preview-wrap,.viewer-card:-webkit-full-screen .camera-preview-wrap{left:18px;right:auto;top:74px}.viewer-card:fullscreen .camera-preview-frame,.viewer-card:-webkit-full-screen .camera-preview-frame{width:min(24vw,320px)}.viewer-stage{width:100%;height:100%}.viewer-stage canvas{width:100%!important;height:100%!important;display:block}.viewer-meta{position:absolute;left:12px;top:12px;display:flex;gap:8px;flex-wrap:wrap}.viewer-meta span{background:#0a1624db;border:1px solid #355e86;border-radius:999px;padding:6px 10px;font-size:12px}.camera-preview-wrap{position:absolute;left:12px;top:84px;display:flex;flex-direction:column;align-items:flex-end;gap:8px;cursor:grab;-webkit-user-select:none;user-select:none;touch-action:none}.camera-preview-dragging{cursor:grabbing}.camera-preview-frame{position:relative;width:min(34vw,220px)}.camera-preview{width:100%;aspect-ratio:16 / 9;min-height:120px;display:block;object-fit:cover;border-radius:10px;border:1px solid #4f7ba5;background:#04070d;transform:scaleX(-1);box-shadow:0 10px 20px #0008}.camera-preview-hidden{display:none}.camera-preview-resize-handle{position:absolute;right:8px;bottom:8px;width:18px;height:18px;border-radius:6px;border:1px solid #5f8bb3;background:#0d2136d9;cursor:nwse-resize;padding:0}.camera-preview-resize-handle:before{content:"";position:absolute;inset:4px;border-right:2px solid #99c6ec;border-bottom:2px solid #99c6ec}.camera-preview-resizing .camera-preview-resize-handle{background:#143559f0;border-color:#7ca8ce}.camera-preview-toggle{border:1px solid #4c7ca6;border-radius:999px;padding:6px 10px;font-size:12px;font-weight:600;color:var(--text-main);background:#0a1726e8;cursor:pointer;transition:background-color .14s ease,border-color .14s ease}.camera-preview-toggle:hover{background:#133252ef;border-color:#6a9bca}.control-card{border:1px solid var(--line);border-radius:16px;padding:14px;background:var(--panel);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;flex-direction:column;gap:12px}.control-section{display:flex;flex-direction:column;gap:10px;border:1px solid #274969;border-radius:12px;padding:10px;background:linear-gradient(180deg,#0d1d30de,#0a1626d8)}.control-section-title{margin:0;font-size:11px;font-weight:700;letter-spacing:.08em;color:#91bee6}.control-section-advanced{border-style:dashed;border-color:#365777;background:#0a1522d9}.quick-guide-steps{display:flex;flex-wrap:wrap;gap:6px}.quick-guide-step{border-radius:999px;border:1px solid #335575;background:#0a1828;color:#8ea8c6;font-size:11px;font-weight:700;letter-spacing:.03em;padding:5px 9px}.quick-guide-step-current{border-color:#6abaf1;background:#1a3d5f;color:#eaf7ff}.quick-guide-step-done{border-color:#4f8f7b;background:#103429;color:#b5f2d3}.control-group{display:flex;flex-direction:column;gap:6px}.control-group-current{border:1px solid #5ca6d9;border-radius:10px;background:#10293f;padding:8px}.control-title{font-size:13px;color:var(--text-sub)}input[type=file],select{width:100%;border-radius:10px;border:1px solid #355979;background:#0d1a2a;color:var(--text-main);padding:7px 10px}input[type=range]{width:100%;accent-color:var(--accent-strong)}.hidden-file-input{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);opacity:0;pointer-events:none}.primary-button{border:none;border-radius:12px;padding:10px 14px;font-size:14px;font-weight:700;color:#02101d;cursor:pointer;background:linear-gradient(135deg,var(--accent),#8fffd4);transition:transform .14s ease,filter .14s ease}.primary-button:hover:enabled{transform:translateY(-1px);filter:brightness(1.08)}.primary-button:disabled{cursor:not-allowed;filter:grayscale(.35)}.subtle-button{border:1px solid #3b6588;border-radius:12px;padding:9px 12px;font-size:13px;font-weight:600;color:var(--text-main);background:#10233a;cursor:pointer;transition:background-color .14s ease,border-color .14s ease}.subtle-button:hover:enabled{background:#143255;border-color:#5d91c0}.subtle-button:disabled{cursor:not-allowed;opacity:.55}.subtle-button-active{border-color:#6fb5e6;background:#1a3d5f}.subtle-button-active:hover:enabled{border-color:#92c9ee;background:#214a72}.subtle-danger{border-color:#7f3d4f;background:#2a1320}.subtle-danger:hover:enabled{background:#3b172a;border-color:#ab5a73}.checkbox-row{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--text-sub)}.hint{margin:0;padding:10px;border-radius:10px;border:1px solid #2e4d68;background:#091321;color:var(--text-sub);font-size:12px}@media(max-width:980px){#app{padding:10px}.app-main{grid-template-columns:1fr}.viewer-card{min-height:440px}}@media(max-width:680px){.app-header{flex-direction:column;align-items:stretch}.camera-preview-frame{width:42vw}}
