:root{--bg:#1e1f26;--bg-panel:#262832;--bg-inset:#1a1b21;--border:#3a3c48;--text:#d7d8de;--text-dim:#8b8d99;--accent:#4fa8e0;--accent-2:#c084fc;--danger:#e5534b;--sans:system-ui, "Segoe UI", "Hiragino Kaku Gothic ProN", Meiryo, sans-serif;--mono:ui-monospace, Consolas, monospace;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:var(--sans);color:var(--text);background:var(--bg);font-size:13px}button,input,select{font-family:inherit;font-size:inherit;color:inherit}.app{grid-template-rows:auto 1fr auto;height:100vh;display:grid}.menu-bar{background:var(--bg-panel);border-bottom:1px solid var(--border);z-index:20;align-items:stretch;display:flex;position:relative}.menu-item{position:relative}.menu-item>button{cursor:pointer;color:var(--text);background:0 0;border:none;padding:6px 12px}.menu-item>button:hover,.menu-item.open>button{background:var(--bg-inset)}.menu-dropdown{background:var(--bg-panel);border:1px solid var(--border);z-index:30;min-width:220px;padding:4px 0;position:absolute;top:100%;left:0;box-shadow:0 8px 24px #0006}.menu-dropdown button{text-align:left;cursor:pointer;width:100%;color:var(--text);background:0 0;border:none;justify-content:space-between;gap:16px;padding:6px 14px;display:flex}.menu-dropdown button:hover:not(:disabled){background:var(--accent);color:#0a0a0a}.menu-dropdown button:disabled{color:var(--text-dim);cursor:default}.menu-dropdown .shortcut{color:var(--text-dim);font-size:11px}.menu-dropdown button:hover:not(:disabled) .shortcut{color:#0a0a0a}.menu-dropdown hr{border:none;border-top:1px solid var(--border);margin:4px 0}.body{grid-template-columns:260px 1fr 300px;display:grid;overflow:hidden}.panel{background:var(--bg-panel);flex-direction:column;gap:12px;padding:10px;display:flex;overflow-y:auto}.panel.left{border-right:1px solid var(--border)}.panel.right{border-left:1px solid var(--border)}.group{border:1px solid var(--border);border-radius:4px;padding:8px}.group-title{color:var(--text-dim);margin-bottom:6px;font-size:12px;font-weight:600}.row{align-items:center;gap:6px;margin-bottom:4px;display:flex}.row.wrap{flex-wrap:wrap}button.btn{background:var(--bg-inset);border:1px solid var(--border);cursor:pointer;color:var(--text);border-radius:4px;padding:4px 8px}button.btn:hover:not(:disabled){border-color:var(--accent)}button.btn:disabled{opacity:.4;cursor:default}button.btn.primary{background:var(--accent);color:#0a0a0a;border-color:var(--accent)}button.btn.active{background:var(--accent-2);color:#0a0a0a;border-color:var(--accent-2)}input[type=text],input[type=number]{background:var(--bg-inset);border:1px solid var(--border);color:var(--text);border-radius:3px;width:100%;padding:3px 6px}table.data-table{border-collapse:collapse;width:100%;font-size:12px}table.data-table th,table.data-table td{border-bottom:1px solid var(--border);text-align:right;padding:3px 4px}table.data-table th{color:var(--text-dim);cursor:pointer;-webkit-user-select:none;user-select:none}table.data-table tr.selected td{background:#4fa8e040}table.data-table tr:hover td{background:#ffffff0a}.center-canvas{background:repeating-conic-gradient(#20212a 0% 25%,#191a21 0% 50%) 50%/24px 24px;position:relative;overflow:hidden}.stage{transform-origin:0 0;position:absolute}.stage canvas{display:block}.stage svg{pointer-events:none;width:100%;height:100%;position:absolute;top:0;left:0}.magnifier-canvas{background:#0a0b0e;border:3px solid #0c0d10;border-radius:50%;box-shadow:0 0 0 3px #23252e,0 0 0 4px #14151b,inset 0 0 14px #000000d9}.status-bar{border-top:1px solid var(--border);background:var(--bg-panel);color:var(--text-dim);align-items:center;gap:16px;padding:3px 10px;font-size:12px;display:flex}.status-bar .message{flex:1}.series-tabs{flex-wrap:wrap;gap:4px;display:flex}.series-tab{border:1px solid var(--border);cursor:pointer;background:var(--bg-inset);border-radius:4px;align-items:center;gap:4px;padding:3px 6px;display:flex}.series-tab.active{border-color:var(--accent)}.series-swatch{border-radius:2px;flex-shrink:0;width:10px;height:10px}.dialog-backdrop{z-index:100;background:#00000080;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.dialog{background:var(--bg-panel);border:1px solid var(--border);border-radius:6px;min-width:280px;padding:16px;box-shadow:0 12px 32px #00000080}.dialog h3{margin:0 0 12px;font-size:14px}.dialog .actions{justify-content:flex-end;gap:8px;margin-top:14px;display:flex}.empty-state{color:var(--text-dim);flex-direction:column;justify-content:center;align-items:center;gap:10px;display:flex;position:absolute;inset:0}.hint{color:var(--text-dim);font-size:11px}
