.camera-stage{position:relative;background:#10221b;border-radius:12px;overflow:hidden;min-height:200px;margin:13px 0}
.camera-stage video,.camera-stage .camera-preview{width:100%;height:310px;object-fit:contain;display:block}
.camera-stage [hidden]{display:none!important}
.camera-message{font-size:12px;line-height:1.8;color:var(--muted);margin:10px 0}
.camera-controls{display:flex;gap:8px;align-items:center;justify-content:center;flex-wrap:wrap}
.camera-controls [hidden]{display:none}
.camera-controls button{font-size:13px}
.camera-source{margin-top:15px;border-top:1px solid var(--line);padding-top:10px}
.camera-source summary{cursor:pointer;font-size:13px;color:var(--muted)}
.camera-source input{font-size:13px}
.camera-settings{margin:15px 0;border:1px solid var(--line);border-radius:10px;background:var(--bg)}
.camera-settings summary{padding:13px 15px;cursor:pointer;font-weight:600;font-size:14px}
.camera-settings-body{padding:0 15px 15px}
.camera-toggle{display:flex;align-items:center;justify-content:space-between;padding:10px 0;gap:15px;border-bottom:1px solid var(--line);margin-bottom:10px}
.camera-toggle small{display:block;font-weight:400;font-size:11px;color:var(--muted)}
.camera-toggle input{width:21px;height:21px;accent-color:var(--green);flex-shrink:0}
.download-link{border:1px solid var(--line);border-radius:9px;padding:10px 16px;font-size:14px;display:inline-block}
.photo-stamps{margin-top:14px;padding:14px;border-radius:10px;background:var(--bg)}
.photo-stamps label{margin-bottom:10px}.photo-stamps input[type=checkbox]{accent-color:var(--green);margin-left:7px}
.report-dialog{width:min(1000px,calc(100% - 20px));height:92dvh;max-height:92dvh}
.report-dialog .modal-body{padding:0;height:calc(100% - 84px)}
.report-frame{width:100%;height:100%;border:0;background:white}
@media(max-width:700px){.camera-stage video,.camera-stage .camera-preview{height:260px}}
/* Full viewport camera, including iPhone safe areas; no Fullscreen API required. */
body:has(dialog.camera-full[open]){overflow:hidden}
dialog.camera-full{position:fixed;inset:0;margin:0;width:100%;max-width:none;height:100dvh;max-height:none;border:0;border-radius:0;background:#080b0a;color:#fff;overflow:hidden;--muted:#cbd2ce;--line:#ffffff40}
.camera-full .modal-head{position:absolute;inset:0 0 auto;z-index:3;padding:calc(10px + env(safe-area-inset-top)) 18px 10px;background:linear-gradient(#000b,transparent);border:0}
.camera-full .modal-head h2{font-size:15px}.camera-full .modal-head button{color:white}
.camera-full .modal-body{padding:0;height:100%}.camera-full #photo-form{height:100%}
.camera-full:not(.camera-review) #photo-form>p,.camera-full:not(.camera-review) #photo-form>label,.camera-full:not(.camera-review) #photo-form>.actions{display:none}
.camera-full:not(.camera-review) #camera{position:absolute;inset:0}
.camera-full:not(.camera-review) .camera-stage{position:absolute;inset:0;margin:0;border-radius:0;background:#080b0a}
.camera-full:not(.camera-review) .camera-stage video{width:100%;height:100%;object-fit:cover}
.camera-full .camera-message{position:absolute;bottom:calc(135px + env(safe-area-inset-bottom));left:18px;right:18px;text-align:center;color:#fff;text-shadow:0 1px 4px #000;background:#0006;border-radius:10px;padding:7px;pointer-events:none}
.camera-full .camera-controls{position:absolute;bottom:calc(48px + env(safe-area-inset-bottom));left:0;right:0;min-height:80px;gap:20px}
.camera-full .camera-controls button{background:#0008;color:white;border-color:#ffffff70;min-height:48px}
.camera-full [data-camera=capture]{font-size:0;width:78px;height:78px;border:5px solid white;border-radius:50%;padding:5px;background:white!important;box-shadow:inset 0 0 0 5px #222;order:1;flex-shrink:0}
.camera-full [data-camera=flip]{order:2}.camera-full [data-camera=torch]{order:0}
.camera-full [data-camera=capture]:disabled{opacity:.3}
.camera-full .camera-settings{position:absolute;z-index:4;top:calc(65px + env(safe-area-inset-top));right:14px;max-width:calc(100% - 28px);margin:0;background:#17251fed;color:white;border-color:#ffffff40;border-radius:16px}
.camera-full .camera-settings[open]{width:390px;max-height:calc(100dvh - 250px);overflow:auto}
.camera-full .camera-settings summary{padding:9px 14px}.camera-full .camera-settings small,.camera-full .camera-settings .sub{color:#cbd2ce}
.camera-full .camera-source{position:absolute;z-index:3;bottom:env(safe-area-inset-bottom);left:14px;right:14px;margin:0;padding:5px 10px;background:#15231fec;border:0;border-radius:12px}
.camera-full .camera-source summary{color:white;text-align:center}.camera-full .camera-source[open]{padding:15px}
.camera-full.camera-review{overflow:auto;background:var(--paper);color:var(--ink);--muted:#77837d;--line:#e3e8e2}
.camera-review .modal-head{position:sticky;background:var(--paper);color:var(--ink);padding-top:calc(10px + env(safe-area-inset-top))}.camera-review .modal-head button{color:var(--ink)}
.camera-review .modal-body{height:auto;padding:12px 18px calc(24px + env(safe-area-inset-bottom))}.camera-review #photo-form{height:auto;max-width:800px;margin:auto}
.camera-review .camera-settings,.camera-review .camera-source,.camera-review .camera-message,.camera-review .camera-controls{position:static}
.camera-review .camera-settings{max-width:100%;margin:12px 0}.camera-review .camera-stage{background:#080b0a}.camera-review .camera-stage .camera-preview{height:45dvh;object-fit:contain}
.camera-review [data-camera=capture]{display:none}.camera-review .camera-message{margin:8px 0;color:var(--ink);background:none;text-shadow:none}.camera-review .camera-controls{min-height:0}.camera-review .camera-source{margin-top:12px}.camera-review .actions{position:sticky;bottom:0;background:var(--paper);padding:12px 0;margin-top:10px}
