.photo-crop-overlay { display: none; position: fixed; inset: 0; background: rgba(17, 24, 39, .6); z-index: 1000; align-items: center; justify-content: center; } .photo-crop-overlay.open { display: flex; } .photo-crop-box { background: #fff; border-radius: 10px; padding: 24px; max-width: 560px; width: calc(100% - 32px); box-shadow: 0 12px 40px rgba(0,0,0,.25); } .photo-crop-box h3 { margin: 0 0 16px; font-size: 16px; } .photo-crop-main { display: flex; gap: 20px; align-items: flex-start; flex-wrap: wrap; } .photo-crop-frame { position: relative; overflow: hidden; border-radius: 6px; border: 2px solid #1e3a5f; background: #e5e7eb; cursor: grab; touch-action: none; flex-shrink: 0; max-width: 100%; aspect-ratio: 2 / 1; height: auto; } .photo-crop-frame:active { cursor: grabbing; } .photo-crop-frame-img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; pointer-events: none; user-select: none; -webkit-user-drag: none; } .photo-crop-ref { position: relative; overflow: hidden; border-radius: 6px; border: 1px solid #e5e7eb; background: #f3f4f6; flex-shrink: 0; max-width: 100%; aspect-ratio: 1 / 1; height: auto; } .photo-crop-ref-img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: contain; pointer-events: none; user-select: none; } .photo-crop-ref-rect { position: absolute; border: 2px solid #c9973d; box-shadow: 0 0 0 9999px rgba(17, 24, 39, .55); pointer-events: none; } .photo-crop-zoom-row { display: flex; align-items: center; gap: 10px; margin-top: 16px; } .photo-crop-zoom-row label { font-size: 13px; font-weight: 600; color: #374151; flex-shrink: 0; } .photo-crop-zoom-slider { flex: 1; } .photo-crop-hint { font-size: 12px; color: #6b7280; margin: 10px 0 0; } .photo-crop-actions { display: flex; align-items: center; gap: 8px; margin-top: 20px; } @media (max-width: 480px) { .photo-crop-main { flex-direction: column; align-items: stretch; } .photo-crop-frame, .photo-crop-ref { width: 100%; } }