/* ================================================ PSD Loader - Modal & UI Styles ================================================ */ /* ---------- Overlay ---------- */ .psd-overlay { position: fixed; inset: 0; background: rgba(0, 0, 0, 0.65); z-index: 10000; display: flex; align-items: center; justify-content: center; } /* ---------- Modal ---------- */ .psd-modal { background: #1e1e2e; border: 1px solid #45475a; border-radius: 8px; width: 850px; max-height: 90vh; display: flex; flex-direction: column; color: #cdd6f4; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; font-size: 13px; box-shadow: 0 12px 40px rgba(0, 0, 0, 0.6); overflow: hidden; } /* ---------- Modal Body(2カラム) ---------- */ .psd-modal-body { display: flex; flex: 1; overflow: hidden; min-height: 0; } /* ---------- プレビューパネル(左) ---------- */ .psd-preview-panel { width: 390px; flex-shrink: 0; display: flex; flex-direction: column; gap: 6px; padding: 10px 12px; border-right: 1px solid #313244; background: #181825; } .psd-preview-label { font-size: 11px; font-weight: 600; color: #6c7086; text-transform: uppercase; letter-spacing: 0.05em; } .psd-preview-canvas { width: 100%; border-radius: 4px; border: 1px solid #313244; background: #111; display: block; min-height: 60px; cursor: grab; } .psd-preview-canvas:active { cursor: grabbing; } .psd-preview-status { font-size: 11px; color: #6c7086; min-height: 16px; text-align: center; } /* ---------- 右パネル ---------- */ .psd-right-panel { flex: 1; display: flex; flex-direction: column; overflow: hidden; min-height: 0; } /* ---------- Header ---------- */ .psd-modal-header { display: flex; align-items: center; justify-content: space-between; padding: 12px 16px; border-bottom: 1px solid #313244; font-weight: 600; font-size: 14px; flex-shrink: 0; } .psd-modal-header .psd-close-btn { background: none; border: none; color: #6c7086; cursor: pointer; font-size: 18px; line-height: 1; padding: 0 4px; border-radius: 3px; transition: color 0.15s; } .psd-modal-header .psd-close-btn:hover { color: #f38ba8; } /* ---------- Rig Mode Bar ---------- */ .psd-rig-setup-bar { display: flex; gap: 6px; align-items: center; padding: 4px 8px; background: #1a2a3a; border-bottom: 1px solid #313244; flex-wrap: wrap; font-size: 11px; color: #aaa; flex-shrink: 0; } /* ---------- Layer List ---------- */ .psd-layer-list { overflow-y: auto; flex: 1; padding: 6px 0; min-height: 100px; } .psd-layer-list::-webkit-scrollbar { width: 6px; } .psd-layer-list::-webkit-scrollbar-track { background: #181825; } .psd-layer-list::-webkit-scrollbar-thumb { background: #45475a; border-radius: 3px; } /* ---------- Layer Item ---------- */ .psd-layer-item { display: flex; align-items: center; padding: 4px 12px; gap: 6px; cursor: default; -webkit-user-select: none; user-select: none; transition: background 0.1s; border-left: 2px solid transparent; } .psd-layer-item:hover { background: #25253a; } .psd-layer-item.selected { background: #313244; border-left-color: #89b4fa; } .psd-layer-item.drag-over { outline: 1px dashed #89b4fa; } .psd-layer-item .handle { color: #45475a; cursor: grab; flex-shrink: 0; } .psd-layer-item .eye-btn { cursor: pointer; font-size: 14px; flex-shrink: 0; opacity: 1; transition: opacity 0.15s; } .psd-layer-item.hidden-layer .eye-btn { opacity: 0.35; } .psd-layer-item .toggle-btn { cursor: pointer; font-size: 10px; color: #89b4fa; flex-shrink: 0; } .psd-layer-item .kind-icon { font-size: 13px; flex-shrink: 0; } .psd-layer-item .layer-name { flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: #cdd6f4; } .psd-layer-item.hidden-layer .layer-name { color: #45475a; } .psd-layer-item .layer-name input { background: #313244; border: 1px solid #89b4fa; border-radius: 3px; color: #cdd6f4; padding: 1px 6px; font-size: 13px; width: 100%; outline: none; } /* ---------- Custom Group Item ---------- */ .psd-custom-group { display: flex; align-items: center; padding: 5px 12px; gap: 6px; background: #1a1a2e; border-left: 2px solid #f38ba8; -webkit-user-select: none; user-select: none; cursor: default; transition: background 0.1s; } .psd-custom-group:hover { background: #231a2e; } .psd-custom-group.selected { background: #2e1a2e; border-left-color: #f38ba8; outline: 1px solid #f38ba844; } .psd-custom-group.drag-over { outline: 2px dashed #f38ba8; background: #2e1a2e; } .psd-custom-group.hidden-layer .cg-name { color: #6c7086; } .psd-custom-group .handle { color: #6c7086; cursor: grab; flex-shrink: 0; } .psd-custom-group .eye-btn { cursor: pointer; font-size: 14px; flex-shrink: 0; opacity: 1; transition: opacity 0.15s; } .psd-custom-group.hidden-layer .eye-btn { opacity: 0.35; } .psd-custom-group .toggle-btn { cursor: pointer; font-size: 10px; color: #f38ba8; flex-shrink: 0; } .psd-custom-group .cg-name { color: #f38ba8; flex: 1; font-size: 12px; font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .psd-custom-group .cg-badge { background: #f38ba833; color: #f38ba8; border-radius: 10px; padding: 0 6px; font-size: 10px; flex-shrink: 0; } /* グループ内レイヤー(左ラインを引く) */ .psd-layer-item.in-custom-group { border-left-color: #f38ba844; background: #1d1625; } .psd-layer-item.in-custom-group:hover { background: #271a30; } /* 空グループのドロップヒント */ .psd-group-empty { padding: 6px 28px; color: #6c7086; font-size: 11px; font-style: italic; border-left: 2px solid #f38ba822; background: #1a1a2e; border-bottom: 1px dashed #313244; } .psd-group-empty.drag-over { background: #2e1a2e; color: #f38ba8; border-left-color: #f38ba8; } /* ---------- Toolbar (group bar) ---------- */ .psd-group-bar { display: flex; gap: 8px; padding: 8px 16px; border-top: 1px solid #313244; flex-shrink: 0; } /* ---------- Footer ---------- */ .psd-modal-footer { display: flex; justify-content: flex-end; gap: 8px; padding: 10px 16px; border-top: 1px solid #313244; flex-shrink: 0; } /* ---------- Buttons ---------- */ .psd-btn { background: #313244; border: 1px solid #45475a; border-radius: 4px; color: #cdd6f4; padding: 5px 14px; cursor: pointer; font-size: 12px; transition: background 0.15s, border-color 0.15s; } .psd-btn:hover { background: #45475a; border-color: #6c7086; } .psd-btn.primary { background: #89b4fa; border-color: #89b4fa; color: #1e1e2e; font-weight: 600; } .psd-btn.primary:hover { background: #b4d0fb; border-color: #b4d0fb; } /* ---------- Help Dialog ---------- */ .psd-help-dialog { background: #1e1e2e; border: 1px solid #45475a; border-radius: 8px; width: 620px; max-height: 80vh; display: flex; flex-direction: column; color: #cdd6f4; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; font-size: 13px; box-shadow: 0 12px 40px rgba(0, 0, 0, 0.7); overflow: hidden; } .psd-help-header { display: flex; align-items: center; justify-content: space-between; padding: 10px 16px; border-bottom: 1px solid #313244; flex-shrink: 0; font-size: 14px; font-weight: 600; } .psd-help-body { overflow-y: auto; padding: 12px 16px 16px; display: flex; flex-direction: column; gap: 16px; } .psd-help-section {} .psd-help-section-title { margin: 0 0 6px; font-size: 12px; font-weight: 700; color: #89b4fa; text-transform: uppercase; letter-spacing: 0.06em; border-bottom: 1px solid #313244; padding-bottom: 4px; } .psd-help-table { width: 100%; border-collapse: collapse; } .psd-help-table tr + tr td { border-top: 1px solid #2a2a3e; } .psd-help-term { padding: 4px 10px 4px 2px; white-space: nowrap; font-weight: 600; color: #cba6f7; vertical-align: top; width: 1%; } .psd-help-desc { padding: 4px 2px; color: #bac2de; line-height: 1.5; } /* ---------- Drop Zone ---------- */ .psd-drop-zone { width: 100%; min-height: 62px; border: 2px dashed #45475a; border-radius: 6px; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 3px; cursor: pointer; background: #181825; transition: border-color 0.15s, background 0.15s; padding: 8px; box-sizing: border-box; } .psd-drop-zone:hover, .psd-drop-zone.drag-active { border-color: #89b4fa; background: #1e2140; } .psd-drop-zone .dz-icon { font-size: 22px; } .psd-drop-zone .dz-label { color: #6c7086; font-size: 11px; } .psd-drop-zone .dz-filename { color: #a6e3a1; font-size: 11px; word-break: break-all; text-align: center; } .psd-drop-zone .dz-filename.uploading { color: #f9e2af; } .psd-drop-zone .dz-filename.error { color: #f38ba8; }