:root{--color-primary:#2563eb;--color-primary-hover:#1d4ed8;--color-primary-light:#eff6ff;--color-success:#16a34a;--color-warning:#d97706;--color-error:#dc2626;--color-text:#111827;--color-text-muted:#6b7280;--color-border:#e5e7eb;--color-surface:#fff;--color-background:#f9fafb;--radius-sm:6px;--radius-md:10px;--radius-lg:16px;--shadow-sm:0 1px 3px #00000014;--shadow-md:0 4px 12px #0000001a;--font-size-sm:.875rem;--font-size-base:1rem;--font-size-lg:1.125rem;--font-size-xl:1.25rem;--font-size-2xl:1.5rem;--spacing-xs:4px;--spacing-sm:8px;--spacing-md:16px;--spacing-lg:24px;--spacing-xl:32px;--spacing-2xl:48px}*{box-sizing:border-box;margin:0;padding:0}input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}body{background:var(--color-background);color:var(--color-text);font-family:system-ui,-apple-system,sans-serif;line-height:1.5}#root{min-height:100vh}.navbar{padding:0 var(--spacing-lg);border-bottom:1px solid var(--color-border);background:var(--color-surface);justify-content:space-between;align-items:center;height:56px;display:flex}.navbar-logo{cursor:pointer;width:auto;height:100%;padding:0;display:block}.navbar-user{align-items:center;gap:var(--spacing-md);display:flex}.navbar-identity{font-size:var(--font-size-sm);color:var(--color-text-muted)}.navbar-logout{border:1px solid var(--color-border);border-radius:var(--radius-sm);padding:var(--spacing-xs) var(--spacing-md);font-size:var(--font-size-sm);color:var(--color-text-muted);cursor:pointer;background:0 0;transition:border-color .15s,color .15s}.navbar-logout:hover{border-color:var(--color-error);color:var(--color-error)}.main-content{max-width:1100px;padding:var(--spacing-2xl) var(--spacing-lg);margin:0 auto}.login-page{background:var(--color-background);min-height:100vh;padding:var(--spacing-lg);justify-content:center;align-items:center;display:flex}.login-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);width:100%;max-width:400px;padding:var(--spacing-2xl);box-shadow:var(--shadow-md)}.login-header{text-align:center;margin-bottom:var(--spacing-xl)}.login-title{font-size:var(--font-size-xl);color:var(--color-text);margin-bottom:var(--spacing-xs);font-weight:700}.login-subtitle{font-size:var(--font-size-sm);color:var(--color-text-muted)}.login-form{gap:var(--spacing-md);flex-direction:column;display:flex}.form-field{gap:var(--spacing-xs);flex-direction:column;display:flex}.form-field label{font-size:var(--font-size-sm);color:var(--color-text);font-weight:500}.form-field input{padding:10px var(--spacing-md);border:1px solid var(--color-border);border-radius:var(--radius-sm);font-size:var(--font-size-base);color:var(--color-text);background:var(--color-surface);box-sizing:border-box;width:100%;transition:border-color .15s}.form-field input:focus{border-color:var(--color-primary);outline:none;box-shadow:0 0 0 3px #2563eb1a}.form-field input:disabled{background:var(--color-background);color:var(--color-text-muted)}.password-wrapper{position:relative}.password-wrapper input{padding-right:72px}.password-toggle{right:var(--spacing-md);font-size:var(--font-size-sm);color:var(--color-primary);cursor:pointer;background:0 0;border:none;padding:0;font-weight:500;position:absolute;top:50%;transform:translateY(-50%)}.password-toggle:hover{color:var(--color-primary-hover)}.login-error{font-size:var(--font-size-sm);color:var(--color-error);border-radius:var(--radius-sm);padding:var(--spacing-sm) var(--spacing-md);background:#fef2f2;border:1px solid #fecaca;margin:0}.login-btn{background:var(--color-primary);color:#fff;border-radius:var(--radius-sm);width:100%;font-size:var(--font-size-base);cursor:pointer;margin-top:var(--spacing-xs);border:none;padding:12px;font-weight:600;transition:background .15s}.login-btn:hover:not(:disabled){background:var(--color-primary-hover)}.login-btn:disabled{opacity:.6;cursor:not-allowed}.dashboard{gap:var(--spacing-xl);flex-direction:column;display:flex}.dashboard-actions{gap:var(--spacing-xl);grid-template-columns:1fr 1fr;align-items:start;display:grid}.dashboard-action-item{min-width:0}.dashboard-history{gap:var(--spacing-xl);grid-template-columns:1fr 1fr;align-items:start;display:grid}.dashboard-history-col{min-width:0}@media (width<=768px){.dashboard-history{grid-template-columns:1fr}}.recent-coding-list{gap:var(--spacing-xs);flex-direction:column;display:flex}.recent-coding-row{justify-content:space-between;align-items:center;gap:var(--spacing-md);padding:var(--spacing-sm) var(--spacing-md);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);display:flex}.recent-coding-info{flex-direction:column;gap:2px;min-width:0;display:flex}.recent-coding-topics{font-size:var(--font-size-sm);color:var(--color-text);white-space:nowrap;text-overflow:ellipsis;font-weight:500;overflow:hidden}.recent-coding-meta{font-size:var(--font-size-sm);color:var(--color-text-muted)}.recent-coding-actions{align-items:center;gap:var(--spacing-sm);flex-shrink:0;display:flex}.btn-view-all{margin-top:var(--spacing-xs);padding:var(--spacing-xs) 0;color:var(--color-primary);font-size:var(--font-size-sm);cursor:pointer;text-align:left;background:0 0;border:none;font-weight:500}.btn-view-all:hover{text-decoration:underline}.coding-entry-card{cursor:default;box-sizing:border-box;height:100%}.coding-entry-card .btn-primary{width:100%}@media (width<=768px){.dashboard-actions{grid-template-columns:1fr}}.dashboard-heading{font-size:var(--font-size-lg);margin-bottom:var(--spacing-md);color:var(--color-text);font-weight:600}.uploads-placeholder{color:var(--color-text-muted);font-size:var(--font-size-sm);padding:var(--spacing-lg) 0}.uploads-placeholder--error{color:var(--color-error)}.uploads-list{gap:var(--spacing-sm);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.upload-item-wrapper{flex-direction:column;display:flex}.upload-item{align-items:center;gap:var(--spacing-md);padding:var(--spacing-md);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);transition:border-color .15s;display:flex}.upload-item--clickable{cursor:pointer}.upload-item--clickable:hover{border-color:var(--color-primary)}.upload-item--expanded{border-color:var(--color-primary);border-bottom-color:#0000;border-bottom-right-radius:0;border-bottom-left-radius:0}.expand-arrow{font-size:var(--font-size-lg);color:var(--color-text-muted);flex-shrink:0;transition:transform .2s;display:inline-block}.upload-history-panel{background:var(--color-background);border:1px solid var(--color-primary);border-bottom-left-radius:var(--radius-md);border-bottom-right-radius:var(--radius-md);padding:var(--spacing-sm) var(--spacing-md) var(--spacing-md);gap:var(--spacing-sm);border-top:none;flex-direction:column;display:flex}.history-loading,.history-empty{font-size:var(--font-size-sm);color:var(--color-text-muted);padding:var(--spacing-xs) 0}.job-history-row{gap:var(--spacing-xs);padding:var(--spacing-sm) 0;border-bottom:1px solid var(--color-border);flex-direction:column;display:flex}.job-history-row:last-of-type{border-bottom:none}.job-row-main{align-items:center;gap:var(--spacing-md);display:flex}.job-row-sections{gap:var(--spacing-xs);flex-wrap:wrap;padding-top:2px;display:flex}.job-date,.job-count{font-size:var(--font-size-sm);color:var(--color-text-muted);min-width:90px}.job-pages{font-size:var(--font-size-sm);color:var(--color-text-muted);min-width:70px}.section-chip{background:var(--color-border);color:var(--color-text-muted);border-radius:var(--radius-sm);white-space:nowrap;padding:2px 8px;font-size:11px}.btn-delete-upload{border-radius:var(--radius-sm);width:28px;height:28px;color:var(--color-text-muted);cursor:pointer;opacity:0;background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;padding:0;transition:color .15s,opacity .15s,background .15s;display:flex}.upload-item:hover .btn-delete-upload,.upload-item--expanded .btn-delete-upload{opacity:1}.btn-delete-upload:hover:not(:disabled){color:var(--color-error);background:#fef2f2}.btn-delete-upload:disabled{opacity:.4;cursor:not-allowed}.delete-error{font-size:var(--font-size-sm);color:var(--color-error);margin-top:var(--spacing-xs);display:block}.btn-delete-job{border-radius:var(--radius-sm);width:26px;height:26px;color:var(--color-text-muted);cursor:pointer;background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;margin-left:auto;padding:0;transition:color .15s,background .15s;display:flex}.btn-delete-job:hover{color:var(--color-error);background:#fef2f2}.delete-confirm{border-radius:var(--radius-sm);padding:var(--spacing-sm) var(--spacing-md);background:#fef2f2;border:1px solid #fecaca;justify-content:space-between;align-items:center;display:flex}.delete-confirm-label{font-size:var(--font-size-sm);color:var(--color-error)}.delete-confirm-actions{gap:var(--spacing-sm);display:flex}.btn-delete-cancel{padding:2px var(--spacing-sm);font-size:var(--font-size-sm);border:1px solid var(--color-border);border-radius:var(--radius-sm);cursor:pointer;color:var(--color-text-muted);background:#fff}.btn-delete-cancel:hover:not(:disabled){border-color:var(--color-text-muted);color:var(--color-text)}.btn-delete-confirm{padding:2px var(--spacing-sm);font-size:var(--font-size-sm);background:var(--color-error);color:#fff;border-radius:var(--radius-sm);cursor:pointer;white-space:nowrap;border:none;font-weight:600;transition:opacity .15s}.btn-delete-confirm:disabled{opacity:.6;cursor:not-allowed}.sections-toggle{color:var(--color-primary);cursor:pointer;white-space:nowrap;background:0 0;border:none;padding:2px 8px;font-size:11px;font-weight:500}.sections-toggle:hover{text-decoration:underline}.status-badge{border-radius:99px;flex-shrink:0;padding:2px 8px;font-size:11px;font-weight:600}.status-badge--paused{color:#475569;background:#f1f5f9}.btn-view{padding:3px var(--spacing-sm);background:var(--color-primary-light);color:var(--color-primary);border-radius:var(--radius-sm);font-size:var(--font-size-sm);cursor:pointer;border:1px solid #0000;flex-shrink:0;margin-left:auto;font-weight:500;transition:background .15s}.btn-view:hover{background:var(--color-primary);color:#fff}.btn-generate-new{width:100%;margin-top:var(--spacing-xs);padding:var(--spacing-sm);color:var(--color-primary);border:1px dashed var(--color-primary);border-radius:var(--radius-sm);font-size:var(--font-size-sm);cursor:pointer;background:0 0;font-weight:500;transition:background .15s}.btn-generate-new:hover:not(:disabled){background:var(--color-primary-light)}.btn-generate-new:disabled{opacity:.5;cursor:not-allowed}.upload-item-icon{color:var(--color-text-muted);flex-shrink:0}.upload-item-info{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.upload-item-name{font-size:var(--font-size-sm);color:var(--color-text);white-space:nowrap;text-overflow:ellipsis;font-weight:500;overflow:hidden}.upload-item-meta{font-size:var(--font-size-sm);color:var(--color-text-muted)}.btn-process{padding:var(--spacing-xs) var(--spacing-md);background:var(--color-primary-light);color:var(--color-primary);border-radius:var(--radius-sm);font-size:var(--font-size-sm);cursor:pointer;border:1px solid #0000;flex-shrink:0;font-weight:500;transition:background .15s,border-color .15s}.btn-process:hover:not(:disabled){background:var(--color-primary);color:#fff}.btn-process:disabled{opacity:.5;cursor:not-allowed}.upload-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--spacing-xl);text-align:center;box-shadow:var(--shadow-sm)}.upload-card--error{border-color:var(--color-error)}.upload-icon{color:var(--color-primary);margin-bottom:var(--spacing-md)}.upload-card h3{font-size:var(--font-size-lg);margin-bottom:var(--spacing-xs);font-weight:600}.upload-subtitle{color:var(--color-text-muted);font-size:var(--font-size-sm);margin-bottom:var(--spacing-lg)}.browse-area{align-items:center;gap:var(--spacing-xs);padding:var(--spacing-lg);border:2px dashed var(--color-border);border-radius:var(--radius-md);cursor:pointer;font-size:var(--font-size-sm);color:var(--color-primary);flex-direction:column;font-weight:500;transition:border-color .2s,background .2s;display:flex}.browse-area:hover{border-color:var(--color-primary);background:var(--color-primary-light)}.browse-hint{font-size:var(--font-size-sm);color:var(--color-text-muted);font-weight:400}.upload-header{margin-bottom:var(--spacing-md);justify-content:space-between;align-items:center;display:flex}.upload-filename{font-weight:500;font-size:var(--font-size-sm);text-align:left;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.upload-status{color:var(--color-text-muted);font-size:var(--font-size-sm);margin-bottom:var(--spacing-md);text-align:left}.progress-bar{background:var(--color-border);width:100%;height:6px;margin-bottom:var(--spacing-xs);border-radius:4px;overflow:hidden}.progress-fill{background:var(--color-primary);border-radius:4px;height:100%;transition:width .3s}.progress-fill--pulse{width:100%;animation:1.5s ease-in-out infinite pulse}@keyframes pulse{0%,to{opacity:.3}50%{opacity:1}}.progress-text{font-size:var(--font-size-sm);color:var(--color-text-muted);text-align:right;display:block}.btn-primary{padding:var(--spacing-sm) var(--spacing-lg);background:var(--color-primary);color:#fff;border-radius:var(--radius-sm);font-size:var(--font-size-sm);cursor:pointer;margin-top:var(--spacing-md);border:none;font-weight:500;transition:background .2s;display:inline-block}.btn-cancel{color:var(--color-text-muted);font-size:var(--font-size-sm);cursor:pointer;padding:var(--spacing-xs) var(--spacing-sm);background:0 0;border:none;flex-shrink:0}.btn-cancel:hover{color:var(--color-error)}.error-icon{width:40px;height:40px;color:var(--color-error);margin:0 auto var(--spacing-sm);font-size:var(--font-size-lg);background:#fef2f2;border-radius:50%;justify-content:center;align-items:center;font-weight:700;display:flex}.error-message{color:var(--color-text-muted);font-size:var(--font-size-sm);margin-bottom:var(--spacing-sm)}.toc-viewer{flex-direction:column;display:flex}.toc-row{width:100%;padding:var(--spacing-sm) var(--spacing-md);cursor:pointer;border-radius:var(--radius-sm);text-align:left;justify-content:space-between;align-items:center;gap:var(--spacing-md);background:0 0;border:none;transition:background .15s;display:flex}.toc-row:hover{background:var(--color-background)}.toc-row--l1{font-size:var(--font-size-lg);font-weight:600}.toc-row--l2{font-size:var(--font-size-base);padding-left:calc(var(--spacing-md) + 16px)}.toc-row--l3{font-size:var(--font-size-sm);padding-left:calc(var(--spacing-md) + 32px);color:var(--color-text-muted)}.toc-row--selected,.toc-row--selected:hover{background:var(--color-primary-light)}.toc-row--warning,.toc-row--warning:hover{background:#fffbeb}.toc-page{color:var(--color-text-muted);font-size:var(--font-size-sm);flex-shrink:0}.toc-title{flex:1;min-width:0}.toc-warning{font-size:var(--font-size-sm);color:var(--color-warning);padding:var(--spacing-xs) var(--spacing-md);padding-left:calc(var(--spacing-md) + 4px)}.structure-page{gap:var(--spacing-xl);flex-direction:column;display:flex}.structure-loading{justify-content:center;align-items:center;gap:var(--spacing-md);padding:var(--spacing-2xl);color:var(--color-text-muted);flex-direction:column;display:flex}@keyframes spin{to{transform:rotate(360deg)}}.structure-error-page{text-align:center;padding:var(--spacing-2xl)}.structure-error-page .error-icon{width:48px;height:48px;color:var(--color-error);margin:0 auto var(--spacing-md);font-size:var(--font-size-xl);background:#fef2f2;border-radius:50%;justify-content:center;align-items:center;font-weight:700;display:flex}.structure-error-page h3{margin-bottom:var(--spacing-sm)}.error-detail{color:var(--color-text-muted);font-size:var(--font-size-sm);margin-bottom:var(--spacing-lg)}.structure-header{text-align:center}.structure-title{font-size:var(--font-size-2xl);margin-bottom:var(--spacing-xs);word-break:break-word;font-weight:600}.structure-subtitle{color:var(--color-text-muted);font-size:var(--font-size-base)}.structure-section{gap:var(--spacing-md);flex-direction:column;display:flex}.section-heading{font-size:var(--font-size-lg);font-weight:600}.selection-summary{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--spacing-md) var(--spacing-lg);opacity:0;pointer-events:none;max-height:0;padding:0 var(--spacing-lg);margin:0;transition:opacity .25s,transform .25s;overflow:hidden;transform:translateY(8px)}.selection-summary--visible{opacity:1;pointer-events:auto;max-height:200px;padding:var(--spacing-md) var(--spacing-lg);transform:translateY(0)}.selection-info{gap:var(--spacing-xs);flex-direction:column;display:flex}.selection-range{font-weight:600;font-size:var(--font-size-base)}.selection-count{font-size:var(--font-size-sm);color:var(--color-text-muted)}.selection-source{font-size:var(--font-size-sm);color:var(--color-text-muted);font-style:italic}.btn-confirm{width:100%;padding:var(--spacing-md);background:var(--color-primary);color:#fff;border-radius:var(--radius-md);font-size:var(--font-size-lg);cursor:pointer;border:none;font-weight:600;transition:background .15s}.btn-confirm:hover:not(:disabled){background:var(--color-primary-hover)}.btn-confirm:disabled{opacity:.5;cursor:not-allowed}.confirm-error{text-align:center;font-size:var(--font-size-sm);color:var(--color-error)}.toc-header{justify-content:space-between;align-items:center;display:flex}.toc-toggle{font-size:var(--font-size-sm);color:var(--color-primary);cursor:pointer;background:0 0;border:none;padding:0;font-weight:500}.toc-toggle:hover{text-decoration:underline}.toc-hint{font-size:var(--font-size-sm);color:var(--color-text-muted);margin-top:calc(-1 * var(--spacing-sm))}.config-cards{gap:var(--spacing-md);flex-direction:column;display:flex}.config-card{border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);box-shadow:var(--shadow-sm);overflow:hidden}.config-card-header{padding:var(--spacing-sm) var(--spacing-md);background:var(--color-background);border-bottom:1px solid var(--color-border);justify-content:space-between;align-items:center;display:flex}.config-card-title{font-size:var(--font-size-sm);color:var(--color-text);font-weight:600}.config-card-remove{font-size:var(--font-size-sm);color:var(--color-text-muted);cursor:pointer;padding:2px var(--spacing-xs);background:0 0;border:none;transition:color .15s}.config-card-remove:hover{color:var(--color-error)}.config-card-body{padding:var(--spacing-md);gap:var(--spacing-sm);flex-direction:column;display:flex}.card-row{align-items:center;gap:var(--spacing-sm);flex-wrap:wrap;display:flex}.card-label{font-size:var(--font-size-sm);color:var(--color-text-muted);min-width:72px}.card-page-input{width:72px;padding:4px var(--spacing-sm);border:1px solid var(--color-border);border-radius:var(--radius-sm);font-size:var(--font-size-sm);color:var(--color-text)}.card-page-input:focus{border-color:var(--color-primary);outline:none}.card-sep,.card-page-hint{font-size:var(--font-size-sm);color:var(--color-text-muted)}.card-qty-input{width:72px;padding:4px var(--spacing-sm);border:1px solid var(--color-border);border-radius:var(--radius-sm);font-size:var(--font-size-sm);color:var(--color-text)}.card-qty-input:focus{border-color:var(--color-primary);outline:none}.card-error{color:var(--color-error);font-size:11px}.card-dist{gap:var(--spacing-md);display:flex}.card-dist-item{align-items:center;gap:var(--spacing-xs);font-size:var(--font-size-sm);color:var(--color-text-muted);display:flex}.card-dist-item input{width:52px;padding:4px var(--spacing-xs);border:1px solid var(--color-border);border-radius:var(--radius-sm);font-size:var(--font-size-sm);color:var(--color-text)}.card-dist-item input:focus{border-color:var(--color-primary);outline:none}.card-dist-sum{font-size:11px;font-weight:500}.card-dist-sum--valid{color:var(--color-success)}.card-dist-sum--error{color:var(--color-error)}.btn-add-config{width:100%;padding:var(--spacing-sm);border:1px dashed var(--color-border);border-radius:var(--radius-md);font-size:var(--font-size-sm);color:var(--color-primary);cursor:pointer;background:0 0;font-weight:500;transition:border-color .15s,background .15s}.btn-add-config:hover{border-color:var(--color-primary);background:var(--color-primary-light)}.config-field{gap:var(--spacing-xs);margin-bottom:var(--spacing-md);flex-direction:column;display:flex}.config-label{font-size:var(--font-size-sm);color:var(--color-text);font-weight:500}.config-hint{font-size:var(--font-size-sm);color:var(--color-text-muted)}.config-input{width:100px;padding:var(--spacing-xs) var(--spacing-sm);border:1px solid var(--color-border);border-radius:var(--radius-sm);font-size:var(--font-size-base);color:var(--color-text)}.config-input:focus{border-color:var(--color-primary);outline:none}.config-error{font-size:var(--font-size-sm);color:var(--color-error)}.distribution-grid{gap:var(--spacing-lg);display:flex}.dist-item{gap:var(--spacing-xs);flex-direction:column;display:flex}.dist-label{font-size:var(--font-size-sm);color:var(--color-text-muted)}.dist-input{width:72px;padding:var(--spacing-xs) var(--spacing-sm);border:1px solid var(--color-border);border-radius:var(--radius-sm);font-size:var(--font-size-base);color:var(--color-text)}.dist-sum{font-size:var(--font-size-sm);margin-top:var(--spacing-xs);font-weight:500}.dist-sum--valid{color:var(--color-success)}.btn-primary{padding:var(--spacing-sm) var(--spacing-lg);background:var(--color-primary);color:#fff;border-radius:var(--radius-sm);font-size:var(--font-size-base);cursor:pointer;border:none;font-weight:500;transition:background .2s;display:inline-block}.btn-primary:hover{background:var(--color-primary-hover)}.progress-steps{flex-direction:column;display:flex}.progress-step{align-items:flex-start;gap:var(--spacing-md);display:flex}.step-indicator{flex-direction:column;flex-shrink:0;align-items:center;display:flex}.step-circle{border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:24px;height:24px;display:flex}.step-circle--done{background:var(--color-success)}.step-circle--active{background:var(--color-primary);animation:1.5s ease-in-out infinite step-pulse}.step-circle--waiting{border:2px solid var(--color-border);background:0 0}@keyframes step-pulse{0%,to{box-shadow:0 0 #2563eb66}50%{box-shadow:0 0 0 6px #2563eb00}}.step-line{background:var(--color-border);width:2px;height:24px}.step-label{font-size:var(--font-size-sm);padding-top:2px;line-height:1.4}.progress-step--done .step-label{color:var(--color-text)}.progress-step--active .step-label{color:var(--color-primary);font-weight:600}.progress-step--waiting .step-label{color:var(--color-text-muted)}.gen-page{gap:var(--spacing-lg);flex-direction:column;max-width:1200px;margin:0 auto;display:flex}.gen-loading{justify-content:center;align-items:center;gap:var(--spacing-md);padding:var(--spacing-2xl);flex-direction:column;min-height:400px;display:flex}.gen-loading-title{font-size:var(--font-size-2xl);font-weight:600}.gen-loading-sub{color:var(--color-text-muted);margin-bottom:var(--spacing-lg)}.gen-progress-wrapper{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--spacing-lg)}.spinner{border:3px solid var(--color-border);border-top-color:var(--color-primary);border-radius:50%;width:32px;height:32px;animation:.8s linear infinite spin}.gen-error-page{text-align:center;padding:var(--spacing-2xl)}.gen-error-icon{width:48px;height:48px;color:var(--color-error);margin:0 auto var(--spacing-md);font-size:var(--font-size-xl);background:#fef2f2;border-radius:50%;justify-content:center;align-items:center;font-weight:700;display:flex}.gen-error-page h3{margin-bottom:var(--spacing-sm)}.gen-error-detail{color:var(--color-text-muted);font-size:var(--font-size-sm);margin-bottom:var(--spacing-lg)}.gen-error-actions{gap:var(--spacing-md);justify-content:center;display:flex}.btn-primary{padding:var(--spacing-sm) var(--spacing-lg);background:var(--color-primary);color:#fff;border-radius:var(--radius-sm);font-size:var(--font-size-sm);cursor:pointer;border:none;font-weight:600}.btn-primary:hover:not(:disabled){background:var(--color-primary-hover)}.btn-primary:disabled{opacity:.5;cursor:not-allowed}.btn-secondary{padding:var(--spacing-sm) var(--spacing-lg);background:var(--color-surface);color:var(--color-text);border:1px solid var(--color-border);border-radius:var(--radius-sm);font-size:var(--font-size-sm);cursor:pointer;font-weight:500}.btn-secondary:hover{background:var(--color-background)}.gen-header{justify-content:space-between;align-items:flex-start;gap:var(--spacing-lg);flex-wrap:wrap;display:flex}.gen-title{font-size:var(--font-size-2xl);word-break:break-word;font-weight:600}.gen-subtitle{color:var(--color-text-muted);font-size:var(--font-size-base)}.gen-header-right{gap:var(--spacing-sm);flex-shrink:0;display:flex}.gen-filters{gap:var(--spacing-sm);display:flex}.filter-btn{padding:var(--spacing-xs) var(--spacing-md);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);font-size:var(--font-size-sm);cursor:pointer;color:var(--color-text);transition:background .15s,border-color .15s}.filter-btn:hover{background:var(--color-background)}.filter-btn--active{background:var(--color-primary);color:#fff;border-color:var(--color-primary)}.filter-btn--active:hover{background:var(--color-primary-hover)}.gen-table-wrapper{border:1px solid var(--color-border);border-radius:var(--radius-md);overflow-x:auto}.gen-table{border-collapse:collapse;width:100%;font-size:var(--font-size-sm)}.gen-table thead{z-index:1;position:sticky;top:0}.gen-table th{background:var(--color-surface);border-bottom:2px solid var(--color-border);padding:var(--spacing-sm) var(--spacing-md);text-align:left;white-space:nowrap;font-weight:600}.gen-table td{padding:var(--spacing-sm) var(--spacing-md);vertical-align:top;border-bottom:1px solid var(--color-border)}.gen-table tbody tr:nth-child(odd){background:var(--color-surface)}.gen-table tbody tr:nth-child(2n){background:var(--color-background)}.gen-table tbody tr:hover{background:var(--color-primary-light)}.col-num{text-align:right;color:var(--color-text-muted);width:40px;min-width:40px}.col-question{min-width:200px}.col-diff{text-align:center;width:90px}.diff-pill{padding:2px var(--spacing-sm);border-radius:var(--radius-sm);font-size:var(--font-size-sm);text-transform:uppercase;letter-spacing:.03em;font-weight:600;display:inline-block}.diff-pill--easy{color:#166534;background:#dcfce7}.diff-pill--medium{color:#92400e;background:#fef3c7}.diff-pill--hard{color:#991b1b;background:#fee2e2}.col-topic{color:var(--color-text-muted);white-space:nowrap;text-overflow:ellipsis;max-width:180px;overflow:hidden}.col-option{min-width:120px}.col-option--correct{border-left:3px solid var(--color-success);background:#16a34a26}.col-explanation{cursor:pointer;min-width:150px;position:relative}.expand-hint{color:var(--color-primary);font-weight:500;font-size:var(--font-size-sm)}.col-actions{text-align:center;width:56px}.btn-edit{font-size:var(--font-size-sm);color:var(--color-primary);background:var(--color-primary-light);border-radius:var(--radius-sm);cursor:pointer;border:none;padding:3px 10px;font-weight:500;transition:background .15s}.btn-edit:hover{background:var(--color-primary);color:#fff}.btn-edit-active{font-size:var(--font-size-sm);color:var(--color-text-muted);cursor:pointer;background:0 0;border:none;padding:3px 8px}.row--editing td{background:var(--color-primary-light)}.edit-row td{border-top:none;padding:0}.edit-field{flex-direction:column;gap:4px;display:flex}.edit-field-label{font-size:var(--font-size-sm);color:var(--color-text-muted);font-weight:500}.edit-textarea{padding:var(--spacing-sm);border:1px solid var(--color-border);border-radius:var(--radius-sm);font-size:var(--font-size-sm);color:var(--color-text);background:var(--color-surface);resize:vertical;box-sizing:border-box;width:100%;font-family:inherit;line-height:1.5}.edit-textarea:focus{border-color:var(--color-primary);outline:none}.edit-panel{background:var(--color-background);border:1px solid var(--color-primary);padding:var(--spacing-md) var(--spacing-lg);gap:var(--spacing-md);border-top:none;flex-direction:column;display:flex}.edit-panel-top{align-items:center;gap:var(--spacing-xl);flex-wrap:wrap;display:flex}.btn-rotate{padding:var(--spacing-xs) var(--spacing-md);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-sm);font-size:var(--font-size-sm);cursor:pointer;color:var(--color-text);font-weight:500;transition:border-color .15s}.btn-rotate:hover{border-color:var(--color-primary);color:var(--color-primary)}.correct-answer-picker{align-items:center;gap:var(--spacing-sm);display:flex}.correct-label{font-size:var(--font-size-sm);color:var(--color-text-muted)}.answer-btn{border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-surface);width:32px;height:32px;font-size:var(--font-size-sm);cursor:pointer;color:var(--color-text-muted);font-weight:600;transition:all .15s}.answer-btn:hover{border-color:var(--color-primary);color:var(--color-primary)}.answer-btn--active{background:var(--color-primary);border-color:var(--color-primary);color:#fff}.edit-options-grid{gap:var(--spacing-sm) var(--spacing-lg);grid-template-columns:1fr 1fr;display:grid}.edit-option{flex-direction:column;gap:4px;display:flex}.edit-option-label{font-size:var(--font-size-sm);color:var(--color-text-muted);font-weight:500}.edit-option--correct .edit-option-label{color:var(--color-success)}.edit-option-input{padding:var(--spacing-xs) var(--spacing-sm);border:1px solid var(--color-border);border-radius:var(--radius-sm);font-size:var(--font-size-sm);color:var(--color-text);background:var(--color-surface);box-sizing:border-box;width:100%}.edit-option--correct .edit-option-input{border-color:var(--color-success);background:#16a34a0d}.edit-option-input:focus{border-color:var(--color-primary);outline:none}.edit-save-error{font-size:var(--font-size-sm);color:var(--color-error)}.edit-panel-actions{justify-content:flex-end;gap:var(--spacing-sm);display:flex}.btn-cancel-edit{padding:var(--spacing-xs) var(--spacing-md);border:1px solid var(--color-border);border-radius:var(--radius-sm);font-size:var(--font-size-sm);cursor:pointer;color:var(--color-text-muted);background:0 0}.btn-save-edit{padding:var(--spacing-xs) var(--spacing-lg);background:var(--color-primary);color:#fff;border-radius:var(--radius-sm);font-size:var(--font-size-sm);cursor:pointer;border:none;font-weight:600;transition:background .15s}.btn-save-edit:hover:not(:disabled){background:var(--color-primary-hover)}.btn-save-edit:disabled,.btn-cancel-edit:disabled{opacity:.5;cursor:not-allowed}.cq-page{max-width:800px;padding:var(--spacing-xl);margin:0 auto}.cq-page-header{margin-bottom:var(--spacing-xl);justify-content:space-between;align-items:flex-start;gap:var(--spacing-md);display:flex}.cq-page-title{font-size:var(--font-size-xl);margin-bottom:var(--spacing-xs);font-weight:700}.cq-page-subtitle{color:var(--color-text-muted);font-size:var(--font-size-sm)}.btn-generate-new-cq{padding:var(--spacing-sm) var(--spacing-lg);background:var(--color-primary);color:#fff;border-radius:var(--radius-sm);font-size:var(--font-size-sm);cursor:pointer;white-space:nowrap;border:none;font-weight:600;transition:background .2s}.btn-generate-new-cq:hover{background:var(--color-primary-hover)}.cq-history{gap:var(--spacing-sm);flex-direction:column;display:flex}.cq-job-row{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--spacing-md) var(--spacing-lg)}.cq-job-main{justify-content:space-between;align-items:center;gap:var(--spacing-md);display:flex}.cq-job-info{flex-direction:column;gap:2px;min-width:0;display:flex}.cq-job-topics{font-weight:500;font-size:var(--font-size-sm);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.cq-job-date{color:var(--color-text-muted);font-size:12px}.cq-job-actions{align-items:center;gap:var(--spacing-sm);flex-shrink:0;display:flex}.cq-status-badge{border-radius:10px;padding:2px 8px;font-size:11px;font-weight:600}.status-badge--complete{color:#16a34a;background:#dcfce7}.status-badge--failed{color:#dc2626;background:#fee2e2}.status-badge--progress{color:#d97706;background:#fef9c3}.cq-job-count{font-size:var(--font-size-sm);color:var(--color-text-muted)}.cq-placeholder{color:var(--color-text-muted);font-size:var(--font-size-sm);padding:var(--spacing-lg) 0}.cq-placeholder--error{color:var(--color-error)}.cq-empty{text-align:center;padding:var(--spacing-xl) 0;color:var(--color-text-muted);font-size:var(--font-size-sm);align-items:center;gap:var(--spacing-md);flex-direction:column;display:flex}.btn-generate:hover{background:var(--color-primary-hover)}.perf-summary-badge{border-radius:99px;flex-shrink:0;padding:2px 8px;font-size:11px;font-weight:600}.perf-summary-badge--generating{color:#6d28d9;background:#ede9fe}.perf-summary-badge--complete{color:#15803d;background:#dcfce7}.perf-summary-badge--failed{color:var(--color-error);background:#fef2f2}.topic-form{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--spacing-lg);gap:var(--spacing-md);flex-direction:column;display:flex}.topic-form-header{justify-content:space-between;align-items:center;display:flex}.topic-form-label{font-weight:600;font-size:var(--font-size-sm);color:var(--color-text)}.btn-remove-topic{color:var(--color-text-muted);cursor:pointer;border-radius:var(--radius-sm);background:0 0;border:none;padding:2px 6px;font-size:14px;transition:color .2s,background .2s}.btn-remove-topic:hover{color:var(--color-error);background:var(--color-error-light,#fef2f2)}.topic-form-row{gap:var(--spacing-xs);flex-direction:column;display:flex}.topic-field-label{font-size:var(--font-size-sm);color:var(--color-text-muted);font-weight:500}.optional{color:var(--color-text-muted);font-style:italic;font-weight:400}.topic-input{padding:var(--spacing-sm) var(--spacing-md);border:1px solid var(--color-border);border-radius:var(--radius-sm);font-size:var(--font-size-sm);color:var(--color-text);background:var(--color-background);box-sizing:border-box;width:100%}.topic-input:focus{border-color:var(--color-primary);outline:none}.subtopic-chips{gap:var(--spacing-xs);padding:var(--spacing-xs) var(--spacing-sm);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-background);flex-wrap:wrap;align-items:center;min-height:38px;display:flex}.subtopic-chip{background:var(--color-primary-light,#eff6ff);color:var(--color-primary);border-radius:12px;align-items:center;gap:4px;padding:2px 8px;font-size:12px;font-weight:500;display:inline-flex}.chip-remove{color:inherit;cursor:pointer;opacity:.7;background:0 0;border:none;padding:0;font-size:10px;line-height:1}.chip-remove:hover{opacity:1}.subtopic-input{font-size:var(--font-size-sm);color:var(--color-text);background:0 0;border:none;outline:none;flex:1;min-width:160px}.question-count-row{gap:var(--spacing-xs);display:flex}.count-btn{border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-background);width:36px;height:36px;color:var(--color-text);font-size:var(--font-size-sm);cursor:pointer;font-weight:500;transition:border-color .2s,background .2s,color .2s}.count-btn:hover{border-color:var(--color-primary);color:var(--color-primary)}.count-btn--active{background:var(--color-primary);border-color:var(--color-primary);color:#fff}.dist-row{align-items:center;gap:var(--spacing-md);display:flex}.dist-field{flex-direction:column;align-items:center;gap:4px;display:flex}.diff-label{text-transform:uppercase;letter-spacing:.05em;font-size:11px;font-weight:600}.diff-label--easy{color:#16a34a}.diff-label--medium{color:#d97706}.diff-label--hard{color:#dc2626}.dist-input{text-align:center;width:52px;padding:var(--spacing-xs) var(--spacing-sm);border:1px solid var(--color-border);border-radius:var(--radius-sm);font-size:var(--font-size-sm);background:var(--color-background)}.dist-input--error{border-color:var(--color-error)}.dist-input:focus{border-color:var(--color-primary);outline:none}.dist-sum{font-size:var(--font-size-sm);margin-left:auto;font-weight:600}.dist-sum--ok{color:#16a34a}.dist-sum--error{color:var(--color-error)}.dist-error{color:var(--color-error);font-size:12px;font-weight:400}.coding-config-page{max-width:720px;padding:var(--spacing-xl);margin:0 auto}.coding-config-header{margin-bottom:var(--spacing-xl)}.btn-back{color:var(--color-text-muted);font-size:var(--font-size-sm);cursor:pointer;margin-bottom:var(--spacing-md);background:0 0;border:none;padding:0;display:inline-block}.coding-config-title{font-size:var(--font-size-xl);margin-bottom:var(--spacing-xs);font-weight:700}.coding-config-subtitle{color:var(--color-text-muted);font-size:var(--font-size-sm)}.coding-config-body{gap:var(--spacing-xl);flex-direction:column;display:flex}.config-section{gap:var(--spacing-md);flex-direction:column;display:flex}.config-section-title{font-size:var(--font-size-lg);font-weight:600}.config-section-hint{color:var(--color-text-muted);font-size:var(--font-size-sm);margin-top:calc(-1 * var(--spacing-sm))}.language-grid{gap:var(--spacing-sm);flex-wrap:wrap;display:flex}.lang-chip{padding:var(--spacing-sm) var(--spacing-lg);border:1.5px solid var(--color-border);border-radius:var(--radius-sm);font-size:var(--font-size-sm);cursor:pointer;-webkit-user-select:none;user-select:none;font-weight:500;transition:border-color .2s,background .2s,color .2s}.lang-chip:hover{border-color:var(--color-primary);color:var(--color-primary)}.lang-chip--active{border-color:var(--color-primary);background:var(--color-primary);color:#fff}.topics-list{gap:var(--spacing-md);flex-direction:column;display:flex}.btn-add-topic{border:1.5px dashed var(--color-border);border-radius:var(--radius-md);color:var(--color-text-muted);font-size:var(--font-size-sm);padding:var(--spacing-md);cursor:pointer;text-align:center;background:0 0;width:100%;font-weight:500;transition:border-color .2s,color .2s}.btn-add-topic:hover{border-color:var(--color-primary);color:var(--color-primary)}.config-actions{padding-top:var(--spacing-md);border-top:1px solid var(--color-border);justify-content:flex-end;display:flex}.btn-generate{padding:var(--spacing-sm) var(--spacing-xl);background:var(--color-primary);color:#fff;border-radius:var(--radius-sm);font-size:var(--font-size-sm);cursor:pointer;border:none;font-weight:600;transition:background .2s}.btn-generate:hover:not(:disabled){background:var(--color-primary-hover)}.btn-generate:disabled{opacity:.5;cursor:not-allowed}.config-error{color:var(--color-error);font-size:var(--font-size-sm)}.running-banner{padding:var(--spacing-sm) var(--spacing-md);border-radius:var(--radius-md);font-size:var(--font-size-sm);color:#713f12;text-align:center;background:#fefce8;border:1px solid #fde047}.tc-table-wrapper{gap:var(--spacing-sm);flex-direction:column;display:flex}.tc-empty{color:var(--color-text-muted);font-size:var(--font-size-sm);font-style:italic}.tc-row{border:1px solid var(--color-border);border-radius:var(--radius-sm);padding:var(--spacing-md);background:var(--color-background)}.tc-row--editing{border-color:var(--color-primary)}.tc-row-header{margin-bottom:var(--spacing-sm);justify-content:space-between;align-items:center;display:flex}.tc-index{color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.05em;font-size:11px;font-weight:600}.tc-row-actions{gap:var(--spacing-xs);display:flex}.tc-btn-edit{border:1px solid var(--color-border);border-radius:var(--radius-sm);cursor:pointer;color:var(--color-primary);background:0 0;padding:2px 8px;font-size:11px;transition:background .2s}.tc-btn-edit:hover{background:var(--color-primary-light,#eff6ff)}.tc-btn-delete{color:var(--color-text-muted);cursor:pointer;border-radius:var(--radius-sm);background:0 0;border:none;padding:2px 6px;font-size:12px}.tc-btn-delete:hover{color:var(--color-error)}.tc-fields{gap:var(--spacing-sm);grid-template-columns:1fr 1fr;display:grid}.tc-field{flex-direction:column;gap:4px;display:flex}.tc-field--full{grid-column:1/-1}.tc-field-label{color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.04em;font-size:11px;font-weight:600}.tc-pre{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-sm);padding:var(--spacing-sm);white-space:pre-wrap;word-break:break-all;min-height:36px;color:var(--color-text);margin:0;font-family:Menlo,Monaco,Courier New,monospace;font-size:12px}.tc-textarea{padding:var(--spacing-sm);border:1px solid var(--color-primary);border-radius:var(--radius-sm);resize:vertical;box-sizing:border-box;width:100%;min-height:64px;color:var(--color-text);background:#fff;font-family:Menlo,Monaco,Courier New,monospace;font-size:12px}.tc-explanation{font-size:var(--font-size-sm);color:var(--color-text-muted);margin:0}.tc-btn-add{border:1.5px dashed var(--color-border);border-radius:var(--radius-sm);color:var(--color-text-muted);font-size:var(--font-size-sm);padding:var(--spacing-sm);cursor:pointer;text-align:center;background:0 0;width:100%;transition:border-color .2s,color .2s}.tc-btn-add:hover{border-color:var(--color-primary);color:var(--color-primary)}.sc-tabs{border:1px solid var(--color-border);border-radius:var(--radius-md);overflow:hidden}.sc-tab-bar{border-bottom:1px solid var(--color-border);background:var(--color-surface);display:flex}.sc-tab{padding:var(--spacing-sm) var(--spacing-md);border:none;border-right:1px solid var(--color-border);font-size:var(--font-size-sm);cursor:pointer;color:var(--color-text-muted);background:0 0;font-weight:500;transition:color .15s,background .15s}.sc-tab:hover{color:var(--color-text);background:var(--color-background)}.sc-tab--active{color:var(--color-primary);background:var(--color-background);border-bottom:2px solid var(--color-primary);margin-bottom:-1px}.sc-content{background:var(--color-background)}.sc-pre{padding:var(--spacing-md);white-space:pre;color:var(--color-text);min-height:120px;margin:0;font-family:Menlo,Monaco,Courier New,monospace;font-size:12px;overflow-x:auto}.sc-editor{width:100%;min-height:200px;padding:var(--spacing-md);resize:vertical;background:var(--color-background);color:var(--color-text);box-sizing:border-box;border:none;outline:none;font-family:Menlo,Monaco,Courier New,monospace;font-size:12px;display:block}.sc-empty{color:var(--color-text-muted);font-size:var(--font-size-sm);font-style:italic}.cq-card{border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);transition:box-shadow .15s;overflow:hidden}.cq-card--expanded{box-shadow:var(--shadow-sm)}.cq-card-header{align-items:center;gap:var(--spacing-sm);padding:var(--spacing-md) var(--spacing-lg);cursor:default;display:flex}.cq-card-checkbox{cursor:pointer;width:16px;height:16px;accent-color:var(--color-primary);flex-shrink:0}.cq-card-order{color:var(--color-text-muted);flex-shrink:0;min-width:24px;font-size:12px;font-weight:700}.cq-card-title-group{cursor:pointer;flex-direction:column;flex:1;gap:4px;min-width:0;display:flex}.cq-card-title{font-weight:600;font-size:var(--font-size-sm);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.cq-card-tags{flex-wrap:wrap;align-items:center;gap:4px;display:flex}.diff-badge{text-transform:uppercase;letter-spacing:.04em;border-radius:8px;padding:1px 6px;font-size:10px;font-weight:700}.diff-badge--easy{color:#16a34a;background:#dcfce7}.diff-badge--medium{color:#a16207;background:#fef9c3}.diff-badge--hard{color:#dc2626;background:#fee2e2}.cq-topic-tag{background:var(--color-border);color:var(--color-text-muted);border-radius:8px;padding:1px 6px;font-size:11px}.cq-topic-tag--sub{border:1px solid var(--color-border);background:0 0}.cq-lang-tag{background:var(--color-primary-light,#eff6ff);color:var(--color-primary);border-radius:4px;padding:1px 5px;font-size:10px;font-weight:600}.perf-badge{border-radius:8px;padding:1px 6px;font-size:10px;font-weight:600}.perf-badge--generating{color:#a16207;background:#fef9c3}.perf-badge--complete{color:#16a34a;background:#dcfce7}.perf-badge--failed{color:#dc2626;background:#fee2e2}.cq-expand-btn{cursor:pointer;color:var(--color-text-muted);background:0 0;border:none;flex-shrink:0;padding:4px}.expand-arrow{font-size:18px;line-height:1;transition:transform .2s;display:inline-block}.expand-arrow--open{transform:rotate(90deg)}.cq-card-body{border-top:1px solid var(--color-border)}.cq-card-toolbar{padding:0 var(--spacing-lg);background:var(--color-surface);border-bottom:1px solid var(--color-border);justify-content:space-between;align-items:center;display:flex}.cq-tab-bar{display:flex;overflow-x:auto}.cq-tab{padding:var(--spacing-sm) var(--spacing-md);font-size:var(--font-size-sm);cursor:pointer;color:var(--color-text-muted);white-space:nowrap;background:0 0;border:none;border-bottom:2px solid #0000;font-weight:500;transition:color .15s,border-color .15s}.cq-tab:hover{color:var(--color-text)}.cq-tab--active{color:var(--color-primary);border-bottom-color:var(--color-primary)}.btn-edit-toggle{padding:var(--spacing-xs) var(--spacing-md);border:1px solid var(--color-border);border-radius:var(--radius-sm);font-size:var(--font-size-sm);cursor:pointer;color:var(--color-text-muted);white-space:nowrap;margin-left:var(--spacing-sm);background:0 0;font-weight:500;transition:border-color .2s,color .2s}.btn-edit-toggle:hover,.btn-edit-toggle--active{border-color:var(--color-primary);color:var(--color-primary)}.cq-tab-content{padding:var(--spacing-lg);gap:var(--spacing-md);background:var(--color-background);flex-direction:column;display:flex}.cq-field-row{flex-direction:column;gap:4px;display:flex}.cq-field-label{color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.04em;font-size:11px;font-weight:600}.cq-input{padding:var(--spacing-xs) var(--spacing-sm);border:1px solid var(--color-border);border-radius:var(--radius-sm);font-size:var(--font-size-sm);color:var(--color-text);box-sizing:border-box;background:#fff;width:100%}.cq-input--sm{width:100px}.cq-textarea{padding:var(--spacing-sm);border:1px solid var(--color-border);border-radius:var(--radius-sm);font-size:var(--font-size-sm);color:var(--color-text);box-sizing:border-box;resize:vertical;background:#fff;width:100%;min-height:80px}.cq-textarea--tall{min-height:160px}.cq-pre{font-size:var(--font-size-sm);white-space:pre-wrap;color:var(--color-text);margin:0;font-family:inherit;line-height:1.6}.cq-meta-grid{gap:var(--spacing-md);grid-template-columns:1fr 1fr;display:grid}.cq-lang-checkboxes{gap:var(--spacing-md);flex-wrap:wrap;display:flex}.cq-lang-check{font-size:var(--font-size-sm);cursor:pointer;align-items:center;gap:6px;display:flex}.cq-perf-hint{color:var(--color-text-muted);font-size:var(--font-size-sm);font-style:italic}.cq-perf-hint--generating{color:#d97706;font-style:normal}.cq-perf-hint--error{color:var(--color-error)}.cq-perf-empty{align-items:center;gap:var(--spacing-md);margin-bottom:var(--spacing-sm);display:flex}.cq-perf-actions{gap:var(--spacing-sm);margin-bottom:var(--spacing-md);flex-wrap:wrap;display:flex}.cq-perf-url-cases{gap:var(--spacing-sm);margin-top:var(--spacing-sm);flex-direction:column;display:flex}.cq-perf-url-case{padding:var(--spacing-sm) var(--spacing-md);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-background);flex-direction:column;gap:6px;display:flex}.cq-perf-url-links{gap:var(--spacing-md);flex-wrap:wrap;display:flex}.cq-perf-url-link{font-size:var(--font-size-sm);color:var(--color-primary);border:1px solid var(--color-primary);border-radius:var(--radius-sm);padding:3px 8px;font-weight:500;text-decoration:none;transition:background .15s,color .15s}.cq-perf-url-link:hover{background:var(--color-primary);color:#fff}.btn-retry-perf{padding:5px var(--spacing-md);border:1.5px solid var(--color-primary);border-radius:var(--radius-sm);font-size:var(--font-size-sm);color:var(--color-primary);cursor:pointer;white-space:nowrap;background:0 0;font-weight:600;transition:background .15s,color .15s}.btn-retry-perf:hover:not(:disabled){background:var(--color-primary);color:#fff}.btn-retry-perf:disabled{opacity:.45;cursor:not-allowed}.btn-retry-perf--url{color:#7c3aed;border-color:#7c3aed}.btn-retry-perf--url:hover:not(:disabled){color:#fff;background:#7c3aed}.cr-page{max-width:900px;padding:var(--spacing-xl);gap:var(--spacing-lg);flex-direction:column;margin:0 auto;display:flex}.cr-header{gap:var(--spacing-sm);flex-direction:column;display:flex}.btn-back{color:var(--color-text-muted);font-size:var(--font-size-sm);cursor:pointer;background:0 0;border:none;align-self:flex-start;padding:0;display:inline-block}.btn-back:hover{color:var(--color-primary)}.cr-header-title{align-items:center;gap:var(--spacing-md);flex-wrap:wrap;display:flex}.cr-title{font-size:var(--font-size-xl);font-weight:700}.cr-status-badge{border-radius:10px;padding:2px 10px;font-size:12px;font-weight:600}.cr-status--generating{color:#a16207;background:#fef9c3}.cr-status--complete{color:#16a34a;background:#dcfce7}.cr-status--failed{color:#dc2626;background:#fee2e2}.cr-progress{gap:var(--spacing-sm);flex-direction:column;display:flex}.cr-progress-bar{background:var(--color-border);border-radius:4px;width:100%;height:6px;overflow:hidden}.cr-progress-fill{background:var(--color-primary);border-radius:4px;height:100%}.cr-progress-fill--pulse{width:100%;animation:1.5s ease-in-out infinite cr-pulse}@keyframes cr-pulse{0%,to{opacity:.3}50%{opacity:1}}.cr-progress-label{color:var(--color-text-muted);font-size:var(--font-size-sm);text-align:center}.cr-error{color:var(--color-error);font-size:var(--font-size-sm);padding:var(--spacing-md);border-radius:var(--radius-sm);background:#fee2e2}.cr-action-bar{padding:var(--spacing-md) var(--spacing-lg);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);justify-content:space-between;align-items:center;display:flex}.cr-action-left{flex:1}.cr-action-right{gap:var(--spacing-sm);display:flex}.cr-save-error{color:var(--color-error);font-size:var(--font-size-sm)}.btn-save{padding:var(--spacing-sm) var(--spacing-lg);background:var(--color-primary);color:#fff;border-radius:var(--radius-sm);font-size:var(--font-size-sm);cursor:pointer;border:none;font-weight:600;transition:background .2s}.btn-save:hover:not(:disabled){background:var(--color-primary-hover)}.btn-save:disabled{opacity:.5;cursor:not-allowed}.btn-download{padding:var(--spacing-sm) var(--spacing-lg);border:1px solid var(--color-border);border-radius:var(--radius-sm);font-size:var(--font-size-sm);cursor:pointer;color:var(--color-text);background:0 0;font-weight:500;transition:border-color .2s,color .2s}.btn-download:hover:not(:disabled){border-color:var(--color-primary);color:var(--color-primary)}.btn-download:disabled{opacity:.5;cursor:not-allowed}.cr-perf-progress{align-items:center;gap:var(--spacing-md);padding:var(--spacing-sm) var(--spacing-lg);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);display:flex}.cr-progress-bar--sm{flex-shrink:0;width:120px}.cr-perf-progress-label{font-size:var(--font-size-sm);color:var(--color-text-muted);margin:0}.cr-question-list{gap:var(--spacing-sm);flex-direction:column;display:flex}
