:root{color-scheme:dark;--bg: #14161a;--panel: #1b1e24;--panel-2: #22262e;--border: #2a2e35;--text: #e8eaed;--text-dim: #8a919e;--accent: #4f8ff7;--accent-soft: rgba(79, 143, 247, .15);--drop: #34c98e;--danger: #e5484d}*{box-sizing:border-box}html,body{margin:0;height:100%}body{font-family:Pretendard,system-ui,-apple-system,Apple SD Gothic Neo,sans-serif;font-size:14px;background:var(--bg);color:var(--text);overflow:hidden;-webkit-font-smoothing:antialiased}#app{height:100dvh;display:grid;grid-template-rows:auto 1fr auto;gap:10px;padding:12px}#slots{display:grid;grid-template-columns:1fr 1fr;gap:10px}.slot{display:flex;flex-direction:column;min-height:132px;border:2px solid var(--border);border-radius:10px;background:var(--panel);cursor:pointer;overflow:hidden;transition:border-color .15s,background .15s}.slot.selected{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.slot.drag-over{border-color:var(--drop);background:#1d2a24}.slot-head{display:flex;align-items:center;gap:8px;padding:8px 10px;font-size:12px;border-bottom:1px solid var(--border)}.slot-label{font-weight:600;white-space:nowrap}.slot-meta{flex:1;display:flex;gap:6px;min-width:0;color:var(--text-dim)}.slot-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:220px}.slot-dims{white-space:nowrap}.slot-clear{flex:none;width:22px;height:22px;padding:0;font-size:11px;line-height:1;border-radius:6px}.slot.empty .slot-clear{visibility:hidden}.slot-body{position:relative;flex:1;display:flex;align-items:center;justify-content:center;min-height:56px;padding:6px}.slot-empty-hint{margin:0;color:var(--text-dim);font-size:12px;text-align:center;line-height:1.7}.slot:not(.empty) .slot-empty-hint{display:none}.slot-thumb{display:none;max-height:64px;max-width:92%;border-radius:4px}.slot:not(.empty) .slot-thumb{display:block}.slot.loading .slot-body:after{content:"로딩 중…";position:absolute;inset:0;display:grid;place-items:center;font-size:12px;color:var(--text-dim);background:#0000008c}.slot-actions{display:flex;gap:6px;padding:8px 10px;border-top:1px solid var(--border)}#viewer{position:relative;overflow:hidden;border-radius:10px;border:1px solid var(--border);isolation:isolate;background-image:repeating-conic-gradient(#1e2127 0% 25%,#23262d 0% 50%);background-size:24px 24px;touch-action:none;cursor:grab}#viewer:active{cursor:grabbing}#viewer.diff-mode{background:#000}#viewer.crop-mode{cursor:crosshair}.layer{position:absolute;inset:0;pointer-events:none}.layer-b{z-index:2}.layer img{position:absolute;top:0;left:0;display:block;max-width:none;transform-origin:0 0;-webkit-user-select:none;user-select:none;-webkit-user-drag:none}.crop-marquee{position:absolute;z-index:10;border:1.5px dashed var(--accent);background:var(--accent-soft);pointer-events:none}#controls{display:flex;align-items:center;flex-wrap:wrap;gap:8px;padding:2px}.ctl-opacity{display:flex;align-items:center;gap:8px;padding-right:4px}.ctl-opacity input[type=range]{width:160px;accent-color:var(--accent)}.ctl-opacity-val{min-width:72px;color:var(--text-dim);font-variant-numeric:tabular-nums}.ctl-sep{width:1px;height:20px;background:var(--border)}.ctl-spacer{flex:1}button{font:inherit;font-size:13px;color:var(--text);background:var(--panel-2);border:1px solid var(--border);border-radius:8px;padding:6px 12px;cursor:pointer;transition:background .12s,border-color .12s}button:hover:not(:disabled){background:#2a2f38;border-color:#3a4049}button:disabled{opacity:.45;cursor:default}button.toggle.active{background:var(--accent);border-color:var(--accent);color:#fff}button.danger:hover:not(:disabled){border-color:var(--danger);color:var(--danger)}#toasts{position:fixed;right:16px;bottom:16px;z-index:100;display:flex;flex-direction:column;gap:8px;pointer-events:none}.toast{padding:10px 14px;font-size:13px;border-radius:8px;background:#262b33;border:1px solid var(--border);box-shadow:0 4px 16px #0006;animation:toast-in .18s ease-out}.toast-error{background:#3a2026;border-color:#5b2330}.toast-out{opacity:0;transition:opacity .3s}@keyframes toast-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
