:root{color-scheme:light;--ink: #f4f7fb;--muted: #cdd6e1;--line: rgba(255, 255, 255, .22);--ok: #22c55e;--fail: #ef4444}*{box-sizing:border-box}body{margin:0;font-family:Segoe UI,Helvetica Neue,Arial,sans-serif;color:var(--ink);background:#0b111a}.app-root{width:100%;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;touch-action:manipulation}.app-root *{user-select:none;-webkit-user-select:none}.camera-stage{position:relative;width:100vw;height:100vh;overflow:hidden;background:#000}.app-root.is-phone .camera-stage{height:100dvh}.camera-wrap,.camera-wrap video{width:100%;height:100%}.camera-wrap video{display:block;object-fit:cover}.hidden{display:none}.dev-info{position:absolute;top:1rem;left:1rem;z-index:20;padding:.55rem .75rem;border:1px solid var(--line);border-radius:10px;background:#060a128c;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.meta{margin:.2rem 0;color:var(--muted);font-size:.78rem;line-height:1.2}.meta code{color:#fff}.dev-toggle-btn{margin-top:.35rem;border:1px solid rgba(255,255,255,.45);border-radius:8px;padding:.35rem .55rem;font-size:.75rem;font-weight:600;color:#fff;background:#1e293bb8;cursor:pointer}.dev-toggle-btn:disabled{opacity:.45;cursor:not-allowed}.status-icons{position:absolute;top:1rem;right:1rem;z-index:20;display:flex;gap:.55rem}.status-icon{width:2rem;height:2rem;border-radius:999px;border:2px solid currentColor;display:grid;place-items:center;background:#060a1280}.status-icon.ok{color:var(--ok)}.status-icon.fail{color:var(--fail)}.gallery-health-dot{width:.65rem;height:.65rem;border-radius:999px;background:currentColor}.camera-icon{width:.95rem;height:.95rem;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.capture-controls{position:absolute;right:1.25rem;top:50%;transform:translateY(-50%);z-index:20;display:flex;align-items:center;gap:.65rem}.zoom-toggle{width:2.55rem;height:2.55rem;border-radius:999px;border:2px solid rgba(255,255,255,.7);background:#060a1294;color:#fff;display:grid;place-items:center;cursor:pointer}.zoom-toggle svg{width:1rem;height:1rem;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.zoom-toggle:hover:not(:disabled),.zoom-toggle.active{background:#1e293bd9;border-color:#ffffffeb}.zoom-toggle:disabled{opacity:.45;cursor:not-allowed}.capture-button{position:relative;width:4.5rem;height:4.5rem;border-radius:999px;border:4px solid rgba(255,255,255,.92);background:#dc2626;box-shadow:0 12px 34px #00000073;cursor:pointer}.capture-button:hover:not(:disabled){background:#ef4444}.capture-button:disabled{opacity:.55;cursor:not-allowed}.zoom-slider-panel{position:absolute;right:7rem;top:50%;transform:translateY(-50%);z-index:20;width:min(14rem,40vw);padding:.55rem .7rem;border:1px solid rgba(255,255,255,.45);border-radius:10px;background:#060a129e;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.zoom-slider-panel label{font-size:.78rem;color:#e5e7eb}.zoom-slider-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:.3rem;gap:.5rem}.zoom-reset-btn{width:1.8rem;height:1.8rem;border-radius:999px;border:1px solid rgba(255,255,255,.5);background:#1e293bad;color:#fff;display:grid;place-items:center;cursor:pointer;padding:0}.zoom-reset-btn svg{width:.95rem;height:.95rem;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.zoom-reset-btn:hover{background:#334155f2}.zoom-slider{width:100%}.control-overlay{position:absolute;left:1rem;bottom:1rem;z-index:20;display:flex;gap:.55rem;width:min(48rem,calc(100vw - 8rem))}.control-overlay input{flex:1;min-width:8rem;border:1px solid rgba(255,255,255,.45);border-radius:10px;padding:.7rem .8rem;font-size:1rem;color:#fff;background:#060a1247;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.control-overlay input::placeholder{color:#e5e7eb}.overlay-btn{border:1px solid rgba(255,255,255,.55);border-radius:10px;padding:.68rem .9rem;color:#fff;font-weight:600;background:#060a1259;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);cursor:pointer}.overlay-btn:hover:not(:disabled){background:#1e293bb3}.overlay-btn:disabled{opacity:.55;cursor:not-allowed}.upload-btn{border-color:#22c55eb3;background:#15803d59}.danger-btn{border-color:#ef4444bf;background:#7f1d1d80}.status{position:absolute;left:1rem;right:1rem;margin:0;padding:.55rem .7rem;border-radius:8px;font-size:.85rem;font-weight:600;z-index:20}.camera-status{bottom:4.75rem;color:#bbf7d0;background:#052e169e}.camera-status.status-error{color:#fecaca;background:#7f1d1db8}.gallery-modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:40;background:#020617db;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);padding:1rem}.gallery-modal-inner{width:min(1400px,100%);height:100%;margin:0 auto;border:1px solid rgba(255,255,255,.2);border-radius:14px;background:#0f172af2;display:grid;grid-template-rows:auto auto 1fr;gap:.8rem;padding:.9rem}.gallery-modal-header{display:flex;align-items:center;gap:.75rem}.gallery-modal-header h2{margin:0;font-size:1.1rem}.gallery-modal-header p{margin:0;color:var(--muted);font-size:.88rem;flex:1}.gallery-actions{display:flex;gap:.55rem}.empty{color:var(--muted);padding:.25rem}.gallery-grid{min-height:0;overflow:auto;display:grid;gap:.75rem;grid-template-columns:repeat(auto-fill,minmax(170px,1fr))}.gallery-item{position:relative;border:2px solid rgba(255,255,255,.2);border-radius:10px;padding:.45rem;background:#0f172ad9;cursor:pointer}.gallery-item.selected{border-color:#22c55e}.gallery-item img{width:100%;border-radius:7px;aspect-ratio:4 / 3;object-fit:cover}.gallery-item p{margin:.4rem 0 0;font-size:.8rem;word-break:break-all}.item-check{position:absolute;top:.6rem;right:.6rem;width:1.35rem;height:1.35rem;border-radius:999px;border:2px solid rgba(255,255,255,.92);color:#fff;background:#020617a6;display:grid;place-items:center;font-size:.82rem;font-weight:700}.gallery-item.selected .item-check{background:#16a34a;border-color:#16a34a}@media(max-width:640px){.capture-button{width:3.8rem;height:3.8rem}.capture-controls{right:.85rem}.zoom-slider-panel{right:5.45rem;width:min(11.5rem,50vw)}.control-overlay{left:.75rem;right:.75rem;width:auto;bottom:.75rem;flex-wrap:wrap}.control-overlay input{flex-basis:100%}.camera-status{bottom:7.15rem}.gallery-modal{padding:.55rem}.gallery-modal-header{flex-wrap:wrap}}.app-root.is-phone.is-landscape .status-icons{top:.65rem;right:.65rem}.app-root.is-phone.is-landscape .dev-info{top:.65rem;left:.65rem}.app-root.is-phone.is-landscape .capture-button{width:3.4rem;height:3.4rem}.app-root.is-phone.is-landscape .capture-controls{right:.65rem}.app-root.is-phone.is-landscape .zoom-slider-panel{right:4.75rem;width:min(10rem,40vw)}.app-root.is-phone.is-landscape .control-overlay{left:.65rem;right:5rem;bottom:.65rem;width:auto;flex-wrap:nowrap}.app-root.is-phone.is-landscape .control-overlay input{min-width:6rem}.app-root.is-phone.is-landscape .camera-status{left:.65rem;right:5rem;bottom:3.6rem}
