:root{color-scheme:light;--bg: #efeae0;--panel: #faf7f0;--panel2: #f3eee3;--ink: #1f1f1c;--muted: #6f6a5c;--line: #d6cfbe;--accent: #1f7664;--accent-dark: #14564a;--warn: #b7791f;--err: #b94738;--ok: #2f855a;--radius: 10px}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--ink);font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:14px;line-height:1.45}button,input,select{font:inherit}h1,h2,h3,p{margin:0}.app{display:flex;flex-direction:column;height:100vh}.topbar{align-items:center;background:var(--panel);border-bottom:1px solid var(--line);display:flex;flex:0 0 auto;gap:16px;justify-content:space-between;padding:10px 18px;position:relative}.brand{align-items:baseline;display:flex;gap:12px}.brand h1{font-size:22px;font-weight:800;letter-spacing:-.02em}.brand span{color:var(--muted);font-size:12.5px}.authBox{align-items:center;display:flex;gap:10px}.authEmail{color:var(--muted);font-size:13px}.authPanel{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:0 12px 30px #322c1e2e;display:grid;gap:8px;padding:14px;position:absolute;right:18px;top:52px;width:280px;z-index:20}.authPanel input{border:1px solid var(--line);border-radius:8px;padding:8px 10px}.authTabs{display:flex;gap:6px}.authTabs button{background:var(--panel2);border:1px solid var(--line);border-radius:8px;cursor:pointer;flex:1;justify-content:center;padding:6px}.authTabs button.on{background:var(--accent);border-color:var(--accent);color:#fff}.layout{display:grid;flex:1 1 auto;gap:0;grid-template-columns:230px minmax(0,1fr) 380px;min-height:0}.history,.logPanel{background:var(--panel);min-height:0;overflow:auto;padding:14px}.history{border-right:1px solid var(--line)}.logPanel{border-left:1px solid var(--line);display:flex;flex-direction:column}.history h2,.logHead h2{color:var(--muted);font-size:13px;letter-spacing:.06em;text-transform:uppercase}.history ul{display:grid;gap:6px;list-style:none;margin:10px 0 0;padding:0}.history li{align-items:center;background:var(--panel2);border:1px solid transparent;border-radius:8px;display:flex}.history li.active{background:#e8f2ee;border-color:var(--accent)}.runOpen{align-items:center;background:none;border:0;cursor:pointer;display:flex;flex:1;gap:8px;min-width:0;padding:6px;text-align:left}.runOpen img{border-radius:6px;flex:0 0 auto;height:42px;object-fit:cover;width:42px}.runOpen span{display:grid;min-width:0}.runOpen b{font-size:12.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.runOpen small{color:var(--muted);font-size:11px}.work{min-height:0;overflow:auto;padding:14px 18px 40px}.toolbar{align-items:center;display:flex;flex-wrap:wrap;gap:10px 18px;justify-content:space-between;margin-bottom:12px}.consent{align-items:center;display:flex;font-weight:600;gap:8px}.toolbarButtons{display:flex;gap:8px}button{align-items:center;border-radius:8px;cursor:pointer;display:inline-flex;gap:6px;padding:8px 12px}button:disabled{cursor:not-allowed;opacity:.5}.primary{background:var(--accent);border:1px solid var(--accent);color:#fff;font-weight:700}.primary:not(:disabled):hover{background:var(--accent-dark)}.secondary{background:var(--panel);border:1px solid var(--line);color:var(--ink);font-weight:600}.ghost{background:transparent;border:1px solid var(--line);color:var(--ink);font-size:12.5px;padding:5px 9px}.iconOnly{background:none;border:0;color:var(--muted);padding:6px}.errBar{background:#fbe9e6;border:1px solid #e7b7ae;border-radius:8px;color:var(--err);margin-bottom:10px;padding:8px 12px}.err{color:var(--err);font-size:12.5px}.hint{color:var(--muted);font-size:12.5px}.stage{align-items:flex-start;background:#dcd5c4;border:1px solid var(--line);border-radius:var(--radius);display:flex;justify-content:center;min-height:300px;overflow:hidden;position:relative}.canvasWrap{position:relative}.view{display:block}.tip{background:#141412e0;border-radius:6px;color:#fff;font-size:12px;padding:3px 8px;pointer-events:none;position:absolute;white-space:nowrap;z-index:5}.empty{align-items:center;color:var(--muted);display:grid;gap:6px;justify-items:center;padding:60px 20px;text-align:center}.cameraBox{background:#1a1a18;border-radius:var(--radius);display:grid;gap:10px;justify-items:center;padding:12px}.cameraBox video{background:#000;border-radius:8px;max-height:60vh;max-width:100%;transform:scaleX(-1)}.cameraBox select{border-radius:8px;padding:6px 8px;width:100%}.layersBar{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}.layerChip{align-items:center;display:inline-flex;gap:3px}.layerChip label{align-items:center;background:var(--panel);border:1.5px solid var(--line);border-radius:999px;cursor:pointer;display:inline-flex;font-size:12.5px;gap:5px;padding:3px 9px 3px 7px}.layerChip label i{border-radius:50%;display:inline-block;height:9px;width:9px}.layerChip input{margin:0}.help{background:var(--panel2);border:1px solid var(--line);border-radius:50%;font-size:11px;font-weight:700;height:20px;justify-content:center;padding:0;width:20px}.layerHelp{background:var(--panel);border-left:3px solid var(--accent);border-radius:6px;margin-top:8px;padding:8px 12px}.steps{display:grid;gap:10px;grid-template-columns:repeat(auto-fill,minmax(290px,1fr));margin-top:16px}.step{background:var(--panel);border:1px solid var(--line);border-left:4px solid var(--line);border-radius:var(--radius);padding:12px 14px}.step header{align-items:center;display:flex;justify-content:space-between;margin-bottom:6px}.step h3{font-size:14px}.badge{background:var(--panel2);border-radius:999px;color:var(--muted);font-size:11px;font-weight:700;padding:2px 9px}.step.done{border-left-color:var(--ok)}.step.done .badge{background:#e2f1e8;color:var(--ok)}.step.running{border-left-color:var(--accent)}.step.running .badge{background:#dcefe9;color:var(--accent)}.step.warn{border-left-color:var(--warn)}.step.warn .badge{background:#fbeed4;color:var(--warn)}.step.future{border-style:dashed;opacity:.85}.metric{font-size:13px}.meaning{color:var(--muted);font-size:12.5px;margin-top:8px}.meaning b{color:var(--ink)}.step button{margin-top:10px}.logHead{align-items:center;display:flex;justify-content:space-between;margin-bottom:8px}.logButtons{display:flex;gap:4px}.logList{flex:1 1 auto;font-family:Cascadia Mono,Consolas,Courier New,monospace;font-size:12px;min-height:0;overflow:auto}.logRow{border-bottom:1px dashed var(--line);display:grid;gap:8px;grid-template-columns:82px 46px 1fr;padding:4px 0}.logRow time{color:var(--muted)}.logRow .dt{color:var(--muted);text-align:right}.logRow p{overflow-wrap:anywhere}.logRow.ok p{color:var(--ok)}.logRow.warn p{color:var(--warn)}.logRow.error p{color:var(--err);font-weight:700}@media (max-width: 1100px){.app,.layout{height:auto}.layout{grid-template-columns:1fr}.history,.logPanel{border:0;max-height:320px}.brand span{display:none}}
