:root { --primary: #4361ee; --secondary: #3f37c9; --success: #4cc9f0; --light: #f8f9fa; --dark: #212529; --gray: #6c757d; --light-gray: #e9ecef; --border: #dee2e6; --card-shadow: 0 4px 12px rgba(0, 0, 0, 0.08); --transition: all 0.3s ease; --promote-color: #ff7f50; --count-circle-bg: #e0f7fa; --count-circle-border: #00bcd4; --count-circle-text: #00798c; --background: #f0f2f5; --card-bg: white; --text-color: var(--dark); --input-bg: white; --input-border: var(--border); --header-bg-start: var(--primary); --header-bg-end: var(--secondary); --active-student-bg: rgba(67, 97, 238, 0.08); --active-student-border: var(--primary); --hover-student-bg: var(--light); --panel-header-border: var(--border); --footer-border: var(--border); --modal-bg: white; --modal-border: var(--border); --modal-shadow: var(--card-shadow); --modal-message-color: var(--gray); --modal-summary-bg: var(--light-gray); --modal-summary-text: var(--dark); --emi-row-bg: var(--light); --emi-row-border: var(--light-gray); --tab-button-color: var(--gray); --tab-button-active-color: var(--primary); --tab-button-border: var(--border); --bulk-list-bg: white; --bulk-list-border: var(--border); --bulk-list-item-border: var(--light-gray); --bulk-list-select-all-border: var(--border); --bulk-list-select-all-color: var(--primary); --bulk-message-color: var(--gray); --bulk-message-strong-color: var(--dark); --bulk-confirmation-list-bg: var(--light-gray); --bulk-confirmation-list-item-border: var(--border); --bulk-confirmation-list-item-color: var(--dark); --pending-payment-list-bg: var(--light-gray); --pending-payment-list-item-name-color: var(--dark); --pending-payment-highlight-color: #e63946; /* New PIN Modal Colors */ --pin-modal-bg: var(--card-bg); --pin-modal-border: var(--border); --pin-modal-shadow: var(--card-shadow); --pin-modal-text: var(--text-color); --pin-input-bg: var(--input-bg); --pin-input-border: var(--input-border); --pin-input-focus-shadow: 0 0 0 3px rgba(67, 97, 238, 0.2); --pin-button-primary-bg: var(--primary); --pin-button-primary-hover: var(--secondary); --pin-button-outline-border: var(--primary); --pin-button-outline-color: var(--primary); --pin-button-outline-hover: rgba(67, 97, 238, 0.1); --pin-button-danger-bg: #e63946; --pin-button-danger-hover: #d00000; } html[data-theme="dark"] { --primary: #7b92f0; --secondary: #6a7edb; --success: #66d9ef; --light: #343a40; --dark: #f8f9fa; --gray: #adb5bd; --light-gray: #495057; --border: #495057; --card-shadow: 0 4px 12px rgba(0, 0, 0, 0.4); --promote-color: #ff9870; --count-circle-bg: #2c3e50; --count-circle-border: #3498db; --count-circle-text: #e0f7fa; --background: #212529; --card-bg: #2c3e50; --text-color: #f8f9fa; --input-bg: #343a40; --input-border: #495057; --header-bg-start: #2c3e50; --header-bg-end: #34495e; --active-student-bg: rgba(123, 146, 240, 0.15); --active-student-border: var(--primary); --hover-student-bg: #343a40; --panel-header-border: #495057; --footer-border: #495057; --modal-bg: #2c3e50; --modal-border: #495057; --modal-shadow: 0 4px 15px rgba(0, 0, 0, 0.5); --modal-message-color: #adb5bd; --modal-summary-bg: #343a40; --modal-summary-text: #f8f9fa; --emi-row-bg: #343a40; --emi-row-border: #495057; --tab-button-color: #adb5bd; --tab-button-active-color: var(--primary); --tab-button-border: #495057; --bulk-list-bg: #343a40; --bulk-list-border: #495057; --bulk-list-item-border: #495057; --bulk-list-select-all-border: #495057; --bulk-list-select-all-color: var(--primary); --bulk-message-color: #adb5bd; --bulk-message-strong-color: #f8f9fa; --bulk-confirmation-list-bg: #343a40; --bulk-confirmation-list-item-border: #495057; --bulk-confirmation-list-item-color: #f8f9fa; --pending-payment-list-bg: #343a40; --pending-payment-list-item-border: #495057; --pending-payment-list-item-name-color: #f8f9fa; --pending-payment-highlight-color: #ff6b6b; /* New PIN Modal Colors (Dark Theme) */ --pin-modal-bg: #2c3e50; --pin-modal-border: #495057; --pin-modal-shadow: 0 4px 15px rgba(0, 0, 0, 0.5); --pin-modal-text: #f8f9fa; --pin-input-bg: #343a40; --pin-input-border: #495057; --pin-input-focus-shadow: 0 0 0 3px rgba(123, 146, 240, 0.2); --pin-button-primary-bg: #7b92f0; --pin-button-primary-hover: #6a7edb; --pin-button-outline-border: #7b92f0; --pin-button-outline-color: #7b92f0; --pin-button-outline-hover: rgba(123, 146, 240, 0.1); --pin-button-danger-bg: #ff6b6b; --pin-button-danger-hover: #e63946; } * { margin: 0; padding: 0; box-sizing: border-box; font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif; } body { background-color: var(--background); color: var(--text-color); line-height: 1.6; transition: background-color 0.3s ease, color 0.3s ease; } .container { display: flex; flex-direction: column; min-height: 100vh; max-width: 1600px; margin: 0 auto; } header { background: linear-gradient( 135deg, var(--header-bg-start), var(--header-bg-end) ); color: white; padding: 1.5rem 2rem; box-shadow: var(--card-shadow); z-index: 100; border-bottom-left-radius: 12px; border-bottom-right-radius: 12px; transition: background 0.3s ease, box-shadow 0.3s ease; } .header-content { display: flex; justify-content: space-between; align-items: center; max-width: 1600px; margin: 0 auto; gap: 10px; flex-wrap: nowrap; } .logo { display: flex; align-items: center; gap: 12px; flex-shrink: 0; } .logo i { font-size: 2.2rem; } .logo h1 { font-size: 1.8rem; font-weight: 600; white-space: nowrap; } .class-selector { display: flex; align-items: center; gap: 10px; flex-shrink: 0; } .class-selector label { font-size: 1.1rem; font-weight: 500; white-space: nowrap; } .class-selector select { background: var(--input-bg); border: none; border-radius: 8px; padding: 8px 12px; font-size: 0.9rem; font-weight: 500; color: var(--primary); cursor: pointer; min-width: 180px; box-shadow: var(--card-shadow); transition: var(--transition); white-space: nowrap; } .class-selector select:focus { outline: none; box-shadow: 0 0 0 3px rgba(67, 97, 238, 0.3); } /* Theme Toggle Switch Styles */ .theme-switch { position: relative; display: inline-block; width: 60px; height: 34px; margin-left: 10px; } .theme-switch input { opacity: 0; width: 0; height: 0; } .slider { position: absolute; cursor: pointer; top: 0; left: 0; right: 0; bottom: 0; background-color: #5c6bc0; -webkit-transition: 0.4s; transition: 0.4s; border-radius: 34px; } .slider:before { position: absolute; content: ""; height: 26px; width: 26px; left: 4px; bottom: 4px; background-color: white; -webkit-transition: 0.4s; transition: 0.4s; border-radius: 50%; } input:checked + .slider { background-color: var(--primary); } input:focus + .slider { box-shadow: 0 0 1px var(--primary); } input:checked + .slider:before { -webkit-transform: translateX(26px); -ms-transform: translateX(26px); transform: translateX(26px); } /* End Theme Toggle Switch Styles */ .main-content { display: flex; flex: 1; padding: 2rem; gap: 2rem; } .student-list-panel { flex: 1; background: var(--card-bg); border-radius: 12px; box-shadow: var(--card-shadow); display: flex; flex-direction: column; overflow: hidden; transition: background-color 0.3s ease, box-shadow 0.3s ease; } .panel-header { padding: 1.2rem 1.5rem; border-bottom: 1px solid var(--panel-header-border); display: flex; justify-content: space-between; align-items: center; flex-wrap: nowrap; transition: border-color 0.3s ease; } .panel-header h2 { font-size: 1.2rem; font-weight: 600; color: var(--text-color); white-space: nowrap; transition: color 0.3s ease; } .panel-header-actions { display: flex; gap: 5px; align-items: center; flex-shrink: 0; } .student-count-rectangle { display: flex; align-items: center; justify-content: center; width: 35px; height: 35px; border-radius: 8px; background-color: var(--count-circle-bg); border: 2px solid var(--count-circle-border); color: var(--count-circle-text); font-weight: 600; font-size: 0.9rem; margin: 0 15px; flex-shrink: 0; transition: background-color 0.3s ease, border-color 0.3s ease, color 0.3s ease; } .search-box { padding: 1rem 1.5rem; border-bottom: 1px solid var(--panel-header-border); transition: border-color 0.3s ease; } .search-container { position: relative; } .search-container i { position: absolute; left: 15px; top: 50%; transform: translateY(-50%); color: var(--gray); transition: color 0.3s ease; } .search-container input { width: 100%; padding: 12px 15px 12px 45px; border: 1px solid var(--input-border); border-radius: 8px; font-size: 1rem; transition: var(--transition); background-color: var(--input-bg); color: var(--text-color); padding-right: 50px; /* Added for clear button */ } .search-container input:focus { outline: none; border-color: var(--primary); box-shadow: 0 0 0 3px rgba(67, 97, 238, 0.2); } .clear-search-btn { position: absolute; right: 40px; top: 50%; transform: translateY(-50%); background: none; border: none; color: var(--gray); font-size: 1.2rem; cursor: pointer; transition: color 0.3s ease; padding: 5px; border-radius: 50%; display: flex; align-items: center; justify-content: center; } .clear-search-btn:hover { color: var(--dark); } .clear-search-btn.hidden { display: none; } .student-list { flex: 1; padding: 0; min-height: 100px; display: flex; flex-direction: column; } @media (max-width: 1050px) { .student-list { overflow-y: auto; } } .student-list-inner { flex: 1; display: flex; flex-direction: column; } .student-item { display: flex; align-items: center; padding: 0.915rem 1.5rem; border-bottom: 1px solid var(--panel-header-border); cursor: pointer; transition: var(--transition); box-sizing: border-box; height: 5%; flex-shrink: 0; flex-grow: 0; flex-basis: 5%; } .student-item:hover { background-color: var(--hover-student-bg); } .student-item.active { background-color: var(--active-student-bg); border-left: 4px solid var(--active-student-border); } .student-avatar { width: 45px; height: 45px; border-radius: 50%; background: linear-gradient(135deg, var(--success), var(--primary)); display: flex; align-items: center; justify-content: center; color: white; font-weight: 600; font-size: 1.1rem; margin-right: 15px; flex-shrink: 0; } .student-info { flex: 1; min-width: 0; } .student-name { font-weight: 600; font-size: 1.05rem; margin-bottom: 3px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; color: var(--text-color); } .pagination { display: flex; justify-content: space-between; align-items: center; padding: 1.5rem; border-top: 1px solid var(--panel-header-border); flex-wrap: nowrap; min-height: 70px; background-color: var(--hover-student-bg); transition: border-color 0.3s ease, background-color 0.3s ease; } .pagination-controls { display: flex; gap: 8px; flex-shrink: 0; } .pagination-btn { background: var(--card-bg); border: 1px solid var(--input-border); color: var(--text-color); width: 40px; height: 40px; border-radius: 8px; cursor: pointer; display: flex; align-items: center; justify-content: center; transition: var(--transition); flex-shrink: 0; } .pagination-btn:hover { background: var(--hover-student-bg); border-color: var(--gray); } .pagination-btn:disabled { opacity: 0.5; cursor: not-allowed; } .pagination-info { font-size: 0.95rem; color: var(--gray); white-space: nowrap; flex-shrink: 0; } .pagination-info span[contenteditable="true"] { border-bottom: 1px dashed var(--primary); cursor: text; padding: 0 2px; min-width: 20px; display: inline-block; text-align: center; } .pagination-info span[contenteditable="true"]:focus { outline: none; background-color: var(--light-gray); } .student-detail-panel { flex: 2; background: var(--card-bg); border-radius: 12px; box-shadow: var(--card-shadow); display: flex; flex-direction: column; overflow: hidden; position: relative; transition: background-color 0.3s ease, box-shadow 0.3s ease; } .photo-section { padding: 2rem; display: flex; flex-direction: column; align-items: center; border-bottom: 1.5px solid var(--panel-header-border); background: var(--card-bg); transition: border-color 0.3s ease, background 0.3s ease; } .photo-container { position: relative; width: 180px; height: 180px; border-radius: 50%; background-color: var(--light-gray); overflow: hidden; border: 5px solid var(--card-bg); box-shadow: var(--card-shadow); margin-bottom: 1.5rem; transition: background-color 0.3s ease, border-color 0.3s ease, box-shadow 0.3s ease; } .photo-placeholder { width: 100%; height: 100%; display: flex; align-items: center; justify-content: center; background: linear-gradient(135deg, var(--success), var(--primary)); color: white; font-size: 4rem; } .photo-container img { width: 100%; height: 100%; object-fit: cover; -webkit-print-color-adjust: exact; color-adjust: exact; } .photo-buttons { display: flex; gap: 10px; flex-wrap: nowrap; } .upload-btn, .remove-photo-btn { background: var(--primary); color: white; border: none; padding: 10px 20px; border-radius: 8px; font-weight: 500; cursor: pointer; display: inline-flex; align-items: center; gap: 8px; transition: var(--transition); white-space: nowrap; flex-shrink: 0; } .upload-btn:hover { background: var(--secondary); } .remove-photo-btn { background: var(--gray); } .remove-photo-btn:hover { background: #5a6268; } .photo-buttons.hidden, .remove-photo-btn.hidden, .hide-print { display: none !important; } .details-section { padding: 2rem; flex: 1; overflow-y: auto; } .section-title { font-size: 1.2rem; font-weight: 600; margin-bottom: 1.5rem; padding-bottom: 0.8rem; border-bottom: 1px solid var(--panel-header-border); color: var(--primary); transition: border-color 0.3s ease, color 0.3s ease; } .sub-section-title { font-size: 1rem; font-weight: 600; margin: 1rem 0 0.5rem; color: var(--text-color); grid-column: 1 / -1; transition: color 0.3s ease; } .details-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 1.5rem; } .form-group { margin-bottom: 1.2rem; } .form-group label { display: block; margin-bottom: 6px; font-weight: 500; color: var(--text-color); font-size: 0.95rem; transition: color 0.3s ease; } .form-group input, .form-group select, .form-group textarea { width: 100%; padding: 10px 12px; border: 1px solid var(--input-border); border-radius: 8px; font-size: 1rem; transition: var(--transition); background-color: var(--input-bg); color: var(--text-color); } .form-group input:read-only, .form-group select:read-only, .form-group textarea:read-only { background-color: var(--light-gray); cursor: default; } .form-group input:focus, .form-group select:focus, .form-group textarea:focus { outline: none; border-color: var(--primary); box-shadow: 0 0 0 3px rgba(67, 97, 238, 0.2); } .form-group select:disabled { background-color: var(--light-gray); color: var(--text-color); opacity: 1; -webkit-text-fill-color: var(--text-color); -webkit-opacity: 1; cursor: default; } .form-row { display: flex; gap: 1rem; } .form-row .form-group { flex: 1; } .action-buttons { display: flex; gap: 15px; padding: 1.5rem 2rem; border-top: 1px solid var(--panel-header-border); background-color: var(--hover-student-bg); flex-wrap: nowrap; min-height: 80px; align-items: center; transition: border-color 0.3s ease, background-color 0.3s ease; } .action-buttons.hidden { display: none; } .btn { padding: 10px 18px; border-radius: 8px; font-weight: 500; font-size: 0.9rem; cursor: pointer; transition: var(--transition); display: inline-flex; align-items: center; justify-content: center; gap: 8px; border: none; white-space: nowrap; flex-shrink: 0; } .btn-primary { background: var(--primary); color: white; } .btn-primary:hover { background: var(--secondary); } .btn-outline { background: transparent; border: 1px solid var(--primary); color: var(--primary); } .btn-outline:hover { background: rgba(67, 97, 238, 0.1); } .btn-danger { background: #e63946; color: white; } .btn-danger:hover { background: #d00000; } .btn-promote { background: var(--promote-color); color: white; } .btn-promote:hover { background: #e66a3d; } .promote-button-container { position: absolute; top: 2rem; right: 2rem; z-index: 10; } .promote-button-container.hidden { display: none; } .no-student { display: flex; flex-direction: column; align-items: center; justify-content: center; flex: 1; padding: 2rem; text-align: center; color: var(--gray); transition: color 0.3s ease; } .no-student i { font-size: 4rem; margin-bottom: 1.5rem; color: var(--light-gray); transition: color 0.3s ease; } .no-student h3 { font-size: 1.4rem; margin-bottom: 0.5rem; color: var(--text-color); transition: color 0.3s ease; } .no-student p { max-width: 400px; margin-bottom: 1.5rem; } footer { text-align: center; padding: 1.5rem; color: var(--gray); font-size: 0.9rem; border-top: 1px solid var(--footer-border); transition: border-color 0.3s ease, color 0.3s ease; } .toast { position: fixed; top: 20px; right: 20px; padding: 15px 20px; border-radius: 8px; background: var(--dark); color: white; box-shadow: 0 4px 15px rgba(0, 0, 0, 0.2); display: flex; align-items: center; gap: 10px; transform: translateY(-100px); opacity: 0; transition: transform 0.3s ease, opacity 0.3s ease; z-index: 2000; max-width: 350px; word-wrap: break-word; white-space: normal; text-align: left; } .toast.show { transform: translateY(0); opacity: 1; } .toast i { font-size: 1.2rem; flex-shrink: 0; } .toast.success { background: #2a9d8f; } .toast.error { background: #e63946; } .toast.info { background: #4361ee; } #scrollToTopBtn { height: 50px; width: 50px; position: fixed; bottom: 50px; right: 30px; z-index: 99; border: none; outline: none; background-color: var(--primary); color: white; cursor: pointer; padding: 15px; border-radius: 50%; font-size: 1.125rem; box-shadow: var(--card-shadow); transition: opacity 0.3s, visibility 0.3s, background-color 0.3s ease, box-shadow 0.3s ease; opacity: 0; visibility: hidden; } #scrollToTopBtn.show { opacity: 1; visibility: visible; } @media (max-width: 1050px) { .main-content { flex-direction: column; padding: 1.5rem; } .student-list-panel { max-height: calc(100vh - 2rem - 1.5rem - 1.5rem - 1.5rem - 70px - 80px); overflow: auto; } } @media (max-width: 768px) { .header-content { flex-direction: column; align-items: flex-start; gap: 15px; } .class-selector { width: 100%; } .class-selector select { width: 100%; } .form-row { flex-direction: column; gap: 0; } .action-buttons { flex-direction: column; padding: 1rem 1.5rem; min-height: auto; justify-content: center; } .panel-header { padding: 1rem; flex-direction: column; align-items: flex-start; } .panel-header-actions { margin-top: 10px; } .student-count-rectangle { margin: 0; } .search-box { padding: 0.8rem 1rem; } .student-item { padding: 0.7rem 1rem; } .student-avatar { width: 45px; height: 45px; font-size: 1.1rem; } .student-name { font-size: 1.05rem; } .pagination { padding: 1rem; min-height: 60px; } .details-section, .photo-section { padding: 1.5rem; } .photo-container { width: 150px; height: 150px; } .photo-placeholder { font-size: 3rem; } .upload-btn, .remove-photo-btn { padding: 8px 15px; font-size: 0.9rem; } .modal-content { padding: 1.5rem; } .modal-title { font-size: 1.3rem; } .modal-message { font-size: 0.9rem; } .student-details-summary { padding: 0.8rem; } .emi-row { grid-template-columns: repeat(2, 1fr); gap: 0.8rem; padding: 0.8rem; } .emi-row .form-group input, .emi-row .form-group select, .emi-row .form-group textarea { padding: 6px 8px; font-size: 0.85rem; } .total-fees-section, .remaining-fees-section { font-size: 1rem; } .toast { top: 10px; right: 10px; left: 10px; max-width: calc(100% - 20px); padding: 12px 15px; font-size: 0.9rem; display: flex; align-items: flex-start; } .toast i { font-size: 1rem; margin-top: 2px; } #scrollToTopBtn { bottom: 20px; right: 20px; padding: 12px; font-size: 16px; } } .modal-overlay { position: fixed; top: 0; left: 0; width: 100%; height: 100%; background-color: rgba(0, 0, 0, 0.6); display: flex; justify-content: center; align-items: center; z-index: 1000; opacity: 0; visibility: hidden; transition: opacity 0.3s ease, visibility 0.3s ease; } .modal-overlay.visible { opacity: 1; visibility: visible; } .modal-content { background-color: var(--modal-bg); padding: 2rem; border-radius: 12px; box-shadow: var(--modal-shadow); width: 90%; max-width: 600px; transform: translateY(-20px); transition: transform 0.3s ease, background-color 0.3s ease, box-shadow 0.3s ease; max-height: 90vh; overflow-y: auto; position: relative; } .modal-overlay.visible .modal-content { transform: translateY(0); } .modal-title { font-size: 1.5rem; font-weight: 600; color: var(--text-color); margin-bottom: 1rem; border-bottom: 1px solid var(--modal-border); padding-bottom: 0.8rem; transition: color 0.3s ease, border-color 0.3s ease; } .modal-close-btn { position: absolute; top: 15px; right: 15px; background: none; border: none; font-size: 1.5rem; color: var(--gray); cursor: pointer; transition: color 0.2s ease; } .modal-close-btn:hover { color: var(--text-color); } .modal-message { font-size: 1rem; color: var(--modal-message-color); margin-bottom: 1.5rem; transition: color 0.3s ease; } .student-details-summary { background-color: var(--modal-summary-bg); padding: 1rem; border-radius: 8px; margin-bottom: 1.5rem; transition: background-color 0.3s ease; } .student-details-summary p { margin-bottom: 0.5rem; color: var(--modal-summary-text); transition: color 0.3s ease; } .student-details-summary p:last-child { margin-bottom: 0; } .student-details-summary strong { color: var(--primary); } .modal-actions { display: flex; justify-content: flex-end; gap: 10px; margin-top: 1.5rem; } .payment-emi-section { margin-top: 1.5rem; border-top: 1px solid var(--modal-border); padding-top: 1.5rem; transition: border-color 0.3s ease; } .payment-emi-section h4 { font-size: 1.1rem; font-weight: 600; margin-bottom: 1rem; color: var(--primary); transition: color 0.3s ease; } .emi-row { display: grid; grid-template-columns: repeat(5, 1fr); /* Changed to 5 for receipt button */ gap: 1rem; margin-bottom: 1rem; padding: 1rem; border: 1px solid var(--emi-row-border); border-radius: 8px; background-color: var(--emi-row-bg); transition: background-color 0.3s ease, border-color 0.3s ease; } .emi-row .form-group { margin-bottom: 0; } .emi-row .form-group label { font-size: 0.85rem; } .emi-row .form-group input, .emi-row .form-group select, .emi-row .form-group textarea { padding: 8px 10px; font-size: 0.9rem; } .total-fees-section { display: flex; flex-direction: column; align-items: flex-start; padding: 0.8rem 0; } .total-fees-section label { margin-bottom: 8px; } .remaining-fees-section { display: flex; justify-content: space-between; align-items: center; padding: 0.8rem 0 0; /* Combined padding-bottom: 0 */ margin-top: 1rem; font-size: 1.1rem; font-weight: 600; color: var(--text-color); transition: color 0.3s ease; } .remaining-fees-section span { color: var(--primary); } #paymentDetailsModal .modal-content { max-width: 900px; } @media (max-width: 900px) { .emi-row { grid-template-columns: repeat(3, 1fr); /* Changed to 3 for receipt button */ } } @media (max-width: 600px) { .emi-row { grid-template-columns: 1fr; } } .print-header { display: none; padding: 10mm 15mm; text-align: center; border-bottom: 1px solid #ccc; margin-bottom: 5mm; } .print-header .school-logo { max-height: 60px; margin-right: 10px; vertical-align: middle; } .print-header .school-name { font-size: 1.5rem; font-weight: bold; color: var(--dark); vertical-align: middle; } @media print { @page { size: A4; margin: 5mm; } body { background-color: white; -webkit-print-color-adjust: exact; color-adjust: exact; font-size: 8pt; } .container { display: block; max-width: none; margin: 0; padding: 0; } header, .student-list-panel, footer, .toast, .modal-overlay, .action-buttons, .photo-buttons, .promote-button-container, #scrollToTopBtn, .theme-switch { /* Updated: .theme-toggle-button to .theme-switch */ display: none !important; } .print-header { display: block !important; } .student-detail-panel { flex: none; width: 100%; max-width: none; box-shadow: none; border-radius: 0; margin: 0; padding: 0; position: static; overflow: visible; height: auto; display: block; page-break-inside: avoid; page-break-after: avoid; } .photo-section { padding: 0; margin: 0 auto 2mm; border-bottom: none; background: none; margin-top: 0mm; } .photo-container { width: 100px; height: 100px; margin: 0 auto 2mm; border: 1px solid #ccc; box-shadow: none; display: flex; align-items: center; justify-content: center; } .photo-placeholder { font-size: 2rem; width: 100%; height: 100%; display: flex; align-items: center; justify-content: center; } .student-class-print { display: block; text-align: center; font-size: 0.9rem; font-weight: 600; color: var(--primary); margin-top: 2mm; margin-bottom: 5mm; } .details-section { padding: 0.1rem 0.5rem; overflow: visible; } .section-title { font-size: 8.5pt; margin: 1mm 0; padding-bottom: 0.5mm; } .sub-section-title { font-size: 0.8rem; margin: 0.5rem 0 0.2rem; } .details-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 2mm; page-break-inside: avoid; } .form-group { margin-bottom: 0.4rem; } .form-group label { font-size: 0.75rem; margin-bottom: 2px; } .form-group input, .form-group select, .form-group textarea { border: 1px solid #ccc; background-color: #f9f9f9; padding: 2px 4px; font-size: 0.8rem; -webkit-print-color-adjust: exact; color-adjust: exact; } .form-group input, .form-group textarea { background-color: white !important; } .form-group select:disabled { background-color: #f9f9f9 !important; color: var(--dark) !important; opacity: 1 !important; -webkit-text-fill-color: var(--dark) !important; -webkit-opacity: 1 !important; } .photo-container img, .photo-placeholder { -webkit-print-color-adjust: exact; color-adjust: exact; } .payment-emi-section { margin-top: 0.6rem; padding-top: 0.6rem; border-top: 1px solid #eee; } .payment-emi-section h4 { font-size: 0.85rem; margin-bottom: 0.5rem; } .emi-row { grid-template-columns: repeat(4, 1fr) !important; /* Adjusted for print */ gap: 0.3rem; margin-bottom: 0.3rem; padding: 0.3rem; border: 1px solid #eee; background-color: #fdfdfd; } .emi-row .form-group label { font-size: 0.7rem; } .emi-row .form-group input, .emi-row .form-group select, .emi-row .form-group textarea { padding: 2px 4px; font-size: 0.75rem; } .total-fees-section, .remaining-fees-section { padding: 0.3rem 0; font-size: 0.85rem; } .remaining-fees-section { margin-top: 0.3rem; font-size: 0.9rem; } .pending-payment-highlight { color: #e63946; font-weight: 600; } .student-detail-panel, .details-section, .photo-section, .payment-emi-section { page-break-inside: avoid; } html[data-theme="dark"] { --primary: #4361ee; --secondary: #3f37c9; --success: #4cc9f0; --light: #f8f9fa; --dark: #212529; --gray: #6c757d; --light-gray: #e9ecef; --border: #dee2e6; --card-shadow: 0 4px 12px rgba(0, 0, 0, 0.08); --promote-color: #ff7f50; --count-circle-bg: #e0f7fa; --count-circle-border: #00bcd4; --count-circle-text: #00798c; --background: #f0f2f5; --card-bg: white; --text-color: var(--dark); --input-bg: white; --input-border: var(--border); --header-bg-start: var(--primary); --header-bg-end: var(--secondary); --active-student-bg: rgba(67, 97, 238, 0.08); --active-student-border: var(--primary); --hover-student-bg: var(--light); --panel-header-border: var(--border); --footer-border: var(--border); --modal-bg: white; --modal-border: var(--border); --modal-shadow: var(--card-shadow); --modal-message-color: var(--gray); --modal-summary-bg: var(--light-gray); --modal-summary-text: var(--dark); --emi-row-bg: var(--light); --emi-row-border: var(--light-gray); --tab-button-color: var(--gray); --tab-button-active-color: var(--primary); --tab-button-border: var(--border); --bulk-list-bg: white; --bulk-list-border: var(--border); --bulk-list-item-border: var(--light-gray); --bulk-list-select-all-border: var(--border); --bulk-list-select-all-color: var(--primary); --bulk-message-color: var(--gray); --bulk-message-strong-color: var(--dark); --bulk-confirmation-list-bg: var(--light-gray); --bulk-confirmation-list-item-border: var(--border); --bulk-confirmation-list-item-color: var(--dark); --pending-payment-list-bg: var(--light-gray); --pending-payment-list-item-name-color: var(--dark); --pending-payment-highlight-color: #e63946; } } .view-receipt-btn { background: var(--light); border: 1px solid var(--primary); color: var(--primary); padding: 8px 10px; border-radius: 8px; cursor: pointer; display: inline-flex; align-items: center; gap: 5px; font-size: 0.85rem; white-space: nowrap; transition: var(--transition); height: 38px; /* Combined with .emi-row .form-group textarea */ justify-content: center; width: 100%; } .view-receipt-btn:hover { background: rgba(67, 97, 238, 0.1); } @media print { .view-receipt-btn { display: none !important; } .emi-row .form-group:nth-child(5) { display: none; } } .emi-row .form-group textarea { min-height: 38px; padding: 8px 10px; } @media (max-width: 900px) { .emi-row .form-group textarea { height: auto; min-height: 38px; } } #bulkOperationsModal .modal-content, #backupRestoreModal .modal-content, #importDetailsModal .modal-content, #importReportModal .modal-content { max-width: 900px; } #bulkConfirmationModal .modal-content, #pendingPaymentsModal .modal-content { max-width: 765px; } .bulk-tabs { display: flex; justify-content: space-around; margin-bottom: 1.5rem; border-bottom: 1px solid var(--tab-button-border); gap: 10px; transition: border-color 0.3s ease; } .tab-button { background: none; border: none; padding: 10px 15px; font-size: 1rem; font-weight: 600; color: var(--tab-button-color); cursor: pointer; transition: all 0.3s ease; border-bottom: 3px solid transparent; flex-grow: 1; text-align: center; } .tab-button:hover { color: var(--primary); } .tab-button.active { color: var(--tab-button-active-color); border-bottom: 3px solid var(--tab-button-active-color); } .tab-content { display: none; } .tab-content.active { display: block; } .tab-button.hidden, .tab-content.hidden { display: none !important; } .bulk-student-list { max-height: 300px; overflow-y: auto; border: 1px solid var(--bulk-list-border); border-radius: 8px; padding: 10px; margin-bottom: 1.5rem; background-color: var(--bulk-list-bg); transition: background-color 0.3s ease, border-color 0.3s ease; } .bulk-student-list .student-selection-item { padding: 8px; display: flex; align-items: center; border-bottom: 1px solid var(--bulk-list-item-border); transition: border-color 0.3s ease; } .bulk-student-list .student-selection-item:last-child { border-bottom: none; } .bulk-student-list .student-selection-item input[type="checkbox"] { margin-right: 10px; min-width: 18px; min-height: 18px; } .bulk-student-list .student-selection-item label { font-size: 0.95rem; color: var(--text-color); flex-grow: 1; cursor: pointer; transition: color 0.3s ease; } .bulk-student-list .select-all-container { padding: 8px; display: flex; align-items: center; border-bottom: 1px solid var(--bulk-list-select-all-border); margin-bottom: 10px; font-weight: 600; transition: border-color 0.3s ease; } .select-all-container.disabled { opacity: 0.5; pointer-events: none; } .bulk-student-list .select-all-container input[type="checkbox"] { margin-right: 10px; min-width: 18px; min-height: 18px; } .bulk-student-list .select-all-container label { font-size: 1rem; color: var(--bulk-list-select-all-color); cursor: pointer; transition: color 0.3s ease; } .bulk-operation-message { margin-bottom: 1rem; color: var(--bulk-message-color); font-size: 0.95rem; transition: color 0.3s ease; } .bulk-operation-message strong { color: var(--bulk-message-strong-color); transition: color 0.3s ease; } .bulk-operation-message .pending-payment-highlight { color: var(--pending-payment-highlight-color); font-weight: 600; } .bulk-confirmation-list { max-height: 200px; overflow-y: auto; border: 1px solid var(--bulk-list-border); border-radius: 8px; padding: 10px; margin-bottom: 1.5rem; background-color: var(--bulk-confirmation-list-bg); transition: background-color 0.3s ease, border-color 0.3s ease; } .bulk-confirmation-list ul { list-style: none; padding: 0; margin: 0; } .bulk-confirmation-list li { padding: 5px 0; font-size: 0.9rem; color: var(--bulk-confirmation-list-item-color); border-bottom: 1px dashed var(--bulk-confirmation-list-item-border); transition: color 0.3s ease, border-color 0.3s ease; } .bulk-confirmation-list li:last-child { border-bottom: none; } .bulk-confirmation-warning { color: var(--pending-payment-highlight-color); font-weight: 600; margin-top: 1rem; margin-bottom: 1rem; transition: color 0.3s ease; } .bulk-confirmation-warning .view-details-link { color: var(--primary); text-decoration: underline; cursor: pointer; margin-left: 10px; font-weight: normal; } .pending-payments-list { max-height: 300px; overflow-y: auto; border: 1px solid var(--bulk-list-border); border-radius: 8px; padding: 10px; margin-bottom: 1.5rem; background-color: var(--pending-payment-list-bg); transition: background-color 0.3s ease, border-color 0.3s ease; } .pending-payments-list ul { list-style: none; padding: 0; margin: 0; } .pending-payments-list li { display: flex; justify-content: space-between; align-items: center; padding: 8px 0; border-bottom: 1px dashed var(--pending-payment-list-item-border); transition: border-color 0.3s ease; } .pending-payments-list li:last-child { border-bottom: none; } .pending-payments-list .student-name { font-weight: 600; color: var(--pending-payment-list-item-name-color); flex-grow: 1; transition: color 0.3s ease; } .pending-payments-list .pending-amount { color: var(--pending-payment-highlight-color); font-weight: 600; flex-shrink: 0; } .csv-import-section { display: flex; flex-direction: column; gap: 1rem; } .csv-file-input-container { display: flex; align-items: center; gap: 10px; border: 1px solid var(--input-border); border-radius: 8px; padding: 8px 12px; background-color: var(--input-bg); cursor: pointer; transition: var(--transition); } .csv-file-input-container:hover { border-color: var(--primary); box-shadow: 0 0 0 3px rgba(67, 97, 238, 0.2); } .csv-file-input-container input[type="file"] { display: none; } .csv-file-input-container .file-name { flex-grow: 1; color: var(--text-color); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .csv-file-input-container .btn { padding: 6px 12px; font-size: 0.85rem; } .csv-student-list-container { max-height: 300px; overflow-y: auto; border: 1px solid var(--bulk-list-border); border-radius: 8px; padding: 10px; background-color: var(--bulk-list-bg); transition: background-color 0.3s ease, border-color 0.3s ease; } .csv-student-list-item { padding: 8px; display: flex; align-items: center; border-bottom: 1px solid var(--bulk-list-item-border); transition: border-color 0.3s ease; } .csv-student-list-item:last-child { border-bottom: none; } .csv-student-list-item input[type="checkbox"] { margin-right: 10px; min-width: 18px; min-height: 18px; } .csv-student-list-item label { font-size: 0.95rem; color: var(--text-color); flex-grow: 1; cursor: pointer; transition: color 0.3s ease; } .csv-student-list-item.invalid-entry label { color: #e63946; font-weight: 600; } .csv-import-message { margin-top: 1rem; color: var(--bulk-message-color); font-size: 0.95rem; } .csv-import-message .view-details-link { color: var(--primary); text-decoration: underline; cursor: pointer; margin-left: 10px; font-weight: normal; } .import-report-list { max-height: 300px; overflow-y: auto; border: 1px solid var(--bulk-list-border); border-radius: 8px; padding: 10px; margin-bottom: 1.5rem; background-color: var(--bulk-confirmation-list-bg); } .import-report-list ul { list-style: none; padding: 0; margin: 0; } .import-report-list li { padding: 5px 0; font-size: 0.9rem; color: var(--bulk-confirmation-list-item-color); border-bottom: 1px dashed var(--bulk-confirmation-list-item-border); display: flex; justify-content: space-between; align-items: flex-start; } .import-report-list li:last-child { border-bottom: none; } .import-report-list .report-status { font-weight: 600; flex-shrink: 0; margin-left: 10px; } .import-report-list .report-status.success { color: #2a9d8f; } .import-report-list .report-status.failed { color: #e63946; } .import-report-list .report-status.skipped { color: #ff7f50; } .import-report-list .report-reason { font-size: 0.8rem; color: var(--gray); margin-top: 2px; } .csv-import-message .view-details-link.hidden { display: none !important; } .loading-overlay { position: fixed; top: 0; left: 0; width: 100%; height: 100%; background-color: rgba(0, 0, 0, 0.7); display: flex; flex-direction: column; justify-content: center; align-items: center; z-index: 2000; opacity: 0; visibility: hidden; transition: opacity 0.3s ease, visibility 0.3s ease; } .loading-overlay.visible { opacity: 1; visibility: visible; } .loading-spinner { border: 8px solid rgba(255, 255, 255, 0.3); border-top: 8px solid var(--primary); border-radius: 50%; width: 60px; height: 60px; animation: spin 1s linear infinite; margin-bottom: 20px; } @keyframes spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } .loading-message { color: white; font-size: 1.2rem; font-weight: 500; text-align: center; padding: 0 20px; } /* Custom Scrollbar for Webkit browsers (Chrome, Safari, Edge) */ .modal-content::-webkit-scrollbar, .bulk-student-list::-webkit-scrollbar, .bulk-confirmation-list::-webkit-scrollbar, .pending-payments-list::-webkit-scrollbar, .csv-student-list-container::-webkit-scrollbar, .import-report-list::-webkit-scrollbar { width: 8px; height: 8px; /* For horizontal scrollbar if needed */ } .modal-content::-webkit-scrollbar-track, .bulk-student-list::-webkit-scrollbar-track, .bulk-confirmation-list::-webkit-scrollbar-track, .pending-payments-list::-webkit-scrollbar-track, .csv-student-list-container::-webkit-scrollbar-track, .import-report-list::-webkit-scrollbar-track { background: var(--light-gray); /* Track color */ border-radius: 10px; } .modal-content::-webkit-scrollbar-thumb, .bulk-student-list::-webkit-scrollbar-thumb, .bulk-confirmation-list::-webkit-scrollbar-thumb, .pending-payments-list::-webkit-scrollbar-thumb, .csv-student-list-container::-webkit-scrollbar-thumb, .import-report-list::-webkit-scrollbar-thumb { background: var(--primary); /* Thumb color */ border-radius: 10px; } .modal-content::-webkit-scrollbar-thumb:hover, .bulk-student-list::-webkit-scrollbar-thumb:hover, .bulk-confirmation-list::-webkit-scrollbar-thumb:hover, .pending-payments-list::-webkit-scrollbar-thumb:hover, .csv-student-list-container::-webkit-scrollbar-thumb:hover, .import-report-list::-webkit-scrollbar-thumb:hover { background: var(--secondary); /* Thumb color on hover */ } /* Custom Scrollbar for Firefox */ .modal-content, .bulk-student-list, .bulk-confirmation-list, .pending-payments-list, .csv-student-list-container, .import-report-list { scrollbar-width: thin; /* "auto" or "none" */ scrollbar-color: var(--primary) var(--light-gray); /* thumb color track color */ } /* PIN Modals Specific Styles */ .pin-modal-overlay { position: fixed; top: 0; left: 0; width: 100%; height: 100%; background-color: rgba(0, 0, 0, 0.7); display: flex; justify-content: center; align-items: center; z-index: 1001; /* Higher than other modals */ opacity: 0; visibility: hidden; transition: opacity 0.3s ease, visibility 0.3s ease; } .pin-modal-overlay.visible { opacity: 1; visibility: visible; } .pin-modal-content { background-color: var(--pin-modal-bg); padding: 2rem; border-radius: 12px; box-shadow: var(--pin-modal-shadow); width: 90%; max-width: 450px; transform: translateY(-20px); transition: transform 0.3s ease, background-color 0.3s ease, box-shadow 0.3s ease; color: var(--pin-modal-text); text-align: center; } .pin-modal-overlay.visible .pin-modal-content { transform: translateY(0); } .pin-modal-title { font-size: 1.8rem; font-weight: 600; margin-bottom: 1.5rem; color: var(--pin-modal-text); } .pin-modal-message { font-size: 1rem; margin-bottom: 1.5rem; line-height: 1.5; } .pin-input-group { margin-bottom: 1.5rem; } .pin-input-group label { display: block; font-weight: 500; margin-bottom: 8px; font-size: 1rem; color: var(--pin-modal-text); } .pin-input-group input[type="password"], .pin-input-group input[type="text"] { width: 100%; padding: 12px 15px; border: 1px solid var(--pin-input-border); border-radius: 8px; font-size: 1.2rem; text-align: center; letter-spacing: 2px; background-color: var(--pin-input-bg); color: var(--pin-modal-text); transition: var(--transition); } .pin-input-group input[type="password"]:focus, .pin-input-group input[type="text"]:focus { outline: none; border-color: var(--primary); box-shadow: var(--pin-input-focus-shadow); } .pin-actions { display: flex; justify-content: center; gap: 10px; margin-top: 2rem; } .pin-actions .btn { padding: 10px 20px; font-size: 1rem; } .pin-actions .btn-primary { background: var(--pin-button-primary-bg); } .pin-actions .btn-primary:hover { background: var(--pin-button-primary-hover); } .pin-actions .btn-outline { border: 1px solid var(--pin-button-outline-border); color: var(--pin-button-outline-color); } .pin-actions .btn-outline:hover { background: var(--pin-button-outline-hover); } .pin-actions .btn-danger { background: var(--pin-button-danger-bg); } .pin-actions .btn-danger:hover { background: var(--pin-button-danger-hover); } .secret-question-group { margin-bottom: 1.5rem; text-align: left; } .secret-question-group label { display: block; font-weight: 500; margin-bottom: 8px; font-size: 1rem; color: var(--pin-modal-text); } .secret-question-group select, .secret-question-group input[type="text"] { width: 100%; padding: 10px 12px; border: 1px solid var(--pin-input-border); border-radius: 8px; font-size: 1rem; background-color: var(--pin-input-bg); color: var(--pin-modal-text); transition: var(--transition); } .secret-question-group select:focus, .secret-question-group input[type="text"]:focus { outline: none; border-color: var(--primary); box-shadow: var(--pin-input-focus-shadow); } .recovery-options { margin-top: 1.5rem; font-size: 0.9rem; display: flex; /* Added for alignment */ justify-content: space-between; /* Added for alignment */ width: 100%; /* Added for alignment */ } .recovery-options a { color: var(--primary); text-decoration: none; font-weight: 500; } .recovery-options a:hover { text-decoration: underline; } /* Custom styles for PIN Setup Modal (Landscape) */ #pinSetupModal .pin-modal-content { max-width: 900px; /* Wider for landscape */ text-align: left; } #pinSetupModal .pin-modal-message { text-align: center; } #pinSetupModal .pin-setup-grid { display: grid; grid-template-columns: 1fr 1fr; /* Two columns */ gap: 2rem; /* Space between columns */ } #pinSetupModal .pin-column, #pinSetupModal .secret-questions-column { display: flex; flex-direction: column; } #pinSetupModal .secret-questions-column { border-left: 1px solid var(--border); padding-left: 2rem; } #pinSetupModal .pin-actions { grid-column: 1 / -1; /* Span across both columns */ justify-content: center; } .recovery-key-display { background-color: var(--light-gray); padding: 1rem; border-radius: 8px; margin-top: 1.5rem; text-align: center; font-weight: bold; color: var(--dark); word-break: break-all; } .recovery-key-display p { margin-bottom: 0.5rem; } .recovery-key-display span { font-family: monospace; font-size: 1.1rem; color: var(--primary); } .recovery-options { display: flex; justify-content: center; gap: 15px; margin-top: 1.5rem; } .recovery-options a { color: var(--primary); text-decoration: none; font-weight: 500; } .recovery-options a:hover { text-decoration: underline; }