*{box-sizing:border-box;margin:0;padding:0}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:#f5f5f5;color:#333;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}#root{min-height:100vh}button{border:none;border-radius:6px;cursor:pointer;font-size:14px;font-weight:500;padding:10px 20px;transition:all .2s ease}button:disabled{cursor:not-allowed;opacity:.6}button:hover:not(:disabled){transform:translateY(-1px)}input,textarea{border:2px solid #e1e5e9;border-radius:6px;font-size:14px;padding:12px;transition:border-color .2s ease}input:focus,textarea:focus{border-color:#007bff;outline:none}.container{margin:0 auto;max-width:1200px;padding:0 20px}.loading-spinner{animation:spin 1s linear infinite;border:3px solid #f3f3f3;border-radius:50%;border-top-color:#007bff;display:inline-block;height:20px;width:20px}.App{display:flex;flex-direction:column;min-height:100vh}@media (max-width:1024px){.container{padding:0 20px}button{font-size:16px;min-height:44px;padding:12px 20px}}@media (max-width:768px){.container{padding:0 15px}button{font-size:16px;padding:12px 24px}}@media (max-width:480px){.container{padding:0 10px}button{font-size:16px;min-height:44px;padding:14px 20px}}.login-container{align-items:center;background:linear-gradient(135deg,#667eea,#764ba2);display:flex;justify-content:center;min-height:100vh;padding:20px}.login-box{background:#fff;border-radius:10px;box-shadow:0 15px 35px #0000001a;max-width:400px;padding:40px;width:100%}.login-box h1{color:#333;font-size:28px;font-weight:600;margin-bottom:10px;text-align:center}.login-box h2{color:#666;font-size:20px;font-weight:400;margin-bottom:30px;text-align:center}.login-form{gap:20px}.form-group,.login-form{display:flex;flex-direction:column}.form-group{gap:8px}.form-group input{border:2px solid #e1e5e9;border-radius:6px;font-size:16px;padding:12px;transition:border-color .2s ease}.form-group input:focus{border-color:#667eea;outline:none}.error-message{background-color:#f8d7da;border:1px solid #f5c6cb;border-radius:6px;color:#721c24;font-size:14px;padding:12px}.submit-button{background:linear-gradient(135deg,#667eea,#764ba2);border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:16px;font-weight:500;margin-top:10px;padding:14px;transition:all .2s ease}.submit-button:hover:not(:disabled){box-shadow:0 5px 15px #667eea66;transform:translateY(-2px)}.submit-button:disabled{cursor:not-allowed;opacity:.7;transform:none}.toggle-mode{margin-top:20px;text-align:center}.toggle-mode p{color:#666;font-size:14px}.link-button{background:none;border:none;color:#667eea;cursor:pointer;font-size:14px;padding:0;text-decoration:underline}.link-button:hover{color:#764ba2;transform:none}@media (max-width:480px){.login-container{padding:15px}.login-box{padding:30px 20px}.login-box h1{font-size:24px}.login-box h2{font-size:18px}.form-group input{font-size:16px}}.upload-container{background-color:#f8f9fa;min-height:100vh}.upload-header{align-items:center;background:linear-gradient(135deg,#667eea,#764ba2);box-shadow:0 2px 10px #0000001a;color:#fff;display:flex;justify-content:space-between;padding:20px 40px}.upload-header h1{font-size:24px;font-weight:600}.usage-info{background:#ffffff1a;border-radius:4px;color:gold!important;font-size:12px!important;font-weight:600!important;padding:4px 8px}.progress-tip{color:#666;display:block;font-size:12px;font-style:italic;margin-top:10px;text-align:center}.logout-button,.payment-button,.settings-button{background:#fff3;border:1px solid #ffffff4d;color:#fff;font-size:14px;padding:8px 16px}.payment-button{animation:pulse 2s infinite;background:#ffc1074d;border-color:#ffc10780}@keyframes pulse{0%{opacity:.8}50%{opacity:1}to{opacity:.8}}.logout-button:hover,.payment-button:hover,.settings-button:hover{background:#ffffff4d;transform:translateY(-1px)}.payment-button:hover{background:#ffc10780}.upload-main{margin:0 auto;max-width:800px;padding:40px}.upload-main h2{color:#333;font-size:28px;font-weight:500;margin-bottom:40px;text-align:center}.upload-area{background-color:#fafbfc;border:3px dashed #d1d3d4;border-radius:12px;margin-bottom:30px;padding:60px 40px;position:relative;text-align:center;transition:all .3s ease}.upload-area:hover{background-color:#f8f9ff;border-color:#667eea}.upload-area.drag-over{background-color:#e8f0fe;border-color:#667eea;transform:scale(1.02)}.upload-placeholder{align-items:center;display:flex;flex-direction:column;gap:20px}.upload-icon{font-size:48px;opacity:.6}.upload-placeholder p{color:#666;font-size:18px;margin:0}.file-input{display:none}.file-input-label{background:linear-gradient(135deg,#667eea,#764ba2);border-radius:6px;color:#fff;cursor:pointer;font-weight:500;padding:12px 24px;transition:all .2s ease}.file-input-label:hover{box-shadow:0 5px 15px #667eea66;transform:translateY(-2px)}.preview-container{display:inline-block;max-width:100%;position:relative}.preview-image{border-radius:8px;box-shadow:0 4px 12px #00000026;max-height:400px;max-width:100%}.clear-button{align-items:center;background:#ffffffe6;border:none;border-radius:50%;color:#dc3545;cursor:pointer;display:flex;font-size:16px;font-weight:700;height:30px;justify-content:center;position:absolute;right:10px;top:10px;transition:all .2s ease;width:30px}.clear-button:hover{background:#dc3545;color:#fff;transform:scale(1.1)}.file-info{background:#fff;border-radius:8px;box-shadow:0 2px 8px #0000001a;margin-bottom:30px;padding:20px}.file-info p{color:#666;margin:5px 0}.action-buttons{margin-bottom:30px}.analyze-button{align-items:center;background:linear-gradient(135deg,#28a745,#20c997);border-radius:8px;color:#fff;display:flex;font-size:18px;font-weight:500;gap:10px;justify-content:center;min-width:200px;padding:16px 32px}.analyze-button:hover:not(:disabled){box-shadow:0 5px 15px #28a74566;transform:translateY(-2px)}.analyze-button:disabled{background:#6c757d;cursor:not-allowed;transform:none}.analysis-progress{background:#fff;border-radius:8px;box-shadow:0 2px 8px #0000001a;padding:20px;text-align:center}.analysis-progress p{color:#666;font-size:16px;margin-bottom:15px}.progress-bar{background-color:#e9ecef;border-radius:4px;height:8px;overflow:hidden;width:100%}@keyframes progressAnimation{0%{width:0}25%{width:30%}50%{width:60%}75%{width:85%}to{width:100%}}.progress-fill{animation:progressAnimation 2s ease-out infinite;background:linear-gradient(90deg,#28a745,#20c997);height:100%;transition:all .3s ease;width:0}@media (max-width:768px){.upload-header{flex-direction:column;gap:10px;padding:15px 20px;text-align:center}.upload-main{padding:20px}.upload-main h2{font-size:24px}.upload-area{padding:40px 20px}.upload-placeholder p{font-size:16px}.analyze-button{font-size:16px;min-width:160px;padding:14px 24px}}@media (max-width:480px){.upload-main{padding:15px}.upload-area{padding:30px 15px}.upload-icon{font-size:36px}.upload-placeholder p{font-size:14px}}.results-container{background-color:#f8f9fa;min-height:100vh}.results-header{align-items:center;background:linear-gradient(135deg,#667eea,#764ba2);box-shadow:0 2px 10px #0000001a;color:#fff;display:flex;justify-content:space-between;padding:20px 40px}.results-header h1{font-size:24px;font-weight:600}.results-main{padding:30px}.results-layout{grid-gap:30px;display:grid;gap:30px;grid-template-columns:1fr 1fr;margin:0 auto;max-width:1400px}.analysis-section,.original-image-section{background:#fff;border-radius:12px;box-shadow:0 4px 20px #00000014;padding:30px}.analysis-section h2,.original-image-section h2{color:#333;font-size:24px;font-weight:600;margin-bottom:20px;text-align:center}.image-container{align-items:center;display:flex;justify-content:center;min-height:400px}.original-image{border-radius:8px;box-shadow:0 4px 15px #00000026;max-height:500px;max-width:100%}.stats-summary{grid-gap:15px;background:#f8f9ff;border-radius:8px;display:grid;gap:15px;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));margin-bottom:30px;padding:20px}.stat-item{text-align:center}.stat-item label{color:#666;display:block;font-size:12px;font-weight:500;letter-spacing:.5px;margin-bottom:5px;text-transform:uppercase}.stat-item span{color:#333;display:block;font-size:24px;font-weight:600}.transcription-section{margin-bottom:30px}.transcription-section h3{color:#333;font-size:18px;font-weight:500;margin-bottom:15px}.transcription-text{background:#f8f9fa;border-left:4px solid #667eea;border-radius:8px;color:#333;font-size:16px;line-height:1.6;padding:20px}.errors-section h3{color:#333;font-size:18px;font-weight:500;margin-bottom:20px}.errors-list{display:flex;flex-direction:column;gap:15px;max-height:400px;overflow-y:auto;padding-right:10px}.error-item{background:#fff;border:1px solid #e9ecef;border-radius:8px;padding:15px;transition:all .2s ease}.error-item:hover{border-color:#667eea;box-shadow:0 2px 8px #667eea1a}.error-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:10px}.character-comparison{align-items:center;display:flex;gap:10px}.original-char,.suggested-char{border-radius:4px;font-size:20px;font-weight:600;padding:5px 10px}.original-char{background:#fff3cd;border:1px solid #ffeaa7;color:#856404}.suggested-char{background:#d4edda;border:1px solid #c3e6cb;color:#155724}.arrow{color:#6c757d;font-weight:700}.confidence-badge{border-radius:12px;color:#fff;font-size:11px;font-weight:600;padding:4px 8px;text-transform:uppercase}.error-details{color:#666;display:flex;flex-direction:column;font-size:14px;gap:5px}.error-context,.error-type{line-height:1.4}.no-errors-message{background:#d4edda;border:1px solid #c3e6cb;border-radius:8px;color:#155724;padding:20px;text-align:center}.no-errors-message p{font-size:14px;line-height:1.5;margin:0 0 10px}.no-errors-message p:last-child{font-size:12px;margin-bottom:0;opacity:.8}.action-buttons{display:flex;gap:15px;justify-content:center;margin-top:30px}.new-analysis-button{background:linear-gradient(135deg,#667eea,#764ba2);border-radius:6px;color:#fff;font-size:16px;font-weight:500;padding:12px 24px}.new-analysis-button:hover{box-shadow:0 5px 15px #667eea66;transform:translateY(-2px)}.print-button{background:#6c757d;border-radius:6px;color:#fff;font-size:16px;font-weight:500;padding:12px 24px}.print-button:hover{background:#5a6268;transform:translateY(-2px)}.errors-list::-webkit-scrollbar{width:6px}.errors-list::-webkit-scrollbar-track{background:#f1f1f1;border-radius:3px}.errors-list::-webkit-scrollbar-thumb{background:#c1c1c1;border-radius:3px}.errors-list::-webkit-scrollbar-thumb:hover{background:#a8a8a8}@media (max-width:1024px){.results-layout{gap:20px;grid-template-columns:1fr}.analysis-section,.original-image-section{padding:20px}.stats-summary{grid-template-columns:repeat(3,1fr)}}@media (max-width:768px){.results-header{flex-direction:column;gap:10px;padding:15px 20px;text-align:center}.results-main{padding:20px}.analysis-section h2,.original-image-section h2{font-size:20px}.stats-summary{gap:10px;grid-template-columns:1fr;padding:15px}.action-buttons{align-items:center;flex-direction:column}.new-analysis-button,.print-button{max-width:250px;width:100%}}@media (max-width:480px){.analysis-section,.original-image-section,.results-main{padding:15px}.character-comparison{flex-wrap:wrap;gap:5px}.original-char,.suggested-char{font-size:16px;padding:4px 8px}.error-header{align-items:flex-start;flex-direction:column;gap:10px}}@media print{.action-buttons,.results-header{display:none}.results-layout{grid-template-columns:1fr}.analysis-section,.original-image-section{border:1px solid #ddd;box-shadow:none}}.settings-container{background-color:#f8f9fa;min-height:100vh}.settings-header{align-items:center;background:linear-gradient(135deg,#667eea,#764ba2);box-shadow:0 2px 10px #0000001a;color:#fff;display:flex;justify-content:space-between;padding:20px 40px}.settings-header h1{font-size:24px;font-weight:600;margin:0}.settings-main{margin:0 auto;max-width:800px;padding:40px 20px}.settings-section{background:#fff;border-radius:12px;box-shadow:0 4px 20px #00000014;margin-bottom:30px;padding:30px}.settings-section h2{align-items:center;color:#333;display:flex;font-size:20px;font-weight:600;gap:8px;margin-bottom:10px}.section-description{color:#666;line-height:1.6;margin-bottom:25px}.section-description a{color:#667eea;text-decoration:none}.section-description a:hover{text-decoration:underline}.form-group{margin-bottom:25px}.form-group label{color:#333;display:block;font-size:14px;font-weight:500;margin-bottom:8px}.api-key-input{align-items:center;display:flex;gap:8px}.api-key-field{border:2px solid #e1e5e9;border-radius:6px;flex:1 1;font-family:Courier New,monospace;font-size:14px;padding:12px;transition:border-color .2s ease}.api-key-field:focus{border-color:#667eea;outline:none}.api-key-display{-webkit-touch-callout:none!important;-webkit-tap-highlight-color:transparent!important;align-items:center;background:#f8f9fa;border:2px solid #e1e5e9;border-radius:6px;display:flex;flex:1 1;gap:10px;min-height:44px;padding:12px;pointer-events:none;position:relative;user-select:none!important;-webkit-user-select:none!important;-moz-user-select:none!important;-ms-user-select:none!important}.api-key-display:before{background:#0000;bottom:0;content:"";left:0;pointer-events:auto;position:absolute;right:0;top:0;z-index:10}.api-key-display *{-webkit-touch-callout:none!important;-webkit-tap-highlight-color:transparent!important;-webkit-user-select:none!important;user-select:none!important}.masked-key{color:#666;font-family:Courier New,monospace;font-size:14px;letter-spacing:2px;pointer-events:none;user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.key-info{color:#999;font-size:12px;font-style:italic}.toggle-visibility{background:#f8f9fa;border:2px solid #e1e5e9;border-radius:6px;cursor:pointer;font-size:16px;padding:12px;transition:all .2s ease}.toggle-visibility:hover{background:#e9ecef}.test-button{background:linear-gradient(135deg,#28a745,#20c997);border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:14px;font-weight:500;padding:12px 20px;transition:all .2s ease}.test-button:hover:not(:disabled){box-shadow:0 3px 12px #28a7454d;transform:translateY(-1px)}.test-button:disabled{background:#6c757d;cursor:not-allowed;transform:none}.help-text{color:#666;display:block;font-size:12px;margin-top:5px}.language-select{background:#fff;border:2px solid #e1e5e9;border-radius:6px;cursor:pointer;font-size:14px;padding:12px;width:100%}.language-select:focus{border-color:#667eea;outline:none}.checkbox-label{align-items:center;cursor:pointer;display:flex;font-weight:400;gap:8px}.checkbox-label input[type=checkbox]{cursor:pointer;height:18px;width:18px}.actions{margin:40px 0;text-align:center}.save-button{background:linear-gradient(135deg,#667eea,#764ba2);border:none;border-radius:8px;color:#fff;cursor:pointer;font-size:16px;font-weight:500;min-width:150px;padding:16px 32px;transition:all .2s ease}.save-button:hover:not(:disabled){box-shadow:0 5px 15px #667eea66;transform:translateY(-2px)}.save-button:disabled{cursor:not-allowed;opacity:.7;transform:none}.message{border-radius:8px;font-weight:500;margin:20px 0;padding:15px;text-align:center}.message.success{background:#d4edda;border:1px solid #c3e6cb;color:#155724}.message.error{background:#f8d7da;border:1px solid #f5c6cb;color:#721c24}.message.info{background:#d1ecf1;border:1px solid #bee5eb;color:#0c5460}.info-section{background:#f8f9ff;border:1px solid #e6f0ff;border-radius:8px;margin-top:30px;padding:20px}.info-section h3{color:#333;font-size:16px;font-weight:600;margin-bottom:15px}.info-section ul{list-style:none;margin:0;padding:0}.info-section li{color:#555;font-size:14px;padding:5px 0}.info-section li strong{color:#333}.demo-mode-info{background:#fff3cd;border:1px solid #ffeaa7;border-radius:8px;margin-bottom:20px;padding:15px}.demo-mode-info h3{color:#856404;font-size:16px;font-weight:600;margin-bottom:10px}.demo-mode-info p{color:#856404;font-size:14px;margin:5px 0}.upgrade-notice{color:#dc3545!important;font-weight:600!important}@media (max-width:768px){.settings-header{flex-direction:column;gap:15px;padding:15px 20px;text-align:center}.header-actions{flex-direction:column;gap:10px;width:100%}.settings-main{padding:20px 15px}.settings-section{padding:20px}.api-key-input{align-items:stretch;flex-direction:column}.test-button,.toggle-visibility{width:100%}}@media (max-width:480px){.settings-main{padding:15px 10px}.settings-section{padding:15px}.settings-section h2{font-size:18px}}.payment-container{background-color:#f8f9fa;min-height:100vh}.payment-header{align-items:center;background:linear-gradient(135deg,#667eea,#764ba2);box-shadow:0 2px 10px #0000001a;color:#fff;display:flex;justify-content:space-between;padding:20px 40px}.payment-header h1{font-size:24px;font-weight:600;margin:0}.header-actions{align-items:center;display:flex;gap:20px}.back-button{background:#fff3;border:1px solid #ffffff4d;border-radius:6px;color:#fff;cursor:pointer;font-size:14px;padding:8px 16px;transition:all .2s ease}.back-button:hover{background:#ffffff4d;transform:translateY(-1px)}.user-info{align-items:center;display:flex;gap:15px}.user-info span{font-size:14px}.logout-button{background:#fff3;border:1px solid #ffffff4d;border-radius:6px;color:#fff;cursor:pointer;font-size:14px;padding:8px 16px;transition:all .2s ease}.logout-button:hover{background:#ffffff4d;transform:translateY(-1px)}.payment-main{margin:0 auto;max-width:1000px;padding:40px 20px}.usage-status{background:#fff;border-radius:12px;box-shadow:0 4px 20px #00000014;margin-bottom:30px;padding:25px;text-align:center}.usage-status h2{color:#333;font-size:20px;font-weight:600;margin-bottom:15px}.usage-info{color:#666;font-size:16px;margin:10px 0}.usage-info strong{color:#667eea;font-size:18px}.upgrade-notice{background:#f8d7da;border-radius:6px;color:#dc3545;font-weight:600;margin-top:15px;padding:10px}.pricing-section{background:#fff;border-radius:12px;box-shadow:0 4px 20px #00000014;margin-bottom:30px;padding:30px}.pricing-section h2{color:#333;font-size:20px;font-weight:600;margin-bottom:25px;text-align:center}.pricing-cards{grid-gap:20px;display:grid;gap:20px;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));margin-top:20px}.pricing-card{background:#fafbfc;border:2px solid #e1e5e9;border-radius:12px;cursor:pointer;padding:25px;position:relative;text-align:center;transition:all .3s ease}.pricing-card:hover{box-shadow:0 8px 25px #0000001a;transform:translateY(-3px)}.pricing-card.selected{background:linear-gradient(135deg,#f8f9ff,#e8f0fe);border-color:#667eea;box-shadow:0 8px 25px #667eea33}.pricing-card.popular{background:linear-gradient(135deg,#f8fff9,#e8f5e8);border-color:#28a745}.pricing-card.popular.selected{background:linear-gradient(135deg,#f8f9ff,#e8f0fe);border-color:#667eea}.popular-badge{background:#28a745;border-radius:15px;color:#fff;font-size:12px;font-weight:600;left:50%;padding:5px 15px;position:absolute;top:-10px;transform:translateX(-50%)}.pricing-card h3{color:#333;font-size:18px;font-weight:600;margin-bottom:15px}.price{color:#667eea;font-size:32px;font-weight:700;margin-bottom:10px}.calls{color:#666;font-size:16px;margin-bottom:8px}.unit-price{color:#999;font-size:12px}.payment-method-section{background:#fff;border-radius:12px;box-shadow:0 4px 20px #00000014;margin-bottom:30px;padding:30px}.payment-method-section h2{color:#333;font-size:20px;font-weight:600;margin-bottom:25px;text-align:center}.payment-methods{grid-gap:15px;display:grid;gap:15px;grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}.payment-method{background:#fafbfc;border:2px solid #e1e5e9;border-radius:8px;cursor:pointer;display:block;padding:20px;transition:all .2s ease}.payment-method:hover{background:#f8f9ff;border-color:#667eea}.payment-method.selected{background:linear-gradient(135deg,#f8f9ff,#e8f0fe);border-color:#667eea;box-shadow:0 4px 15px #667eea33}.payment-method input[type=radio]{display:none}.method-info{align-items:center;display:flex;gap:10px;justify-content:center}.method-icon{font-size:24px}.method-name{color:#333;font-size:16px;font-weight:500}.payment-actions{margin:40px 0;text-align:center}.pay-button{align-items:center;background:linear-gradient(135deg,#28a745,#20c997);border:none;border-radius:8px;color:#fff;cursor:pointer;display:inline-flex;font-size:18px;font-weight:600;gap:10px;justify-content:center;min-width:200px;padding:16px 32px;transition:all .2s ease}.pay-button:hover:not(:disabled){box-shadow:0 5px 15px #28a74566;transform:translateY(-2px)}.pay-button:disabled{background:#6c757d;cursor:not-allowed;transform:none}.spinner{animation:spin 1s linear infinite;border:2px solid #fff;border-radius:50%;border-top-color:#0000;height:16px;width:16px}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.payment-notice{background:#f8f9ff;border:1px solid #e6f0ff;border-radius:8px;margin-top:30px;padding:25px}.payment-notice h3{color:#333;font-size:16px;font-weight:600;margin-bottom:15px}.payment-notice ul{list-style:none;margin:0;padding:0}.payment-notice li{color:#555;font-size:14px;padding:5px 0 5px 20px;position:relative}.payment-notice li:before{color:#28a745;content:"✓";font-weight:700;left:0;position:absolute}@media (max-width:768px){.payment-header{flex-direction:column;gap:15px;padding:15px 20px;text-align:center}.header-actions{flex-direction:column;gap:10px;width:100%}.payment-main{padding:20px 15px}.pricing-cards{gap:15px;grid-template-columns:1fr}.payment-methods{gap:10px;grid-template-columns:1fr}.payment-method-section,.pricing-section,.usage-status{padding:20px}}@media (max-width:480px){.payment-main{padding:15px 10px}.payment-method-section,.pricing-section,.usage-status{padding:15px}.pricing-card{padding:20px 15px}.price{font-size:28px}.pay-button{font-size:16px;min-width:160px;padding:14px 24px}}