:root{color-scheme:dark;--bg: #0b0d12;--panel: #161922;--panel-2: #1c2030;--border: #2a2f40;--text: #e6e8ee;--muted: #8d93a3;--accent: #6ea8ff;--accent-strong: #4d8df0;--danger: #e96565;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Hiragino Kaku Gothic ProN,Noto Sans JP,sans-serif}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased}.app{display:grid;grid-template-rows:48px 1fr;height:100vh}.topbar{display:flex;align-items:center;justify-content:space-between;padding:0 16px;background:var(--panel);border-bottom:1px solid var(--border)}.topbar h1{font-size:14px;font-weight:600;margin:0;letter-spacing:.02em}.topbar .right{display:flex;gap:8px;align-items:center}button{background:var(--panel-2);color:var(--text);border:1px solid var(--border);border-radius:6px;padding:6px 12px;font-size:12px;cursor:pointer}button:hover:not(:disabled){background:#232938}button:disabled{opacity:.5;cursor:not-allowed}button.primary{background:var(--accent-strong);border-color:var(--accent-strong);color:#fff}button.primary:hover:not(:disabled){background:var(--accent)}.body{display:grid;grid-template-columns:1fr 340px;min-height:0}.canvas-area{position:relative;background:#050608;display:flex;align-items:center;justify-content:center;overflow:hidden}.canvas-area img{max-width:100%;max-height:100%;object-fit:contain;-webkit-user-select:none;user-select:none;-webkit-user-drag:none}.canvas-area .empty{text-align:center;color:var(--muted);padding:40px}.canvas-area .empty h2{font-weight:500;margin:0 0 12px}.canvas-area .loading{position:absolute;top:12px;left:12px;font-size:11px;background:#0000008c;padding:4px 8px;border-radius:4px;color:var(--muted)}.panel{background:var(--panel);border-left:1px solid var(--border);overflow-y:auto;padding:8px 0}.section{border-bottom:1px solid var(--border);padding:8px 14px 12px}.section h3{font-size:11px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin:4px 0 8px}.row{display:grid;grid-template-columns:90px 1fr 42px;align-items:center;gap:8px;padding:3px 0;font-size:12px}.row label{color:var(--text)}.row .val{text-align:right;font-variant-numeric:tabular-nums;color:var(--muted);font-size:11px}input[type=range]{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:100%;height:16px;background:transparent}input[type=range]::-webkit-slider-runnable-track{height:3px;background:var(--border);border-radius:2px}input[type=range]::-moz-range-track{height:3px;background:var(--border);border-radius:2px}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:12px;height:12px;margin-top:-4.5px;background:var(--accent);border-radius:50%;cursor:pointer}input[type=range]::-moz-range-thumb{width:12px;height:12px;background:var(--accent);border-radius:50%;border:none;cursor:pointer}.upload-zone{border:1px dashed var(--border);border-radius:8px;padding:24px;text-align:center;background:#ffffff05;max-width:480px}.upload-zone.drag{border-color:var(--accent);background:#6ea8ff0f}.curve-editor{width:100%;height:180px;background:var(--panel-2);border:1px solid var(--border);border-radius:4px;cursor:crosshair;display:block}.toolbar-actions{display:flex;gap:6px}.error{color:var(--danger);font-size:12px;margin-top:8px}
