|
|
@@ -0,0 +1,325 @@
|
|
|
+@keyframes fadeIn {
|
|
|
+ from {
|
|
|
+ opacity: 0;
|
|
|
+ transform: translateY(10px);
|
|
|
+ }
|
|
|
+ to {
|
|
|
+ opacity: 1;
|
|
|
+ transform: translateY(0);
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+/* Main Container */
|
|
|
+.grades-container {
|
|
|
+ max-width: 1200px;
|
|
|
+ margin: 0 auto;
|
|
|
+ padding: 40px 20px;
|
|
|
+ animation: fadeIn 0.6s ease-in;
|
|
|
+}
|
|
|
+
|
|
|
+/* Header Section */
|
|
|
+.header-section {
|
|
|
+margin-bottom: 32px;
|
|
|
+}
|
|
|
+
|
|
|
+.subject-title {
|
|
|
+font-size: 48px;
|
|
|
+font-weight: 700;
|
|
|
+letter-spacing: -1px;
|
|
|
+color: #ffffff;
|
|
|
+margin-bottom: 8px;
|
|
|
+}
|
|
|
+
|
|
|
+/* Search Section */
|
|
|
+.search-section {
|
|
|
+background: rgba(255, 255, 255, 0.02);
|
|
|
+border: 1px solid rgba(255, 255, 255, 0.1);
|
|
|
+border-radius: 12px;
|
|
|
+padding: 20px;
|
|
|
+margin-bottom: 24px;
|
|
|
+transition: all 0.3s ease;
|
|
|
+}
|
|
|
+
|
|
|
+.search-section:hover {
|
|
|
+background: rgba(255, 255, 255, 0.05);
|
|
|
+border-color: rgba(255, 255, 255, 0.15);
|
|
|
+}
|
|
|
+
|
|
|
+.search-label {
|
|
|
+display: block;
|
|
|
+font-size: 14px;
|
|
|
+font-weight: 500;
|
|
|
+color: #e0e0e0;
|
|
|
+margin-bottom: 8px;
|
|
|
+}
|
|
|
+
|
|
|
+.search-input {
|
|
|
+width: 100%;
|
|
|
+padding: 12px 16px;
|
|
|
+background: rgba(255, 255, 255, 0.05);
|
|
|
+border: 1px solid rgba(255, 255, 255, 0.1);
|
|
|
+border-radius: 8px;
|
|
|
+color: #ffffff;
|
|
|
+font-size: 14px;
|
|
|
+font-family: inherit;
|
|
|
+transition: all 0.3s ease;
|
|
|
+}
|
|
|
+
|
|
|
+.search-input:focus {
|
|
|
+outline: none;
|
|
|
+border-color: rgba(255, 255, 255, 0.2);
|
|
|
+background: rgba(255, 255, 255, 0.08);
|
|
|
+}
|
|
|
+
|
|
|
+.search-input::placeholder {
|
|
|
+color: #888;
|
|
|
+}
|
|
|
+
|
|
|
+/* Form Section */
|
|
|
+.form-section {
|
|
|
+ background: linear-gradient(135deg, #1a1a1a 0%, #2a2a2a 100%);
|
|
|
+ border: 1px solid rgba(255, 255, 255, 0.1);
|
|
|
+ border-radius: 16px;
|
|
|
+ padding: 30px;
|
|
|
+ margin-bottom: 32px;
|
|
|
+ box-shadow: 0 4px 20px rgba(0, 0, 0, 0.3);
|
|
|
+}
|
|
|
+
|
|
|
+.grade-form {
|
|
|
+ display: grid;
|
|
|
+ grid-template-columns: 1fr 1fr;
|
|
|
+ gap: 20px;
|
|
|
+ align-items: end;
|
|
|
+}
|
|
|
+
|
|
|
+.form-group {
|
|
|
+ display: flex;
|
|
|
+ flex-direction: column;
|
|
|
+}
|
|
|
+
|
|
|
+.form-label {
|
|
|
+ font-size: 14px;
|
|
|
+ font-weight: 500;
|
|
|
+ color: #e0e0e0;
|
|
|
+ margin-bottom: 8px;
|
|
|
+}
|
|
|
+
|
|
|
+.form-select {
|
|
|
+ padding: 12px 16px;
|
|
|
+ background: rgba(255, 255, 255, 0.05);
|
|
|
+ border: 1px solid rgba(255, 255, 255, 0.1);
|
|
|
+ border-radius: 8px;
|
|
|
+ color: #ffffff;
|
|
|
+ font-size: 14px;
|
|
|
+ font-family: inherit;
|
|
|
+ transition: all 0.3s ease;
|
|
|
+}
|
|
|
+
|
|
|
+.form-select:focus {
|
|
|
+ outline: none;
|
|
|
+ border-color: rgba(255, 255, 255, 0.2);
|
|
|
+ background: rgba(255, 255, 255, 0.08);
|
|
|
+}
|
|
|
+
|
|
|
+.form-select option {
|
|
|
+ background: #2a2a2a;
|
|
|
+ color: #ffffff;
|
|
|
+}
|
|
|
+
|
|
|
+.error-message {
|
|
|
+ color: #ff6b6b;
|
|
|
+ font-size: 12px;
|
|
|
+ margin-top: 4px;
|
|
|
+}
|
|
|
+
|
|
|
+.duplicate-error {
|
|
|
+ grid-column: 1 / -1;
|
|
|
+ background: rgba(255, 107, 107, 0.1);
|
|
|
+ border: 1px solid rgba(255, 107, 107, 0.3);
|
|
|
+ border-radius: 8px;
|
|
|
+ padding: 12px;
|
|
|
+ color: #ff6b6b;
|
|
|
+ font-size: 14px;
|
|
|
+ text-align: center;
|
|
|
+}
|
|
|
+
|
|
|
+.submit-button {
|
|
|
+ background: linear-gradient(135deg, #8C231E 0%, #a52a24 100%);
|
|
|
+ color: #ffffff;
|
|
|
+ border: none;
|
|
|
+ padding: 12px 24px;
|
|
|
+ border-radius: 8px;
|
|
|
+ font-size: 14px;
|
|
|
+ font-weight: 500;
|
|
|
+ cursor: pointer;
|
|
|
+ transition: all 0.3s ease;
|
|
|
+ font-family: inherit;
|
|
|
+}
|
|
|
+
|
|
|
+.submit-button:hover {
|
|
|
+ transform: translateY(-1px);
|
|
|
+ box-shadow: 0 4px 12px rgba(140, 35, 30, 0.3);
|
|
|
+}
|
|
|
+
|
|
|
+.submit-button:active {
|
|
|
+ transform: translateY(0);
|
|
|
+}
|
|
|
+
|
|
|
+/* Table Section */
|
|
|
+.table-section {
|
|
|
+background: rgba(255, 255, 255, 0.02);
|
|
|
+border: 1px solid rgba(255, 255, 255, 0.1);
|
|
|
+border-radius: 16px;
|
|
|
+overflow: hidden;
|
|
|
+}
|
|
|
+
|
|
|
+.grades-table {
|
|
|
+width: 100%;
|
|
|
+border-collapse: collapse;
|
|
|
+}
|
|
|
+
|
|
|
+.table-header {
|
|
|
+background: linear-gradient(135deg, #1a1a1a 0%, #2a2a2a 100%);
|
|
|
+}
|
|
|
+
|
|
|
+.table-header th {
|
|
|
+padding: 16px 20px;
|
|
|
+text-align: left;
|
|
|
+font-size: 14px;
|
|
|
+font-weight: 600;
|
|
|
+color: #ffffff;
|
|
|
+border-bottom: 2px solid #333;
|
|
|
+}
|
|
|
+
|
|
|
+.sort-button {
|
|
|
+background: none;
|
|
|
+border: none;
|
|
|
+color: #e0e0e0;
|
|
|
+cursor: pointer;
|
|
|
+margin-left: 8px;
|
|
|
+font-size: 16px;
|
|
|
+transition: all 0.3s ease;
|
|
|
+}
|
|
|
+
|
|
|
+.sort-button:hover {
|
|
|
+color: #ffffff;
|
|
|
+transform: scale(1.1);
|
|
|
+}
|
|
|
+
|
|
|
+.table-row {
|
|
|
+transition: all 0.3s ease;
|
|
|
+}
|
|
|
+
|
|
|
+.table-row:hover {
|
|
|
+background: rgba(255, 255, 255, 0.05);
|
|
|
+}
|
|
|
+
|
|
|
+.table-row.even-row {
|
|
|
+background: rgba(255, 255, 255, 0.02);
|
|
|
+}
|
|
|
+
|
|
|
+.table-row.even-row:hover {
|
|
|
+background: rgba(255, 255, 255, 0.08);
|
|
|
+}
|
|
|
+
|
|
|
+.table-cell {
|
|
|
+padding: 16px 20px;
|
|
|
+font-size: 14px;
|
|
|
+color: #e0e0e0;
|
|
|
+border-bottom: 1px solid rgba(255, 255, 255, 0.05);
|
|
|
+}
|
|
|
+
|
|
|
+/* Grade Management */
|
|
|
+.grade-container {
|
|
|
+display: flex;
|
|
|
+flex-wrap: wrap;
|
|
|
+gap: 8px;
|
|
|
+}
|
|
|
+
|
|
|
+.grade-item {
|
|
|
+display: flex;
|
|
|
+align-items: center;
|
|
|
+gap: 8px;
|
|
|
+background: rgba(255, 255, 255, 0.05);
|
|
|
+border: 1px solid rgba(255, 255, 255, 0.1);
|
|
|
+border-radius: 8px;
|
|
|
+padding: 8px 12px;
|
|
|
+}
|
|
|
+
|
|
|
+.grade-value {
|
|
|
+font-family: 'Courier New', monospace;
|
|
|
+font-weight: 600;
|
|
|
+color: #ffffff;
|
|
|
+}
|
|
|
+
|
|
|
+.grade-edit-select {
|
|
|
+padding: 4px 8px;
|
|
|
+background: rgba(255, 255, 255, 0.1);
|
|
|
+border: 1px solid rgba(255, 255, 255, 0.2);
|
|
|
+border-radius: 4px;
|
|
|
+color: #ffffff;
|
|
|
+font-size: 12px;
|
|
|
+font-family: 'Courier New', monospace;
|
|
|
+}
|
|
|
+
|
|
|
+.grade-edit-select option {
|
|
|
+background: #2a2a2a;
|
|
|
+}
|
|
|
+
|
|
|
+.action-button {
|
|
|
+background: rgba(255, 255, 255, 0.1);
|
|
|
+color: #e0e0e0;
|
|
|
+border: 1px solid rgba(255, 255, 255, 0.1);
|
|
|
+padding: 4px 8px;
|
|
|
+border-radius: 4px;
|
|
|
+font-size: 12px;
|
|
|
+cursor: pointer;
|
|
|
+transition: all 0.3s ease;
|
|
|
+font-family: inherit;
|
|
|
+}
|
|
|
+
|
|
|
+.action-button:hover {
|
|
|
+background: rgba(255, 255, 255, 0.15);
|
|
|
+color: #ffffff;
|
|
|
+transform: translateY(-1px);
|
|
|
+}
|
|
|
+
|
|
|
+.action-button.save {
|
|
|
+background: linear-gradient(135deg, #8C231E 0%, #a52a24 100%);
|
|
|
+color: #ffffff;
|
|
|
+border-color: #8C231E;
|
|
|
+}
|
|
|
+
|
|
|
+.action-button.save:hover {
|
|
|
+ box-shadow: 0 2px 8px rgba(140, 35, 30, 0.3);
|
|
|
+}
|
|
|
+
|
|
|
+/* Responsive Design */
|
|
|
+@media (max-width: 768px) {
|
|
|
+ .grades-container {
|
|
|
+ padding: 20px 15px;
|
|
|
+ }
|
|
|
+
|
|
|
+ .subject-title {
|
|
|
+ font-size: 36px;
|
|
|
+ }
|
|
|
+
|
|
|
+ .grade-form {
|
|
|
+ grid-template-columns: 1fr;
|
|
|
+ gap: 16px;
|
|
|
+ }
|
|
|
+
|
|
|
+ .grades-table {
|
|
|
+ font-size: 12px;
|
|
|
+ }
|
|
|
+
|
|
|
+ .table-header th,
|
|
|
+ .table-cell {
|
|
|
+ padding: 12px 16px;
|
|
|
+ }
|
|
|
+
|
|
|
+ .grade-container {
|
|
|
+ flex-direction: column;
|
|
|
+ gap: 4px;
|
|
|
+ }
|
|
|
+}
|