:root{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Microsoft YaHei,sans-serif;line-height:1.5;font-weight:400;color-scheme:light dark;color:#ffffffde;background-color:#242424;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{margin:0;padding:0;box-sizing:border-box}html,body,#root{height:100%}body{min-width:320px}@media(prefers-color-scheme:light){:root{color:#213547;background-color:#fff}}.toast{position:fixed;top:20px;right:20px;display:flex;align-items:center;gap:12px;padding:12px 16px;border-radius:8px;box-shadow:0 4px 12px #00000026;font-size:14px;line-height:1.5;z-index:1000;animation:toast-slide-in .3s ease-out;max-width:400px}@keyframes toast-slide-in{0%{transform:translate(100%);opacity:0}to{transform:translate(0);opacity:1}}.toast--success{background-color:#d4edda;color:#155724;border:1px solid #c3e6cb}.toast--error{background-color:#f8d7da;color:#721c24;border:1px solid #f5c6cb}.toast--warning{background-color:#fff3cd;color:#856404;border:1px solid #ffeeba}.toast--info{background-color:#d1ecf1;color:#0c5460;border:1px solid #bee5eb}.toast__icon{flex-shrink:0;font-size:16px;font-weight:700}.toast__message{flex:1;word-break:break-word}.toast__close{flex-shrink:0;background:none;border:none;font-size:20px;line-height:1;cursor:pointer;opacity:.7;padding:0;margin-left:8px;color:inherit}.toast__close:hover{opacity:1}.toast__close:focus{outline:2px solid currentColor;outline-offset:2px;border-radius:2px}@media(prefers-color-scheme:dark){.toast--success{background-color:#1e4620;color:#a3d9a5;border-color:#2d5a2e}.toast--error{background-color:#4a1c1c;color:#f5a5a5;border-color:#6b2c2c}.toast--warning{background-color:#4a3c00;color:#ffd966;border-color:#6b5500}.toast--info{background-color:#0c3c4a;color:#8ed4e8;border-color:#1a5a6b}}@media(max-width:480px){.toast{left:10px;right:10px;max-width:none}}.loading{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px}.loading__overlay{position:fixed;top:0;left:0;right:0;bottom:0;display:flex;align-items:center;justify-content:center;background-color:#00000080;z-index:999}.loading__spinner{display:flex;align-items:center;justify-content:center}.loading__spinner-circle{border-radius:50%;border-style:solid;border-color:#3b82f6 transparent transparent transparent;animation:loading-spin 1s linear infinite}@keyframes loading-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.loading--small .loading__spinner-circle{width:16px;height:16px;border-width:2px}.loading--small .loading__text{font-size:12px}.loading--medium .loading__spinner-circle{width:32px;height:32px;border-width:3px}.loading--medium .loading__text{font-size:14px}.loading--large .loading__spinner-circle{width:48px;height:48px;border-width:4px}.loading--large .loading__text{font-size:16px}.loading__text{color:inherit;opacity:.8}@media(prefers-color-scheme:dark){.loading__overlay{background-color:#000000b3}.loading__spinner-circle{border-color:#60a5fa transparent transparent transparent}}.button{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:none;border-radius:6px;font-weight:500;cursor:pointer;transition:all .2s ease;position:relative;white-space:nowrap}.button:focus{outline:2px solid #3b82f6;outline-offset:2px}.button:disabled{cursor:not-allowed;opacity:.6}.button--small{padding:6px 12px;font-size:12px;min-height:28px}.button--medium{padding:8px 16px;font-size:14px;min-height:36px}.button--large{padding:12px 24px;font-size:16px;min-height:44px}.button--primary{background-color:#3b82f6;color:#fff}.button--primary:hover:not(:disabled){background-color:#2563eb}.button--primary:active:not(:disabled){background-color:#1d4ed8}.button--secondary{background-color:#e5e7eb;color:#374151}.button--secondary:hover:not(:disabled){background-color:#d1d5db}.button--secondary:active:not(:disabled){background-color:#9ca3af}.button--danger{background-color:#ef4444;color:#fff}.button--danger:hover:not(:disabled){background-color:#dc2626}.button--danger:active:not(:disabled){background-color:#b91c1c}.button--ghost{background-color:transparent;color:#3b82f6}.button--ghost:hover:not(:disabled){background-color:#3b82f61a}.button--ghost:active:not(:disabled){background-color:#3b82f633}.button--full-width{width:100%}.button--loading{position:relative}.button__spinner{position:absolute;display:flex;align-items:center;justify-content:center}.button__spinner-circle{width:16px;height:16px;border:2px solid currentColor;border-top-color:transparent;border-radius:50%;animation:button-spin .8s linear infinite}.button__content--hidden{visibility:hidden}@keyframes button-spin{to{transform:rotate(360deg)}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@media(prefers-color-scheme:dark){.button--secondary{background-color:#374151;color:#e5e7eb}.button--secondary:hover:not(:disabled){background-color:#4b5563}.button--secondary:active:not(:disabled){background-color:#6b7280}.button--ghost{color:#60a5fa}.button--ghost:hover:not(:disabled){background-color:#60a5fa1a}.button--ghost:active:not(:disabled){background-color:#60a5fa33}}.modal__overlay{position:fixed;top:0;left:0;right:0;bottom:0;display:flex;align-items:center;justify-content:center;background-color:#00000080;z-index:1000;padding:20px;animation:modal-fade-in .2s ease-out}@keyframes modal-fade-in{0%{opacity:0}to{opacity:1}}.modal{background-color:#fff;border-radius:12px;box-shadow:0 20px 25px -5px #0000001a,0 10px 10px -5px #0000000a;max-width:500px;width:100%;max-height:90vh;display:flex;flex-direction:column;animation:modal-slide-in .2s ease-out}@keyframes modal-slide-in{0%{transform:translateY(-20px);opacity:0}to{transform:translateY(0);opacity:1}}.modal:focus{outline:none}.modal__header{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid #e5e7eb}.modal__title{margin:0;font-size:18px;font-weight:600;color:#111827}.modal__close{background:none;border:none;font-size:24px;line-height:1;cursor:pointer;color:#6b7280;padding:4px;margin:-4px;border-radius:4px;transition:color .2s,background-color .2s}.modal__close:hover{color:#111827;background-color:#f3f4f6}.modal__close:focus{outline:2px solid #3b82f6;outline-offset:2px}.modal__body{padding:20px;overflow-y:auto;flex:1}.modal__footer{display:flex;align-items:center;justify-content:flex-end;gap:12px;padding:16px 20px;border-top:1px solid #e5e7eb}@media(prefers-color-scheme:dark){.modal__overlay{background-color:#000000b3}.modal{background-color:#1f2937;box-shadow:0 20px 25px -5px #0000004d,0 10px 10px -5px #0003}.modal__header{border-bottom-color:#374151}.modal__title{color:#f9fafb}.modal__close{color:#9ca3af}.modal__close:hover{color:#f9fafb;background-color:#374151}.modal__footer{border-top-color:#374151}}@media(max-width:480px){.modal__overlay{padding:10px}.modal{max-height:95vh}.modal__header{padding:12px 16px}.modal__body{padding:16px}.modal__footer{padding:12px 16px;flex-direction:column}.modal__footer>*{width:100%}}.project-list{padding:1rem}.project-list__header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.5rem}.project-list__title{font-size:1.5rem;font-weight:600;color:#1a1a1a;margin:0}.project-list__empty{text-align:center;padding:3rem 1rem;color:#666}.project-list__empty-icon{font-size:3rem;margin-bottom:1rem;opacity:.5}.project-list__empty-text{font-size:1rem;margin-bottom:1.5rem}.project-list__items{display:grid;gap:1rem}.project-card{background:#fff;border:1px solid #e0e0e0;border-radius:8px;padding:1rem;transition:box-shadow .2s ease,border-color .2s ease}.project-card:hover{border-color:#4a90d9;box-shadow:0 2px 8px #4a90d926}.project-card__header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:.75rem}.project-card__name{font-size:1.125rem;font-weight:500;color:#1a1a1a;margin:0;word-break:break-word}.project-card__actions{display:flex;gap:.5rem;flex-shrink:0}.project-card__info{display:flex;flex-wrap:wrap;gap:1rem;font-size:.875rem;color:#666;margin-bottom:1rem}.project-card__stat{display:flex;align-items:center;gap:.25rem}.project-card__stat-icon{opacity:.7}.project-card__date{font-size:.75rem;color:#999}.project-card__practice-buttons{display:flex;gap:.5rem;margin-top:.75rem;padding-top:.75rem;border-top:1px solid #f0f0f0}.delete-confirm__message{margin-bottom:1rem;color:#333}.delete-confirm__project-name{font-weight:600;color:#d32f2f}.delete-confirm__warning{font-size:.875rem;color:#666;margin-top:.5rem}.delete-confirm__actions{display:flex;justify-content:flex-end;gap:.75rem}.file-upload{margin-bottom:1rem}.file-upload__label{display:block;font-size:.875rem;font-weight:500;color:#333;margin-bottom:.5rem}.file-upload__required{color:#d32f2f;margin-left:.25rem}.file-upload__dropzone{position:relative;border:2px dashed #ccc;border-radius:8px;padding:1.5rem;text-align:center;cursor:pointer;transition:border-color .2s ease,background-color .2s ease}.file-upload__dropzone:hover{border-color:#4a90d9;background-color:#f8fafc}.file-upload__dropzone--dragover{border-color:#4a90d9;background-color:#e8f4fd}.file-upload__dropzone--has-file{border-style:solid;border-color:#4caf50;background-color:#f1f8e9}.file-upload__dropzone--error{border-color:#d32f2f;background-color:#ffebee}.file-upload__input{position:absolute;top:0;left:0;width:100%;height:100%;opacity:0;cursor:pointer}.file-upload__content{pointer-events:none}.file-upload__icon{font-size:2rem;margin-bottom:.5rem;opacity:.7}.file-upload__text{font-size:.875rem;color:#666;margin:0}.file-upload__hint{font-size:.75rem;color:#999;margin-top:.25rem}.file-upload__file-info{display:flex;align-items:center;justify-content:center;gap:.5rem}.file-upload__file-name{font-weight:500;color:#333;word-break:break-all}.file-upload__file-size{font-size:.75rem;color:#666}.file-upload__clear{background:none;border:none;color:#d32f2f;cursor:pointer;padding:.25rem;font-size:1rem;line-height:1;border-radius:50%;transition:background-color .2s ease;pointer-events:auto}.file-upload__clear:hover{background-color:#d32f2f1a}.file-upload__error{display:flex;align-items:center;gap:.5rem;margin-top:.5rem;padding:.5rem;background-color:#ffebee;border-radius:4px;font-size:.875rem;color:#d32f2f}.file-upload__error-icon{flex-shrink:0}.project-create-form{padding:1rem;max-width:700px;margin:0 auto}.project-create-form__header{display:flex;align-items:center;gap:1rem;margin-bottom:1.5rem}.project-create-form__back{background:none;border:none;font-size:1.5rem;cursor:pointer;padding:.25rem;color:#666;transition:color .2s ease}.project-create-form__back:hover{color:#333}.project-create-form__title{font-size:1.5rem;font-weight:600;color:#1a1a1a;margin:0}.project-create-form__form{display:flex;flex-direction:column;gap:1.5rem}.project-create-form__field{display:flex;flex-direction:column}.project-create-form__label{font-size:.875rem;font-weight:500;color:#333;margin-bottom:.5rem}.project-create-form__required{color:#d32f2f;margin-left:.25rem}.project-create-form__input{padding:.75rem;border:1px solid #ccc;border-radius:6px;font-size:1rem;transition:border-color .2s ease,box-shadow .2s ease}.project-create-form__input:focus{outline:none;border-color:#4a90d9;box-shadow:0 0 0 3px #4a90d926}.project-create-form__input--error{border-color:#d32f2f}.project-create-form__input--error:focus{box-shadow:0 0 0 3px #d32f2f26}.project-create-form__textarea{padding:.75rem;border:1px solid #ccc;border-radius:6px;font-size:1rem;font-family:inherit;resize:vertical;min-height:200px;transition:border-color .2s ease,box-shadow .2s ease}.project-create-form__textarea:focus{outline:none;border-color:#4a90d9;box-shadow:0 0 0 3px #4a90d926}.project-create-form__error{display:flex;align-items:center;gap:.5rem;margin-top:.5rem;font-size:.875rem;color:#d32f2f}.project-create-form__error-icon{flex-shrink:0}.project-create-form__files{display:grid;gap:1rem}@media(min-width:600px){.project-create-form__files{grid-template-columns:1fr 1fr}}.project-create-form__actions{display:flex;justify-content:flex-end;gap:.75rem;margin-top:1rem;padding-top:1rem;border-top:1px solid #e0e0e0}.project-create-form__global-error{padding:1rem;background-color:#ffebee;border:1px solid #ffcdd2;border-radius:6px;color:#c62828}.project-create-form__global-error-title{font-weight:600;margin-bottom:.5rem}.project-create-form__global-error-message{font-size:.875rem}.project-create-form__optional{font-weight:400;color:#666;font-size:.75rem;margin-left:.5rem}.project-create-form__hint{margin-top:.5rem;font-size:.75rem;color:#666}.project-create-form__error--warning{color:#f57c00}.project-create-form__mode-tabs{display:flex;gap:.5rem;flex-wrap:wrap}.project-create-form__mode-tab{padding:.5rem 1rem;border:1px solid #ccc;border-radius:6px;background:#fff;cursor:pointer;font-size:.875rem;transition:all .2s ease}.project-create-form__mode-tab:hover{border-color:#4a90d9;color:#4a90d9}.project-create-form__mode-tab--active{background:#4a90d9;border-color:#4a90d9;color:#fff}.project-create-form__mode-tab--active:hover{background:#3a7bc8;color:#fff}.project-create-form__mode-tab:disabled{opacity:.6;cursor:not-allowed}.project-create-form__file-input{padding:.75rem;border:1px dashed #ccc;border-radius:6px;background:#fafafa}.project-create-form__api-section{display:flex;flex-direction:column;gap:1rem;padding:1rem;background:#f8f9fa;border-radius:8px;border:1px solid #e9ecef}.project-create-form__select{padding:.75rem;border:1px solid #ccc;border-radius:6px;font-size:1rem;background:#fff;cursor:pointer;transition:border-color .2s ease,box-shadow .2s ease}.project-create-form__select:focus{outline:none;border-color:#4a90d9;box-shadow:0 0 0 3px #4a90d926}.project-create-form__select:disabled{background:#f5f5f5;cursor:not-allowed}.save-expression-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#0000004d;z-index:999}.save-expression-popup{position:fixed;z-index:1000;background:#fff;border-radius:8px;box-shadow:0 4px 20px #00000026;width:320px;max-width:calc(100vw - 32px)}.save-expression-popup__header{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;border-bottom:1px solid #e0e0e0}.save-expression-popup__title{margin:0;font-size:1rem;font-weight:600;color:#333}.save-expression-popup__close{background:none;border:none;font-size:1.5rem;color:#666;cursor:pointer;padding:0;line-height:1}.save-expression-popup__close:hover{color:#333}.save-expression-popup__form{padding:16px;display:flex;flex-direction:column;gap:12px}.save-expression-popup__field{display:flex;flex-direction:column;gap:4px}.save-expression-popup__label{font-size:.75rem;font-weight:500;color:#666}.save-expression-popup__input{padding:8px 12px;border:1px solid #ddd;border-radius:6px;font-size:.9rem;transition:border-color .2s}.save-expression-popup__input:focus{outline:none;border-color:#4a90d9}.save-expression-popup__textarea{padding:8px 12px;border:1px solid #ddd;border-radius:6px;font-size:.9rem;font-family:inherit;resize:vertical;transition:border-color .2s}.save-expression-popup__textarea:focus{outline:none;border-color:#4a90d9}.save-expression-popup__actions{display:flex;justify-content:flex-end;gap:8px;padding:12px 16px;border-top:1px solid #e0e0e0}.save-expression-popup__cancel{padding:8px 16px;border:1px solid #ddd;border-radius:6px;background:#fff;color:#666;cursor:pointer;font-size:.875rem;transition:all .2s}.save-expression-popup__cancel:hover{background:#f5f5f5}.save-expression-popup__save{padding:8px 16px;border:none;border-radius:6px;background:#4a90d9;color:#fff;cursor:pointer;font-size:.875rem;transition:all .2s}.save-expression-popup__save:hover:not(:disabled){background:#3a7bc8}.save-expression-popup__save:disabled{background:#ccc;cursor:not-allowed}.pv{position:absolute;top:0;left:0;right:0;bottom:0;display:flex;flex-direction:column;background:#fff}.pv__empty{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;gap:16px;color:#6b7280}.pv__toolbar{position:fixed;top:70px;right:24px;z-index:100;display:flex;align-items:center;gap:12px;padding:8px 12px;background:#fffffff2;border:1px solid #e5e7eb;border-radius:10px;box-shadow:0 2px 12px #00000014;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.pv__toolbar-tabs{display:flex;background:#f3f4f6;border-radius:8px;padding:3px;gap:2px}.pv__tab{padding:6px 16px;font-size:.875rem;border:none;border-radius:6px;background:transparent;color:#6b7280;cursor:pointer;transition:all .15s;font-weight:500}.pv__tab:hover:not(:disabled){color:#374151}.pv__tab--active{background:#fff;color:#111827;box-shadow:0 1px 3px #0000001a}.pv__tab:disabled{opacity:.5;cursor:not-allowed}.pv__btn{padding:6px 14px;font-size:.875rem;border:1px solid #d1d5db;border-radius:6px;background:#fff;color:#374151;cursor:pointer;transition:all .15s}.pv__btn:hover:not(:disabled){background:#f9fafb;border-color:#9ca3af}.pv__btn:disabled{opacity:.5;cursor:not-allowed}.pv__btn--ghost{border-color:transparent;background:transparent;color:#6b7280}.pv__btn--ghost:hover:not(:disabled){background:#f3f4f6;color:#374151}.pv__body{position:absolute;top:0;left:0;right:0;bottom:0;display:grid;grid-template-columns:1fr 1fr}.pv__col{position:relative;display:flex;flex-direction:column;border-right:1px solid #e5e7eb;overflow:hidden}.pv__col:last-child{border-right:none}.pv__col-label{font-size:.75rem;font-weight:600;color:#9ca3af;text-transform:uppercase;letter-spacing:.05em;padding:8px 24px;border-bottom:1px solid #e5e7eb;background:#fafafa;flex-shrink:0}.pv__editor{position:absolute;top:36px;left:0;right:0;bottom:0;padding:20px 24px;font-size:1rem;line-height:1.8;font-family:inherit;border:none;outline:none;resize:none;background:#fff;color:#1f2937;overflow-y:auto}.pv__editor::placeholder{color:#d1d5db}.pv__content{position:absolute;top:36px;left:0;right:0;bottom:0;padding:20px 24px;font-size:1rem;line-height:1.8;color:#1f2937;overflow-y:auto;white-space:pre-wrap;word-break:break-word;-webkit-user-select:text;user-select:text;cursor:text}.pv__content::selection,.pv__content *::selection{background:#fef08a}.pv__empty-text{color:#d1d5db;font-style:italic}.pv__content mark{background-color:#fff9c4;padding:0;border-radius:2px}.sentence-item{padding:1rem;border-bottom:1px solid #e9ecef;transition:background-color .2s ease}.sentence-item:last-child{border-bottom:none}.sentence-item:hover{background-color:#f8f9fa}.sentence-item__index{display:inline-block;min-width:2rem;padding:.125rem .5rem;margin-right:.75rem;background:#e9ecef;border-radius:4px;font-size:.75rem;color:#666;text-align:center}.sentence-item__content{display:flex;flex-direction:column;gap:.75rem}.sentence-item__source{display:flex;align-items:flex-start;gap:.75rem}.sentence-item__source-text{flex:1;font-size:1rem;line-height:1.6;color:#333}.sentence-item__toggle{flex-shrink:0;padding:.375rem .75rem;border:1px solid #007bff;background:transparent;border-radius:4px;font-size:.75rem;color:#007bff;cursor:pointer;transition:all .2s ease;white-space:nowrap}.sentence-item__toggle:hover,.sentence-item__toggle--active{background:#007bff;color:#fff}.sentence-item__toggle:focus-visible{outline:2px solid #007bff;outline-offset:2px}.sentence-item__translation{display:flex;align-items:flex-start;gap:.75rem;padding:.75rem;background:#f0f7ff;border-radius:6px;border-left:3px solid #007bff;animation:slideDown .2s ease}@keyframes slideDown{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.sentence-item__translation-label{flex-shrink:0;padding:.125rem .5rem;background:#007bff;border-radius:4px;font-size:.625rem;color:#fff;text-transform:uppercase}.sentence-item__translation-text{flex:1;font-size:.9375rem;line-height:1.6;color:#333;-webkit-user-select:text;user-select:text}.sentence-item__translation-text::selection{background:#ffeb3b;color:#333}.sentence-item__save-popup{position:absolute;z-index:100;padding:.5rem;background:#fff;border-radius:6px;box-shadow:0 4px 12px #00000026;animation:fadeIn .15s ease}@keyframes fadeIn{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}.sentence-item__save-button{display:flex;align-items:center;gap:.375rem;padding:.5rem .75rem;border:none;background:#28a745;border-radius:4px;font-size:.8125rem;color:#fff;cursor:pointer;transition:background-color .2s ease}.sentence-item__save-button:hover{background:#218838}.sentence-item__save-button:focus-visible{outline:2px solid #28a745;outline-offset:2px}.glossary-manager{padding:1rem;max-width:1200px;margin:0 auto}.glossary-manager__header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.5rem;flex-wrap:wrap;gap:1rem}.glossary-manager__title{font-size:1.5rem;font-weight:600;color:#1a1a1a;margin:0}.glossary-manager__nav{display:flex;gap:.5rem}.glossary-manager__filters{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem;gap:1rem;flex-wrap:wrap}.glossary-manager__search-input{padding:.5rem 1rem;border:1px solid #ddd;border-radius:6px;font-size:.9rem;width:300px;max-width:100%}.glossary-manager__search-input:focus{outline:none;border-color:#4a90d9}.glossary-manager__stats{color:#666;font-size:.875rem}.glossary-manager__table-wrapper{overflow-x:auto;border:1px solid #e0e0e0;border-radius:8px}.glossary-manager__table{width:100%;border-collapse:collapse;font-size:.9rem}.glossary-manager__table th,.glossary-manager__table td{padding:12px 16px;text-align:left;border-bottom:1px solid #e0e0e0}.glossary-manager__table th{background:#f8f9fa;font-weight:600;color:#333;white-space:nowrap}.glossary-manager__table tr:last-child td{border-bottom:none}.glossary-manager__table tr:hover{background:#f8f9fa}.glossary-manager__notes{color:#666;max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.glossary-manager__actions{white-space:nowrap;display:flex;gap:4px}.glossary-manager__btn{padding:4px 8px;border:1px solid #ddd;border-radius:4px;background:#fff;color:#666;cursor:pointer;font-size:.75rem;transition:all .2s}.glossary-manager__btn:hover{background:#f5f5f5;border-color:#ccc}.glossary-manager__btn--danger{color:#d32f2f;border-color:#ffcdd2}.glossary-manager__btn--danger:hover{background:#ffebee;border-color:#ef9a9a}.glossary-manager__btn--save{background:#4a90d9;color:#fff;border-color:#4a90d9}.glossary-manager__btn--save:hover{background:#3a7bc8}.glossary-manager__btn--cancel{color:#666}.glossary-manager__edit-input{width:100%;padding:4px 8px;border:1px solid #4a90d9;border-radius:4px;font-size:.9rem}.glossary-manager__edit-input:focus{outline:none}.glossary-manager__empty{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:4rem 2rem;text-align:center}.glossary-manager__empty-icon{font-size:3rem;margin-bottom:1rem}.glossary-manager__empty-text{color:#666;margin-bottom:1.5rem;max-width:400px}.delete-confirm__actions{display:flex;gap:.5rem;justify-content:flex-end}.delete-confirm__message{color:#333}.delete-confirm__warning{color:#d32f2f;font-size:.875rem;margin-top:.5rem}.glossary-manager__btn--ai{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;border-color:#667eea}.glossary-manager__btn--ai:hover{background:linear-gradient(135deg,#5a67d8,#6b46c1);border-color:#5a67d8}.glossary-manager__explanation{min-height:150px}.glossary-manager__explanation-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:2rem;color:#666}.glossary-manager__spinner{width:32px;height:32px;border:3px solid #e0e0e0;border-top-color:#667eea;border-radius:50%;animation:spin 1s linear infinite;margin-bottom:1rem}.glossary-manager__explanation-section{margin-bottom:1.5rem}.glossary-manager__explanation-section:last-child{margin-bottom:0}.glossary-manager__explanation-section h4{font-size:.875rem;font-weight:600;color:#667eea;margin:0 0 .5rem}.glossary-manager__explanation-section p{margin:0;line-height:1.6;color:#333}.glossary-manager__api-config{display:flex;flex-direction:column;gap:1rem}.glossary-manager__config-field{display:flex;flex-direction:column;gap:.25rem}.glossary-manager__config-field label{font-size:.875rem;font-weight:500;color:#333}.glossary-manager__config-field input,.glossary-manager__config-field select{padding:.5rem .75rem;border:1px solid #ddd;border-radius:6px;font-size:.9rem}.glossary-manager__config-field input:focus,.glossary-manager__config-field select:focus{outline:none;border-color:#667eea}.flashcard-card{background:#fff;border-radius:12px;box-shadow:0 4px 20px #0000001a;max-width:500px;margin:2rem auto;overflow:hidden}.flashcard-card__header{display:flex;justify-content:space-between;align-items:center;padding:12px 20px;background:#f8f9fa;border-bottom:1px solid #e0e0e0}.flashcard-card__language-tag{font-size:.75rem;font-weight:600;color:#4a90d9;background:#e3f2fd;padding:4px 8px;border-radius:4px}.flashcard-card__review-count{font-size:.75rem;color:#666}.flashcard-card__content{padding:24px 20px}.flashcard-card__section{margin-bottom:20px}.flashcard-card__section:last-child{margin-bottom:0}.flashcard-card__label{font-size:.75rem;font-weight:600;color:#666;text-transform:uppercase;margin-bottom:8px}.flashcard-card__text{font-size:1.25rem;line-height:1.6;color:#333}.flashcard-card__text--question{font-size:1.5rem;font-weight:500;text-align:center;padding:20px 0}.flashcard-card__text--answer{font-size:1.25rem;text-align:center;padding:16px 0;color:#4a90d9;background:#f0f7ff;border-radius:8px}.flashcard-card__answer-area{margin-top:20px}.flashcard-card__notes{margin-top:12px;padding:12px;background:#fff9e6;border-radius:6px;font-size:.875rem;color:#666}.flashcard-card__notes-label{font-weight:600;color:#f5a623}.flashcard-card__actions{display:flex;justify-content:space-between;gap:16px;padding:20px;background:#f8f9fa;border-top:1px solid #e0e0e0}.flashcard-card__action-group{display:flex;flex-direction:column;align-items:center;gap:8px;flex:1}.flashcard-card__action-hint{font-size:.75rem;color:#999}.flashcard-review{padding:20px;max-width:800px;margin:0 auto;min-height:100vh}.flashcard-review__header{display:flex;align-items:center;justify-content:space-between;margin-bottom:24px;flex-wrap:wrap;gap:16px}.flashcard-review__title{margin:0;font-size:24px;font-weight:600;color:#111827}.flashcard-review__nav{display:flex;gap:8px}.flashcard-review__stats{display:flex;justify-content:center;gap:32px;margin-bottom:24px;padding:16px;background-color:#f9fafb;border-radius:12px}.flashcard-review__stat{display:flex;flex-direction:column;align-items:center;gap:4px}.flashcard-review__stat-value{font-size:28px;font-weight:700;color:#3b82f6}.flashcard-review__stat-label{font-size:14px;color:#6b7280}.flashcard-review__progress{height:8px;background-color:#e5e7eb;border-radius:4px;margin-bottom:24px;overflow:hidden}.flashcard-review__progress-bar{height:100%;background-color:#10b981;border-radius:4px;transition:width .3s ease}.flashcard-review__empty{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;text-align:center}.flashcard-review__empty-icon{font-size:64px;margin-bottom:16px}.flashcard-review__empty-text{color:#6b7280;font-size:18px;margin:0 0 24px;max-width:400px;line-height:1.6}.flashcard-review__empty-actions{display:flex;gap:12px;flex-wrap:wrap;justify-content:center}@media(prefers-color-scheme:dark){.flashcard-review__title{color:#f9fafb}.flashcard-review__stats{background-color:#1f2937}.flashcard-review__stat-value{color:#60a5fa}.flashcard-review__stat-label{color:#9ca3af}.flashcard-review__progress{background-color:#374151}.flashcard-review__empty-text{color:#9ca3af}}@media(max-width:640px){.flashcard-review{padding:16px}.flashcard-review__header{flex-direction:column;align-items:flex-start}.flashcard-review__nav{width:100%;justify-content:flex-end}.flashcard-review__stats{gap:16px;padding:12px}.flashcard-review__stat-value{font-size:24px}.flashcard-review__stat-label{font-size:12px}.flashcard-review__empty-icon{font-size:48px}.flashcard-review__empty-text{font-size:16px}}.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#667eea,#764ba2);padding:20px}.login-container{background:#fff;border-radius:16px;padding:48px;max-width:400px;width:100%;box-shadow:0 20px 60px #0003;text-align:center}.login-header h1{margin:0 0 8px;font-size:28px;color:#333}.login-header p{margin:0;color:#666;font-size:14px}.login-content{margin:40px 0}.login-description{color:#666;margin-bottom:24px;line-height:1.6}.feishu-login-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:14px 32px;background:#3370ff;color:#fff;border:none;border-radius:8px;font-size:16px;font-weight:500;cursor:pointer;transition:all .2s ease;width:100%}.feishu-login-btn:hover:not(:disabled){background:#2860e0;transform:translateY(-1px);box-shadow:0 4px 12px #3370ff66}.feishu-login-btn:disabled{opacity:.7;cursor:not-allowed}.feishu-icon{width:20px;height:20px}.login-footer{margin-top:24px}.login-footer p{color:#999;font-size:12px;margin:0}.user-menu{position:relative}.user-menu-trigger{display:flex;align-items:center;gap:8px;padding:6px 12px;background:transparent;border:1px solid #e0e0e0;border-radius:24px;cursor:pointer;transition:all .2s ease}.user-menu-trigger:hover{background:#f5f5f5;border-color:#ccc}.user-avatar{width:28px;height:28px;border-radius:50%;object-fit:cover}.user-avatar-placeholder{width:28px;height:28px;border-radius:50%;background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:500}.user-name{font-size:14px;color:#333;max-width:100px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dropdown-icon{width:18px;height:18px;color:#666;transition:transform .2s ease}.dropdown-icon.open{transform:rotate(180deg)}.user-menu-dropdown{position:absolute;top:calc(100% + 8px);right:0;min-width:200px;background:#fff;border-radius:8px;box-shadow:0 4px 20px #00000026;z-index:1000;overflow:hidden}.user-menu-header{padding:16px;background:#f9f9f9}.user-menu-name{display:block;font-weight:500;color:#333;margin-bottom:4px}.user-menu-id{font-size:12px;color:#999}.user-menu-divider{height:1px;background:#eee}.user-menu-item{display:flex;align-items:center;gap:10px;width:100%;padding:12px 16px;background:transparent;border:none;cursor:pointer;font-size:14px;color:#333;transition:background .2s ease}.user-menu-item:hover{background:#f5f5f5}.user-menu-item svg{width:18px;height:18px;color:#666}.user-menu-item.logout{color:#e53935}.user-menu-item.logout svg{color:#e53935}.migration-dialog{min-width:360px;padding:16px 0}.migration-loading{display:flex;flex-direction:column;align-items:center;padding:32px;gap:16px}.migration-spinner{width:40px;height:40px;border:3px solid #e5e7eb;border-top-color:#3b82f6;border-radius:50%;animation:spin 1s linear infinite}.migration-loading p,.migration-empty p{color:#6b7280;margin:0}.migration-empty{text-align:center;padding:24px}.migration-empty .btn{margin-top:16px}.migration-ready{padding:0 8px}.migration-description{color:#374151;margin:0 0 20px;line-height:1.6}.migration-stats{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;margin-bottom:24px}.migration-stat{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;background:#f9fafb;border-radius:8px}.migration-stat-label{color:#6b7280;font-size:14px}.migration-stat-value{font-weight:600;color:#111827;font-size:18px}.migration-actions{display:flex;gap:12px;justify-content:center}.migration-success,.migration-error{text-align:center;padding:16px}.migration-success-icon{width:64px;height:64px;margin:0 auto 16px;background:#10b981;color:#fff;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:32px;font-weight:700}.migration-error-icon{width:64px;height:64px;margin:0 auto 16px;background:#ef4444;color:#fff;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:32px;font-weight:700}.migration-success h3,.migration-error h3{margin:0 0 16px;color:#111827}.migration-result{text-align:left;background:#f9fafb;border-radius:8px;padding:16px;margin-bottom:16px}.migration-result p{margin:0 0 8px;color:#374151;font-weight:500}.migration-result ul{margin:0;padding-left:20px;color:#6b7280}.migration-result li{margin:4px 0}.migration-question{color:#374151;margin:0 0 16px}.migration-error-message{color:#ef4444;margin:0 0 24px}.app{height:100vh;display:flex;flex-direction:column;overflow:hidden}.app-nav{display:flex;align-items:center;justify-content:space-between;padding:12px 24px;background-color:#fff;border-bottom:1px solid #e5e7eb;position:sticky;top:0;z-index:100}.app-nav__brand{display:flex;align-items:center}.app-nav__title{font-size:20px;font-weight:600;color:#111827;margin:0}.app-nav__links{display:flex;gap:8px}.app-nav__user{display:flex;align-items:center}.app-nav__link{padding:8px 16px;border:none;border-radius:6px;background-color:transparent;color:#6b7280;font-size:14px;font-weight:500;cursor:pointer;transition:all .2s}.app-nav__link:hover{background-color:#f3f4f6;color:#111827}.app-nav__link--active{background-color:#3b82f6;color:#fff}.app-nav__link--active:hover{background-color:#2563eb;color:#fff}.app-main{flex:1;min-height:0;position:relative;background-color:#f9fafb;overflow:auto}.app-placeholder{display:flex;align-items:center;justify-content:center;min-height:400px;color:#6b7280;font-size:16px}@media(prefers-color-scheme:dark){.app-nav{background-color:#1f2937;border-bottom-color:#374151}.app-nav__title{color:#f9fafb}.app-nav__link{color:#9ca3af}.app-nav__link:hover{background-color:#374151;color:#f9fafb}.app-nav__link--active{background-color:#3b82f6;color:#fff}.app-main{background-color:#111827}.app-placeholder{color:#9ca3af}}@media(max-width:640px){.app-nav{padding:12px 16px;flex-direction:column;gap:12px}.app-nav__links{width:100%;justify-content:center}.app-nav__link{flex:1;text-align:center}}.app-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:400px;gap:16px}.app-loading__spinner{width:40px;height:40px;border:3px solid #e5e7eb;border-top-color:#3b82f6;border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.app-loading__text{color:#6b7280;font-size:14px;margin:0}.app-error{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:400px;padding:24px;text-align:center}.app-error__icon{font-size:48px;margin-bottom:16px}.app-error__title{font-size:20px;font-weight:600;color:#111827;margin:0 0 8px}.app-error__message{color:#6b7280;font-size:14px;margin:0 0 24px;max-width:400px}.app-error__actions{display:flex;gap:12px;margin-bottom:16px}.app-error__hint{color:#9ca3af;font-size:12px;margin:0;max-width:400px}@media(prefers-color-scheme:dark){.app-loading__spinner{border-color:#374151;border-top-color:#3b82f6}.app-loading__text{color:#9ca3af}.app-error__title{color:#f9fafb}.app-error__message{color:#9ca3af}.app-error__hint{color:#6b7280}}
