:root{--primary:#3b82f6;--primary-hover:#2563eb;--success:#10b981;--warning:#f59e0b;--danger:#ef4444;--bg-color:#f8fafc;--card-bg:#fff;--text-main:#0f172a;--text-muted:#64748b;--border:#e2e8f0}body{background-color:var(--bg-color);color:var(--text-main);-webkit-font-smoothing:antialiased;margin:0;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}*{box-sizing:border-box}.dashboard-container{flex-direction:column;gap:2rem;display:flex}.welcome-banner{color:#fff;border-radius:16px;padding:2rem;box-shadow:0 10px 15px -3px #0000001a}.welcome-banner h2{margin:0 0 .5rem;font-size:1.8rem}.welcome-banner p{opacity:.9;margin:0;font-size:1.1rem}.student-banner{background:linear-gradient(135deg,#3b82f6 0%,#1e40af 100%)}.parent-banner{background:linear-gradient(135deg,#10b981 0%,#047857 100%)}.admin-banner{background:linear-gradient(135deg,#6366f1 0%,#4338ca 100%)}.card{background:var(--card-bg);border:1px solid var(--border);border-radius:12px;padding:1.5rem;box-shadow:0 4px 6px -1px #0000000d}.task-cards{flex-direction:column;gap:1rem;display:flex}.section-title{color:var(--text-main);margin:0 0 1rem}.card-header{align-items:center;gap:.8rem;margin-bottom:.5rem;display:flex}.card-header h3{margin:0;font-size:1.2rem}.icon{width:24px;height:24px}.icon-large{width:40px;height:40px;color:var(--primary);margin-bottom:1rem}.pending-icon{color:var(--warning)}.success-icon{color:var(--success)}.task-detail{color:var(--text-muted);margin:0 0 1rem;font-size:1.05rem}.action-btn{cursor:pointer;border:none;border-radius:8px;width:100%;padding:.75rem 1.5rem;font-weight:600;transition:all .2s}.action-btn.primary{background:var(--primary);color:#fff}.action-btn.primary:hover{background:var(--primary-hover)}.action-btn.outline{border:2px solid var(--primary);color:var(--primary);background:0 0}.action-btn.outline:hover{background:#eff6ff}.test-result{color:#065f46;text-align:center;background:#ecfdf5;border-radius:8px;padding:.75rem;font-weight:600}.status-box.warning{color:#92400e;background:#fffbeb;border:1px solid #fcd34d;border-radius:12px;align-items:center;gap:1.5rem;padding:1.5rem;display:flex}.status-box h4{margin:0 0 .5rem;font-size:1.1rem}.status-box p{margin:0}.badge{border-radius:9999px;padding:.25rem .75rem;font-size:.8rem;font-weight:600}.badge.warning{color:#92400e;background:#fef3c7}.badge.success{color:#065f46;background:#d1fae5}.border-left-warning{border-left:4px solid var(--warning)}.border-left-success{border-left:4px solid var(--success)}.admin-grid{grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:1.5rem;display:grid}.login-container{background:linear-gradient(135deg,#f5f7fa 0%,#c3cfe2 100%);justify-content:center;align-items:center;min-height:100vh;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;display:flex}.login-card{text-align:center;background:#fff;border-radius:24px;width:100%;max-width:480px;padding:3rem;box-shadow:0 20px 40px #00000014}.login-header{margin-bottom:2.5rem}.logo-icon{color:#3b82f6;margin-bottom:1rem}.login-header h1{color:#1e293b;margin:0 0 .5rem;font-size:1.8rem;font-weight:700}.login-header p{color:#64748b;margin:0;font-size:.95rem}.login-form{flex-direction:column;gap:1.5rem;display:flex}.login-input{box-sizing:border-box;border:2px solid #e2e8f0;border-radius:12px;outline:none;width:100%;padding:1rem 1.2rem;font-size:1rem;transition:all .3s}.login-input:focus{border-color:#3b82f6;box-shadow:0 0 0 4px #3b82f61a}.role-buttons{flex-direction:column;gap:1rem;display:flex}.role-btn{cursor:pointer;color:#fff;border:none;border-radius:12px;justify-content:center;align-items:center;gap:.8rem;width:100%;padding:1.2rem;font-size:1.05rem;font-weight:600;transition:all .2s;display:flex}.role-btn:hover{transform:translateY(-2px);box-shadow:0 10px 20px #0000001a}.role-btn:active{transform:translateY(0)}.role-btn.student{background:linear-gradient(135deg,#3b82f6 0%,#2563eb 100%)}.role-btn.parent{background:linear-gradient(135deg,#10b981 0%,#059669 100%)}.role-btn.admin{background:linear-gradient(135deg,#6366f1 0%,#4f46e5 100%)}.input-group{flex-direction:column;gap:.25rem;display:flex;position:relative}.login-input.has-error{border-color:#ef4444}.login-input.has-error:focus{box-shadow:0 0 0 4px #ef44441a}.stylish-error-text{color:#ef4444;text-align:left;margin-top:.2rem;margin-left:.5rem;font-size:.85rem;font-weight:600;animation:.2s ease-out forwards slideDown}@keyframes slideDown{0%{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:translateY(0)}}.app-layout{background-color:#f8fafc;flex-direction:column;min-height:100vh;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;display:flex}.app-header{z-index:10;background:#fff;justify-content:space-between;align-items:center;padding:1rem 2rem;display:flex;position:sticky;top:0;box-shadow:0 1px 3px #0000000d}.header-brand{align-items:center;gap:1rem;display:flex}.app-title{color:#0f172a;font-size:1.25rem;font-weight:700}.role-badge{text-transform:uppercase;border-radius:9999px;padding:.25rem .75rem;font-size:.8rem;font-weight:600}.role-badge.student{color:#1e3a8a;background:#dbeafe}.role-badge.parent{color:#065f46;background:#d1fae5}.role-badge.admin{color:#3730a3;background:#e0e7ff}.header-user{align-items:center;gap:1.5rem;display:flex}.user-name{color:#475569;font-weight:500}.logout-btn{color:#64748b;cursor:pointer;background:0 0;border:1px solid #e2e8f0;border-radius:8px;align-items:center;gap:.5rem;padding:.5rem 1rem;font-weight:500;transition:all .2s;display:flex}.logout-btn:hover{color:#0f172a;background:#f1f5f9}.app-main{box-sizing:border-box;flex:1;width:100%;max-width:1200px;margin:0 auto;padding:2rem}@media (width<=640px){.app-header,.app-main{padding:1rem}.user-name{display:none}}.test-container{flex-direction:column;gap:2rem;max-width:800px;margin:0 auto;padding-bottom:4rem;display:flex}.test-header{background:#fff;border-radius:16px;align-items:center;gap:1.5rem;padding:1.5rem;display:flex;box-shadow:0 4px 6px -1px #0000000d}.test-header h2{flex:1;margin:0}.back-btn{color:var(--text-muted);cursor:pointer;background:0 0;border:none;border-radius:8px;align-items:center;gap:.5rem;padding:.5rem;font-weight:600;transition:all .2s;display:flex}.back-btn:hover{color:var(--text-main);background:#f1f5f9}.test-content{flex-direction:column;gap:1.5rem;display:flex}.question-card{border:1px solid var(--border);background:#fff;border-radius:12px;padding:2rem;box-shadow:0 2px 4px #00000005}.question-card h4{color:var(--primary);margin:0 0 1rem;font-size:1.1rem}.question-text{margin:0 0 1.5rem;font-size:1.2rem;line-height:1.6}.answer-input{border:2px solid var(--border);border-radius:8px;outline:none;width:100%;padding:1rem;font-size:1.1rem;transition:border-color .2s}.answer-input:focus{border-color:var(--primary)}.test-footer{text-align:center;margin-top:1rem}.result-card{text-align:center;background:#fff;border-radius:24px;flex-direction:column;align-items:center;gap:1.5rem;margin-top:2rem;padding:4rem 2rem;display:flex;box-shadow:0 20px 40px #00000014}.result-card.passed{border-top:8px solid var(--success)}.result-card.failed{border-top:8px solid var(--danger)}.result-card h2{color:var(--text-main);margin:0;font-size:4rem}.result-card h3{margin:0;font-size:1.8rem}.result-icon.success{color:var(--success)}.result-icon.danger{color:var(--danger)}.route-builder-container{flex-direction:column;gap:2rem;max-width:800px;margin:0 auto;display:flex}.builder-header{background:#fff;border-radius:12px;align-items:center;gap:1rem;padding:1.5rem;display:flex;box-shadow:0 2px 4px #0000000d}.builder-header h2{margin:0}.subject-tabs{background:#fff;border-radius:12px;gap:.5rem;padding:.5rem;display:flex;overflow-x:auto;box-shadow:0 2px 4px #0000000d}.subject-tab{color:var(--text-muted);cursor:pointer;white-space:nowrap;background:0 0;border:none;border-radius:8px;flex:1;padding:.8rem 1rem;font-weight:600;transition:all .2s}.subject-tab:hover{color:var(--text-main);background:#f1f5f9}.subject-tab.active{background:var(--primary);color:#fff}.route-list{flex-direction:column;gap:1rem;display:flex}.route-card-item{background:#fff;border-left:6px solid #ccc;border-radius:12px;align-items:center;gap:1.5rem;padding:1.5rem;display:flex;box-shadow:0 2px 4px #0000000d}.route-card-item.type-normal{border-left-color:var(--primary)}.route-card-item.type-review{border-left-color:var(--success)}.route-card-item.type-test{border-left-color:var(--warning)}.card-badge{text-align:center;background:#f1f5f9;border-radius:8px;min-width:80px;padding:.5rem 1rem;font-size:.9rem;font-weight:700}.card-content{flex:1}.card-content h3{margin:0 0 .25rem;font-size:1.2rem}.card-content p{color:var(--text-muted);margin:0}.linked-info{color:var(--primary);align-items:center;gap:.25rem;margin-top:.5rem;font-size:.85rem;display:flex}.delete-btn{color:#cbd5e1;cursor:pointer;background:0 0;border:none;border-radius:8px;padding:.5rem;transition:all .2s}.delete-btn:hover{color:var(--danger);background:#fee2e2}.add-node-btn{width:100%;color:var(--text-muted);cursor:pointer;background:0 0;border:2px dashed #cbd5e1;border-radius:12px;justify-content:center;align-items:center;gap:.5rem;padding:1.5rem;font-size:1.1rem;font-weight:600;transition:all .2s;display:flex}.add-node-btn:hover{border-color:var(--primary);color:var(--primary);background:#f8fafc}.add-node-form{background:#fff;border-radius:12px;flex-direction:column;gap:1.2rem;padding:2rem;display:flex;box-shadow:0 4px 6px -1px #0000001a}.add-node-form h3{margin:0;font-size:1.3rem}.form-group{flex-direction:column;gap:.2rem;display:flex}.form-group label{color:var(--text-main);margin-bottom:2px;font-weight:600}.hint{color:var(--text-muted);margin:0;font-size:.85rem}.form-group input[type=text],.form-group input[type=number],.form-group select{border:1px solid var(--border);border-radius:8px;padding:.8rem;font-size:1rem}.page-range-inputs{color:var(--text-main);align-items:center;gap:.5rem;font-size:1rem;font-weight:600;display:flex}.page-range-inputs input{width:80px}.link-selection{background:#f8fafc;border-radius:8px;flex-direction:column;gap:.5rem;max-height:200px;padding:1rem;display:flex;overflow-y:auto}.link-checkbox{cursor:pointer;align-items:center;gap:.5rem;display:flex;font-weight:400!important}.form-actions{gap:1rem;margin-top:1rem;display:flex}.route-card-item{transition:transform .2s,box-shadow .2s,border-color .2s}.route-card-item.dragging{opacity:.5;background:#f8fafc;transform:scale(1.02);box-shadow:0 10px 15px -3px #0000001a}.drag-handle{cursor:grab;justify-content:center;align-items:center;display:flex}.drag-handle:active{cursor:grabbing}.route-card-item.drag-over-top{border-top:4px solid #3b82f6;margin-top:.5rem}.route-card-item.drag-over-bottom{border-bottom:4px solid #3b82f6;margin-bottom:.5rem}.route-card-item.has-error{outline-offset:-2px;background-color:#fef2f2;outline:2px solid #fca5a5}.card-errors{flex-direction:column;gap:.25rem;margin-top:.5rem;display:flex}.error-text{color:var(--danger);align-items:center;gap:.25rem;font-size:.85rem;font-weight:600;display:flex}.quick-add-bar{gap:1rem;margin-top:.5rem;display:flex}.quick-add-btn{cursor:pointer;color:#fff;border:none;border-radius:8px;flex:1;justify-content:center;align-items:center;gap:.5rem;padding:.8rem;font-weight:600;transition:all .2s;display:flex}.quick-add-btn.review-btn{background-color:var(--success)}.quick-add-btn.review-btn:hover{background-color:#059669}.quick-add-btn.test-btn{background-color:var(--warning)}.quick-add-btn.test-btn:hover{background-color:#d97706}.card-actions{flex-direction:column;gap:.5rem;display:flex}.icon-btn{cursor:pointer;color:var(--text-muted);background:0 0;border:none;border-radius:6px;justify-content:center;align-items:center;padding:.4rem;transition:background-color .2s;display:flex}.icon-btn:hover{color:var(--text-color);background-color:#f1f5f9}.icon-btn.delete:hover{color:var(--danger);background-color:#fef2f2}.icon-btn.save:hover{color:var(--success);background-color:#ecfdf5}.icon-btn.cancel:hover{color:var(--danger);background-color:#fef2f2}.inline-edit-form{flex-direction:column;gap:.5rem;width:100%;display:flex}.edit-input{border:1px solid #cbd5e1;border-radius:6px;padding:.4rem .6rem;font-size:.95rem}.edit-input.title-edit{width:100%;font-weight:600}.page-range-inputs.edit-mode{background:0 0;border:none;gap:.5rem;padding:0}.page-range-inputs.edit-mode input{width:60px}
