:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--paper:#fff;--ink:#141414;--ink-mute:#595959;--hairline:#d9d9d9;--mono:ui-monospace, "SFMono-Regular", "Cascadia Mono", "Courier New", monospace}*{box-sizing:border-box}body{background:var(--paper);color:var(--ink);-webkit-font-smoothing:antialiased;margin:0;font-family:Helvetica Neue,Arial,Hiragino Sans,Noto Sans JP,system-ui,sans-serif;font-size:14px}.app{max-width:1200px;margin:0 auto;padding:24px 16px 48px}.app-header{border:2px solid var(--ink);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:24px;padding:12px 16px;display:flex;position:relative}.app-header:after{content:"";border:1px solid var(--ink);pointer-events:none;position:absolute;inset:3px}.app-header h1{font-family:var(--mono);letter-spacing:.14em;text-transform:uppercase;margin:0;font-size:15px;font-weight:700}.app-header .spec{font-family:var(--mono);letter-spacing:.04em;color:var(--ink-mute);width:100%;margin:2px 0 0;font-size:11px}.badge{font-family:var(--mono);letter-spacing:.06em;border:1px solid var(--ink);color:var(--ink);white-space:nowrap;padding:4px 10px;font-size:11px}.badge.ok{background:var(--ink);color:var(--paper)}.badge.warn{border-style:dashed}.content{grid-template-columns:minmax(0,2fr) minmax(280px,1fr);gap:20px;display:grid}@media (max-width:860px){.content{grid-template-columns:1fr}}.viewport{border:1px solid var(--ink);aspect-ratio:4/3;background:#000;position:relative;overflow:hidden}.viewport video{object-fit:contain;width:100%;height:100%}.viewport .overlay{pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.status-bar{color:#fff;font-size:12px;line-height:1.7;font-family:var(--mono);white-space:pre-wrap;word-break:break-all;background:#0000009e;padding:8px 12px;position:absolute;top:8px;left:8px;right:8px}.status-bar .error{color:#000;background:#fff;padding:0 6px;display:inline-block}.viewport-placeholder{color:#bbb;text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:8px;padding:24px;display:flex;position:absolute;inset:0}.panel{border:1px solid var(--ink);margin-bottom:20px;padding:14px}.panel h2{font-family:var(--mono);letter-spacing:.14em;text-transform:uppercase;border-bottom:1px solid var(--hairline);margin:0 0 12px;padding-bottom:8px;font-size:11px;font-weight:700}.row{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:10px;display:flex}.row label,.row .row-label{color:var(--ink-mute);font-family:var(--mono);font-size:12px}input[type=text],input[type=number]{background:var(--paper);color:var(--ink);border:1px solid var(--ink);font-size:13px;font-family:var(--mono);border-radius:0;padding:6px 8px}input[type=text]{flex:1;min-width:0}input[type=number]{width:76px}input:disabled{border-color:var(--hairline);color:var(--ink-mute)}button{background:var(--paper);color:var(--ink);border:1px solid var(--ink);cursor:pointer;border-radius:0;padding:6px 12px;font-family:inherit;font-size:13px}button:hover:not(:disabled),button.primary,button.active,.tabs button.active{background:var(--ink);color:var(--paper)}button:disabled{background:var(--paper);border-color:var(--hairline);color:var(--ink-mute);cursor:default}:where(button,input):focus-visible{outline:2px solid var(--ink);outline-offset:2px}.tabs{margin-bottom:12px;display:flex}.tabs button{font-family:var(--mono);flex:1;padding:6px 0;font-size:12px}.tabs button+button{border-left:none}.progress{background:0 0;border:1px solid #fff;height:8px;margin-top:6px;overflow:hidden}.progress>div{background:#fff;height:100%}.hint{color:var(--ink-mute);font-size:12px;line-height:1.6}.goal-preview{border:1px solid var(--ink);display:block}
