*{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent}html,body{height:100%;overflow:hidden;background:#000;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;color:#fff}#app{height:100%;display:flex;flex-direction:column}.camera-container{flex:1;position:relative;display:flex;align-items:center;justify-content:center;background:#111;overflow:hidden;min-height:0}.camera-video{width:100%;height:100%;object-fit:cover}.detection-overlay{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none}.scan-guide{position:absolute;inset:10% 5%;pointer-events:none}.guide-corner{position:absolute;width:40px;height:40px;border-color:#fff9;border-style:solid;border-width:0;transition:border-color .3s ease}.guide-tl{top:0;left:0;border-top-width:3px;border-left-width:3px;border-top-left-radius:8px}.guide-tr{top:0;right:0;border-top-width:3px;border-right-width:3px;border-top-right-radius:8px}.guide-bl{bottom:0;left:0;border-bottom-width:3px;border-left-width:3px;border-bottom-left-radius:8px}.guide-br{bottom:0;right:0;border-bottom-width:3px;border-right-width:3px;border-bottom-right-radius:8px}.scan-guide.detected .guide-corner{border-color:#0f0}.scan-status{position:absolute;top:24px;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:8px;padding:10px 20px;background:#000000b3;border-radius:24px;font-size:14px;font-weight:500;transition:background-color .3s ease;z-index:10}.scan-status.detected{background:#00b400cc}.scan-status-icon{font-size:18px}.scan-status-text{white-space:nowrap}.controls{display:flex;flex-direction:column;justify-content:center;align-items:center;padding:20px 24px 28px;background:#000000d9;gap:12px;flex-shrink:0;z-index:100;position:relative}.capture-hint{font-size:14px;color:#ffffffb3}.capture-btn{width:72px;height:72px;border-radius:50%;border:4px solid #fff;background:transparent;cursor:pointer;position:relative;transition:transform .1s ease}.capture-btn:after{content:"";position:absolute;inset:6px;border-radius:50%;background:#fff;transition:transform .1s ease}.capture-btn:active{transform:scale(.95)}.capture-btn:active:after{transform:scale(.9)}.camera-message{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);text-align:center;padding:24px;max-width:320px}.camera-message h2{font-size:20px;font-weight:600;margin-bottom:12px}.camera-message p{font-size:14px;color:#ffffffb3;line-height:1.5;margin-bottom:20px}.camera-message-icon{font-size:48px;margin-bottom:16px;display:block}.btn{display:inline-flex;align-items:center;justify-content:center;padding:12px 24px;border-radius:8px;font-size:16px;font-weight:500;cursor:pointer;border:none;transition:opacity .2s ease,transform .1s ease}.btn:active{transform:scale(.98)}.btn-primary{background:#007aff;color:#fff}.btn-primary:disabled{opacity:.5;cursor:not-allowed}.btn-secondary{background:#ffffff26;color:#fff}.preview-container{flex:1;position:relative;display:flex;flex-direction:column;background:#000}.preview-image-wrapper{flex:1;display:flex;align-items:center;justify-content:center;overflow:hidden;padding:16px}.preview-image{max-width:100%;max-height:100%;object-fit:contain;border-radius:4px}.preview-controls{display:flex;justify-content:space-between;padding:20px 24px;background:#000000d9;gap:16px}.preview-controls .btn{flex:1}.download-success{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);text-align:center;padding:32px;background:#000000e6;border-radius:16px;min-width:280px}.download-success-icon{font-size:64px;margin-bottom:16px;display:block}.download-success h2{font-size:20px;font-weight:600;margin-bottom:8px}.download-success p{font-size:14px;color:#ffffffb3;margin-bottom:24px}.download-error{color:#ff3b30}.spinner{width:32px;height:32px;border:3px solid rgba(255,255,255,.2);border-top-color:#fff;border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.loading-overlay{position:absolute;inset:0;background:#000000b3;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:16px}.loading-text{font-size:14px;color:#fffc}.overlay-canvas{position:absolute;top:0;left:0;width:100%;height:100%;pointer-events:none}.detection-hint{position:absolute;bottom:100px;left:50%;transform:translate(-50%);background:#000000b3;padding:8px 16px;border-radius:20px;font-size:14px;white-space:nowrap}.touchable{-webkit-user-select:none;user-select:none;touch-action:manipulation}.touchable:active{opacity:.8}.screen{position:absolute;inset:0;display:flex;flex-direction:column;overflow:hidden}.screen-enter{animation:fadeIn .2s ease-out}.screen-exit{animation:fadeOut .2s ease-out}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}.adjust-container{flex:1;display:flex;flex-direction:column;background:#000}.adjust-header{padding:16px 20px;text-align:center}.adjust-title{font-size:18px;font-weight:600;margin-bottom:4px}.adjust-hint{font-size:14px;color:#ffffffb3}.adjust-canvas-wrapper{flex:1;position:relative;display:flex;align-items:center;justify-content:center;overflow:hidden;padding:16px}.adjust-image-canvas,.adjust-overlay-canvas{position:absolute;max-width:100%;max-height:100%;object-fit:contain}.adjust-image-canvas{z-index:1}.adjust-overlay-canvas{z-index:2;touch-action:none}.adjust-controls{display:flex;justify-content:space-between;padding:20px 24px;background:#000000d9;gap:16px}.adjust-controls .btn{flex:1}.preview-options{display:flex;justify-content:center;gap:12px;padding:12px 20px;background:#000000e6}.preview-option{display:flex;align-items:center;gap:8px;padding:10px 16px;background:#ffffff1a;border:2px solid transparent;border-radius:8px;color:#fff;font-size:14px;cursor:pointer;transition:all .2s ease}.preview-option.active{border-color:#007aff;background:#007aff33}.preview-option-icon{font-size:18px}.processing-indicator{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);display:flex;flex-direction:column;align-items:center;gap:12px;padding:24px;background:#000c;border-radius:12px}.hidden{display:none!important}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
