/* All rules are scoped to the shared photo editor, including shadow-root mounts. */
.photo-redesign { box-sizing:border-box; container:photo-editor / inline-size; width:100%; max-width:1040px; min-width:0; margin:24px auto; padding:24px; border:1px solid #d9e1eb; border-radius:12px; background:#fff; color:#243247; font:16px/1.6 "Malgun Gothic","맑은 고딕",sans-serif; }
.photo-redesign *, .photo-redesign *::before, .photo-redesign *::after { box-sizing:border-box; }
.photo-redesign #photo-heading { padding:0 8px; color:#213c63; font-size:24px; font-weight:700; scroll-margin-top:24px; }
.photo-redesign section { margin:0 0 28px; min-width:0; }
.photo-redesign .photo-section-title { display:flex; gap:10px; align-items:center; margin:0 0 20px; color:#213c63; font-size:20px; font-weight:700; }
.photo-redesign svg { width:24px; height:24px; flex-shrink:0; fill:none; stroke:currentColor; stroke-width:1.7; stroke-linecap:round; stroke-linejoin:round; }
.photo-redesign .photo-basic { clear:both; padding:22px; border:1px solid #e1e6ed; border-radius:10px; background:#f5f7fa; }
.photo-redesign .photo-meta { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:20px 24px; }
.photo-redesign .photo-meta label { display:flex; flex-direction:column; align-items:stretch; gap:8px; min-width:0; color:#263c59; font-weight:700; }
.photo-redesign input:not([type=radio]):not([type=file]), .photo-redesign select { width:100%; min-width:0; height:48px; border:1px solid #aebdd0; border-radius:6px; padding:10px 12px; background:#fff; color:#243247; font:400 16px/1.4 "Malgun Gothic",sans-serif; text-align:left; flex:none; }
.photo-redesign input[type=date]::-webkit-calendar-picker-indicator { width:24px; height:24px; cursor:pointer; opacity:1; }
.photo-redesign .photo-help { margin:14px 0 0; color:#526176; font-size:14px; font-weight:400; overflow-wrap:anywhere; }
.photo-redesign .photo-dropzone { display:flex; flex-direction:column; align-items:center; gap:10px; padding:32px 20px; border:2px dashed #b6c3d3; border-radius:12px; background:#fafbfd; text-align:center; }
.photo-redesign .photo-dropzone > svg { width:38px; height:38px; color:#315a9b; }
.photo-redesign .photo-dropzone > strong { font-size:20px; color:#213c63; }
.photo-redesign .photo-dropzone > p { margin:0; }
.photo-redesign .photo-dropzone.is-dragover { border-color:#315a9b; background:#eaf1fc; }
.photo-redesign .photo-dropzone.has-photos { padding:22px 16px; }
.photo-redesign .photo-inputs { display:flex; justify-content:center; flex-wrap:wrap; gap:12px; width:100%; margin:10px 0; }
.photo-redesign .file-button { position:relative; display:inline-flex; align-items:center; justify-content:center; min-height:48px; padding:10px 18px; border:1px solid #315a9b; border-radius:7px; background:#fff; color:#213c63; font-size:16px; font-weight:700; cursor:pointer; overflow:hidden; }
.photo-redesign .file-button:first-child { background:#315a9b; color:#fff; }
.photo-redesign .file-button input { position:absolute; inset:0; width:100%; height:100%; opacity:0; cursor:pointer; }
.photo-redesign .photo-list { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:18px; max-height:none; overflow:visible; margin:20px 0; padding:0; }
.photo-redesign .photo-list:empty { margin:0; }
.photo-redesign .photo-card { display:flex; flex-direction:column; min-width:0; padding:14px; gap:12px; border:1px solid #d9e1eb; border-radius:10px; background:#fff; }
.photo-redesign button.photo-preview { display:flex; padding:0; border:0; min-height:220px; cursor:zoom-in; align-items:center; justify-content:center; width:100%; aspect-ratio:6/5; border-radius:7px; background:#f1f4f8; overflow:hidden; }
.photo-redesign .photo-preview img { width:100%; height:100%; object-fit:contain; }
.photo-redesign .photo-card-body { min-width:0; }
.photo-redesign .photo-filename { margin:0 0 12px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font-size:14px; color:#526176; }
.photo-redesign .photo-card-body > label { display:flex; flex-direction:column; align-items:stretch; gap:6px; margin-bottom:10px; }
.photo-redesign .photo-caption-row { display:flex; flex-direction:column; gap:8px; }
.photo-redesign .photo-card-actions { display:flex; justify-content:flex-start; flex-wrap:wrap; gap:8px; margin-top:auto; }
.photo-redesign button { min-height:44px; min-width:44px; padding:8px 12px; border:1px solid #b8c6d8; border-radius:6px; background:#fff; color:#213c63; font:700 16px/1.4 "Malgun Gothic",sans-serif; cursor:pointer; }
.photo-redesign button:hover { background:#edf3fb; }
.photo-redesign .photo-card-header { display:flex; align-items:center; justify-content:space-between; gap:12px; }
.photo-redesign .photo-card-heading { display:flex; align-items:center; gap:6px; min-width:0; color:#213c63; }
.photo-redesign .photo-card-heading strong { font-size:18px; white-space:nowrap; }
.photo-redesign .photo-drag-handle { width:44px; padding:6px; border:0; color:#526176; cursor:grab; font-size:24px; font-weight:400; }
.photo-redesign .photo-card-header [data-action="delete"] { font-weight:400; }
.photo-redesign .photo-caption-row > label { display:flex; flex-direction:column; gap:8px; font-weight:700; color:#263c59; }
.photo-redesign .photo-control-group { display:flex; align-items:center; gap:6px; }
.photo-redesign .photo-control-group > span { margin-right:2px; color:#526176; font-size:14px; white-space:nowrap; }
.photo-redesign .photo-card-actions { column-gap:18px; row-gap:12px; }
.photo-redesign .photo-image-dialog { width:min(1100px,96vw); max-width:96vw; max-height:94vh; padding:20px; border:1px solid #b8c6d8; border-radius:12px; color:#243247; background:#fff; }
.photo-redesign .photo-image-dialog[open] { display:flex; flex-direction:column; gap:12px; }
.photo-redesign .photo-image-dialog::backdrop { background:#15283ecc; }
.photo-redesign .photo-image-dialog h2 { margin:0; color:#213c63; font-size:20px; }
.photo-redesign .photo-image-name { margin:0; overflow-wrap:anywhere; }
.photo-redesign .photo-image-dialog > img { display:block; width:100%; min-height:0; max-height:65vh; object-fit:contain; background:#f1f4f8; }
.photo-redesign .photo-image-dialog > button { align-self:flex-end; }

.photo-redesign .photo-card.is-drop-target { outline:3px solid #315a9b; outline-offset:2px; }
.photo-redesign .photo-card.is-dragging { opacity:.5; }
.photo-redesign .photo-count { margin:18px 0 0; padding:14px 18px; border:1px solid #cbd8eb; border-radius:8px; background:#edf3fb; color:#213c63; font-size:16px; font-weight:700; }
.photo-redesign .photo-layout-cards { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:12px; }
.photo-redesign .photo-layout-card { position:relative; display:flex; flex-direction:column; align-items:center; gap:8px; min-width:0; padding:16px 8px; border:2px solid #d9e1eb; border-radius:10px; background:#fff; text-align:center; cursor:pointer; font-size:14px; }
.photo-redesign .photo-layout-card strong { color:#213c63; font-size:18px; }
.photo-redesign .photo-layout-card small { color:#526176; font-size:13px; }
.photo-redesign .photo-layout-card input { position:absolute; width:1px; height:1px; opacity:0; }
.photo-redesign .photo-layout-card:has(input:checked) { border-color:#213c63; background:#edf3fb; }
.photo-redesign .photo-layout-card:has(input:focus-visible) { outline:3px solid #315a9b; outline-offset:3px; }
.photo-redesign .photo-layout-sheet { display:grid; width:66px; height:92px; padding:7px; gap:4px; border:1px solid #aebdd0; background:#fff; box-shadow:0 2px 3px #213c6310; }
.photo-redesign .photo-layout-sheet > span { min-height:0; border:1px solid #9eb2ce; background:#dfe9f6; }
.photo-redesign .photo-layout-sheet[data-count="1"] { grid-template:1fr / 1fr; }
.photo-redesign .photo-layout-sheet[data-count="2"] { grid-template:repeat(2,1fr) / 1fr; }
.photo-redesign .photo-layout-sheet[data-count="3"] { grid-template:repeat(3,1fr) / 1fr; }
.photo-redesign .photo-layout-sheet[data-count="4"] { grid-template:repeat(2,1fr) / repeat(2,1fr); }
.photo-redesign .photo-status { color:#526176; margin:16px 0; font-size:15px; overflow-wrap:anywhere; }
.photo-redesign .photo-footer { display:flex; flex-wrap:wrap; align-items:center; gap:14px; margin-top:20px; }
.photo-redesign .photo-generate { display:flex; justify-content:center; align-items:center; gap:12px; min-height:58px; padding:16px 24px; border-color:#213c63; border-radius:9px; background:#213c63; color:#fff; font-size:18px; }
.photo-redesign .photo-generate:hover { background:#315a9b; }
.photo-redesign .photo-close { margin-left:auto; font-weight:400; }
.photo-redesign button:disabled { color:#637086; background:#e5eaf1; border-color:#d9e1eb; cursor:default; opacity:1; }
.photo-redesign :is(button,input,select,a):focus-visible, .photo-redesign .file-button:focus-within { outline:3px solid #315a9b; outline-offset:3px; }
.photo-redesign [hidden] { display:none !important; }
@container photo-editor (max-width:600px) {
 .photo-redesign .photo-layout-cards { grid-template-columns:repeat(2,minmax(0,1fr)); }
 .photo-redesign .photo-list { grid-template-columns:1fr; }
}
@container photo-editor (max-width:460px) {
 .photo-redesign .photo-meta { grid-template-columns:1fr; }
 .photo-redesign .photo-basic { clear:both; padding:16px; }
 .photo-redesign .photo-generate { width:100%; padding:14px 10px; }
}
@media(max-width:600px) {
 .photo-redesign { padding:16px 12px; }
 .photo-redesign .photo-meta, .photo-redesign .photo-list { grid-template-columns:1fr; }
 .photo-redesign .photo-layout-cards { grid-template-columns:repeat(2,minmax(0,1fr)); }
 .photo-redesign .photo-basic { clear:both; padding:16px; }
 .photo-redesign .photo-generate { width:100%; padding:14px 10px; }
 .photo-redesign .photo-inputs .file-button { width:100%; }
}
.photo-redesign .photo-pdf-open { min-height:58px; padding:16px 24px; border:2px solid #213c63; border-radius:9px; font-size:18px; }
.photo-redesign .photo-pdf-dialog { width:min(1150px,96vw); max-width:96vw; height:min(94vh,1100px); max-height:94vh; padding:20px; border:1px solid #b8c6d8; border-radius:12px; background:#fff; color:#243247; overflow:hidden; }
.photo-redesign .photo-pdf-dialog::backdrop { background:#15283ecc; }
.photo-redesign .photo-pdf-dialog[open] { display:flex; flex-direction:column; gap:12px; }
.photo-redesign .photo-pdf-dialog h2 { margin:0; font-size:20px; color:#213c63; }
.photo-redesign .photo-pdf-controls { display:flex; align-items:center; gap:10px; flex-wrap:wrap; flex-shrink:0; }
.photo-redesign .photo-pdf-controls span { font-size:15px; white-space:nowrap; }
.photo-redesign .photo-pdf-viewport { min-height:0; flex:1; overflow:auto; background:#e3e8ef; padding:16px; border:1px solid #d9e1eb; border-radius:6px; }
.photo-redesign .photo-pdf-viewport canvas { display:block; margin:auto; background:white; box-shadow:0 2px 10px #15283e30; }
@media(max-width:600px){.photo-redesign .photo-pdf-open { width:100%; }.photo-redesign .photo-pdf-dialog { padding:12px; }.photo-redesign .photo-pdf-controls { gap:6px; }.photo-redesign .photo-pdf-controls button { padding:6px 9px; font-size:14px; }}
/* Construction dates keep the single legacy period field behind split calendar controls. */
.photo-redesign .photo-period-group { grid-column:1/-1; min-width:0; margin:0; padding:0; border:0; background:transparent; }
.photo-redesign .photo-period-group > legend { padding:0; margin:0 0 10px; color:#263c59; font-size:16px; font-weight:700; }
.photo-redesign .photo-period-dates { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:20px 24px; }
.photo-redesign .photo-date-control { position:relative; min-width:0; width:100%; }
.photo-redesign .photo-date-placeholder { position:absolute; left:12px; top:50%; transform:translateY(-50%); color:#637086; pointer-events:none; font-weight:400; }
.photo-redesign .photo-date-control:not(.is-empty) .photo-date-placeholder, .photo-redesign .photo-date-control:focus-within .photo-date-placeholder { display:none; }
.photo-redesign .photo-date-control.is-empty input:not(:focus) { color:transparent; }
.photo-redesign .photo-meta label > .photo-help { margin:0; }
.photo-redesign .photo-period-error { color:#a12626; margin:10px 0 0; font-size:14px; }
@media(max-width:600px){.photo-redesign .photo-period-dates { grid-template-columns:1fr; }}
@container photo-editor (max-width:460px){.photo-redesign .photo-period-dates { grid-template-columns:1fr; }}

/* Live A4 sheets use SVG coordinates from the export plan, scaled to available width. */
.photo-editor .photo-live-stage{background:#e9edf2;padding:20px;overflow:hidden;border-radius:8px}
.photo-editor .photo-live-stage svg{display:block;width:100%;max-width:720px;height:auto;aspect-ratio:210/297;margin:auto;background:white;border:1px solid #cbd1d9;box-shadow:0 3px 12px #172e4920}
.photo-editor .photo-live-controls{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:10px;margin:14px 0}
.photo-editor .photo-live-controls button{min-height:44px;padding:8px 16px}
.photo-editor .photo-live-dialog{width:min(1100px,96vw);max-width:96vw;max-height:94vh;border:1px solid #ccd4df;border-radius:10px;padding:16px;background:#edf0f4}
.photo-editor .photo-live-dialog::backdrop{background:#14243c99}
.photo-editor .photo-live-large{max-height:75vh;overflow:auto;background:#e1e5eb;padding:12px}
.photo-editor .photo-live-large svg{display:block;min-width:100%;height:auto;background:white;box-shadow:0 2px 8px #172e4930}
.photo-editor .photo-upload-errors{color:#9d2222;overflow-wrap:anywhere}
@media(max-width:600px){.photo-editor .photo-live-stage{padding:8px}.photo-editor .photo-live-controls{gap:6px}.photo-editor .photo-live-controls button{padding:8px 10px}}

.photo-redesign .photo-header{display:block;width:100%;max-width:100%;padding:0;margin:0 0 18px}
.photo-redesign .photo-header-row{display:flex;align-items:center;justify-content:space-between;gap:16px;min-width:0}
.photo-redesign .photo-project-buttons{position:relative;display:flex;gap:8px;flex-shrink:0;align-items:center}
.photo-redesign .photo-project-button{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:44px;padding:8px 12px;font-size:15px;white-space:nowrap;background:white;font-weight:400}
.photo-redesign .photo-project-button svg{width:20px;height:20px}
.photo-redesign .photo-project-privacy{position:absolute;right:0;top:calc(100% + 6px);width:min(300px,75vw);padding:10px 12px;background:#213c63;color:white;border-radius:6px;font-size:14px;font-weight:400;line-height:1.5;z-index:5;visibility:hidden;pointer-events:none;box-shadow:0 3px 8px #15283e33}
.photo-redesign .photo-project-buttons:has(#photo-project-save:is(:hover,:focus)) .photo-project-privacy{visibility:visible}
.photo-redesign #photo-project-status{clear:both}
.photo-redesign #photo-project-status:empty{display:none}
@container photo-editor (max-width:560px){.photo-redesign .photo-header-row{flex-direction:column;align-items:flex-start;gap:10px}.photo-redesign .photo-project-buttons{max-width:100%}}
@media(max-width:600px){.photo-redesign .photo-header-row{flex-direction:column;align-items:flex-start;gap:10px}}
.photo-redesign .photo-project-confirm{max-width:min(480px,90vw);border:1px solid #b8c6d8;border-radius:10px;padding:22px}
.photo-redesign .photo-project-confirm::backdrop{background:#15283e99}
.photo-redesign .photo-project-confirm button{margin-right:12px}
.photo-redesign .photo-validation{background:#fff5f2;border:1px solid #d28d7b;border-radius:8px;padding:16px;margin:16px 0;color:#6d2b1d}
.photo-redesign .photo-validation h3{margin-top:0;font-size:18px}
.photo-redesign .photo-validation li{margin-bottom:14px}
.photo-redesign .photo-validation p{margin:6px 0}
.photo-redesign [data-photo-check-error]{outline:2px solid #b74f37;outline-offset:2px}


.photo-redesign .photo-print{display:flex;align-items:center;justify-content:center;gap:10px;min-height:58px;padding:16px 24px;background:#213c63;color:white;border-color:#213c63;font-size:18px}
.photo-redesign .photo-print:hover{background:#315a9b}
.photo-redesign .photo-print svg{width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:1.7}
.photo-redesign .photo-pdf-save{min-height:58px;padding:16px 24px}
@media(max-width:600px){.photo-redesign .photo-print,.photo-redesign .photo-pdf-save{width:100%}}

/* Final document saves are secondary to the print action. */
.photo-redesign .photo-generate{background:#fff;color:#213c63;border:1px solid #b8c6d8;font-size:16px}
.photo-redesign .photo-generate:hover{background:#edf3fb}

.photo-redesign .photo-upload-section{clear:both}

.photo-redesign .photo-bulk{padding:16px;background:#f3f6fb;border:1px solid #b8c6d8;border-radius:8px;margin-top:12px}
.photo-redesign .photo-bulk>label{display:flex;flex-direction:column;gap:8px;margin:12px 0}
.photo-redesign .photo-bulk button{margin:4px}
.photo-redesign .photo-bulk-selected{border:2px solid #7692bd;background:#f7faff}
.photo-redesign .photo-bulk-pick{display:flex;align-items:center;gap:8px;min-height:44px;cursor:pointer}
.photo-redesign .photo-bulk-pick input{width:24px;height:24px}
.photo-redesign .photo-card-header{flex-wrap:wrap}

.photo-redesign .photo-image-dialog{height:94vh;width:min(1400px,96vw)}
.photo-redesign .photo-image-tools{display:flex;gap:8px;align-items:center;flex-wrap:wrap;flex-shrink:0}
.photo-redesign .photo-image-tools button:last-child{margin-left:auto}
.photo-redesign .photo-image-viewport{flex:1;min-height:0;overflow:auto;background:#eef1f5;touch-action:none;overscroll-behavior:contain;padding:12px;cursor:grab}
.photo-redesign .photo-image-viewport img{display:block;max-width:none;max-height:none;object-fit:contain;margin:auto;user-select:none}
.photo-redesign .photo-image-name{font-size:14px;flex-shrink:0}
@media(max-width:600px){.photo-redesign .photo-image-dialog{padding:12px}.photo-redesign .photo-image-tools{gap:6px}.photo-redesign .photo-image-tools button{font-size:14px;padding:8px}}

.photo-redesign [data-page-label]{font-size:13px;font-weight:400;white-space:normal}
.photo-redesign .photo-card-heading{flex-wrap:wrap}
.photo-redesign #photo-pdf-open{min-height:44px;font-size:15px;margin-top:12px}
.photo-redesign .photo-leave-dialog,.photo-redesign .photo-duplicate-dialog{max-width:min(540px,92vw);border:1px solid #b8c6d8;border-radius:10px;padding:20px}
.photo-redesign :is(.photo-leave-dialog,.photo-duplicate-dialog) button{margin:6px}

.photo-redesign .photo-date-control{position:relative;padding-right:70px}
.photo-redesign .photo-date-clear{position:absolute;right:0;top:2px;padding:8px;min-height:44px;font-size:14px}

.photo-redesign .photo-preview-empty{display:flex;flex-direction:column;align-items:center;gap:14px;padding:26px 16px;background:#f2f4f7;border-radius:8px;text-align:center}
.photo-redesign .photo-preview-empty>span{font-size:34px;color:#526b8d}
.photo-redesign .photo-footer{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.photo-redesign .photo-footer>button{width:100%;min-height:58px;padding:12px 8px;font-size:16px;margin:0;white-space:normal}
.photo-redesign .photo-header #photo-close{min-height:44px;margin:0;padding:8px 10px;font-size:15px;white-space:nowrap}
@container photo-editor (max-width:650px){.photo-redesign .photo-footer{grid-template-columns:1fr}}
@media(max-width:650px){.photo-redesign .photo-footer{grid-template-columns:1fr}}

.photo-redesign .photo-project-buttons{flex-wrap:wrap;max-width:100%;flex-shrink:1}
.photo-redesign .photo-meta input::placeholder{color:#B8C2D0;opacity:1;font-weight:400}
.photo-redesign .photo-date-placeholder{color:#B8C2D0}

.photo-redesign .photo-reset-dialog{max-width:min(520px,92vw);border:1px solid #b8c6d8;border-radius:10px;padding:20px}
.photo-redesign .photo-reset-dialog button{margin:6px}
.photo-redesign .photo-reset-confirm{background:#a63737;color:white;border-color:#a63737}
