.app{width:100vw;height:100vh;display:flex;flex-direction:column;background:var(--fracgure-navy);position:relative}.banner{width:100%;background:linear-gradient(135deg,#003b5cf2,#004d75f2);border-bottom:3px solid var(--fracgure-orange);padding:15px 20px;display:flex;justify-content:center;align-items:center;box-shadow:0 4px 20px #0000004d;transition:all .3s ease}.banner:hover{box-shadow:0 6px 30px #ff6b3566}.banner-image{max-height:80px;height:auto;width:auto;max-width:90%;object-fit:contain;transition:all .3s ease}.banner-image:hover{transform:scale(1.05)}@media(max-width:768px){.banner{padding:10px 15px}.banner-image{max-height:60px}}.loading{position:fixed;top:0;left:0;width:100%;height:100%;background:linear-gradient(135deg,var(--fracgure-navy) 0%,var(--fracgure-dark) 100%);display:flex;flex-direction:column;justify-content:center;align-items:center;z-index:1000;color:#fff}.spinner{width:50px;height:50px;border:4px solid rgba(255,255,255,.3);border-top:4px solid var(--fracgure-orange);border-radius:50%;animation:spin 1s linear infinite;margin-bottom:20px}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.loading p{font-size:18px;margin-top:10px}.canvas-container{flex:1;display:flex;justify-content:center;align-items:center;background:var(--fracgure-navy);overflow:hidden;padding:20px;min-height:0}.dual-canvas{display:flex;gap:20px;width:100%;height:100%;justify-content:center;align-items:center}.canvas-wrapper{flex:1;display:flex;flex-direction:column;gap:10px;min-width:0;height:100%;justify-content:center;align-items:center}.canvas-label{color:#fff;font-size:16px;font-weight:600;text-transform:uppercase;letter-spacing:1px;padding:8px 20px;background:#ff6b3533;border-radius:20px;border:1px solid rgba(255,107,53,.5);white-space:nowrap}.output-canvas{width:100%;height:auto;max-height:calc(100vh - 300px);max-width:100%;object-fit:contain;box-shadow:0 10px 60px #00000080,0 0 20px #ff6b354d;border:2px solid rgba(255,107,53,.5);border-radius:8px;transition:all .15s ease}.gallery-warning{position:fixed;bottom:220px;left:50%;transform:translate(-50%);background:linear-gradient(135deg,#ff6b35f2,#ff8555f2);color:#fff;padding:10px 20px;border-radius:20px;font-size:13px;font-weight:600;z-index:98;box-shadow:0 4px 15px #ff6b3566;animation:slideUp .3s ease;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);text-align:center;max-width:90%}@keyframes slideUp{0%{opacity:0;transform:translate(-50%) translateY(20px)}to{opacity:1;transform:translate(-50%) translateY(0)}}.gallery{position:fixed;bottom:90px;left:0;width:100%;padding:10px;display:flex;gap:10px;overflow-x:auto;overflow-y:hidden;z-index:99;scrollbar-width:none;-ms-overflow-style:none;cursor:grab}.gallery::-webkit-scrollbar{display:none}.gallery.dragging{cursor:grabbing;-webkit-user-select:none;user-select:none}.gallery-item{position:relative;min-width:120px;height:120px;flex-shrink:0;animation:slideIn .3s ease;-webkit-tap-highlight-color:transparent}.thumbnail{width:100%;height:100%;border-radius:10px;transition:all .3s ease;box-shadow:0 4px 15px #0000004d;border:3px solid white;object-fit:cover;pointer-events:none}.gallery-item .thumbnail-label{position:absolute;top:4px;left:50%;transform:translate(-50%);background:#000000b3;color:#fff;padding:2px 8px;border-radius:4px;font-size:9px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;pointer-events:none;white-space:nowrap;z-index:5}.gallery-item:hover .thumbnail{border-color:var(--fracgure-orange)}.image-overlay{position:absolute;bottom:0;left:0;width:100%;background:linear-gradient(to top,rgba(0,0,0,.9),rgba(0,0,0,.7),transparent);background:-webkit-linear-gradient(bottom,rgba(0,0,0,.9),rgba(0,0,0,.7),transparent);border-radius:0 0 10px 10px;display:flex;display:-webkit-flex;flex-direction:column;-webkit-flex-direction:column;justify-content:center;-webkit-justify-content:center;align-items:stretch;-webkit-align-items:stretch;gap:4px;padding:8px;animation:fadeIn .2s ease;-webkit-animation:fadeIn .2s ease;z-index:10}.overlay-btn{flex:0 0 auto;-webkit-flex:0 0 auto;padding:6px 10px;border:none;border-radius:6px;cursor:pointer;-webkit-appearance:none;font-size:10px;font-weight:600;display:flex;display:-webkit-flex;align-items:center;-webkit-align-items:center;justify-content:center;-webkit-justify-content:center;gap:4px;transition:all .2s ease;-webkit-transition:all .2s ease;color:#fff;white-space:nowrap;-webkit-tap-highlight-color:transparent;touch-action:manipulation}.print-btn{background:linear-gradient(135deg,var(--fracgure-orange) 0%,#ff8555 100%);background:-webkit-linear-gradient(135deg,var(--fracgure-orange) 0%,#ff8555 100%)}.print-btn:hover{transform:translateY(-2px);-webkit-transform:translateY(-2px);box-shadow:0 4px 12px #ff6b3599}.convert-btn{background:linear-gradient(135deg,#10b981,#059669);background:-webkit-linear-gradient(135deg,#10b981 0%,#059669 100%)}.convert-btn:hover{transform:translateY(-2px);-webkit-transform:translateY(-2px);box-shadow:0 4px 12px #10b98199}.retouch-btn{background:linear-gradient(135deg,#9333ea,#7c3aed);background:-webkit-linear-gradient(135deg,#9333ea 0%,#7c3aed 100%)}.retouch-btn:hover{transform:translateY(-2px);-webkit-transform:translateY(-2px);box-shadow:0 4px 12px #9333ea99}@keyframes slideIn{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.controls{position:fixed;bottom:0;left:0;width:100%;padding:20px;background:linear-gradient(to top,var(--fracgure-navy),rgba(0,59,92,.95),rgba(0,59,92,.7),transparent);display:flex;justify-content:center;align-items:center;gap:15px;flex-wrap:wrap;z-index:100}.btn{padding:12px 28px;font-size:15px;font-weight:600;color:#fff;border:none;border-radius:50px;cursor:pointer;transition:all .3s ease;display:flex;align-items:center;gap:8px;box-shadow:0 4px 15px #0003}.btn:active{transform:translateY(1px)}.btn-primary{background:linear-gradient(135deg,var(--fracgure-orange) 0%,#ff8555 100%)}.btn-primary:hover{transform:translateY(-2px);box-shadow:0 6px 20px #ff6b3599}.btn-secondary{background:linear-gradient(135deg,var(--fracgure-navy) 0%,#004d75 100%)}.btn-secondary:hover{transform:translateY(-2px);box-shadow:0 6px 20px #003b5c99}.btn-upload{background:linear-gradient(135deg,#9b59b6,#8e44ad)}.btn-upload:hover{transform:translateY(-2px);box-shadow:0 6px 20px #9b59b699}.log-empty{text-align:center;color:#999;padding:20px;font-style:italic}.log-entry{margin-bottom:8px;padding:8px 12px;border-radius:6px;background:#fff;border-left:3px solid #ccc;word-wrap:break-word}.log-entry.log-success{border-left-color:#4caf50}.log-entry.log-error{border-left-color:#f44336;background:#ffebee}.log-entry.log-warning{border-left-color:var(--fracgure-orange);background:#fff3e0}.log-timestamp{color:#666;font-size:11px;margin-right:10px}.log-message{color:#333}.btn-clear-logs{padding:8px 16px;background:var(--fracgure-orange);color:#fff;border:none;border-radius:6px;cursor:pointer;font-size:13px;font-weight:600;transition:all .2s}.btn-clear-logs:hover{background:#ff8555;transform:translateY(-1px)}.sidebar{position:fixed;top:0;right:0;width:400px;max-width:90vw;height:100vh;background:#fff;box-shadow:-4px 0 20px #0000004d;display:flex;flex-direction:column;z-index:300;animation:slideInFromRight .3s cubic-bezier(.4,0,.2,1)}@keyframes slideInFromRight{0%{transform:translate(100%)}to{transform:translate(0)}}.sidebar-header{background:var(--fracgure-navy);color:#fff;padding:0;display:flex;justify-content:space-between;align-items:center;border-bottom:2px solid var(--fracgure-orange)}.sidebar-tabs{display:flex;flex:1}.sidebar-tab{flex:1;padding:15px 20px;background:transparent;border:none;color:#ffffffb3;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:8px;font-weight:600;font-size:14px;transition:all .2s;border-bottom:3px solid transparent}.sidebar-tab:hover{background:#ffffff1a;color:#fff}.sidebar-tab.active{background:#ff6b3533;color:#fff;border-bottom-color:var(--fracgure-orange)}.sidebar-close{background:transparent;border:none;color:#fff;cursor:pointer;padding:15px 20px;display:flex;align-items:center;justify-content:center;transition:background .2s}.sidebar-close:hover{background:#ffffff1a}.sidebar-content{flex:1;overflow-y:auto;padding:20px;background:#f8f9fa}.sidebar-section{background:#fff;padding:15px;border-radius:8px;margin-bottom:15px;border-left:3px solid var(--fracgure-orange)}.camera-section{border-left-color:var(--fracgure-navy)}.section-title{margin:0 0 12px;color:var(--fracgure-navy);font-size:14px;font-weight:600}.section-header{margin-bottom:12px}.toggle-label{display:flex;align-items:center;gap:8px;cursor:pointer;font-weight:600;color:var(--fracgure-navy);font-size:14px}.toggle-label input[type=checkbox]{width:18px;height:18px;cursor:pointer;accent-color:var(--fracgure-orange)}.param-control{margin-bottom:15px}.param-control:last-child{margin-bottom:0}.param-control label{display:block;font-size:13px;color:#555;margin-bottom:8px;font-weight:500}.param-value{display:inline-block;min-width:30px;padding:2px 8px;background:var(--fracgure-orange);color:#fff;border-radius:4px;font-weight:700;margin-left:8px;font-size:12px}.param-hint{display:inline-block;margin-left:8px;font-size:11px;color:#999;font-style:italic}.param-control input[type=range]{width:100%;height:6px;border-radius:3px;background:#e0e0e0;outline:none;-webkit-appearance:none;-moz-appearance:none;appearance:none}.param-control input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:18px;height:18px;border-radius:50%;background:var(--fracgure-orange);cursor:pointer;transition:all .2s;border:2px solid white;box-shadow:0 2px 4px #0003}.param-control input[type=range]::-webkit-slider-thumb:hover{transform:scale(1.2);box-shadow:0 3px 6px #ff6b3566}.param-control input[type=range]::-moz-range-thumb{width:18px;height:18px;border-radius:50%;background:var(--fracgure-orange);cursor:pointer;transition:all .2s;border:2px solid white;box-shadow:0 2px 4px #0003}.param-control input[type=range]::-moz-range-thumb:hover{transform:scale(1.2);box-shadow:0 3px 6px #ff6b3566}.btn-sidebar{width:100%;padding:12px 20px;border:none;border-radius:8px;cursor:pointer;font-size:14px;font-weight:600;display:flex;align-items:center;justify-content:center;gap:8px;transition:all .3s ease}.btn-camera{background:linear-gradient(135deg,var(--fracgure-navy) 0%,#004d75 100%);color:#fff;box-shadow:0 4px 10px #003b5c4d}.btn-camera:hover{transform:translateY(-2px);box-shadow:0 6px 15px #003b5c80}.btn-camera:active{transform:translateY(0)}.camera-select{width:100%;padding:12px 40px 12px 16px;border:2px solid var(--fracgure-navy);border-radius:8px;background:#fff;color:var(--fracgure-navy);font-size:14px;font-weight:600;cursor:pointer;transition:all .3s ease;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml;charset=UTF-8,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23003B5C' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpolyline points='6 9 12 15 18 9'%3e%3c/polyline%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right 12px center;background-size:20px;box-shadow:0 2px 8px #003b5c1a}.camera-select:hover{border-color:var(--fracgure-orange);box-shadow:0 4px 12px #ff6b3533}.camera-select:focus{outline:none;border-color:var(--fracgure-orange);box-shadow:0 0 0 3px #ff6b3533}.camera-select:disabled{opacity:.5;cursor:not-allowed;background-color:#f5f5f5}.camera-select option{padding:10px;font-weight:500}.gemini-prompt-input{width:100%;padding:12px 16px;border:2px solid var(--fracgure-navy);border-radius:8px;background:#fff;color:var(--fracgure-navy);font-size:14px;font-family:Monaco,Menlo,Courier New,monospace;line-height:1.5;resize:vertical;transition:all .3s ease;box-shadow:0 2px 8px #003b5c1a}.gemini-prompt-input:hover{border-color:var(--fracgure-orange);box-shadow:0 4px 12px #ff6b3533}.gemini-prompt-input:focus{outline:none;border-color:var(--fracgure-orange);box-shadow:0 0 0 3px #ff6b3533}.logs-container{flex:1;padding:15px;background:#f8f9fa;font-family:Monaco,Menlo,Courier New,monospace;font-size:13px;overflow-y:auto;max-height:calc(100vh - 200px)}.sidebar-footer{padding:15px 20px;background:#fff;border-top:1px solid #e0e0e0;display:flex;justify-content:center}.btn-reset{padding:10px 20px;background:var(--fracgure-navy);color:#fff;border:none;border-radius:6px;cursor:pointer;font-size:14px;font-weight:600;transition:all .2s}.btn-reset:hover{background:#004d75;transform:translateY(-1px);box-shadow:0 4px 10px #003b5c4d}@media(max-width:768px){.controls{padding:12px 10px;gap:8px;flex-wrap:wrap}.btn{padding:12px 16px;font-size:14px;flex:1;min-width:calc(50% - 8px)}.btn-upload{flex:1;min-width:calc(50% - 8px)}.btn-secondary{width:100%;flex:none}.gallery{bottom:120px;padding:8px;height:140px}.gallery-item{min-width:110px;height:110px}.thumbnail{width:100%;height:100%}.sidebar{width:100vw;max-width:100vw}.sidebar-content{padding:15px}.sidebar-section{padding:12px}.sidebar-tab{padding:12px 15px;font-size:13px}.logs-container{max-height:calc(100vh - 150px)}.canvas-container{padding:10px 10px 5px}.dual-canvas{flex-direction:column;gap:15px}.canvas-wrapper{max-width:100%;width:100%;height:auto}.canvas-label{font-size:13px;padding:6px 14px}.output-canvas{max-height:calc(40vh - 100px);width:100%}.gallery-warning{bottom:270px;font-size:10px;padding:6px 12px;max-width:90%;white-space:normal;line-height:1.3}.image-overlay{padding:6px;gap:4px}.overlay-btn{padding:6px 10px;font-size:10px}.overlay-btn svg{width:12px;height:12px}}@media(max-width:480px){.dual-canvas{gap:10px}.canvas-label{font-size:12px;padding:5px 12px}.output-canvas{max-height:calc(35vh - 80px)}.gallery{bottom:115px;height:130px}.gallery-item{min-width:100px;height:100px}.gallery-warning{bottom:255px;font-size:9px;padding:5px 10px}.controls{padding:10px 8px;gap:6px}.btn{padding:10px 14px;font-size:13px}}@media(min-width:769px)and (max-width:1024px){.dual-canvas{gap:15px}.output-canvas{max-height:calc(50vh - 100px)}.gallery{bottom:100px;height:150px}.gallery-item{min-width:140px;height:140px}.controls{padding:20px;gap:12px}}.retouch-modal-overlay{position:fixed;top:0;left:0;width:100vw;height:100vh;background:#000000d9;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);display:flex;justify-content:center;align-items:center;z-index:500;animation:fadeIn .3s ease;overflow-y:auto;padding:20px;box-sizing:border-box}.retouch-modal{background:#fff;border-radius:20px;width:90%;max-width:900px;max-height:90vh;overflow:hidden;box-shadow:0 20px 60px #00000080;animation:slideUp .3s ease;display:flex;flex-direction:column;position:relative;-webkit-overflow-scrolling:touch}.retouch-modal-header{background:linear-gradient(135deg,var(--fracgure-navy) 0%,#004d75 100%);color:#fff;padding:20px 30px;display:flex;justify-content:space-between;align-items:center;border-bottom:3px solid var(--fracgure-orange)}.retouch-modal-header h2{margin:0;font-size:24px;font-weight:700}.modal-close{background:#fff3;border:none;border-radius:50%;width:40px;height:40px;display:flex;align-items:center;justify-content:center;color:#fff;cursor:pointer;transition:all .2s}.modal-close:hover{background:#ffffff4d;transform:rotate(90deg)}.retouch-progress{padding:40px;text-align:center}.progress-bar{width:100%;height:8px;background:#e0e0e0;border-radius:10px;overflow:hidden;margin-bottom:20px}.progress-fill{height:100%;background:linear-gradient(90deg,var(--fracgure-orange) 0%,#ff8555 100%);border-radius:10px;transition:width .3s ease;animation:pulse 1.5s ease-in-out infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.7}}.progress-text{font-size:16px;color:var(--fracgure-navy);font-weight:600;margin:0}.retouch-error{padding:40px;text-align:center}.retouch-error p{font-size:16px;color:#f44336;margin-bottom:20px}.btn-error-close{padding:12px 30px;background:var(--fracgure-navy);color:#fff;border:none;border-radius:8px;font-size:14px;font-weight:600;cursor:pointer;transition:all .2s}.btn-error-close:hover{background:#004d75;transform:translateY(-2px)}.retouch-comparison{flex:1;display:flex;flex-direction:column;overflow:hidden}.comparison-container{flex:1;padding:30px;overflow:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain}.comparison-images{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-bottom:20px}.comparison-images img{width:100%;height:auto;max-height:60vh;object-fit:contain;border-radius:12px;border:3px solid #e0e0e0;box-shadow:0 4px 15px #0000001a;transition:all .3s}.comparison-enhanced{border-color:var(--fracgure-orange)!important}.comparison-images img:hover{transform:scale(1.02);box-shadow:0 6px 20px #00000026}.comparison-labels{display:grid;grid-template-columns:1fr 1fr;gap:20px;text-align:center}.comparison-labels span{font-size:14px;font-weight:600;color:var(--fracgure-navy);text-transform:uppercase;letter-spacing:1px}.retouch-actions{padding:20px 30px;background:#f8f9fa;border-top:1px solid #e0e0e0;display:flex;gap:10px;justify-content:flex-end;flex-wrap:wrap}.retouch-actions button{padding:12px 24px;border:none;border-radius:8px;font-size:14px;font-weight:600;cursor:pointer;transition:all .2s;white-space:nowrap}.btn-download-enhanced{background:linear-gradient(135deg,var(--fracgure-orange) 0%,#ff8555 100%);color:#fff}.btn-download-enhanced:hover{transform:translateY(-2px);box-shadow:0 4px 15px #ff6b3566}.btn-add-gallery{background:linear-gradient(135deg,#9333ea,#7c3aed);color:#fff}.btn-add-gallery:hover{transform:translateY(-2px);box-shadow:0 4px 15px #9333ea66}.btn-close-modal{background:#e0e0e0;color:#666}.btn-close-modal:hover{background:#d0d0d0}@media(max-width:768px){.retouch-modal-overlay{padding:30px 15px 15px;align-items:flex-start}.retouch-modal{width:100%;max-width:100%;max-height:85vh;border-radius:16px;margin:0 auto}.retouch-modal-header{padding:15px 18px}.retouch-modal-header h2{font-size:18px}.modal-close{width:32px;height:32px}.comparison-container{padding:20px 15px}.comparison-images{grid-template-columns:1fr;gap:15px}.comparison-images img{max-height:45vh}.comparison-labels{grid-template-columns:1fr;gap:15px}.comparison-labels span{font-size:12px}.retouch-actions{flex-direction:column;padding:15px 18px;gap:8px}.retouch-actions button{width:100%;padding:14px 20px;font-size:14px}.retouch-progress{padding:20px 15px}.progress-text{font-size:13px}.retouch-error{padding:20px 15px}.retouch-error p{font-size:13px}}@media(max-width:480px){.retouch-modal-overlay{padding:20px 10px 10px}.retouch-modal{max-height:88vh;border-radius:12px}.retouch-modal-header{padding:12px 15px}.retouch-modal-header h2{font-size:16px}.modal-close{width:28px;height:28px}.comparison-container{padding:15px 12px}.comparison-images{gap:12px}.comparison-images img{max-height:40vh}.comparison-labels{gap:12px}.comparison-labels span{font-size:11px}.retouch-actions{padding:12px 15px}.retouch-actions button{padding:12px 18px;font-size:13px}}*{margin:0;padding:0;box-sizing:border-box}:root{--fracgure-orange: #FF6B35;--fracgure-navy: #003B5C;--fracgure-dark: #001f3d;--fracgure-light: #f5f5f5}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overflow:hidden;background:var(--fracgure-light)}#root{width:100vw;height:100vh}
