.photo-add{float:right;display:inline-flex;align-items:center;justify-content:center;width:36px;height:32px;border:1px solid var(--line);border-radius:9px;background:#fff;color:#222;cursor:pointer;margin-top:-6px}.photo-add:active{transform:scale(.95)}.photo-add svg{width:21px;height:21px}#photoColorDialog{width:min(440px,calc(100vw - 28px));height:fit-content;max-height:90dvh;overflow:auto;background:#fff;color:#222}#photoColorDialog::backdrop{background:rgba(0,0,0,.76)}.photo-dialog-inner{padding:20px}.photo-dialog-inner header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:18px}.photo-dialog-inner h2{margin:0;font-size:16px}.photo-close{display:grid;place-items:center;border:0;border-radius:50%;background:#222;color:#fff;width:34px;height:34px;font-size:23px;padding:0;line-height:1}.photo-choices{display:grid;gap:12px}.photo-choices .btn{min-height:52px;font-size:14px}.photo-dialog-inner [hidden],.photo-results[hidden]{display:none!important}.photo-preview{display:block;width:100%;height: min(34dvh,280px);object-fit:contain;background:#171717;border-radius:12px}.photo-categories{display:flex;flex-wrap:wrap;gap:4px}.photo-categories .chip.active{background:#222;color:#fff;border-color:#222}.photo-categories .chip{min-height:34px}.photo-actions{display:flex;gap:10px;margin-top:16px}.photo-actions button{flex:1;min-height:44px}.photo-actions button:disabled{opacity:.55}.photo-note,.photo-results p,.photo-choices p{font-size:11px;line-height:1.6;color:#777}.photo-message{font-size:12px;line-height:1.5;color:#9a4226;min-height:18px;margin-bottom:0}.photo-results{padding:12px 0 16px}.photo-result-head{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:13px}.photo-palette{display:flex;gap:5px;margin:10px 0}.photo-palette span{width:32px;height:24px;border-radius:6px;border:1px solid #0001}.photo-score{font-size:11px;margin-top:5px;color:#37634c;font-weight:500}@media(prefers-reduced-motion:reduce){.photo-add:active{transform:none}}@media print{.photo-add,.photo-results,#photoColorDialog{display:none!important}}

.photo-crop-box{position:relative;touch-action:none;user-select:none;-webkit-user-select:none;overflow:hidden;border-radius:12px;background:#171717}
.photo-crop-box .photo-preview{border-radius:0;pointer-events:none;height:min(48dvh,400px)}
.photo-crop-outline{position:absolute;box-sizing:border-box;border:1px solid #a45aff;box-shadow:0 0 0 1000px #0008;cursor:move;touch-action:none}
.photo-crop-outline:focus-visible{outline:2px solid #fff;outline-offset:3px}
.photo-crop-handle{position:absolute;width:40px;height:40px;padding:0;border:0;background:transparent;touch-action:none;z-index:1;transform:translate(-50%,-50%)}
.photo-crop-handle::after{content:"";position:absolute;width:7px;height:7px;border-radius:50%;background:#fff;box-shadow:0 0 2px #555;left:50%;top:50%;transform:translate(-50%,-50%)}
.photo-crop-handle[data-corner="nw"]{left:0;top:0;cursor:nwse-resize}.photo-crop-handle[data-corner="ne"]{left:100%;top:0;cursor:nesw-resize}.photo-crop-handle[data-corner="sw"]{left:0;top:100%;cursor:nesw-resize}.photo-crop-handle[data-corner="se"]{left:100%;top:100%;cursor:nwse-resize}
.photo-crop-handle:focus-visible::after{outline:3px solid #a45aff;outline-offset:2px}
.photo-palette button{width:44px;height:36px;min-width:44px;border-radius:7px;border:0;box-shadow:inset 0 0 0 1px rgba(0,0,0,.1);cursor:pointer}.photo-palette button[aria-pressed="true"]{box-shadow:0 0 0 2px #111}.photo-palette{gap:10px;padding:4px}
@media screen and (min-width:901px) and (orientation:landscape){#colorist .color-layout{align-items:start}#colorist .color-layout>.panel:first-child{position:sticky;top:16px}#colorist .color-layout>.panel:nth-child(2){max-height:calc(100dvh - 160px);overflow-y:auto;overscroll-behavior-y:contain;scrollbar-gutter:stable}}

.photo-crop-box,.photo-crop-outline,.photo-crop-handle{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none;touch-action:none}.photo-crop-box{cursor:crosshair}.photo-crop-outline{cursor:crosshair}.photo-crop-handle{width:48px;height:48px;-webkit-appearance:none;appearance:none}@media(pointer:coarse){.photo-crop-outline{cursor:move}}

/* 아이콘 모션(Lucide image-plus · camera · image): 마우스를 올리거나 누를 때 */
.photo-choices .btn{display:flex;align-items:center;justify-content:center;gap:9px}.pc-icon{width:20px;height:20px;flex:none}
.ip-plus,.ip-sun,.im-sun,.im-hill,.cam-body,.cam-lens{transform-box:view-box}
.ip-plus{transform-origin:19px 5px}.ip-sun,.im-sun{transform-origin:9px 9px}.im-hill{transform-origin:12px 21px}.cam-body,.cam-lens{transform-origin:12px 13px}
.photo-add:hover .ip-plus,.photo-add.dl-play .ip-plus{animation:ipPlus .5s ease-in-out}
.photo-add:hover .ip-sun,.photo-add.dl-play .ip-sun{animation:imSun .6s ease-in-out .1s}
[data-source="library"]:hover .im-sun,[data-source="library"].dl-play .im-sun{animation:imSun .6s ease-in-out}
[data-source="library"]:hover .im-hill,[data-source="library"].dl-play .im-hill{animation:imHill .6s ease-in-out .08s}
[data-source="camera"]:hover .cam-lens,[data-source="camera"].dl-play .cam-lens{animation:camLens .7s ease-in-out}
[data-source="camera"]:hover .cam-body,[data-source="camera"].dl-play .cam-body{animation:camBody .35s ease-in-out}
@keyframes ipPlus{0%{transform:rotate(0) scale(1)}50%{transform:rotate(45deg) scale(1.2)}100%{transform:rotate(90deg) scale(1)}}
@keyframes imSun{0%,100%{transform:scale(1)}35%{transform:scale(1.35)}70%{transform:scale(.9)}}
@keyframes imHill{0%,100%{transform:scaleY(1)}35%{transform:scaleY(1.15)}70%{transform:scaleY(.97)}}
@keyframes camLens{0%,100%{transform:scale(1)}35%{transform:scale(.6)}70%{transform:scale(1.15)}}
@keyframes camBody{0%,100%{transform:scaleY(1)}50%{transform:scaleY(.97)}}
@media(prefers-reduced-motion:reduce){.ip-plus,.ip-sun,.im-sun,.im-hill,.cam-body,.cam-lens{animation:none!important}}
