:root{--primary: #1e40af;--primary-light: #3b82f6;--primary-dark: #1e3a8a;--primary-50: #eff6ff;--primary-100: #dbeafe;--primary-500: #3b82f6;--primary-600: #2563eb;--primary-700: #1d4ed8;--bg-main: #f8fafc;--bg-card: #ffffff;--border: #e2e8f0;--border-light: #f1f5f9;--text-primary: #1e293b;--text-secondary: #64748b;--text-muted: #94a3b8;--gray-50: #f8fafc;--gray-100: #f1f5f9;--gray-200: #e2e8f0;--gray-300: #cbd5e1;--gray-400: #94a3b8;--gray-500: #64748b;--gray-600: #475569;--gray-700: #334155;--gray-800: #1e293b;--gray-900: #0f172a;--success: #059669;--success-light: #10b981;--success-dark: #047857;--success-50: #ecfdf5;--success-100: #d1fae5;--warning: #d97706;--warning-light: #f59e0b;--warning-50: #fffbeb;--warning-100: #fef3c7;--warning-200: #fde68a;--error: #dc2626;--error-light: #ef4444;--error-dark: #b91c1c;--error-50: #fef2f2;--error-100: #fee2e2;--error-200: #fecaca;--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.25rem;--space-6: 1.5rem;--space-8: 2rem;--space-10: 2.5rem;--space-12: 3rem;--space-16: 4rem;--space-20: 5rem;--radius-sm: .375rem;--radius-md: .5rem;--radius-lg: .75rem;--radius-xl: 1rem;--radius-full: 9999px;--shadow-sm: 0 1px 2px 0 rgb(0 0 0 / .05);--shadow-md: 0 4px 6px -1px rgb(0 0 0 / .07), 0 2px 4px -2px rgb(0 0 0 / .05);--shadow-lg: 0 10px 15px -3px rgb(0 0 0 / .08), 0 4px 6px -4px rgb(0 0 0 / .04);--font-size-xs: .75rem;--font-size-sm: .875rem;--font-size-base: 1rem;--font-size-lg: 1.125rem;--font-size-xl: 1.25rem;--font-size-2xl: 1.5rem;--font-size-3xl: 1.875rem;--font-size-4xl: 2.25rem;--transition-fast: .15s ease;--transition-medium: .2s ease}*{margin:0;padding:0;box-sizing:border-box}*:before,*:after{box-sizing:border-box}html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:var(--font-size-base);line-height:1.6;color:var(--text-primary);background:var(--bg-main);min-height:100vh;margin:0;padding:0}#root{width:100%;min-height:100vh}.print-center{background:var(--bg-card);min-height:100vh;width:100%}.header{background:var(--bg-card);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:50}.header-content{display:flex;justify-content:space-between;align-items:center;padding:var(--space-5) var(--space-10);max-width:1600px;margin:0 auto}.header-text{flex:1}.header h1{font-size:var(--font-size-2xl);font-weight:600;color:var(--text-primary);margin-bottom:var(--space-1);letter-spacing:-.01em}.header h1 svg{color:var(--primary)}.header p{font-size:var(--font-size-sm);color:var(--text-secondary);font-weight:400}.header-right{display:flex;gap:var(--space-4);align-items:center}.header-actions{display:flex;gap:var(--space-3);align-items:center}.toggle-upload-btn{display:flex;align-items:center;justify-content:center;gap:var(--space-2);padding:var(--space-2) var(--space-4);background:var(--primary);color:#fff;border:1px solid var(--primary);border-radius:var(--radius-md);font-weight:600;font-size:var(--font-size-sm);cursor:pointer;transition:all var(--transition-fast);box-sizing:border-box}.toggle-upload-btn:hover{background:var(--primary-dark);border-color:var(--primary-dark)}.language-toggle{display:flex;align-items:center;justify-content:center;padding:var(--space-2) var(--space-4);background:transparent;border:1px solid var(--border);border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-fast);font-size:var(--font-size-sm);font-weight:500;color:var(--text-secondary)}.language-toggle:hover{background:var(--gray-50);border-color:var(--gray-300);color:var(--text-primary)}.content{padding:var(--space-6) var(--space-10);background:var(--bg-main);min-height:calc(100vh - 80px);max-width:1600px;margin:0 auto}.loading{text-align:center;padding:var(--space-16);color:var(--text-secondary)}.loading-spinner{width:40px;height:40px;border:3px solid var(--border);border-top:3px solid var(--primary);border-radius:var(--radius-full);animation:spin 1s linear infinite;margin:0 auto var(--space-4)}.loading p{font-size:var(--font-size-base);font-weight:500}.error{text-align:center;color:var(--error);background:var(--error-50);border:1px solid var(--error-100);padding:var(--space-6);border-radius:var(--radius-lg);margin:var(--space-4) 0}.error h3{font-size:var(--font-size-lg);font-weight:600;margin-bottom:var(--space-2)}.error p{font-size:var(--font-size-sm);color:var(--error-dark)}.files-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:var(--space-5);margin-top:var(--space-4)}.file-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--space-5);transition:box-shadow var(--transition-fast),border-color var(--transition-fast);position:relative;display:flex;flex-direction:column;min-height:220px}.file-card:hover{box-shadow:var(--shadow-md);border-color:var(--gray-300)}.file-card.printed{background:var(--gray-50);border-color:var(--border)}.file-card.printed:hover{box-shadow:none;border-color:var(--border)}.file-card.multiple-copies{border-color:var(--warning-light);box-shadow:0 0 0 1px var(--warning-light)}.file-content{flex:1;margin-bottom:var(--space-4)}.file-content.content-loading{opacity:.6}.file-content.content-printed{opacity:.5}.file-name{font-weight:600;font-size:var(--font-size-base);margin-bottom:var(--space-3);color:var(--text-primary);word-break:break-word;line-height:1.4;display:flex;align-items:flex-start;gap:var(--space-2)}.file-name svg{flex-shrink:0;color:var(--primary);margin-top:2px}.copy-badge{display:inline-flex;align-items:center;justify-content:center;padding:4px 10px;background:var(--warning-100);color:var(--warning);border-radius:var(--radius-full);font-size:var(--font-size-sm);font-weight:600;margin-left:var(--space-2);flex-shrink:0}.file-meta{font-size:var(--font-size-sm);color:var(--text-secondary);line-height:1.6}.file-meta-row{display:flex;align-items:center;gap:var(--space-2);margin-bottom:var(--space-1)}.file-meta-row:last-child{margin-bottom:0}.file-meta-row svg{color:var(--text-muted);flex-shrink:0}.status-badge{display:inline-flex;align-items:center;gap:var(--space-1);padding:var(--space-1) var(--space-3);border-radius:var(--radius-full);font-size:var(--font-size-xs);font-weight:500;margin-bottom:var(--space-3)}.status-badge.printed{background:var(--gray-100);color:var(--text-secondary)}.status-badge.ready{background:var(--success-50);color:var(--success)}.status-badge.printing{background:var(--warning-50);color:var(--warning)}.file-status-section{margin-top:auto;display:flex;flex-direction:column;gap:var(--space-3)}.print-button{width:100%;border:none;padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);font-weight:600;font-size:var(--font-size-sm);cursor:pointer;transition:background var(--transition-fast);min-height:44px;display:flex;align-items:center;justify-content:center;gap:var(--space-2)}.print-button.btn-ready{background:var(--success);color:#fff}.print-button.btn-ready:hover:not(:disabled){background:var(--success-dark)}.print-button.btn-ready.multiple-copies{background:var(--warning-light);color:#fff}.print-button.btn-ready.multiple-copies:hover:not(:disabled){background:var(--warning)}.print-button.btn-disabled{background:var(--gray-200);color:var(--text-muted);cursor:not-allowed}.print-button.btn-loading{background:var(--primary);color:#fff;cursor:not-allowed}.print-button:disabled{cursor:not-allowed}.button-content{display:flex;align-items:center;justify-content:center;gap:var(--space-2)}.button-spinner{color:#fff;animation:spin 1s linear infinite}.error-message{color:var(--error);font-size:var(--font-size-xs);margin-top:var(--space-2);text-align:center;line-height:1.4;padding:var(--space-2) var(--space-3);background:var(--error-50);border-radius:var(--radius-sm);border:1px solid var(--error-100)}.no-files{text-align:center;padding:var(--space-16) var(--space-8);color:var(--text-secondary);background:var(--bg-card);border-radius:var(--radius-lg);border:1px dashed var(--border)}.no-files .icon{font-size:3rem;margin-bottom:var(--space-4);opacity:.5}.no-files h2{font-size:var(--font-size-xl);font-weight:600;margin-bottom:var(--space-2);color:var(--text-primary)}.no-files p{font-size:var(--font-size-sm);line-height:1.6;max-width:360px;margin:0 auto}.file-upload{margin-bottom:var(--space-5)}.upload-password-section{margin-bottom:var(--space-4)}.upload-password-row{display:flex;align-items:center;gap:var(--space-3)}.upload-password-input-wrapper{display:flex;align-items:center;gap:var(--space-3);background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-md);padding:var(--space-3) var(--space-4);transition:border-color var(--transition-fast),box-shadow var(--transition-fast);height:44px;box-sizing:border-box;flex:1}.upload-password-input-wrapper:focus-within{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-50)}.upload-password-input-wrapper.error{border-color:var(--error)}.upload-password-icon{color:var(--text-muted);flex-shrink:0}.upload-password-input{flex:1;border:none;outline:none;background:transparent;font-size:var(--font-size-base);color:var(--text-primary)}.upload-password-input::placeholder{color:var(--text-muted)}.upload-password-error{margin-top:var(--space-2);font-size:var(--font-size-sm);color:var(--error)}.upload-password-row .upload-all-btn{flex-shrink:0;flex-grow:0;height:44px;padding:0 var(--space-4);white-space:nowrap}.drop-zone{border:2px dashed var(--border);border-radius:var(--radius-lg);padding:var(--space-10) var(--space-8);text-align:center;background:var(--bg-card);transition:all var(--transition-fast);cursor:pointer}.drop-zone:hover{border-color:var(--primary-light);background:var(--primary-50)}.drop-zone.dragging{border-color:var(--primary);background:var(--primary-100)}.drop-zone-icon{color:var(--text-muted);margin:0 auto var(--space-4)}.drop-zone-text{font-size:var(--font-size-base);font-weight:600;color:var(--text-primary);margin:0 0 var(--space-1)}.drop-zone-subtitle{font-size:var(--font-size-sm);color:var(--text-secondary);margin:0 0 var(--space-4)}.upload-browse-btn{display:inline-block;padding:var(--space-3) var(--space-6);background:var(--primary);color:#fff;border-radius:var(--radius-md);font-weight:500;cursor:pointer;transition:background var(--transition-fast)}.upload-browse-btn:hover{background:var(--primary-dark)}.hidden{display:none}.upload-queue{margin-top:var(--space-4);background:var(--bg-card);border-radius:var(--radius-md);border:1px solid var(--border);overflow:hidden}.upload-item{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--border-light)}.upload-item:last-child{border-bottom:none}.upload-item-icon{color:var(--primary);flex-shrink:0}.upload-filename{flex:1;font-weight:500;color:var(--text-primary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.upload-size{color:var(--text-secondary);font-size:var(--font-size-sm);flex-shrink:0}.upload-remove{background:none;border:none;cursor:pointer;color:var(--text-muted);padding:var(--space-1);display:flex;align-items:center;justify-content:center;border-radius:var(--radius-sm);transition:all var(--transition-fast)}.upload-remove:hover{color:var(--error);background:var(--error-50)}.upload-spinner{color:var(--primary);animation:spin 1s linear infinite}.passkey-auth-btn .upload-spinner,.passkey-register-btn .upload-spinner,.clear-files-btn .upload-spinner,.clear-action-btn .upload-spinner,.modal-upload-btn .upload-spinner{color:inherit}.upload-success{color:var(--success)}.upload-error{color:var(--error)!important}.error-tooltip{display:inline-flex;cursor:help}.upload-actions{display:flex;gap:var(--space-3);padding:var(--space-3) var(--space-4);background:var(--gray-50);border-top:1px solid var(--border)}.upload-all-btn{padding:var(--space-3) var(--space-4);background:var(--primary);color:#fff;border:none;border-radius:var(--radius-md);font-weight:600;cursor:pointer;transition:background var(--transition-fast)}.upload-all-btn:hover:not(:disabled){background:var(--primary-dark)}.upload-all-btn:disabled{opacity:.6;cursor:not-allowed}.upload-clear-btn{padding:var(--space-3) var(--space-4);background:var(--bg-card);color:var(--text-primary);border:1px solid var(--border);border-radius:var(--radius-md);font-weight:500;cursor:pointer;transition:all var(--transition-fast)}.upload-clear-btn:hover{background:var(--gray-50);border-color:var(--gray-300)}.file-actions{display:flex;justify-content:flex-end;margin-bottom:var(--space-4)}.clear-files-container{display:flex;align-items:center;gap:0;padding:var(--space-1);background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-md);transition:background .2s ease,border-color .2s ease}.clear-files-container:hover{border-color:var(--gray-300)}.clear-files-container.expanded{background:var(--error-50);border-color:var(--error-200);height:38px;padding:var(--space-1) var(--space-2)}.clear-expanded-content{display:flex;align-items:center;gap:var(--space-2);max-width:0;opacity:0;transition:max-width .3s ease,opacity .2s ease,margin .3s ease;margin-right:0;pointer-events:none}.clear-files-container.expanded .clear-expanded-content{max-width:300px;opacity:1;margin-right:var(--space-2);flex-wrap:nowrap;pointer-events:auto}.clear-password-wrapper{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-1) var(--space-2);background:#fff;border:1px solid var(--border);border-radius:var(--radius-sm);width:200px;flex-shrink:0}.clear-password-wrapper svg{color:var(--text-muted);flex-shrink:0}.clear-password-wrapper.error{border-color:var(--error);animation:shake .3s ease-in-out}@keyframes shake{0%,to{transform:translate(0)}25%{transform:translate(-4px)}75%{transform:translate(4px)}}.clear-password-input{flex:1;border:none;outline:none;background:transparent;font-size:var(--font-size-sm);color:var(--text-primary);width:100%}.clear-password-input::placeholder{color:var(--text-muted)}.clear-action-btn{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border:none;border-radius:var(--radius-sm);cursor:pointer;transition:background .15s ease;flex-shrink:0}.clear-action-btn.confirm{background:var(--error);color:#fff}.clear-action-btn.confirm:hover:not(:disabled){background:var(--error-dark)}.clear-action-btn.cancel{background:var(--gray-100);color:var(--text-secondary)}.clear-action-btn.cancel:hover:not(:disabled){background:var(--gray-200);color:var(--text-primary)}.clear-action-btn:disabled{opacity:.5;cursor:not-allowed}.clear-files-btn{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-1) var(--space-3);background:transparent;color:var(--error);border:none;border-radius:var(--radius-sm);font-weight:600;font-size:var(--font-size-sm);cursor:pointer;transition:background .15s ease;white-space:nowrap}.clear-files-btn:hover:not(:disabled):not(.active){background:var(--error-50)}.clear-files-btn:disabled{opacity:.5;cursor:not-allowed}.clear-files-btn.active{pointer-events:none}.clear-files-btn.active .clear-btn-text{display:none}.clear-files-container .clear-files-btn{transition:opacity .2s ease,max-width .3s ease,padding .3s ease;max-width:150px;overflow:hidden}.clear-files-container.expanded .clear-files-btn{opacity:0;max-width:0;padding:0;pointer-events:none}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000;padding:var(--space-4);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.modal-container{background:var(--bg-card);border-radius:var(--radius-lg);box-shadow:0 8px 30px #00000026;width:100%;max-width:500px;max-height:90vh;overflow:clip;display:flex;flex-direction:column;position:relative}.modal-upload-content{display:flex;flex-direction:column;flex:1;transition:filter .4s ease,opacity .4s ease}.modal-upload-content.blurred{filter:blur(2px);opacity:.3}.modal-success-overlay{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;background:var(--bg-card);animation:fadeIn .3s ease-out}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-4) var(--space-5);border-bottom:1px solid var(--border)}.modal-header h2{font-size:var(--font-size-lg);font-weight:600;color:var(--text-primary);margin:0}.modal-close{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border:none;background:transparent;color:var(--text-secondary);border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-fast)}.modal-close:hover{background:var(--gray-100);color:var(--text-primary)}.modal-close:disabled{opacity:.5;cursor:not-allowed}.modal-body{padding:var(--space-5);padding-bottom:var(--space-8);flex:1;min-height:280px;max-height:calc(90vh - 200px);overflow:hidden}.modal-drop-zone{border:2px dashed var(--border);border-radius:var(--radius-lg);padding:var(--space-8) var(--space-6);text-align:center;background:var(--bg-card);transition:all var(--transition-fast);cursor:pointer}.modal-drop-zone:hover{border-color:var(--primary-light);background:var(--primary-50)}.modal-drop-zone.dragging{border-color:var(--primary);background:var(--primary-100)}.modal-file-list{margin-top:var(--space-4);display:flex;flex-direction:column;gap:var(--space-2);max-height:300px;overflow-y:auto;overscroll-behavior:contain}.modal-file-item{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3);background:var(--gray-50);border-radius:var(--radius-md);font-size:var(--font-size-sm);transition:opacity 1s ease,transform 1s ease}.modal-file-item.completing{opacity:0;transform:translate(30px)}.modal-file-item.completing .modal-file-name{text-decoration:line-through;color:var(--text-muted)}.modal-file-item svg:first-child{color:var(--text-secondary);flex-shrink:0}.modal-file-name{flex:1;color:var(--text-primary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.modal-file-size{color:var(--text-muted);flex-shrink:0}.modal-file-remove{display:flex;align-items:center;justify-content:center;width:24px;height:24px;border:none;background:transparent;color:var(--text-muted);border-radius:var(--radius-sm);cursor:pointer;transition:all var(--transition-fast)}.modal-file-remove:hover{background:var(--gray-200);color:var(--error)}.modal-password-section{margin-top:var(--space-4)}.modal-password-wrapper{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-md);transition:all var(--transition-fast)}.modal-password-wrapper:focus-within{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-50)}.modal-password-wrapper.error{border-color:var(--error)}.modal-password-wrapper svg{color:var(--text-muted);flex-shrink:0}.modal-password-input{flex:1;border:none;outline:none;background:transparent;font-size:var(--font-size-base);color:var(--text-primary)}.modal-password-input::placeholder{color:var(--text-muted)}.modal-password-error{margin-top:var(--space-2);font-size:var(--font-size-sm);color:var(--error)}.password-upload-row{display:flex;gap:var(--space-2);align-items:center}.password-upload-row .modal-password-wrapper{flex:1}.password-upload-row .modal-upload-btn{flex-shrink:0;width:48px;height:48px;padding:0}.modal-auth-section{width:100%}.auth-tabs{display:flex;gap:var(--space-2);margin-bottom:var(--space-4)}.auth-tab{flex:1;display:flex;align-items:center;justify-content:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-md);font-size:var(--font-size-sm);color:var(--text-secondary);cursor:pointer;transition:all var(--transition-fast)}.auth-tab:hover:not(:disabled){border-color:var(--primary);color:var(--primary)}.auth-tab.active{background:var(--primary-50);border-color:var(--primary);color:var(--primary)}.auth-tab:disabled{opacity:.5;cursor:not-allowed}.auth-passkey{text-align:center}.passkey-auth-btn{width:100%;display:flex;align-items:center;justify-content:center;gap:var(--space-2);padding:var(--space-3) var(--space-4);background:var(--bg-card);border:2px solid var(--primary);border-radius:var(--radius-md);font-weight:600;font-size:var(--font-size-base);color:var(--primary);cursor:pointer;transition:all var(--transition-fast)}.passkey-auth-btn:hover:not(:disabled){background:var(--primary);color:#fff}.passkey-auth-btn:disabled{opacity:.5;cursor:not-allowed}.passkey-register{text-align:center}.passkey-info{font-size:var(--font-size-sm);color:var(--text-muted);margin-bottom:var(--space-3)}.passkey-register-btn{width:100%;display:flex;align-items:center;justify-content:center;gap:var(--space-2);padding:var(--space-3) var(--space-4);margin-top:var(--space-3);background:var(--primary);border:none;border-radius:var(--radius-md);font-weight:600;font-size:var(--font-size-base);color:#fff;cursor:pointer;transition:all var(--transition-fast)}.passkey-register-btn:hover:not(:disabled){background:var(--primary-dark)}.passkey-register-btn:disabled{opacity:.5;cursor:not-allowed}.auth-status{display:flex;align-items:center;justify-content:center;gap:var(--space-2);padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);font-weight:500}.auth-status-success{background:var(--success-bg);color:var(--success);border:1px solid var(--success)}.clear-action-btn.passkey{background:var(--primary);color:#fff}.clear-action-btn.passkey:hover{background:var(--primary-dark)}.modal-footer{padding:var(--space-4) var(--space-5);border-top:1px solid var(--border)}.modal-upload-btn{width:100%;display:flex;align-items:center;justify-content:center;gap:var(--space-2);padding:var(--space-3) var(--space-4);background:var(--primary);color:#fff;border:none;border-radius:var(--radius-md);font-weight:600;font-size:var(--font-size-base);cursor:pointer;transition:background var(--transition-fast);height:48px;box-sizing:border-box}.modal-upload-btn:hover:not(:disabled){background:var(--primary-dark)}.modal-upload-btn:disabled{opacity:.5;cursor:not-allowed}.modal-success{text-align:center;background:radial-gradient(ellipse,rgba(255,255,255,.95) 0%,transparent 70%);padding:var(--space-10);animation:scaleIn .4s ease-out}.modal-success .success-title{color:var(--text-primary)}.modal-success .success-subtitle{color:var(--text-secondary)}@keyframes scaleIn{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}.success-animation{margin-bottom:var(--space-6)}.success-checkmark{width:80px;height:80px;margin:0 auto}.success-checkmark-circle{stroke:var(--success);stroke-width:2;stroke-dasharray:166;stroke-dashoffset:166;animation:stroke .6s cubic-bezier(.65,0,.45,1) forwards}.success-checkmark-check{stroke:var(--success);stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:48;stroke-dashoffset:48;animation:stroke .3s cubic-bezier(.65,0,.45,1) .4s forwards}@keyframes stroke{to{stroke-dashoffset:0}}.success-title{font-size:var(--font-size-xl);font-weight:600;color:var(--text-primary);margin:0 0 var(--space-2) 0}.success-subtitle{font-size:var(--font-size-base);color:var(--text-secondary);margin:0 0 var(--space-6) 0}.modal-done-btn{padding:var(--space-2) var(--space-6);background:var(--gray-100);color:var(--text-primary);border:1px solid var(--border);border-radius:var(--radius-md);font-weight:500;cursor:pointer;transition:all var(--transition-fast)}.modal-done-btn:hover{background:var(--gray-200)}.mobile-upload-actions{display:flex;flex-direction:column;gap:var(--space-2);width:100%}.modal-add-files-btn{display:flex;align-items:center;justify-content:center;gap:var(--space-2);padding:var(--space-3) var(--space-4);background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-md);font-weight:600;font-size:var(--font-size-base);color:var(--text-primary);cursor:pointer;transition:all var(--transition-fast);height:48px;box-sizing:border-box}.modal-add-files-btn:hover{background:var(--gray-50);border-color:var(--gray-300)}.mobile-no-files-message{text-align:center;color:var(--text-secondary);padding:var(--space-8) var(--space-4);font-size:var(--font-size-sm)}.flex{display:flex}.flex-1{flex:1}.items-center{align-items:center}.gap-2{gap:var(--space-2)}.gap-3{gap:var(--space-3)}.flex-shrink-0{flex-shrink:0}.text-left{text-align:left}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-blue-600{color:var(--primary)}.text-gray-500{color:var(--text-secondary)}.text-gray-700{color:var(--text-primary)}.text-blue-500{color:var(--primary-light)}.text-red-500{color:var(--error)}.text-lg{font-size:var(--font-size-lg)}.text-xl{font-size:var(--font-size-xl)}.text-base{font-size:var(--font-size-base)}.font-medium{font-weight:500}.font-bold{font-weight:700}.font-semibold{font-weight:600}.mb-2{margin-bottom:var(--space-2)}.mb-3{margin-bottom:var(--space-3)}.w-full{width:100%}.relative{position:relative}.absolute{position:absolute}.fixed{position:fixed}.inset-0{top:0;right:0;bottom:0;left:0}.z-40{z-index:40}.z-50{z-index:50}.bg-white\/10{background-color:#ffffff1a}.bg-white\/15{background-color:#ffffff26}.bg-white\/95{background-color:#fffffff2}.bg-blue-50{background-color:var(--primary-50)}.bg-blue-100{background-color:var(--primary-100)}.hover\:bg-blue-50:hover{background-color:var(--primary-50)}.text-white\/90{color:#ffffffe6}.border-white\/20{border-color:#fff3}.rounded-lg{border-radius:var(--radius-lg)}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}.loading-spinner-container{margin-bottom:var(--space-4)}@media (min-width: 640px){.sm\:inline{display:inline}}@media (min-width: 768px){.md\:inline{display:inline}}.loading-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#fffc;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);display:flex;align-items:center;justify-content:center;z-index:500}.loading-spinner{display:flex;flex-direction:column;align-items:center;gap:var(--space-4)}.loading-spinner .spinner{color:var(--primary);animation:spin 1s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@media (max-width: 768px){.header-content{flex-direction:column;gap:var(--space-4);text-align:center;padding:var(--space-4) var(--space-4)}.header h1{font-size:var(--font-size-xl);justify-content:center}.header-actions{width:100%;justify-content:center}.content{padding:var(--space-4);min-height:calc(100vh - 120px)}.files-grid{grid-template-columns:1fr;gap:var(--space-4)}.file-card{padding:var(--space-4);min-height:180px}.no-files{padding:var(--space-10) var(--space-4)}}@media (max-width: 480px){.header{z-index:1001}.header-content{padding:var(--space-5) var(--space-3) var(--space-2);position:relative}.header-right .language-toggle{position:absolute;top:33px;right:12px}.content{padding:var(--space-3);padding-bottom:160px}.file-card{padding:var(--space-3)}.header-actions{position:fixed;bottom:calc(16px + env(safe-area-inset-bottom,0px));left:16px;right:16px;width:auto;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--space-3);display:flex;flex-direction:column;gap:var(--space-2);z-index:100;box-shadow:0 12px 40px #00000040,0 4px 12px #00000026;overflow:hidden}.toggle-upload-btn{width:100%;height:48px;font-size:var(--font-size-base);justify-content:center}.clear-files-container{width:100%;height:48px;padding:0;border:1px solid var(--error-100);border-radius:var(--radius-md);background:var(--bg-card)}.clear-files-container .clear-expanded-content{display:none}.clear-files-container .clear-files-btn{flex:1;width:100%;max-width:none;height:48px;padding:0 var(--space-4);border:none;border-radius:var(--radius-md);background:transparent;justify-content:center;overflow:visible}.clear-files-container.expanded{height:48px;flex-direction:row;padding:var(--space-2);gap:var(--space-2)}.clear-files-container.expanded .clear-expanded-content{display:flex;flex:1;gap:var(--space-2);max-width:none;opacity:1;margin-right:0;flex-wrap:nowrap;align-items:center}.clear-files-container.expanded .clear-password-wrapper{flex:1;width:auto;height:36px}.clear-files-container.expanded .clear-action-btn{width:36px;height:36px}.clear-files-container.expanded .clear-files-btn{opacity:0;max-width:0;padding:0;pointer-events:none;flex:0;width:0;overflow:hidden}.drop-zone{padding:var(--space-6) var(--space-4)}.drop-zone-text{display:none}.modal-drop-zone{padding:var(--space-4);border:none;background:transparent}.modal-drop-zone .drop-zone-icon,.modal-drop-zone .drop-zone-text,.modal-drop-zone .drop-zone-subtitle{display:none}.modal-drop-zone .upload-button-label{width:100%}.modal-drop-zone .upload-browse-btn{width:100%;padding:var(--space-4);font-size:var(--font-size-base)}.modal-backdrop{align-items:flex-end;padding:0;padding-bottom:calc(16px + env(safe-area-inset-bottom,0px));background:transparent;-webkit-backdrop-filter:none;backdrop-filter:none}.modal-container{margin:0 16px;width:calc(100% - 32px);max-width:calc(100% - 32px);border-radius:var(--radius-lg);max-height:70vh;box-shadow:0 12px 40px #00000040,0 4px 12px #00000026}.modal-body{min-height:auto}.modal-footer{padding:var(--space-3)}.modal-footer.transitioning{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:0 8px 30px #00000026}.mobile-success-section{display:flex;flex-direction:row;align-items:center;justify-content:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);background:var(--success);border-radius:var(--radius-md);height:48px}.mobile-success-section .success-animation{margin:0;display:flex;align-items:center;justify-content:center}.mobile-success-section .success-checkmark.small{width:18px;height:18px;display:block}.mobile-success-section .success-checkmark-circle,.mobile-success-section .success-checkmark-check{stroke:#fff}.mobile-success-section .success-text{color:#fff;font-weight:500;font-size:var(--font-size-base)}.modal-add-files-btn.disabled{opacity:.5;pointer-events:none;cursor:not-allowed}.modal-add-files-btn.collapsing{animation:collapseOut .3s ease-out forwards;overflow:hidden}@keyframes collapseOut{0%{max-height:48px;opacity:1;margin-bottom:var(--space-2)}to{max-height:0;opacity:0;margin-bottom:0;padding-top:0;padding-bottom:0}}.clear-files-container.expanding{animation:expandFromBottom .3s ease-out forwards;transform-origin:bottom center}@keyframes expandFromBottom{0%{max-height:0;opacity:0;transform:scaleY(0);margin-bottom:0}to{max-height:48px;opacity:1;transform:scaleY(1);margin-bottom:var(--space-2)}}.clear-files-container.revealing{animation:reveal .3s ease-out forwards;overflow:hidden}@keyframes reveal{0%{max-height:0;opacity:0}to{max-height:48px;opacity:1}}.toggle-upload-btn.from-success{animation:greenToBlue .4s ease-out forwards}@keyframes greenToBlue{0%{background:var(--success);border-color:var(--success)}to{background:var(--primary);border-color:var(--primary)}}.upload-item{flex-wrap:wrap}.upload-filename{width:100%;order:1}.upload-size{order:2}.clear-confirm{flex-wrap:wrap}}.print-button:focus-visible,.toggle-upload-btn:focus-visible,.clear-files-btn:focus-visible,.upload-browse-btn:focus-visible,.upload-all-btn:focus-visible{outline:2px solid var(--primary);outline-offset:2px}.language-toggle:focus-visible{outline:2px solid var(--primary);outline-offset:2px}.completion-splash{position:fixed;top:0;right:0;bottom:0;left:0;background:#fffffffa;display:flex;align-items:center;justify-content:center;z-index:1000;animation:fadeIn .3s ease-out}.completion-content{text-align:center;animation:scaleIn .4s ease-out}.completion-icon{color:var(--success);margin-bottom:var(--space-6)}.completion-content h2{font-size:var(--font-size-2xl);font-weight:600;color:var(--text-primary);margin:0 0 var(--space-2) 0}.completion-content p{font-size:var(--font-size-lg);color:var(--text-secondary);margin:0}@media print{body{background:#fff}.print-center{box-shadow:none;border:none}}
