| | * { |
| | margin: 0; |
| | padding: 0; |
| | box-sizing: border-box; |
| | } |
| |
|
| | body { |
| | font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'PingFang SC', 'Microsoft YaHei', sans-serif; |
| | background: linear-gradient(135deg, #f5f7fa 0%, #c3cfe2 100%); |
| | min-height: 100vh; |
| | display: flex; |
| | justify-content: center; |
| | align-items: center; |
| | } |
| |
|
| | #root { |
| | width: 100%; |
| | display: flex; |
| | justify-content: center; |
| | align-items: center; |
| | min-height: 100vh; |
| | } |
| |
|
| | .App { |
| | width: 100%; |
| | max-width: 1400px; |
| | margin: 0 auto; |
| | padding: 10px 20px; |
| | display: flex; |
| | flex-direction: column; |
| | align-items: center; |
| | } |
| |
|
| | .app-header { |
| | display: flex; |
| | flex-direction: column; |
| | gap: 15px; |
| | margin-bottom: 20px; |
| | width: 100%; |
| | max-width: 1400px; |
| | } |
| |
|
| | .header-row-1 { |
| | display: flex; |
| | align-items: center; |
| | justify-content: space-between; |
| | width: 100%; |
| | } |
| |
|
| | .header-row-2 { |
| | display: flex; |
| | gap: 15px; |
| | flex-wrap: wrap; |
| | align-items: center; |
| | justify-content: center; |
| | width: 100%; |
| | } |
| |
|
| | .header-selector { |
| | display: flex; |
| | align-items: center; |
| | gap: 8px; |
| | } |
| |
|
| | .header-selector label { |
| | font-weight: 600; |
| | color: #374151; |
| | font-size: 0.9rem; |
| | white-space: nowrap; |
| | } |
| |
|
| | .header-selector select { |
| | padding: 8px 12px; |
| | border: 2px solid #e5e7eb; |
| | border-radius: 8px; |
| | font-size: 0.95rem; |
| | background: white; |
| | transition: all 0.2s; |
| | color: #374151; |
| | font-weight: 500; |
| | min-width: 120px; |
| | } |
| |
|
| | .header-selector select:hover { |
| | border-color: #9ca3af; |
| | } |
| |
|
| | .header-selector select:focus { |
| | outline: none; |
| | border-color: #667eea; |
| | box-shadow: 0 0 0 3px rgba(102, 126, 234, 0.1); |
| | } |
| |
|
| | .app-header h1 { |
| | font-size: 2.2rem; |
| | margin: 0; |
| | background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); |
| | -webkit-background-clip: text; |
| | -webkit-text-fill-color: transparent; |
| | background-clip: text; |
| | font-weight: 700; |
| | } |
| |
|
| | .header-nav { |
| | display: flex; |
| | gap: 1rem; |
| | align-items: center; |
| | flex-wrap: wrap; |
| | } |
| |
|
| | .nav-button { |
| | background: linear-gradient(135deg, #667eea, #764ba2); |
| | color: white; |
| | border: none; |
| | padding: 0.6rem 1.4rem; |
| | border-radius: 25px; |
| | cursor: pointer; |
| | font-size: 0.9rem; |
| | font-weight: 500; |
| | transition: all 0.3s ease; |
| | text-decoration: none; |
| | box-shadow: 0 4px 15px rgba(102, 126, 234, 0.3); |
| | } |
| |
|
| | .nav-button:hover { |
| | transform: translateY(-2px); |
| | box-shadow: 0 6px 20px rgba(102, 126, 234, 0.4); |
| | } |
| |
|
| | .nav-button.active { |
| | background: linear-gradient(135deg, #764ba2, #667eea); |
| | box-shadow: 0 6px 20px rgba(118, 75, 162, 0.4); |
| | } |
| |
|
| | .nav-link { |
| | background: linear-gradient(135deg, #ff6b6b, #ee5a24); |
| | color: white; |
| | padding: 0.6rem 1.4rem; |
| | border-radius: 25px; |
| | text-decoration: none; |
| | font-size: 0.9rem; |
| | font-weight: 500; |
| | transition: all 0.3s ease; |
| | box-shadow: 0 4px 15px rgba(238, 90, 36, 0.3); |
| | } |
| |
|
| | .nav-link:hover { |
| | background: linear-gradient(135deg, #ee5a24, #ff6b6b); |
| | transform: translateY(-2px); |
| | box-shadow: 0 6px 20px rgba(238, 90, 36, 0.4); |
| | } |
| |
|
| | .nav-link.course-link { |
| | background: linear-gradient(135deg, #10ac84, #00d2d3); |
| | box-shadow: 0 4px 15px rgba(16, 172, 132, 0.3); |
| | position: relative; |
| | overflow: hidden; |
| | } |
| |
|
| | .nav-link.course-link:hover { |
| | background: linear-gradient(135deg, #00d2d3, #10ac84); |
| | box-shadow: 0 6px 20px rgba(16, 172, 132, 0.4); |
| | transform: translateY(-2px); |
| | } |
| |
|
| | .nav-link.course-link::before { |
| | content: '📚'; |
| | margin-right: 0.5rem; |
| | } |
| |
|
| | .app-header p { |
| | font-size: 1.1rem; |
| | color: #64748b; |
| | font-weight: 400; |
| | } |
| |
|
| | .main-container { |
| | display: grid; |
| | grid-template-columns: 1fr 1fr; |
| | gap: 24px; |
| | width: 100%; |
| | max-width: 1400px; |
| | } |
| |
|
| | @media (max-width: 968px) { |
| | .main-container { |
| | grid-template-columns: 1fr; |
| | max-width: 600px; |
| | } |
| | } |
| |
|
| | .input-panel, .result-panel { |
| | background: white; |
| | border-radius: 16px; |
| | padding: 28px; |
| | box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06); |
| | height: 550px; |
| | display: flex; |
| | flex-direction: column; |
| | } |
| |
|
| | .result-panel { |
| | overflow-y: auto; |
| | overflow-x: hidden; |
| | } |
| |
|
| | |
| | .result-panel::-webkit-scrollbar { |
| | width: 8px; |
| | } |
| |
|
| | .result-panel::-webkit-scrollbar-track { |
| | background: #f1f1f1; |
| | border-radius: 4px; |
| | } |
| |
|
| | .result-panel::-webkit-scrollbar-thumb { |
| | background: #888; |
| | border-radius: 4px; |
| | } |
| |
|
| | .result-panel::-webkit-scrollbar-thumb:hover { |
| | background: #555; |
| | } |
| |
|
| | |
| | .category-selector { |
| | margin-bottom: 20px; |
| | } |
| |
|
| | .category-selector label { |
| | display: block; |
| | margin-bottom: 8px; |
| | font-weight: 600; |
| | color: #374151; |
| | font-size: 0.95rem; |
| | text-transform: uppercase; |
| | letter-spacing: 0.025em; |
| | } |
| |
|
| | .category-select { |
| | width: 100%; |
| | padding: 10px 14px; |
| | border: 2px solid #e5e7eb; |
| | border-radius: 8px; |
| | font-size: 1rem; |
| | background-color: white; |
| | transition: all 0.2s; |
| | color: #374151; |
| | font-weight: 500; |
| | } |
| |
|
| | .category-select:hover { |
| | border-color: #9ca3af; |
| | } |
| |
|
| | .category-select:focus { |
| | outline: none; |
| | border-color: #667eea; |
| | box-shadow: 0 0 0 3px rgba(102, 126, 234, 0.1); |
| | } |
| |
|
| | .category-select:disabled { |
| | opacity: 0.6; |
| | cursor: not-allowed; |
| | background: #f9fafb; |
| | } |
| |
|
| | |
| | .agent-selector { |
| | margin-bottom: 24px; |
| | display: flex; |
| | align-items: center; |
| | gap: 12px; |
| | } |
| |
|
| | .agent-selector label { |
| | font-weight: 600; |
| | color: #374151; |
| | font-size: 0.95rem; |
| | min-width: 100px; |
| | text-transform: uppercase; |
| | letter-spacing: 0.025em; |
| | } |
| |
|
| | .agent-select { |
| | flex: 1; |
| | max-width: 300px; |
| | padding: 10px 14px; |
| | border: 2px solid #e5e7eb; |
| | border-radius: 8px; |
| | font-size: 1rem; |
| | background: white; |
| | transition: all 0.2s; |
| | color: #374151; |
| | font-weight: 500; |
| | } |
| |
|
| | .agent-select:hover:not(:disabled) { |
| | border-color: #9ca3af; |
| | } |
| |
|
| | .agent-select:focus { |
| | outline: none; |
| | border-color: #667eea; |
| | box-shadow: 0 0 0 3px rgba(102, 126, 234, 0.1); |
| | } |
| |
|
| | .agent-select:disabled { |
| | opacity: 0.6; |
| | cursor: not-allowed; |
| | background: #f9fafb; |
| | } |
| |
|
| | .agent-badge { |
| | padding: 4px 10px; |
| | border-radius: 12px; |
| | color: white; |
| | font-weight: bold; |
| | font-size: 0.8rem; |
| | box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1); |
| | } |
| |
|
| | .text-input { |
| | margin-bottom: 24px; |
| | } |
| |
|
| | .text-input textarea { |
| | width: 100%; |
| | padding: 14px; |
| | border: 2px solid #e5e7eb; |
| | border-radius: 8px; |
| | font-size: 1rem; |
| | line-height: 1.6; |
| | resize: vertical; |
| | min-height: 350px; |
| | max-height: 400px; |
| | transition: all 0.2s; |
| | font-family: inherit; |
| | color: #1f2937; |
| | background-color: white; |
| | } |
| |
|
| | .text-input textarea::placeholder { |
| | color: #9ca3af; |
| | } |
| |
|
| | .text-input textarea:focus { |
| | outline: none; |
| | border-color: #667eea; |
| | box-shadow: 0 0 0 3px rgba(102, 126, 234, 0.1); |
| | } |
| |
|
| | .text-input textarea:disabled { |
| | background: #f9fafb; |
| | cursor: not-allowed; |
| | } |
| |
|
| | .action-buttons { |
| | display: flex; |
| | gap: 12px; |
| | justify-content: center; |
| | margin-bottom: 20px; |
| | } |
| |
|
| | .btn { |
| | padding: 10px 24px; |
| | border: none; |
| | border-radius: 8px; |
| | font-size: 1rem; |
| | font-weight: 600; |
| | cursor: pointer; |
| | transition: all 0.2s; |
| | min-width: 100px; |
| | } |
| |
|
| | .btn-primary { |
| | background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); |
| | color: white; |
| | box-shadow: 0 4px 6px -1px rgba(102, 126, 234, 0.25); |
| | } |
| |
|
| | .btn-primary:hover:not(:disabled) { |
| | transform: translateY(-1px); |
| | box-shadow: 0 10px 15px -3px rgba(102, 126, 234, 0.3); |
| | } |
| |
|
| | .btn-primary:active:not(:disabled) { |
| | transform: translateY(0); |
| | } |
| |
|
| | .btn-primary:disabled { |
| | opacity: 0.5; |
| | cursor: not-allowed; |
| | transform: none; |
| | } |
| |
|
| | .btn-secondary { |
| | background: #f3f4f6; |
| | color: #4b5563; |
| | border: 1px solid #e5e7eb; |
| | } |
| |
|
| | .btn-secondary:hover:not(:disabled) { |
| | background: #e5e7eb; |
| | } |
| |
|
| | .btn-secondary:disabled { |
| | opacity: 0.5; |
| | cursor: not-allowed; |
| | } |
| |
|
| | .error-message { |
| | padding: 12px 16px; |
| | background: #fef2f2; |
| | color: #dc2626; |
| | border-radius: 8px; |
| | border-left: 4px solid #dc2626; |
| | font-weight: 500; |
| | margin-top: 12px; |
| | font-size: 0.95rem; |
| | } |
| |
|
| | .loading { |
| | display: flex; |
| | flex-direction: column; |
| | align-items: center; |
| | justify-content: center; |
| | padding: 60px; |
| | height: 100%; |
| | } |
| |
|
| | .spinner { |
| | width: 48px; |
| | height: 48px; |
| | border: 3px solid #e5e7eb; |
| | border-top: 3px solid #667eea; |
| | border-radius: 50%; |
| | animation: spin 1s linear infinite; |
| | margin-bottom: 20px; |
| | } |
| |
|
| | @keyframes spin { |
| | 0% { transform: rotate(0deg); } |
| | 100% { transform: rotate(360deg); } |
| | } |
| |
|
| | .loading p { |
| | color: #6b7280; |
| | font-size: 1rem; |
| | } |
| |
|
| | .result-container { |
| | height: 100%; |
| | } |
| |
|
| | .result-container h2 { |
| | color: #1f2937; |
| | margin-bottom: 24px; |
| | font-size: 1.5rem; |
| | border-bottom: 2px solid #e5e7eb; |
| | padding-bottom: 12px; |
| | } |
| |
|
| | .result-section { |
| | margin-bottom: 28px; |
| | } |
| |
|
| | .result-section h3 { |
| | color: #374151; |
| | margin-bottom: 16px; |
| | font-size: 1.2rem; |
| | font-weight: 600; |
| | } |
| |
|
| | .result-section p { |
| | line-height: 1.8; |
| | color: #4b5563; |
| | font-size: 1rem; |
| | } |
| |
|
| | .summary-content { |
| | margin-top: 12px; |
| | } |
| |
|
| | .evaluation-category { |
| | margin-bottom: 20px; |
| | padding: 16px; |
| | background: #f9fafb; |
| | border-radius: 8px; |
| | border-left: 3px solid #667eea; |
| | } |
| |
|
| | .category-title { |
| | color: #667eea; |
| | font-size: 1.05rem; |
| | font-weight: 600; |
| | margin-bottom: 8px; |
| | } |
| |
|
| | .category-content { |
| | color: #4b5563; |
| | line-height: 1.7; |
| | white-space: pre-wrap; |
| | } |
| |
|
| | .inline-edits { |
| | padding: 16px; |
| | background: #f9fafb; |
| | border-radius: 8px; |
| | line-height: 1.7; |
| | color: #374151; |
| | border: 1px solid #e5e7eb; |
| | } |
| |
|
| | .inline-edits pre { |
| | margin: 0; |
| | font-size: 0.95rem; |
| | line-height: 1.7; |
| | color: #374151; |
| | } |
| |
|
| | |
| | .detailed-feedback { |
| | display: flex; |
| | flex-direction: column; |
| | gap: 16px; |
| | } |
| |
|
| | .feedback-item { |
| | padding: 14px; |
| | background: #f9fafb; |
| | border-radius: 8px; |
| | border-left: 3px solid #667eea; |
| | } |
| |
|
| | .feedback-title { |
| | color: #667eea; |
| | font-size: 1.05rem; |
| | font-weight: 600; |
| | margin-bottom: 8px; |
| | } |
| |
|
| | .feedback-content { |
| | color: #4b5563; |
| | line-height: 1.7; |
| | margin: 0; |
| | } |
| |
|
| | |
| | .suggestions-container { |
| | display: flex; |
| | flex-direction: column; |
| | gap: 16px; |
| | } |
| |
|
| | .correction-item { |
| | background: white; |
| | border: 1px solid #e5e7eb; |
| | border-radius: 8px; |
| | overflow: hidden; |
| | transition: all 0.2s; |
| | } |
| |
|
| | .correction-item:hover { |
| | border-color: #9ca3af; |
| | box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1); |
| | } |
| |
|
| | .correction-header { |
| | background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); |
| | padding: 8px 14px; |
| | } |
| |
|
| | .correction-label { |
| | color: white; |
| | font-weight: 600; |
| | font-size: 0.85rem; |
| | text-transform: uppercase; |
| | letter-spacing: 0.025em; |
| | } |
| |
|
| | .correction-content { |
| | padding: 16px; |
| | display: flex; |
| | flex-direction: column; |
| | gap: 12px; |
| | } |
| |
|
| | .correction-original, |
| | .correction-revised, |
| | .correction-reason { |
| | display: flex; |
| | flex-direction: column; |
| | gap: 6px; |
| | } |
| |
|
| | .correction-original strong, |
| | .correction-revised strong, |
| | .correction-reason strong { |
| | color: #1f2937; |
| | font-weight: 600; |
| | font-size: 0.85rem; |
| | text-transform: uppercase; |
| | letter-spacing: 0.025em; |
| | } |
| |
|
| | .correction-original span { |
| | color: #6b7280; |
| | line-height: 1.6; |
| | padding-left: 16px; |
| | } |
| |
|
| | .correction-revised span { |
| | line-height: 1.6; |
| | padding-left: 16px; |
| | } |
| |
|
| | .corrected-text { |
| | color: #059669; |
| | font-weight: 500; |
| | background: #ecfdf5; |
| | padding: 6px 10px; |
| | border-radius: 4px; |
| | display: inline-block; |
| | } |
| |
|
| | .correction-reason span { |
| | color: #6b7280; |
| | font-style: italic; |
| | line-height: 1.6; |
| | padding-left: 16px; |
| | } |
| |
|
| | .suggestion-item { |
| | padding: 14px; |
| | background: #fefce8; |
| | border-radius: 8px; |
| | border-left: 3px solid #eab308; |
| | } |
| |
|
| | .suggestion-item strong { |
| | color: #a16207; |
| | margin-right: 8px; |
| | } |
| |
|
| | |
| | .score-table { |
| | margin-top: 20px; |
| | overflow-x: auto; |
| | } |
| |
|
| | .score-table table { |
| | width: 100%; |
| | border-collapse: separate; |
| | border-spacing: 0; |
| | background: white; |
| | border-radius: 8px; |
| | overflow: hidden; |
| | border: 1px solid #e5e7eb; |
| | } |
| |
|
| | .score-table th { |
| | background: #f9fafb; |
| | color: #374151; |
| | padding: 12px 16px; |
| | text-align: left; |
| | font-weight: 600; |
| | font-size: 0.95rem; |
| | text-transform: uppercase; |
| | letter-spacing: 0.025em; |
| | border-bottom: 2px solid #e5e7eb; |
| | } |
| |
|
| | .score-table td { |
| | padding: 14px 16px; |
| | border-bottom: 1px solid #f3f4f6; |
| | color: #374151; |
| | font-size: 0.95rem; |
| | } |
| |
|
| | .score-table tr:last-child td { |
| | border-bottom: none; |
| | } |
| |
|
| | .score-table tr:hover:not(.overall-row) { |
| | background: #fafbfc; |
| | } |
| |
|
| | .criteria-name { |
| | font-weight: 600; |
| | color: #4b5563; |
| | min-width: 120px; |
| | } |
| |
|
| | .criteria-grade { |
| | font-weight: bold; |
| | font-size: 1.2rem; |
| | color: #667eea; |
| | text-align: center; |
| | min-width: 80px; |
| | } |
| |
|
| | .criteria-explanation { |
| | color: #6b7280; |
| | line-height: 1.6; |
| | } |
| |
|
| | .overall-row { |
| | background: #f9fafb; |
| | font-weight: bold; |
| | } |
| |
|
| | .overall-row td { |
| | padding: 16px; |
| | border-top: 2px solid #667eea; |
| | } |
| |
|
| | .overall-emoji { |
| | font-size: 1.5rem; |
| | margin-right: 8px; |
| | vertical-align: middle; |
| | } |
| |
|
| | .overall-score-number { |
| | font-size: 1.1rem; |
| | color: #1f2937; |
| | font-weight: bold; |
| | vertical-align: middle; |
| | } |