.photo-upload{border:2px solid #b8c5c0;background:#f8faf9}
.photo-upload legend{font-size:1rem;font-weight:850;color:var(--green)}
.photo-upload legend span{font-weight:500;color:#62716c}
.photo-help{margin:4px 0 12px;padding:12px 14px;border-radius:10px;background:#e8f0ed;color:#294b42;line-height:1.45}
.photo-pickers{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.file-button{display:grid;place-items:center;min-height:58px;margin:4px 0;padding:10px;background:#e8ecea;border:2px solid #8fa49c;border-radius:12px;color:var(--green);cursor:pointer;font-weight:850;text-align:center}
.file-button:hover,.file-button:focus-within{border-color:var(--green);background:#dfeae6}
.camera-button{background:var(--green);border-color:var(--green);color:#fff}
.camera-button:hover,.camera-button:focus-within{background:#1f5146;color:#fff}
.file-button input{position:absolute;width:1px;height:1px;opacity:0}
.photo-status{min-height:24px;margin:10px 0;padding:9px 11px;border-radius:9px;background:#edf0ee;font-size:.85rem;color:#52645e}
.photo-status[data-state=pending],.photo-status[data-state=uploading]{background:#fff0b8;color:#725600}
.photo-status[data-state=saved]{background:#dcecdf;color:#236133}
.photo-status[data-state=error]{background:#f3d8d3;color:#9b382c}
.photo-preview,.gallery{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.photo-card{display:grid;gap:9px;margin:0;padding:10px;border:1px solid #c8d2ce;border-radius:12px;background:#fff}
.photo-image{position:relative}
.photo-preview img,.gallery img{display:block;width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:9px;background:#dfe4e1}
.photo-state{position:absolute;left:7px;bottom:7px;padding:4px 7px;border-radius:999px;background:#fff0b8;color:#725600;font-size:.7rem;font-weight:850;box-shadow:0 1px 4px #0002}
.photo-state.saved{background:#dcecdf;color:#236133}
fieldset .photo-card label{display:block!important;margin:0;font-size:.82rem;font-weight:800}
fieldset .photo-card label span{font-weight:500;color:#66746f}
fieldset .photo-card textarea{display:block;width:100%;margin-top:5px;min-height:66px;resize:vertical}
.photo-remove{min-height:42px;padding:8px 10px;background:#fff;color:#8c3026;border:1px solid #d9aaa4}
.checks{display:grid;gap:8px;margin-top:8px}
.check{display:flex;align-items:center;gap:8px;margin:0;min-height:44px;font-weight:500}
.check input{width:auto;margin:0}
.completeness{margin:12px 0;padding:0 12px;border-radius:12px;background:#fff}
.completeness p{margin:8px 0}
.error{color:#9b382c}.warning{color:#725600}
.badge.needs_clarification{background:#f3dccb;color:#7b4620}.badge.billable{background:#dcecdf;color:#236133}.badge.invoiced{background:#dfe4e1;color:#43544e}
.gallery{margin:18px 0}.gallery figure{margin:0;padding:8px;border:1px solid #c8d2ce;border-radius:11px;background:#fff}.gallery a{display:block}.gallery figcaption{padding:8px 3px 2px;font-size:.85rem;line-height:1.4}.privacy-note{font-size:.8rem;color:#52645e}
@media(max-width:600px){.photo-preview,.gallery{grid-template-columns:1fr}.photo-pickers{grid-template-columns:1fr}.file-button{min-height:62px}}
