:root{font-family:Arial,'Malgun Gothic',sans-serif;color:#18283d;background:#f3f6fa;font-size:16px;line-height:1.5;color-scheme:light}*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit}button{cursor:pointer;min-height:44px}button:disabled{opacity:.55;cursor:wait}button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid #245bd7;outline-offset:2px}[hidden]{display:none!important}.app{max-width:480px;margin:0 auto;min-height:100vh;background:#f3f6fa}header{padding:28px 22px 20px;background:white;border-bottom:1px solid #dce4ed}.brand{font-weight:700;font-size:12px;color:#245bd7;letter-spacing:1px}h1{font-size:26px;letter-spacing:-1px;margin:14px 0 4px}h2{font-size:17px;margin:0}p{color:#62748a;font-size:12px;margin:6px 0 0;overflow-wrap:anywhere}nav{display:flex;gap:6px;margin-top:22px}nav button{flex:1;padding:8px 2px;font-size:12px;border:0;border-radius:8px;background:#f3f6fa;color:#62748a}nav button.active{background:#245bd7;color:white;font-weight:700}main{padding:20px}.sheet{padding:18px;background:#fff;border:1px solid #dce4ed;border-radius:16px}label{display:block;font-size:12px;font-weight:700;margin-top:16px;min-width:0}input,select,textarea{display:block;width:100%;min-width:0;margin-top:7px;border:1px solid #dce4ed;border-radius:9px;background:#fff;padding:11px 10px;color:#18283d;font-size:16px;min-height:44px}textarea{resize:vertical}.two{display:grid;grid-template-columns:1fr 1fr;gap:12px}.person,.heading{display:flex;justify-content:space-between;align-items:center;gap:10px}.person{margin-bottom:20px}.link{border:0;background:none;color:#245bd7;font-size:12px}.danger{color:#b32727}#tabs{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:16px}#tabs button{padding:8px 10px;border:1px solid #dce4ed;background:white;border-radius:10px;font-size:12px;color:#62748a}#tabs button.active{border-color:#245bd7;color:#245bd7;background:#edf3ff}.scan-row{display:flex;gap:7px;align-items:end}.scan-row input{flex:1;width:0}.scan-row button{background:#f3f6fa;color:#18283d;border:1px solid #dce4ed;border-radius:9px;padding:10px;font-size:12px}.photo-actions{display:flex;gap:7px}.photo-actions label{position:relative;flex:1;text-align:center;padding:12px 5px;border:1px dashed #b4c2d5;border-radius:9px;background:#f3f6fa;color:#526981;margin-top:8px;cursor:pointer;overflow:hidden}.photo-actions input{position:absolute;inset:0;opacity:0;width:100%;height:100%;margin:0;cursor:pointer}.photo-actions label:focus-within{outline:3px solid #245bd7}.preview{display:flex;align-items:center;gap:10px;margin-top:8px}.preview img{width:72px;height:72px;object-fit:cover;border-radius:8px;border:1px solid #dce4ed}.preview button{border:0;background:none;color:#b32727;font-size:12px}.add{width:100%;margin-top:14px;padding:12px;border:1px dashed #245bd7;border-radius:12px;background:#edf3ff;color:#245bd7;font-weight:700}footer{padding:16px 20px 24px;background:white;border-top:1px solid #dce4ed}footer p{text-align:center;font-size:11px;margin-top:10px}.primary{width:100%;border:0;background:#245bd7;color:white;border-radius:12px;padding:14px;font-weight:700}.spaced{margin-top:22px}.filename{background:#edf3ff;color:#18283d;padding:12px;border-radius:10px;overflow-wrap:anywhere}.notice,#status{background:#edf3ff;color:#245bd7;padding:12px;border-radius:10px;margin-top:16px;font-size:13px}#status.error{background:#fff0ef;color:#a32323}.review-row{padding:14px 0;border-bottom:1px solid #dce4ed}.review-row:last-child{border-bottom:0}dialog{width:calc(100% - 32px);max-width:440px;border:1px solid #dce4ed;border-radius:16px;padding:18px}dialog::backdrop{background:#18283dbb}dialog button{background:#f3f6fa;border:1px solid #dce4ed;border-radius:8px}video{width:100%;max-height:50vh;background:#18283d;margin-top:12px;border-radius:10px}@media(max-width:360px){main{padding:14px}.sheet{padding:13px}.two{grid-template-columns:1fr;gap:0}}@media(min-width:600px){.app{margin:24px auto;border:1px solid #dce4ed;border-radius:24px;overflow:hidden;min-height:0}}

/* Intrinsic video aspect ratio: no decorative ROI, no fixed-height letterbox. */
#scanner{width:100%;height:100dvh;max-width:none;max-height:100dvh;margin:0;border:0;border-radius:0;padding:16px;padding-top:max(16px,env(safe-area-inset-top));padding-bottom:max(16px,env(safe-area-inset-bottom));overflow:auto}
#scanner>.heading{position:sticky;top:-16px;background:white;z-index:2;padding:8px 0}
#scanner .scan-layout{display:grid;grid-template-columns:minmax(0,1fr);gap:16px}
#scanner .scan-camera-pane,#scanner .scan-controls{min-width:0}
#scanner .scan-view{margin-top:12px;background:transparent;overflow:visible;border-radius:0}
#scanner video{display:block;margin:0 auto;width:auto;height:auto;max-width:100%;max-height:44dvh;object-fit:contain;border-radius:8px;background:transparent}
#scanner .scan-buttons{display:flex;gap:10px;margin-top:10px}
#scanner .scan-buttons button{flex:1;padding:10px}
#scanner #scan-message{font-size:14px;min-height:44px;margin:14px 0}
#scanner #scan-zoom{padding:0}
#scanner button[aria-pressed="true"]{background:#245bd7;color:white}
@media(orientation:landscape) and (min-width:640px){#scanner .scan-layout{grid-template-columns:minmax(0,1fr) minmax(220px,28%);align-items:start}#scanner video{max-height:65dvh}#scanner .scan-controls{position:sticky;top:64px}#scanner .scan-camera-pane>label{margin-top:0}}

.install{float:right;padding:8px 12px;border:1px solid #245bd7;border-radius:8px}.app{max-width:680px}@media(max-width:700px){.app{width:100%;max-width:none;margin:0;border:0;border-radius:0;min-height:100dvh}header{padding:20px 16px 16px}main{padding:14px}footer{padding:14px 16px max(16px,env(safe-area-inset-bottom))}}@media(display-mode:standalone){.app{min-height:100dvh;margin-top:0;margin-bottom:0}header{padding-top:max(20px,env(safe-area-inset-top))}.install{display:none}}

#photo-reader{max-width:680px;height:94dvh;max-height:94dvh;overflow:hidden;padding:16px}#photo-reader[open]{display:flex;flex-direction:column;gap:12px}#photo-reader>.heading{flex-shrink:0}#photo-reader .reader-body{flex:1;min-height:0;overflow:auto;overscroll-behavior:contain;padding:0 2px 12px}#photo-reader .reader-actions{flex-shrink:0;display:grid;gap:8px;border-top:1px solid #dce4ed;padding-top:12px;padding-bottom:env(safe-area-inset-bottom);background:white}#photo-reader .reader-actions button{width:100%;min-height:48px;font-size:15px;font-weight:700;padding:10px 12px}#photo-reader #read-close{border:2px solid #245bd7;background:#edf3ff;color:#1746ad}#photo-reader .reader-actions p{margin:0;text-align:center;font-size:12px}#photo-reader #read-apply{margin:0;background:#245bd7;color:white}#read-canvas{display:block;max-width:100%;max-height:32dvh;width:auto;height:auto;margin:12px auto;touch-action:none;border:1px solid #dce4ed}#photo-reader .scan-buttons{display:flex;gap:8px}#photo-reader .scan-buttons button{flex:1}#read-message{font-size:14px;margin:14px 0}#read-candidates{display:flex;flex-wrap:wrap;gap:8px}#read-candidates button{padding:8px;overflow-wrap:anywhere;max-width:100%}#read-apply{margin-top:14px}.preview{flex-wrap:wrap}.preview .reread{color:#245bd7}
