:root{font-family:system-ui,-apple-system,sans-serif;line-height:1.5;font-weight:400;color-scheme:dark;color:#e5e7eb;background-color:#0b0f14}body{margin:0;min-width:320px;min-height:100vh;background-color:#0b0f14;color:#e5e7eb}*{box-sizing:border-box}body{margin:0;padding:0;background-color:#0b0f14;color:#e5e7eb;font-family:system-ui,-apple-system,sans-serif;font-size:15px;line-height:1.5}.app-container{display:flex;height:100vh;max-width:1600px;margin:0 auto;gap:24px;padding:20px}.left-panel{width:500px;display:flex;flex-direction:column;gap:20px;padding:20px;border-right:2px solid #1f2937;overflow-y:auto;background-color:#0f172a;border-radius:8px}.left-panel h2{margin-top:0;margin-bottom:20px;font-size:20px;font-weight:600;color:#f9fafb}.left-panel h3{margin-top:0;margin-bottom:16px;font-size:18px;font-weight:600;color:#f9fafb}.left-panel h4{margin-top:0;margin-bottom:12px;font-size:16px;font-weight:600;color:#e5e7eb}.input-section{flex-shrink:0}.preview-section{flex:1;min-height:0}.control-group{margin-bottom:20px}.control-group label{display:block;margin-bottom:8px;font-weight:600;color:#e5e7eb;font-size:15px}.control-group textarea{width:100%;min-height:100px;padding:12px;font-size:15px;border:1px solid #374151;border-radius:6px;background-color:#1f2937;color:#e5e7eb;resize:vertical}.control-group textarea:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}.checkbox-group{display:flex;flex-direction:column;gap:10px;margin-bottom:12px}.checkbox-item{display:flex;align-items:center;gap:8px}.checkbox-item input[type=checkbox]{width:18px;height:18px;cursor:pointer}.checkbox-item label{color:#e5e7eb;font-weight:500;cursor:pointer;margin:0;font-size:14px}.number-input-group{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.number-input-group label{margin:0}.number-input-group input[type=number]{width:70px;padding:6px;border:1px solid #374151;border-radius:4px;background-color:#1f2937;color:#e5e7eb;font-size:14px}.number-input-group .hint{font-size:12px;color:#9ca3af}.button-group{display:flex;flex-direction:column;gap:10px}.btn{padding:12px 16px;font-size:16px;font-weight:600;border:none;border-radius:6px;cursor:pointer;transition:all .2s}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background-color:#4caf50;color:#fff}.btn-primary:hover:not(:disabled){background-color:#45a049}.btn-secondary{background-color:#2196f3;color:#fff}.btn-secondary:hover:not(:disabled){background-color:#0b7dda}.btn-warning{background-color:#ff9800;color:#fff}.btn-warning:hover:not(:disabled){background-color:#e68900}.btn-danger{background-color:#f44336;color:#fff}.btn-danger:hover:not(:disabled){background-color:#da190b}.status-hint{margin-top:16px;padding:12px;background-color:#1f2937;border:1px solid #374151;border-radius:6px}.status-hint-row{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.status-hint-row:last-child{margin-bottom:0}.status-hint-label{font-size:13px;color:#9ca3af}.status-hint-value{font-size:14px;color:#e5e7eb;font-weight:500}.stage-badge-mini{padding:4px 8px;border-radius:4px;font-size:12px;font-weight:600;text-transform:uppercase}.stage-badge-mini.idle{background-color:#6b7280;color:#fff}.stage-badge-mini.running{background-color:#3b82f6;color:#fff}.stage-badge-mini.done{background-color:#10b981;color:#fff}.stage-badge-mini.error{background-color:#ef4444;color:#fff}.time-value-mini{font-family:Courier New,monospace;font-size:14px;font-weight:600;color:#60a5fa}.preview-mode-toggle{display:flex;gap:8px;margin-bottom:16px}.preview-mode-btn{flex:1;padding:8px;font-size:14px;font-weight:500;border:1px solid #374151;border-radius:4px;background-color:#1f2937;color:#e5e7eb;cursor:pointer;transition:all .2s}.preview-mode-btn.active{background-color:#3b82f6;border-color:#3b82f6;color:#fff}.preview-mode-btn:hover{background-color:#374151}.single-preview{margin-bottom:20px}.page-selector{display:flex;gap:8px;margin-bottom:16px;align-items:center}.page-nav-btn{padding:6px 12px;font-size:16px;border:1px solid #374151;border-radius:4px;background-color:#1f2937;color:#e5e7eb;cursor:pointer}.page-nav-btn:disabled{opacity:.5;cursor:not-allowed}.page-nav-btn:hover:not(:disabled){background-color:#374151}.page-select{flex:1;padding:6px;border:1px solid #374151;border-radius:4px;background-color:#1f2937;color:#e5e7eb;font-size:14px}.preview-image-container{position:relative;margin-bottom:12px}.image-with-overlay{position:relative;width:100%;border-radius:8px;overflow:hidden;border:2px solid #374151}.preview-image{width:100%;height:auto;display:block;position:relative;z-index:1}.preview-placeholder{width:100%;aspect-ratio:9/16;display:flex;align-items:center;justify-content:center;background-color:#1f2937;border:2px dashed #374151;border-radius:8px;color:#9ca3af;font-size:14px}.overlay-text{position:absolute;left:0;right:0;padding:16px;z-index:10;pointer-events:none}.overlay-text.text-position-top{top:0;bottom:auto!important;transform:none!important}.overlay-text.text-position-center{top:50%;bottom:auto!important;transform:translateY(-50%)!important}.overlay-text.text-position-bottom{top:auto!important;bottom:0;transform:none!important}.overlay-background{position:absolute;inset:0;background:linear-gradient(to top,rgba(0,0,0,.7),rgba(0,0,0,.3),transparent);z-index:1}.overlay-text.text-position-top .overlay-background{background:linear-gradient(to bottom,rgba(0,0,0,.7),rgba(0,0,0,.3),transparent)}.overlay-text.text-position-center .overlay-background{background:radial-gradient(ellipse,rgba(0,0,0,.6),transparent)}.overlay-text-content{position:relative;z-index:2;color:#fff;text-shadow:2px 2px 4px rgba(0,0,0,.8),-1px -1px 2px rgba(0,0,0,.8);text-align:center}.overlay-line{margin-bottom:8px;font-weight:600;line-height:1.4}.overlay-line:last-child{margin-bottom:0}.overlay-text.text-size-small .overlay-line{font-size:14px}.overlay-text.text-size-medium .overlay-line{font-size:18px}.overlay-text.text-size-large .overlay-line{font-size:24px}.overlay-text-thumb{position:absolute;left:0;right:0;padding:8px;z-index:10}.overlay-text-thumb.text-position-top{top:0}.overlay-text-thumb.text-position-center{top:50%;transform:translateY(-50%)}.overlay-text-thumb.text-position-bottom{bottom:0}.overlay-text-thumb .overlay-line{margin-bottom:4px;font-size:12px}.overlay-text-thumb.text-size-small .overlay-line{font-size:10px}.overlay-text-thumb.text-size-medium .overlay-line{font-size:12px}.overlay-text-thumb.text-size-large .overlay-line{font-size:14px}.page-status-mini{display:flex;gap:8px;align-items:center;justify-content:center;padding:8px;background-color:#1f2937;border-radius:4px}.page-status-badge{padding:4px 8px;border-radius:4px;font-size:11px;font-weight:600;text-transform:uppercase}.page-status-badge.queued{background-color:#6b7280;color:#fff}.page-status-badge.ok{background-color:#10b981;color:#fff}.page-status-badge.failed{background-color:#ef4444;color:#fff}.page-time-mini{font-family:Courier New,monospace;font-size:12px;color:#9ca3af}.copy-page-debug-btn{padding:4px 8px;font-size:11px;background-color:#374151;color:#e5e7eb;border:1px solid #4b5563;border-radius:4px;cursor:pointer}.copy-page-debug-btn:hover{background-color:#4b5563}.all-preview{display:flex;flex-direction:column;gap:12px;max-height:600px;overflow-y:auto}.preview-thumbnail{position:relative;border-radius:6px;overflow:hidden;border:1px solid #374151}.thumbnail-with-overlay{position:relative;width:100%}.thumbnail-image{width:100%;height:auto;display:block}.thumbnail-placeholder{width:100%;aspect-ratio:9/16;display:flex;align-items:center;justify-content:center;background-color:#1f2937;color:#9ca3af;font-size:20px}.thumbnail-status{display:flex;justify-content:space-between;align-items:center;padding:6px 8px;background-color:#1f2937}.thumbnail-status-badge{padding:2px 6px;border-radius:3px;font-size:11px;font-weight:600}.thumbnail-status-badge.queued{background-color:#6b7280;color:#fff}.thumbnail-status-badge.running{background-color:#3b82f6;color:#fff}.thumbnail-status-badge.ok{background-color:#10b981;color:#fff}.thumbnail-status-badge.failed{background-color:#ef4444;color:#fff}.thumbnail-time{font-family:Courier New,monospace;font-size:11px;color:#9ca3af}.overlay-controls{margin-top:20px;padding:16px;background-color:#1f2937;border:1px solid #374151;border-radius:6px}.overlay-control-row{display:flex;align-items:center;gap:12px;margin-bottom:12px}.overlay-control-row:last-child{margin-bottom:0}.overlay-control-row label{min-width:60px;font-size:14px;color:#e5e7eb;margin:0}.position-buttons,.size-buttons{display:flex;gap:6px}.position-btn,.size-btn{padding:6px 12px;font-size:13px;border:1px solid #374151;border-radius:4px;background-color:#0f172a;color:#e5e7eb;cursor:pointer;transition:all .2s}.position-btn.active,.size-btn.active{background-color:#3b82f6;border-color:#3b82f6;color:#fff}.position-btn:hover,.size-btn:hover{background-color:#374151}.overlay-control-row input[type=checkbox]{margin-right:6px;cursor:pointer}.right-panel{flex:1;padding:20px;overflow-y:auto;background-color:#0f172a;border-radius:8px}.right-panel h2{margin-top:0;margin-bottom:20px;font-size:20px;font-weight:600;color:#f9fafb}.right-panel h3{font-size:18px;font-weight:600;color:#f9fafb;margin-top:0;margin-bottom:16px}.right-panel h4{font-size:16px;font-weight:600;color:#e5e7eb;margin-top:0;margin-bottom:12px}.status-dashboard{margin-bottom:20px;padding:16px;background-color:#1f2937;border:1px solid #374151;border-radius:8px}.status-row{display:flex;justify-content:space-between;align-items:center;padding:10px 0;border-bottom:1px solid #374151}.status-row:last-child{border-bottom:none}.status-label{font-weight:600;color:#d1d5db;font-size:14px}.status-value{color:#e5e7eb;font-size:14px;display:flex;align-items:center;gap:8px}.copy-btn{padding:4px 8px;font-size:11px;background-color:#374151;color:#e5e7eb;border:1px solid #4b5563;border-radius:4px;cursor:pointer}.copy-btn:hover{background-color:#4b5563}.stage-badge{padding:6px 12px;border-radius:6px;font-size:13px;font-weight:600;text-transform:uppercase}.stage-badge.idle{background-color:#6b7280;color:#fff}.stage-badge.running{background-color:#3b82f6;color:#fff}.stage-badge.done{background-color:#10b981;color:#fff}.stage-badge.error{background-color:#ef4444;color:#fff}.time-value{font-family:Courier New,monospace;font-size:16px;font-weight:600;color:#60a5fa}.debug-card{margin-bottom:16px;background-color:#1f2937;border:1px solid #374151;border-radius:6px;overflow:hidden}.debug-card-summary{padding:12px 16px;cursor:pointer;font-weight:600;color:#e5e7eb;font-size:15px;background-color:#1f2937;-webkit-user-select:none;user-select:none}.debug-card-summary:hover{background-color:#374151}.debug-card-content{padding:16px;border-top:1px solid #374151}.debug-pre{font-family:Courier New,monospace;font-size:12px;color:#e5e7eb;margin:0;padding:12px;background-color:#0b0f14;border-radius:4px;overflow-x:auto;white-space:pre-wrap;word-wrap:break-word}.timing-table{width:100%;border-collapse:collapse;font-family:Courier New,monospace;font-size:13px}.timing-table td{padding:8px 12px;border-bottom:1px solid #374151}.timing-table td:first-child{color:#d1d5db;font-weight:500}.timing-table td:last-child{color:#60a5fa;text-align:right;font-weight:600}.timing-separator{background-color:#0b0f14}.timing-separator td{color:#9ca3af;font-weight:600;padding-top:12px;border-bottom:2px solid #374151}.error-box{margin-bottom:16px;padding:12px;background-color:#7f1d1d;border:1px solid #ef4444;border-radius:6px;color:#fca5a5;font-size:14px}.error-box strong{color:#fee}.logs-section{margin-bottom:16px}.logs-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.logs-controls{display:flex;gap:8px;align-items:center}.logs-toggle{padding:6px 12px;font-size:12px;background-color:#374151;color:#e5e7eb;border:1px solid #4b5563;border-radius:4px;cursor:pointer}.logs-toggle.active{background-color:#3b82f6;border-color:#3b82f6}.logs-copy-btn{padding:6px 12px;font-size:13px;font-weight:600;background-color:#3b82f6;color:#fff;border:none;border-radius:4px;cursor:pointer}.logs-copy-btn:hover{background-color:#2563eb}.logs-copy-btn:disabled{opacity:.5;cursor:not-allowed}.logs-container{padding:12px;background-color:#000;color:#0f0;font-family:Courier New,monospace;font-size:12px;border-radius:6px;max-height:400px;overflow-y:auto;border:1px solid #374151}.logs-container::-webkit-scrollbar{width:8px}.logs-container::-webkit-scrollbar-track{background:#1a1a1a}.logs-container::-webkit-scrollbar-thumb{background:#4b5563;border-radius:4px}.logs-container::-webkit-scrollbar-thumb:hover{background:#6b7280}.log-line{margin-bottom:3px;line-height:1.5}.log-line.error{color:#ff6b6b}.log-line.empty{color:#6b7280;font-style:italic}.user-page-container{display:flex;height:100vh;max-width:1800px;margin:0 auto;gap:0;padding:0}.user-main-panel{flex:1;display:flex;flex-direction:column;padding:20px;overflow-y:auto;background-color:#0f172a;min-width:0}.user-main-panel h1{margin-top:0;margin-bottom:24px;font-size:24px;font-weight:600;color:#f9fafb}.user-input-section{flex-shrink:0;margin-bottom:24px;padding:20px;background-color:#1f2937;border:1px solid #374151;border-radius:8px}.user-results-section{flex:1;min-height:0;padding:20px;background-color:#1f2937;border:1px solid #374151;border-radius:8px}.user-results-section h2{margin-top:0;margin-bottom:16px;font-size:20px;font-weight:600;color:#f9fafb}.results-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.toggle-label{display:flex;align-items:center;gap:8px;font-size:14px;color:#e5e7eb;cursor:pointer}.toggle-label input[type=checkbox]{width:18px;height:18px;cursor:pointer}.empty-results{display:flex;align-items:center;justify-content:center;min-height:200px;color:#9ca3af;font-size:16px}.pages-list{display:flex;flex-direction:column;gap:20px;max-height:100%;overflow-y:auto}.page-item{display:flex;flex-direction:column;gap:8px}.page-image-container{position:relative;width:100%;max-width:400px;margin:0 auto;border-radius:8px;overflow:hidden;border:2px solid #374151;background-color:#0b0f14}.page-image{width:100%;height:auto;display:block;max-height:600px;position:relative;z-index:1}.page-placeholder{width:100%;aspect-ratio:9/16;display:flex;align-items:center;justify-content:center;background-color:#1f2937;color:#9ca3af;font-size:16px;min-height:300px}.page-status{display:flex;justify-content:center;align-items:center;gap:12px;padding:8px}.page-status-badge{padding:4px 12px;border-radius:4px;font-size:12px;font-weight:600;text-transform:uppercase}.page-status-badge.waiting{background-color:#6b7280;color:#fff}.page-status-badge.running{background-color:#3b82f6;color:#fff}.page-status-badge.done{background-color:#10b981;color:#fff}.page-status-badge.error{background-color:#ef4444;color:#fff}.page-time{font-family:Courier New,monospace;font-size:13px;color:#9ca3af}.debug-sidebar{width:0;overflow:hidden;transition:width .3s ease;background-color:#0f172a;border-left:1px solid #374151;position:relative}.debug-sidebar.open{width:400px;min-width:400px}.debug-toggle-btn{position:absolute;left:-40px;top:20px;width:40px;height:60px;background-color:#1f2937;border:1px solid #374151;border-right:none;border-radius:6px 0 0 6px;color:#e5e7eb;cursor:pointer;font-size:16px;display:flex;align-items:center;justify-content:center;z-index:10}.debug-toggle-btn:hover{background-color:#374151}.debug-content{padding:20px;height:100vh;overflow-y:auto}.debug-content h3{margin-top:0;margin-bottom:16px;font-size:18px;font-weight:600;color:#f9fafb}.debug-content h4{margin-top:12px;margin-bottom:8px;font-size:14px;font-weight:600;color:#e5e7eb}.debug-content .timing-table{width:100%;border-collapse:collapse;font-family:Courier New,monospace;font-size:13px;margin-top:8px}.debug-content .timing-table th{padding:8px 12px;text-align:left;background-color:#1f2937;color:#d1d5db;font-weight:600;border-bottom:2px solid #374151}.debug-content .timing-table td{padding:8px 12px;border-bottom:1px solid #374151;color:#e5e7eb}.debug-content .timing-table td:first-child{color:#d1d5db;font-weight:500}.debug-content .timing-table td:nth-child(2){color:#60a5fa;text-align:right;font-weight:600}.debug-content .timing-table td:nth-child(3){color:#9ca3af;text-align:right}.debug-content .timing-table .timing-total-row{background-color:#0b0f14;font-weight:600}.debug-content .timing-table .timing-total-row td{border-top:2px solid #374151;padding-top:12px}.candidates-section{margin-top:16px;margin-bottom:16px}.candidates-section label{display:block;margin-bottom:8px;font-size:14px;font-weight:500;color:#e5e7eb}.candidates-list{display:flex;flex-direction:column;gap:8px;max-height:200px;overflow-y:auto}.candidate-item{padding:12px 16px;background-color:#374151;border:1px solid #4b5563;border-radius:6px;cursor:pointer;transition:all .2s}.candidate-item:hover{background-color:#4b5563;border-color:#60a5fa}.candidate-title{font-size:16px;font-weight:600;color:#f9fafb;margin-bottom:4px}.candidate-author{font-size:13px;color:#9ca3af}.poem-modal-overlay{position:fixed;inset:0;background-color:#000000b3;display:flex;align-items:center;justify-content:center;z-index:1000;padding:20px}.poem-modal{background-color:#1f2937;border:1px solid #374151;border-radius:12px;width:100%;max-width:600px;max-height:80vh;display:flex;flex-direction:column;box-shadow:0 20px 25px -5px #0000004d}.poem-modal.edit-mode{max-width:800px;max-height:90vh}.poem-modal-header{padding:20px 24px;border-bottom:1px solid #374151;display:flex;flex-direction:column;gap:8px;position:relative}.poem-modal-header h2{margin:0;font-size:24px;font-weight:600;color:#f9fafb}.poem-modal-author{font-size:14px;color:#9ca3af}.poem-modal-close{position:absolute;top:20px;right:24px;width:32px;height:32px;background:none;border:none;font-size:28px;color:#9ca3af;cursor:pointer;display:flex;align-items:center;justify-content:center;border-radius:4px;transition:all .2s}.poem-modal-close:hover{background-color:#374151;color:#f9fafb}.poem-modal-content{flex:1;padding:24px;overflow-y:auto;min-height:200px}.poem-lines-view{display:flex;flex-direction:column;gap:12px}.poem-line-item{font-size:18px;line-height:1.8;color:#f9fafb;padding:8px 0}.poem-lines-edit{display:flex;flex-direction:column;gap:8px}.page-break-insert{margin:8px 0;padding:12px;border:2px dashed #4b5563;border-radius:6px;cursor:pointer;transition:all .2s;background-color:#0f172a}.page-break-insert:hover{border-color:#60a5fa;background-color:#1e3a5f}.page-break-insert.has-break{border-color:#10b981;border-style:solid;background-color:#064e3b}.page-break-placeholder{text-align:center;color:#6b7280;font-size:13px;padding:4px}.page-break-marker{text-align:center;color:#10b981;font-size:14px;font-weight:500;padding:4px}.page-count-hint{margin-top:16px;padding:12px;background-color:#374151;border-radius:6px;text-align:center;color:#e5e7eb;font-size:14px}.poem-modal-footer{padding:20px 24px;border-top:1px solid #374151;display:flex;gap:12px;justify-content:center}.edit-mode-hint{padding:12px;background-color:#374151;border-radius:6px;color:#9ca3af;font-size:13px;text-align:center;line-height:1.6}.page-break-loading{padding:40px 20px;text-align:center;color:#60a5fa;font-size:16px}.page-break-error{padding:12px;background-color:#7f1d1d;border:1px solid #991b1b;border-radius:6px;color:#fca5a5;font-size:13px;margin-bottom:16px;line-height:1.6}
