.login-container{min-height:100vh;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#667eea,#764ba2);padding:20px}.login-box{background:#fff;border-radius:12px;box-shadow:0 8px 32px #0003;width:100%;max-width:420px;overflow:hidden}.login-header{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;padding:32px 32px 24px;text-align:center}.login-header h1{font-size:28px;margin-bottom:8px;font-weight:600}.login-header p{font-size:14px;opacity:.9}.login-form{padding:32px}.btn-full{width:100%;padding:12px;font-size:15px;margin-top:8px}.login-footer{padding:24px 32px;background:#f8f9fa;border-top:1px solid #e9ecef}.hint{font-size:13px;color:#6c757d;text-align:center;line-height:1.6;margin:0}.hint strong{color:#495057}.card h2{font-size:20px;margin-bottom:20px;color:#333}.no-files{text-align:center;padding:40px;color:#6c757d;font-size:15px}.file-highlight-banner{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px;padding:12px 14px;background:#e7f1ff;border:1px solid #b6d4fe;border-radius:8px;font-size:14px;color:#084298}.table tbody tr.file-row-highlight{background:#fff3cd;box-shadow:inset 0 0 0 2px #ffc107}.table tbody tr.file-row-highlight.dropdown-active{z-index:2}.table-container{overflow-x:auto;overflow-y:visible;position:relative}.table tbody tr{position:relative;z-index:1}.table tbody tr.dropdown-active{z-index:9999!important}.table tbody tr:has(.dropdown:hover){z-index:9999}.table tbody td:last-child:has(.dropdown:hover),.table tbody tr.dropdown-active td:last-child{z-index:10000}.action-buttons{display:flex;gap:8px;flex-wrap:wrap;position:relative}.action-buttons .btn{position:relative;z-index:1}.dropdown{position:relative;display:inline-block}.dropdown:hover{z-index:10000}.dropdown-content{display:none;position:absolute;background-color:#fff;min-width:220px;box-shadow:0 4px 16px #00000026;border-radius:6px;z-index:99999;top:calc(100% - 1px);right:0;margin-top:0;border:1px solid #e0e0e0;padding:4px 0}.dropdown .btn{position:relative;z-index:1}.dropdown:hover .btn{z-index:1}.dropdown:hover .dropdown-content{display:block}.dropdown:hover .dropdown-content,.dropdown-content:hover{display:block!important}.dropdown-content button{width:100%;padding:10px 16px;text-align:left;border:none;background:none;cursor:pointer;font-size:13px;color:#333;transition:background .2s}.dropdown-content button:hover{background:#f8f9fa}.dropdown-content button:first-child{border-radius:6px 6px 0 0}.dropdown-content button:last-child{border-radius:0 0 6px 6px}.file-upload-card h2{font-size:20px;margin-bottom:20px;color:#333}.upload-mode-selector{display:flex;gap:12px;margin-bottom:20px}.mode-btn{flex:1;padding:12px;border:2px solid #e9ecef;background:#fff;border-radius:8px;font-size:14px;font-weight:500;cursor:pointer;transition:all .2s}.mode-btn:hover{border-color:#4a90e2;color:#4a90e2}.mode-btn.active{border-color:#4a90e2;background:#e3f2fd;color:#4a90e2}.upload-section{display:flex;flex-direction:column;gap:12px}.file-input-wrapper input[type=file]{width:100%;padding:10px;border:2px dashed #ddd;border-radius:6px;cursor:pointer}.file-name{font-size:14px;color:#495057;margin-top:8px}.progress-bar{width:100%;height:30px;background:#e9ecef;border-radius:6px;overflow:hidden}.progress-fill{height:100%;background:linear-gradient(90deg,#4a90e2,#357abd);color:#fff;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:600;transition:width .3s ease}.hint{font-size:13px;color:#6c757d;margin:8px 0 0}.prompt-editor{display:flex;flex-direction:column;gap:20px}.description{color:#6c757d;font-size:14px;line-height:1.6;margin-bottom:24px}.prompt-section{border:1px solid #e9ecef;border-radius:8px;padding:20px;margin-bottom:20px;background:#f8f9fa}.prompt-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.prompt-header h3{font-size:16px;font-weight:600;color:#333;margin:0}.prompt-actions{display:flex;gap:8px}.prompt-textarea{width:100%;padding:12px;border:1px solid #ddd;border-radius:6px;font-size:14px;font-family:Courier New,monospace;line-height:1.6;resize:vertical;min-height:120px;background:#fff}.prompt-textarea:focus{outline:none;border-color:#4a90e2;box-shadow:0 0 0 3px #4a90e21a}.prompt-meta{font-size:12px;color:#6c757d;margin-top:8px;margin-bottom:0}.tips-card{background:linear-gradient(135deg,#fff9e6,#fffbf0);border:1px solid #ffe8a1}.tips-card h3{font-size:16px;font-weight:600;color:#856404;margin-bottom:16px}.tips-list{list-style-type:none;padding:0;margin:0}.tips-list li{padding:8px 0 8px 24px;position:relative;color:#856404;font-size:14px;line-height:1.5}.tips-list li:before{content:"•";position:absolute;left:8px;font-weight:700}.settings{display:grid;grid-template-columns:1fr 1fr;gap:20px}.settings .card h2{font-size:20px;margin-bottom:20px;color:#333}.settings form{display:flex;flex-direction:column;gap:16px}@media (max-width: 768px){.settings{grid-template-columns:1fr}}.system-settings .card{max-width:900px}.system-settings h3{margin:24px 0 12px;font-size:16px;color:#444}.system-settings .hint{color:#6c757d;font-size:14px;margin-bottom:16px}.system-settings .form-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px}.system-settings .textarea{font-family:monospace;font-size:12px}.system-settings .checks{align-items:center;margin:12px 0}.system-settings .checkbox-label{display:flex;align-items:center;gap:8px;font-size:14px}.system-settings .sheet-output-color-row{margin-bottom:16px}.system-settings .sheet-color-inputs{display:flex;align-items:center;gap:12px;margin-top:10px;max-width:280px}.system-settings .input-color-swatch{width:48px;height:40px;padding:2px;border:1px solid #ced4da;border-radius:6px;cursor:pointer;background:#fff}.system-settings .input-color-swatch:disabled{opacity:.5;cursor:not-allowed}.system-settings .error-message{color:#c0392b;margin-bottom:12px}.system-settings .success-message{color:#27ae60;margin-bottom:12px}.system-settings .openai-status-bar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px;padding:14px 16px;border-radius:8px;margin-bottom:20px;border:1px solid #ddd}.system-settings .openai-status-bar.status-ok{background:#e8f8ef;border-color:#27ae60}.system-settings .openai-status-bar.status-error{background:#fdecea;border-color:#e74c3c}.system-settings .openai-status-bar.status-neutral{background:#f8f9fa}.system-settings .openai-status-text{font-size:14px;flex:1;min-width:200px}.system-settings .status-time{color:#6c757d;font-size:12px}.system-settings .secret-saved-box{display:flex;align-items:center;gap:12px;padding:10px 12px;background:#e8f8ef;border:1px solid #b8e0c8;border-radius:6px;margin-bottom:8px}.system-settings .badge-saved{font-size:12px;font-weight:600;color:#1e7e34;white-space:nowrap}.system-settings .secret-masked{font-family:monospace;font-size:13px;color:#333;word-break:break-all}.system-settings .secret-not-set{font-size:13px;color:#856404;background:#fff3cd;padding:8px 12px;border-radius:6px;margin-bottom:8px}.system-settings .field-hint{font-size:12px;color:#6c757d;margin:6px 0 0;line-height:1.4}.system-settings .block-hint{margin:0 0 12px}.sheet-sync-toolbar .ss-toolbar-head{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:16px}.sheet-sync-toolbar .status-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-top:20px}@media (max-width: 768px){.sheet-sync-toolbar .status-grid{grid-template-columns:repeat(2,1fr)}}.sheet-sync .stat-card{background:#f8f9fa;border:1px solid #e9ecef;border-radius:8px;padding:12px 14px}.sheet-sync .stat-label{display:block;font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:#6c757d;margin-bottom:4px}.sheet-sync .stat-value{font-size:14px;font-weight:600;color:#212529}.sheet-sync .stat-sub{display:block;margin-top:4px;font-size:12px;font-weight:400;color:#6c757d}.sheet-sync .stat-value.ok{color:#198754}.sheet-sync .stat-value.warn{color:#dc3545}.sheet-sync .btn-row{display:flex;flex-wrap:wrap;gap:10px}.sheet-sync-grid{display:grid;grid-template-columns:minmax(280px,1fr) minmax(360px,1.4fr);gap:20px;margin-top:20px;align-items:stretch}@media (max-width: 960px){.sheet-sync-grid{grid-template-columns:1fr}}.sheet-sync .ss-panel{display:flex;flex-direction:column;min-height:200px}.sheet-sync .ss-panel-equal{min-height:520px;max-height:520px}.sheet-sync .ss-panel-body{flex:1;min-height:0;display:flex;flex-direction:column}.sheet-sync .ss-panel h3{margin:0 0 4px}.sheet-sync .ss-panel-hint,.sheet-sync .ss-run-summary{margin:0 0 12px;font-size:13px;color:#6c757d}.sheet-sync .ss-empty{color:#adb5bd;font-size:14px;margin:24px 0}.sheet-sync .ss-panel-head{display:flex;align-items:baseline;gap:12px;margin-bottom:12px}.sheet-sync .ss-count{font-size:13px;color:#6c757d}.sheet-sync .ss-filters{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-bottom:12px}.sheet-sync .ss-search-form{display:flex;flex-wrap:wrap;gap:8px;flex:1;min-width:200px}.sheet-sync .ss-search-form input[type=search]{flex:1;min-width:160px;padding:8px 10px;border:1px solid #ced4da;border-radius:6px;font-size:13px}.sheet-sync .ss-filters select{padding:8px 10px;border:1px solid #ced4da;border-radius:6px;font-size:13px;background:#fff}.sheet-sync .ss-table-wrap{overflow-x:auto;flex:1}.sheet-sync .ss-history-scroll,.sheet-sync .ss-run-items-table{flex:1;min-height:0;overflow-y:auto;overflow-x:auto;border:1px solid #eee;border-radius:8px}.sheet-sync .ss-filters-compact{margin-bottom:10px}.sheet-sync .ss-run-focus-banner{margin:0 0 12px;padding:10px 12px;background:#d1e7dd;border:1px solid #a3cfbb;border-radius:8px;font-size:13px;color:#0f5132}.sheet-sync .ss-jobs-hint{margin:0 0 12px;font-size:13px;color:#495057}.sheet-sync .data-table tbody tr.ss-row-highlight{background:#f0fdf4}.sheet-sync .data-table tbody tr.ss-row-highlight:hover{background:#dcfce7}.sheet-sync .ss-url-link{display:inline-block;max-width:100%;word-break:break-all}.sheet-sync .ss-muted{color:#adb5bd}.sheet-sync .ss-jobs-panel .url-cell{max-width:320px;min-width:140px}.sheet-sync .data-table{width:100%;border-collapse:collapse;font-size:13px}.sheet-sync .data-table th,.sheet-sync .data-table td{padding:10px 8px;border-bottom:1px solid #eee;text-align:left;vertical-align:top}.sheet-sync .data-table th{background:#f8f9fa;font-weight:600;position:sticky;top:0;z-index:1}.sheet-sync .data-table tbody tr.clickable,.sheet-sync-grid .data-table tbody tr{cursor:pointer}.sheet-sync .data-table tbody tr:hover{background:#f8f9fa}.sheet-sync .data-table tbody tr.selected{background:#e7f1ff}.sheet-sync .empty-cell{text-align:center;color:#adb5bd;cursor:default}.sheet-sync .url-cell{max-width:360px;min-width:160px;word-break:break-all}.sheet-sync .ss-error-cell{max-width:220px;font-size:12px;color:#842029;word-break:break-word}.sheet-sync .url-cell a{color:#2563eb;text-decoration:none}.sheet-sync .url-cell a:hover{text-decoration:underline}.sheet-sync .ss-file-link{padding:0;border:none;background:none;color:#2563eb;font-weight:600;font-size:13px;cursor:pointer;text-decoration:none}.sheet-sync .ss-file-link:hover{text-decoration:underline}.sheet-sync .ss-drive-cell{min-width:100px}.sheet-sync .ss-drive-folder-link{display:block;margin-top:4px;font-size:12px}.sheet-sync .ss-actions-cell{min-width:108px;white-space:nowrap}.sheet-sync .ss-actions-cell .btn+.btn{margin-top:6px}.sheet-sync .btn-drive-retry{background:#fff3cd;border-color:#ffc107;color:#664d03}.sheet-sync .btn-drive-retry:hover:not(:disabled){background:#ffe69c}.sheet-sync .status-done{background:#d1e7dd;color:#0f5132}.sheet-sync .detail-text{font-size:12px;color:#6c757d;margin-top:4px}.sheet-sync .ss-status-cell{min-width:200px}.sheet-sync .ss-download-progress{display:flex;flex-direction:column;gap:4px;align-items:flex-start}.sheet-sync .ss-progress-track{width:100%;max-width:220px;height:6px;background:#e9ecef;border-radius:3px;overflow:hidden}.sheet-sync .ss-progress-fill{height:100%;background:#0d6efd;border-radius:3px;transition:width .3s ease}.sheet-sync .ss-progress-fill.ss-progress-indeterminate{width:40%!important;animation:ss-progress-pulse 1.2s ease-in-out infinite}@keyframes ss-progress-pulse{0%{transform:translate(-100%)}50%{transform:translate(150%)}to{transform:translate(-100%)}}.sheet-sync .ss-progress-meta{display:flex;flex-wrap:wrap;gap:8px;font-size:12px;color:#495057}.sheet-sync .status-downloading{background:#cfe2ff;color:#084298}.sheet-sync .status-pill,.sheet-sync .action-pill{display:inline-block;padding:2px 8px;border-radius:4px;font-size:11px;font-weight:500;background:#e9ecef;white-space:nowrap}.sheet-sync .status-done,.sheet-sync .action-new{background:#d1e7dd;color:#0f5132}.sheet-sync .status-failed,.sheet-sync .action-retry_failed{background:#f8d7da;color:#842029}.sheet-sync .status-pending{background:#fff3cd;color:#664d03}.sheet-sync .status-transcribing,.sheet-sync .status-processing,.sheet-sync .status-ai_generating{background:#e2d9f3;color:#432874}.sheet-sync .ss-live-badge{color:#0d6efd;font-weight:600}.sheet-sync .action-skipped_baseline,.sheet-sync .action-skipped_duplicate{background:#e2e3e5;color:#41464b}.sheet-sync .action-baseline{background:#cff4fc;color:#055160}.sheet-sync .ss-pagination{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-top:14px;padding-top:12px;border-top:1px solid #eee}.sheet-sync .ss-pagination-info{font-size:13px;color:#6c757d}.sheet-sync .ss-pagination-controls{display:flex;flex-wrap:wrap;gap:6px;align-items:center}.sheet-sync .ss-ellipsis{padding:0 4px;color:#adb5bd}.sheet-sync .ss-inline-loading{padding:24px;text-align:center;color:#6c757d}.sheet-sync .ss-jobs-panel{margin-top:20px}.sheet-sync .ss-dry-run-banner{margin-top:12px;padding:12px 14px;background:#fff3cd;border:1px solid #ffecb5;border-radius:8px;font-size:14px;color:#664d03}.sheet-sync .ss-processing-banner{display:flex;align-items:flex-start;gap:12px;margin-top:16px;padding:14px 16px;background:#e7f1ff;border:1px solid #b6d4fe;border-radius:8px;font-size:14px;color:#084298}.sheet-sync .ss-processing-banner p{margin:4px 0 0;font-size:13px;color:#495057}.sheet-sync .ss-processing-spinner{width:22px;height:22px;border:3px solid #b6d4fe;border-top-color:#0d6efd;border-radius:50%;animation:ss-spin .8s linear infinite;flex-shrink:0;margin-top:2px}@keyframes ss-spin{to{transform:rotate(360deg)}}.sheet-sync .btn:disabled{opacity:.65;cursor:not-allowed}.sheet-sync .hint{color:#6c757d;font-size:14px;margin:4px 0 0}.sheet-sync .error-message{color:#c0392b;margin-top:12px}.sheet-sync .success-message{color:#27ae60;margin-top:12px}.user-management-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.user-management-header h2{margin:0}.badge-admin{background:#fff3cd;color:#856404}.badge-user{background:#d1ecf1;color:#0c5460}.badge-active{background:#d4edda;color:#155724}.badge-inactive{background:#f8d7da;color:#721c24}.modal{background:#fff;border-radius:8px;max-width:500px;width:90%;max-height:90vh;overflow-y:auto;box-shadow:0 4px 16px #0003}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:20px 24px;border-bottom:1px solid #e9ecef}.modal-footer{display:flex;justify-content:flex-end;gap:12px;margin-top:20px;padding-top:20px;border-top:1px solid #e9ecef}.btn-warning{background:#ffc107;color:#000}.btn-warning:hover{background:#e0a800}.dashboard{min-height:100vh;background:#f5f7fa}.dashboard-header{background:linear-gradient(135deg,#667eea,#764ba2);color:#fff;padding:20px 0;box-shadow:0 2px 8px #0000001a}.header-content{max-width:1200px;margin:0 auto;padding:0 20px;display:flex;justify-content:space-between;align-items:center}.dashboard-header h1{font-size:24px;font-weight:600;margin:0}.header-right{display:flex;align-items:center;gap:16px}.user-name{font-size:14px;opacity:.9}*{margin:0;padding:0;box-sizing:border-box}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;background:#f5f7fa;color:#333}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}#root{min-height:100vh}.container{max-width:1200px;margin:0 auto;padding:20px}.btn{padding:10px 20px;border:none;border-radius:6px;font-size:14px;font-weight:500;cursor:pointer;transition:all .2s}.btn-primary{background:#4a90e2;color:#fff}.btn-primary:hover{background:#357abd}.btn-secondary{background:#6c757d;color:#fff}.btn-secondary:hover{background:#5a6268}.btn-success{background:#28a745;color:#fff}.btn-success:hover{background:#218838}.btn-danger{background:#dc3545;color:#fff}.btn-danger:hover{background:#c82333}.btn-sm{padding:6px 12px;font-size:12px}.btn:disabled{opacity:.5;cursor:not-allowed}.card{background:#fff;border-radius:8px;box-shadow:0 2px 8px #0000001a;padding:24px;margin-bottom:20px}.input{width:100%;padding:10px 12px;border:1px solid #ddd;border-radius:6px;font-size:14px;transition:border-color .2s}.input:focus{outline:none;border-color:#4a90e2}.label{display:block;margin-bottom:8px;font-weight:500;font-size:14px;color:#555}.form-group{margin-bottom:16px}.alert{padding:12px 16px;border-radius:6px;margin-bottom:16px;font-size:14px}.alert-error{background:#f8d7da;color:#721c24;border:1px solid #f5c6cb}.alert-success{background:#d4edda;color:#155724;border:1px solid #c3e6cb}.alert-info{background:#d1ecf1;color:#0c5460;border:1px solid #bee5eb}.table{width:100%;border-collapse:collapse}.table th,.table td{padding:12px;text-align:left;border-bottom:1px solid #e9ecef}.table tbody td:last-child{position:relative}.table th{background:#f8f9fa;font-weight:600;font-size:13px;color:#495057;text-transform:uppercase;letter-spacing:.5px}.table tbody tr:hover{background:#f8f9fa}.badge{display:inline-block;padding:4px 8px;border-radius:4px;font-size:12px;font-weight:500}.badge-uploaded{background:#e3f2fd;color:#1976d2}.badge-transcribing{background:#fff3e0;color:#f57c00}.badge-transcribed{background:#e8f5e9;color:#388e3c}.badge-generated{background:#f3e5f5;color:#7b1fa2}.badge-failed{background:#ffebee;color:#c62828}.tabs{display:flex;border-bottom:2px solid #e9ecef;margin-bottom:24px}.tab{padding:12px 24px;background:none;border:none;border-bottom:2px solid transparent;font-size:15px;font-weight:500;color:#6c757d;cursor:pointer;transition:all .2s;margin-bottom:-2px}.tab:hover{color:#4a90e2}.tab.active{color:#4a90e2;border-bottom-color:#4a90e2}.loading{display:flex;align-items:center;justify-content:center;padding:40px;color:#6c757d}.spinner{border:3px solid #f3f3f3;border-top:3px solid #4a90e2;border-radius:50%;width:24px;height:24px;animation:spin 1s linear infinite;margin-right:12px}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000}.modal{background:#fff;border-radius:8px;max-width:600px;width:90%;max-height:90vh;overflow-y:auto;box-shadow:0 4px 16px #0003}.modal-header{padding:20px 24px;border-bottom:1px solid #e9ecef}.modal-title{font-size:18px;font-weight:600;margin:0}.modal-body{padding:24px}.modal-footer{padding:16px 24px;border-top:1px solid #e9ecef;display:flex;justify-content:flex-end;gap:12px}
