:root{--bg:#f4f5f7;--panel:#fff;--border:#dfe2e7;--text:#1f2328;--muted:#6b7280;--accent:#2563eb;--accent-text:#fff;--ok:#16a34a;--warn:#d97706;--err:#dc2626;--idle:#9ca3af;color:var(--text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif}*{box-sizing:border-box}[hidden]{display:none!important}html,body{background:var(--bg);height:100%;margin:0}.app{grid-template-rows:auto auto 1fr auto;height:100vh;display:grid;position:relative}.bar{background:var(--panel);border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:16px;padding:10px 16px;display:flex}.bar-left{align-items:center;gap:12px;min-width:0;display:flex}.logo{font-size:24px}.bar-title{flex-direction:column;line-height:1.3;display:flex}.bar-title strong{font-size:15px}.muted{color:var(--muted);font-size:12px}.bar-right{flex-wrap:wrap;justify-content:flex-end;gap:8px;display:flex}.btn{border:1px solid var(--border);background:var(--panel);color:var(--text);cursor:pointer;white-space:nowrap;border-radius:6px;align-items:center;padding:7px 14px;font-size:13px;display:inline-flex}.btn:hover:not(:disabled){background:#f9fafb;border-color:#b8bec8}.btn:disabled{opacity:.45;cursor:default}.btn-primary{background:var(--accent);border-color:var(--accent);color:var(--accent-text)}.btn-primary:hover{background:#1d4ed8}.btn-small{padding:3px 10px;font-size:12px}.status{background:var(--panel);border-bottom:1px solid var(--border);white-space:nowrap;text-overflow:ellipsis;align-items:center;gap:8px;padding:6px 16px;font-size:13px;display:flex;overflow:hidden}.status-dot{background:var(--idle);border-radius:50%;flex:none;width:9px;height:9px}.status[data-state=loading] .status-dot{background:var(--warn);animation:1s infinite pulse}.status[data-state=ready] .status-dot{background:var(--ok)}.status[data-state=error] .status-dot{background:var(--err)}@keyframes pulse{50%{opacity:.3}}.viewer-wrap{border:1px solid var(--border);background:var(--panel);border-radius:8px;min-height:0;margin:12px 16px;position:relative;overflow:hidden}.viewer-wrap.dragover{border-color:var(--accent);box-shadow:0 0 0 3px #2563eb33}.placeholder{text-align:center;color:var(--muted);pointer-events:none;flex-direction:column;justify-content:center;align-items:center;padding:24px;display:flex;position:absolute;inset:0}.placeholder p{max-width:720px;margin:4px 0}.placeholder-icon{margin-bottom:8px;font-size:48px}.viewer{width:100%;height:100%;display:block}.viewer[hidden]{display:none}.log-wrap{border:1px solid var(--border);background:var(--panel);border-radius:8px;margin:0 16px 12px;overflow:hidden}.log-head{color:var(--muted);border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:4px 12px;font-size:12px;display:flex}.log-actions{gap:6px;display:flex}.log{color:#374151;white-space:pre-wrap;height:110px;margin:0;padding:8px 12px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11.5px;line-height:1.5;overflow:auto}.log .err{color:var(--err)}.log .ok{color:var(--ok)}.settings{z-index:20;background:var(--panel);border:1px solid var(--border);border-radius:8px;flex-direction:column;width:340px;max-width:calc(100vw - 32px);max-height:calc(100vh - 80px);display:flex;position:absolute;top:58px;right:16px;box-shadow:0 8px 24px #0f172a24}.settings-head{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:8px 12px;font-size:13px;display:flex}.settings-actions{gap:6px;display:flex}.settings-body{padding:4px 12px 8px;overflow:auto}.settings fieldset{border:0;border-bottom:1px solid var(--border);margin:0;padding:8px 0 4px}.settings fieldset:last-child{border-bottom:0}.settings legend{text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin-bottom:4px;padding:0;font-size:11px;font-weight:600}.settings label{cursor:pointer;align-items:center;gap:8px;padding:3px 0;font-size:13px;display:flex}.settings input[type=checkbox]{accent-color:var(--accent);margin:0}.settings-select{justify-content:space-between}.settings-select select{font:inherit;border:1px solid var(--border);background:var(--panel);color:var(--text);border-radius:6px;padding:4px 8px}.settings .sub{padding-left:22px}.settings .sub.is-disabled{opacity:.45}.settings .sub.is-disabled label{cursor:default}.settings-note{border-top:1px solid var(--border);margin:0;padding:6px 12px 8px}@media (width<=640px){.bar{flex-direction:column;align-items:stretch}.bar-right{justify-content:stretch}.btn{flex:1;justify-content:center}.placeholder .muted{display:none}}
